Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
MessageBuilder.cpp
- Committer:
- fabiofaria
- Date:
- 2019-04-11
- Revision:
- 1:dc87724abce8
File content as of revision 1:dc87724abce8:
#include "MessageBuilder.h"
#include "mbed.h"
MessageBuilder::MessageBuilder() {
reset();
}
MessageBuilder::~MessageBuilder() {
// TODO Auto-generated destructor stub
}
char MessageBuilder::add(const void* data, size_t len) {
if (available() >= len) {
memcpy(_pointer, data, len);
_pointer += len;
return 0;
} else {
return 1;
}
}
void MessageBuilder::reset() {
message[0] = 0x06;
message[1] = 0x85;
_pointer = &message[2];
}
// Note: if message size grow beyond 32 bytes, return "size_t" insted, because it
// is the most appropriate type for "sizeof" operator. Now, unsgined char is used
// for memory economy.
unsigned char MessageBuilder::available() {
return &message[max_len - 1] - _pointer + 1;
}
unsigned char MessageBuilder::length() {
return _pointer - &message[0];
}
char MessageBuilder::add(float data) {
if (available() >= sizeof(data)) {
memcpy(_pointer, &data, sizeof(data));
_pointer += sizeof(data);
return 0;
} else {
return 1;
}
}
char MessageBuilder::add(int data) {
if (available() >= sizeof(data)) {
memcpy(_pointer, &data, sizeof(data));
_pointer += sizeof(data);
return 0;
} else {
return 1;
}
}
char MessageBuilder::add(char data) {
if (available() >= sizeof(data)) {
memcpy(_pointer, &data, sizeof(data));
_pointer += sizeof(data);
return 0;
} else {
return 1;
}
}
char MessageBuilder::add(unsigned int data) {
if (available() >= sizeof(data)) {
memcpy(_pointer, &data, sizeof(data));
_pointer += sizeof(data);
return 0;
} else {
return 1;
}
}