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 TYPED_MESSAGE_H
00033 #define TYPED_MESSAGE_H
00034
00035 #ifdef ROS
00036
00037 #include "simple_message/simple_message.h"
00038 #include "simple_message/byte_array.h"
00039
00040 #endif
00041
00042 #ifdef MOTOPLUS
00043
00044 #include "simple_message.h"
00045 #include "byte_array.h"
00046
00047 #endif
00048
00049
00050 namespace industrial
00051 {
00052 namespace typed_message
00053 {
00054
00058
00065 class TypedMessage : public industrial::simple_serialize::SimpleSerialize
00066 {
00067
00068
00069
00070
00071
00072
00073 public:
00079 virtual bool init(industrial::simple_message::SimpleMessage & msg)=0;
00080
00085 virtual void init()=0;
00086
00092 virtual bool toRequest(industrial::simple_message::SimpleMessage & msg)
00093 {
00094 industrial::byte_array::ByteArray data;
00095 data.load(*this);
00096 return msg.init(this->getMessageType(),
00097 industrial::simple_message::CommTypes::SERVICE_REQUEST,
00098 industrial::simple_message::ReplyTypes::INVALID, data);
00099 }
00100
00106 virtual bool toReply(industrial::simple_message::SimpleMessage & msg,
00107 industrial::simple_message::ReplyType reply)
00108 {
00109 industrial::byte_array::ByteArray data;
00110 data.load(*this);
00111 return msg.init(this->getMessageType(),
00112 industrial::simple_message::CommTypes::SERVICE_REPLY,
00113 reply, data);
00114 }
00120 virtual bool toTopic(industrial::simple_message::SimpleMessage & msg)
00121 {
00122 industrial::byte_array::ByteArray data;
00123 data.load(*this);
00124 return msg.init(this->getMessageType(),
00125 industrial::simple_message::CommTypes::TOPIC,
00126 industrial::simple_message::ReplyTypes::INVALID, data);
00127 }
00133 int getMessageType() const
00134 {
00135 return message_type_;
00136 }
00137
00138 protected:
00139
00140
00141 void setMessageType(int MESSAGE_TYPE = industrial::simple_message::StandardMsgTypes::INVALID)
00142 {
00143 this->message_type_ = MESSAGE_TYPE;
00144 }
00145
00146 private:
00147
00152 int message_type_;
00153
00154 };
00155
00156 }
00157 }
00158
00159 #endif