コード例 #1
0
ファイル: simulator.py プロジェクト: sma-wideband/phringes_sw
 def __init__(self, address, handler=BasicRequestHandler,
              correlator=BasicCorrelationProvider,
              n_antennas=8, correlator_lags=32, 
              include_baselines='*-*', initial_flux=2.0, 
              initial_int_time=16, analog_bandwidth=512000000.0, 
              antenna_diameter=3):
     """ SimulatorTCPServer(address, handler, correlator, lags, baselines)
     This subclasses the BasicTCPServer and adds some methods needed for
     controlling and reading data from the SimulatorCorrelationProvider.
     Please see the BasicTCPServer documentation for more detailed infor-
     mation.
     
     128  - self.get_source_flux()
     129  - self.set_source_flux(flux_Jy)
     130  - self.get_system_temp(for_antennas=[1,2,3,...])
     131  - self.set_system_temp(ant_val=[1,0.0,2,0.0,3,0.0...])
     132  - self.get_phases(for_antennas=[1,2,3,...])
     133  - self.set_phases(ant_val=[1,0.0,2,0.0,3,0.0...])
     134  - self.get_delays(for_antennas=[1,2,3,...])
     135  - self.set_delays(ant_val=[1,0.0,2,0.0,3,0.0...])"""
     BasicTCPServer.__init__(self, address, handler=handler, 
                             correlator=correlator, correlator_lags=correlator_lags, 
                             n_antennas=n_antennas, initial_int_time=initial_int_time,
                             antenna_diameter=antenna_diameter, analog_bandwidth=analog_bandwidth, 
                             include_baselines=include_baselines)
     self._command_set.update({ 128 : self.get_source_flux,
                                129 : self.set_source_flux,
                                130 : self.get_system_temp,
                                131 : self.set_system_temp,
                                132 : self.get_phases,
                                133 : self.set_phases,
                                134 : self.get_delays,
                                135 : self.set_delays })
     self._source_flux = initial_flux
     self._atmosphere = AtmosphericModel(self)
     self._geometry = GeometricModel(self)
     self._correlator = correlator(self, self._include_baselines, correlator_lags)
コード例 #2
0
ファイル: sma.py プロジェクト: sma-wideband/phringes_sw
 def set_value(self, param, antenna, value):
     ibob, ibob_input = self._input_ibob_map[self._mapping[antenna]]
     try:
         return self._param_handlers[param]('set', antenna, ibob, ibob_input, value)
     except KeyError:
         return BasicTCPServer.set_value(self, param, antenna, value)
コード例 #3
0
ファイル: sma.py プロジェクト: sma-wideband/phringes_sw
 def shutdown(self, args):
     self.stop_checks_loop()
     self.stop_delay_tracker()
     self.stop_phase_tracker()
     return BasicTCPServer.shutdown(self, args)
コード例 #4
0
ファイル: sma.py プロジェクト: sma-wideband/phringes_sw
 def get_value(self, param, antenna):
     try:
         ibob, ibob_input = self._input_ibob_map[self._mapping[antenna]]
         return self._param_handlers[param]('get', antenna, ibob, ibob_input)
     except KeyError:
         return BasicTCPServer.get_value(self, param, antenna)
コード例 #5
0
ファイル: sma.py プロジェクト: sma-wideband/phringes_sw
 def __init__(self, address, handler=BasicRequestHandler,
              correlator=BEE2CorrelationProvider, reference=6,
              fstop=0.256, antennas=[6, 1, 2, 3, 4, 5, 7, 8],
              correlator_lags=16, include_baselines='*-*', initial_int_time=16, 
              analog_bandwidth=512000000.0, antenna_diameter=3,
              bee2_host='b02.ata.pvt', bee2_port=7147,
              correlator_bitstream='bee2_calib_corr.bof',
              ipa_hosts=('169.254.128.3', '169.254.128.2'),
              dbe_host='169.254.128.0', dds_host='128.171.116.189',
              correlator_client_port=8332, phase_tracker_port=9453):
     """ SubmillimeterArrayTCPServer(address, handler, correlator, lags, baselines)
     This subclasses the BasicTCPServer and adds some methods needed for
     controlling and reading data from the BEE2CorrelationProvider. Please see 
     the BasicTCPServer documentation for more detailed information."""
     BasicTCPServer.__init__(self, address, handler=handler, 
                             correlator=correlator, correlator_lags=correlator_lags, 
                             antennas=antennas, initial_int_time=initial_int_time,
                             antenna_diameter=antenna_diameter, analog_bandwidth=analog_bandwidth, 
                             include_baselines=include_baselines)
     self._correlator = correlator(self, self._include_baselines, bee2_host, bee2_port, 
                                   lags=correlator_lags, bof=correlator_bitstream)
     self._correlator_client = BEE2CorrelatorClient('0.0.0.0', correlator_client_port)
     self.bee2_host, self.bee2_port, self.bee2_bitstream = bee2_host, bee2_port, correlator_bitstream
     self._delay_tracker_thread = Thread(target=self._delay_tracker)
     self._delay_tracker_stopevent = Event()
     self._checks_thread = Thread(target=self._checks_loop)
     self._checks_stopevent = Event()
     self._bee2 = BEE2Client(bee2_host, port=bee2_port)
     self._bee2._connected.wait()
     self._dds = DDSClient(dds_host)
     self._ipa0 = IBOBClient(ipa_hosts[0], port=23)
     self._ipa1 = IBOBClient(ipa_hosts[1], port=23)
     self._dbe = IBOBClient(dbe_host, port=23)
     self._reference_antenna = reference
     self._phase_tracker_port = phase_tracker_port
     self._fstop = fstop # GHz, fringe stopping
     self._ipas = {'ipa0': self._ipa0, 'ipa1': self._ipa1}
     self._ibobs = {'ipa0': self._ipa0, 'ipa1': self._ipa1, 'dbe': self._dbe}
     self._boards = {'ipa0': self._ipa0, 'ipa1': self._ipa1, 'dbe': self._dbe, 'bee2': self._bee2}
     self._mapping = dict((a, i) for i, a in enumerate(self._antennas))#{6:0, 1:1, 2:2, 3:3, 4:4, 5:5, 7:6, 8:7}
     self._input_ibob_map = {0: [self._ipa0, 0], 1: [self._ipa0, 1],
                             2: [self._ipa0, 2], 3: [self._ipa0, 3],
                             4: [self._ipa1, 0], 5: [self._ipa1, 1],
                             6: [self._ipa1, 2], 7: [self._ipa1, 3]}
     self._param_handlers = {'_thresholds' : self._thresh_handler,
                             '_phases': self._phase_handler,
                             '_phase_offsets': self._phase_offset_handler,
                             '_delays': self._delay_handler,
                             '_delay_offsets': self._delay_offset_handler,
                             '_gains': self._gain_handler}
     self._command_set.update({2 : self.get_mapping,
                               3 : self.set_mapping,
                               5 : self.load_walsh_table,
                               6 : self.clear_walsh_table,
                               7 : self.delay_tracker,
                               12 : self.reset_xaui,
                               13 : self.arm_sync,
                               14 : self.noise_mode,
                               15 : self._board,
                               16 : self.get_reference,
                               17 : self.setup_fstopping,
                               18 : self.start_fstopping,
                               19 : self.stop_fstopping,
                               36 : self.get_delays,
                               37 : self.set_delays,
                               38 : self.get_phases,
                               39 : self.set_phases,
                               40 : self.get_gains,
                               41 : self.set_gains,
                               42 : self.get_thresholds,
                               43 : self.set_thresholds,
                               64 : self.get_dbe_gains,
                               65 : self.set_dbe_gains,
                               96 : self.operations_log,
                               128 : self.get_correlation})
     self.setup()
     #self.sync_all()
     self.start_checks_loop(30.0)
     #self.start_delay_tracker(4.0)
     self.start_phase_tracker(1)