def open(self): ##self.application.config_screen.config.tx_phase.Enable(1) # Create the proper broadcast address for rx_udp_ip. nm = self.conf.rx_udp_ip_netmask.split('.') ip = self.conf.rx_udp_ip.split('.') nm = map(int, nm) ip = map(int, ip) bc = '' for i in range(4): x = (ip[i] | ~ nm[i]) & 0xFF bc = bc + str(x) + '.' self.broadcast_addr = bc[:-1] # This socket is used for the Simple Network Discovery Protocol by AE4JY self.socket_sndp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.socket_sndp.setblocking(0) self.socket_sndp.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) self.sndp_request = chr(56) + chr(0) + chr(0x5A) + chr(0xA5) + chr(0) * 52 self.sndp_rx_active = True # conf.rx_udp_port is used for returning ADC samples # conf.rx_udp_port + 1 is used for control self.rx_udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.rx_udp_socket.setblocking(0) self.rx_udp_socket.connect((self.conf.rx_udp_ip, self.conf.rx_udp_port + 1)) # conf.tx_audio_port + 1 is used for control if self.conf.tx_ip: self.sndp_tx_active = True self.tx_udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.tx_udp_socket.setblocking(0) self.tx_udp_socket.connect((self.conf.tx_ip, self.conf.tx_audio_port + 1)) else: self.sndp_tx_active = False QS.change_rates(96000, 0, 96000, 0) self.application.test1Button.Enable(0) return QS.open_rx_udp(self.conf.rx_udp_ip, self.conf.rx_udp_port)
def open(self): # Create the proper broadcast address for rx_udp_ip. nm = self.conf.rx_udp_ip_netmask.split('.') ip = self.conf.rx_udp_ip.split('.') nm = map(int, nm) ip = map(int, ip) bc = '' for i in range(4): x = (ip[i] | ~nm[i]) & 0xFF bc = bc + str(x) + '.' self.broadcast_addr = bc[:-1] # This socket is used for the Simple Network Discovery Protocol by AE4JY self.socket_sndp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.socket_sndp.setblocking(0) self.socket_sndp.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) self.sndp_request = chr(56) + chr(0) + chr(0x5A) + chr( 0xA5) + chr(0) * 52 self.sndp_active = self.conf.sndp_active # conf.rx_udp_port is used for returning ADC samples # conf.rx_udp_port + 1 is used for control self.rx_udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.rx_udp_socket.setblocking(0) self.rx_udp_socket.connect( (self.conf.rx_udp_ip, self.conf.rx_udp_port + 1)) return QS.open_rx_udp(self.conf.rx_udp_ip, self.conf.rx_udp_port)
def open(self): self.rx_udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.rx_udp_socket.setblocking(0) # conf.rx_udp_port is used for returning ADC samples # conf.rx_udp_port + 1 is used for control self.rx_udp_socket.connect((self.conf.rx_udp_ip, self.conf.rx_udp_port + 1)) return QS.open_rx_udp(self.conf.rx_udp_ip, self.conf.rx_udp_port)
def open(self): self.rx_udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.rx_udp_socket.setblocking(0) # conf.rx_udp_port is used for returning ADC samples # conf.rx_udp_port + 1 is used for control self.rx_udp_socket.connect( (self.conf.rx_udp_ip, self.conf.rx_udp_port + 1)) return QS.open_rx_udp(self.conf.rx_udp_ip, self.conf.rx_udp_port)
def pre_open(self): st = "No capture device found." port = self.conf.rx_udp_port for i in range(5): if DEBUG: print ('Send discover') try: self.socket_discover.sendto(self.discover_request, (self.broadcast_addr, port)) time.sleep(0.05) data, addr = self.socket_discover.recvfrom(1500) except: if DEBUG > 1: traceback.print_exc() else: if len(data) > 32 and data[0] == chr(0xEF) and data[1] == chr(0xFE): data = map(ord, data) ver = self.conf.hermes_code_version bid = self.conf.hermes_board_id if ver >= 0 and data[9] != ver: pass elif bid >= 0 and data[10] != bid: pass else: st = 'Capture from Hermes device: Mac %2x:%2x:%2x:%2x:%2x:%2x, Version %d, ID %d' % tuple(data[3:11]) self.hermes_ip = addr[0] self.hermes_board_id = data[10] if DEBUG: print (st) adr = self.conf.rx_udp_ip if adr and adr != addr[0]: # Specified IP address if DEBUG: print("Change IP address from %s to %s" % (addr[0], adr)) ip = adr.split('.') ip = map(int, ip) cmd = (chr(0xEF) + chr(0xFE) + chr(0x03) + chr(data[3]) + chr(data[4]) + chr(data[5]) + chr(data[6]) + chr(data[7]) + chr(data[8]) + chr(ip[0]) + chr(ip[1]) + chr(ip[2]) + chr(ip[3]) + chr(0) * 60) self.socket_discover.sendto(cmd, (self.broadcast_addr, port)) time.sleep(0.1) self.socket_discover.sendto(cmd, (self.broadcast_addr, port)) # Note: There is no response, contrary to the documentation self.hermes_ip = adr if False: try: data, addr = self.socket_discover.recvfrom(1500) except: if DEBUG: traceback.print_exc() else: print(repr(data), addr) ##self.hermes_ip = adr time.sleep(1.0) st += ', IP %s' % self.hermes_ip # Open a socket for communication with the hardware msg = QS.open_rx_udp(self.hermes_ip, port) if msg[0:8] != "Capture ": st = msg # Error break time.sleep(0.05) self.socket_discover.close() self.config_text = st
def open(self): # Create the proper broadcast address for rx_udp_ip. nm = self.conf.rx_udp_ip_netmask.split('.') ip = self.conf.rx_udp_ip.split('.') nm = map(int, nm) ip = map(int, ip) bc = '' for i in range(4): x = (ip[i] | ~ nm[i]) & 0xFF bc = bc + str(x) + '.' self.broadcast_addr = bc[:-1] # This socket is used for the Simple Network Discovery Protocol by AE4JY self.socket_sndp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.socket_sndp.setblocking(0) self.socket_sndp.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) self.sndp_request = chr(56) + chr(0) + chr(0x5A) + chr(0xA5) + chr(0) * 52 self.sndp_active = self.conf.sndp_active # conf.rx_udp_port is used for returning ADC samples # conf.rx_udp_port + 1 is used for control self.rx_udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.rx_udp_socket.setblocking(0) self.rx_udp_socket.connect((self.conf.rx_udp_ip, self.conf.rx_udp_port + 1)) return QS.open_rx_udp(self.conf.rx_udp_ip, self.conf.rx_udp_port)
def pre_open(self): # This socket is used for the Metis Discover protocol self.discover_request = b"\xEF\xFE\x02" + b"\x00" * 60 self.socket_discover = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.socket_discover.setblocking(0) self.socket_discover.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) found = False st = "No capture device found." port = self.conf.rx_udp_port for i in range(5): if found: break if DEBUG: print('Send discover') try: for broadcast_addr in self.broadcast_addrs: self.socket_discover.sendto(self.discover_request, (broadcast_addr, port)) if DEBUG: print('discover_request', (broadcast_addr, port)) time.sleep(0.01) except: if DEBUG > 1: traceback.print_exc() for j in range(5): try: data, addr = self.socket_discover.recvfrom(1500) except: if DEBUG > 1: traceback.print_exc() time.sleep(0.02) continue else: if DEBUG: print('recvfrom', addr, 'length', len(data), "type", type(data)) data = bytearray(data) if len(data) > 32 and data[0] == 0xEF and data[1] == 0xFE: if DEBUG: print('data', data) ver = self.conf.hermes_code_version bid = self.conf.hermes_board_id if ver >= 0 and data[9] != ver: pass elif bid >= 0 and data[10] != bid: pass else: st = 'Capture from Hermes device: Mac %2x:%2x:%2x:%2x:%2x:%2x, Code version %d, ID %d' % tuple( data[3:11]) self.hermes_mac = data[3:9] self.hermes_ip = addr[0] self.hermes_code_version = data[9] self.hermes_board_id = data[10] QS.set_hermes_id(data[9], data[10]) if data[0x16] >> 6 == 0: QS.set_params(bandscopeScale=2048) if DEBUG: print(st) adr = self.conf.rx_udp_ip found = True if adr and adr != addr[0]: # Change the IP address if DEBUG: print("Change IP address from %s to %s" % (addr[0], adr)) ip = adr.split('.') ip = list(map(int, ip)) cmd = bytearray(73) cmd[0] = 0xEF cmd[1] = 0xFE cmd[2] = 0x03 cmd[3] = data[3] cmd[4] = data[4] cmd[5] = data[5] cmd[6] = data[6] cmd[7] = data[7] cmd[8] = data[8] cmd[9] = ip[0] cmd[10] = ip[1] cmd[11] = ip[2] cmd[12] = ip[3] for broadcast_addr in self.broadcast_addrs: self.socket_discover.sendto( cmd, (broadcast_addr, port)) time.sleep(0.01) # Note: There is no response, contrary to the documentation self.hermes_ip = adr if False: try: data, addr = self.socket_discover.recvfrom( 1500) except: if DEBUG: traceback.print_exc() else: print(repr(data), addr) ##self.hermes_ip = adr time.sleep(1.0) st += ', IP %s' % self.hermes_ip break if not found and self.conf.udp_rx_ip: self.hermes_ip = self.conf.udp_rx_ip code = 62 bid = 6 self.hermes_code_version = code self.hermes_board_id = bid QS.set_hermes_id(code, bid) st = 'Capture from Hermes device at specified IP %s' % self.hermes_ip found = True if found: # Open a socket for communication with the hardware msg = QS.open_rx_udp(self.hermes_ip, port) if msg[0:8] != "Capture ": st = msg # Error self.socket_discover.close() self.config_text = st self.ChangeLNA( 2 ) # Initialize the LNA using the correct LNA code from the FPGA code version