예제 #1
0
        public static void AddToArray(this XCMPOpCode opcode, byte[] array, int startOffset)
        {
            UInt16 intval = (UInt16)opcode;

            byte[] bytes = BitConverter.GetBytes(intval);
            if (BitConverter.IsLittleEndian)
            {
                Array.Reverse(bytes);
            }
            Array.Copy(bytes, 0, array, startOffset, 2);
        }
예제 #2
0
        public static XCMPPacket Decode(byte[] data)
        {
            XCMPOpCode opcode = (XCMPOpCode)(data[0] << 8 | data[1]);

            switch (opcode)
            {
            case XCMPOpCode.DeviceinitStatusBroadcast:
                return(new DeviceInitStatusBroadcast(data));

            case XCMPOpCode.RadioStatusReply:
                return(new RadioStatusReply(data));

            case XCMPOpCode.VersionInfoReply:
                return(new VersionInfoReply(data));

            case XCMPOpCode.AlarmStatusReply:
                return(new AlarmStatusReply(data));

            default:
                return(new XCMPPacket(data));
            }
        }
예제 #3
0
 public XCMPPacket(byte[] data)
 {
     this.opcode = (XCMPOpCode)(data[0] << 8 | data[1]);
     this.data   = data.Skip(2).ToArray();
 }
예제 #4
0
 public XCMPPacket(XCMPOpCode opCode)
 {
     this.opcode = opCode;
     this.data   = new byte[0];
 }