47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
#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
|