CARMA C++
Switchyard.h
1 #ifndef CARMA_SWITCHYARD_SWITCHYARD_H
2 #define CARMA_SWITCHYARD_SWITCHYARD_H
3 
5 
6 #include <map>
7 
8 namespace carma {
9 
10 namespace monitor {
11  class StateMonitorPointEnum;
12  class Switchyard;
13  class Xac;
14 } // namespace monitor
15 
16 namespace switchyard {
17 
18 const carma::canbus::nodeType IFSWITCHYARD_NODE = 1;
19 const carma::canbus::nodeType LOSWITCHYARD_NODE = 2;
20 const carma::canbus::nodeType LLSWITCHYARD_NODE = 3;
21 const carma::canbus::nodeType DCLOSWITCHYARD_NODE = 4;
22 
23 typedef std::map< unsigned short, unsigned short > SwitchMap;
24 
25 class Switchyard : public carma::canbus::devices::XacDevice {
26 public:
27 
28 
29  explicit Switchyard( carma::canbus::nodeType node,
31  carma::monitor::StateMonitorPointEnum & state,
32  carma::monitor::Switchyard & switchyard,
33  carma::monitor::Xac & xac );
34 
35  virtual ~Switchyard( );
36 
37  void setSwitches( const SwitchMap & switchPosMap );
38 
39  carma::canbus::MsgBriefMap getHalfSecMonitors( ) const;
40  carma::canbus::MsgBriefMap getSlowMonitors( ) const;
41 
44  bool sim );
45 
47 
48  void updateFrameData( );
49 
50  static carma::canbus::apiType getApiId( );
51 
52 private:
53 
54  // Prevent copy and assignment
55  Switchyard( const Switchyard & );
56  Switchyard &operator=( const Switchyard &);
57 
58  void processSwitchPosPacket( const carma::canbus::msgType mid,
60  void processBlankingFramePacket6( carma::canbus::DataVector & data );
61  void processBlankingFramePacket7( carma::canbus::DataVector & data );
62 
64  simulateSwitchPosPacket( const carma::canbus::msgType mid );
65  carma::canbus::Message simulateBlankingFramePacket6( );
66  carma::canbus::Message simulateBlankingFramePacket7( );
67 
68  carma::monitor::StateMonitorPointEnum & state_;
69  carma::monitor::Switchyard & switchyard_;
70  carma::monitor::Xac & xac_;
71 
72 }; // class Switchyard
73 
74 }} // namespace carma::switchyard
75 #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
::std::map< ::carma::canbus::msgType,::std::string > MsgBriefMap
Alias for message descriptions keyed by message id.
Definition: Types.h:74
virtual void processMsg(msgType messageId, std::vector< byteType > &data, bool sim)=0
Process a CAN message.
::std::vector< ::carma::canbus::byteType > DataVector
Alias for CAN data.
Definition: Types.h:72
carma::canbus::devices::XacDevice class declaration.
unsigned short msgType
Carma Message id type.
Definition: Types.h:69
CanOutput interface.
Definition: CanOutput.h:26