Skip to content

Commit e1063fe

Browse files
committed
more flexible TSS parsing
1 parent 7ea72ad commit e1063fe

3 files changed

Lines changed: 32 additions & 8 deletions

File tree

src/FlexRayAnalyzer.cpp

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ namespace
1313
const U32 kHeaderByteCount = 5;
1414
const U32 kFrameCrcByteCount = 3;
1515
const U32 kChannelIdleDelimiterBits = 11;
16-
const U32 kTssRxLowMinBits = 3;
17-
const U32 kTssRxLowMaxBits = 15;
16+
const U32 kTssTxLowMinBits = 3;
17+
const U32 kTssTxLowMaxBits = 15;
18+
const U32 kTssRxLowMinBits = 2;
19+
const U32 kTssRxLowMaxBits = kTssTxLowMaxBits;
1820
const U32 kCasRxLowMinBits = 29;
1921
const U32 kCasRxLowMaxBits = 100;
2022
const U32 kHeaderCrcWidth = 11;
@@ -361,6 +363,8 @@ void FlexRayAnalyzer::WorkerThread()
361363
frame_v2_packet.AddString( "frame_type", record.mIsDynamic ? "dynamic" : "static" );
362364
frame_v2_packet.AddString( "identifier", format_hex( record.mFrameId, 3 ).c_str() );
363365
frame_v2_packet.AddByte( "cycle", record.mCycle );
366+
frame_v2_packet.AddByte( "tss_bits", static_cast<U8>( record.mTssBits ) );
367+
frame_v2_packet.AddBoolean( "tss_tx_spec_ok", record.mTssBelowTxSpec == false );
364368
frame_v2_packet.AddByte( "payload_length_words", record.mPayloadLengthWords );
365369
frame_v2_packet.AddByte( "payload_length_bytes", static_cast<U8>( record.mPayload.size() ) );
366370
frame_v2_packet.AddBoolean( "reserved_bit", record.mReservedBit );
@@ -476,6 +480,7 @@ void FlexRayAnalyzer::WorkerThread()
476480

477481
FlexRayFrameRecord record;
478482
record.mTssBits = observed_tss_bits;
483+
record.mTssBelowTxSpec = observed_tss_bits < kTssTxLowMinBits;
479484
U64 packet_end_sample = tss_end_sample;
480485

481486
U8 fss_bit = 0;
@@ -517,9 +522,19 @@ void FlexRayAnalyzer::WorkerThread()
517522
}
518523
++bit_index;
519524

520-
add_segment( tss_start_sample, tss_end_sample > 0 ? ( tss_end_sample - 1 ) : tss_end_sample, FlexRayTssField, 0,
521-
"TSS", "Transmission start sequence", "tss_field", &packet_has_segments,
522-
[&]( FrameV2& frame_v2 ) { frame_v2.AddByte( "low_bits", static_cast<U8>( observed_tss_bits ) ); } );
525+
{
526+
std::ostringstream tss_text;
527+
tss_text << "Transmission start sequence (" << observed_tss_bits << " bits";
528+
if( record.mTssBelowTxSpec == true )
529+
tss_text << ", accepted on RX, below transmitter spec 3-15 bits";
530+
tss_text << ")";
531+
add_segment( tss_start_sample, tss_end_sample > 0 ? ( tss_end_sample - 1 ) : tss_end_sample, FlexRayTssField,
532+
record.mTssBelowTxSpec ? DISPLAY_AS_WARNING_FLAG : 0, "TSS", tss_text.str(), "tss_field", &packet_has_segments,
533+
[&]( FrameV2& frame_v2 ) {
534+
frame_v2.AddByte( "low_bits", static_cast<U8>( observed_tss_bits ) );
535+
frame_v2.AddBoolean( "tx_spec_ok", record.mTssBelowTxSpec == false );
536+
} );
537+
}
523538
add_segment( segment_start( fss_sample ), segment_end( fss_sample ), FlexRayFssField, 0, "FSS", "Frame start sequence", "fss_field",
524539
&packet_has_segments );
525540

@@ -824,6 +839,9 @@ void FlexRayAnalyzer::WorkerThread()
824839
if( record.mReservedBit == true )
825840
frame_flags |= DISPLAY_AS_WARNING_FLAG;
826841

842+
if( record.mTssBelowTxSpec == true )
843+
frame_flags |= DISPLAY_AS_WARNING_FLAG;
844+
827845
if( record.mCidOk == false )
828846
frame_flags |= DISPLAY_AS_WARNING_FLAG;
829847

src/FlexRayAnalyzerResults.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ std::string GetFrameSummary( const FlexRayFrameRecord& record, DisplayBase displ
6464
else
6565
stream << " CRC OK";
6666

67+
if( record.mTssBelowTxSpec == true )
68+
stream << " TSS WARN";
69+
6770
if( record.mCidOk == false )
6871
stream << " CID WARN";
6972

@@ -125,7 +128,7 @@ void FlexRayAnalyzerResults::GenerateExportFile( const char* file, DisplayBase d
125128
U64 trigger_sample = mAnalyzer->GetTriggerSample();
126129
U32 sample_rate = mAnalyzer->GetSampleRate();
127130

128-
file_stream << "Time [s],Type,Segment,Frame ID,Cycle,Payload Bytes,PPI,NF,Sync,Startup,Header CRC,Header CRC OK,Frame CRC,Frame CRC OK,Payload,Info"
131+
file_stream << "Time [s],Type,Segment,Frame ID,Cycle,TSS Bits,TSS TX Spec OK,Payload Bytes,PPI,NF,Sync,Startup,Header CRC,Header CRC OK,Frame CRC,Frame CRC OK,Payload,Info"
129132
<< std::endl;
130133

131134
U64 num_packets = static_cast<U64>( mPacketRecords.size() );
@@ -138,12 +141,12 @@ void FlexRayAnalyzerResults::GenerateExportFile( const char* file, DisplayBase d
138141

139142
if( record.mIsError == true )
140143
{
141-
file_stream << time_str << ",error,-,-,-,-,-,-,-,-,-,-,-,-,-,\"" << record.mErrorText << "\"" << std::endl;
144+
file_stream << time_str << ",error,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,\"" << record.mErrorText << "\"" << std::endl;
142145
}
143146
else if( record.mSymbolName.empty() == false )
144147
{
145148
const std::string summary = GetFrameSummary( record, display_base );
146-
file_stream << time_str << ",symbol," << record.mSymbolName << ",-,-,-,-,-,-,-,-,-,-,-,-,\"" << summary << "\"" << std::endl;
149+
file_stream << time_str << ",symbol," << record.mSymbolName << ",-,-,-,-,-,-,-,-,-,-,-,-,-,-,\"" << summary << "\"" << std::endl;
147150
}
148151
else
149152
{
@@ -152,6 +155,8 @@ void FlexRayAnalyzerResults::GenerateExportFile( const char* file, DisplayBase d
152155
<< "," << ( record.mIsDynamic ? "dynamic" : "static" )
153156
<< "," << GetDisplayString( record.mFrameId, display_base, 11 )
154157
<< "," << GetDisplayString( record.mCycle, display_base, 6 )
158+
<< "," << record.mTssBits
159+
<< "," << ( record.mTssBelowTxSpec ? "false" : "true" )
155160
<< "," << record.mPayload.size()
156161
<< "," << ( record.mPayloadPreamble ? 1 : 0 )
157162
<< "," << ( record.mNullFrame ? 1 : 0 )

src/FlexRayAnalyzerResults.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ struct FlexRayFrameRecord
2727
{
2828
bool mIsError = false;
2929
bool mIsDynamic = false;
30+
bool mTssBelowTxSpec = false;
3031
bool mReservedBit = false;
3132
bool mPayloadPreamble = false;
3233
bool mNullFrame = false;

0 commit comments

Comments
 (0)