The Modified Dot Library for SX1272

This version has been restoring as initial changes.

Verify the following dependencies:

Mbed-os 5.11 libmdot 3.2.0 for Mbed OS5.11

Committer:
Jenkins@KEILDM1.dc.multitech.prv
Date:
Wed May 01 09:18:46 2019 -0500
Revision:
67:a9d4d7cdeca1
Parent:
66:baa0f3116f1d
Child:
68:5f787643e7d7
mdot-library revision 3.2.1 and mbed-os revision mbed-os-5.11.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 1 #ifndef _FRAGMENTATION_SESSION_H
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 2 #define _FRAGMENTATION_SESSION_H
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 3 #ifdef FOTA
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 4
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 5 #include "mbed.h"
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 6 #include "FragmentationMath.h"
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 7 #include "mDot.h"
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 8 #include "WriteFile.h"
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 9
Jenkins@KEILDM1.dc.multitech.prv 67:a9d4d7cdeca1 10 #define MAX_PARITY 300
Jenkins@KEILDM1.dc.multitech.prv 67:a9d4d7cdeca1 11 #define FRAG_OFFSET 3
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 12 #define MULTICAST_SESSIONS 3
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 13
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 14 class FragmentationSession {
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 15
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 16 public:
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 17 FragmentationSession(mDot* dot, std::vector<uint8_t>* ret, bool* filled, uint32_t* delay);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 18 ~FragmentationSession();
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 19 void processCmd(uint8_t* payload, uint8_t size);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 20 void reset();
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 21
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 22 private:
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 23
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 24 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 25 uint8_t Padding;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 26 uint8_t FragmentSize;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 27 uint16_t NumberOfFragments;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 28 } FragmentationSessionOpts_t;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 29
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 30 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 31 bool reset;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 32 bool failed;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 33 uint8_t fragMatrix;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 34 uint8_t blockAckDelay;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 35 uint8_t total_sessions;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 36 uint8_t mcGroupBitMask;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 37 uint8_t current_session;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 38 uint16_t index;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 39 uint16_t last_frag_num;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 40 uint32_t total_frags;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 41 FragmentationMath* math;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 42 FragmentationSessionOpts_t opts;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 43 } fragGroup;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 44
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 45
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 46 enum FragResult {
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 47 FRAG_OK,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 48 FRAG_SIZE_INCORRECT,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 49 FRAG_FLASH_WRITE_ERROR,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 50 FRAG_NO_MEMORY,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 51 FRAG_COMPLETE
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 52 };
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 53
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 54 enum FragCmd {
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 55 PACKAGE_VERSION_FRAG,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 56 FRAG_STATUS,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 57 FRAG_SESSION_SETUP,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 58 FRAG_SESSION_DELETE,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 59 DATA_FRAGMENT = 0x08,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 60 CHECKSUM = 0x80
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 61 };
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 62
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 63 void reset(uint16_t num);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 64 void upgradeFile(uint8_t fragIndex);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 65 bool process_frame(uint8_t fragIndex,uint16_t index, uint8_t buffer[], size_t size);
Jenkins@KEILDM1.dc.multitech.prv 67:a9d4d7cdeca1 66
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 67 mDot* _dot;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 68 WriteFile* _fh;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 69 fragGroup fg[MULTICAST_SESSIONS];
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 70
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 71 uint8_t ans;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 72 bool* _filled;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 73 uint32_t* _delay;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 74 uint8_t fragIndex;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 75 std::vector<uint8_t>* _ret;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 76 std::string _org_class;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 77 };
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 78 #endif
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 79 #endif // _FRAGMENTATION_SESSION_H