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)
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)
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))