@@ -177,6 +177,21 @@ void FlexRayAnalyzer::WorkerThread()
177177 return stream.str ();
178178 };
179179
180+ auto format_payload = [&]( const std::vector<U8>& payload ) {
181+ if ( payload.empty () == true )
182+ return std::string ( " -" );
183+
184+ std::ostringstream stream;
185+ for ( size_t i = 0 ; i < payload.size (); ++i )
186+ {
187+ if ( i != 0 )
188+ stream << ' ' ;
189+ stream << format_hex_byte ( payload[ i ] );
190+ }
191+
192+ return stream.str ();
193+ };
194+
180195 auto add_segment = [&]( U64 start_sample, U64 end_sample, U8 frame_type, U8 frame_flags, const std::string& short_text,
181196 const std::string& long_text, const char * frame_v2_type, bool * packet_has_segments = nullptr ,
182197 const std::function<void ( FrameV2& )>& populate_frame_v2 = std::function<void ( FrameV2& )>() ) {
@@ -340,6 +355,33 @@ void FlexRayAnalyzer::WorkerThread()
340355 bool packet_has_segments = false ;
341356
342357 auto commit_packet = [&]( U64 end_sample, U8 frame_flags, FlexRayFrameRecord record ) {
358+ if ( record.mIsError == false && record.mSymbolName .empty () == true )
359+ {
360+ FrameV2 frame_v2_packet;
361+ frame_v2_packet.AddString ( " frame_type" , record.mIsDynamic ? " dynamic" : " static" );
362+ frame_v2_packet.AddString ( " identifier" , format_hex ( record.mFrameId , 3 ).c_str () );
363+ frame_v2_packet.AddByte ( " cycle" , record.mCycle );
364+ frame_v2_packet.AddByte ( " payload_length_words" , record.mPayloadLengthWords );
365+ frame_v2_packet.AddByte ( " payload_length_bytes" , static_cast <U8>( record.mPayload .size () ) );
366+ frame_v2_packet.AddBoolean ( " reserved_bit" , record.mReservedBit );
367+ frame_v2_packet.AddBoolean ( " payload_preamble" , record.mPayloadPreamble );
368+ frame_v2_packet.AddBoolean ( " null_frame" , record.mNullFrame );
369+ frame_v2_packet.AddBoolean ( " sync_frame" , record.mSyncFrame );
370+ frame_v2_packet.AddBoolean ( " startup_frame" , record.mStartupFrame );
371+ frame_v2_packet.AddString ( " header_crc" , format_hex ( record.mHeaderCrc , 3 ).c_str () );
372+ frame_v2_packet.AddBoolean ( " header_crc_ok" , record.mHeaderCrcOk );
373+ frame_v2_packet.AddString ( " crc" , format_hex ( record.mFrameCrc , 6 ).c_str () );
374+ frame_v2_packet.AddBoolean ( " crc_ok" , record.mFrameCrcOk );
375+ frame_v2_packet.AddByte ( " cid_bits" , static_cast <U8>( record.mCidBits ) );
376+ frame_v2_packet.AddBoolean ( " cid_ok" , record.mCidOk );
377+
378+ if ( record.mIsDynamic == true )
379+ frame_v2_packet.AddByte ( " dts_bits" , static_cast <U8>( record.mDtsBits ) );
380+
381+ frame_v2_packet.AddString ( " payload" , format_payload ( record.mPayload ).c_str () );
382+ mResults ->AddFrameV2 ( frame_v2_packet, " frame" , tss_start_sample, end_sample );
383+ }
384+
343385 if ( record.mIsError == true && packet_has_segments == false )
344386 add_segment ( tss_start_sample, end_sample, FlexRayErrorField, DISPLAY_AS_ERROR_FLAG, " Err" , record.mErrorText , " error_field" ,
345387 &packet_has_segments, [&]( FrameV2& frame_v2 ) { frame_v2.AddString ( " error" , record.mErrorText .c_str () ); } );
0 commit comments