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.
Fota/Fragmentation/FragmentationSession.h@68:5f787643e7d7, 2019-08-29 (annotated)
- 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?
User | Revision | Line number | New 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 |