Пример #1
0
 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