diff --git a/src/SimpleParallelAnalyzerResults.cpp b/src/SimpleParallelAnalyzerResults.cpp index af4e382..c24c872 100644 --- a/src/SimpleParallelAnalyzerResults.cpp +++ b/src/SimpleParallelAnalyzerResults.cpp @@ -21,7 +21,7 @@ void SimpleParallelAnalyzerResults::GenerateBubbleText( U64 frame_index, Channel Frame frame = GetFrame( frame_index ); char number_str[ 128 ]; - AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 16, number_str, 128 ); + AnalyzerHelpers::GetNumberString( frame.mData1, display_base, mSettings->dataBits(), number_str, 128 ); AddResultString( number_str ); } @@ -44,7 +44,7 @@ void SimpleParallelAnalyzerResults::GenerateExportFile( const char* file, Displa AnalyzerHelpers::GetTimeString( frame.mStartingSampleInclusive, trigger_sample, sample_rate, time_str, 128 ); char number_str[ 128 ]; - AnalyzerHelpers::GetNumberString( frame.mData1, display_base, 16, number_str, 128 ); + AnalyzerHelpers::GetNumberString( frame.mData1, display_base, mSettings->dataBits(), number_str, 128 ); ss << time_str << "," << number_str << std::endl; diff --git a/src/SimpleParallelAnalyzerSettings.cpp b/src/SimpleParallelAnalyzerSettings.cpp index e9a8f8a..cf0f037 100644 --- a/src/SimpleParallelAnalyzerSettings.cpp +++ b/src/SimpleParallelAnalyzerSettings.cpp @@ -23,6 +23,7 @@ SimpleParallelAnalyzerSettings::SimpleParallelAnalyzerSettings() mDataChannelsInterface.push_back( data_channel_interface ); } + mDataBits = 0; mClockChannelInterface.reset( new AnalyzerSettingInterfaceChannel() ); @@ -82,6 +83,7 @@ bool SimpleParallelAnalyzerSettings::SetSettingsFromInterfaces() SetErrorText( "Please select at least one channel to use in the parallel bus" ); return false; } + mDataBits = num_used_channels; for( U32 i = 0; i < count; i++ ) { @@ -107,10 +109,14 @@ bool SimpleParallelAnalyzerSettings::SetSettingsFromInterfaces() void SimpleParallelAnalyzerSettings::UpdateInterfacesFromSettings() { U32 count = mDataChannels.size(); + U32 num_used_channels = 0; for( U32 i = 0; i < count; i++ ) { mDataChannelsInterface[ i ]->SetChannel( mDataChannels[ i ] ); + if( mDataChannels[ i ] != UNDEFINED_CHANNEL ) + num_used_channels++; } + mDataBits = num_used_channels; mClockChannelInterface->SetChannel( mClockChannel ); mClockEdgeInterface->SetNumber( static_cast( mClockEdge ) ); @@ -122,11 +128,14 @@ void SimpleParallelAnalyzerSettings::LoadSettings( const char* settings ) text_archive.SetString( settings ); U32 count = mDataChannels.size(); - + U32 num_used_channels = 0; for( U32 i = 0; i < count; i++ ) { text_archive >> mDataChannels[ i ]; + if( mDataChannels[ i ] != UNDEFINED_CHANNEL ) + num_used_channels++; } + mDataBits = num_used_channels; text_archive >> mClockChannel; U32 edge; diff --git a/src/SimpleParallelAnalyzerSettings.h b/src/SimpleParallelAnalyzerSettings.h index 29299f7..bfe8a5b 100644 --- a/src/SimpleParallelAnalyzerSettings.h +++ b/src/SimpleParallelAnalyzerSettings.h @@ -22,6 +22,10 @@ class SimpleParallelAnalyzerSettings : public AnalyzerSettings void UpdateInterfacesFromSettings(); virtual void LoadSettings( const char* settings ); virtual const char* SaveSettings(); + U32 dataBits() const + { + return mDataBits; + } std::vector mDataChannels; @@ -34,6 +38,8 @@ class SimpleParallelAnalyzerSettings : public AnalyzerSettings std::unique_ptr mClockChannelInterface; std::unique_ptr mClockEdgeInterface; + + U32 mDataBits; // valid channel number of mDataChannels }; #endif // SIMPLEPARALLEL_ANALYZER_SETTINGS