Exemple #1
0
        public static CrcMessage CreateFromBytes(byte[] data)
        {
            CrcMessage message = new CrcMessage()
            {
                ID       = data[0],
                Segments = data[1],
                LenHi    = data[2],
                LenLo    = data[3],
                Crc16Hi  = data[4],
                Crc16Lo  = data[5],
            };

            Array.Copy(data, 6, message.Body, 0, Math.Min(message.LenHi * 256 + message.LenLo, 256));
            return(message);
        }
Exemple #2
0
        internal static CrcMessage Create(int messageId, int messageSegment, byte[] data)
        {
            CrcMessage crcMessage = new CrcMessage();

            crcMessage.ID       = messageId;
            crcMessage.Segments = messageSegment;
            Array.Copy(data, 0, crcMessage.Body, 0, data.Length);
            crcMessage.LenHi = (byte)(data.Length / 256);
            crcMessage.LenLo = (byte)(data.Length % 256);

            int var7 = crcMessage.Crc16Calculation(crcMessage.Body, data.Length);

            crcMessage.Crc16Hi = (byte)(var7 / 256);
            crcMessage.Crc16Lo = (byte)(var7 % 256);

            return(crcMessage);
        }
        public Message BuildMessageSegmentOfType(byte messageId, byte[] data, byte isZero, byte isOne)
        {
            short messageSegment = (short)(isZero - 1 + ((isOne - 1) * 16));

            switch (messageId)
            {
            case 4:
                if (CrcMessage.SizeOfHeader() + data.Length > 256)
                {
                    return(null);    //false;
                }
                return(CrcMessage.Create(messageId, messageSegment, data));

            default:
                return(null);    // false
            }
        }
        internal static Message CreateFromStream(byte[] data)
        {
            switch (data[0])
            {
            case BLEMSG_ID_PLAIN_RSP:     // 2
            case BLEMSG_ID_PLAIN_NTF:     // 3
                throw new Exception("Generation of 'PlainMessage' not supported yet");

//                    return PlainMessage.createFromStream(data);
            case BLEMSG_ID_CRC_RSP:     // 5
            case BLEMSG_ID_CRC_NTF:     // 6
                return(CrcMessage.CreateFromBytes(data));

            case BLEMSG_ID_CRC_REQ:
            default:
                return(null);
            }
        }