示例#1
0
 def __init__(self,
              callback,
              verbose=False,
              uplink_port=UPLINK_PORT,
              downlink_port=DOWNLINK_PORT,
              msg_class='telemetry',
              interface_id=0):
     threading.Thread.__init__(self)
     self.callback = callback
     self.verbose = verbose
     self.msg_class = msg_class
     self.uplink_port = uplink_port
     self.downlink_port = downlink_port
     self.ac_downlink_status = {}
     self.id = interface_id  # set to None to disable id filtering
     self.running = True
     try:
         self.server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
         self.server.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
         self.server.settimeout(2.0)
         self.server.bind(('0.0.0.0', self.downlink_port))
     except OSError:
         logger.error(
             "Error: unable to open socket on ports '%d' (up) and '%d' (down)"
             % (self.uplink_port, self.downlink_port))
         exit(0)
     self.trans = PprzTransport(msg_class)
示例#2
0
 def __init__(self, callback, verbose=False, device='/dev/ttyUSB0', baudrate=115200,
              msg_class='telemetry', interface_id=0):
     threading.Thread.__init__(self)
     self.callback = callback
     self.verbose = verbose
     self.msg_class = msg_class
     self.id = interface_id
     self.running = True
     try:
         self.ser = serial.Serial(device, baudrate, timeout=1.0)
     except serial.SerialException:
         print("Error: unable to open serial port '%s'" % device)
         exit(0)
     self.trans = PprzTransport(msg_class)
示例#3
0
    def __init__(self, link_uri, msg_class='telemetry', verbose=False):
        """ Initialize and run with the specified link_uri """
        self.verbose = verbose

        # Ivy interface and stream parser
        self._ivy = IvyMessagesInterface("cf2ivy")
        self._transport = PprzTransport(msg_class)

        # Create a Crazyradio
        self._driver = RadioDriver()
        self._driver.connect(link_uri, self._link_quality_cb,
                             self._link_error_cb)

        if self.verbose:
            print('Connecting to %s' % link_uri)

        # Variable used to keep main loop occupied until disconnect
        self.is_connected = True

        # Bind to all messages from ac_id
        def _forward_to_cf(ac_id, msg):
            try:
                data = self._transport.pack_pprz_msg(0,
                                                     msg)  # sender_id 0 = GCS
                for i in range(0, len(data), 30):
                    pk = CRTPPacket()
                    pk.port = CRTP_PORT_PPRZLINK
                    pk.data = data[i:(i + 30)]
                    self._driver.send_packet(pk)
                if self.verbose:
                    print('Forward message', msg.name)
            except:
                if self.verbose:
                    print('Forward error for', ac_id)

        messages_datalink = messages_xml_map.get_msgs("datalink")
        for msg in messages_datalink:
            self._ivy.subscribe(_forward_to_cf, PprzMessage("datalink", msg))