CARMA C++
RxTemperatures.h
Go to the documentation of this file.
1 
11 #ifndef CARMA_ANTENNA_OVRO_RXTEMPERATURES_H
12 #define CARMA_ANTENNA_OVRO_RXTEMPERATURES_H
13 
14 // Carma includes
16 #include "carma/monitor/OvroSubsystem.h"
17 
18 // STL includes
19 #include <map>
20 #include <vector>
21 
22 namespace log4cpp {
23  // Forward dec
24  class Category;
25 } // End namespace log4cpp
26 
27 namespace carma {
28 namespace antenna {
29 namespace ovro {
30 
31 class RxTemperatures : public carma::canbus::devices::XacDevice {
32 public:
33 
40  explicit RxTemperatures( carma::canbus::nodeType node,
42  carma::monitor::OvroSubsystem & ovroSubsys );
43 
47  virtual ~RxTemperatures( );
48 
56  std::map<carma::canbus::msgType, std::string> getHalfSecMonitors() const;
57 
65  std::map<carma::canbus::msgType, std::string> getSlowMonitors() const;
66 
77  void processMsg( carma::canbus::msgType mid,
78  std::vector< carma::canbus::byteType > & data,
79  bool sim);
80 
92 
100  void updateFrameData();
101 
102  // Public control commands and enumerations.
103 
107  enum LoopId { LOOP_1, LOOP_2 };
111  enum OpMode { LOOP_ON, LOOP_OFF, MANUAL };
112 
118  void setTemperature( enum LoopId loop, float temp );
119 
128  void regulateTemperature( enum LoopId loop,
129  enum OpMode mode,
130  float pwr = 0.0 );
131 
140  void setLoopGain( enum LoopId loop, float gain );
141 
150  void setLoopIntegrationConstant( enum LoopId loop, float integration );
151 
160  void setLoopRateConstant( enum LoopId loop, float rate );
161 
171  void setLoopBandwidth( enum LoopId loop, float bandwidth );
172 
177  void writeParametersToEEPROM( );
178 
179 protected:
180 
181  // No protected data of methods.
182 
183 private:
184 
185  // API Id for this device.
186  static const carma::canbus::apiType API_ID = 168;
187 
188  // API version this class was imlemented from
189  static const char API_VERSION = 'B';
190 
191  // Late packet timeout in ms
192  static const double PACKET_LATE_THRESHOLD = 150.0;
193 
194  // Control command message ids.
195  static const carma::canbus::msgType SET_TEMPERATURE = 0x080;
196  static const carma::canbus::msgType REGULATE_TEMPERATURE = 0x081;
197  static const carma::canbus::msgType SET_LOOP_GAIN = 0x082;
198  static const carma::canbus::msgType SET_LOOP_INTEGRATION_CONSTANT = 0x083;
199  static const carma::canbus::msgType SET_LOOP_RATE_CONSTANT = 0x084;
200  static const carma::canbus::msgType SET_LOOP_BANDWIDTH = 0x085;
201  static const carma::canbus::msgType WRITE_PARAMS_TO_EEPROM = 0x08C;
202  // Not a control command
203  static const carma::canbus::msgType LOOP2_COMMAND_OFFSET = 0x006;
204 
205 
206  // Blanking frame message ids.
207  static const carma::canbus::msgType BLANKING_FRAME_PACKET_1 = 0x0E0;
208  static const carma::canbus::msgType BLANKING_FRAME_PACKET_2 = 0x0E1;
209  static const carma::canbus::msgType BLANKING_FRAME_PACKET_3 = 0x0E2;
210  static const carma::canbus::msgType BLANKING_FRAME_PACKET_4 = 0x0E3;
211  static const carma::canbus::msgType BLANKING_FRAME_PACKET_5 = 0x0E4;
212  static const carma::canbus::msgType BLANKING_FRAME_PACKET_6 = 0x0E5;
213  static const carma::canbus::msgType BLANKING_FRAME_PACKET_7 = 0x0E6;
214 
215  // Disallow assignment and copy construction.
216  RxTemperatures( const RxTemperatures & from );
217  RxTemperatures & operator=( const RxTemperatures & from );
218 
219  // Routines to process individual blanking frame CAN packets.
220  // These routines are called internally by processMsg.
221  void processBlankingFramePacket1(
222  std::vector<carma::canbus::byteType> &data);
223  void processBlankingFramePacket2(
224  std::vector<carma::canbus::byteType> &data);
225  void processBlankingFramePacket3(
226  std::vector<carma::canbus::byteType> &data);
227  void processBlankingFramePacket4(
228  std::vector<carma::canbus::byteType> &data);
229  void processBlankingFramePacket5(
230  std::vector<carma::canbus::byteType> &data);
231  void processBlankingFramePacket6(
232  std::vector<carma::canbus::byteType> &data);
233  void processBlankingFramePacket7(
234  std::vector<carma::canbus::byteType> &data);
235 
236  // Routines to produce individual simulated blanking frame
237  // CAN packets. These routines are called by simulateMsg.
238  carma::canbus::Message simBlankingFramePacket1();
239  carma::canbus::Message simBlankingFramePacket2();
240  carma::canbus::Message simBlankingFramePacket3();
241  carma::canbus::Message simBlankingFramePacket4();
242  carma::canbus::Message simBlankingFramePacket5();
243  carma::canbus::Message simBlankingFramePacket6();
244  carma::canbus::Message simBlankingFramePacket7();
245 
246  // Member variables
247  log4cpp::Category &log_; // Reference to system logger.
248  carma::monitor::OvroSubsystem::RxThermalControl & mon_; // Monitor system
249 
250 }; // End class RxTemperatures
251 }}} // End namespace carma::antenna::ovro
252 #endif
Class to encapsulate a CAN message.
Definition: Message.h:21
XacDevice canbus::device class implementation.
Definition: XacDevice.h:37
unsigned short apiType
Carma API id type.
Definition: Types.h:64
unsigned short nodeType
Carma Node Type id type.
Definition: Types.h:66
carma::canbus::devices::XacDevice class declaration.
unsigned short msgType
Carma Message id type.
Definition: Types.h:69
CanOutput interface.
Definition: CanOutput.h:26