void Pn5180AnalyzerResults::GenerateExportFile( const char* file, DisplayBase display_base, U32 /*export_type_user_id*/ ) { //export_type_user_id is only important if we have more than one export type. std::stringstream ss; void* f = AnalyzerHelpers::StartFile( file ); U64 trigger_sample = mAnalyzer->GetTriggerSample(); U32 sample_rate = mAnalyzer->GetSampleRate(); ss << "Time [s],Packet ID,MOSI,MISO" << std::endl; bool mosi_used = true; bool miso_used = true; if( mSettings->mMosiChannel == UNDEFINED_CHANNEL ) mosi_used = false; if( mSettings->mMisoChannel == UNDEFINED_CHANNEL ) miso_used = false; U64 num_frames = GetNumFrames(); for( U32 i=0; i < num_frames; i++ ) { Frame frame = GetFrame( i ); if( ( frame.mFlags & Pn5180_ERROR_FLAG ) != 0 ) continue; char time_str[128]; AnalyzerHelpers::GetTimeString( frame.mStartingSampleInclusive, trigger_sample, sample_rate, time_str, 128 ); char mosi_str[128] = ""; if( mosi_used == true ) AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 8, mosi_str, 128 ); char miso_str[128] = ""; if( miso_used == true ) AnalyzerHelpers::GetNumberString( frame.mData2, display_base, 8, miso_str, 128 ); U64 packet_id = GetPacketContainingFrameSequential( i ); if( packet_id != INVALID_RESULT_INDEX ) ss << time_str << "," << packet_id << "," << mosi_str << "," << miso_str << std::endl; else ss << time_str << ",," << mosi_str << "," << miso_str << std::endl; //it's ok for a frame not to be included in a packet. AnalyzerHelpers::AppendToFile( (U8*)ss.str().c_str(), ss.str().length(), f ); ss.str( std::string() ); if( UpdateExportProgressAndCheckForCancel( i, num_frames ) == true ) { AnalyzerHelpers::EndFile( f ); return; } } UpdateExportProgressAndCheckForCancel( num_frames, num_frames ); AnalyzerHelpers::EndFile( f ); }
void UnioAnalyzerResults::GenerateExportFile( const char* file, DisplayBase display_base, U32 /*export_type_user_id*/ ) { //export_type_user_id is only important if we have more than one export type. std::stringstream ss; void* f = AnalyzerHelpers::StartFile( file ); U64 trigger_sample = mAnalyzer->GetTriggerSample(); U32 sample_rate = mAnalyzer->GetSampleRate(); ss << "Time [s],Packet ID,Address,Data,MAK,SAK" << std::endl; U64 num_frames = GetNumFrames(); char address_str[128] = ""; for( U32 i=0; i < num_frames; i++ ) { Frame frame = GetFrame( i ); if( frame.mType == AddressFrame8 ) { AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 8, address_str, 128 ); if( UpdateExportProgressAndCheckForCancel( i, num_frames ) == true ) { AnalyzerHelpers::EndFile( f ); return; } continue; } if( frame.mType == AddressFrame12 ) { AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 8, address_str, 128 ); if( UpdateExportProgressAndCheckForCancel( i, num_frames ) == true ) { AnalyzerHelpers::EndFile( f ); return; } continue; } if( frame.mType == DataFrame ) { char time_str[128]; AnalyzerHelpers::GetTimeString( frame.mStartingSampleInclusive, trigger_sample, sample_rate, time_str, 128 ); char data_str[128]; AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 8, data_str, 128 ); ss << time_str << ","; U64 packet_id = GetPacketContainingFrameSequential( i ); if( packet_id != INVALID_RESULT_INDEX ) ss << packet_id; ss << "," << address_str << "," << data_str; if( ( frame.mFlags & MASTER_ACK ) != 0 ) ss << ",MAK"; else ss << ",NoMAK"; if( ( frame.mFlags & SLAVE_ACK ) != 0 ) ss << ",SAK"; else ss << ",NoSAK"; ss << std::endl; } AnalyzerHelpers::AppendToFile( (U8*)ss.str().c_str(), ss.str().length(), f ); ss.str( std::string() ); if( UpdateExportProgressAndCheckForCancel( i, num_frames ) == true ) { AnalyzerHelpers::EndFile( f ); return; } } UpdateExportProgressAndCheckForCancel( num_frames, num_frames ); AnalyzerHelpers::EndFile( f ); }