Example #1
0
 public void Synchronize(bool positivePhase)
 {
     PositivePhase = positivePhase;
     if (BitSink != null)
     {
         BitSink.Resynchronized();
     }
     State = eLearnState.ProcessingBit1;
 }
Example #2
0
        public void TransmissionStart()
        {
            State = eLearnState.ProcessingBit1;

            if (BitSink != null)
            {
                BitSink.TransmissionStart();
            }
        }
Example #3
0
        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;
            }
        }
Example #4
0
        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;
            }
        }
Example #5
0
 public void Resynchronized()
 {
     State = eLearnState.Idle;
 }
Example #6
0
 public void Resynchronized()
 {
     State = eLearnState.ProcessingBit1;
 }