public void Synchronize(bool positivePhase) { PositivePhase = positivePhase; if (BitSink != null) { BitSink.Resynchronized(); } State = eLearnState.ProcessingBit1; }
public void TransmissionStart() { State = eLearnState.ProcessingBit1; if (BitSink != null) { BitSink.TransmissionStart(); } }
public void ClockBit(bool state) { switch (State) { case eLearnState.ProcessingBit1: LastBitState = state; State = eLearnState.ProcessingBit2; break; case eLearnState.ProcessingBit2: if (LastBitState && !state) { if (BitSink != null) { BitSink.ClockBit(true); } } else if (!LastBitState && state) { if (BitSink != null) { BitSink.ClockBit(false); } } else { if (BitSink != null) { BitSink.TransmissionEnd(); } } State = eLearnState.ProcessingBit1; break; } }
public void ClockBit(bool state) { switch (State) { case eLearnState.Idle: LastBitState = state; State = eLearnState.Synchronizing; break; case eLearnState.Synchronizing: if (state == LastBitState) { /* the phase depends on the current state */ PositivePhase = state; if (Verbose) { Log.AddMessage("BiphaseDecoder", "Synchronized."); } if (BitSink != null) { BitSink.Resynchronized(); BitSink.ClockBit(false); } State = eLearnState.ProcessingBit1; } else { LastBitState = state; } break; case eLearnState.ProcessingBit1: LastBitState = state; State = eLearnState.ProcessingBit2; break; case eLearnState.ProcessingBit2: if (LastBitState == state) { if (PositivePhase == state) { if (Verbose) { Log.AddMessage("BiphaseDecoder", "Decoding failed. Resynchronizing."); } if (BitSink != null) { BitSink.Desynchronized(); } State = eLearnState.Idle; return; } else { PositivePhase ^= true; if (BitSink != null) { BitSink.ClockBit(false); } } } else { if (PositivePhase != state) { if (Verbose) { Log.AddMessage("BiphaseDecoder", "Decoding failed. Resynchronizing."); } if (BitSink != null) { BitSink.Desynchronized(); } State = eLearnState.Idle; return; } else { if (BitSink != null) { BitSink.ClockBit(true); } } } State = eLearnState.ProcessingBit1; break; } }
public void Resynchronized() { State = eLearnState.Idle; }
public void Resynchronized() { State = eLearnState.ProcessingBit1; }