Skip to content

Commit

Permalink
Remove leading 0s from analyzed result
Browse files Browse the repository at this point in the history
This addresses a part of issue saleae#7, removing leading 0s of the decoded
data value.
  • Loading branch information
tgtakaoka committed Dec 14, 2024
1 parent 54626a0 commit f63a765
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/SimpleParallelAnalyzerResults.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 );
}

Expand All @@ -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;

Expand Down
16 changes: 16 additions & 0 deletions src/SimpleParallelAnalyzerSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ SimpleParallelAnalyzerSettings::SimpleParallelAnalyzerSettings()

mDataChannelsInterface.push_back( data_channel_interface );
}
mDataBits = 0;


mClockChannelInterface.reset( new AnalyzerSettingInterfaceChannel() );
Expand Down Expand Up @@ -67,6 +68,18 @@ SimpleParallelAnalyzerSettings::~SimpleParallelAnalyzerSettings()
delete mDataChannelsInterface[ i ];
}

U32 SimpleParallelAnalyzerSettings::MostSiginificantBitPosition() const
{
const U32 count = mDataChannels.size();
U32 most_significant_bit = 0;
for( U32 i = 0; i < count; i++ )
{
if( mDataChannels[ i ] != UNDEFINED_CHANNEL && most_significant_bit < i )
most_significant_bit = i;
}
return most_significant_bit;
}

bool SimpleParallelAnalyzerSettings::SetSettingsFromInterfaces()
{
U32 count = mDataChannels.size();
Expand All @@ -87,6 +100,7 @@ bool SimpleParallelAnalyzerSettings::SetSettingsFromInterfaces()
{
mDataChannels[ i ] = mDataChannelsInterface[ i ]->GetChannel();
}
mDataBits = MostSiginificantBitPosition() + 1;

mClockChannel = mClockChannelInterface->GetChannel();
mClockEdge = static_cast<ParallelAnalyzerClockEdge>( U32( mClockEdgeInterface->GetNumber() ) );
Expand All @@ -111,6 +125,7 @@ void SimpleParallelAnalyzerSettings::UpdateInterfacesFromSettings()
{
mDataChannelsInterface[ i ]->SetChannel( mDataChannels[ i ] );
}
mDataBits = MostSiginificantBitPosition() + 1;

mClockChannelInterface->SetChannel( mClockChannel );
mClockEdgeInterface->SetNumber( static_cast<double>( mClockEdge ) );
Expand All @@ -127,6 +142,7 @@ void SimpleParallelAnalyzerSettings::LoadSettings( const char* settings )
{
text_archive >> mDataChannels[ i ];
}
mDataBits = MostSiginificantBitPosition() + 1;

text_archive >> mClockChannel;
U32 edge;
Expand Down
8 changes: 8 additions & 0 deletions src/SimpleParallelAnalyzerSettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -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<Channel> mDataChannels;
Expand All @@ -30,10 +34,14 @@ class SimpleParallelAnalyzerSettings : public AnalyzerSettings
ParallelAnalyzerClockEdge mClockEdge;

protected:
U32 MostSiginificantBitPosition() const;

std::vector<AnalyzerSettingInterfaceChannel*> mDataChannelsInterface;

std::unique_ptr<AnalyzerSettingInterfaceChannel> mClockChannelInterface;
std::unique_ptr<AnalyzerSettingInterfaceNumberList> mClockEdgeInterface;

U32 mDataBits; // valid channel number of mDataChannels
};

#endif // SIMPLEPARALLEL_ANALYZER_SETTINGS

0 comments on commit f63a765

Please sign in to comment.