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
00001 #include "MessageBuilder.h" 00002 #include "mbed.h" 00003 00004 MessageBuilder::MessageBuilder() { 00005 reset(); 00006 } 00007 00008 MessageBuilder::~MessageBuilder() { 00009 // TODO Auto-generated destructor stub 00010 } 00011 00012 char MessageBuilder::add(const void* data, size_t len) { 00013 if (available() >= len) { 00014 memcpy(_pointer, data, len); 00015 _pointer += len; 00016 return 0; 00017 } else { 00018 return 1; 00019 } 00020 } 00021 00022 void MessageBuilder::reset() { 00023 message[0] = 0x06; 00024 message[1] = 0x85; 00025 _pointer = &message[2]; 00026 } 00027 00028 // Note: if message size grow beyond 32 bytes, return "size_t" insted, because it 00029 // is the most appropriate type for "sizeof" operator. Now, unsgined char is used 00030 // for memory economy. 00031 unsigned char MessageBuilder::available() { 00032 return &message[max_len - 1] - _pointer + 1; 00033 } 00034 00035 unsigned char MessageBuilder::length() { 00036 return _pointer - &message[0]; 00037 } 00038 00039 char MessageBuilder::add(float data) { 00040 if (available() >= sizeof(data)) { 00041 memcpy(_pointer, &data, sizeof(data)); 00042 _pointer += sizeof(data); 00043 return 0; 00044 } else { 00045 return 1; 00046 } 00047 } 00048 00049 char MessageBuilder::add(int data) { 00050 if (available() >= sizeof(data)) { 00051 memcpy(_pointer, &data, sizeof(data)); 00052 _pointer += sizeof(data); 00053 return 0; 00054 } else { 00055 return 1; 00056 } 00057 } 00058 00059 char MessageBuilder::add(char data) { 00060 if (available() >= sizeof(data)) { 00061 memcpy(_pointer, &data, sizeof(data)); 00062 _pointer += sizeof(data); 00063 return 0; 00064 } else { 00065 return 1; 00066 } 00067 } 00068 00069 char MessageBuilder::add(unsigned int data) { 00070 if (available() >= sizeof(data)) { 00071 memcpy(_pointer, &data, sizeof(data)); 00072 _pointer += sizeof(data); 00073 return 0; 00074 } else { 00075 return 1; 00076 } 00077 }
Generated on Wed Jul 13 2022 18:10:25 by
