CARMA C++
Clock.h
Go to the documentation of this file.
1 
14 #ifndef CARMA_CLOCK_CLOCK_H
15 #define CARMA_CLOCK_CLOCK_H
16 
17 // CARMA includes
19 #include "carma/clock/ClockControl.h"
20 #include "carma/corba/corba.h"
21 #include "carma/monitor/MasterClockSubsystem.h"
22 
23 namespace carma {
24 
29 namespace clock {
30 
42 public:
50  carma::monitor::MasterClockSubsystem *masterClockSubsystem);
51 
52  // virtual destructor
53  virtual ~Clock();
54 
59 
60 private:
64  virtual std::map<carma::canbus::msgType, std::string>
65  getControls() const;
66 
70  virtual std::map<carma::canbus::msgType, std::string>
71  getHalfSecMonitors() const;
72 
77  virtual std::map<carma::canbus::msgType, std::string>
78  getSlowMonitors() const;
79 
85  simulateMsg(carma::canbus::msgType messageId);
86 
87  // simulation of CAN messages corresponding to monitor points
88  carma::canbus::Message simulateBlankingFramePacket1();
89  carma::canbus::Message simulateBlankingFramePacket2();
90  carma::canbus::Message simulateBlankingFramePacket3();
91  carma::canbus::Message simulateBlankingFramePacket4();
92  carma::canbus::Message simulateBlankingFramePacket5();
93  carma::canbus::Message simulateBlankingFramePacket6();
94  carma::canbus::Message simulateBlankingFramePacket7();
95  carma::canbus::Message simulateBlankingFramePacket8();
96  carma::canbus::Message simulateBlankingFramePacket9();
97 
103  virtual void processMsg(carma::canbus::msgType messageId,
104  std::vector<carma::canbus::byteType>& data,
105  bool sim);
106 
107  // half-second monitor packet processing routines
113  void processBlankingFramePacket1(std::vector<carma::canbus::byteType> &data);
119  void processBlankingFramePacket2(std::vector<carma::canbus::byteType> &data);
128  void processBlankingFramePacket3(std::vector<carma::canbus::byteType> &data);
135  void processBlankingFramePacket4(std::vector<carma::canbus::byteType> &data);
142  void processBlankingFramePacket5(std::vector<carma::canbus::byteType> &data);
155  void processBlankingFramePacket6(std::vector<carma::canbus::byteType> &data);
163  void processBlankingFramePacket7(std::vector<carma::canbus::byteType> &data);
169  void processBlankingFramePacket8(std::vector<carma::canbus::byteType> &data);
179  void processBlankingFramePacket9(std::vector<carma::canbus::byteType> &data);
180 
181 public:
182 
183  // CORBA control routines
188  void setPpsMode(carma::clock::ppsModeType ppsMode);
189 
195  void setRbMode(carma::clock::rbModeType rbMode);
196 
201  void setGpsSource(carma::clock::gpsSourceType gpsSource);
202 
208  void set10MHzSource(carma::clock::tenMHzSourceType tenMHzSource);
209 
215  void setHbDelay(CORBA::UShort delay, carma::clock::delayRegister reg);
216 
221  void resync10MHzGps(carma::clock::walshSyncType walshSync);
222 
226  void resetRb();
227 
236  void initialize(carma::clock::ppsModeType ppsMode,
237  carma::clock::rbModeType rbMode,
238  carma::clock::gpsSourceType gpsSource,
239  carma::clock::tenMHzSourceType tenMHzSource,
240  carma::clock::walshSyncType walshSync);
241 
242 private:
243 
244  void updateFrameData( );
245 
246  // reference to monitor subsystem
247  carma::monitor::MasterClockSubsystem::Clock *mon_;
248 
249 }; // class Clock
250 
251 } // namespace carma::clock
252 } // namespace carma
253 
254 #endif
Clock(carma::canbus::nodeType node, carma::canbus::CanOutput &io, carma::monitor::MasterClockSubsystem *masterClockSubsystem)
Clock constructor.
void resync10MHzGps(carma::clock::walshSyncType walshSync)
synchronize 1pps from Rubidium oscillator with GPS-derived 1 pps signal
void resetRb()
reset PRS10 Rb Time Standard and resync to primary GPS
Class to encapsulate a CAN message.
Definition: Message.h:21
void set10MHzSource(carma::clock::tenMHzSourceType tenMHzSource)
set 10MHz source to be from the internal Rb oscillator or some external source
XacDevice canbus::device class implementation.
Definition: XacDevice.h:37
void setRbMode(carma::clock::rbModeType rbMode)
set Rb oscillation mode to be free-running or to phase lock to GPS
unsigned short apiType
Carma API id type.
Definition: Types.h:64
unsigned short nodeType
Carma Node Type id type.
Definition: Types.h:66
virtual void initialize()
Initialization hook.
static carma::canbus::apiType getApiId()
return CANbus API
void setPpsMode(carma::clock::ppsModeType ppsMode)
set 1pps to come from GPS or Rb oscillator counter
carma::canbus::devices::XacDevice class declaration.
void setGpsSource(carma::clock::gpsSourceType gpsSource)
set primary GPS source
void setHbDelay(CORBA::UShort delay, carma::clock::delayRegister reg)
set heartbeat delay
unsigned short msgType
Carma Message id type.
Definition: Types.h:69
The Clock class is an instantiation of the carma::canbus::Device class for the Master Clock...
Definition: Clock.h:41
CanOutput interface.
Definition: CanOutput.h:26