CARMA C++
Tiltmeter.h
Go to the documentation of this file.
1 
10 #ifndef CARMA_ANTENNA_OVRO_TILTMETER_H
11 #define CARMA_ANTENNA_OVRO_TILTMETER_H
12 
14 #include "carma/canbus/Types.h"
15 #include "carma/monitor/OvroSubsystem.h"
16 #include "carma/services/Angle.h"
17 
18 #include <memory>
19 
20 namespace log4cpp {
21  // Forward dec
22  class Category;
23 } // End namespace log4cpp
24 
25 namespace carma {
26 namespace antenna {
27 namespace ovro {
28 
33 class Tiltmeter : public carma::canbus::devices::XacDevice {
34 public:
35 
42  Tiltmeter(
45  carma::monitor::OvroSubsystem & mon,
46  unsigned short antNo );
47 
51  virtual ~Tiltmeter();
52 
59 
66 
74  std::map<carma::canbus::msgType, std::string> getHalfSecMonitors() const;
75 
83  std::map<carma::canbus::msgType, std::string> getSlowMonitors() const;
84 
95  std::vector<carma::canbus::byteType> &data,
96  bool sim);
97 
108 
112  void updateFrameData();
113 
114  // Public Control Commands.
119  void setTemperature(float temp);
120 
124  enum OpMode {LOOP_ON, LOOP_OFF, MANUAL};
125 
131  void regulateTemperature(OpMode opMode, float pwrFract);
132 
139  void setLoopGain(float gain);
140 
146  void setLoopIntegrationConstant(float loopInteg);
147 
153  void setLoopRateConstant(float rateConst);
154 
160  void setLoopBandwidth(float bw);
161 
166 
167 private:
168 
169  // Disallow assignment and copy construction.
170  Tiltmeter(const Tiltmeter &);
171  Tiltmeter &operator=(const Tiltmeter &);
172 
173  // Routines to process individual blanking frame CAN packets.
174  // These routines are called by processMsg.
175  void processBlankingFramePacket1(
176  std::vector<carma::canbus::byteType> &data);
177  void processBlankingFramePacket2(
178  std::vector<carma::canbus::byteType> &data);
179  void processBlankingFramePacket3(
180  std::vector<carma::canbus::byteType> &data);
181  void processBlankingFramePacket4(
182  std::vector<carma::canbus::byteType> &data);
183  void processBlankingFramePacket5(
184  std::vector<carma::canbus::byteType> &data);
185  void processBlankingFramePacket6(
186  std::vector<carma::canbus::byteType> &data);
187 
188  // Routines to produce individual simulated blanking frame
189  // CAN packets. These routines are called by simulateMsg.
190  carma::canbus::Message simBlankingFramePacket1();
191  carma::canbus::Message simBlankingFramePacket2();
192  carma::canbus::Message simBlankingFramePacket3();
193  carma::canbus::Message simBlankingFramePacket4();
194  carma::canbus::Message simBlankingFramePacket5();
195  carma::canbus::Message simBlankingFramePacket6();
196 
197  struct Shared;
198 
199  // Member variables
200  unsigned short antennaNo_;
201  log4cpp::Category &log_; // Reference to the system logger
202  carma::monitor::TiltmeterModule &mon_;
203  ::std::auto_ptr< Shared > shared_;
204 
205 
206 }; // End class Tiltmeter
207 }}} // End namespace carma::antenna::ovro
208 #endif
209 
void updateFrameData()
Update Frame Data.
carma::canbus::Message simulateMsg(carma::canbus::msgType mid)
Produce a simulated CAN message for a given msgType.
carma::services::Angle getMostRecentLeftRightTilt() const
Get most recent left-right tilt measurement.
void setLoopRateConstant(float rateConst)
Set loop rate constant.
Declarations of carma::canbus types.
Tiltmeter device class.
Definition: Tiltmeter.h:34
Class to encapsulate a CAN message.
Definition: Message.h:21
Representation of an angle, return values are always modulo 2PI radians.
void setLoopGain(float gain)
Set loop gain.
XacDevice canbus::device class implementation.
Definition: XacDevice.h:37
void setLoopBandwidth(float bw)
Set loop bandwidth.
void writeLoopParametersToEEPROM()
Write loop parameters to EEPROM.
unsigned short nodeType
Carma Node Type id type.
Definition: Types.h:66
virtual ~Tiltmeter()
Destructor.
carma::services::Angle getMostRecentAftForwardTilt() const
Get most recent aft-forward tilt measurement.
void regulateTemperature(OpMode opMode, float pwrFract)
Regulate temperature.
The Angle class can represent any angle in any units.
Definition: Angle.h:38
void setTemperature(float temp)
Set temperature of the tiltmeter.
void processMsg(carma::canbus::msgType mid, std::vector< carma::canbus::byteType > &data, bool sim)
Process a CAN message addressed to the CryoCompressor module.
std::map< carma::canbus::msgType, std::string > getSlowMonitors() const
Return a map of this devices slow monitor points.
std::map< carma::canbus::msgType, std::string > getHalfSecMonitors() const
Retrieve a map of this devices half second monitor points.
carma::canbus::devices::XacDevice class declaration.
unsigned short msgType
Carma Message id type.
Definition: Types.h:69
void setLoopIntegrationConstant(float loopInteg)
Set loop integration constant.
Tiltmeter(carma::canbus::nodeType node, carma::canbus::CanOutput &io, carma::monitor::BimaSubsystem &bmon)
Constructor.
CanOutput interface.
Definition: CanOutput.h:26
OpMode
Enumeration for Thermal control operation mode.
Definition: Tiltmeter.h:112