private void AssertUnknownBits(String name, IRPacket data, byte mask) { if (((byte)data.data & mask) != 0x00) { string debug = String.Format("Unknown bits set: \"{0:s}\" unknown: {1:x} data: {2:x} mask {3:x}", name, (byte)data.data & mask, (byte)data.data, mask); HostDebugWriteLine(debug); } }
private bool ProcessPacket(IRPacket.PacketType type, UInt16 data, UInt16 number_of_bits) { //DateTime now = DateTime.Now; if (type != IRPacket.PacketType.PACKET_TYPE_LTX) return false; if (number_of_bits == 9) { if ((data & 0x100) != 0) { //end sequence if ((data & 0xff) == LazerTagSerial.ComputeChecksum(ref incoming_packet_queue)) { HostDebugWriteLine("Command: (" + GetCommandCodeName((CommandCode)(incoming_packet_queue[0].data)) + ") " + SerializeCommandSequence(ref incoming_packet_queue)); if (!ProcessCommandSequence()) { HostDebugWriteLine("ProcessCommandSequence failed: " + SerializeCommandSequence(ref incoming_packet_queue)); } } else { HostDebugWriteLine("Invalid Checksum SEQ: " + SerializeCommandSequence(ref incoming_packet_queue)); } incoming_packet_queue.Clear(); } else { //start sequence incoming_packet_queue.Add(new IRPacket(type, data, number_of_bits)); } } else if (number_of_bits == 8 && incoming_packet_queue.Count > 0) { //mid sequence incoming_packet_queue.Add(new IRPacket(type, data, number_of_bits)); } else if (number_of_bits == 8) { //junk HostDebugWriteLine("Unknown packet, clearing queue"); incoming_packet_queue.Clear(); } else { string debug = String.Format(type.ToString() + " {0:x}, {1:d}",data, number_of_bits); HostDebugWriteLine(debug); } return false; }