This virtual channel works basicly the same (from the SDK view) as a normal channel.
Except that it has the results of the normal channel are used as input for the virtual channel.
If you take the 'simpelserialanalyser' example, you see that it works/processes with bits.
So for the normal channel analyser you have this
for(t=0; t< 8; t++)
make_byte_value // Pseudo code
//we have a byte to save.
frame.mData1 = data;
// --- more stuff, excluded
mResults->AddFrame( frame );
This results in for example in '0xAA 0x55 0x02 'D' 'A' 'T' 'A'
This is all posible at this moment. So nothing new here (yet)
Now the for new virtual channel
Now we can use the virtual channel to analyser the byte protocol. We connect the virtual channel to real channel 1,
Now we can analyse the byte stream, something like this.
if( mSerial->GetBYTE== 0xAA)
step = 1;
if( ( mSerial->GetBYTE== 0x55) && (step == 1) )
mResults->AddMarker( mSerial->GetSampleNumber(), AnalyzerResults::Dot, mSettings->mInputChannel );
step = 2;
So the processing of the data is simular, but a real channel is working with frame-bits but a virtual channel works with the frame-bytes. So the mSerial->GetBitState() in the realchannel has to be replaces with an interface to the frames of the channel.
This way it is possible to do byte-frame analyses. I also think this concept is close to the design of the 1.2 program and (hopefully) is easy to implement.