CARMA C++
TelemetryCommand.h
Go to the documentation of this file.
1 
12 #ifndef CARMA_BIMA_TELEMETRYCOMMAND_H
13 #define CARMA_BIMA_TELEMETRYCOMMAND_H
14 
15 #include <vector>
16 
17 #include "carma/canbus/Types.h"
18 
19 #define TELEMETRYIPQ "telemetry.ipq"
20 
21 #define IFIPQ "if.ipq"
22 #define TELEMETRYCAN c
23 #define TELEMETRYLONG l
24 #define TELEMETRYSHORT s
25 
26 
27 namespace carma
28 {
29  namespace antenna
30  {
31  namespace bima
32  {
33  class TelemetryCommand
34  {
35 
36  public:
37  typedef union { char c; short s; long l; float f; double d; unsigned char bytes[8]; } PayloadType;
38 
39  private:
40  unsigned short addr_;
41  PayloadType payload_;
42  unsigned char dataType_;
43  carma::canbus::msgType msgType_;
44 
45  public:
46 
47  void setAddr( unsigned short addr ) { addr_ = addr; }
48 
49  void setPayload( char payload ) { payload_.c = payload; }
50  void setPayload( short payload ) { payload_.s = payload; }
51  void setPayload( long payload ) { payload_.l = payload; }
52  void setPayload( float payload ) { payload_.f = payload; }
53  void setPayload( double payload ) { payload_.d = payload; }
54  void setPayload( std::vector<carma::canbus::byteType> &payload )
55  {
56  payload_.bytes[0] = payload[0];
57  payload_.bytes[1] = payload[1];
58  payload_.bytes[2] = payload[2];
59  payload_.bytes[3] = payload[3];
60  payload_.bytes[4] = payload[4];
61  payload_.bytes[5] = payload[5];
62  payload_.bytes[6] = payload[6];
63  payload_.bytes[7] = payload[7];
64  }
65 
66  void setDataType( unsigned char dataType ) { dataType_ = dataType; }
67  void setMsgType( carma::canbus::msgType msgType ) { msgType_ = msgType; }
68 
69  void set( unsigned short addr, char payload, time_t timer = 0 )
70  {
71  setAddr( addr );
72  setDataType( 'c' );
73  setPayload( payload );
74  }
75 
76  void set( unsigned short addr, short payload )
77  {
78  setAddr( addr );
79  setDataType( 's' );
80  setPayload( payload );
81  }
82 
83  void set( unsigned short addr, long payload )
84  {
85  setAddr( addr );
86  setDataType( 'l' );
87  setPayload( payload );
88  }
89 
90  void set( unsigned short addr, float payload )
91  {
92  setAddr( addr );
93  setDataType( 'f' );
94  setPayload( payload );
95  }
96 
97  void set( unsigned short addr, double payload )
98  {
99  setAddr( addr );
100  setDataType( 'd' );
101  setPayload( payload );
102  }
103 
104  void set( std::vector<carma::canbus::byteType> payload )
105  {
106  setDataType( 'v' );
107  setPayload( payload );
108  }
109 
110  unsigned short getAddr( void ) { return addr_; }
111 
112  void getPayload( char &payload ) { payload = payload_.c; }
113  void getPayload( short &payload ) { payload = payload_.s; }
114  void getPayload( long &payload ) { payload = payload_.l; }
115  void getPayload( float &payload ) { payload = payload_.f; }
116  void getPayload( double &payload ) { payload = payload_.d; }
117 
118  void getPayload( std::vector<carma::canbus::byteType> &data )
119  {
120  data.resize(0);
121  data.push_back( payload_.bytes[0] );
122  data.push_back( payload_.bytes[1] );
123  data.push_back( payload_.bytes[2] );
124  data.push_back( payload_.bytes[3] );
125  data.push_back( payload_.bytes[4] );
126  data.push_back( payload_.bytes[5] );
127  data.push_back( payload_.bytes[6] );
128  data.push_back( payload_.bytes[7] );
129  }
130 
131  unsigned char getDataType( void ) { return dataType_; }
132  unsigned char getMsgType( void ) { return msgType_; }
133 
134  };
135  }
136  }
137 }
138 
139 
140 
141 #endif // CARMA_BIMA_TELEMETRYCOMMAND_H
Declarations of carma::canbus types.
unsigned short msgType
Carma Message id type.
Definition: Types.h:69