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/FragmentationMath.h
- Committer:
- Jenkins@KEILDM1.dc.multitech.prv
- Date:
- 2019-04-23
- Revision:
- 66:baa0f3116f1d
- Child:
- 67:a9d4d7cdeca1
File content as of revision 66:baa0f3116f1d:
#ifndef _FRAGMENTATION_MATH_H
#define _FRAGMENTATION_MATH_H
#ifdef FOTA
#include "mbed.h"
#include "mDot.h"
#include "WriteFile.h"
#define FRAG_SESSION_ONGOING 0xffffffff
#ifndef MAX_PARITY
#define MAX_PARITY 400
#endif
class FragmentationMath
{
public:
FragmentationMath(mDot* dot, uint16_t frame_count, uint8_t frame_size, WriteFile* fh);
~FragmentationMath();
bool Init();
int getLostFrameCount();
void reset(uint16_t fcount);
void setFrameFound(uint16_t frameCounter);
bool processParityFrag(uint16_t frameCounter, uint8_t *pFrag);
int FragmentationPrbs23(int x);
bool IsPowerOfTwo(unsigned int x);
int32_t FindMissingFrameIndex(uint16_t x);
int32_t FindTrueFrameIndex(uint16_t x);
void GetRowInFlash(int l, uint8_t *rowData);
int FindFirstOne(uint8_t *boolData, int size);
void StoreRowInFlash(uint8_t *rowData, int index);
void XorLineData(uint8_t *dataL1, uint8_t *dataL2, int size);
void XorLineBit(uint8_t *dataL1, uint8_t *dataL2, int size);
void XorRowWithMatrix(uint8_t* row, int matrix_row_num);
void FragmentationGetParityMatrixRow(int N, int M, uint8_t *matrixRow);
void CondenseRow(uint8_t *row, int row_number, int start);
void ExpandAndXorRow(uint8_t *row, int row_number);
bool CheckIfMissing(int row_number, int index);
void CompleteRow(int row_num);
void printMatrix();
uint8_t _frame_size;
uint16_t _frame_count;
uint16_t _max_parity;
uint16_t numFramesMissing;
uint16_t lastReceiveFrameCnt;
uint8_t *matrix;
uint8_t *matrixRow;
uint8_t *parity_frag;
uint8_t *missingFrameIndex;
uint8_t *frag_in_flash;
bool empty;
int index_of_first;
int matrix_row_num;
int index;
mDot* _dot;
WriteFile* _fh;
};
#endif
#endif // _FRAGMENTATION_MATH_H