diff --git a/code/application/source/sf_app/code/include/sf_otamng.h b/code/application/source/sf_app/code/include/sf_otamng.h index b8ee9939b..96a8331b3 100644 --- a/code/application/source/sf_app/code/include/sf_otamng.h +++ b/code/application/source/sf_app/code/include/sf_otamng.h @@ -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 diff --git a/code/application/source/sf_app/code/include/sf_param_enum.h b/code/application/source/sf_app/code/include/sf_param_enum.h index 84cdf2b9a..c91948536 100755 --- a/code/application/source/sf_app/code/include/sf_param_enum.h +++ b/code/application/source/sf_app/code/include/sf_param_enum.h @@ -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 diff --git a/code/application/source/sf_app/code/include/sf_system.h b/code/application/source/sf_app/code/include/sf_system.h index 52fc50e73..d3719b7a9 100755 --- a/code/application/source/sf_app/code/include/sf_system.h +++ b/code/application/source/sf_app/code/include/sf_system.h @@ -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 } diff --git a/code/application/source/sf_app/code/source/app/sf_common.c b/code/application/source/sf_app/code/source/app/sf_common.c index 199303ca8..5974ea503 100755 --- a/code/application/source/sf_app/code/source/app/sf_common.c +++ b/code/application/source/sf_app/code/source/app/sf_common.c @@ -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; diff --git a/code/application/source/sf_app/code/source/app/sf_system.c b/code/application/source/sf_app/code/source/app/sf_system.c index 13f4ff0fb..ab7418df0 100755 --- a/code/application/source/sf_app/code/source/app/sf_system.c +++ b/code/application/source/sf_app/code/source/app/sf_system.c @@ -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 diff --git a/code/application/source/sf_app/code/source/updataMng/sf_otamng.c b/code/application/source/sf_app/code/source/updataMng/sf_otamng.c index 75b5e73dd..26f47d1bc 100644 --- a/code/application/source/sf_app/code/source/updataMng/sf_otamng.c +++ b/code/application/source/sf_app/code/source/updataMng/sf_otamng.c @@ -9,6 +9,7 @@ #include #include +#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 }