88 lines
2.2 KiB
C
Executable File
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
|