Aidan Wynn / libmDot-mbed5

Dependents:   Cloudtracker

Committer:
Jenkins@KEILDM1.dc.multitech.prv
Date:
Mon Feb 17 14:43:04 2020 -0600
Revision:
72:b1e07ec1c30d
Parent:
70:0c5b5b02d17b
mdot-library revision 3.3.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 72:b1e07ec1c30d 27
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 28 #ifndef MAX_PARITY
Jenkins@KEILDM1.dc.multitech.prv 67:a9d4d7cdeca1 29 #define MAX_PARITY 300
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 30 #endif
Jenkins@KEILDM1.dc.multitech.prv 72:b1e07ec1c30d 31
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 32 class FragmentationMath
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 33 {
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 34 public:
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 35 FragmentationMath(mDot* dot, uint16_t frame_count, uint8_t frame_size, WriteFile* fh);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 36 ~FragmentationMath();
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 37 bool Init();
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 38 int getLostFrameCount();
Jenkins@KEILDM1.dc.multitech.prv 72:b1e07ec1c30d 39 int getTotalMissingFrameCount();
Jenkins@KEILDM1.dc.multitech.prv 72:b1e07ec1c30d 40 int getTotalRcvdFrameCount();
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 41 void reset(uint16_t fcount);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 42 void setFrameFound(uint16_t frameCounter);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 43 bool processParityFrag(uint16_t frameCounter, uint8_t *pFrag);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 44
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 45 int FragmentationPrbs23(int x);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 46 bool IsPowerOfTwo(unsigned int x);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 47 int32_t FindMissingFrameIndex(uint16_t x);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 48 int32_t FindTrueFrameIndex(uint16_t x);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 49 void GetRowInFlash(int l, uint8_t *rowData);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 50 int FindFirstOne(uint8_t *boolData, int size);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 51 void StoreRowInFlash(uint8_t *rowData, int index);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 52 void XorLineData(uint8_t *dataL1, uint8_t *dataL2, int size);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 53 void XorLineBit(uint8_t *dataL1, uint8_t *dataL2, int size);
Jenkins@KEILDM1.dc.multitech.prv 67:a9d4d7cdeca1 54 void XorRowWithMatrix(uint8_t* row, int matrix_row_num);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 55 void FragmentationGetParityMatrixRow(int N, int M, uint8_t *matrixRow);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 56 void CondenseRow(uint8_t *row, int row_number, int start);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 57 void ExpandAndXorRow(uint8_t *row, int row_number);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 58 bool CheckIfMissing(int row_number, int index);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 59 void CompleteRow(int row_num);
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 60 void printMatrix();
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 61
Jenkins@KEILDM1.dc.multitech.prv 67:a9d4d7cdeca1 62 uint8_t _frame_size;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 63 uint16_t _frame_count;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 64 uint16_t _max_parity;
Jenkins@KEILDM1.dc.multitech.prv 72:b1e07ec1c30d 65 int16_t numFramesMissing;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 66 uint16_t lastReceiveFrameCnt;
Jenkins@KEILDM1.dc.multitech.prv 72:b1e07ec1c30d 67 int filled;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 68
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 69 uint8_t *matrix;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 70 uint8_t *matrixRow;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 71 uint8_t *parity_frag;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 72 uint8_t *missingFrameIndex;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 73 uint8_t *frag_in_flash;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 74
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 75 bool empty;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 76 int index_of_first;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 77 int matrix_row_num;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 78 int index;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 79
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 80 mDot* _dot;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 81 WriteFile* _fh;
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 82 };
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 83 #endif
Jenkins@KEILDM1.dc.multitech.prv 66:baa0f3116f1d 84 #endif // _FRAGMENTATION_MATH_H