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
ControPacket/ControlPacket.cpp@2:f4f46b04ab8a, 2016-06-30 (annotated)
- 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?
| User | Revision | Line number | New 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 |