Layer 3 PDU packet constructor class
Dependents: LoRaBaseStation LoRaTerminal
DataBlockPacket/DataBlockPacket.cpp
- Committer:
- rba90
- Date:
- 2016-08-11
- Revision:
- 6:7c719bcd3047
- Parent:
- 5:dcf7271595af
- Child:
- 7:d752922def7d
File content as of revision 6:7c719bcd3047:
#include "DataBlockPacket.h" #ifdef _DEBUG #include <cassert> #endif DataBlockPacket::DataBlockPacket() { setFid(0x2); } DataBlockPacket::DataBlockPacket(uint8_t *data) : BasicPacket(data) { setFid(0x2); } DataBlockPacket::~DataBlockPacket() { } void DataBlockPacket::setSourceType(uint8_t type) { uint8_t block = getField(0); // clear upper 4 bits block &= 0x0f; // set bits block |= type << 4; // write back setField(0, block); } void DataBlockPacket::setPayloadType(uint8_t bid) { uint8_t block = getField(0); // clear lower 4 bits block &= 0xf0; // set bits block |= bid & 0x0f; // write back setField(0, block); } void DataBlockPacket::setData(uint8_t idx, uint8_t data) { setField(idx + 1, data); } uint8_t DataBlockPacket::getSourceType() { return (getField(0) & 0xf0) >> 4; } uint8_t DataBlockPacket::getPayloadType() { return getField(0) & 0x0f; } uint8_t DataBlockPacket::getData(uint8_t idx) { return getField(idx + 1); } #ifdef _DEBUG void DataBlockPacket::unit_test() { // value test DataBlockPacket testObject; testObject.setBlockID(0x1); testObject.setDataBlock0(0xee); testObject.setDataBlock1(0xff); assert(0x1 == testObject.getBlockID()); assert(0xee == testObject.getDataBlock0()); assert(0xff == testObject.getDataBlock1()); assert(false == testObject.verify()); testObject.generateCrc(); assert(true == testObject.verify()); assert(0x4e == testObject.getCrc()); // value test 2 uint8_t testString[] = { 0x21, 0xee, 0xff, 0x4e }; DataBlockPacket testObject2(testString); assert(0x1 == testObject2.getBlockID()); assert(0xee == testObject2.getDataBlock0()); assert(0xff == testObject2.getDataBlock1()); assert(true == testObject2.verify()); testObject2.generateCrc(); assert(true == testObject2.verify()); assert(0x4e == testObject2.getCrc()); } #endif