def start(self, addr="0.0.0.0", port=None): # Check if radio connected destaddr, error = None, False assert(self.radioconnected() ), "RadioRx and RadioTx have not been connected to Channel!" # Start server if port is None: port = self.options.channel_port self.impl.start(addr, port) # Get server address # wait for server and client to start running while (not self.impl.server_running() ): time.sleep(0.5) while (not self.impl.client_running() ): time.sleep(0.5) # should probably update this with correct IP address for matching self.addr = self.impl.recv_addr() self.port = self.impl.recv_port() print "[CHANNEL]: server and client are running, recv_addr =", (self.addr, self.port) # Connect to address server and register self.addrclient = AddrClient(self.options) regaddr, regport = Address.get_ip_address(ifname=self.options.ifname, ntoa=True), self.port if (self.addrclient.connect()<0): sys.stderr.write("[CHANNEL]: Could not connect with address server!\n") error = True elif (self.addrclient.register(regaddr, regport)<0): sys.stderr.write("[CHANNEL]: Could not connect with address server!\n") error = True else: destaddr = self.addrclient.get_dest_addr() if (destaddr < 0): sys.stderr.write("[CHANNEL]: Error getting destination address\n") error = True sys.stderr.write("[CHANNEL]: Destination address = %s\n"%(str(destaddr) ) ) self.addrclient.close() # connect to remote destination if not error: sys.stderr.write("[CHANNEL]: Connecting channel client to destination\n") self.impl.connect_client(destaddr[0], destaddr[1]) else: self.stop() return -1