def get_ad9361_lo_lock(self, which): """ Return LO lock status (Boolean!) of AD9361. 'which' must be either 'tx' or 'rx' """ assert which in ('rx', 'tx') mboard_regs_label = "mboard-regs" mboard_regs_control = MboardRegsControl(mboard_regs_label, self.log) if which == "tx": locked = mboard_regs_control.get_ad9361_tx_lo_lock() else: locked = mboard_regs_control.get_ad9361_rx_lo_lock() return locked
def _init_peripherals(self, args): """ Turn on all peripherals. This may throw an error on failure, so make sure to catch it. Peripherals are initialized in the order of least likely to fail, to most likely. """ # Sanity checks assert self.mboard_info.get('product') in self.pids.values(), \ "Device product could not be determined!" # Init Mboard Regs self.mboard_regs_control = MboardRegsControl( self.mboard_regs_label, self.log) self.mboard_regs_control.get_git_hash() self.mboard_regs_control.get_build_timestamp() self._check_fpga_compat() self._update_fpga_type() self.crossbar_base_port = self.mboard_regs_control.get_xbar_baseport() # Init peripherals self.enable_gps( enable=str2bool( args.get('enable_gps', E320_DEFAULT_ENABLE_GPS) ) ) self.enable_fp_gpio( enable=args.get( 'enable_fp_gpio', E320_DEFAULT_ENABLE_FPGPIO ) ) # Init clocking self._init_ref_clock_and_time(args) # Init GPSd iface and GPS sensors self._init_gps_sensors() # Init CHDR transports self._xport_mgrs = { 'udp': E320XportMgrUDP(self.log.getChild('UDP')), 'liberio': E320XportMgrLiberio(self.log.getChild('liberio')), } # Spawn status monitoring thread self.log.trace("Spawning status monitor thread...") self._status_monitor_thread = threading.Thread( target=self._monitor_status, name="E320StatusMonitorThread", daemon=True, ) self._status_monitor_thread.start() # Init complete. self.log.debug("mboard info: {}".format(self.mboard_info))