Wenkai Gong / libmDot-mbed5-UNSWDot
Committer:
Jenkins@KEILDM1.dc.multitech.prv
Date:
Thu Aug 29 08:32:27 2019 -0500
Revision:
68:5f787643e7d7
Parent:
67:a9d4d7cdeca1
Child:
69:e22889c7eaa9
mdot-library revision 3.2.2-19-g285e497 and mbed-os revision mbed-os-5.13.4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 1 /**********************************************************************
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 2 * COPYRIGHT 2018 MULTI-TECH SYSTEMS, INC.
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 3 *
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 4 * ALL RIGHTS RESERVED BY AND FOR THE EXCLUSIVE BENEFIT OF
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 5 * MULTI-TECH SYSTEMS, INC.
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 6 *
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 7 * MULTI-TECH SYSTEMS, INC. - CONFIDENTIAL AND PROPRIETARY
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 8 * INFORMATION AND/OR TRADE SECRET.
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 9 *
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 10 * NOTICE: ALL CODE, PROGRAM, INFORMATION, SCRIPT, INSTRUCTION,
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 11 * DATA, AND COMMENT HEREIN IS AND SHALL REMAIN THE CONFIDENTIAL
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 12 * INFORMATION AND PROPERTY OF MULTI-TECH SYSTEMS, INC.
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 13 * USE AND DISCLOSURE THEREOF, EXCEPT AS STRICTLY AUTHORIZED IN A
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 14 * WRITTEN AGREEMENT SIGNED BY MULTI-TECH SYSTEMS, INC. IS PROHIBITED.
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 15 *
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 16 ***********************************************************************/
Jenkins@KEILDM1.dc.multitech.prv 68:5f787643e7d7 17
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 18 #ifndef _FRAGMENTATION_SESSION_H
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 19 #define _FRAGMENTATION_SESSION_H
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 20 #ifdef FOTA
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 21
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 22 #include "mbed.h"
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 23 #include "FragmentationMath.h"
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 24 #include "mDot.h"
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 25 #include "WriteFile.h"
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 26
Jenkins@KEILDM1.dc.multitech.prv 67:a9d4d7cdeca1 27 #define MAX_PARITY 300
Jenkins@KEILDM1.dc.multitech.prv 67:a9d4d7cdeca1 28 #define FRAG_OFFSET 3
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 29 #define MULTICAST_SESSIONS 3
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 30
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 31 class FragmentationSession {
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 32
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 33 public:
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 34 FragmentationSession(mDot* dot, std::vector<uint8_t>* ret, bool* filled, uint32_t* delay);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 35 ~FragmentationSession();
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 36 void processCmd(uint8_t* payload, uint8_t size);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 37 void reset();
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 38
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 39 private:
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 40
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 41 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 42 uint8_t Padding;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 43 uint8_t FragmentSize;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 44 uint16_t NumberOfFragments;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 45 } FragmentationSessionOpts_t;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 46
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 47 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 48 bool reset;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 49 bool failed;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 50 uint8_t fragMatrix;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 51 uint8_t blockAckDelay;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 52 uint8_t total_sessions;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 53 uint8_t mcGroupBitMask;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 54 uint8_t current_session;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 55 uint16_t index;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 56 uint16_t last_frag_num;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 57 uint32_t total_frags;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 58 FragmentationMath* math;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 59 FragmentationSessionOpts_t opts;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 60 } fragGroup;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 61
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 62
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 63 enum FragResult {
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 64 FRAG_OK,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 65 FRAG_SIZE_INCORRECT,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 66 FRAG_FLASH_WRITE_ERROR,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 67 FRAG_NO_MEMORY,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 68 FRAG_COMPLETE
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 69 };
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 70
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 71 enum FragCmd {
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 72 PACKAGE_VERSION_FRAG,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 73 FRAG_STATUS,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 74 FRAG_SESSION_SETUP,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 75 FRAG_SESSION_DELETE,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 76 DATA_FRAGMENT = 0x08,
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 77 CHECKSUM = 0x80
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 78 };
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 79
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 80 void reset(uint16_t num);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 81 void upgradeFile(uint8_t fragIndex);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 82 bool process_frame(uint8_t fragIndex,uint16_t index, uint8_t buffer[], size_t size);
Jenkins@KEILDM1.dc.multitech.prv 67:a9d4d7cdeca1 83
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 84 mDot* _dot;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 85 WriteFile* _fh;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 86 fragGroup fg[MULTICAST_SESSIONS];
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 87
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 88 uint8_t ans;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 89 bool* _filled;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 90 uint32_t* _delay;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 91 uint8_t fragIndex;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 92 std::vector<uint8_t>* _ret;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 93 std::string _org_class;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 94 };
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 95 #endif
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 96 #endif // _FRAGMENTATION_SESSION_H