#include "BinaryMsg.h" namespace RoboidControl { BinaryMsg::BinaryMsg(unsigned char networkId, Thing* thing) { this->networkId = networkId; this->thingId = thing->id; this->thing = thing; unsigned char ix = BinaryMsg::length; this->dataLength = this->thing->GenerateBinary(this->data, &ix); } BinaryMsg::BinaryMsg(char* buffer) { unsigned char ix = 1; this->networkId = buffer[ix++]; this->thingId = buffer[ix++]; this->dataLength = buffer[ix++]; char* data = new char[this->dataLength]; for (int i = 0; i < this->dataLength; i++) data[i] = buffer[ix++]; this->data = data; } BinaryMsg::~BinaryMsg() { delete[] this->data; } unsigned char BinaryMsg::Serialize(char* buffer) { // unsigned char ix = this->length; // this->dataLength = this->thing->GenerateBinary(buffer, &ix); if (this->dataLength <= 0) // in this case, no data is actually sent return 0; #if defined(DEBUG) std::cout << "Send BinaryMsg [" << (int)this->networkId << "/" << (int)this->thingId << "] " << (int)this->dataLength << std::endl; #endif unsigned char ix = 0; buffer[ix++] = this->id; buffer[ix++] = this->networkId; buffer[ix++] = this->thingId; buffer[ix++] = this->dataLength; return this->length + this->dataLength; } } // namespace RoboidControl