diff --git a/code/application/source/sf_app/code/include/sf_ftp.h b/code/application/source/sf_app/code/include/sf_ftp.h index d9f0b9582..45d587c88 100755 --- a/code/application/source/sf_app/code/include/sf_ftp.h +++ b/code/application/source/sf_app/code/include/sf_ftp.h @@ -224,5 +224,6 @@ SINT32 sf_low_power_warn_send_ftp(void); double sf_sys_s_time_get(time_t end_time); time_t sf_time (time_t *__timer); SINT32 sf_gps_send_ftp(void); +SINT32 sf_test_send_file_to_ftp(void); #endif /*_SF_FTP_H_*/ diff --git a/code/application/source/sf_app/code/include/sf_service.h b/code/application/source/sf_app/code/include/sf_service.h index f943e9750..30d2696d3 100755 --- a/code/application/source/sf_app/code/include/sf_service.h +++ b/code/application/source/sf_app/code/include/sf_service.h @@ -90,6 +90,7 @@ void app_FileSend_start(void); SINT32 app_t110(void); SINT32 sf_app_to_cardv_capture(void); SINT32 sf_module_reboot_reg_net(void); +SINT32 sf_restart_reg_net(void); SINT32 sf_app_to_cardv_hd_ture(void); int sf_check_eth0(void); int sf_check_usb0(void); @@ -103,6 +104,7 @@ void app_RegisterNet_stop(void); int sf_check_sd(void); void sf_save_camera_gps_info(void); void set_at_parament(void); +int sf_net_dns_ck(void); #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/source/4gMng/sf_ftp.c b/code/application/source/sf_app/code/source/4gMng/sf_ftp.c index d2df0ee40..961e87bc8 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_ftp.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_ftp.c @@ -18,6 +18,7 @@ * Description: creat **************************************************************************/ #include "NvtUser/NvtUser.h" +#include "kwrap/nvt_type.h" #include #include #include @@ -50,6 +51,7 @@ extern "C" { #include "sf_ledmng.h" #include "ftp_manager.h" #include "sf_system.h" +#include "curl/curl.h" /************************************************************************** * C O N S T A N T S * **************************************************************************/ @@ -1607,6 +1609,12 @@ SINT32 sf_concentrated_ftp_send(void) SF_CONCENTRATED_RE://Try again once ret1 = sf_ftp_send(ftpFileName, filePath, timeout); + if(CURLE_OPERATION_TIMEDOUT == ret1) + { + NET_SLOGE("CURLE_OPERATION_TIMEDOUT error\n"); + sf_restart_reg_net(); + } + if(SF_SUCCESS != ret1) { printf("%s:%d err ret: [0x%08X] ftpFileName:%s filePath:%s\n", __FUNCTION__, __LINE__, ret, ftpFileName, filePath); @@ -1698,7 +1706,7 @@ SF_CONCENTRATED_END: } /************************************************* - Function: sf_concentrated_ftp_send + Function: sf_hd_ftp_send Description: ftp send. Input: 1:send pic/video. 2:send dr. Output: N/A @@ -2306,6 +2314,721 @@ SINT32 sf_gps_send_ftp(void) return ret2; } } + +#if SF_NO_SD_SEND == ENABLE +/************************************************* + Function: sf_ftp_config + Description: send pic to ftp + Input: N/A + Output: N/A + Return: 0 SUCCESS, 1 error + Others: N/A +*************************************************/ +SINT32 sf_test_ftp_config(UINT8 ssl, UINT8 GprsMode, int timeout) +{ + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + SINT32 ret = SF_SUCCESS; +#if 1 + FTP_SIM_E eFtpLocation = FTP_SIM_CGDCONT; + SINT32 ttyRet = 0; + UINT8 calltime = 0; + UINT16 time = 0; + UINT8 pdpIndex = 0; + + + pdpIndex = sf_get_pdp_index(); + + sf_gsm_para_buff_clear(); + printf("[%s:%d]ssl=%d GprsMode=%d\n", __FUNCTION__, __LINE__, ssl, GprsMode); + + while(sf_app_while_flag()) + { + switch(eFtpLocation) + { + case FTP_SIM_CGDCONT: + eFtpLocation = FTP_SIM_NETOPEN; + + if(strstr((const char *)pPara->Sim4gApn, APN_4G_VERIZON)) + { + sprintf((char *)gsmPara, "AT+QICSGP=%d\r", pdpIndex); + eFtpLocation = FTP_SIM_QICSGP0; + } + else if(strstr((const char *)pPara->Sim4gApn, APN_4G_ATT)) + { + sprintf((char *)gsmPara, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r", pdpIndex, pPara->Sim4gApn, pPara->Sim4gUsr, pPara->Sim4gPwd); + } + else + { + sprintf((char *)gsmPara, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r", pdpIndex, pPara->Sim4gApn, pPara->Sim4gUsr, pPara->Sim4gPwd); + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break; + + case FTP_SIM_QICSGP0: + + if(strstr((const char *)gsmPara, "OK")) + { + eFtpLocation = FTP_SIM_NETOPEN; + + if(strstr((const char *)gsmPara, "+QICSGP: 0") || strstr((const char *)gsmPara, "+QICSGP: 1,\"\"")) + { + sprintf((char *)gsmPara, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r", pdpIndex, pPara->Sim4gApn, pPara->Sim4gUsr, pPara->Sim4gPwd); + } + else + { + eFtpLocation = FTP_SIM_CFTPSSTART; + sprintf((char *)gsmPara, "AT+QIACT=%d\r", pdpIndex); + calltime = 0; + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case FTP_SIM_NETOPEN: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eFtpLocation, "AT TIMEOUT TEST"); + #endif + + if(strstr((const char *)gsmPara, "OK")) + { + eFtpLocation = FTP_SIM_CFTPSSTART; + sprintf((char *)gsmPara, "AT+QIACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + calltime = 0; + } + else if(strstr((const char *)gsmPara, "ERROR")) + { + ret = SF_FTP_ERROR_AT_ERROR; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QICSGP,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_END_CONFIG; + } + else + { + calltime++; + + if(calltime < 10) + { + sf_sleep_ms(200); + } + else if(calltime > MAX_CALL_TIMES) + { + ret = SF_FTP_ERROR_AT_TIMEOUT; + printf("[%s:%d]FTP Configure Timeout!\n", __FUNCTION__, __LINE__); + sprintf((char *)logStr, "[%s:%d]FTP CFG Timeout,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_END_CONFIG; + } + } + + break; + + case FTP_SIM_CFTPSSTART: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eFtpLocation, "ERROR: "); + #endif + + if(strstr((const char *)gsmPara, "OK")) + { + eFtpLocation = FTP_SIM_CFTPSSINGLEIP; + sprintf((char *)gsmPara, "AT+QFTPCFG=\"contextid\",%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + calltime = 0; + } + else if(strstr((const char *)gsmPara, "ERROR")) + { + calltime++; + + if(calltime < 6) + { + sprintf((char *)gsmPara, "AT+QIACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + sf_sleep_ms(800); + } + else + { + ret = SF_FTP_ERROR_AT_ACTIVE; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QIACT Over Try 6 Times,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_END_CONFIG; + } + } + + break; + + case FTP_SIM_CFTPSSINGLEIP: + + if(strstr((const char *)gsmPara, "OK")) + { + if((0 == pPara->FtpSwitch)) + { + eFtpLocation = FTP_SIM_CCHSTART; + sprintf((char *)gsmPara, "AT+QFTPCFG=\"account\",\"%s\",\"%s\"\r", pPara->FtpUsr, pPara->FtpPwd); + } + else if((2 == pPara->FtpSwitch))//ftps + { + eFtpLocation = FTP_SIM_QSSLCFG0; + sprintf((char *)gsmPara, "AT+QFTPCFG=\"account\",\"%s\",\"%s\"\r", pPara->FtpsUsr, pPara->FtpsPwd); + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case FTP_SIM_QSSLCFG0: + sprintf((char *)gsmPara, "AT+QFTPCFG=\"restenable\",0\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_QSSLCFG1; + break; + + case FTP_SIM_QSSLCFG1: + sprintf((char *)gsmPara, "AT+QFTPCFG=\"ssltype\",2\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_QSSLCFG2; + break; + + case FTP_SIM_QSSLCFG2: + sprintf((char *)gsmPara, "AT+QFTPCFG=\"sslctxid\",1\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_QSSLCFG3; + break; + + case FTP_SIM_QSSLCFG3: + sprintf((char *)gsmPara, "AT+QSSLCFG=\"ciphersuite\",1,0xffff\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_QSSLCFG4; + break; + + case FTP_SIM_QSSLCFG4: + sprintf((char *)gsmPara, "AT+QSSLCFG=\"seclevel\",1,0\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_QSSLCFG5; + break; + + case FTP_SIM_QSSLCFG5: + sprintf((char *)gsmPara, "AT+QSSLCFG=\"sslversion\",1,4\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_CFTPLOGIN; + break; + + case FTP_SIM_CCHSTART: + sprintf((char *)gsmPara, "AT+QFTPCFG=\"filetype\",0\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_CFTPSCFG; + break; + + case FTP_SIM_CFTPSCFG: + sprintf((char *)gsmPara, "AT+QFTPCFG=\"transmode\",1\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_CFTPLOGIN; + break; + + case FTP_SIM_CFTPLOGIN: + + if(strstr((const char *)gsmPara, "OK")) + { + eFtpLocation = FTP_SIM_EXIT; + printf("[%s:%d]log ftp\n", __FUNCTION__, __LINE__); + + if((0 == pPara->FtpSwitch)) + { + sprintf((char *)gsmPara, "AT+QFTPOPEN=\"%s\",%s\r", pPara->FtpIp, pPara->FtpPort); + } + else if((2 == pPara->FtpSwitch)) + { + sprintf((char *)gsmPara, "AT+QFTPOPEN=\"%s\",%s\r", pPara->FtpsIp, pPara->FtpsPort); + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + calltime = 0; + } + + break; + + case FTP_SIM_EXIT: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eFtpLocation, "QFTPOPEN TEST"); + #endif + + if(strstr((const char *)gsmPara, "+QFTPOPEN:")) + { + if(strstr((const char *)gsmPara, "+QFTPOPEN: 0")) + { + goto SF_FTP_END_CONFIG; + } + else //+CFTPSSTART: + { + ret = SF_FTP_ERROR_OPEN; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPOPEN Error,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_END_CONFIG; + } + } + else if(strstr((const char *)gsmPara, "ERROR")) + { + ret = SF_FTP_ERROR_OPEN; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPOPEN,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_END_CONFIG; + } + else + { + calltime++; + sf_sleep_ms(800); + + if(calltime > 30) + { + calltime = 0; + ret = SF_FTP_ERROR_TERM; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPOPEN Timeout,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_END_CONFIG; + } + } + + break; + + default: + break; + } + sf_gsm_para_buff_clear(); + + sf_hal_ttyusb2_read(gsmPara, 200); + printf("eFtpLocation=%d,time=%d\n", eFtpLocation, time); + + if((gsmPara[0] != '\0') && (FTP_SIM_EXIT != eFtpLocation) && (FTP_SIM_CCHSTART != eFtpLocation) && (FTP_SIM_QSSLCFG0 != eFtpLocation)) + { + SLOGI("gsmPara:%s", gsmPara); + } + + time++; + + if(time > 800) + { + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Wait Init Timeout.", __FUNCTION__, __LINE__); + printf("%s,GprsMode=%d\n", logStr, pPara->GprsMode); + SLOGE(logStr); + + time = 0; + ret = SF_FTP_ERROR_SEND_TIMEOUT; + goto SF_FTP_END_CONFIG; + } + } + + SF_FTP_END_CONFIG: + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); + if(SF_SUCCESS != ret){ + sf_sys_status_led_set(SF_LED_SYS_STATE_SEND_FAIL); + } + FtpOpenOk = ret; + + return ret; +#endif +} + +/************************************************* + Function: sf_ftp_send + Description: send pic to ftp + Input: N/A + Output: N/A + Return: 0 SUCCESS, 1 error + Others: N/A +*************************************************/ +SINT32 sf_test_ftp_send(UINT8 *ftpFileName, UINT8 *filePath, int timeout) +{ +#if 1 + SINT32 ret = SF_SUCCESS; + FTP_SIM_E eFtpLocation = FTP_SIM_CFTPSCFG; + SINT32 ttyRet = 0; + UINT8 calltime = 0; + UINT16 time = 0; + printf("[%s:%d]ftpFileName:%s,filePath:%s\n", __FUNCTION__, __LINE__, ftpFileName, filePath); + + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + //sfPara_t *sfParam = sf_ParaGet(); + sf_gsm_para_buff_clear(); + + while(sf_app_while_flag()) + { + switch(eFtpLocation) + { + case FTP_SIM_CFTPSCFG: + eFtpLocation = FTP_SIM_JPG; + sprintf((char *)gsmPara, "AT+QFTPPUT=\"%s\",\"%s\",0\r", ftpFileName, filePath); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break; + + case FTP_SIM_JPG: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eFtpLocation, "TIMEOUT TEST"); + #endif + + if(strstr((const char *)gsmPara, "+QFTPPUT:") || strstr((const char *)gsmPara, "PUT:")) + { + #if SF_TEST_ERROR_CODE + sf_test_code_err(FTP_SIM_CFTPSCFG, "+QFTPPUT: 1"); + #endif + + if(strstr((const char *)gsmPara, "+QFTPPUT: 0") || strstr((const char *)gsmPara, "PUT: 0,")) + { + if(sf_get_mode_flag() == 0) //auto mode + { + if(pPara->CamMode != SF_CAM_MODE_VIDEO) + { + sendPicSuccessFlag = 1; + } + else + { + sendVideoSuccessFlag = 1; + } + } + + goto SF_FTP_SEND_END; + } + else + { + ret = SF_FTP_ERROR_SEND; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPPUT Error,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + printf("%s", logStr); + goto SF_FTP_SEND_END; + } + } + else if(strstr((const char *)gsmPara, "ERROR")) + { + ret = SF_FTP_ERROR_SEND; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPPUT Error,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + printf("%s", logStr); + goto SF_FTP_SEND_END; + } + else + { + calltime++; + sf_sleep_ms(800); + + if(calltime > (timeout + 10)) + { + calltime = 0; + ret = SF_FTP_ERROR_SEND_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPPUT Timeout,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + printf("%s", logStr); + goto SF_FTP_SEND_END; + } + } + + break; + + default: + break; + } + sf_gsm_para_buff_clear(); + + sf_hal_ttyusb2_read(gsmPara, 200); + + if(gsmPara[0] != '\0') + { + //printf("%s:%d %d \n%s\n", __FUNCTION__, __LINE__, eFtpLocation, gsmPara); + SLOGI(" %d \n%s\n", eFtpLocation, gsmPara); + } + + time++; + + if(time > 800) + { + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Wait Init Timeout.", __FUNCTION__, __LINE__); + printf("%s,GprsMode=%d\n", logStr, pPara->GprsMode); + SLOGE(logStr); + + time = 0; + ret = SF_FTP_ERROR_SEND_TIMEOUT; + goto SF_FTP_SEND_END; + } + } + + SF_FTP_SEND_END: + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); + return ret; +#endif +} + +/************************************************* + Function: sf_ftp_send + Description: send pic to ftp + Input: N/A + Output: N/A + Return: 0 SUCCESS, 1 error + Others: N/A +*************************************************/ +SINT32 sf_test_ftp_stop(UINT8 ssl, UINT8 GprsMode) +{ +#if 1 + SINT32 ret = SF_SUCCESS; + FTP_SIM_E eFtpLocation = FTP_SIM_CFTPSLOGOUT; + SINT32 ttyRet = 0; + UINT8 calltime = 0; + UINT16 time = 0; + UINT8 pdpIndex = 0; + + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + + pdpIndex = sf_get_pdp_index(); + + sf_gsm_para_buff_clear(); + printf("%s:%d start ssl:%d GprsMode:%d\n", __FUNCTION__, __LINE__, ssl, GprsMode); + while(sf_app_while_flag()) + { + switch(eFtpLocation) + { + case FTP_SIM_CFTPSLOGOUT: + eFtpLocation = FTP_SIM_CCHSTOP; + sprintf((char *)gsmPara, "AT+QFTPCLOSE\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break; + + case FTP_SIM_CCHSTOP: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eFtpLocation, "QFTPCLOSE TIMEOUT TEST"); + #endif + + if(strstr((const char *)gsmPara, "OK")) + { + sprintf((char *)gsmPara, "AT+QIDEACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_CFTPSSTOP; + } + else if(strstr((const char *)gsmPara, "ERROR")) + { + calltime++; + + if(calltime < 3) + { + sprintf((char *)gsmPara, "AT+QFTPCLOSE\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + sf_sleep_ms(400); + } + else + { + calltime = 0; + ret = SF_FTP_ERROR_LOGOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPCLOSE Try 3 Times,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + sprintf((char *)gsmPara, "AT+QIDEACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_CFTPSSTOP; + } + } + else + { + calltime++; + sf_sleep_ms(800); + + if(calltime > 60) + { + calltime = 0; + ret = SF_FTP_ERROR_LOGOUT_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+CFTPSLOGOUT Timeout,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + sprintf((char *)gsmPara, "AT+QIDEACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_CFTPSSTOP; + } + } + + break; + + case FTP_SIM_CFTPSSTOP: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eFtpLocation, "ERROR"); + #endif + + if(strstr((const char *)gsmPara, "OK")) + { + goto SF_FTP_STOP_END; + } + else if(strstr((const char *)gsmPara, "ERROR")) + { + calltime++; + + if(calltime < 6) + { + sprintf((char *)gsmPara, "AT+QIDEACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + sf_sleep_ms(400); + } + else + { + calltime = 0; + ret = SF_FTP_ERROR_QIDEACT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QIDEACT Try 6 Times,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_STOP_END; + } + } + else + { + calltime++; + sf_sleep_ms(800); + + if(calltime > 60) + { + calltime = 0; + ret = SF_FTP_ERROR_LOGOUT_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QIDEACT Timeout,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_STOP_END; + } + } + + break; + + default: + break; + } + sf_gsm_para_buff_clear(); + sf_hal_ttyusb2_read(gsmPara, 200); + + if(gsmPara[0] != '\0') + { + //printf("eFtpLocation=%d,time=%d\ngsmPara:%s\n", eFtpLocation, time, gsmPara); + SLOGI("eFtpLocation=%d,time=%d\ngsmPara:%s", eFtpLocation, time, gsmPara); + } + + time++; + + if(time > 800) + { + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Wait Init Timeout.", __FUNCTION__, __LINE__); + printf("%s,GprsMode=%d\n", logStr, pPara->GprsMode); + SLOGE(logStr); + + time = 0; + ret = SF_FTP_ERROR_SEND_TIMEOUT; + goto SF_FTP_STOP_END; + } + } + + SF_FTP_STOP_END: + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); + return ret; +#endif +} + +/************************************************* + Function: sf send file to ftp + Description: ftp send. + Input: 1:send pic/video. 2:send dr. + Output: N/A + Return: 0:success; else:fail; + Others: N/A +*************************************************/ +SINT32 sf_test_send_file_to_ftp(void) +{ + SINT32 ret1 = SF_SUCCESS; //0:success; else:fail; + SINT32 ret2 = SF_SUCCESS; //0:success; else:fail; + UINT8 ssl = 0; + UINT8 gprsMode = 0; + int timeout = 120000; + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); + UINT8 ftpFileName[64] = { 0 }; + UINT8 filePath[64] = { 0 }; + MLOGD("start\n"); + + UINT8 CamNameStr[64] = {0}; + char cameraID[64] = { 0 }; + UINT8 tempPicSize = 0; + UINT8 piccount = 0; + UINT8 pic = 0; + + UINT8 csqlevel = 0; + MLOGD("start\n"); + + sf_custom_str_get(CamNameStr); + sf_4G_signal_level_get(puiPara->NetGeneration,sf_get_cq_signal(),&csqlevel); + + snprintf(cameraID, sizeof(cameraID), "%s-%d-%d-%s-", puiPara->ModuleImei, sf_app_get_battery(), csqlevel, CamNameStr); /* DCF 8.3 naming rule */ + + printf("NetGeneration:%dG,tempPicSize=%d,piccount=%d,pic=%d\n", puiPara->NetGeneration, tempPicSize, piccount, pic); + + sprintf((char *)ftpFileName, "%sMEMPHOTO.JPG", cameraID); + sprintf((char *)filePath, "UFS:MEMPHOTO.JPG"); + + printf("%s:%d ftpFileName:%s filePath:%s \n", __FUNCTION__, __LINE__, ftpFileName, filePath); + + + ssl = ((2 == puiPara->FtpSwitch) ? 1 : 0); + gprsMode = 0;//puiPara->GprsMode; + printf("[%s:%d] ssl:%d,GprsMode:%d\n", __FUNCTION__, __LINE__, ssl, gprsMode); + + + ret1 = sf_test_ftp_config(ssl, gprsMode, timeout); + + if(SF_SUCCESS == ret1) + { + ret1 = sf_test_ftp_send(ftpFileName, filePath, timeout); + } + + if(ret1 != SF_FTP_ERROR_TERM) + { + ret2 = sf_test_ftp_stop(ssl, gprsMode); + } + + MLOGD(" end ret1:[0x%08X],ret2:[0x%08X]\n", ret1, ret2); + + if(ret1 != SF_SUCCESS) + { + return ret1; + } + else + { + FtpOpenOk = SUCCESS; + return ret2; + } +} +#endif + #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/source/app/sf_service.c b/code/application/source/sf_app/code/source/app/sf_service.c index 3311393da..e0ba8dbf4 100755 --- a/code/application/source/sf_app/code/source/app/sf_service.c +++ b/code/application/source/sf_app/code/source/app/sf_service.c @@ -260,7 +260,7 @@ SINT32 sf_USB_net_init(void) sleep(1); } } - + sf_net_dns_ck(); return ret; } @@ -1254,6 +1254,13 @@ SINT32 sf_file_send_auto(void) { if(SF_FAILURE == sf_check_sd()) { MLOGE("ERROR sf_check_sd\n"); + #if SF_NO_SD_SEND == ENABLE + if( 0 == sf_usr_mem_photo_ch()) + { + s32ret = sf_test_send_file_to_ftp(); + return s32ret; + } + #endif return SF_FAILURE; } @@ -1348,9 +1355,13 @@ static SINT32 app_Register_Net_startup_mode(SF_FN_PARAM_S *pfnParam) UIMenuStoreInfo *pCustomerParam = sf_app_ui_para_get(); SF_STARTUP_TYPE_E startup = sf_poweron_type_get(); sf_log_Level_set(SF_LOG_LEVEL_DEBUG); - + #if SF_NO_SD_SEND == ENABLE + if (sf_usb_IsInsert()) + #else if (sf_usb_IsInsert() || - ((0 == sf_in_card_exist()) && (SF_MCU_STARTUP_ONKEY != startup))) { + ((0 == sf_in_card_exist()) && (SF_MCU_STARTUP_ONKEY != startup))) + #endif + { return SF_SUCCESS; } @@ -1943,6 +1954,23 @@ SINT32 sf_module_reboot_reg_net(void) s32ret = sf_4G_register_net_manual(&stpfncallback); //sf_share_mem_customer_down(1); SF_APPCOMM_CHECK_RETURN(s32ret, s32ret); + set_at_parament(); + s32ret = sf_USB_net_init(); + + return s32ret; +} + +SINT32 sf_restart_reg_net(void) +{ + SINT32 s32ret = 0; + SF_FN_PARAM_S stpfncallback = {0}; + stpfncallback.pstParam = sf_customer_param_get(); + stpfncallback.pstaticParam = sf_app_ui_para_get(); + // stpfncallback.pstaticParam = sf_statistics_param_get(); + stpfncallback.pfn_AT_instruction_exit = (void *)app_disconnect_4g_module; + + s32ret = sf_4G_register_net_manual(&stpfncallback); + return s32ret; } @@ -2223,18 +2251,22 @@ static int sf_is_sdc_mounted(void) } fclose(file); - return 1; + return 0; } int sf_check_sd(void) { UINT8 i = 0; int ret = SF_SUCCESS; + if(0 == sf_in_card_exist()) + { + NET_SLOGE("NO SD\r\n"); + return SF_FAILURE; + } if (sf_sd_status_get() != SF_SD_OK) { ret = SF_FAILURE; for (i = 0; i < 20; i++) { - ret = sf_sd_status_get(); - if (SF_SD_OK == ret) + if (SF_SD_OK == sf_sd_status_get()) { ret = SF_SUCCESS; MLOGI("SD\r\n"); @@ -2308,6 +2340,29 @@ void sf_save_camera_gps_info(void) printf("[%s:%d] e\n", __FUNCTION__, __LINE__); } + +int sf_net_dns_ck(void) +{ + int result = system("ping -c 3 www.baidu.com"); + + if (result == -1) { + perror("Error calling system"); + return EXIT_FAILURE; + } else if (WIFEXITED(result)) { + int exit_status = WEXITSTATUS(result); + if (exit_status == 0) { + printf("Ping command executed successfully.\n"); + + } else { + printf("Ping command failed with exit status %d.\n", exit_status); + } + } else { + printf("Ping command did not terminate normally.\n"); + } + + return EXIT_SUCCESS; +} + #ifdef __cplusplus #if __cplusplus }