SMART_COMPONENTS_GetGsmFirm.../GetGsmFirmware.h

88 lines
2.2 KiB
C
Executable File

//
// Created by cfif on 22.08.23.
//
#ifndef GETGSMFIRMWARE_H
#define GETGSMFIRMWARE_H
#include "AtCmdBase.h"
#include "Gsm_HttpGet.h"
#include "FirmwareLoader.h"
#include "LoggerToSerialPort.h"
#include "CmsisRtosThreadUtils.h"
// Количество повторений до прерывания процедуры получения файла
#define connect_http_retry 5
// Размер порции для приема
//#define portion_size (1024 - 4)
#define portion_size (1024 - 4)
#define firmware_php_uveos_req "uveos.xfsb"
#define firmware_php_tele_req "tele.xfsb"
typedef enum {
FIRMWARE_UVEOS = 0,
FIRMWARE_TELE = 1
} eFirmwareType;
typedef struct {
int stat_err_open;
int stat_err_read;
int stat_err_crc;
int stat_err_write;
int stat_err_file_crc;
} tFirmwareStats;
typedef void (EventUpdateFunc)(void *env, bool result, bool isAbortOld);
typedef struct {
tAtCmd *gsmAt;
uint8_t *firmware_buf;
tFirmwareStats *firmwareStats;
tString64 Apn;
tString64 Server;
tLoggerToSerialPort *log;
uint32_t portion_step;
uint32_t offset;
uint32_t attemptsAll;
uint32_t attempts;
uint32_t attempts_period;
volatile bool startUpdateFirmware;
volatile bool doUpdateFirmware;
osMutexId_t access;
bool isExaminationFirmware;
EventUpdateFunc *eventUpdateFunc;
void *envUpdateFunc;
// Старая прошивка
bool isAbortOld;
eFirmwareType firmwareType;
tStaticThreadBlock(1024) T_processing_Firmware;
} tGsmFirmware;
void InitGsmFirmware(tGsmFirmware *env,
tAtCmd *gsmAt,
eFirmwareType firmwareType,
uint8_t *firmware_buf,
tFirmwareStats *firmwareStats,
tString64 *Apn,
tString64 *Server,
uint32_t attempts,
uint32_t attempts_period,
osMutexId_t access,
bool isExaminationFirmware,
EventUpdateFunc *eventUpdateFunc,
void *envUpdateFunc,
tLoggerToSerialPort *log);
void GsmFirmware_Start(tGsmFirmware *env);
void StartUpdateFirmware(tGsmFirmware *env);
#endif //GETGSMFIRMWARE_H