fota lib for mdot

Dependents:   UQ_LoraWAN

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?

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