Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 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