1.dp 12h问题;2.ota升级

This commit is contained in:
payton 2023-07-28 17:45:12 +08:00
parent edeb7951bb
commit 4428448c85
6 changed files with 70 additions and 821 deletions

View File

@ -213,7 +213,7 @@ SINT32 sf_check_ftp_send(UINT8 mode);
SINT32 sf_send_file_to_ftp(UINT8 mode);
SINT32 sf_4g_module_ota_ftp(void);
SINT32 sf_connect_ftps_server(void);
UINT32 sf_camera_ota_ftp(void);
SINT32 sf_camera_ota_ftp(void);
SINT32 sf_concentrated_ftp_send(void);
SINT32 sf_hd_ftp_send(void);
SINT32 sf_video_ftp_send(void);

View File

@ -63,6 +63,7 @@ UINT8 sf_signal_level_get(UINT8 netFlagG, UINT8 cqSignal);
BOOL sf_get_para_check_flag(void);
void sf_sys_check_flag(void);
BOOL sf_Check_OTA(void);
#ifdef __cplusplus
#if __cplusplus
}

View File

@ -59,6 +59,8 @@ void sf_cmd_4g_usb_boot(void);
void sf_do_4g_upgrade_thread(void);
UINT32 sf_4g_update(UINT8 *upFname);
SINT32 sf_app_load_ko_start(void);
SINT32 sf_app_mcu_para_start(void);
SINT32 app_auto_poweroff_start(void);
#ifdef __cplusplus
#if __cplusplus
}

View File

@ -48,6 +48,7 @@ extern "C" {
#include "sf_sms.h"
#include "sf_ledmng.h"
#include "ftp_manager.h"
#include "sf_system.h"
/**************************************************************************
* C O N S T A N T S *
**************************************************************************/
@ -1147,11 +1148,11 @@ SINT32 sf_ftp_dailyreport_send(void)
if(SF_SUCCESS != ret)
{
sf_dailyReport_set();
printf("%s:%d err ret: [0x%08X] filePath:%s\n", __FUNCTION__, __LINE__, ret, filePath);
}else {
DailyReportFtpSendSucess = 1;
}
sf_dailyReport_set();
}
printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret);
@ -1343,6 +1344,7 @@ SINT32 sf_send_file_to_ftp(UINT8 mode)
*************************************************/
SINT32 sf_4g_module_ota_ftp(void)
{
char Cmd[128] = {0};
UIMenuStoreInfo *pPara = sf_app_ui_para_get();
SINT32 ret = SF_SUCCESS;
FtpSslFlag ssl_flag = FTP_SSL_FLAG_END;
@ -1364,14 +1366,30 @@ SINT32 sf_4g_module_ota_ftp(void)
.ftpsFlag = ssl_flag,
.user = (const char*)user,
.password = (const char*)password};
// printf("ftp_manager_init url = %s\n", config.ip);
// printf("ftp_manager_init port = %d param port = %s\n", config.port, pPara->FtpsPort);
// printf("ftp_manager_init ftpsFlag = %d\n", config.ftpsFlag);
// printf("ftp_manager_init user = %s\n", config.user);
// printf("ftp_manager_init password = %s\n", config.password);
ftp_manager_init(config);
ftp_download_file("EG915QNA.tar.bz2","/mnt/sd/EG915QNA.tar.bz2",0);
if(SF_TRUE == sf_file_IsExsit(SF_MODULE_UP_FILE_PATH)){
sf_file_remove(SF_MODULE_UP_FILE_PATH);
}
ret = ftp_download_file(SF_MODULE_UP_FILE,SF_MODULE_UP_FILE_PATH,0);
if(SUCCESS == ret){
sprintf(Cmd, "tar -xjvf %s -C %s", SF_MODULE_UP_FILE_PATH, SF_SD_ROOT);
MLOGD("%s\n", Cmd);
ret = system(Cmd);
if(SUCCESS == ret){
sf_set_module_update(1);
sf_do_4g_upgrade_thread();
while(sf_get_module_update())
{
sleep(1);//Wait for the upgrade to complete before shutting down.
}
sf_set_module_update(0);
}
}
MLOGD("e\n");
return ret;
}
@ -1428,829 +1446,57 @@ SINT32 sf_connect_ftps_server(void)
Return: N/A
Others: N/A
*************************************************/
UINT32 sf_camera_ota_ftp(void)
SINT32 sf_camera_ota_ftp(void)
{
#if 0
UINT32 location = CAMERA_OTA_FTP_FRIST;
UINT32 sts = OTA_NOUPDATE; /*0:updating 1:no update 2:update fail 3:update success*/
UINT32 errorCode = 0;
UINT32 calltime=0;
UINT32 time = 0;
UINT8 ftpIp[40]= {0};
UINT8 ftpPort[6]= {0};
UINT8 ftpUsername[40]= {0};
UINT8 ftpPassword[40]= {0};
UINT8 pdpInedx = 0;
UINT32 ret = 0;
UINT32 fileSize = 0;
UINT32 cfgFileSize = 0;
UINT32 brnFileSize = 0;
UINT32 rxFileSize = 0;
UINT8 *pTemp = NULL;
UINT8 *pTemp1 = NULL;
UINT8 *pTemp2 = NULL;
UINT8 *pTemp3 = NULL;
UINT8 *pTemp4 = NULL;
SF_NET_TRANSFER_S *transfer = NULL;
SINT32 ttyRet = 0;
char Cmd[128] = {0};
UIMenuStoreInfo *pPara = sf_app_ui_para_get();
SINT32 ret = SF_SUCCESS;
FtpSslFlag ssl_flag = FTP_SSL_FLAG_END;
const unsigned char *ftpIP;
int port;
const UINT8 *user;
const UINT8 *password;
// FtpConfig config;
uiPara_t *puiPara = appUiParaGet();
//sfPara_t* pSifarPara = sf_ParaGet();
ssl_flag = FTP_SSL_FLAG_DISABLE;
ftpIP = pPara->OtaFtpIp;
port = atoi((const char *)(pPara->OtaFtpPort));
user = pPara->OtaFtpUserName;
password = pPara->OtaFtpPassWord;
printf("sf_camera_ota_ftp s\n");
FtpConfig config = {
.ip = (const char*)ftpIP,
.port = (const unsigned int)port,
.ftpsFlag = ssl_flag,
.user = (const char*)user,
.password = (const char*)password};
appBtnDisable(BTN_ALL);
//appBtnDisable(BTN_S1);
ftp_manager_init(config);
if(isSignalReady==0)
{
printf("no signal no update\n");
appBtnEnable(BTN_ALL);
return sts;
if(SF_TRUE == sf_file_IsExsit(SF_CAM_UP_FILE_PATH)){
sf_file_remove(SF_CAM_UP_FILE_PATH);
}
transfer = sp5kMalloc(sizeof(SF_NET_TRANSFER_S));
if (transfer == NULL)
{
printf("sf_camera_ota_ftp malloc fail\n");
appBtnEnable(BTN_ALL);
sts = OTA_FAIL;
return sts;
}
SF_STRCPY(ftpIp, puiPara->OtaFtpIp);
SF_STRCPY(ftpPort, puiPara->OtaFtpPort);
SF_STRCPY(ftpUsername, puiPara->OtaFtpUserName);
SF_STRCPY(ftpPassword, puiPara->OtaFtpPassWord);
sts = OTA_UPDATING;
sf_mcu_wdg_set(15);
sf_sys_status_led_set(SF_LED_SYS_STATE_UPDATE);
sf_mcu_reg_set(SF_MCU_SOFT_UPDATE, 1);
while(sts == OTA_UPDATING)
{
time++;
if(time >= 300)
{
if((location > CAMERA_OTA_FTP_QIACT) && (location < CAMERA_OTA_FTP_QIDEACT))
ret = ftp_download_file(SF_CAM_UP_FILE,SF_CAM_UP_FILE_PATH,0);
if(SUCCESS == ret){
sprintf(Cmd, "tar -xjvf %s -C %s", SF_CAM_UP_FILE_PATH, SF_SD_ROOT);
MLOGD("%s\n", Cmd);
ret = system(Cmd);
if(SUCCESS == ret){
sf_set_fw_update(1);
sf_set_key_fw_update(sf_get_fw_update());
while(sf_get_fw_update())
{
location = CAMERA_OTA_FTP_QIDEACT;
errorCode = SF_OTA_ERROR_TIME_OUT;
time = 250;
calltime = 0;
SF_SPRINTF(gsmPara, "AT\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
sleep(1);//Wait for the upgrade to complete before shutting down.
}
else
{
sts = OTA_TIME_OUT;
}
printf("update timeout!\n");
}
sf_4g_get_data(gsmPara, 200, 1);
if(location != CAMERA_OTA_FTP_SAVE_BRN)
{
sf_tty_data_printf(gsmPara);
}
switch(location)
{
case CAMERA_OTA_FTP_FRIST:
SF_SPRINTF(gsmPara, "AT+QFDEL=\"*\"\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = OTA_FTP_QICSGP;
break;
case CAMERA_OTA_FTP_QICSGP:
if(SF_STRSTR(gsmPara,"OK"))
{
if(SF_STRSTR(puiPara->Sim4gApn, APN_4G_VERIZON))
{
pdpInedx = V_PDP_INDEX;
SF_SPRINTF(gsmPara,"AT+QICSGP=%d\r", V_PDP_INDEX);
location= CAMERA_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->Sim4gUserName,puiPara->Sim4gPassword);
location=CAMERA_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->Sim4gUserName,puiPara->Sim4gPassword);
location=CAMERA_OTA_FTP_QIACT;
}
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
break;
case CAMERA_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->Sim4gUserName,puiPara->Sim4gPassword);
}
else
{
SF_SPRINTF(gsmPara, "AT\r");
}
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_QIACT;
}
break;
case CAMERA_OTA_FTP_QIACT:
if(SF_STRSTR(gsmPara, "OK"))
{
if((puiPara->GprsMode == 1) && sf_pdp_flg_get())
{
SF_SPRINTF(gsmPara, "AT+QFTPCFG=\"contextid\",%d\r", pdpInedx);
location = CAMERA_OTA_FTP_QFTPCFG2;
}
else
{
SF_SPRINTF(gsmPara, "AT+QIACT=%d\r", pdpInedx);
location = CAMERA_OTA_FTP_QFTPCFG1;
}
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
calltime=0;
}
break;
case CAMERA_OTA_FTP_QFTPCFG1:
if(SF_STRSTR(gsmPara, "OK"))
{
sf_pdp_flg_set(1);
SF_SPRINTF(gsmPara, "AT+QFTPCFG=\"contextid\",%d\r", pdpInedx);
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_QFTPCFG2;
calltime=0;
}
else if(SF_STRSTR(gsmPara,"ERROR"))
{
calltime++;
if(calltime < 6)
{
SF_SPRINTF(gsmPara, "AT+QIACT=%d\r", pdpInedx);
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
appTimeDelayMs(1800);
}
else
{
location = CAMERA_OTA_FTP_QIDEACT;
calltime=0;
errorCode = SF_OTA_ERROR_QIACT;
SLOGE((SINT8 *)"[ERROR]CAMERA_OTA_FTP QIACT over try 6 times");
SF_STRCPY(gsmPara, "AT\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
}
break;
case CAMERA_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, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_QFTPCFG3;
}
break;
case CAMERA_OTA_FTP_QFTPCFG3:
//if(SF_STRSTR(gsmPara, "OK"))
{
SF_SPRINTF(gsmPara, "AT+QFTPCFG=\"filetype\",1\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_QFTPCFG4;
}
break;
case CAMERA_OTA_FTP_QFTPCFG4:
//if(SF_STRSTR(gsmPara, "OK"))
{
SF_SPRINTF(gsmPara, "AT+QFTPCFG=\"transmode\",1\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location=CAMERA_OTA_FTP_QFTPCFG5;
}
break;
case CAMERA_OTA_FTP_QFTPCFG5:
//if(SF_STRSTR(gsmPara, "OK"))
{
SF_SPRINTF(gsmPara, "AT+QFTPCFG=\"restenable\",0\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location=CAMERA_OTA_FTP_QFTPOPEN;
}
break;
case CAMERA_OTA_FTP_QFTPOPEN:
if(SF_STRSTR(gsmPara, "OK"))
{
SF_SPRINTF(gsmPara, "AT+QFTPOPEN=\"%s\",%s\r", ftpIp, ftpPort);
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_QFTPNLST;
}
break;
case CAMERA_OTA_FTP_QFTPNLST:
if(SF_STRSTR(gsmPara, "+QFTPOPEN:"))
{
if(SF_STRSTR(gsmPara, "+QFTPOPEN: 0"))
{
SF_SPRINTF(gsmPara, "AT+QFTPNLST=\"%s\",\"COM:\"\r", CAM_OTA_DIR);
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_QFTPGETCFG;
}
else
{
location = CAMERA_OTA_FTP_QIDEACT;
errorCode = SF_OTA_ERROR_FTP_OPEN;
SLOGE((SINT8 *)"CAMERA_OTA_FTP Open Failed.");
SF_STRCPY(gsmPara, "AT\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
}
else if(SF_STRSTR(gsmPara, "+CME ERROR"))
{
location = CAMERA_OTA_FTP_QIDEACT;
errorCode = SF_OTA_ERROR_FTP_OPEN;
SLOGE((SINT8 *)"CAMERA_OTA_FTP QFTPOPEN CME ERROR.");
SF_STRCPY(gsmPara, "AT\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
break;
case CAMERA_OTA_FTP_QFTPGETCFG:
if(SF_STRSTR(gsmPara, "+QFTPNLST:"))
{
if((SF_STRSTR(gsmPara, SF_FW_FILE_NAME)!= NULL) && (SF_STRSTR(gsmPara, SF_FW_CFG_FILE_NAME)!= NULL))
{
#if SF_4G_USB_NET_DOWNLOAD
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_QIDEACT;
#else
SF_SPRINTF(gsmPara, "AT+QFTPGET=\"%s/%s\",\"%s\"\r", CAM_OTA_DIR, SF_FW_CFG_FILE_NAME, SF_FW_CFG_FILE_NAME);
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_QFTPGETBRN;
calltime = 0;
#endif
}
else
{
location = CAMERA_OTA_FTP_QIDEACT;
errorCode = SF_OTA_ERROR_FTP_NLST;
SLOGE((SINT8 *)"CAMERA_OTA_FTP NO NEED UPDATA FILE.");
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
}
else if(SF_STRSTR(gsmPara, "+CME ERROR"))
{
location = CAMERA_OTA_FTP_QIDEACT;
errorCode = SF_OTA_ERROR_FTP_NLST;
SLOGE((SINT8 *)"CAMERA_OTA_FTP QFTPNLST CME ERROR.");
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
break;
case CAMERA_OTA_FTP_QFTPGETBRN:
if(SF_STRSTR(gsmPara, "+QFTPGET:"))
{
if(SF_STRSTR(gsmPara, "+QFTPGET: 0"))
{
SF_SPRINTF(gsmPara, "AT+QFTPGET=\"%s/%s\",\"%s\"\r", CAM_OTA_DIR, SF_FW_FILE_NAME, SF_FW_FILE_NAME);
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_QFTPCLOSE;
}
else
{
location = CAMERA_OTA_FTP_QIDEACT;
errorCode = SF_OTA_ERROR_FTP_GET;
SLOGE((SINT8 *)"CAMERA_OTA_FTP GET CFG FILE FAIL.");
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
calltime = 0;
}
else if(SF_STRSTR(gsmPara, "+CME ERROR"))
{
location= CAMERA_OTA_FTP_QIDEACT;
errorCode = SF_OTA_ERROR_FTP_GET;
calltime = 0;
SLOGE((SINT8 *)"CAMERA_OTA_FTP QFTPGET CME ERROR.");
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
else
{
time = 0;
calltime++;
if(calltime > 150)
{
location= CAMERA_OTA_FTP_QIDEACT;
errorCode = SF_OTA_ERROR_FTP_GET;
calltime = 0;
SLOGE((SINT8 *)"CAMERA_OTA_FTP GET CFG FILE TIMEOUT.");
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
}
break;
case CAMERA_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, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_QIDEACT;
}
else
{
location = CAMERA_OTA_FTP_QIDEACT;
errorCode = SF_OTA_ERROR_FTP_GET;
SLOGE((SINT8 *)"CAMERA_OTA_FTP GET BRN FILE FAIL.");
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
calltime = 0;
}
else if(SF_STRSTR(gsmPara, "+CME ERROR"))
{
location= CAMERA_OTA_FTP_QIDEACT;
errorCode = SF_OTA_ERROR_FTP_GET;
calltime = 0;
SLOGE((SINT8 *)"CAMERA_OTA_FTP QFTPGET CME ERROR.");
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
else
{
time = 0;
calltime++;
appTimeDelayMs(800);
if(calltime > 300)
{
location= CAMERA_OTA_FTP_QIDEACT;
errorCode = SF_OTA_ERROR_FTP_GET;
calltime = 0;
SLOGE((SINT8 *)"CAMERA_OTA_FTP GET BRN FILE TIMEOUT.");
SF_SPRINTF(gsmPara, "AT+QFTPCLOSE\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
}
break;
case CAMERA_OTA_FTP_QIDEACT:
//if(SF_STRSTR(gsmPara, "OK"))
{
calltime = 0;
SF_SPRINTF(gsmPara, "AT+QIDEACT=%d\r", pdpInedx);
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
sf_pdp_flg_set(0);
if(errorCode == 0)
location = CAMERA_OTA_FTP_READSIZE;
else
location = CAMERA_OTA_FTP_END;
}
break;
case CAMERA_OTA_FTP_READSIZE:
if(SF_STRSTR(gsmPara, "OK"))
{
#if SF_4G_USB_NET_DOWNLOAD
SF_STRCPY(transfer->ServerIp, ftpIp);
SF_STRCPY(transfer->ServerPort, ftpPort);
//sf_url_convert(ftpUsername, transfer->ServerUsername);
//sf_url_convert(ftpPassword, transfer->ServerPassword);
SF_STRCPY(transfer->ServerUsername, ftpUsername);
SF_STRCPY(transfer->ServerPassword, ftpPassword);
SF_STRCPY(transfer->ServerFileDir, CAM_OTA_DIR);
SF_STRCPY(transfer->ServerFileName, SF_FW_CFG_FILE_NAME);
SF_STRCPY(transfer->ClientFilePath, SF_FW_CFG_FILE_PATH);
if (sf_4g_usb_net_ftp_download(transfer) != 1)
{
printf("download cfg file err\n");
SLOGE((SINT8 *)"download cfg file err\n");
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
location = CAMERA_OTA_FTP_END;
break;
}
SF_STRCPY(transfer->ServerFileName, SF_FW_FILE_NAME);
SF_STRCPY(transfer->ClientFilePath, SF_FW_FILE_PATH);
if (sf_4g_usb_net_ftp_download(transfer) != 1)
{
printf("download brn file err\n");
SLOGE((SINT8 *)"download brn file err\n");
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
location = CAMERA_OTA_FTP_END;
}
else
{
sts = OTA_SUCCESS;
}
#else
SF_SPRINTF(gsmPara, "AT+QFLST=\"*\"\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_DOWNLOAD_CFG;
calltime = 0;
#endif
}
else if(SF_STRSTR(gsmPara,"ERROR"))
{
calltime++;
if(calltime < 6)
{
SF_SPRINTF(gsmPara, "AT+QIDEACT=%d\r", pdpInedx);
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
appTimeDelayMs(1800);
sf_pdp_flg_set(0);
}
else
{
location = CAMERA_OTA_FTP_END;
calltime=0;
errorCode = SF_OTA_ERROR_QIDEACT;
SLOGE((SINT8 *)"[ERROR]OTA_FTP QIDEACT over try 6 times");
SF_STRCPY(gsmPara, "AT\r");
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
}
}
break;
case CAMERA_OTA_FTP_DOWNLOAD_CFG:
if(SF_STRSTR(gsmPara, "+QFLST:"))
{
UINT8 str[30] = {0};
SF_SPRINTF(str, "+QFLST: \"%s\",", SF_FW_CFG_FILE_NAME);
pTemp1 = SF_STRSTR(gsmPara, str);
SF_SPRINTF(str, "+QFLST: \"%s\",", SF_FW_FILE_NAME);
pTemp2 = SF_STRSTR(gsmPara, str);
if((pTemp1 != NULL) && (pTemp2 != NULL))
{
pTemp1 = pTemp1+28;
pTemp2 = pTemp2+28;
pTemp3 = SF_STRTOK(pTemp1, "\r\n");
pTemp4 = SF_STRTOK(pTemp2, "\r\n");
printf("pTemp1=%s\n", pTemp1);
printf("pTemp2=%s\n", pTemp2);
printf("pTemp3=%s\n", pTemp3);
printf("pTemp4=%s\n", pTemp4);
cfgFileSize = atoi((const char *)pTemp3);
brnFileSize = atoi((const char *)pTemp4);
printf("cfgSzie=%d\n", cfgFileSize);
printf("brnSzie=%d\n", brnFileSize);
if((brnFileSize < cfgFileSize) || (brnFileSize == 0))
{
SLOGE((SINT8 *)"CAMERA_OTA_FTP QFLST FILE SIZE ERROR.");
location = CAMERA_OTA_FTP_END;
errorCode = OTA_ERROR_FTP_DOWNLOAD;
break;
}
DownloadFlieBuff = sp5kMalloc(brnFileSize + 300);
if(DownloadFlieBuff != NULL)
{
DownloadFileSize = cfgFileSize;
DownloadIndex = 0;
printf("download %s to DSP size=%d\n", SF_FW_CFG_FILE_NAME, DownloadFileSize);
DownloadFrom4gFlag = TRUE;
SF_SPRINTF(gsmPara, "AT+QFDWL=\"%s\"\r", SF_FW_CFG_FILE_NAME);
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_DOWNLOAD_BRN;
}
else
{
printf("memory malloc fial\n");
SLOGE((SINT8 *)"CAMERA_OTA_FTP DOWNLOAD CFG NO MEMORY ERROR.");
location = CAMERA_OTA_FTP_END;
errorCode = OTA_ERROR_FTP_DOWNLOAD;
}
}
else
{
SLOGE((SINT8 *)"CAMERA_OTA_FTP QFLST NULL ERROR.");
location = CAMERA_OTA_FTP_END;
errorCode = OTA_ERROR_FTP_DOWNLOAD;
}
}
else if(SF_STRSTR(gsmPara, "+CME ERROR"))
{
SLOGE((SINT8 *)"OTA_FTP QFOPEN CME ERROR.");
location = CAMERA_OTA_FTP_END;
errorCode = OTA_ERROR_FTP_DOWNLOAD;
}
break;
case CAMERA_OTA_FTP_DOWNLOAD_BRN:
if(rxFileSize == DownloadIndex)
{
*(DownloadFlieBuff + rxFileSize) = '\0';
printf("rxFileSize=%d\n", rxFileSize);
DownloadFrom4gFlag = FALSE;
DownloadIndex = 0;
calltime = 0;
pTemp = SF_STRSTR(DownloadFlieBuff, "CONNECT");
if(pTemp == NULL)
{
printf("download cfg file err\n");
SLOGE((SINT8 *)"download cfg file err\n");
location = CAMERA_OTA_FTP_END;
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
break;
}
pTemp1 = pTemp + 9;
pTemp2 = pTemp1 + DownloadFileSize + 2;
//pTemp = DownloadFlieBuff + DownloadFileSize + 1;
printf("CAMERA_OTA_FTP_DOWNLOAD_BRN:pTemp2=%s", pTemp2);
pTemp3 = SF_STRSTR(pTemp2, "+QFDWL: ");
if(pTemp3 == NULL)
{
printf("download cfg file err\n");
SLOGE((SINT8 *)"download cfg file err\n");
location = CAMERA_OTA_FTP_END;
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
break;
}
pTemp3 = pTemp3 + 8;
pTemp4 = SF_STRTOK(pTemp3, ",");
fileSize = atoi((const char *)pTemp4);
if(DownloadFileSize != fileSize)
{
printf("download cfg file size err\n");
SLOGE((SINT8 *)"download cfg file size err\n");
location = CAMERA_OTA_FTP_END;
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
break;
}
ret = sf_save_file(SF_FW_CFG_FILE_PATH, pTemp1, DownloadFileSize);
if(ret == SUCCESS)
{
DownloadFileSize = brnFileSize;
printf("download %s to DSP size=%d\n", SF_FW_FILE_NAME, DownloadFileSize);
DownloadIndex = 0;
rxFileSize = 0;
DownloadFrom4gFlag = TRUE;
SF_SPRINTF(gsmPara, "AT+QFDWL=\"%s\"\r", SF_FW_FILE_NAME);
ttyRet = sf_hal_ttyusb2_write(gsmPara, SF_STRLEN(gsmPara));
SF_CHECK_RETURN_OTA(ttyRet, sts, OTA_FAIL, errorCode, SF_GPRS_MODULE_ERROR_WRITE);
location = CAMERA_OTA_FTP_SAVE_BRN;
}
else
{
printf("save cfg file err\n");
SLOGE((SINT8 *)"save cfg file err\n");
location = CAMERA_OTA_FTP_END;
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
}
}
else
{
rxFileSize = DownloadIndex;
time = 0;
calltime++;
printf("rxFileSize=%d calltime=%d\n", rxFileSize, calltime);
if(calltime > 300)
{
DownloadFrom4gFlag = FALSE;
DownloadIndex = 0;
SLOGE((SINT8 *)"CAMERA_OTA_FTP DOWNLOAD CFG TO DSP TIMEOUT.");
location= CAMERA_OTA_FTP_END;
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
calltime = 0;
}
}
break;
case CAMERA_OTA_FTP_SAVE_BRN:
if(rxFileSize == DownloadIndex)
{
*(DownloadFlieBuff + rxFileSize) = '\0';
printf("rxFileSize=%d\n", rxFileSize);
DownloadFrom4gFlag = FALSE;
DownloadIndex = 0;
calltime = 0;
pTemp = SF_STRSTR(DownloadFlieBuff, "CONNECT");
if(pTemp == NULL)
{
printf("download brn file err\n");
SLOGE((SINT8 *)"download brn file err\n");
location = CAMERA_OTA_FTP_END;
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
break;
}
pTemp1 = pTemp + 9;
pTemp2 = pTemp1 + DownloadFileSize + 2;
pTemp3 = SF_STRSTR(pTemp2, "+QFDWL: ");
if(pTemp3 == NULL)
{
printf("download brn file err\n");
SLOGE((SINT8 *)"download brn file err\n");
location = CAMERA_OTA_FTP_END;
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
break;
}
pTemp3 = pTemp3 + 8;
pTemp4 = SF_STRTOK(pTemp3, ",");
fileSize = atoi((const char *)pTemp4);
if(DownloadFileSize != fileSize)
{
printf("download brn file size err\n");
SLOGE((SINT8 *)"download brn file size err\n");
location = CAMERA_OTA_FTP_END;
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
break;
}
ret = sf_save_file(SF_FW_FILE_PATH, pTemp1, DownloadFileSize);
if(ret == SUCCESS)
{
sts = OTA_SUCCESS;
}
else
{
printf("save brn file err\n");
SLOGE((SINT8 *)"save brn file err\n");
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
location = CAMERA_OTA_FTP_END;
}
}
else
{
rxFileSize = DownloadIndex;
time = 0;
calltime++;
printf("rxFileSize=%d calltime=%d\n", rxFileSize, calltime);
appTimeDelayMs(800);
if(calltime > 240)
{
DownloadFrom4gFlag = FALSE;
DownloadIndex = 0;
SLOGE((SINT8 *)"CAMERA_OTA_FTP S BRN TO DSP TIMEOUT.");
location= CAMERA_OTA_FTP_END;
errorCode = SF_OTA_ERROR_FTP_DOWNLOAD;
calltime = 0;
}
}
break;
case CAMERA_OTA_FTP_END:
sts = OTA_FAIL;
break;
sf_set_fw_update(0);
}
}
if(DownloadFlieBuff != NULL)
sp5kFree(DownloadFlieBuff);
if(transfer != NULL)
sp5kFree(transfer);
if(sf_is_enough_power_to_update() == FALSE)
{
appBtnEnable(BTN_ALL);
return sts;
}
sf_mcu_wdg_set(5);
if(sts == OTA_SUCCESS)
{
if(sf_camera_sd_update() != SUCCESS)
{
sts = OTA_UPDATED_ERROR;
}
}
else
{
if(errorCode == SF_OTA_ERROR_FTP_NLST)
{
sts = OTA_NOUPDATE;
sf_sys_status_led_set(SF_LED_SYS_STATE_NORMAL);
}
else
{
sf_sys_status_led_set(SF_LED_SYS_STATE_ERROR);
}
}
printf("Camera OTA Update sts:%d errorCode:%d\n", sts, errorCode);
printf("sf_camera_ota_ftp e\n");
appTimeDelayMs(2000);
appBtnEnable(BTN_ALL);
if(sts == OTA_SUCCESS)
return SUCCESS;
#endif
return FAIL;
MLOGD("e\n");
return ret;
}
/*************************************************
Function: sf_concentrated_ftp_send
Description: ftp send.

View File

@ -2340,7 +2340,7 @@ SINT32 sf_power_off_module_ota(void)
{
ret = sf_4g_module_ota_ftp();//need restart module
if(ret == OTA_UPDATED_ERROR || ret == OTA_SUCCESS || ret == OTA_VERTION_ERROR || ret == OTA_TIME_OUT)
//if(ret == OTA_UPDATED_ERROR || ret == OTA_SUCCESS || ret == OTA_VERTION_ERROR || ret == OTA_TIME_OUT)
{
if(CameraCmd.setPara)
pPara_sms_saved->NetWorkNeedSearch = 3;
@ -2351,7 +2351,7 @@ SINT32 sf_power_off_module_ota(void)
}
}
}
return 0;
return ret;
}

View File

@ -94,8 +94,8 @@ BOOL sf_Check_OTA(void)
char *pStrOtsOk = "ota_flag=0x1";
BOOL ret = FALSE;
system("cat /proc/cmdline > /tmp/ota.txt");
fp = fopen("/tmp/ota.txt","r");
system("cat /proc/cmdline > /tmp/sf_ota.txt");
fp = fopen("/tmp/sf_ota.txt","r");
if(fp == NULL){
return FALSE;
}