CARMA C++
SignalPathMapperHandle.h
Go to the documentation of this file.
1 #ifndef CARMA_CONTROL_SIGNALPATHMAPPERHANDLE_H
2 #define CARMA_CONTROL_SIGNALPATHMAPPERHANDLE_H
3 
12 #include "carma/control/CorrDefs.h"
14 #include "carma/control/CorrelatorInfo.h"
15 #include "carma/monitor/ControlSubsystem.h"
16 
17 #include "carma/signalpath/SignalPathMapperControl.h"
18 #include "carma/switchyard/SwitchyardControl.h"
19 #include "carma/util/SeqTypedefs.h"
20 #include "carma/util/corrUtils.h"
21 
22 #include <string>
23 #include <vector>
24 
25 namespace carma {
26 
27 namespace monitor {
28  class MonitorSystem;
29 } // namespace monitor
30 
31 namespace control {
32 
33 typedef
34 RemoteObjHandleT< carma::signalpath::SignalPathMapperControl>
35  SignalPathMapperRemoteObjHandle;
36 
38 // It is a thin handle that calls through to the DO and contains
39 // no local state.
41 public:
42 
56  carma::monitor::MonitorSystem & monitorSystem,
57  carma::monitor::ControlSubsystemBase::Reachable & reachable );
58 
59  virtual ~SignalPathMapperHandle( );
60 
69  void initializeCableMap( const ::std::string & fileName );
70 
82  void loadConfiguration( const ::std::string & fileName,
83  const ::std::string & confName,
84  const ::std::string & astroBandConfName );
85 
98  void configureAstroBand(unsigned short bandNo,
99  const ::std::string & confName,
100  unsigned short subarrayNo,
101  ControlCorrelatorDesignation type);
102 
103  void checkConfigurationValidity(unsigned short bandNo,
104  const ::std::string & confName,
105  unsigned short subarrayNo,
106  ControlCorrelatorDesignation type);
107 
108  void checkConfigurationSuccess(unsigned short bandNo);
109 
115  std::vector<carma::signalpath::SignalPathMapperControl::Antenna>
116  getAntennas(unsigned short astroBandNo);
117 
123  std::vector<carma::signalpath::SignalPathMapperControl::BlockDownconverterSetting>
124  getBdcSettings(unsigned short astroBandNo);
125 
131  ::std::vector<carma::signalpath::SignalPathMapperControl::CorrelatorBandInput>
133 
139  ::std::vector<carma::signalpath::SignalPathMapperControl::AstroBand>
140  getActiveAstroBands( ControlCorrelatorDesignation type );
141 
151  ::std::vector<carma::signalpath::SignalPathMapperControl::AstroBand>
152  getAstroBandsForConfiguration( const ::std::string & confName,
153  unsigned short subarrayNo,
154  ControlCorrelatorDesignation type);
155 
161  ::std::vector<carma::signalpath::SignalPathMapperControl::CorrelatorBand>
162  getActiveCorrelatorBands( ControlCorrelatorDesignation type );
163 
168  ::std::vector<carma::signalpath::SignalPathMapperControl::CorrelatorBand>
169  getCorrelatorBands(unsigned astroBandNo);
170 
176  carma::util::SeqShort * getCorrelatorBandNoSeq(unsigned astroBandNo);
177 
183  carma::util::SeqShort * getActiveAstroBandNoSeq( ControlCorrelatorDesignation type );
184 
185  ::std::vector<short> getActiveAstroBandNoVec( ControlCorrelatorDesignation type );
186 
187  carma::util::CorrelatorFpgaModeType getFpgaMode(unsigned astroBandNo);
188 
194  std::vector<carma::switchyard::SwitchPosition>
195  getIFSwitchSettings(unsigned short astroBandNo);
196 
197  std::vector<carma::switchyard::SwitchPosition>
198  getDCLOSwitchSettings(unsigned short astroBandNo);
199 
200  std::vector<carma::switchyard::SwitchPosition>
201  getLOSwitchSettings(unsigned short astroBandNo);
202 
203  std::vector<carma::switchyard::SwitchPosition>
204  getLLSwitchSettings(unsigned short astroBandNo);
205 
210  unsigned int getNumActiveCorrelatorBands( ControlCorrelatorDesignation type );
211 
216  unsigned int getNumActiveAstroBands( ControlCorrelatorDesignation type );
217 
227  void clearAstroBandConfiguration(unsigned short bandNo,
228  unsigned short subarrayNo,
229  ControlCorrelatorDesignation type);
230 
241 
249  void clearWalshColumnAssignment(unsigned short antNo);
250 
256  ::std::vector<carma::signalpath::SignalPathMapperControl::WalshColumnAssignment>
257  getWalshColumnAssignment(unsigned short antNo);
258 
262  ::std::string queryConfiguration();
263 
267  void addAntenna(unsigned short antNo, unsigned short subarrayNo);
268  void removeAntenna(unsigned short antNo, unsigned short subarrayNo);
269 
270  void addCorrelator(ControlCorrelatorDesignation type, unsigned short subarrayNo);
271 
272  void removeCorrelator(ControlCorrelatorDesignation type, unsigned short subarrayNo);
273 
278  bool isValidAstroBand( unsigned astroBandNo, ControlCorrelatorDesignation type);
279 
284  ::std::string getConfname( unsigned short astroBandNo );
285 
292  int getAstroBandForCorrelatorBand( unsigned short corrBandNo,
293  ControlCorrelatorDesignation type );
294 
300  ControlCorrelatorDesignation getCorrTypeForAstroBand( unsigned short astroBandNo );
301 };
302 
303 // Optimally, this should be implemented in
304 // signalpath/SignalPathMapperControlImpl.cc
305 // so that less data are transmitted across the wire.
306 // But for now, this suffices.
307 inline unsigned int
309 {
310  if ( type == carma::util::CORR_NONE ) return 0;
311 
312  return getActiveCorrelatorBands( type ).size();
313 }
314 
315 
316 }} // namespace carma::control
317 #endif
void configureAstroBand(unsigned short bandNo, const ::std::string &confName, unsigned short subarrayNo, ControlCorrelatorDesignation type)
Configure an astro band.
void initializeCableMap(const ::std::string &fileName)
Initialize a cable map, specifying switchyard hardware connections.
::std::vector< carma::signalpath::SignalPathMapperControl::AstroBand > getActiveAstroBands(ControlCorrelatorDesignation type)
Query active astro bands managed by this correlator.
sequence< short > SeqShort
Sequence of CORBA::Short.
Definition: SeqTypedefs.idl:10
void clearWalshColumnAssignment(unsigned short antNo)
Clear a walsh column assignment.
CorrelatorFpgaModeType
FPGA configuration modes.
Manages control&#39;s reference to SignalPathMapper DO.
void loadConfiguration(const ::std::string &fileName, const ::std::string &confName, const ::std::string &astroBandConfName)
Load a new configuration from a file.
void assignWalshColumn(carma::signalpath::SignalPathMapperControl::WalshColumnAssignment wca)
Set a walsh column explicitly for an antenna.
void addAntenna(unsigned short antNo, unsigned short subarrayNo)
Methods to add/remove an antenna from a subarray.
bool isValidAstroBand(unsigned astroBandNo, ControlCorrelatorDesignation type)
void clearAstroBandConfiguration(unsigned short bandNo, unsigned short subarrayNo, ControlCorrelatorDesignation type)
Clear an astro band configuration.
ControlCorrelatorDesignation getCorrTypeForAstroBand(unsigned short astroBandNo)
Query the correlator type for a given astroband.
unsigned int getNumActiveAstroBands(ControlCorrelatorDesignation type)
carma::util::SeqShort * getActiveAstroBandNoSeq(ControlCorrelatorDesignation type)
Struct for assignment of walsh columns to antennas.
::std::vector< carma::signalpath::SignalPathMapperControl::CorrelatorBand > getActiveCorrelatorBands(ControlCorrelatorDesignation type)
Query active correlator bands managed by this correlator.
std::vector< carma::signalpath::SignalPathMapperControl::BlockDownconverterSetting > getBdcSettings(unsigned short astroBandNo)
Query block downconverter settings.
Manages connection to remote DO.
std::vector< carma::switchyard::SwitchPosition > getIFSwitchSettings(unsigned short astroBandNo)
Query switch settings.
unsigned int getNumActiveCorrelatorBands(ControlCorrelatorDesignation type)
struct to encapsulate a single correlator band (SLCOR[1-8], WBCOR[1-16])
::std::vector< carma::signalpath::SignalPathMapperControl::CorrelatorBand > getCorrelatorBands(unsigned astroBandNo)
Query active correlator bands in this AstroBand.
::std::string getConfname(unsigned short astroBandNo)
Typed class for managing connections to DOs.
Monitor system base class.
Definition: MonitorSystem.h:81
::std::vector< carma::signalpath::SignalPathMapperControl::CorrelatorBandInput > getCorrelatorBandInputMap(const carma::signalpath::SignalPathMapperControl::CorrelatorBand &band)
Query correlator band input mapping.
::std::vector< carma::signalpath::SignalPathMapperControl::AstroBand > getAstroBandsForConfiguration(const ::std::string &confName, unsigned short subarrayNo, ControlCorrelatorDesignation type)
Query astro bands for which a mapping is specified by the requested configuration.
carma::util::SeqShort * getCorrelatorBandNoSeq(unsigned astroBandNo)
int getAstroBandForCorrelatorBand(unsigned short corrBandNo, ControlCorrelatorDesignation type)
std::vector< carma::signalpath::SignalPathMapperControl::Antenna > getAntennas(unsigned short astroBandNo)
Query antennas.
::std::vector< carma::signalpath::SignalPathMapperControl::WalshColumnAssignment > getWalshColumnAssignment(unsigned short antNo)
Query walsh function assignments.
SignalPathMapperHandle(carma::monitor::MonitorSystem &monitorSystem, carma::monitor::ControlSubsystemBase::Reachable &reachable)
Constructor.