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:
- 5:dcf7271595af
- Parent:
- 3:35e5a721f198
- Child:
- 6:7c719bcd3047
--- a/BasicPacket/BasicPacket.cpp Wed Jul 13 11:55:37 2016 +0000
+++ b/BasicPacket/BasicPacket.cpp Mon Aug 08 11:10:00 2016 +0000
@@ -6,6 +6,8 @@
#include <cassert>
#endif
+#define CRC_BASE_IDX 2
+
BasicPacket::BasicPacket()
{
// init variables
@@ -46,7 +48,7 @@
}
else
{
- return _buffer[3] == crc8(_buffer, 3);
+ return _buffer[7] == crc8(_buffer, 7);
}
}
@@ -67,29 +69,46 @@
_isVerified = false;
}
-void BasicPacket::setField1(uint8_t field)
+void BasicPacket::setSequenceID(uint8_t seqid)
{
// clear lower 4 bits
_buffer[0] &= 0xf0;
// set bits
- _buffer[0] |= field & 0x0f;
+ _buffer[0] |= seqid & 0x0f;
// set verify flag
_isVerified = false;
}
-void BasicPacket::setField2(uint8_t field)
+void BasicPacket::setSourceID(uint8_t sid)
{
- _buffer[1] = field;
+ // clear upper 4 bits
+ _buffer[1] &= 0x0f;
+
+ // set bits
+ _buffer[1] |= sid << 4;
// set verify flag
_isVerified = false;
}
-void BasicPacket::setField3(uint8_t field)
+void BasicPacket::setDestinationID(uint8_t did)
{
- _buffer[2] = field;
+ // clear lower 4 bits
+ _buffer[1] = 0xf0;
+
+ // set bits
+ _buffer[1] |= did & 0x0f;
+
+ // set verify flag
+ _isVerified = false;
+}
+
+void BasicPacket::setField(uint8_t idx, uint8_t data)
+{
+ // set payload based on index
+ _buffer[CRC_BASE_IDX + idx] = data;
// set verify flag
_isVerified = false;
@@ -100,30 +119,35 @@
return (_buffer[0] & 0xf0) >> 4;
}
-uint8_t BasicPacket::getField1()
+uint8_t BasicPacket::getSequenceID()
{
return _buffer[0] & 0x0f;
}
-uint8_t BasicPacket::getField2()
+uint8_t BasicPacket::getSourceID()
{
- return _buffer[1];
+ return (_buffer[1] & 0xf0) >> 4;
}
-uint8_t BasicPacket::getField3()
+uint8_t BasicPacket::getDestinationID()
{
- return _buffer[2];
+ return _buffer[1] & 0x0f;
+}
+
+uint8_t BasicPacket::getField(uint8_t idx)
+{
+ return _buffer[CRC_BASE_IDX + idx];
}
uint8_t BasicPacket::getCrc()
{
if (_isVerified)
{
- return _buffer[3];
+ return _buffer[7];
}
else
{
- return crc8(_buffer, 3);
+ return crc8(_buffer, 7);
}
}