/// <summary> /// Decode a Connection Status packet from a byte stream. If state is Failed, the device will be null. /// </summary> /// <param name="buffer"></param> /// <param name="index"></param> /// <param name="device"></param> /// <returns></returns> private static ConnectionState DecodeConnectionStatus(byte[] buffer, ref int index, out Device?device) { ConnectionStatusPacket status = DeserializePacket <ConnectionStatusPacket>(buffer, ref index); ConnectionState state = (ConnectionState)status.statusId; if (state == ConnectionState.Failed) { device = null; return(state); } device = DecodeDeviceInfo(status.device, state); return(state); }
/// <summary> /// Encode a Connection Status packet into the buffer /// </summary> /// <param name="buffer"></param> /// <param name="index"></param> /// <param name="state"></param> /// <param name="device"></param> public static void EncodeConnectionStatus(byte[] buffer, ref int index, ConnectionState state, Device device) { // Encode header PacketHeader header = new PacketHeader(PacketTypeCode.ConnectionStatus); SerializePacket(buffer, ref index, header); // Encode payload ConnectionStatusPacket packet = new ConnectionStatusPacket { statusId = (int)state, device = EncodeDeviceInfo(device) }; SerializePacket(buffer, ref index, packet); // Encode footer SerializePacket(buffer, ref index, _footer); }