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