RoboidControl-cpp/NameMsg.cpp
2025-01-08 14:57:16 +01:00

51 lines
1.3 KiB
C++

#include "NameMsg.h"
#include <string.h>
namespace Passer {
namespace Control {
NameMsg::NameMsg(const char *buffer) {
unsigned char ix = 1; // first byte is msg id
this->networkId = buffer[ix++];
this->thingId = buffer[ix++];
this->nameLength = buffer[ix++];
this->name = &buffer[ix]; // dangerous! name should not be used anymore after
// buffer has been re-used...
}
NameMsg::NameMsg(unsigned char networkId, Thing *thing) {
this->networkId = networkId;
this->thingId = thing->id;
if (thing->name == nullptr)
this->nameLength = 0;
else
this->nameLength = strlen(thing->name);
this->name = thing->name; // dangerous!
}
// NameMsg::NameMsg(unsigned char networkId, unsigned char thingId,
// const char *name, unsigned char nameLength) {
// this->networkId = networkId;
// this->thingId = thingId;
// this->name = name;
// this->nameLength = nameLength;
// }
unsigned char NameMsg::Serialize(char *buffer) {
if (this->nameLength == 0 || this->name == nullptr)
return 0;
unsigned char ix = 0;
buffer[ix++] = this->id;
buffer[ix++] = this->networkId;
buffer[ix++] = this->thingId;
buffer[ix++] = this->nameLength;
for (int nameIx = 0; nameIx < this->nameLength; nameIx++)
buffer[ix++] = this->name[nameIx];
return ix;
}
} // namespace Control
} // namespace Passer