diff --git a/code/application/source/sf_app/code/include/sf_file.h b/code/application/source/sf_app/code/include/sf_file.h index 57d9eda84..96cdb5d07 100755 --- a/code/application/source/sf_app/code/include/sf_file.h +++ b/code/application/source/sf_app/code/include/sf_file.h @@ -42,6 +42,8 @@ UINT32 sf_get_file_size(UINT8 * fname); UINT8 sf_get_send_file_list(char *sendfileList, UINT8 *fileTotal); BOOL sf_check_auto_thumb_file(VOID); UINT8 sf_get_send_file_total(void); +SINT32 sf_mem_upload_file_to_module(UINT32 MemPhotoAddr, UINT32 MemPhotosize); +SINT32 sf_usr_mem_photo_ch(void); #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/source/fileMng/sf_file.c b/code/application/source/sf_app/code/source/fileMng/sf_file.c index edb243e30..2a9e12248 100755 --- a/code/application/source/sf_app/code/source/fileMng/sf_file.c +++ b/code/application/source/sf_app/code/source/fileMng/sf_file.c @@ -10,6 +10,7 @@ #include #include #include +#include "kwrap/nvt_type.h" #include "sf_eg91_sim.h" #include "sf_common.h" #include "sf_hal_ttyusb.h" @@ -26,6 +27,7 @@ #include #include "sf_battery.h" + #include "sys_usrmem.h" #ifdef __cplusplus #if __cplusplus extern "C" { @@ -1561,6 +1563,212 @@ UINT8 sf_get_send_file_total(void) } #endif +#if SF_NO_SD_SEND == ENABLE +/************************************************* + Function: sf_mem_upload_file_to_module + Description: upload file to module. + Input: N/A + Output: N/A + Return: 0:success; else:fail; + Others: N/A +*************************************************/ +SINT32 sf_mem_upload_file_to_module(UINT32 MemPhotoAddr, UINT32 MemPhotosize) +{ + UINT32 count = 0; + SINT32 uploadFsize = MemPhotosize; + SINT32 ret = SF_SUCCESS; //0:success; else:fail; + SINT32 ttyRet = SF_FAILURE; + UINT32 countflag = 0; + //UINT32 time = 0; + + //UINT8 sdFname[64] = {0}; + //UINT8 gsmPara[GPRS_INFO_LINE_MAX] = {0}; + SF_QUECTEL_UPLOAD_E enUploadLocation = QUECTEL_UPLOAD_FRIST; + sf_set_upload_to_module_flag(0); // test + if(sf_get_del_flag() == FALSE) + { + sf_set_del_flag(TRUE); + enUploadLocation = QUECTEL_UPLOAD_QFDEL; + } + + printf("[%s:%d] s\n", __FUNCTION__, __LINE__); + + sf_gsm_para_buff_clear(); + + while(sf_app_while_flag()) + { + sf_gsm_para_buff_clear(); + sf_hal_ttyusb2_read(gsmPara, 200); + + printf("-----enUploadLocation=%d-----count=%d-----\n", enUploadLocation, count); + + if(gsmPara[0] != '\0') + { + printf("gsmPara:%s\n================end\n", gsmPara); + } + + count++; + + if(count > 500) + { + ret = SF_UPLOAD_ERROR_AT_TIMEOUT; + printf("[%s:%d]MMS AT Timeout,enUploadLocation=%d,Error Code:0x%08X\n", + __FUNCTION__, __LINE__, enUploadLocation, ret); + SLOGE(gsmPara); + sprintf((char *)gsmPara, "[%s:%d]MMS AT Timeout,enUploadLocation=%d,Error Code:0x%08X\n", + __FUNCTION__, __LINE__, enUploadLocation, ret); + SLOGE(gsmPara); + count = 0; + goto SF_QUECTEL_UPLOAD_END; + } + + switch(enUploadLocation) + { + case QUECTEL_UPLOAD_QFDEL: + enUploadLocation = QUECTEL_UPLOAD_QFLST; + sprintf((char *)gsmPara, "AT+QFDEL=\"*\"\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break; + + case QUECTEL_UPLOAD_QFLST: + + if(strstr((const char *)gsmPara, "ERROR")) + { + ret = SF_UPLOAD_ERROR_GET_FSIZE_FAIL; + sprintf((char *)gsmPara, "[%s:%d] AT+QFDEL,Error Code:0x%08X\n", __FUNCTION__, __LINE__, ret); + SLOGE(gsmPara); + goto SF_QUECTEL_UPLOAD_END; + } + else if(strstr((const char *)gsmPara, "OK")) + { + enUploadLocation = QUECTEL_UPLOAD_FRIST; + } + + break; + + case QUECTEL_UPLOAD_FRIST: + + enUploadLocation = QUECTEL_UPLOAD_QFUPL; + sprintf((char *)gsmPara, "AT+QFUPL=\"UFS:MEMPHOTO.JPG\",%d\r", uploadFsize); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + + break; + + case QUECTEL_UPLOAD_QFUPL: + + if(strstr((const char *)gsmPara, "ERROR")) + { + if(strstr((const char *)gsmPara, "+CME ERROR: 407")) + { + printf("[%s:%d]file already exist,continue.\n", __FUNCTION__, __LINE__); + //enUploadLocation = QUECTEL_UPLOAD_END; + sf_test_upload_tm_log = 1; + goto SF_QUECTEL_UPLOAD_END; + } + else if((strstr((const char *)gsmPara, "+CME ERROR: 423")) || (strstr((const char *)gsmPara, "+CME ERROR: 407"))) + { + ret = SF_UPLOAD_ERROR_DATA; + SLOGE(gsmPara); + printf("[%s:%d]Upload data error\n", __FUNCTION__, __LINE__); + sprintf((char *)gsmPara, "[%s:%d]Upload data error,Error Code:0x%08X\n", __FUNCTION__, __LINE__, ret); + SLOGE(gsmPara); + + sf_test_upload_tm_log = 1; + goto SF_QUECTEL_UPLOAD_END; + } + else + { + ret = SF_UPLOAD_ERROR_DATA; + SLOGE(gsmPara); + printf("[%s:%d]Upload data error\n", __FUNCTION__, __LINE__); + sprintf((char *)gsmPara, "[%s:%d]Upload data error,Error Code:0x%08X\n", __FUNCTION__, __LINE__, ret); + SLOGE(gsmPara); + //enUploadLocation = QUECTEL_UPLOAD_END; + sf_test_upload_tm_log = 1; + goto SF_QUECTEL_UPLOAD_END; + } + } + else if((sf_get_upload_to_module_flag() == 1) && (strstr((const char *)gsmPara, "+QFUPL:"))) + { + printf("[%s:%d]upload success\n", __FUNCTION__, __LINE__); + + sf_test_upload_tm_log = 1; + goto SF_QUECTEL_UPLOAD_END; + } + else if(strstr((const char *)gsmPara, "CONNECT") || (1 == countflag)) + { + sf_test_uploadFsize = 0; + + ret = sf_hal_ttyusb2_write((SF_CHAR *)MemPhotoAddr, MemPhotosize); + if(ret != SF_FAILURE) + { + printf("[%s:%d]Upload data error\n", __FUNCTION__, __LINE__); + } + sf_sleep_ms(300); + sf_set_upload_to_module_flag(1); + sf_test_uploadFsize = uploadFsize; + countflag = 2; + count = 0; + } + else + { + sf_sleep_ms(1000); + countflag++; + + if(count > sf_test_upload_tm) /*18S*/ + { + //sf_cmd_camera_restart(1); //reboot modu + //enUploadLocation = QUECTEL_UPLOAD_END; + ret = SF_UPLOAD_ERROR_AT_TIMEOUT; + printf("[%s:%d]Upload To Module Timeout,enUploadLocation=%d,Error Code:0x%08X\n", + __FUNCTION__, __LINE__, enUploadLocation, ret); + SLOGE(gsmPara); + sprintf((char *)gsmPara, "[%s:%d]Upload To Module Timeout,enUploadLocation=%d,Error Code:0x%08X\n", + __FUNCTION__, __LINE__, enUploadLocation, ret); + SLOGE(gsmPara); + sf_test_upload_tm_log = 1; + goto SF_QUECTEL_UPLOAD_END; + } + } + + break; + + case QUECTEL_UPLOAD_END: + sf_test_upload_tm_log = 1; + goto SF_QUECTEL_UPLOAD_END; + break; + + default: + break; + } + } + SF_QUECTEL_UPLOAD_END: + SLOGD("End,ret=0x%08x\n", ret); + return ret; +} + +UINT32 MemPhotoAddr , MemPhotosize; + +SINT32 sf_usr_mem_photo_ch(void) +{ + SYS_USRMEM usrmem = {0}; + + if(sys_usrmem_init(&usrmem) == 0){ + if(sys_usrmem_read_photo(&usrmem, &MemPhotoAddr, &MemPhotosize) == 0){ + SLOGI("photo address %lx, size %lx", MemPhotoAddr, MemPhotosize); + return sf_mem_upload_file_to_module(MemPhotoAddr, MemPhotosize); + } + else{ + SLOGE("read photo failed\n"); + return 1; + } + } + return 1; +} +#endif + #ifdef __cplusplus #if __cplusplus }