|
|
@@ -33,23 +33,25 @@ Detailed description of class: DataFrame
|
|
|
|
|
|
\code{.c}
|
|
|
void main(){
|
|
|
- uint8_t data[24];
|
|
|
+ uint8_t data[24];
|
|
|
|
|
|
- DataFrame packet(data_packet, sizeof(data_packet),
|
|
|
-TYPE_HEADER_1B, CRC_ON);
|
|
|
+ DataFrame packet(data_packet, sizeof(data_packet), TYPE_HEADER_1B,
|
|
|
+CRC_ON);
|
|
|
|
|
|
- packet.AddUint8(0xAB);
|
|
|
- packet.AddUint16(65874);
|
|
|
- packet.AddInt8(-45874);
|
|
|
- packet.AddUint32(0x12345678);
|
|
|
- packet.AddInt32(-0xA2345678);
|
|
|
+ packet.AddUint8(0xAB);
|
|
|
+ packet.AddUint16(65874);
|
|
|
+ packet.AddInt8(-45874);
|
|
|
+ packet.AddUint32(0x12345678);
|
|
|
+ packet.AddInt32(-0xA2345678);
|
|
|
|
|
|
- packet.AddFloat(0.265);
|
|
|
- packet.AddFloat(-3.1415);
|
|
|
+ packet.AddFloat(0.265);
|
|
|
+ packet.AddFloat(-3.1415);
|
|
|
|
|
|
- // resulted length is 23B (20B of data, 1B breamble, 1B lenfth byte,
|
|
|
-1B CRC) int data_length = packet.Commit(); uint8_t* frame = packet.GetFrame();
|
|
|
- // frame[1] contain packet length. The real value is 20
|
|
|
+ // resulted length is 23B (20B of data, 1B breamble, 1B lenfth byte,1B
|
|
|
+CRC) int data_length = packet.Commit(); if (packet.getError() == ERROR_NONE) {
|
|
|
+ // frame[1] contain packet length. The real value is 20
|
|
|
+ uint8_t* frame = packet.GetFrame();
|
|
|
+ }
|
|
|
}
|
|
|
\endcode
|
|
|
|
|
|
@@ -112,6 +114,8 @@ DataFrame::DataFrame(uint8_t *frame, uint8_t size, DataframeType_t type,
|
|
|
}
|
|
|
|
|
|
void DataFrame::Init(void) {
|
|
|
+ _error = ERROR_NONE;
|
|
|
+
|
|
|
if (_type == TYPE_HEADER_1B) {
|
|
|
_frame[0] = HEADER_CHAR1;
|
|
|
_frame[1] = 0; // length of packet
|
|
|
@@ -133,6 +137,7 @@ void DataFrame::Init(void) {
|
|
|
|
|
|
bool DataFrame::AddUint8(uint8_t d) {
|
|
|
if ((_length + 1) >= _capacity) {
|
|
|
+ _error = ERROR_OVERFLOW;
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
@@ -143,6 +148,7 @@ bool DataFrame::AddUint8(uint8_t d) {
|
|
|
|
|
|
bool DataFrame::AddUint16(uint16_t d) {
|
|
|
if ((_length + 2) >= _capacity) {
|
|
|
+ _error = ERROR_OVERFLOW;
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
@@ -154,6 +160,7 @@ bool DataFrame::AddUint16(uint16_t d) {
|
|
|
|
|
|
bool DataFrame::AddUint32(uint32_t d) {
|
|
|
if ((_length + 4) >= _capacity) {
|
|
|
+ _error = ERROR_OVERFLOW;
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
@@ -173,6 +180,7 @@ bool DataFrame::AddInt32(int32_t d) { return this->AddUint32((uint32_t)d); }
|
|
|
|
|
|
bool DataFrame::AddFloat(float f) {
|
|
|
if ((_length + 4) >= _capacity) {
|
|
|
+ _error = ERROR_OVERFLOW;
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
@@ -214,4 +222,6 @@ uint8_t DataFrame::Commit(void) {
|
|
|
return _length;
|
|
|
}
|
|
|
|
|
|
+DataframeError_t DataFrame::getError(void) { return _error; }
|
|
|
+
|
|
|
uint8_t *DataFrame::GetFrame(void) { return _frame; }
|