Exemple #1
0
    def dispatchPacket(self, source, packet):
        #try:
            #print "Packet length: ", len(packet)
            #            print "Dispatching from MoteIF"
            #             for i in packet:
            #                 print ord(i)," ",
            #             print
        try:
            # Message.py ignores base_offset, so we'll just chop off
            # the first byte (the SERIAL_AMTYPE) here.
            serial_pkt = SerialPacket(packet[1:],
                                      data_length=len(packet)-1)
        except:
            traceback.print_exc()


        try:
            data_start = serial_pkt.offset_data(0) + 1
            data_end = data_start + serial_pkt.get_header_length()
            data = packet[data_start:data_end]
            amType = serial_pkt.get_header_type()

        except Exception as x:
            print(x, file=sys.stderr)
            print(traceback.print_tb(sys.exc_info()[2]), file=sys.stderr)

        for l in self.listeners:
            amTypes = self.listeners[l]
            if amType in amTypes:
                try:
                    msgClass = amTypes[amType]
                    msg = msgClass(data=data,
                                   data_length = len(data),
                                   addr=serial_pkt.get_header_src(),
                                   gid=serial_pkt.get_header_group())
                    l.receive(source, msg)
                except Exception as x:
                    print(x, file=sys.stderr)
                    print(traceback.print_tb(sys.exc_info()[2]), file=sys.stderr)