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.
Diff: MessageBuilder.cpp
- Revision:
- 1:dc87724abce8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MessageBuilder.cpp Thu Apr 11 09:51:28 2019 +0000
@@ -0,0 +1,77 @@
+#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;
+ }
+}