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/FragmentationSession.h
- Committer:
- Jenkins@KEILDM1.dc.multitech.prv
- Date:
- 2019-08-29
- Revision:
- 68:5f787643e7d7
- Parent:
- 67:a9d4d7cdeca1
- Child:
- 69:e22889c7eaa9
File content as of revision 68:5f787643e7d7:
/**********************************************************************
* COPYRIGHT 2018 MULTI-TECH SYSTEMS, INC.
*
* ALL RIGHTS RESERVED BY AND FOR THE EXCLUSIVE BENEFIT OF
* MULTI-TECH SYSTEMS, INC.
*
* MULTI-TECH SYSTEMS, INC. - CONFIDENTIAL AND PROPRIETARY
* INFORMATION AND/OR TRADE SECRET.
*
* NOTICE: ALL CODE, PROGRAM, INFORMATION, SCRIPT, INSTRUCTION,
* DATA, AND COMMENT HEREIN IS AND SHALL REMAIN THE CONFIDENTIAL
* INFORMATION AND PROPERTY OF MULTI-TECH SYSTEMS, INC.
* USE AND DISCLOSURE THEREOF, EXCEPT AS STRICTLY AUTHORIZED IN A
* WRITTEN AGREEMENT SIGNED BY MULTI-TECH SYSTEMS, INC. IS PROHIBITED.
*
***********************************************************************/
#ifndef _FRAGMENTATION_SESSION_H
#define _FRAGMENTATION_SESSION_H
#ifdef FOTA
#include "mbed.h"
#include "FragmentationMath.h"
#include "mDot.h"
#include "WriteFile.h"
#define MAX_PARITY 300
#define FRAG_OFFSET 3
#define MULTICAST_SESSIONS 3
class FragmentationSession {
public:
FragmentationSession(mDot* dot, std::vector<uint8_t>* ret, bool* filled, uint32_t* delay);
~FragmentationSession();
void processCmd(uint8_t* payload, uint8_t size);
void reset();
private:
typedef struct {
uint8_t Padding;
uint8_t FragmentSize;
uint16_t NumberOfFragments;
} FragmentationSessionOpts_t;
typedef struct {
bool reset;
bool failed;
uint8_t fragMatrix;
uint8_t blockAckDelay;
uint8_t total_sessions;
uint8_t mcGroupBitMask;
uint8_t current_session;
uint16_t index;
uint16_t last_frag_num;
uint32_t total_frags;
FragmentationMath* math;
FragmentationSessionOpts_t opts;
} fragGroup;
enum FragResult {
FRAG_OK,
FRAG_SIZE_INCORRECT,
FRAG_FLASH_WRITE_ERROR,
FRAG_NO_MEMORY,
FRAG_COMPLETE
};
enum FragCmd {
PACKAGE_VERSION_FRAG,
FRAG_STATUS,
FRAG_SESSION_SETUP,
FRAG_SESSION_DELETE,
DATA_FRAGMENT = 0x08,
CHECKSUM = 0x80
};
void reset(uint16_t num);
void upgradeFile(uint8_t fragIndex);
bool process_frame(uint8_t fragIndex,uint16_t index, uint8_t buffer[], size_t size);
mDot* _dot;
WriteFile* _fh;
fragGroup fg[MULTICAST_SESSIONS];
uint8_t ans;
bool* _filled;
uint32_t* _delay;
uint8_t fragIndex;
std::vector<uint8_t>* _ret;
std::string _org_class;
};
#endif
#endif // _FRAGMENTATION_SESSION_H