123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 |
- #ifndef oHOMEPLUG_SOURCE
- #define oHOMEPLUG_SOURCE
- #include <cstring>
- #include "../classes/ohomeplug.hpp"
- #include "../classes/omemory.hpp"
- #include "../tools/endian.h"
- size_t ohomeplug::HeaderLength () const
- {
- return (oethernet::HeaderLength () + sizeof (this->mversion) + sizeof (this->mmessage));
- }
- void * ohomeplug::ExportHeader (void * memory) const
- {
- memory = oethernet::ExportHeader (memory);
- memory = omemory::encode (memory, &this->mversion, sizeof (this->mversion));
- memory = omemory::encode (memory, &this->mmessage, sizeof (this->mmessage));
- if (this->mversion == 1)
- {
- memory = omemory::encode (memory, &this->mfragment, sizeof (this->mfragment));
- }
- return (memory);
- }
- void const * ohomeplug::ImportHeader (void const * memory)
- {
- memory = oethernet::ImportHeader (memory);
- memory = omemory::decode (memory, &this->mversion, sizeof (this->mversion));
- memory = omemory::decode (memory, &this->mmessage, sizeof (this->mmessage));
- if (this->mversion == 1)
- {
- memory = omemory::decode (memory, &this->mfragment, sizeof (this->mfragment));
- }
- return (memory);
- }
- byte ohomeplug::MessageVersion () const
- {
- return (this->mversion);
- }
- ohomeplug & ohomeplug::SetMessageVersion (byte version)
- {
- this->mversion = version;
- return (*this);
- }
- uint16_t ohomeplug::MessageType () const
- {
- return (LE16TOH (this->mmessage));
- }
- char const * ohomeplug::MessageTypeString (void) const
- {
- static char buffer [sizeof (this->mmessage) * 3];
- omemory::hexdecode (&this->mmessage, sizeof (this->mmessage), buffer, sizeof (buffer));
- return (buffer);
- }
- ohomeplug & ohomeplug::SetMessageType (uint16_t message)
- {
- this->mmessage = HTOLE16 (message);
- return (*this);
- }
- bool ohomeplug::IsMessageType (uint8_t version, uint16_t message)
- {
- if (ohomeplug::MessageVersion () != version)
- {
- return (false);
- }
- if (ohomeplug::MessageType () != message)
- {
- return (false);
- }
- return (true);
- }
- uint16_t ohomeplug::MessageFragment (void) const
- {
- return (LE16TOH (this->mfragment));
- }
- char const * ohomeplug::MessageFragmentString (void) const
- {
- static char buffer [sizeof (this->mfragment) * 3];
- omemory::hexdecode (&this->mfragment, sizeof (this->mfragment), buffer, sizeof (buffer));
- return (buffer);
- }
- ohomeplug & ohomeplug::SetMessageFragment (uint16_t fragment)
- {
- this->mfragment = HTOLE16 (fragment);
- return (*this);
- }
- ohomeplug & ohomeplug::SetHeader (void const * memory)
- {
- ohomeplug::ImportHeader(memory);
- return (*this);
- }
- ohomeplug::ohomeplug ()
- {
- oethernet::SetProtocol (oHOMEPLUG_MTYPE);
- ohomeplug::SetMessageVersion (oHOMEPLUG_MMV);
- ohomeplug::SetMessageType (oHOMEPLUG_MMTYPE);
- ohomeplug::SetMessageFragment (oHOMEPLUG_FMI);
- return;
- }
- ohomeplug::~ohomeplug ()
- {
- return;
- }
- #endif
|