CARMA C++
SldcMaster.h
Go to the documentation of this file.
1 
11 #ifndef CARMA_DOWNCONVERTER_SLDCMASTER_H
12 #define CARMA_DOWNCONVERTER_SLDCMASTER_H
13 
14 #include "carma/canbus/Master.h"
21 #include "carma/switchyard/Switchyard.h"
22 #include "carma/util/PthreadCond.h"
23 #include "carma/util/PthreadMutex.h"
24 
25 #include <map>
26 #include <string>
27 
28 namespace carma {
29 
30 namespace monitor {
31  class SignalPathSubsystem;
32  class SldcSubsystem;
33 }
34 
35 namespace canbus {
36  class Device;
37 }
38 
39 namespace downconverter {
40 
47  public:
48 
56  SldcMaster( ::carma::monitor::SldcSubsystem & sldcMon,
57  ::carma::monitor::SignalPathSubsystem & signalPathMon );
58 
75  SldcMaster( const ::std::vector< CanDio::DevTermPair > & devTermPairs,
76  bool simOfflineNodes,
77  ::carma::monitor::SldcSubsystem & sldcMon,
78  ::carma::monitor::SignalPathSubsystem & signalPathMon );
79 
83  virtual ~SldcMaster();
84 
94  void addDevice(carma::canbus::Device *device);
95 
104  unsigned short inputIndex,
105  unsigned short bandIndex);
106 
112 
116  LoControl & getLoControl( );
117 
121  LoMonitor & getLoMonitor( );
122 
127 
132  QuadratureModulator & getQuadMod( unsigned short inputNo );
133 
138 
144  BlockDownconverter & getBlockDownconverter( unsigned short inputNo );
145 
151 
156  ::carma::switchyard::Switchyard & getSwitchyard( );
157 
162  ::carma::switchyard::Switchyard & getDcLoSwitchyard( );
163 
164 
168  void reset();
169 
174  void softReset();
175 
180  void start();
181 
185  void stop();
186 
187 
188  protected:
189 
193  std::map<carma::canbus::msgType, std::string> getControls() const;
194 
203  void updateStatus();
204 
205  private:
206 
207  // Disallow assignment and copy construction.
208  SldcMaster(const SldcMaster &);
209  SldcMaster &operator=(const SldcMaster &);
210 
211  // Helper routine for common initialization
212  void initialize();
213  static void * runThreadEntry(void *arg);
214 
215  pthread_t runThreadId_;
216  bool isRunning_;
217  carma::util::PthreadMutex isRunningGuard_;
218  carma::util::PthreadCond isRunningCond_;
219 
220  carma::monitor::SldcSubsystem & sldcMon_;
221  carma::monitor::SignalPathSubsystem & signalPathMon_;
222 
223  typedef ::std::map<
226 
227  typedef ::std::map<
229  ::carma::downconverter::BlockDownconverter *> BlockDcDeviceMap;
230 
231  typedef ::std::map<
234 
235  LoControl loControl_;
236  LoMonitor loMonitor_;
237  NoiseSource noiseSource_;
238  QuadModDeviceMap quadMods_;
239  BlockDcDeviceMap blockDownconverters_;
240  SldcDeviceMap sldcDevices_;
241  ::carma::switchyard::Switchyard switchyard_;
242  ::carma::switchyard::Switchyard dcLoSwitchyard_;
243 
244  QuadratureModulator globalQuadMod_; // Node 0 QuadMod
245  SpectralDownconverter globalSldc_; // Node 0 Downconverter
246  BlockDownconverter globalBlockDownconverter_;
247 
248  const std::string hostname_;
249 
250  }; // End class SldcMaster
251 }} // End namespace carma::downconverter
252 #endif
Device class declaration for Noise Source CAN device (CAN API 97).
SpectralDownconverter & getGlobalSldc()
Retrieve a reference to the global (node 0) SpectralDownconverter.
LoMonitor Device class implementation for Carma CANbus API 192.
QuadratureModulator & getGlobalQuadMod()
Retrieve a reference to the global (node 0) quad mod.
LoControl & getLoControl()
Retrieve a reference to the LoControl module.
LoMonitor & getLoMonitor()
Retrieve a reference to the LoMonitor module.
Noise Source Device Class.
Definition: NoiseSource.h:38
LoMonitor Device class implementation.
Definition: LoMonitor.h:41
void addDevice(carma::canbus::Device *device)
Add a device to the master.
BlockDownconverter & getBlockDownconverter(unsigned short inputNo)
Get a reference to a block downconverter module.
::carma::switchyard::Switchyard & getDcLoSwitchyard()
Retrieve a reference to the downconverter LO switchyard.
void updateStatus()
Update the status of the Sldc CAN Master.
Declaration of carma::canbus::Master class.
Quadrature modulator Device class implementation.
SpectralDownconverter & getSldc(unsigned short inputIndex, unsigned short bandIndex)
Retrieve a reference to a SpectralDownconverter residing on this system.
Spectral Downconverter System CAN Master.
Definition: SldcMaster.h:46
A simple wrapper class that makes use of ::pthread_cond_t easier in a C++ world.
Definition: PthreadCond.h:43
void reset()
Reset all modules on all controlled busses via the DIO lines.
std::map< carma::canbus::msgType, std::string > getControls() const
Retrieve a map of CAN controls provided by this class.
unsigned short nodeType
Carma Node Type id type.
Definition: Types.h:66
Carma Quadrature Modulator CAN Device class implementation.
Spectral Line Downconverter LO Control declaration (API #200).
void softReset()
Reset all Xac modules on all controlled busses via the RESET message.
void stop()
Stop the sldc master.
Abstract base class for all CAN Bus devices.
Definition: Device.h:92
Carma Canbus Master class.
Definition: Master.h:110
SpectralDownconverter CAN Device class implementation.
QuadratureModulator & getQuadMod(unsigned short inputNo)
Retrieve a reference to specified QuadMod module.
::carma::switchyard::Switchyard & getSwitchyard()
Retrieve a reference to the switchyard.
virtual ~SldcMaster()
Destructor.
NoiseSource & getNoiseSource()
Retrieve a reference to the NoiseSource module.
SpectralDownconverter Device class implementation (CARMA CANbus API 024).
void start()
Start sldc master in a separate thread.
A simple wrapper class that makes use of ::pthread_mutex_t easier in a C++ world. ...
Definition: PthreadMutex.h:41
Spectral Line Downconverter LO Control module class.
Definition: LoControl.h:36
CAN device implementation for block downconverter (API #4).
CAN Device class declaration for the Block Downconverter (API 4).
SldcMaster(::carma::monitor::SldcSubsystem &sldcMon,::carma::monitor::SignalPathSubsystem &signalPathMon)
Default constructor for emulation.
BlockDownconverter & getGlobalBlockDownconverter()
Retrieve a reference to the global (node 0) block downconverter.