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); }
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); }