예제 #1
0
        public static MessageBase Parse(string data)
        {
            //var allControls = Enum.GetValues(typeof(eControl)).OfType<byte>().ToList();
            //if(!allControls.Contains((byte)data[3])) return null;

            var         ctrl = (eControl)(byte)data[3];
            MessageBase msg  = null;

            switch (ctrl)
            {
            case eControl.ACK:
            case eControl.NAK:
            case eControl.DialCompleted:
            case eControl.LP_Update:
            case eControl.LP_ACK:
            case eControl.LP_NAK:
                //case eControl.TSL_ENQ:
                //case eControl.TSL_EOT:
                //case eControl.TSL_Prepare:
                //case eControl.TSL_ResultEnd:
                //case eControl.TSL_ResultRequest:
                msg = new SimpleMessage(ctrl);
                break;

            case eControl.LineStatus:
                msg = LineStatusMessageBase.Parse(data);
                break;

            case eControl.AllStatus:
                var allStatus = new AllStatusMessage();
                msg = allStatus;
                break;

            case eControl.StartAlarm:
            case eControl.EndAlarm:
                msg = StartAlarmMessage.Parse(data);
                break;

                //case eControl.TSL_ResultData:
                //    msg = TSL_ResultMessage.Parse(data);
                //    break;
            }

            if (msg != null)
            {
                msg.Address = (byte)data[2];
            }
            return(msg);
        }
예제 #2
0
        public static new LineStatusMessageBase Parse(string s)
        {
            LineStatusMessageBase msg = null;
            var ctrl = (eLineStatusType)(byte)s[4];

            switch (ctrl)
            {
            case eLineStatusType.Line:
                var lineStatus = new LineStatusMessage();
                lineStatus.Status = (eLineStatus)(byte)s[5];
                msg = lineStatus;
                break;

            case eLineStatusType.Revert:
                var revertStatus = new RevertStatusMessage();
                revertStatus.Status = (eStatus)(byte)s[5];
                msg = revertStatus;
                break;

            case eLineStatusType.PO_Status:
                var poStatus = new POStatusMessage();
                poStatus.Status = (eStatus)(byte)s[5];
                msg             = poStatus;
                break;

            case eLineStatusType.Tone:
            case eLineStatusType.CallerId:
            case eLineStatusType.PO_Tone:
                var numberStatus = new NumberReceivedMessage(ctrl);
                numberStatus.Number = ConvertAsciiNumberToString(s.Substring(5, 13));
                msg = numberStatus;
                break;
            }

            if (msg != null)
            {
                msg.Address = (byte)s[2];
            }
            return(msg);
        }