00001 #include <messaging.h> 00002 00003 #ifndef LATENCY_MESSAGES_H_ 00004 #define LATENCY_MESSAGES_H_ 00005 00006 namespace Latency { 00007 00008 class Command: public Message { 00009 public: 00010 Command(); 00011 Command(Message * message); 00012 00013 void setGroup(uint8_t groupid); 00014 uint8_t getGroup(); 00015 00016 void setAddress(uint8_t address); 00017 uint8_t getAddress(); 00018 00019 static uint8_t getType(Message * message); 00020 protected: 00021 Data field_data[5]; 00022 uint8_t type; 00023 uint8_t param; 00024 uint8_t group; 00025 uint8_t address; 00026 uint16_t value; 00027 }; 00028 00029 namespace Commands { 00030 00031 class Joinable: public Command { 00032 public: 00033 Joinable(); 00034 Joinable(Message * msg); 00035 00036 void setUniqueID(uint16_t uid); 00037 uint16_t getUniqueID(); 00038 }; 00039 00040 class Join: public Joinable { 00041 public: 00042 Join(); 00043 Join(Message * msg); 00044 }; 00045 00046 class JoinRequest: public Joinable { 00047 public: 00048 JoinRequest(); 00049 JoinRequest(Message *); 00050 }; 00051 00052 class JoinAck: public Joinable { 00053 public: 00054 JoinAck(); 00055 JoinAck(Message *); 00056 }; 00057 00058 class UpdateParam: public Command { 00059 public: 00060 UpdateParam(); 00061 UpdateParam(Message *); 00062 00063 void setParameter(uint8_t param); 00064 uint8_t getParameter(); 00065 00066 void setValue(uint16_t value); 00067 uint16_t getValue(); 00068 }; 00069 00070 class StartExecution: public Command { 00071 public: 00072 StartExecution(); 00073 StartExecution(Message *); 00074 }; 00075 00076 class StopExecutionRequest: public Command { 00077 public: 00078 StopExecutionRequest(); 00079 StopExecutionRequest(Message *); 00080 }; 00081 00082 class StopExecution: public Command { 00083 public: 00084 StopExecution(); 00085 StopExecution(Message *); 00086 }; 00087 00088 } // Command namespace 00089 00090 class Payload: public Message { 00091 public: 00092 Payload(); 00093 Payload(Message *); 00094 00095 void setGroup(uint8_t groupid); 00096 uint8_t getGroup(); 00097 00098 void setAddress(uint8_t address); 00099 uint8_t getAddress(); 00100 00101 void setSendTime(int64_t time); 00102 int64_t getSendTime(); 00103 00104 void setPayloadLength(uint16_t length); 00105 uint16_t getPayloadLength(); 00106 00107 void setPayload(const void * payload); 00108 const void * getPayload(); 00109 private: 00110 Data field_data[4]; 00111 int64_t send_time; 00112 uint8_t group; 00113 uint8_t address; 00114 }; 00115 00116 class Report: public Message { 00117 public: 00118 Report(); 00119 Report(Message *); 00120 00121 void setGroup(uint8_t groupid); 00122 uint8_t getGroup(); 00123 00124 void setAddress(uint8_t address); 00125 uint8_t getAddress(); 00126 00127 void setLength(uint16_t length); 00128 uint16_t getLength(); 00129 00130 void setTxTimes(const int64_t * times); 00131 int64_t * getTxTimes(); 00132 00133 void setRxTimes(const int64_t * times); 00134 int64_t * getRxTimes(); 00135 private: 00136 Data field_data[4]; 00137 uint8_t group; 00138 uint8_t address; 00139 const int64_t * rx_times; 00140 const int64_t * tx_times; 00141 }; 00142 00143 } // Latency namespace 00144 00145 #endif /* LATENCY_MESSAGES_H_ */