Exemple #1
0
 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);
     }
 }
Exemple #2
0
        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;
        }