Exemplo n.º 1
0
        public void Handle <T>(DtmfTone tone, Func <DtmfTone, T> handleStart, Action <T, DtmfTone> handleEnd)
        {
            switch (currentState)
            {
            case State.NoDtmf:
                if (tone != DtmfTone.None)
                {
                    clientData   = handleStart(tone);
                    currentState = State.Dtmf;
                }
                break;

            case State.Dtmf:
                if (tone == DtmfTone.None)
                {
                    handleEnd((T)clientData, lastTone);
                    currentState = State.NoDtmf;
                }
                else if (tone != lastTone)
                {
                    handleEnd((T)clientData, lastTone);
                    clientData = handleStart(tone);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            lastTone = tone;
        }
Exemplo n.º 2
0
 public static void AddCustomTone(DtmfTone dtmfTone)
 {
     DtmfTones.Add(KeyOf(dtmfTone), dtmfTone);
 }
Exemplo n.º 3
0
 private static Tuple <int, int> KeyOf(DtmfTone t) => KeyOf(t.HighTone, t.LowTone);
Exemplo n.º 4
0
 .Select(x => DtmfTone.From(x.start, x.stop));