mirror of
https://github.com/stacksmashing/LPCClocklessAnalyzer.git
synced 2026-02-01 11:58:39 +03:00
Rename analyzer step 1
This commit is contained in:
71
src/LPCClocklessSimulationDataGenerator.cpp
Normal file
71
src/LPCClocklessSimulationDataGenerator.cpp
Normal file
@@ -0,0 +1,71 @@
|
||||
#include "SimpleSerialSimulationDataGenerator.h"
|
||||
#include "SimpleSerialAnalyzerSettings.h"
|
||||
|
||||
#include <AnalyzerHelpers.h>
|
||||
|
||||
SimpleSerialSimulationDataGenerator::SimpleSerialSimulationDataGenerator()
|
||||
: mSerialText( "My first analyzer, woo hoo!" ),
|
||||
mStringIndex( 0 )
|
||||
{
|
||||
}
|
||||
|
||||
SimpleSerialSimulationDataGenerator::~SimpleSerialSimulationDataGenerator()
|
||||
{
|
||||
}
|
||||
|
||||
void SimpleSerialSimulationDataGenerator::Initialize( U32 simulation_sample_rate, SimpleSerialAnalyzerSettings* settings )
|
||||
{
|
||||
mSimulationSampleRateHz = simulation_sample_rate;
|
||||
mSettings = settings;
|
||||
|
||||
mSerialSimulationData.SetChannel( mSettings->mInputChannel );
|
||||
mSerialSimulationData.SetSampleRate( simulation_sample_rate );
|
||||
mSerialSimulationData.SetInitialBitState( BIT_HIGH );
|
||||
}
|
||||
|
||||
U32 SimpleSerialSimulationDataGenerator::GenerateSimulationData( U64 largest_sample_requested, U32 sample_rate, SimulationChannelDescriptor** simulation_channel )
|
||||
{
|
||||
U64 adjusted_largest_sample_requested = AnalyzerHelpers::AdjustSimulationTargetSample( largest_sample_requested, sample_rate, mSimulationSampleRateHz );
|
||||
|
||||
while( mSerialSimulationData.GetCurrentSampleNumber() < adjusted_largest_sample_requested )
|
||||
{
|
||||
CreateSerialByte();
|
||||
}
|
||||
|
||||
*simulation_channel = &mSerialSimulationData;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void SimpleSerialSimulationDataGenerator::CreateSerialByte()
|
||||
{
|
||||
U32 samples_per_bit = mSimulationSampleRateHz / mSettings->mBitRate;
|
||||
|
||||
U8 byte = mSerialText[ mStringIndex ];
|
||||
mStringIndex++;
|
||||
if( mStringIndex == mSerialText.size() )
|
||||
mStringIndex = 0;
|
||||
|
||||
//we're currenty high
|
||||
//let's move forward a little
|
||||
mSerialSimulationData.Advance( samples_per_bit * 10 );
|
||||
|
||||
mSerialSimulationData.Transition(); //low-going edge for start bit
|
||||
mSerialSimulationData.Advance( samples_per_bit ); //add start bit time
|
||||
|
||||
U8 mask = 0x1 << 7;
|
||||
for( U32 i=0; i<8; i++ )
|
||||
{
|
||||
if( ( byte & mask ) != 0 )
|
||||
mSerialSimulationData.TransitionIfNeeded( BIT_HIGH );
|
||||
else
|
||||
mSerialSimulationData.TransitionIfNeeded( BIT_LOW );
|
||||
|
||||
mSerialSimulationData.Advance( samples_per_bit );
|
||||
mask = mask >> 1;
|
||||
}
|
||||
|
||||
mSerialSimulationData.TransitionIfNeeded( BIT_HIGH ); //we need to end high
|
||||
|
||||
//lets pad the end a bit for the stop bit:
|
||||
mSerialSimulationData.Advance( samples_per_bit );
|
||||
}
|
||||
Reference in New Issue
Block a user