/// <summary> /// Decode a Device Connect packet from the byte stream /// </summary> /// <param name="buffer"></param> /// <param name="index"></param> /// <returns></returns> private static string DecodeDeviceConnectPacket(byte[] buffer, ref int index) { DeviceConnectPacket device = DeserializePacket <DeviceConnectPacket>(buffer, ref index); unsafe { return(DeserializeFixedString((IntPtr)device.uid.value, sizeof(DeviceUID))); } }
/// <summary> /// Encode a Connect to Device packet into the specified buffer /// </summary> /// <param name="buffer"></param> /// <param name="index"></param> /// <param name="uid"></param> /// <exception cref="InvalidOperationException"></exception> public static void EncodeConnectToDevice(byte[] buffer, ref int index, string uid) { // Encode header PacketHeader header = new PacketHeader(PacketTypeCode.ConnectToDevice); SerializePacket(buffer, ref index, header); // Encode payload DeviceConnectPacket packet = new DeviceConnectPacket(); unsafe { SerializeFixedString(uid, (IntPtr)packet.uid.value, DeviceUID.Length); } SerializePacket(buffer, ref index, packet); // Encode footer SerializePacket(buffer, ref index, _footer); }