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.
Dependents: LoRaBaseStation LoRaTerminal
Diff: BasicPacket/BasicPacket.cpp
- Revision:
- 0:f32c0e562e9a
- Child:
- 1:dda08634a9be
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/BasicPacket/BasicPacket.cpp Wed Jun 29 01:37:59 2016 +0000
@@ -0,0 +1,95 @@
+#include "BasicPacket.h"
+#include "crc.h"
+#include <string>
+
+BasicPacket::BasicPacket()
+{
+ // init variables
+ memset(_buffer, 0x0, sizeof(_buffer));
+ _isVerified = false;
+}
+
+BasicPacket::BasicPacket(uint8_t *data)
+{
+ // the user takes the responsibility of making sure
+ // they have sufficient memory for data buffer
+
+ // copy data to internal buffer
+ memcpy(_buffer, data, sizeof(_buffer));
+
+ // set verify flag
+ _isVerified = false;
+}
+
+BasicPacket::~BasicPacket()
+{
+
+}
+
+void BasicPacket::generateCrc()
+{
+ _buffer[3] = crc8(_buffer, 3);
+}
+
+bool BasicPacket::verify()
+{
+ return _buffer[3] == crc8(_buffer, 3);
+}
+
+void BasicPacket::serialize(uint8_t *buffer)
+{
+ memcpy(buffer, _buffer, sizeof(_buffer));
+}
+
+void BasicPacket::setFid(uint8_t fid)
+{
+ // clear upper 4 bits
+ _buffer[0] &= 0x0f;
+
+ // set bits
+ _buffer[0] |= fid << 4;
+}
+
+void BasicPacket::setField1(uint8_t field)
+{
+ // clear lower 4 bits
+ _buffer[0] &= 0xf0;
+
+ // set bits
+ _buffer[0] |= field & 0x0f;
+}
+
+void BasicPacket::setField2(uint8_t field)
+{
+ _buffer[1] = field;
+}
+
+void BasicPacket::setField3(uint8_t field)
+{
+ _buffer[2] = field;
+}
+
+uint8_t BasicPacket::getFid()
+{
+ return (_buffer[0] & 0xf0) >> 4;
+}
+
+uint8_t BasicPacket::getField1()
+{
+ return _buffer[0] & 0x0f;
+}
+
+uint8_t BasicPacket::getField2()
+{
+ return _buffer[1];
+}
+
+uint8_t BasicPacket::getField3()
+{
+ return _buffer[2];
+}
+
+uint8_t BasicPacket::getCrc()
+{
+ return _buffer[3];
+}