ENEL400 / L3PDU

Dependents:   LoRaBaseStation LoRaTerminal

Committer:
rba90
Date:
Thu Jun 30 09:14:54 2016 +0000
Revision:
2:f4f46b04ab8a
Parent:
0:f32c0e562e9a
Child:
5:dcf7271595af
Add unit test cases for each class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rba90 0:f32c0e562e9a 1 #include "ControlPacket.h"
rba90 0:f32c0e562e9a 2
rba90 2:f4f46b04ab8a 3 #ifdef _DEBUG
rba90 2:f4f46b04ab8a 4 #include <cassert>
rba90 2:f4f46b04ab8a 5 #endif
rba90 2:f4f46b04ab8a 6
rba90 0:f32c0e562e9a 7 ControlPacket::ControlPacket()
rba90 0:f32c0e562e9a 8 : BasicPacket()
rba90 0:f32c0e562e9a 9 {
rba90 2:f4f46b04ab8a 10 setFid(0x0);
rba90 0:f32c0e562e9a 11 }
rba90 0:f32c0e562e9a 12
rba90 0:f32c0e562e9a 13 ControlPacket::ControlPacket(uint8_t *data)
rba90 0:f32c0e562e9a 14 : BasicPacket(data)
rba90 0:f32c0e562e9a 15 {
rba90 2:f4f46b04ab8a 16 setFid(0x0);
rba90 0:f32c0e562e9a 17 }
rba90 0:f32c0e562e9a 18
rba90 0:f32c0e562e9a 19 ControlPacket::~ControlPacket()
rba90 0:f32c0e562e9a 20 {
rba90 0:f32c0e562e9a 21 }
rba90 0:f32c0e562e9a 22
rba90 0:f32c0e562e9a 23 void ControlPacket::setSequenceID(uint8_t seqid)
rba90 0:f32c0e562e9a 24 {
rba90 0:f32c0e562e9a 25 setField1(seqid);
rba90 0:f32c0e562e9a 26 }
rba90 0:f32c0e562e9a 27
rba90 0:f32c0e562e9a 28 void ControlPacket::setSourceID(uint8_t sid)
rba90 0:f32c0e562e9a 29 {
rba90 0:f32c0e562e9a 30 uint8_t pattern = getField2();
rba90 0:f32c0e562e9a 31
rba90 0:f32c0e562e9a 32 // clear upper 4 bits
rba90 0:f32c0e562e9a 33 pattern &= 0x0f;
rba90 0:f32c0e562e9a 34
rba90 0:f32c0e562e9a 35 // set bits
rba90 0:f32c0e562e9a 36 pattern |= sid << 4;
rba90 0:f32c0e562e9a 37
rba90 0:f32c0e562e9a 38 // write back to bit field
rba90 0:f32c0e562e9a 39 setField2(pattern);
rba90 0:f32c0e562e9a 40 }
rba90 0:f32c0e562e9a 41
rba90 0:f32c0e562e9a 42 void ControlPacket::setDestinationID(uint8_t did)
rba90 0:f32c0e562e9a 43 {
rba90 0:f32c0e562e9a 44 uint8_t pattern = getField2();
rba90 0:f32c0e562e9a 45
rba90 0:f32c0e562e9a 46 // clear lower 4 bits
rba90 0:f32c0e562e9a 47 pattern &= 0xf0;
rba90 0:f32c0e562e9a 48
rba90 0:f32c0e562e9a 49 // set bits
rba90 0:f32c0e562e9a 50 pattern |= did & 0x0f;
rba90 0:f32c0e562e9a 51
rba90 0:f32c0e562e9a 52 // write back to bit field
rba90 0:f32c0e562e9a 53 setField2(pattern);
rba90 0:f32c0e562e9a 54 }
rba90 0:f32c0e562e9a 55
rba90 0:f32c0e562e9a 56 void ControlPacket::setCommand(uint8_t cmd)
rba90 0:f32c0e562e9a 57 {
rba90 0:f32c0e562e9a 58 uint8_t pattern = getField3();
rba90 0:f32c0e562e9a 59
rba90 0:f32c0e562e9a 60 // clear upper 4 bits
rba90 0:f32c0e562e9a 61 pattern &= 0x0f;
rba90 0:f32c0e562e9a 62
rba90 0:f32c0e562e9a 63 // set bits
rba90 0:f32c0e562e9a 64 pattern |= cmd << 4;
rba90 0:f32c0e562e9a 65
rba90 0:f32c0e562e9a 66 // write back to bit field
rba90 0:f32c0e562e9a 67 setField3(pattern);
rba90 0:f32c0e562e9a 68 }
rba90 0:f32c0e562e9a 69
rba90 0:f32c0e562e9a 70 uint8_t ControlPacket::getSequenceID()
rba90 0:f32c0e562e9a 71 {
rba90 0:f32c0e562e9a 72 return getField1();
rba90 0:f32c0e562e9a 73 }
rba90 0:f32c0e562e9a 74
rba90 0:f32c0e562e9a 75 uint8_t ControlPacket::getSourceID()
rba90 0:f32c0e562e9a 76 {
rba90 0:f32c0e562e9a 77 return (getField2() & 0xf0) >> 4;
rba90 0:f32c0e562e9a 78 }
rba90 0:f32c0e562e9a 79
rba90 0:f32c0e562e9a 80 uint8_t ControlPacket::getDestinationID()
rba90 0:f32c0e562e9a 81 {
rba90 0:f32c0e562e9a 82 return getField2() & 0x0f;
rba90 0:f32c0e562e9a 83 }
rba90 0:f32c0e562e9a 84
rba90 0:f32c0e562e9a 85 uint8_t ControlPacket::getCommand()
rba90 0:f32c0e562e9a 86 {
rba90 0:f32c0e562e9a 87 return (getField3() & 0xf0) >> 4;
rba90 0:f32c0e562e9a 88 }
rba90 2:f4f46b04ab8a 89
rba90 2:f4f46b04ab8a 90 #ifdef _DEBUG
rba90 2:f4f46b04ab8a 91 void ControlPacket::unit_test()
rba90 2:f4f46b04ab8a 92 {
rba90 2:f4f46b04ab8a 93 // value test
rba90 2:f4f46b04ab8a 94 ControlPacket testObject;
rba90 2:f4f46b04ab8a 95
rba90 2:f4f46b04ab8a 96 testObject.setSequenceID(0x1);
rba90 2:f4f46b04ab8a 97 testObject.setSourceID(0x2);
rba90 2:f4f46b04ab8a 98 testObject.setDestinationID(0x3);
rba90 2:f4f46b04ab8a 99 testObject.setCommand(0x4);
rba90 2:f4f46b04ab8a 100
rba90 2:f4f46b04ab8a 101 assert(0x0 == testObject.getFid());
rba90 2:f4f46b04ab8a 102 assert(0x1 == testObject.getSequenceID());
rba90 2:f4f46b04ab8a 103 assert(0x2 == testObject.getSourceID());
rba90 2:f4f46b04ab8a 104 assert(0x3 == testObject.getDestinationID());
rba90 2:f4f46b04ab8a 105 assert(0x4 == testObject.getCommand());
rba90 2:f4f46b04ab8a 106
rba90 2:f4f46b04ab8a 107 assert(false == testObject.verify());
rba90 2:f4f46b04ab8a 108 testObject.generateCrc();
rba90 2:f4f46b04ab8a 109 assert(0x3d == testObject.getCrc());
rba90 2:f4f46b04ab8a 110
rba90 2:f4f46b04ab8a 111 // value test 2
rba90 2:f4f46b04ab8a 112 uint8_t testString[] = { 0x01, 0x23, 0x40, 0x3d };
rba90 2:f4f46b04ab8a 113 ControlPacket testObject2(testString);
rba90 2:f4f46b04ab8a 114
rba90 2:f4f46b04ab8a 115 assert(0x0 == testObject2.getFid());
rba90 2:f4f46b04ab8a 116 assert(0x1 == testObject2.getSequenceID());
rba90 2:f4f46b04ab8a 117 assert(0x2 == testObject2.getSourceID());
rba90 2:f4f46b04ab8a 118 assert(0x3 == testObject2.getDestinationID());
rba90 2:f4f46b04ab8a 119 assert(0x4 == testObject2.getCommand());
rba90 2:f4f46b04ab8a 120
rba90 2:f4f46b04ab8a 121 assert(true == testObject2.verify());
rba90 2:f4f46b04ab8a 122 testObject2.generateCrc();
rba90 2:f4f46b04ab8a 123 assert(0x3d == testObject2.getCrc());
rba90 2:f4f46b04ab8a 124 }
rba90 2:f4f46b04ab8a 125 #endif