Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef SIMPLE_MSG_H
00033 #define SIMPLE_MSG_H
00034
00035 #ifndef FLATHEADERS
00036 #include "simple_message/simple_serialize.h"
00037 #include "simple_message/byte_array.h"
00038 #include "simple_message/shared_types.h"
00039 #else
00040 #include "simple_serialize.h"
00041 #include "byte_array.h"
00042 #include "shared_types.h"
00043 #endif
00044
00045
00046 namespace industrial
00047 {
00048
00049 namespace simple_message
00050 {
00051
00056 namespace StandardMsgTypes
00057 {
00058 enum StandardMsgType
00059 {
00060 INVALID = 0,
00061 PING = 1,
00062
00063
00064
00065 JOINT_POSITION = 10,
00066 JOINT = 10,
00067 READ_INPUT = 20,
00068 WRITE_OUTPUT = 21,
00069
00070 JOINT_TRAJ_PT = 11,
00071 JOINT_TRAJ = 12,
00072 STATUS = 13,
00073 JOINT_TRAJ_PT_FULL = 14,
00074 JOINT_FEEDBACK = 15,
00075
00076
00077
00078
00079
00080 SWRI_MSG_BEGIN = 1000,
00081 MOTOMAN_MSG_BEGIN = 2000
00082 };
00083 }
00084 typedef StandardMsgTypes::StandardMsgType StandardMsgType;
00085
00089 namespace CommTypes
00090 {
00091 enum CommType
00092 {
00093 INVALID = 0,
00094 TOPIC = 1,
00095 SERVICE_REQUEST = 2,
00096 SERVICE_REPLY = 3
00097 };
00098 }
00099 typedef CommTypes::CommType CommType;
00100
00105 namespace ReplyTypes
00106 {
00107 enum ReplyType
00108 {
00109 INVALID = 0,
00110 SUCCESS = 1,
00111 FAILURE = 2
00112 };
00113 }
00114 typedef ReplyTypes::ReplyType ReplyType;
00115
00116
00117
00160 class SimpleMessage
00161 {
00162
00163
00164 public:
00168 SimpleMessage();
00169
00173 ~SimpleMessage(void);
00184 bool init(int msgType, int commType, int replyCode,
00185 industrial::byte_array::ByteArray &data );
00186
00196 bool init(int msgType, int commType, int replyCode);
00197
00206 bool init(industrial::byte_array::ByteArray & msg);
00207
00214 void toByteArray(industrial::byte_array::ByteArray & msg);
00215
00221 static unsigned int getHeaderSize() { return SimpleMessage::HEADER_SIZE; };
00222
00228 static unsigned int getLengthSize() { return SimpleMessage::LENGTH_SIZE; };
00229
00235 int getMessageType() {return this->message_type_;};
00236
00242 int getCommType() {return this->comm_type_;};
00243
00249 int getReplyCode() {return this->reply_code_;};
00250
00256 int getMsgLength() {return this->getHeaderSize() + this->data_.getBufferSize();};
00257
00263 int getDataLength() {return this->data_.getBufferSize();};
00264
00270 industrial::byte_array::ByteArray & getData() {return this->data_;};
00271
00278 bool validateMessage();
00279
00280
00281
00282 private:
00283
00287 industrial::shared_types::shared_int message_type_;
00288
00292 industrial::shared_types::shared_int comm_type_;
00293
00297 industrial::shared_types::shared_int reply_code_;
00298
00302 industrial::byte_array::ByteArray data_;
00303
00307 static const unsigned int HEADER_SIZE = sizeof(industrial::shared_types::shared_int) +
00308 sizeof(industrial::shared_types::shared_int) +
00309 sizeof(industrial::shared_types::shared_int);
00310
00314 static const unsigned int LENGTH_SIZE = sizeof(industrial::shared_types::shared_int);
00315
00321 void setMessageType(int msgType) {this->message_type_ = msgType;};
00322
00328 void setCommType(int commType) {this->comm_type_ = commType;};
00329
00335 void setReplyCode(int replyCode) {this->reply_code_ = replyCode;};
00336
00342 void setData(industrial::byte_array::ByteArray & data);
00343 };
00344
00345 }
00346 }
00347
00348 #endif //SIMPLE_MSG_