00001 00006 /***************************************************************************** 00007 ** Ifdefs 00008 *****************************************************************************/ 00009 00010 #ifndef mm_messages_HEADERS_HPP_ 00011 #define mm_messages_HEADERS_HPP_ 00012 00013 /***************************************************************************** 00014 ** Includes 00015 *****************************************************************************/ 00016 00017 #include <string> 00018 #include "message.hpp" 00019 00020 /***************************************************************************** 00021 ** Namespaces 00022 *****************************************************************************/ 00023 00024 namespace mm_messages { 00025 00026 /***************************************************************************** 00027 ** Definitions 00028 *****************************************************************************/ 00029 00030 struct PacketHeader { 00031 static const unsigned int size; 00032 PacketHeader(const unsigned int& signature=0xaa55aa55) : signature(signature) {} 00033 unsigned int signature; 00034 }; 00035 00036 struct SubPacketHeader { 00037 static const unsigned int size; 00038 SubPacketHeader(const int& id=-1, const unsigned int& length = 0); 00039 int id; 00040 unsigned int length; 00041 }; 00042 00043 /***************************************************************************** 00044 ** Serialisations 00045 *****************************************************************************/ 00046 00047 template<> 00048 struct Message<PacketHeader> { 00050 static void encode(const PacketHeader& header, ByteArray& buffer); 00051 static PacketHeader decode(const unsigned char* buffer, const unsigned int& size); 00052 }; 00053 00054 template<> 00055 struct Message<SubPacketHeader> { 00057 static void encode(const SubPacketHeader& header, ByteArray& buffer); 00058 static SubPacketHeader decode(const unsigned char* buffer, const unsigned int& size); 00059 }; 00060 00061 } // namespace mm_messages 00062 00063 #endif /* mm_messages_HEADERS_HPP_ */