// // 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