ENEL400 / L3PDU

Dependents:   LoRaBaseStation LoRaTerminal

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?

UserRevisionLine numberNew 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