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
BasicPacket/BasicPacket.h@6:7c719bcd3047, 2016-08-11 (annotated)
- Committer:
- rba90
- Date:
- Thu Aug 11 02:36:03 2016 +0000
- Revision:
- 6:7c719bcd3047
- Parent:
- 5:dcf7271595af
fix typo mistake where field is overwritten; fix a bug where crc is stored at wrong place; change packet definition for DataBlockPacket
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| rba90 | 0:f32c0e562e9a | 1 | #ifndef BASICPACKET_H_ |
| rba90 | 0:f32c0e562e9a | 2 | #define BASICPACKET_H_ |
| rba90 | 0:f32c0e562e9a | 3 | |
| rba90 | 0:f32c0e562e9a | 4 | #include <stdint.h> |
| rba90 | 0:f32c0e562e9a | 5 | |
| rba90 | 0:f32c0e562e9a | 6 | class BasicPacket |
| rba90 | 0:f32c0e562e9a | 7 | { |
| rba90 | 0:f32c0e562e9a | 8 | private: |
| rba90 | 0:f32c0e562e9a | 9 | // keep those private! |
| rba90 | 0:f32c0e562e9a | 10 | // inherit class should always use public method to access those private |
| rba90 | 0:f32c0e562e9a | 11 | // property |
| rba90 | 5:dcf7271595af | 12 | uint8_t _buffer[8]; |
| rba90 | 0:f32c0e562e9a | 13 | |
| rba90 | 0:f32c0e562e9a | 14 | // verify() function will toggle this variable |
| rba90 | 0:f32c0e562e9a | 15 | // any other modification to internal properties |
| rba90 | 0:f32c0e562e9a | 16 | // will revert this variable to false |
| rba90 | 0:f32c0e562e9a | 17 | bool _isVerified; |
| rba90 | 6:7c719bcd3047 | 18 | |
| rba90 | 6:7c719bcd3047 | 19 | public: |
| rba90 | 6:7c719bcd3047 | 20 | typedef enum |
| rba90 | 6:7c719bcd3047 | 21 | { |
| rba90 | 6:7c719bcd3047 | 22 | L3ControlPacket = 0x0, |
| rba90 | 6:7c719bcd3047 | 23 | L3DataBlockPacket, |
| rba90 | 6:7c719bcd3047 | 24 | } L3Fid_t; |
| rba90 | 0:f32c0e562e9a | 25 | |
| rba90 | 0:f32c0e562e9a | 26 | public: |
| rba90 | 0:f32c0e562e9a | 27 | BasicPacket(); |
| rba90 | 0:f32c0e562e9a | 28 | BasicPacket(uint8_t *data); |
| rba90 | 0:f32c0e562e9a | 29 | ~BasicPacket(); |
| rba90 | 0:f32c0e562e9a | 30 | |
| rba90 | 0:f32c0e562e9a | 31 | public: |
| rba90 | 0:f32c0e562e9a | 32 | // calculate CRC value and write it into CRC field |
| rba90 | 0:f32c0e562e9a | 33 | void generateCrc(); |
| rba90 | 0:f32c0e562e9a | 34 | |
| rba90 | 0:f32c0e562e9a | 35 | // calculate CRC value and compare it with that in CRC field |
| rba90 | 0:f32c0e562e9a | 36 | bool verify(); |
| rba90 | 0:f32c0e562e9a | 37 | |
| rba90 | 0:f32c0e562e9a | 38 | // make a copy of internal buffer |
| rba90 | 0:f32c0e562e9a | 39 | // the user |
| rba90 | 0:f32c0e562e9a | 40 | void serialize(uint8_t *buffer); |
| rba90 | 0:f32c0e562e9a | 41 | |
| rba90 | 0:f32c0e562e9a | 42 | public: |
| rba90 | 0:f32c0e562e9a | 43 | void setFid(uint8_t fid); |
| rba90 | 5:dcf7271595af | 44 | void setSequenceID(uint8_t seqid); |
| rba90 | 5:dcf7271595af | 45 | void setSourceID(uint8_t sid); |
| rba90 | 5:dcf7271595af | 46 | void setDestinationID(uint8_t did); |
| rba90 | 5:dcf7271595af | 47 | void setField(uint8_t idx, uint8_t data); |
| rba90 | 0:f32c0e562e9a | 48 | |
| rba90 | 0:f32c0e562e9a | 49 | uint8_t getFid(); |
| rba90 | 5:dcf7271595af | 50 | uint8_t getSequenceID(); |
| rba90 | 5:dcf7271595af | 51 | uint8_t getSourceID(); |
| rba90 | 5:dcf7271595af | 52 | uint8_t getDestinationID(); |
| rba90 | 5:dcf7271595af | 53 | uint8_t getField(uint8_t idx); |
| rba90 | 0:f32c0e562e9a | 54 | uint8_t getCrc(); |
| rba90 | 2:f4f46b04ab8a | 55 | |
| rba90 | 2:f4f46b04ab8a | 56 | #ifdef _DEBUG |
| rba90 | 2:f4f46b04ab8a | 57 | public: |
| rba90 | 2:f4f46b04ab8a | 58 | void unit_test(); |
| rba90 | 2:f4f46b04ab8a | 59 | #endif |
| rba90 | 0:f32c0e562e9a | 60 | }; |
| rba90 | 0:f32c0e562e9a | 61 | |
| rba90 | 0:f32c0e562e9a | 62 | #endif |