Files
banban/ql-kernel/threadx/common/include/download.h

803 lines
22 KiB
C

#ifndef __DOWNLOAD_H__
#define __DOWNLOAD_H__
#include "fbf_parse.h"
#include "uart.h"
#include "diag_API.h"
#include "simPin.h"
#include "FDI_EXT.h"
#include "FDI_TYPE.h"
#include "FDI_FILE.h"
#include "quec_cust_feature.h"
#ifdef QUECTEL_MINIFOTA_SUPPORT
#define NEW_MINI_OTA_VERSION
#endif
#define SUPPORT_ADIFF_DFOTA_VERSION
#define MINI_OTA_MERGE_FILE
#define MINIHTTP 1
#define MINIFTP 2
#define MINI_OTA_TWO_PKG 0
#define MINI_OTA_ONE_PKG 1
#if (defined(LTEONLY_THIN) || defined(LTEGSM_THIN))
#define fota_debug(cat3, fmt, args...)
#else
#define fota_debug(cat3, fmt, args...) \
do{ \
DIAG_FILTER(MIFI, FOTA, cat3, DIAG_INFORMATION) \
diagPrintf(fmt, ##args); \
}while(0)
#endif
#define fota_error(cat3, fmt, args...) \
do{ \
DIAG_FILTER(MIFI, FOTA, cat3, DIAG_INFORMATION) \
diagPrintf(fmt, ##args); \
}while(0)
#define fota_printf(cat3, fmt, args...) do { CPUartLogPrintf("[ %s, %d ]""[ fota ]"fmt,__FUNCTION__, __LINE__, ##args); } while(0)
#define FLASH_BLOCK 0x00010000 //64K
#define FLASH_4K_SECTOR 0x00001000 //4K
#ifdef DOWNLOAD_CACHE_BUF
#define DOWNLOAD_BUF_SIZE 0x00010000 //64K
#endif
/* CRANE QSPI base address.*/
#define FOTA_CRANE_QSPI_BASE_ADDRESS 0x80000000
//#define SUPPORT_FOTA_NVM
#define RW_REGION_MARK_PRE_STRING "RW_CPZ_"
#define RW_REGION_COMPRESSED_ADDR_NONE 0x00000000
#define IPR_BUAD_MAGIC 0x42554144
#define FOTA_WRITE_FLASH_TRY_NUM 5
#define FOTA_HEADER_MAGIC 0x54524657
#define FORWARD_MODE 0x00000001
#define REVERSE_MODE 0x00000002
#define ASR_FOTA_UPDATE_SYSTEM 0x00000001
#define ASR_FOTA_UPDATE_RF 0x00000002
#define ASR_FOTA_UPDATE_UPDATER 0x00000004
#define ASR_FOTA_CLEAN_RD
typedef enum {
FOTA_SUCCESS=0,
FOTA_DOWNLOADING=50,
FOTA_COMPLETED=100,
FOTA_DOMAIN_NOT_EXIST=1001,
FOTA_DOMAIN_TIMEOUT,
FOTA_DOMAIN_UNKNOWN,
FOTA_AUTH_FAILED,
FOTA_FILE_NOT_EXIST,
FOTA_FILE_SIZE_INVALID,
FOTA_FILE_GET_ERR,
FOTA_FILE_CHECK_ERR,
FOTA_INTERNAL_ERR,
FOTA_FILE_SIZE_TOO_LARGE,
FOTA_SET_FLAG_FAILED,
FOTA_PARAM_SIZE_INVALID,
FOTA_NO_ENOUGH_MEMORY,
} _FOTARes;
typedef enum {
FOTA_FTP,
FOTA_HTTP,
FOTA_NONE,
} _FotaMode;
enum {
HEADER,
CONTENT,
};
struct image_state {
struct imginfo_table * image_info;
struct image_state * next_image;
int result;
};
typedef struct _asr_non_diff_info{
UINT32 roAddress;
UINT32 roLen;
UINT32 roChecksum;
UINT32 nonfotaAddress;
UINT32 nonfotaLen;
UINT32 nonfotaChecksum;
UINT32 app1PartionAddress;
UINT32 app1PartionLen;
UINT32 app1PartionChecksum;
UINT32 app2PartionAddress;
UINT32 app2PartionLen;
UINT32 app2PartionChecksum;
UINT32 app3PartionAddress;
UINT32 app3PartionLen;
UINT32 app3PartionChecksum;
UINT32 reserved[3];
UINT32 updater_offset;
UINT32 updater_size;
UINT32 updater_addr;
}asr_non_diff_info;
struct image_process_context {
ImginfoTable * image_info_table;
ImginfoTable * current_process;
unsigned int processed_cnt;
int state;
char * flash_cache;
int flash_cache_index;
int (*flash_cb)(struct image_process_context *, char *, int);
char * checksum_cache;
int checksum_cache_index;
unsigned int image_checksum;
struct image_state * image_state_list;
//#ifdef SUPPORT_MINI_SYSTEM
unsigned int download_stage;
unsigned int saved_head;
unsigned int backupAddress;
unsigned int startFirAddress;
unsigned int startFirSize;
unsigned int startSecAddress;
unsigned int startSecSize;
asr_non_diff_info nondiffinfo;
#if defined(MINI_OTA_DOWNLOAD_BREAKPOINT_SUPPORT)
char * url;
//char * username;
//char * password;
unsigned int file_size;
#endif
#if defined(FOTA_FS_SUPPORT)
FILE_ID fd;
#endif
#ifdef DOWNLOAD_CACHE_BUF
char * download_buf;
int download_offset;
int downloaded_cnt;
int total_size;
#endif
/*
unsigned int non_fota_address;
unsigned int non_fota_len;
unsigned int non_fota_checksum;
unsigned int ro_address;
unsigned int ro_len;
unsigned int ro_checksum;
*/
//#endif
};
typedef unsigned char BOOL;
// Call http client for download special image
// This function will be called in main thread
enum {
CONNECT_FAILED = 9015,
ABORT_FAILED = 9017,
CORRUPT_FILE_FAILED = 9018,
AUTH_FAILED = 9012,
NOT_PRESENT_FAILED = 9016,
};
enum {
DOWNLOAD_STAGE_NONE,
DOWNLOAD_STAGE_FIRST,
DOWNLOAD_STAGE_SECOND,
DOWNLOAD_STAGE_SECOND_HEADER
};
enum {
MINI_SYS_DFOTA_START,
MINI_SYS_DFOTA_DOWNLOAD_DONE=512,
MINI_SYS_DFOTA_PRE_RO_BACKUP,
MINI_SYS_DFOTA_PRE_RO_DONE,
MINI_SYS_DFOTA_PRE_DDR_RW_BACKUP,
MINI_SYS_DFOTA_PRE_DDR_RW_DONE,
MINI_SYS_DFOTA_DDR_RW_BACKUP,
MINI_SYS_DFOTA_DDR_RW_BACKUP_OLD_DONE,
MINI_SYS_DFOTA_DDR_RW_DONE,
MINI_SYS_DFOTA_PS_NCAH_BACKUP,
MINI_SYS_DFOTA_PS_NCAH_BACKUP_OLD_DONE,
MINI_SYS_DFOTA_PS_NCAH_DONE,
MINI_SYS_DFOTA_USBNCAH_BACKUP,
MINI_SYS_DFOTA_USBNCAH_BACKUP_OLD_DONE,
MINI_SYS_DFOTA_USBNCAH_DONE,
MINI_SYS_DFOTA_CODE_PS_BACKUP,
MINI_SYS_DFOTA_CODE_PS_BACKUP_OLD_DONE,
MINI_SYS_DFOTA_CODE_PS_DONE,
MINI_SYS_DFOTA_CODEPSB_BACKUP,
MINI_SYS_DFOTA_CODEPSB_BACKUP_OLD_DONE,
MINI_SYS_DFOTA_CODEPSB_DONE,
MINI_SYS_DFOTA_CODE_PL_BACKUP,
MINI_SYS_DFOTA_CODE_PL_BACKUP_OLD_DONE,
MINI_SYS_DFOTA_CODE_PL_DONE,
MINI_SYS_DFOTA_DSP_RF_BACKUP,
MINI_SYS_DFOTA_DSP_RF_BACKUP_OLD_DONE,
MINI_SYS_DFOTA_DSP_DONE,
MINI_SYS_DFOTA_RF_DONE,
MINI_SYS_DFOTA_FIRST_MOVE,
MINI_SYS_DFOTA_FIRST_MOVE_DONE,
MINI_SYS_DFOTA_SECOND_MOVE,
MINI_SYS_DFOTA_SECOND_MOVE_DONE,
MINI_SYS_DFOTA_DONE=1024
};
enum {
MINI_SYS_STATUS_DISABLE,
MINI_SYS_STATUS_ENABLE,
MINI_SYS_STATUS_NONE
};
#ifdef QUEC_FOTA_BREAK_POINT_DOWN_LOAD_CACHE_FEATURE
/* fota recv cache msg*/
typedef enum{
QUEC_FOTA_CACHE_RECV_IND = 0,
QUEC_FOTA_CACHE_HTTP_IND,
QUEC_FOTA_CACHE_FTP_IND,
QUEC_FOTA_CACHE_HIGH_IND,
QUEC_FOTA_CACHE_LOW_IND,
QUEC_FOTA_CACHE_EMPTY_IND,
}QUEC_FOTA_CACHE_MSG;
#endif
struct method_download {
char * command_key;
char * file_type;
char * url;
char * username;
char * password;
unsigned int file_size;
char * target_file_name;
unsigned int delay_seconds;
char * success_url;
char * failure_url;
int status; // Use trace this method result sent count
char * start_time;// data time format
char * complete_time;// data time format
unsigned int mini_size;
unsigned int max_size;
unsigned int download_mode;
};
struct DeviceHeader_11_tr069 {
unsigned int DeviceFlags;
unsigned int DeviceParameters[16]; /* Device Parameters, reserve 16 U32 here, will be defined depending on different devices */
FlashOptStruct FlashOpt;
unsigned int Reserved[MAX_RESEVERD_LEN];
unsigned int nOfImages; /* number of images */
ImageStruct_11 imageStruct_11[0]; /* array of image structs */
} __attribute__((packed)); // Same as struct 'DeviceHeader_11' but the ImageStruct cnt is zero
#define FOTA_MAGIC 0X464F5441
#define ASR_FOTA_FLAG_LEN_MAX 16
#define ASR_FOTA_FILE_NAME_SIZE 8
#ifdef NEW_MINI_OTA_VERSION
#if (defined(LTEONLY_8M8M) || defined(CRANEL_4MRAM) || defined(LTEGSM_THIN))
#define MINI_OTA_MAX_NUMBER_OF_IMAGE 32
#else
#define MINI_OTA_MAX_NUMBER_OF_IMAGE 12
#endif
typedef struct _asr_mini_ota_ImageStruct{
UINT32 ImageID;
UINT32 ImageOffset;
UINT32 ImageLen;
UINT32 ImageCheckSum;
UINT32 oldDeviceFlashAddress;
UINT32 oldDeviceLen;
UINT32 oldDeviceCheckSum;
UINT32 newDeviceFlashAddress;
UINT32 newDeviceLen;
UINT32 newDeviceCheckSum;
UINT32 reserved[2];
}asr_mini_ota_ImageStruct;
typedef struct _asr_mini_ota_head_info{
UINT32 magic;
UINT32 format_version;
/*add for mini sys fota*/
unsigned int second_flash_address;
unsigned int second_file_size;
unsigned int first_backup_address;
unsigned int first_backup_len;
unsigned int second_backup_address;
unsigned int second_backup_len;
unsigned int old_backup_len;
unsigned int mini_dfota_status;
unsigned int DFota_CopyAddr;
unsigned int DFota_CopyFlag;
unsigned int DFota_TempAddr;
UINT32 reserved[2];
asr_non_diff_info nonDiffInfo;
asr_mini_ota_ImageStruct Image[MINI_OTA_MAX_NUMBER_OF_IMAGE];
#if (defined(LTEONLY_8M8M) || defined(CRANEL_4MRAM) || defined(LTEGSM_THIN))
UINT32 reserved2[86];
#else
UINT32 reserved2[326];
#endif
unsigned int ext_end_address;
unsigned int first_flash_address;
unsigned int first_file_size;
unsigned int first_dfota_size;
unsigned int second_dfota_size;
unsigned int checksum;
}asr_mini_ota_head_info;
#endif
#ifdef SUPPORT_ADIFF_DFOTA_VERSION
enum {
SYS_ADIFF_DFOTA_FIRST,
SYS_ADIFF_DFOTA_SECOND
};
enum {
SYS_ADIFF_DFOTA_STATUS_BACKUP,
SYS_ADIFF_DFOTA_STATUS_BACKUP_OLD,
SYS_ADIFF_DFOTA_STATUS_UPDATE
};
typedef struct _asr_ota_ImageStruct{
UINT32 ImageID;
UINT32 ImageOffset;
UINT32 ImageLen;
UINT32 ImageCheckSum;
UINT32 oldDeviceFlashAddress;
UINT32 oldDeviceLen;
UINT32 oldDeviceCheckSum;
UINT32 newDeviceFlashAddress;
UINT32 newDeviceLen;
UINT32 newDeviceCheckSum;
UINT32 reserved[2];
}asr_ota_ImageStruct;
#define OTA_MAX_NUMBER_OF_IMAGE 32
typedef struct _asr_ota_head_info{
UINT32 magic;
UINT32 format_version;
#if defined(FOTA_FS_SUPPORT)
UINT32 reserved1[1];
UINT32 MaxBackupSize;
#else
UINT32 reserved1[2];
#endif
UINT32 uncompressed_image_num;
UINT32 loadtable_image_num;
UINT32 update_num;
UINT32 update_status;
UINT32 move_num;
UINT32 move_ready;
UINT32 first_backup_address;
UINT32 first_backup_len;
UINT32 old_backup_len;
UINT32 DFota_CopyAddr;
UINT32 DFota_TempAddr;
UINT32 dsp_later_num;
UINT32 app_num;
UINT32 reserved2[1];
asr_ota_ImageStruct Image[OTA_MAX_NUMBER_OF_IMAGE];
}asr_ota_head_info;
#endif
typedef union{
#ifdef NEW_MINI_OTA_VERSION
asr_mini_ota_head_info mini_ota_head;//new mini ot
#endif
#ifdef SUPPORT_ADIFF_DFOTA_VERSION
asr_ota_head_info ota_diffhead;//new adiff ota
#endif
unsigned char reserved[2048];
}ASR_OTA_HEADER;
#ifdef QUEC_MINISYS_PROJECT_CUST
typedef struct _quec_url_store{
char path_name[256];
unsigned char dl_urc_num; //max number of urc when downloading
unsigned char dl_urc_cnt;
unsigned char down_fail_stop_open;
unsigned char dl_first_pkg_suc;
char path_name2[256];
UINT32 fota_mode; //用来标识minifota单包升级
}quec_url_store;
#endif
struct fota_firmwar_flag {
unsigned int header;
unsigned int upgrade_flag;
unsigned int fbf_flash_address;
unsigned int fbf_file_size;
unsigned int Upgrade_Method; // 1, TR069; 2, SD; 3, WebUI.;4, DFOTA; 5;MINI System DFOTA
unsigned int Version_Flag;
unsigned char Version[64];
unsigned int DFota_nOfImages;
unsigned int DFota_NeedCopyOnly;
unsigned int DFota_CopyLen;
unsigned char Image_status[MAX_NUMBER_OF_IMAGE_STRUCTS_IN_DEVICE_HEADER];
unsigned int Index;
ASR_OTA_HEADER ota_header;
#ifdef QUEC_MINISYS_PROJECT_CUST
quec_url_store quec_url_info;
unsigned int reserved[317];
#else
unsigned int reserved[447];
#endif
unsigned int checksum;
};
#define FOTA_SAVE_URL_MAX 256
#define FOTA_SAVE_USNM_MAX 128
#define FOTA_SAVE_PAWD_MAX 128
struct fota_param {
unsigned char fotaFlag[ASR_FOTA_FLAG_LEN_MAX];
unsigned int baudrate_flag;
unsigned int baudrate;
unsigned int mini_sys_enable;
#ifdef QUEC_MINISYS_PROJECT_CUST
unsigned int large_sys_erased_back; // 此变量是为了兼容large_sys_erased位置变化的版本间升级依然有效
#if QUEC_SEC_OTA_ENABLE
unsigned int secota_valid;
unsigned int pkg_start_offset;
unsigned int pkg_end_offset;
unsigned int reserved[60];
#else
unsigned int reserved[63];
#endif
#else
#if QUEC_SEC_OTA_ENABLE
unsigned int secota_valid;
unsigned int pkg_start_offset;
unsigned int pkg_end_offset;
unsigned int reserved[61];
#else
unsigned int reserved[64];
#endif
#endif
unsigned int fota_mode;
unsigned char fota_url[FOTA_SAVE_URL_MAX];
unsigned char fota_username[FOTA_SAVE_USNM_MAX];
unsigned char fota_password[FOTA_SAVE_PAWD_MAX];
#ifdef CSD_SUPPORT
unsigned int dte_dce_format_parity_flag;
unsigned int dte_dce_format_parity;
#endif
#ifdef QUEC_MINISYS_PROJECT_CUST
unsigned int large_sys_erased;
#endif
UINT8 simPinCode[DUAL_SIM_PIN_CODE_SIZE];
};
/*************************************************************************
*************************************************************************/
#ifdef QUEC_MINISYS_PROJECT_CUST
typedef enum
{
DS_FTP_OK = 0,
DS_FTP_ERROR = 601,
DS_FTP_WOULDBLOCK = 602,
DS_FTP_BUSY = 603,
DS_FTP_ERROR_DNS = 604, /*failed to parse domain name*/
DS_FTP_ERROR_NETWORK = 605, /*failed to establish socket or the network is deactivated*/
DS_FTP_CTRL_CLOSE = 606, /*the ftp session has been closed by the ftp server*/
DS_FTP_DATA_CLOSE = 607, /*the data connection was closed by the ftp server*/
DS_FTP_BEARER_FAIL = 608,
DS_FTP_ERROR_TIMEOUT = 609,
DS_FTP_INVALID_PARAM = 610,
DS_FTP_FILE_NOT_FOUND = 611,
DS_FTP_FILE_POINT_ERR = 612,
DS_FTP_FS_FILE_ERROR = 613,
DS_FTP_SERVICE_END = 614,
DS_FTP_DATA_FAILED = 615,
DS_FTP_CLOSE_CONN = 616,
DS_FTP_FILE_UNOPER = 617,
DS_FTP_REQUEST_ABORT = 618,
DS_FTP_OVER_MEMORY = 619,
DS_FTP_COMMAND_ERROR = 620,
DS_FTP_PARAM_ERROR = 621,
DS_FTP_COMMAND_FAILED = 622,
DS_FTP_COMMAND_BAD_SEQUENCE = 623,
DS_FTP_COMMAND_NOT_IMPLENT = 624,
DS_FTP_ERROR_UNLOGIN = 625,
DS_FTP_NO_ACCOUNT = 626,
DS_FTP_REQUEST_FAILED = 627,
DS_FTP_REQUEST_STOP = 628,
DS_FTP_FILEREQ_STOP = 629,
DS_FTP_FILENAME_ERROR = 630,
DS_FTP_SSL_AUTH_FAIL = 631,
}quectel_ds_miniftp_error_code;
typedef enum
{
mTEL_AT_CMD_ATP_0,
mTEL_AT_CMD_ATP_1,
mTEL_AT_CMD_ATP_2,
mTEL_AT_CMD_ATP_3,
mTEL_AT_CMD_ATP_4,
mTEL_AT_CMD_ATP_5,
mTEL_AT_CMD_ATP_6,
mTEL_AT_CMD_ATP_7,
// TEL_ESP_AT_CMD_ATP, //external serial port
mTEL_MODEM_AT_CMD_ATP, // act as Modem when linked with PC
mNUM_OF_TEL_ATP
}
mTelAtParserID;
typedef enum
{
QUEC_FOTA_PATH_NULL = 0,
QUEC_FOTA_PATH_FILE,//fota by file
QUEC_FOTA_PATH_SD,//fota by sd card
QUEC_FOTA_PATH_MEMORY,//fota by memory
QUEC_FOTA_PATH_HTTP,//fota by http
QUEC_FOTA_PATH_FTP,//fota by ftp
QUEC_FOTA_PATH_MAX,
}quec_minifota_path_e;
typedef struct qminifotaupl_param
{
char path_name[256];
quec_minifota_path_e data_type; //锟斤拷锟斤拷锟斤拷源锟斤拷锟斤拷
unsigned int upgrade_flag; //锟角凤拷锟斤拷锟斤拷锟斤拷锟斤拷
unsigned int want_size; //锟节达拷锟杰筹拷锟斤拷
unsigned int size_uploaded; //锟侥硷拷锟斤拷锟酵革拷fota_task锟斤拷锟斤拷
#ifdef QUEC_FOTA_HTTP_RETRY_SUPPORT
unsigned int remaining_size; //Remaining size to download when http fota retry
#endif
unsigned int cache_count; //锟斤拷锟芥长锟斤拷
unsigned int atHandle; //锟斤拷锟斤拷锟斤拷
unsigned int current_dw_len; //锟斤拷前锟斤拷锟节斤拷锟斤拷锟斤拷锟捷筹拷锟斤拷
mTelAtParserID atp_index; //锟斤拷锟斤拷锟斤拷源锟斤拷锟斤拷
int error_code; //锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟?
unsigned short fota_error_code; //fota upgrade error
#ifdef QUEC_FOTA_DOWNLOAD_URC_SUPPORT
unsigned char dl_urc_num; //max number of urc when downloading
unsigned char up_urc_num; //max number of urc when updating
unsigned char urc_cnt; //urc report counter
unsigned int flash_wr_size; //Size of data has writen to flash
unsigned int flash_want_size;//Expect total size write to falsh
#endif
#ifdef QUEC_PROTOCOL_DOWNLOAD_FILE_FOTA
unsigned char protocol_down_flag;
#endif
#ifdef QUEC_QUECTHING_SUPPORT
unsigned int quecthing_fota_flag; //quecthing_fota_flag:1:quecthing.0:not quecthing
#endif
#ifdef QUECTEL_QUECFOTA_SUPPORT
unsigned int quecfota_fota_flag; //quecfota_fota_flag:1:quecfota enable.0:disable quecfota
#endif
}QMINIFOTAUPL_PARAM;
typedef struct
{
char username[256]; //User name for authentication
char password[256]; //Password for authentication
char url[256]; //IP address or domain
char port[10]; //Port of FTP server
char file_path[256]; //Download file path
char file_name[256]; //Download file name
int err_code; //FTP FOTA error code
unsigned int want_size; //Expect ftp download total size
mTelAtParserID atHandle;
}ftp_minifota_info_t;
/*later add new parameters ,put them to this structure*/
typedef struct{
char *ptr_url;/*qfotadl param, complete AT command parameters for comparison*/
int atpIndex;
unsigned int atHandle;
unsigned char upgrade_mode;
unsigned char urc_dl_num;
char url_abort;/*Downloading, reset qfotadl param url, 1:Terminate exit*/
char active_stop;/*1:stop flag*/
struct http_client * client;
//unsigned char ftp_evt;
//unsigned char quec_urc_num;
//unsigned char quec_urc_cnt;
char cfun_flag;/*Reconnect to the core network, EPC*/
}quec_minios_fota_st;
extern quec_minios_fota_st quec_minios_fota;
extern int quec_minisys_check_url(char *url, int size);
#endif
/*************************************************************************
*************************************************************************/
typedef struct{
char apn[129];
char user_name[129];
char password[129];
char auth_type;
char pdp_type;/*-1:Indicates that APN is not configured, and an error is reported when executing QFOTADL*/
char nwscanmode;
}quec_minios_pdp_profile;
extern quec_minios_pdp_profile minios_profile_info;
#define QUEC_MINIOS_PDP_INFO_INI "minios_pdp_info.ini"
extern int quec_minisys_pdp_info_configuration_init(void);
extern int quec_minisys_get_pdp_type(void);
extern int ota_downalod_progress;
extern int ota_firmware_download_http(void * param);
extern int verify_flash_image(struct image_process_context * context, int * file_size, int * is_dfota);
int get_at_ota_progress(unsigned int requestHandle);
void init_fota(void);
unsigned int get_uart_baud_ipr(void);
int save_uart_baud_ipr(unsigned int baudRate);
int enable_mini_sys(struct method_download * request);
int get_mini_sys_status(struct fota_firmwar_flag * flag);
#ifdef QUEC_MINISYS_PROJECT_CUST
int disable_mini_sys(void);
#endif
extern BOOL IsMiniSystem(void);
void quec_minisys_usb_vid_pid_init(void);
struct qmini_fotaupl_param
{
char path_name[256];
UINT8 dl_urc_num; //max number of urc when downloading
UINT8 dl_urc_cnt;
UINT8 down_fail_stop_open;
UINT8 dl_first_pkg_suc;
char path_name2[256];
UINT32 fota_mode; //用来标识minifota单包升级
};
int quec_set_url_to_fotaparam(struct qmini_fotaupl_param * url_param);
/*******************************************************************************
*
* Function: fota_pkg_write
*
* Parameters:
* data - the fota file data
* dataLen - the fota file data length
* total - the total size of fota file,if using ADIFF PRO fota solution,this parameter must be set.
*
* Returns:
* FOTA_SUCCESS - OK
* FOTA_INTERNAL_ERR - Fota file write failed
*
* Description: * This function write the fota file to flash
*
*
*********************************************************************************/
int fota_pkg_write(char * data, int dataLen, int total);
/*******************************************************************************
*
* Function: fota_pkg_flush_flash
*
* Parameters: none
*
* Returns:
* FOTA_SUCCESS - OK
* FOTA_INTERNAL_ERR - Fota file flush failed
*
* Description: * If the fota file size not 64K alignment,
* this function flush the rest data to flash
*
*********************************************************************************/
int fota_pkg_flush_flash(void);
/*******************************************************************************
*
* Function: fota_image_verify
*
* Parameters: none
*
* Returns:
* FOTA_SUCCESS - OK
* FOTA_FILE_CHECK_ERR - Fota file verify failed
*
* Description: * This function verify the fota file is correct or not
* if the file is correct,the fota flag will be set
*
*********************************************************************************/
int fota_image_verify(void);
/*******************************************************************************
*
* Function: mini_fota_pkg_write
*
* Parameters:
* data - the mini fota file data
* dataLen - the mini fota file data length
* size - the total size of mini fota file
*
* Returns:
* FOTA_SUCCESS - OK
* FOTA_INTERNAL_ERR - Fota file write failed
*
* Description: * This function write the mini fota file to flash
*
*
*********************************************************************************/
int mini_fota_pkg_write(char * data, int dataLen, int size);
/*******************************************************************************
*
* Function: mini_fota_image_verify
*
* Parameters: none
*
* Returns:
* FOTA_SUCCESS - OK
* FOTA_FILE_CHECK_ERR - Fota file verify failed
*
* Description: * This function verify the mini fota file is correct or not
* if the file is correct,the fota flag will be set
*
*********************************************************************************/
int mini_fota_image_verify(void);
int get_fota_result(void);
#ifdef QUECTEL_PROJECT_CUST
UINT32 quec_check_old_image_checksum(UINT32 flash_address, UINT32 length, UINT32 oldCheckSum);
int quec_fullota1_app_work(void);
int quec_fullota2_app_work(void);
int fota_check_old_image_checksum(UINT32 flash_address, UINT32 length, UINT32 oldCheckSum);
int quec_path_name_is_valid(char *path_name);
#endif
#endif