pepe

Dependencies:   mbed Matrix

Committer:
FJMS
Date:
Sun Nov 24 18:37:46 2019 +0000
Revision:
2:06b7789c7da0
Parent:
0:a7324f51348d
pepe;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
PedroMartins96 0:a7324f51348d 1 #include "MessageBuilder.h"
PedroMartins96 0:a7324f51348d 2 #include "mbed.h"
PedroMartins96 0:a7324f51348d 3
PedroMartins96 0:a7324f51348d 4 MessageBuilder::MessageBuilder() {
PedroMartins96 0:a7324f51348d 5 reset();
PedroMartins96 0:a7324f51348d 6 }
PedroMartins96 0:a7324f51348d 7
PedroMartins96 0:a7324f51348d 8 MessageBuilder::~MessageBuilder() {
PedroMartins96 0:a7324f51348d 9 // TODO Auto-generated destructor stub
PedroMartins96 0:a7324f51348d 10 }
PedroMartins96 0:a7324f51348d 11
PedroMartins96 0:a7324f51348d 12 char MessageBuilder::add(const void* data, size_t len) {
PedroMartins96 0:a7324f51348d 13 if (available() >= len) {
PedroMartins96 0:a7324f51348d 14 memcpy(_pointer, data, len);
PedroMartins96 0:a7324f51348d 15 _pointer += len;
PedroMartins96 0:a7324f51348d 16 return 0;
PedroMartins96 0:a7324f51348d 17 } else {
PedroMartins96 0:a7324f51348d 18 return 1;
PedroMartins96 0:a7324f51348d 19 }
PedroMartins96 0:a7324f51348d 20 }
PedroMartins96 0:a7324f51348d 21
PedroMartins96 0:a7324f51348d 22 void MessageBuilder::reset() {
PedroMartins96 0:a7324f51348d 23 message[0] = 0x06;
PedroMartins96 0:a7324f51348d 24 message[1] = 0x85;
PedroMartins96 0:a7324f51348d 25 _pointer = &message[2];
PedroMartins96 0:a7324f51348d 26 }
PedroMartins96 0:a7324f51348d 27
PedroMartins96 0:a7324f51348d 28 // Note: if message size grow beyond 32 bytes, return "size_t" insted, because it
PedroMartins96 0:a7324f51348d 29 // is the most appropriate type for "sizeof" operator. Now, unsgined char is used
PedroMartins96 0:a7324f51348d 30 // for memory economy.
PedroMartins96 0:a7324f51348d 31 unsigned char MessageBuilder::available() {
PedroMartins96 0:a7324f51348d 32 return &message[max_len - 1] - _pointer + 1;
PedroMartins96 0:a7324f51348d 33 }
PedroMartins96 0:a7324f51348d 34
PedroMartins96 0:a7324f51348d 35 unsigned char MessageBuilder::length() {
PedroMartins96 0:a7324f51348d 36 return _pointer - &message[0];
PedroMartins96 0:a7324f51348d 37 }
PedroMartins96 0:a7324f51348d 38
PedroMartins96 0:a7324f51348d 39 char MessageBuilder::add(float data) {
PedroMartins96 0:a7324f51348d 40 if (available() >= sizeof(data)) {
PedroMartins96 0:a7324f51348d 41 memcpy(_pointer, &data, sizeof(data));
PedroMartins96 0:a7324f51348d 42 _pointer += sizeof(data);
PedroMartins96 0:a7324f51348d 43 return 0;
PedroMartins96 0:a7324f51348d 44 } else {
PedroMartins96 0:a7324f51348d 45 return 1;
PedroMartins96 0:a7324f51348d 46 }
PedroMartins96 0:a7324f51348d 47 }
PedroMartins96 0:a7324f51348d 48
PedroMartins96 0:a7324f51348d 49 char MessageBuilder::add(int data) {
PedroMartins96 0:a7324f51348d 50 if (available() >= sizeof(data)) {
PedroMartins96 0:a7324f51348d 51 memcpy(_pointer, &data, sizeof(data));
PedroMartins96 0:a7324f51348d 52 _pointer += sizeof(data);
PedroMartins96 0:a7324f51348d 53 return 0;
PedroMartins96 0:a7324f51348d 54 } else {
PedroMartins96 0:a7324f51348d 55 return 1;
PedroMartins96 0:a7324f51348d 56 }
PedroMartins96 0:a7324f51348d 57 }
PedroMartins96 0:a7324f51348d 58
PedroMartins96 0:a7324f51348d 59 char MessageBuilder::add(char data) {
PedroMartins96 0:a7324f51348d 60 if (available() >= sizeof(data)) {
PedroMartins96 0:a7324f51348d 61 memcpy(_pointer, &data, sizeof(data));
PedroMartins96 0:a7324f51348d 62 _pointer += sizeof(data);
PedroMartins96 0:a7324f51348d 63 return 0;
PedroMartins96 0:a7324f51348d 64 } else {
PedroMartins96 0:a7324f51348d 65 return 1;
PedroMartins96 0:a7324f51348d 66 }
PedroMartins96 0:a7324f51348d 67 }
PedroMartins96 0:a7324f51348d 68
PedroMartins96 0:a7324f51348d 69 char MessageBuilder::add(unsigned int data) {
PedroMartins96 0:a7324f51348d 70 if (available() >= sizeof(data)) {
PedroMartins96 0:a7324f51348d 71 memcpy(_pointer, &data, sizeof(data));
PedroMartins96 0:a7324f51348d 72 _pointer += sizeof(data);
PedroMartins96 0:a7324f51348d 73 return 0;
PedroMartins96 0:a7324f51348d 74 } else {
PedroMartins96 0:a7324f51348d 75 return 1;
PedroMartins96 0:a7324f51348d 76 }
PedroMartins96 0:a7324f51348d 77 }