fota lib for mdot
mdot/FragmentationMath.h@8:7ba1f2abb8c0, 2019-01-15 (annotated)
- Committer:
- rklaassen
- Date:
- Tue Jan 15 09:25:58 2019 -0600
- Revision:
- 8:7ba1f2abb8c0
- Parent:
- 0:e1b89c6c6dd5
README test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 1 | #ifndef _FRAGMENTATION_MATH_H |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 2 | #define _FRAGMENTATION_MATH_H |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 3 | #ifdef FOTA |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 4 | |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 5 | #include "mbed.h" |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 6 | #include "mDot.h" |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 7 | #include "WriteFile.h" |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 8 | |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 9 | #define FRAG_SESSION_ONGOING 0xffffffff |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 10 | |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 11 | typedef struct { |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 12 | uint16_t NbOfFrag; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 13 | uint16_t Redundancy; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 14 | uint8_t DataSize; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 15 | } FragmentationSessionParams_t; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 16 | |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 17 | class FragmentationMath |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 18 | { |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 19 | public: |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 20 | FragmentationMath(mDot* dot, uint16_t frame_count, uint8_t frame_size, uint16_t redundancy_max, WriteFile* fh); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 21 | ~FragmentationMath(); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 22 | bool initialize(); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 23 | int get_lost_frame_count(); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 24 | void reset(uint16_t fcount); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 25 | void set_frame_found(uint16_t frameCounter); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 26 | bool process_redundant_frame(uint16_t frameCounter, uint8_t *rowData, FragmentationSessionParams_t sFotaParameter); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 27 | |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 28 | private: |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 29 | int FragmentationPrbs23(int x); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 30 | bool IsPowerOfTwo(unsigned int x); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 31 | uint16_t FindMissingFrameIndex(uint16_t x); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 32 | void GetRowInFlash(int l, uint8_t *rowData); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 33 | int FindFirstOne(uint8_t *boolData, int size); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 34 | bool VectorIsNull(uint8_t *boolData, int size); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 35 | void StoreRowInFlash(uint8_t *rowData, int index); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 36 | void FindMissingReceiveFrame(uint16_t frameCounter); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 37 | void XorLineData(uint8_t *dataL1, uint8_t *dataL2, int size); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 38 | void XorLineBool(uint8_t *dataL1, uint8_t *dataL2, int size); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 39 | void FragmentationGetParityMatrixRow(int N, int M, uint8_t *matrixRow); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 40 | void PushLineToBinaryMatrix(uint8_t *boolVector, int rownumber, int numberOfBit); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 41 | void ExtractLineFromBinaryMatrix(uint8_t *boolVector, int rownumber, int numberOfBit); |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 42 | |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 43 | int m2l; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 44 | uint8_t _frame_size; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 45 | uint16_t _frame_count; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 46 | uint16_t _redundancy_max; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 47 | uint16_t numFramesMissing; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 48 | uint16_t lastReceiveFrameCnt; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 49 | |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 50 | uint8_t *s; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 51 | uint8_t *matrixM2B; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 52 | uint8_t *matrixRow; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 53 | uint8_t *matrixDataTemp; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 54 | uint8_t *dataTempVector; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 55 | uint8_t *dataTempVector2; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 56 | uint8_t *missingFrameIndex; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 57 | |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 58 | mDot* _dot; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 59 | WriteFile* _fh; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 60 | }; |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 61 | #endif |
Jenkins@KEILDM1.dc.multitech.prv | 0:e1b89c6c6dd5 | 62 | #endif // _FRAGMENTATION_MATH_H |