Meach will / libmDot-mbed5

Dependents:   ncu_project

Committer:
Jenkins@KEILDM1.dc.multitech.prv
Date:
Fri Nov 08 09:29:29 2019 -0600
Revision:
70:0c5b5b02d17b
Parent:
69:e22889c7eaa9
mdot-library revision 3.2.5 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 70:0c5b5b02d17b 1 /**********************************************************************
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 2 * COPYRIGHT 2018 MULTI-TECH SYSTEMS, INC.
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 3 *
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 4 * ALL RIGHTS RESERVED BY AND FOR THE EXCLUSIVE BENEFIT OF
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 5 * MULTI-TECH SYSTEMS, INC.
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 6 *
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 7 * MULTI-TECH SYSTEMS, INC. - CONFIDENTIAL AND PROPRIETARY
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 8 * INFORMATION AND/OR TRADE SECRET.
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 9 *
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 10 * NOTICE: ALL CODE, PROGRAM, INFORMATION, SCRIPT, INSTRUCTION,
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 11 * DATA, AND COMMENT HEREIN IS AND SHALL REMAIN THE CONFIDENTIAL
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 12 * INFORMATION AND PROPERTY OF MULTI-TECH SYSTEMS, INC.
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 13 * USE AND DISCLOSURE THEREOF, EXCEPT AS STRICTLY AUTHORIZED IN A
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 14 * WRITTEN AGREEMENT SIGNED BY MULTI-TECH SYSTEMS, INC. IS PROHIBITED.
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 15 *
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 16 ***********************************************************************/
Jenkins@KEILDM1.dc.multitech.prv 70:0c5b5b02d17b 17
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 18 #ifndef _FRAGMENTATION_MATH_H
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 19 #define _FRAGMENTATION_MATH_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 "mDot.h"
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 24 #include "WriteFile.h"
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 25
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 26 #define FRAG_SESSION_ONGOING 0xffffffff
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 27 #ifndef MAX_PARITY
Jenkins@KEILDM1.dc.multitech.prv 67:a9d4d7cdeca1 28 #define MAX_PARITY 300
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 29 #endif
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 30 class FragmentationMath
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 31 {
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 32 public:
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 33 FragmentationMath(mDot* dot, uint16_t frame_count, uint8_t frame_size, WriteFile* fh);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 34 ~FragmentationMath();
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 35 bool Init();
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 36 int getLostFrameCount();
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 37 void reset(uint16_t fcount);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 38 void setFrameFound(uint16_t frameCounter);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 39 bool processParityFrag(uint16_t frameCounter, uint8_t *pFrag);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 40
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 41 int FragmentationPrbs23(int x);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 42 bool IsPowerOfTwo(unsigned int x);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 43 int32_t FindMissingFrameIndex(uint16_t x);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 44 int32_t FindTrueFrameIndex(uint16_t x);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 45 void GetRowInFlash(int l, uint8_t *rowData);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 46 int FindFirstOne(uint8_t *boolData, int size);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 47 void StoreRowInFlash(uint8_t *rowData, int index);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 48 void XorLineData(uint8_t *dataL1, uint8_t *dataL2, int size);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 49 void XorLineBit(uint8_t *dataL1, uint8_t *dataL2, int size);
Jenkins@KEILDM1.dc.multitech.prv 67:a9d4d7cdeca1 50 void XorRowWithMatrix(uint8_t* row, int matrix_row_num);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 51 void FragmentationGetParityMatrixRow(int N, int M, uint8_t *matrixRow);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 52 void CondenseRow(uint8_t *row, int row_number, int start);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 53 void ExpandAndXorRow(uint8_t *row, int row_number);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 54 bool CheckIfMissing(int row_number, int index);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 55 void CompleteRow(int row_num);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 56 void printMatrix();
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 57
Jenkins@KEILDM1.dc.multitech.prv 67:a9d4d7cdeca1 58 uint8_t _frame_size;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 59 uint16_t _frame_count;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 60 uint16_t _max_parity;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 61 uint16_t numFramesMissing;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 62 uint16_t lastReceiveFrameCnt;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 63
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 64 uint8_t *matrix;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 65 uint8_t *matrixRow;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 66 uint8_t *parity_frag;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 67 uint8_t *missingFrameIndex;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 68 uint8_t *frag_in_flash;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 69
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 70 bool empty;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 71 int index_of_first;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 72 int matrix_row_num;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 73 int index;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 74
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 75 mDot* _dot;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 76 WriteFile* _fh;
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_MATH_H