code: def _incoming(self, packet):
          
          if len(packet.data) < 1:
              logger.warning('Localization packet received with incorrect' +
                             'length (length is {})'.format(len(packet.data)))
              return
  
          pk_type = struct.unpack('<B', packet.data[:1])[0]
          data = packet.data[1:]
  
          # Decoding the known packet types
          # TODO: more generic decoding scheme?
          decoded_data = None
          if pk_type == self.RANGE_STREAM_REPORT:
              if len(data) % 5 != 0:
                  logger.error('Wrong range stream report data lenght')
                  return
              decoded_data = {}
              raw_data = data
              for i in range(int(len(data) / 5)):
                  anchor_id, distance = struct.unpack('<Bf', raw_data[:5])
                  decoded_data[anchor_id] = distance
                  raw_data = raw_data[5:]
  
          pk = LocalizationPacket(pk_type, data, decoded_data)
          self.receivedLocationPacket.call(pk)
docs: Callback for data received from the copter.