CARMA C++
AntennaIF.h
Go to the documentation of this file.
1 
12 #ifndef CARMA_ANTENNA_COMMON_ANTENNAIF_H
13 #define CARMA_ANTENNA_COMMON_ANTENNAIF_H
14 
15 // Carma includes
17 #include "carma/canbus/Types.h"
18 
19 // Forward dec
20 namespace log4cpp {
21  class Category;
22 } // End namespace log4cpp
23 
24 namespace carma
25 {
26 
27  // Forward dec
28  namespace monitor {
29  class AntennaIF;
30  class StateMonitorPointEnum;
31  class Xac;
32  } // End namespace monitor
33 
34  namespace antenna
35  {
36  namespace common
37  {
38 
46 class AntennaIF :
48 {
49 public:
50 
58  AntennaIF(
61  carma::monitor::StateMonitorPointEnum & state,
62  carma::monitor::AntennaIF &ifMon,
63  carma::monitor::Xac &xacMon);
64 
68  ~AntennaIF();
69 
78 
87 
100  bool sim);
101 
112 
113  // Public control commands.
114 
121  void selectBand( unsigned short band );
122 
128  void setIFtotalAttenuation(float atten);
129 
137  void setIFlevel(float pow);
138 
143  void setInputIFattenuator(float inputAtten);
144 
149  void setOutputIFattenuator(float outputAtten);
150 
155  void queryTotalPower();
156 
163  void setOutputPowerToPreset();
164 
170  virtual void simTotalPower( unsigned int nsamps );
171 
172  static const carma::canbus::msgType IF_LEFT_POL_NODE_ID = 1;
173  static const carma::canbus::msgType IF_RIGHT_POL_NODE_ID = 2;
174 
175 protected:
176 
177  void updateFrameData();
178 
179  // A little different than your typical CAN Device class impl...
180  // Below are blankingFrameHooks that must be overloaded by a relative.
181  // They are called in addition to processBlankingFrameX
182  virtual void blankingFrameHook1( float ifoutTotPower, float pamTemp );
183  virtual void blankingFrameHook2( float attenSet,
184  unsigned char pamStat,
185  unsigned char ifSwitchStat,
186  unsigned char laserStat,
187  unsigned char nErrors );
188  virtual void blankingFrameHook3( float laserOpticalPow,
189  float laserTemp );
190  virtual void blankingFrameHook4( float inputAttenSet,
191  float outputAttenSet );
192 
193  virtual void processTotalPowerResponse(
194  carma::canbus::DataVector &data) = 0;
195  virtual void processFastTotalPowerPacket(
196  carma::canbus::DataVector & data) = 0;
197  virtual void processSwitchStatusOnChange(
198  carma::canbus::DataVector &data) = 0;
199  virtual void processPAMStatusOnChange(carma::canbus::DataVector &data) = 0;
200 
201  virtual void processFastChannel1Packet( carma::canbus::DataVector &data ) = 0;
202  virtual void processFastChannel2Packet( carma::canbus::DataVector &data ) = 0;
203 
204 private:
205 
206  // Disallow assignment and copy construction.
207  AntennaIF(const AntennaIF &);
208  AntennaIF &operator=(const AntennaIF &);
209 
210  // Routines to process individual blanking frame CAN packets.
211  // These routines are called by processMsg.
212  void processBlankingFramePacket1(carma::canbus::DataVector &data);
213  void processBlankingFramePacket2(carma::canbus::DataVector &data);
214  void processBlankingFramePacket3(carma::canbus::DataVector &data);
215  void processBlankingFramePacket4(carma::canbus::DataVector &data);
216  void processBlankingFramePacket5(carma::canbus::DataVector &data);
217 
218  void processLogMsg( carma::canbus::DataVector &data );
219 
220  // Routines to produce individual simulated blanking frame CAN packets.
221  // These routines are called by simulateMsg.
222  carma::canbus::Message simBlankingFramePacket1();
223  carma::canbus::Message simBlankingFramePacket2();
224  carma::canbus::Message simBlankingFramePacket3();
225  carma::canbus::Message simBlankingFramePacket4();
226  carma::canbus::Message simBlankingFramePacket5();
227 
228  // Member variables
229  log4cpp::Category & log_;
230  carma::monitor::StateMonitorPointEnum & state_;
231  carma::monitor::AntennaIF & ifMon_;
232  carma::monitor::Xac & xacMon_;
233 
234 }; // End class carma::antenna::common::AntennaIF
235 }}} // End namespace carma::antenna::common
236 #endif
void setInputIFattenuator(float inputAtten)
Set input IF attenuator.
void setOutputPowerToPreset()
Set output power to preset.
Declarations of carma::canbus types.
Base Antenna IF CAN module device class.
Definition: AntennaIF.h:46
Class to encapsulate a CAN message.
Definition: Message.h:21
void setOutputIFattenuator(float outputAtten)
Set output IF attenuator.
carma::canbus::MsgBriefMap getHalfSecMonitors() const
Retrieve a map of this devices half second monitor points.
void setIFtotalAttenuation(float atten)
Set IF total attenuation.
carma::canbus::MsgBriefMap getSlowMonitors() const
Return a map of this devices slow monitor points.
XacDevice canbus::device class implementation.
Definition: XacDevice.h:37
void setIFlevel(float pow)
Set IF level.
void queryTotalPower()
Query Total Power.
unsigned short nodeType
Carma Node Type id type.
Definition: Types.h:66
::std::map< ::carma::canbus::msgType,::std::string > MsgBriefMap
Alias for message descriptions keyed by message id.
Definition: Types.h:74
AntennaIF(carma::canbus::nodeType node, carma::canbus::CanOutput &io, carma::monitor::StateMonitorPointEnum &state, carma::monitor::AntennaIF &ifMon, carma::monitor::Xac &xacMon)
Constructor.
::std::vector< ::carma::canbus::byteType > DataVector
Alias for CAN data.
Definition: Types.h:72
virtual void simTotalPower(unsigned int nsamps)
Internally create simulated total power vector.
carma::canbus::devices::XacDevice class declaration.
carma::canbus::Message simulateMsg(carma::canbus::msgType mid)
Produce a simulated CAN message for a given msgType.
void selectBand(unsigned short band)
Select band Select a particular band as an input to the PAM, by setting the position of the IF switch...
unsigned short msgType
Carma Message id type.
Definition: Types.h:69
CanOutput interface.
Definition: CanOutput.h:26
void processMsg(carma::canbus::msgType mid, carma::canbus::DataVector &data, bool sim)
Process a CAN message addressed from the AntennaIF module.
void updateFrameData()
Update device or monitor data on frame timescale...