public override ETMDecodeState HandleByte(SymByte aByte) { ETMDecodeState nextState = this; // if (aByte == 0) { ++iASyncConsecutiveNullByteCount; } else if (aByte == 0x80 && iASyncConsecutiveNullByteCount == 5) { // That's the start of the a-sync packet iASyncConsecutiveNullByteCount = 0; base.StateData.SetSynchronized(); nextState = new ETMDecodeStateSynchronized(base.StateData); Trace(); } else { // Invalid byte throw new ETMException("ERROR - data is corrupt - expected null byte or end marker during A-SYNC"); } // return(nextState); }
public override ETMDecodeState HandleByte(SymByte aByte) { ETMDecodeState nextState = new ETMDecodeStateSynchronized(base.StateData); Trace(); return(nextState); }
public override ETMDecodeState HandleByte(SymByte aByte) { ETMDecodeState nextState = new ETMDecodeStateSynchronized(base.StateData); ETMPcktCycleCount cycle = new ETMPcktCycleCount(aByte); // Always save the byte iPreviousBytes.Add(aByte); // Is the top bit set? if so, then another branch packet follows. // If not, we're done. if (iPreviousBytes.Count == 5) { // Have obtained 5 bytes or then last byte of smaller run. Flush(); } else if (cycle.MoreToCome) { nextState = this; } else { // Have obtained last byte of smaller run. Flush(); } // Done. return(nextState); }
public override ETMDecodeState HandleByte(SymByte aByte) { ETMDecodeState nextState = this; if (iSeenHeader == false) { ETMPcktOutOfOrderData cycle = new ETMPcktOutOfOrderData(aByte); cycle.Matches(aByte); iDataByteCount = cycle.Size; iSeenHeader = true; } else { iBytes.Add(aByte); // if (iBytes.Count == iDataByteCount) { // Done nextState = new ETMDecodeStateSynchronized(base.StateData); } } // Done. return(nextState); }
public override ETMDecodeState HandleByte(SymByte aByte) { ETMDecodeState nextState = this; // if (aByte == 0) { ++iASyncConsecutiveNullByteCount; } else if (aByte == 0x80 && iASyncConsecutiveNullByteCount == 5) { // That's the start of the a-sync packet iASyncConsecutiveNullByteCount = 0; base.StateData.SetSynchronized(); nextState = new ETMDecodeStateSynchronized(base.StateData); Trace(); } else { iASyncConsecutiveNullByteCount = 0; base.StateData.SetUnsynchronized(); } // return(nextState); }
public override ETMDecodeState HandleByte(SymByte aByte) { // Handle the byte PerformStateOperation(aByte); // Decide what to return based upon current state ETMDecodeState nextState = this; if (iState == TState.EStateFinished) { iDecoder.FlushChanges(); nextState = new ETMDecodeStateSynchronized(base.StateData); } // Done. return(nextState); }
public override ETMDecodeState HandleByte(SymByte aByte) { // TODO: test this ETMDecodeState nextState = this; // int byteNumber = iContextIdBytesRequired - iBytesRemaining; uint val = aByte.LShift(byteNumber * 8); iContextId |= val; // if (--iBytesRemaining == 0) { // Got everything base.StateData.SetContextID(iContextId); nextState = new ETMDecodeStateSynchronized(base.StateData); } // return(nextState); }
public override ETMDecodeState HandleByte(SymByte aByte) { ETMDecodeState nextState = this; // switch (iState) { case TState.EStateHeader: if (base.StateData.Config.ContextIDSize != 0) { iState = TState.EStateContextId; } else { iState = TState.EStateInformation; } break; case TState.EStateContextId: OnContextByte(aByte); break; case TState.EStateInformation: OnInformationByte(aByte); break; case TState.EStateAddress: OnAddress(aByte); break; default: case TState.EStateIdle: System.Diagnostics.Debug.Assert(false); break; } // if (iState == TState.EStateIdle) { nextState = new ETMDecodeStateSynchronized(base.StateData); } // return(nextState); }
public override ETMDecodeState HandleByte(SymByte aByte) { ETMDecodeState nextState = new ETMDecodeStateSynchronized(base.StateData); // ETMPcktBase packet = Packets.Factory.ETMPacketFactory.Create(aByte); if (packet is ETMPcktPHeaderFormat1) { ETMPcktPHeaderFormat1 pHeader1 = (ETMPcktPHeaderFormat1)packet; ProcessFormat1Conditions(pHeader1); } else if (packet is ETMPcktPHeaderFormat2) { ETMPcktPHeaderFormat2 pHeader2 = (ETMPcktPHeaderFormat2)packet; ProcessFormat2Conditions(pHeader2); } else { throw new ETMException("ERROR: P-HEADER is not supported"); } // return(nextState); }