1.ota模块--暂时不生效
This commit is contained in:
parent
01057bb1e0
commit
9961fd5c69
|
@ -23,6 +23,82 @@ extern "C" {
|
|||
#define SF_OTA_UPGRADE_FILE_PATH SF_SD_ROOT OTA_UPGRADE_FILE_NAME
|
||||
#define SF_OTA_PARAM_BACKUP_FATH SF_SD_ROOT OTA_BAK_FILE_NAME
|
||||
|
||||
#define MODULE_VER "EG"
|
||||
|
||||
#define MODULE_VER_FLG1 "FAR"
|
||||
#define MODULE_VER_FLG2 "GAR"
|
||||
|
||||
#define EG91E_MODULE_VER "EG91E"
|
||||
#define EG91V_MODULE_VER "EG91V"
|
||||
#define EG91A_MODULE_VER "EG91NA"
|
||||
#define EC25E_MODULE_VER "EC25E"
|
||||
#define EC25V_MODULE_VER "EC25V"
|
||||
#define EC25A_MODULE_VER "EC25A"
|
||||
|
||||
#define OTA_FTP_CFGFILENAME_EG91E "DFOTA_EG91E.CFG"
|
||||
#define OTA_FTP_UPDATAFILENAME_EG91E "module_EG91E.zip"
|
||||
#define OTA_FTP_CFGFILENAME_EG91V "DFOTA_EG91V.CFG"
|
||||
#define OTA_FTP_UPDATAFILENAME_EG91V "module_EG91V.zip"
|
||||
#define OTA_FTP_CFGFILENAME_EG91A "DFOTA_EG91NA.CFG"
|
||||
#define OTA_FTP_UPDATAFILENAME_EG91A "module_EG91NA.zip"
|
||||
|
||||
#define OTA_FTP_CFGFILENAME_EC25E "DFOTA_E.CFG"
|
||||
#define OTA_FTP_UPDATAFILENAME_EC25E "module_E.zip"
|
||||
#define OTA_FTP_CFGFILENAME_EC25V "DFOTA_V.CFG"
|
||||
#define OTA_FTP_UPDATAFILENAME_EC25V "module_V.zip"
|
||||
#define OTA_FTP_CFGFILENAME_EC25A "DFOTA_A.CFG"
|
||||
#define OTA_FTP_UPDATAFILENAME_EC25A "module_A.zip"
|
||||
|
||||
#define DFOTA_OTA_DIR "DFOTA_S550"
|
||||
#if 0
|
||||
typedef enum _OTA_FTP
|
||||
{
|
||||
OTA_FTP_FRIST =(unsigned char)0x01,
|
||||
OTA_FTP_CURVER,
|
||||
OTA_FTP_QICSGP,
|
||||
OTA_FTP_QICSGP1,
|
||||
OTA_FTP_QIACT,
|
||||
OTA_FTP_QFTPCFG1,
|
||||
OTA_FTP_QFTPCFG2,
|
||||
OTA_FTP_QFTPCFG3,
|
||||
OTA_FTP_QFTPCFG4,
|
||||
OTA_FTP_QFTPCFG5,
|
||||
OTA_FTP_QFTPOPEN,
|
||||
OTA_FTP_QFTPNLST,
|
||||
OTA_FTP_QFTPGETCFG,
|
||||
OTA_FTP_QFTPCLOSE,
|
||||
OTA_FTP_OPENCFG,
|
||||
OTA_FTP_SEEKCFG,
|
||||
OTA_FTP_READCFG,
|
||||
OTA_FTP_CLOSECFG,
|
||||
OTA_FTP_QIDEACT,
|
||||
OTA_FTP_QFOTADL,
|
||||
OTA_FTP_DOWNLOAD,
|
||||
OTA_FTP_UPDATING,
|
||||
OTA_FTP_UPDATING1,
|
||||
OTA_FTP_UPDATING2,
|
||||
OTA_FTP_UPDATAEND,
|
||||
OTA_FTP_CHECK,
|
||||
OTA_FTP_QGMR,
|
||||
OTA_FTP_END,
|
||||
}OTA_FTP;
|
||||
|
||||
typedef enum _OTA_Cue
|
||||
{
|
||||
OTA_UPDATING = (unsigned char)0x01,
|
||||
OTA_NOUPDATE,
|
||||
OTA_SUCCESS,
|
||||
OTA_FAIL,
|
||||
OTA_TIME_OUT = (unsigned char)0x64,/*100*/
|
||||
OTA_FILE_OPEN_ERROR = (unsigned char)0xc8,/*200*/
|
||||
OTA_FILE_SIZE_ERROR,
|
||||
OTA_DOWNLOAD_ERROR,
|
||||
OTA_UPDATED_ERROR,
|
||||
OTA_VERTION_ERROR,
|
||||
OTA_BATTERY_LOW,
|
||||
}OTA_Cue;
|
||||
#endif
|
||||
|
||||
typedef struct sf_ota_attrs {
|
||||
int server_type;
|
||||
char server_url[128];
|
||||
|
@ -35,6 +111,44 @@ typedef struct sf_ota_attrs {
|
|||
//SSL *ssl;
|
||||
//SSL_CTX *ctx;
|
||||
} SF_OTA_ATTRS;
|
||||
|
||||
typedef enum _OTA_ERR_CODE_E{
|
||||
OTA_ERROR_QIACT = 1,
|
||||
OTA_ERROR_VERTION = 2,
|
||||
OTA_ERROR_VERSION_INVALID= 3,
|
||||
OTA_ERROR_TIME_OUT = 4,
|
||||
OTA_ERROR_BAT_LOW = 5,
|
||||
OTA_ERROR_FTP_OPEN = 6,
|
||||
OTA_ERROR_FTP_NLST = 7,
|
||||
OTA_ERROR_FTP_GET = 8,
|
||||
OTA_ERROR_FTP_QIDEACT = 9,
|
||||
OTA_ERROR_FTP_QFSEEK = 10,
|
||||
OTA_ERROR_FTP_CFGFORMAT = 11,
|
||||
OTA_ERROR_FTP_QFREAD = 12,
|
||||
OTA_ERROR_FTP_QFOTADL = 13,
|
||||
OTA_ERROR_FTP_DOWNLOAD = 14,
|
||||
OTA_ERROR_FTP_UPDATE = 15,
|
||||
OTA_ERROR_QIDEACT = 16,
|
||||
OTA_ERROR_BUTT,
|
||||
}OTA_ERR_CODE_e;
|
||||
|
||||
#define SF_OTA_ERROR_QIACT SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_QIACT)
|
||||
#define SF_OTA_ERROR_VERTION SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_VERTION)
|
||||
#define SF_OTA_ERROR_VERTION_INVAlID SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_VERSION_INVALID)
|
||||
#define SF_OTA_ERROR_TIME_OUT SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_TIME_OUT)
|
||||
#define SF_OTA_ERROR_BAT_LOW SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_BAT_LOW)
|
||||
#define SF_OTA_ERROR_FTP_OPEN SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_FTP_OPEN)
|
||||
#define SF_OTA_ERROR_FTP_NLST SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_FTP_NLST)
|
||||
#define SF_OTA_ERROR_FTP_GET SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_FTP_GET)
|
||||
#define SF_OTA_ERROR_FTP_QIDEACT SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_FTP_QIDEACT)
|
||||
#define SF_OTA_ERROR_FTP_QFSEEK SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_FTP_QFSEEK)
|
||||
#define SF_OTA_ERROR_FTP_CFGFORMAT SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_FTP_CFGFORMAT)
|
||||
#define SF_OTA_ERROR_FTP_QFREAD SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_FTP_QFREAD)
|
||||
#define SF_OTA_ERROR_FTP_QFOTADL SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_FTP_QFOTADL)
|
||||
#define SF_OTA_ERROR_FTP_DOWNLOAD SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_FTP_DOWNLOAD)
|
||||
#define SF_OTA_ERROR_FTP_UPDATE SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_FTP_UPDATE)
|
||||
#define SF_OTA_ERROR_QIDEACT SF_ERR_ID(SF_MOD_OTA, OTA_ERROR_QIDEACT)
|
||||
|
||||
SINT32 upgrade_ota_file_IsExsit(SF_CHAR *fileName);
|
||||
|
||||
SINT32 sf_upgrade_ota_init(void);
|
||||
|
@ -52,6 +166,7 @@ SINT32 sf_upgrade_ota_filecheck(void);
|
|||
SINT32 sf_upgrade_ota_param_bak(void);
|
||||
|
||||
SINT32 sf_upgrade_ota_param_recover(void);
|
||||
SINT32 sf_module_ota_ftp(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
|
|
|
@ -220,6 +220,7 @@ typedef enum SF_MOD_e {
|
|||
SF_MOD_SMS,
|
||||
SF_MOD_4G,
|
||||
SF_MOD_4G_SEND,
|
||||
SF_MOD_OTA,
|
||||
SF_MOD_FILE,
|
||||
SF_MOD_HTTP,
|
||||
SF_MOD_TTY,
|
||||
|
@ -491,6 +492,8 @@ typedef enum sf_PARA_MESSAGE_TYPE_E
|
|||
SF_PARA_CMD_USB_INIT = 0x1F08,
|
||||
SF_PARA_CMD_GPS_STATUS = 0X1F09,
|
||||
SF_PARA_CMD_FTP_CONNECT_STATUS= 0X1F0A,
|
||||
SF_PARA_CMD_MOUP_OTA = 0X1F0F,
|
||||
|
||||
}SF_PARA_MESSAGE_TYPE_E;
|
||||
|
||||
typedef enum sf_WIFI_MESSAGE_TYPE_E
|
||||
|
|
|
@ -68,6 +68,7 @@ SINT32 sf_app_mcu_para_power_no_start(void);
|
|||
SINT32 sf_app_mcu_updata_start(void);
|
||||
UINT8 sf_app_get_mcu_init_flag(void);
|
||||
SINT32 sf_app_lpa_start(void);
|
||||
void sf_do_4g_upgrade_ota_thread(void);
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
|
|
|
@ -886,6 +886,15 @@ static SINT32 sf_app_proccess_cmd_para_update(SF_MESSAGE_BUF_S *pMessageBuf)
|
|||
sf_do_4g_upgrade_thread();
|
||||
}
|
||||
break;
|
||||
case SF_PARA_CMD_MOUP_OTA:
|
||||
ModuleUpdating = pMessageBuf->arg2;
|
||||
MLOGD("ModuleUpdating = %d\n",ModuleUpdating);
|
||||
|
||||
if(ModuleUpdating){
|
||||
sf_do_4g_upgrade_ota_thread();
|
||||
}
|
||||
break;
|
||||
|
||||
case SF_PARA_CMD_IR_LED_STATUS:
|
||||
IsNightLedOn = pMessageBuf->arg2;
|
||||
break;
|
||||
|
|
|
@ -1384,6 +1384,79 @@ void sf_do_4g_upgrade_thread(void)
|
|||
}
|
||||
}
|
||||
|
||||
void* sf_sys_do_4g_upgrade_ota(void *arg)
|
||||
{
|
||||
//int s32Ret = 0;
|
||||
// UINT8 updateFileName[60] = {0};
|
||||
UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
|
||||
SLOGW("Begin to do 4G OTA Upgrade!\n");
|
||||
|
||||
if(sf_is_enough_power_to_update() == FALSE)
|
||||
{
|
||||
sf_sys_status_led_set(SF_LED_SYS_STATE_ERROR);
|
||||
}
|
||||
else{
|
||||
|
||||
//if(sf_is_4g_module_usb_update_file_exist(updateFileName))
|
||||
{
|
||||
if(strncmp(puiPara->ModuleVer, GPRS_MODULE_TYPE_EG915Q, 6) == 0){
|
||||
sf_cmd_4g_usb_boot();
|
||||
}
|
||||
|
||||
// sf_mcu_reg_set(SF_MCU_SOFT_UPDATE, 1);
|
||||
// sf_set_module_update(1);
|
||||
//sf_set_send_statu(TRUE);
|
||||
sf_sys_status_led_set(SF_LED_SYS_STATE_UPDATE);
|
||||
//BKG_PostEvent(NVTEVT_BKW_FW_UPDATE);
|
||||
if(0 != sf_module_ota_ftp()){
|
||||
sf_sys_status_led_set(SF_LED_SYS_STATE_ERROR);
|
||||
}
|
||||
else {
|
||||
//SysResetFlag();
|
||||
sf_sys_status_led_set(SF_LED_SYS_STATE_NORMAL);
|
||||
}
|
||||
// sf_mcu_reg_set(SF_MCU_SOFT_UPDATE, 0);
|
||||
// sf_set_send_statu(FALSE);
|
||||
// sf_set_module_update(0);
|
||||
sf_sleep_ms(1000);
|
||||
//Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, 0);
|
||||
if(PWR_ON_SETUP == sf_poweron_type_get()){
|
||||
sf_set_power_off_flag(1);
|
||||
SF_MESSAGE_BUF_S stMessageBuf = {0};
|
||||
stMessageBuf.cmdId = CMD_POWEROFF;
|
||||
stMessageBuf.arg1 = APP_POWER_OFF_NORMAL;
|
||||
sf_com_message_send_to_cardv(&stMessageBuf);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
ModeuleUpgradeTskParam.IsRun = 0;
|
||||
SLOGW("Begin to do 4G OTA Upgrade e\n");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void sf_do_4g_upgrade_ota_thread(void)
|
||||
{
|
||||
printf("ModeuleUpgradeTskParam.IsRun:%d\n", ModeuleUpgradeTskParam.IsRun);
|
||||
if(ModeuleUpgradeTskParam.IsRun != 0)
|
||||
{
|
||||
// ModeuleUpgradeTskParam.IsRun = 0;
|
||||
// pthread_join(ModeuleUpgradeTskParam.TskId, NULL);
|
||||
SLOGW("4G OTA Upgrade thread run\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if(!ModeuleUpgradeTskParam.IsRun)
|
||||
{
|
||||
pthread_create(&ModeuleUpgradeTskParam.TskId, NULL, sf_sys_do_4g_upgrade_ota, NULL);
|
||||
ModeuleUpgradeTskParam.IsRun = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************
|
||||
Function: sf_wifi_start_to_cardv
|
||||
Description: wifi on
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include <sys/vfs.h>
|
||||
#include<pthread.h>
|
||||
|
||||
#include "sf_param_common.h"
|
||||
#include "sf_type.h"
|
||||
#include "sf_log.h"
|
||||
#include "sf_md5.h"
|
||||
|
@ -21,8 +22,12 @@
|
|||
#include "sf_message_queue.h"
|
||||
#include "sf_http_server.h"
|
||||
//#include "sf_param_common.h"
|
||||
|
||||
|
||||
#include "sf_battery.h"
|
||||
#include "sf_ftp.h"
|
||||
#include "sf_commu_mcu_reg.h"
|
||||
#include "sf_common.h"
|
||||
#include "sf_hal_ttyusb.h"
|
||||
#include "sf_eg91_sim.h"
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
extern "C" {
|
||||
|
@ -30,6 +35,8 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
static SF_OTA_ATTRS stOtaAttrs = {0};
|
||||
extern char logStr[128];
|
||||
extern char gsmPara[GPRS_INFO_LINE_MAX];
|
||||
SINT32 packet_log_printf(UINT8 *pbuf,UINT16 lenth)
|
||||
{
|
||||
UINT16 i= 0;
|
||||
|
@ -631,7 +638,7 @@ SINT32 sf_upgrade_ota_env_set(void)
|
|||
SINT32 sf_upgrade_ota_reset(void)
|
||||
{
|
||||
SF_CHAR data_buff[BUFFER_SIZE] = {0};
|
||||
if(stOtaAttrs.filename == NULL) {
|
||||
if(stOtaAttrs.filename[0] == '\0') {
|
||||
MLOGE("souce filename is null\n");
|
||||
return SF_FAILURE;
|
||||
}
|
||||
|
@ -651,6 +658,886 @@ SINT32 sf_upgrade_ota_deinit(void)
|
|||
return SF_SUCCESS;
|
||||
}
|
||||
|
||||
/*************************************************
|
||||
Function: sf_module_ota_ftp
|
||||
Description: 4g module ftp update
|
||||
Input: N/A
|
||||
Output: N/A
|
||||
Return: N/A
|
||||
Others: N/A
|
||||
*************************************************/
|
||||
SINT32 sf_module_ota_ftp(void)
|
||||
{
|
||||
UINT32 location = OTA_FTP_FRIST;
|
||||
SINT32 sts = OTA_NOUPDATE; /*0:updating 1:no update 2:update fail 3:update success*/
|
||||
UINT32 errorCode = 0;
|
||||
UINT32 calltime=0;
|
||||
UINT32 time = 0;
|
||||
UINT8 cfgfilehandle[5] = {0};
|
||||
UINT8 Version[48] = {0};
|
||||
UINT8 srcVersion[48] = {0};
|
||||
UINT8 desVersion[48] = {0};
|
||||
SINT64 cTime = 0;
|
||||
SINT64 eTime = 0;
|
||||
double elapsed_time = 0;
|
||||
UINT8 autoUpdata=0;
|
||||
|
||||
UINT8 *pTemp = NULL;
|
||||
UINT8 *pTemp1 = NULL;
|
||||
UINT8 modulVerStr[50]= {0};
|
||||
UINT8 ftpIp[40]= {0};
|
||||
UINT8 ftpPort[6]= {0};
|
||||
UINT8 ftpUsername[40]= {0};
|
||||
UINT8 ftpPassword[20]= {0};
|
||||
//UINT8 convertUsername[100]= {0};
|
||||
//UINT8 convertPassword[100]= {0};
|
||||
UINT8 *cfgfilename = NULL;
|
||||
UINT8 *updatafilename = NULL;
|
||||
UINT8 *modeVer = NULL;
|
||||
UINT8 baudrateCheckTime = 0;
|
||||
UINT8 baudrateChangeFlg = 0;
|
||||
UINT8 pdpInedx = 0;
|
||||
UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
|
||||
SINT32 ttyRet = 0;
|
||||
SF_TTY_DATA_TYPE_S ttyData = { .waitMs = 2000, .len = 255, .lenMax = (GPRS_INFO_LINE_MAX-1), .cmp = "OK", .cmperr = "ERROR", .data = gsmPara};
|
||||
|
||||
|
||||
SLOGD(" s\n");
|
||||
if(sf_is_enough_power_to_update() == FALSE)
|
||||
{
|
||||
return OTA_BATTERY_LOW;
|
||||
}
|
||||
if(strncmp(puiPara->ModuleVer, GPRS_MODULE_TYPE_EG915Q, 6) == 0)
|
||||
{
|
||||
//eg915q
|
||||
}
|
||||
else
|
||||
{
|
||||
system("killall quectel-CM-EG91");
|
||||
sleep(2);
|
||||
system("ifconfig eth0 down");
|
||||
}
|
||||
if(SF_STRSTR(puiPara->ModuleVer, EC25V_MODULE_VER))
|
||||
{
|
||||
cfgfilename = (UINT8 *)OTA_FTP_CFGFILENAME_EC25V;
|
||||
updatafilename = (UINT8 *)OTA_FTP_UPDATAFILENAME_EC25V;
|
||||
modeVer = (UINT8 *)EC25V_MODULE_VER;
|
||||
}
|
||||
else if(SF_STRSTR(puiPara->ModuleVer, EC25A_MODULE_VER))
|
||||
{
|
||||
cfgfilename = (UINT8 *)OTA_FTP_CFGFILENAME_EC25A;
|
||||
updatafilename = (UINT8 *)OTA_FTP_UPDATAFILENAME_EC25A;
|
||||
modeVer = (UINT8 *)EC25A_MODULE_VER;
|
||||
}
|
||||
else if(SF_STRSTR(puiPara->ModuleVer, EC25E_MODULE_VER))
|
||||
{
|
||||
cfgfilename = (UINT8 *)OTA_FTP_CFGFILENAME_EC25E;
|
||||
updatafilename = (UINT8 *)OTA_FTP_UPDATAFILENAME_EC25E;
|
||||
modeVer = (UINT8 *)EC25E_MODULE_VER;
|
||||
}
|
||||
else if(SF_STRSTR(puiPara->ModuleVer, EG91V_MODULE_VER))
|
||||
{
|
||||
cfgfilename = (UINT8 *)OTA_FTP_CFGFILENAME_EG91V;
|
||||
updatafilename = (UINT8 *)OTA_FTP_UPDATAFILENAME_EG91V;
|
||||
modeVer = (UINT8 *)EG91V_MODULE_VER;
|
||||
}
|
||||
else if(SF_STRSTR(puiPara->ModuleVer, EG91A_MODULE_VER))
|
||||
{
|
||||
cfgfilename = (UINT8 *)OTA_FTP_CFGFILENAME_EG91A;
|
||||
updatafilename = (UINT8 *)OTA_FTP_UPDATAFILENAME_EG91A;
|
||||
modeVer = (UINT8 *)EG91A_MODULE_VER;
|
||||
}
|
||||
else if(SF_STRSTR(puiPara->ModuleVer, EG91E_MODULE_VER))
|
||||
{
|
||||
cfgfilename = (UINT8 *)OTA_FTP_CFGFILENAME_EG91E;
|
||||
updatafilename = (UINT8 *)OTA_FTP_UPDATAFILENAME_EG91E;
|
||||
modeVer = (UINT8 *)EG91E_MODULE_VER;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("module ver not support update\n");
|
||||
return sts;
|
||||
}
|
||||
|
||||
printf("cfgfilename=%s\n", cfgfilename);
|
||||
printf("updatafilename=%s\n", updatafilename);
|
||||
|
||||
SF_STRCPY(ftpIp, puiPara->OtaFtpIp);
|
||||
SF_STRCPY(ftpPort, puiPara->OtaFtpPort);
|
||||
SF_STRCPY(ftpUsername, puiPara->OtaFtpUserName);
|
||||
SF_STRCPY(ftpPassword, puiPara->OtaFtpPassWord);
|
||||
|
||||
sf_set_module_update(1);
|
||||
sf_mcu_reg_set(SF_MCU_SOFT_UPDATE, 1);
|
||||
sts = OTA_UPDATING;
|
||||
|
||||
while(sts == OTA_UPDATING)
|
||||
{
|
||||
|
||||
switch(location)
|
||||
{
|
||||
case OTA_FTP_FRIST:
|
||||
SF_SPRINTF(gsmPara, "AT\r");
|
||||
location = OTA_FTP_CURVER;
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
break;
|
||||
|
||||
case OTA_FTP_CURVER:
|
||||
if(SF_STRSTR(gsmPara,"OK"))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QGMR\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_QICSGP;
|
||||
}
|
||||
else
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_QICSGP:
|
||||
if(SF_STRSTR(gsmPara,"OK"))
|
||||
{
|
||||
pTemp = SF_STRSTR(gsmPara, MODULE_VER);
|
||||
|
||||
if(pTemp != NULL)
|
||||
{
|
||||
pTemp1 = SF_STRTOK(pTemp, "\r");
|
||||
printf("pTemp1=%s\n", pTemp1);
|
||||
SF_STRCPY(Version, pTemp1);
|
||||
printf("Version: %s\n", Version);
|
||||
|
||||
if(SF_STRSTR(puiPara->Sim4gApn, APN_4G_VERIZON))
|
||||
{
|
||||
pdpInedx = V_PDP_INDEX;
|
||||
SF_SPRINTF(gsmPara,"AT+QICSGP=%d\r", V_PDP_INDEX);
|
||||
location=OTA_FTP_QICSGP1;
|
||||
}
|
||||
else if(SF_STRSTR(puiPara->Sim4gApn, APN_4G_ATT))
|
||||
{
|
||||
pdpInedx = A_PDP_INDEX;
|
||||
SF_SPRINTF(gsmPara, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r",A_PDP_INDEX, puiPara->Sim4gApn,puiPara->Sim4gUsr,puiPara->Sim4gPwd);
|
||||
location=OTA_FTP_QIACT;
|
||||
}
|
||||
else
|
||||
{
|
||||
pdpInedx = E_PDP_INDEX;
|
||||
SF_SPRINTF(gsmPara, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r",E_PDP_INDEX, puiPara->Sim4gApn,puiPara->Sim4gUsr,puiPara->Sim4gPwd);
|
||||
location=OTA_FTP_QIACT;
|
||||
}
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Module version unknow error\n");
|
||||
errorCode = SF_OTA_ERROR_VERTION_INVAlID;
|
||||
sts = OTA_NOUPDATE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QGMR\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_QICSGP1:
|
||||
if(SF_STRSTR(gsmPara, "OK"))
|
||||
{
|
||||
if(SF_STRSTR(gsmPara, "+QICSGP: 0") || SF_STRSTR(gsmPara, "+QICSGP: 1,\"\""))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r",V_PDP_INDEX, puiPara->Sim4gApn,puiPara->Sim4gUsr,puiPara->Sim4gPwd);
|
||||
}
|
||||
else
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT\r");
|
||||
}
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_QIACT;
|
||||
}
|
||||
break;
|
||||
case OTA_FTP_QIACT:
|
||||
if(SF_STRSTR(gsmPara, "OK"))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QIACT=%d\r", pdpInedx);
|
||||
location = OTA_FTP_QFTPCFG1;
|
||||
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
calltime=0;
|
||||
}
|
||||
|
||||
break;
|
||||
case OTA_FTP_QFTPCFG1:
|
||||
if(SF_STRSTR(gsmPara, "OK"))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPCFG=\"contextid\",%d\r", pdpInedx);
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_QFTPCFG2;
|
||||
calltime=0;
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara,"ERROR"))
|
||||
{
|
||||
calltime++;
|
||||
if(calltime < 6)
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QIACT=%d\r", pdpInedx);
|
||||
}
|
||||
else
|
||||
{
|
||||
location = OTA_FTP_QIDEACT;
|
||||
calltime=0;
|
||||
errorCode = SF_OTA_ERROR_QIACT;
|
||||
SLOGE("[ERROR]OTA_FTP QIACT over try 6 times");
|
||||
SF_STRCPY(gsmPara, "AT\r");
|
||||
}
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_QFTPCFG2:
|
||||
//if(SF_STRSTR(gsmPara, "OK"))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPCFG=\"account\",\"%s\",\"%s\"\r", ftpUsername, ftpPassword);
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_QFTPCFG3;
|
||||
}
|
||||
break;
|
||||
|
||||
case OTA_FTP_QFTPCFG3:
|
||||
//if(SF_STRSTR(gsmPara, "OK"))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPCFG=\"filetype\",1\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_QFTPCFG4;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_QFTPCFG4:
|
||||
//if(SF_STRSTR(gsmPara, "OK"))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPCFG=\"transmode\",1\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location=OTA_FTP_QFTPCFG5;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_QFTPCFG5:
|
||||
//if(SF_STRSTR(gsmPara, "OK"))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPCFG=\"restenable\",0\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location=OTA_FTP_QFTPOPEN;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_QFTPOPEN:
|
||||
if(SF_STRSTR(gsmPara, "OK"))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPOPEN=\"%s\",%s\r", ftpIp, ftpPort);
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_QFTPNLST;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_QFTPNLST:
|
||||
if(SF_STRSTR(gsmPara, "+QFTPOPEN:"))
|
||||
{
|
||||
if(SF_STRSTR(gsmPara, "+QFTPOPEN: 0"))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPGET=\"%s/%s\",\"RAM:%s\"\r", DFOTA_OTA_DIR, cfgfilename, cfgfilename);
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_QFTPCLOSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
location = OTA_FTP_QIDEACT;
|
||||
errorCode = SF_OTA_ERROR_FTP_OPEN;
|
||||
SLOGE("OTA_FTP Open Failed.");
|
||||
SF_STRCPY(gsmPara, "AT\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara, "+CME ERROR"))
|
||||
{
|
||||
location = OTA_FTP_QIDEACT;
|
||||
errorCode = SF_OTA_ERROR_FTP_OPEN;
|
||||
SLOGE("OTA_FTP QFTPOPEN CME ERROR.");
|
||||
SF_STRCPY(gsmPara, "AT\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_QFTPGETCFG:
|
||||
if(SF_STRSTR(gsmPara, "+QFTPNLST:"))
|
||||
{
|
||||
if((SF_STRSTR(gsmPara, cfgfilename)!= NULL) && (SF_STRSTR(gsmPara, updatafilename)!= NULL))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPGET=\"%s/%s\",\"RAM:%s\"\r", DFOTA_OTA_DIR, cfgfilename, cfgfilename);
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_QFTPCLOSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
location = OTA_FTP_QIDEACT;
|
||||
errorCode = SF_OTA_ERROR_FTP_NLST;
|
||||
SLOGE("OTA_FTP NO NEED UPDATA FILE.");
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara, "+CME ERROR"))
|
||||
{
|
||||
location = OTA_FTP_QIDEACT;
|
||||
errorCode = SF_OTA_ERROR_FTP_NLST;
|
||||
SLOGE("OTA_FTP QFTPNLST CME ERROR.");
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_QFTPCLOSE:
|
||||
if(SF_STRSTR(gsmPara, "+QFTPGET:"))
|
||||
{
|
||||
if(SF_STRSTR(gsmPara, "+QFTPGET: 0"))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_QIDEACT;
|
||||
sf_sleep_ms(200);
|
||||
}
|
||||
else
|
||||
{
|
||||
location = OTA_FTP_QIDEACT;
|
||||
errorCode = SF_OTA_ERROR_FTP_GET;
|
||||
SLOGE("OTA_FTP GET CFG FILE FAIL.");
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
sf_sleep_ms(200);
|
||||
}
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara, "+CME ERROR"))
|
||||
{
|
||||
location= OTA_FTP_QIDEACT;
|
||||
errorCode = SF_OTA_ERROR_FTP_GET;
|
||||
SLOGE("OTA_FTP QFTPGET CME ERROR.");
|
||||
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
sf_sleep_ms(200);
|
||||
}
|
||||
|
||||
break;
|
||||
case OTA_FTP_QIDEACT:
|
||||
//if(SF_STRSTR(gsmPara, "OK"))
|
||||
{
|
||||
calltime = 0;
|
||||
|
||||
SF_SPRINTF(gsmPara, "AT+QIDEACT=%d\r", pdpInedx);
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
|
||||
if(errorCode == 0)
|
||||
location = OTA_FTP_OPENCFG;
|
||||
else
|
||||
location = OTA_FTP_END;
|
||||
}
|
||||
|
||||
break;
|
||||
case OTA_FTP_OPENCFG:
|
||||
if(SF_STRSTR(gsmPara, "OK"))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QFOPEN=\"RAM:%s\",2\r", cfgfilename);
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_SEEKCFG;
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara,"ERROR"))
|
||||
{
|
||||
calltime++;
|
||||
if(calltime < 6)
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QIDEACT=%d\r", pdpInedx);
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
else
|
||||
{
|
||||
location = OTA_FTP_END;
|
||||
calltime=0;
|
||||
errorCode = SF_OTA_ERROR_FTP_QIDEACT;
|
||||
SLOGE("[ERROR]OTA_FTP QIDEACT over try 6 times");
|
||||
SF_STRCPY(gsmPara, "AT\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_SEEKCFG:
|
||||
if(SF_STRSTR(gsmPara, "+QFOPEN:"))
|
||||
{
|
||||
pTemp = SF_STRSTR(gsmPara, "+QFOPEN: ");
|
||||
SF_STRNCPY(cfgfilehandle, pTemp+9, 4);
|
||||
printf("cfgfilehandle=%s\n",cfgfilehandle);
|
||||
|
||||
SF_SPRINTF(gsmPara, "AT+QFSEEK=%s,10,0\r", cfgfilehandle);
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_READCFG;
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara, "+CME ERROR"))
|
||||
{
|
||||
SLOGE("OTA_FTP QFOPEN CME ERROR.");
|
||||
location= OTA_FTP_END;
|
||||
errorCode = SF_OTA_ERROR_FTP_OPEN;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_READCFG:
|
||||
if(SF_STRSTR(gsmPara, "OK"))
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QFREAD=%s,117\r", cfgfilehandle);
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_CLOSECFG;
|
||||
sf_sleep_ms(500);
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara, "+CME ERROR"))
|
||||
{
|
||||
location= OTA_FTP_END;
|
||||
errorCode = SF_OTA_ERROR_FTP_QFSEEK;
|
||||
SLOGE("OTA_FTP QFSEEK CME ERROR.");
|
||||
SF_SPRINTF(gsmPara, "AT+QFCLOSE=%s\r", cfgfilehandle);
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_CLOSECFG:
|
||||
if(SF_STRSTR(gsmPara, "CONNECT 117") !=NULL)
|
||||
{
|
||||
pTemp = SF_STRSTR(gsmPara, "CONNECT 117");
|
||||
|
||||
if(pTemp[13] == 1)
|
||||
autoUpdata = 1;
|
||||
// printf("pTemp=%s\n",pTemp+30);
|
||||
pTemp+=32;
|
||||
// pTemp = SF_STRSTR(pTemp, modeVer);
|
||||
int mm = 0;
|
||||
while((pTemp != NULL) && (mm < 60))
|
||||
{
|
||||
printf("%s",pTemp++);
|
||||
if(SF_STRSTR(pTemp, modeVer))
|
||||
{
|
||||
printf("tmp:%s",pTemp);
|
||||
break;
|
||||
}
|
||||
mm++;
|
||||
}
|
||||
printf("\n");
|
||||
if((pTemp != NULL))
|
||||
{
|
||||
snprintf((char *)srcVersion, sizeof(srcVersion), "%s", (char *)pTemp);
|
||||
snprintf((char *)desVersion, sizeof(desVersion), "%s", (char *)pTemp+48);
|
||||
}
|
||||
|
||||
|
||||
// SF_STRCPY(srcVersion, pTemp+35);
|
||||
// SF_STRCPY(desVersion, pTemp+35+48);
|
||||
|
||||
printf("autoUpdata=%d\n",autoUpdata);
|
||||
printf("srcVersion=%s\n",srcVersion);
|
||||
printf("dstVersion=%s\n",desVersion);
|
||||
|
||||
SF_SPRINTF(gsmPara, "AT+QFCLOSE=%s\r", cfgfilehandle);
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_QFOTADL;
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara, "CONNECT"))
|
||||
{
|
||||
printf("DFOTA.CFG READ error\n");
|
||||
printf("gsmPara=%s\n",gsmPara);
|
||||
SLOGE("OTA_FTP CFG FILE FORMAT ERROR.");
|
||||
SF_SPRINTF(gsmPara, "AT+QFCLOSE=%s\r", cfgfilehandle);
|
||||
location= OTA_FTP_END;
|
||||
errorCode = SF_OTA_ERROR_FTP_CFGFORMAT;
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara, "+CME ERROR"))
|
||||
{
|
||||
SLOGE("OTA_FTP QFREAD CME ERROR.");
|
||||
SF_SPRINTF(gsmPara, "AT+QFCLOSE=%s\r", cfgfilehandle);
|
||||
location= OTA_FTP_END;
|
||||
errorCode = SF_OTA_ERROR_FTP_QFREAD;
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_QFOTADL:
|
||||
//if((ConfigureModeFlag || module_updata_mms_cmd == 1) || ((StartMode == 8) && (autoUpdata == 1)))
|
||||
{
|
||||
if(SF_STRCMP(srcVersion, Version)==0)
|
||||
{
|
||||
/*if(ConfigureModeFlag)
|
||||
{
|
||||
appOsdLib_OsdLayerShapeClear(APP_OSD_SHAPE_RECT, 0, 104, 320, 32, 0, 0);
|
||||
appOsdLib_TextIDDraw(320/2, 240/2, SP5K_GFX_ALIGN_CENTER, ID_STR_UPDATING___);
|
||||
}*/
|
||||
//app_FTP_Info_Convert(ftpUsername, convertUsername);
|
||||
//app_FTP_Info_Convert(ftpPassword, convertPassword);
|
||||
//SF_SPRINTF(gsmPara, "AT+QFOTADL=\"FTP://%s:%s@%s:%s/DFOTA/%s\"\r", convertUsername, convertPassword, ftpIp, ftpPort,updatafilename);
|
||||
SF_SPRINTF(gsmPara, "AT+QFOTADL=\"FTP://%s:%s@%s:%s/%s/%s\"\r", ftpUsername, ftpPassword, ftpIp, ftpPort, DFOTA_OTA_DIR, updatafilename);
|
||||
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_DOWNLOAD;
|
||||
}
|
||||
else
|
||||
{
|
||||
sts = OTA_NOUPDATE;
|
||||
errorCode = SF_OTA_ERROR_VERTION;
|
||||
printf("src version not equal\n");
|
||||
}
|
||||
|
||||
}
|
||||
/*else
|
||||
{
|
||||
printf("NO NEED AUTO UPDATA\n");
|
||||
sts = OTA_NOUPDATE;
|
||||
}*/
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_DOWNLOAD:
|
||||
if(SF_STRSTR(gsmPara,"OK"))
|
||||
{
|
||||
calltime = 0;
|
||||
time = 0;
|
||||
sf_mcu_wdg_set(5);
|
||||
location = OTA_FTP_UPDATING;
|
||||
sf_time(&cTime);
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara,"ERROR"))
|
||||
{
|
||||
errorCode = SF_OTA_ERROR_FTP_QFOTADL;
|
||||
sts = OTA_DOWNLOAD_ERROR;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_UPDATING:
|
||||
if(SF_STRSTR(gsmPara,"\"FTPEND\",0"))
|
||||
{
|
||||
printf("gsmPara:%s\n", gsmPara);
|
||||
time = 0;
|
||||
calltime = 0;
|
||||
location = OTA_FTP_UPDATING1;
|
||||
sf_mcu_wdg_set(5);
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara,"\"FTPEND\""))
|
||||
{
|
||||
printf("gsmPara:%s\n", gsmPara);
|
||||
time = 0;
|
||||
printf("DOWMLOAD ERROR\n");
|
||||
SLOGE("OTA Download error");
|
||||
SLOGE(gsmPara);
|
||||
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
|
||||
sts = OTA_DOWNLOAD_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
time = 0;
|
||||
sf_time(&eTime);
|
||||
elapsed_time = difftime(eTime, cTime);
|
||||
// s
|
||||
printf("time: %.2f s\n", elapsed_time);
|
||||
if(elapsed_time > 120)
|
||||
{
|
||||
SLOGE("OTA Download timeout");
|
||||
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
|
||||
sts = OTA_TIME_OUT;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case OTA_FTP_UPDATING1:
|
||||
|
||||
if(SF_STRSTR(gsmPara,"+QIND: \"FOTA\",\"START\"") || SF_STRSTR(gsmPara,"+QIND: \"FOTA\",\"UPDATING\""))
|
||||
{
|
||||
location = OTA_FTP_UPDATING2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(baudrateCheckTime > 60)
|
||||
{
|
||||
baudrateChangeFlg = 1;
|
||||
SLOGW("baudrateCheckTime:%d\n",baudrateCheckTime);
|
||||
location = OTA_FTP_UPDATING2;
|
||||
}
|
||||
else
|
||||
{
|
||||
baudrateCheckTime++;
|
||||
sf_sleep_ms(800);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_UPDATING2:
|
||||
if(SF_STRSTR(gsmPara,"\"END\",0"))
|
||||
{
|
||||
printf("gsmPara:%s\n", gsmPara);
|
||||
time = 0;
|
||||
|
||||
if(baudrateChangeFlg == 1)
|
||||
{
|
||||
SLOGW("baudrateChangeFlg:%d\n",baudrateChangeFlg);
|
||||
}
|
||||
|
||||
location = OTA_FTP_UPDATAEND;
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara,"\"END\""))
|
||||
{
|
||||
printf("gsmPara:%s\n", gsmPara);
|
||||
time = 0;
|
||||
printf("UPDATED ERROR\n");
|
||||
SLOGE("OTA update error");
|
||||
SLOGE(gsmPara);
|
||||
errorCode = SF_OTA_ERROR_FTP_UPDATE;
|
||||
sts = OTA_UPDATED_ERROR;
|
||||
|
||||
if(baudrateChangeFlg == 1)
|
||||
{
|
||||
SLOGW("baudrateChangeFlg:%d\n",baudrateChangeFlg);
|
||||
}
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara,"UPDATING"))
|
||||
{
|
||||
printf("gsmPara:%s\n", gsmPara);
|
||||
time = 0;
|
||||
calltime = 0;
|
||||
sf_mcu_wdg_set(5);
|
||||
sf_sleep_ms(800);
|
||||
}
|
||||
else
|
||||
{
|
||||
time = 0;
|
||||
calltime++;
|
||||
printf("calltime:%d\n", calltime);
|
||||
|
||||
if(calltime >= 200)
|
||||
{
|
||||
SLOGE("OTA update timeout");
|
||||
errorCode = SF_OTA_ERROR_FTP_UPDATE;
|
||||
sts = OTA_UPDATED_ERROR;
|
||||
|
||||
if(baudrateChangeFlg == 1)
|
||||
{
|
||||
SLOGW("baudrateChangeFlg:%d\n",baudrateChangeFlg);
|
||||
|
||||
}
|
||||
}
|
||||
sf_sleep_ms(800);
|
||||
}
|
||||
break;
|
||||
|
||||
case OTA_FTP_UPDATAEND:
|
||||
if(SF_STRSTR(gsmPara,"RDY"))
|
||||
{
|
||||
sf_sleep_ms(300);
|
||||
printf("UPDATE END\n");
|
||||
SF_SPRINTF(gsmPara, "AT+QGMR\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
location = OTA_FTP_CHECK;
|
||||
}
|
||||
else if(SF_STRSTR(gsmPara,"ERROR"))
|
||||
{
|
||||
errorCode = SF_OTA_ERROR_FTP_UPDATE;
|
||||
sts = OTA_UPDATED_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
sf_sleep_ms(300);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OTA_FTP_CHECK:
|
||||
if(SF_STRSTR(gsmPara, MODULE_VER))
|
||||
{
|
||||
pTemp=SF_STRSTR(gsmPara, MODULE_VER);
|
||||
|
||||
if(pTemp != NULL)
|
||||
{
|
||||
pTemp1 = SF_STRTOK(pTemp, "\r");
|
||||
printf("pTemp1=%s\n", pTemp1);
|
||||
SF_STRCPY(Version, pTemp1);
|
||||
//printf("Version: %s\n", Version);
|
||||
}
|
||||
|
||||
if(SF_STRCMP(Version, desVersion) == 0)
|
||||
{
|
||||
sts = OTA_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
sts = OTA_VERTION_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SF_SPRINTF(gsmPara, "AT+QGMR\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
break;
|
||||
|
||||
case OTA_FTP_END:
|
||||
SF_STRCPY(gsmPara, "AT\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
sts = OTA_FAIL;
|
||||
break;
|
||||
}
|
||||
|
||||
sf_gsm_para_buff_clear();
|
||||
sf_hal_ttyusb2_read_buf(&ttyData);
|
||||
|
||||
if(gsmPara[0] != '\0')
|
||||
{
|
||||
MLOGD("location:%d\n%s\n", location, gsmPara);
|
||||
}
|
||||
time++;
|
||||
if(time >= 300)
|
||||
{
|
||||
if((location > OTA_FTP_QIACT) && (location < OTA_FTP_OPENCFG))
|
||||
{
|
||||
location = OTA_FTP_QIDEACT;
|
||||
errorCode = SF_OTA_ERROR_TIME_OUT;
|
||||
time = 250;
|
||||
calltime = 0;
|
||||
SF_SPRINTF(gsmPara, "AT\r");
|
||||
ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara));
|
||||
SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE);
|
||||
}
|
||||
else
|
||||
{
|
||||
sts = OTA_TIME_OUT;
|
||||
}
|
||||
|
||||
printf("update timeout!\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sf_set_module_update(0);
|
||||
sf_mcu_reg_set(SF_MCU_SOFT_UPDATE, 0);
|
||||
|
||||
/* cal qgmr ver,then save*/
|
||||
printf("Version = %s\n",Version);
|
||||
pTemp = SF_STRSTR(Version, MODULE_VER);
|
||||
if(pTemp != NULL)
|
||||
{
|
||||
UINT8 *pT1 = NULL;
|
||||
UINT8 *pT2 = NULL;
|
||||
UINT8 *pT3 = NULL;
|
||||
|
||||
pT1 = SF_STRSTR(pTemp, MODULE_VER_FLG1);
|
||||
|
||||
if(pT1 == NULL)
|
||||
pT1 = SF_STRSTR(pTemp, MODULE_VER_FLG2);
|
||||
|
||||
pT2 = SF_STRSTR(pTemp,"_");
|
||||
printf("pT1 = %s\n",pT1);
|
||||
printf("pTemp = %s\n",pTemp);
|
||||
printf("pT2 = %s\n",pT2);
|
||||
if(pT1 != NULL)
|
||||
{
|
||||
UINT8 str1[5] = {0};
|
||||
UINT8 str2[5] = {0};
|
||||
UINT8 str3[5] = {0};
|
||||
UINT8 str4[30] = {0};
|
||||
|
||||
memcpy(str1, pTemp+4,pT1-pTemp-4);
|
||||
printf("str1 = %s\n",str1);
|
||||
memcpy(str2, pT1+3,2);
|
||||
printf("str2 = %s\n",str2);
|
||||
memcpy(str3, pT1+6,2);
|
||||
printf("str3 = %s\n",str3);
|
||||
|
||||
if(pT2 != NULL)
|
||||
{
|
||||
pT3 = pT2+1;
|
||||
SF_STRCPY(modulVerStr, pT3);
|
||||
pT3 = SF_STRTOK(modulVerStr, "\r");
|
||||
}
|
||||
|
||||
if(pT3 != NULL)
|
||||
{
|
||||
SF_STRCPY(str4, pT3);
|
||||
printf("str4 = %s\n",str4);
|
||||
SF_SPRINTF(puiPara->ModuleSubver,"S%sY%sY%sY%sS",str1,str2,str3,str4);
|
||||
}
|
||||
else
|
||||
{
|
||||
SF_SPRINTF(puiPara->ModuleSubver,"S%sY%sY%sS",str1,str2,str3);
|
||||
}
|
||||
|
||||
printf("puiPara->ModuleSubver = %s\n",puiPara->ModuleSubver);
|
||||
}
|
||||
}
|
||||
|
||||
printf("Module OTA Update sts:%d errorCode:%d\n", sts, errorCode);
|
||||
if(errorCode)
|
||||
{
|
||||
SF_SPRINTF(logStr, "%x,", errorCode);
|
||||
MLOGE(logStr);
|
||||
}
|
||||
|
||||
printf("sf_module_ota_ftp e\n");
|
||||
|
||||
return sts;
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user