From b8b50270f12c5ffe0d63dc9fa94a1ae60ca6e79a Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 16 Nov 2023 09:43:45 +0800 Subject: [PATCH 01/12] =?UTF-8?q?1.rtos=E5=A2=9E=E5=8A=A0mem=E5=AD=98?= =?UTF-8?q?=E5=9B=BE=EF=BC=9B2.=E4=BF=AE=E6=94=B9=E6=BC=8F=E5=9B=BE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rtos/code/application/source/cardv/Makefile | 1 + .../565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c | 7 +- .../cardv/SrcCode/FastFlow/flow_preview.c | 2 +- .../cardv/SrcCode/PrjCfg_HUNTING_S550.h | 1 + .../source/cardv/SrcCode/System/sys_usrmem.c | 264 ++++++++++++++++++ .../source/cardv/SrcCode/System/sys_usrmem.h | 41 +++ .../cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c | 5 + .../UIApp/PhotoFast/PhotoFastSliceEncode.c | 171 +++++++----- 8 files changed, 414 insertions(+), 78 deletions(-) create mode 100644 rtos/code/application/source/cardv/SrcCode/System/sys_usrmem.c create mode 100644 rtos/code/application/source/cardv/SrcCode/System/sys_usrmem.h diff --git a/rtos/code/application/source/cardv/Makefile b/rtos/code/application/source/cardv/Makefile index 6365f8837..6403bc640 100755 --- a/rtos/code/application/source/cardv/Makefile +++ b/rtos/code/application/source/cardv/Makefile @@ -142,6 +142,7 @@ SRC = \ ./SrcCode/System/SysStrg_CB.c \ ./SrcCode/System/SysStrg_Exe.c \ ./SrcCode/System/SysSensor_Exe.c \ + ./SrcCode/System/sys_usrmem.c \ ./SrcCode/UIApp/UIAppObj.c \ ./SrcCode/UIApp/ExifVendor.c \ ./SrcCode/UIApp/Setup/UISetup_Exe.c \ diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c index 14deda873..8c731c920 100755 --- a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c @@ -150,8 +150,11 @@ UINT32 DrvGPIO_GetPhotoMovieModeFromMonitor(void) UIMenuStoreInfo *puiPara = sf_ui_para_get(); vos_perf_mark(&t1); value = sf_get_power_on_mode(); - - if(gpio_getIntStatus(GPIO_INT_USBPLUGIN) || FALSE == (gpio_getPin(GPIO_CARD_DETECT) == 0 ? TRUE : FALSE)) + #if SF_NO_SD_SEND == ENABLE + if(gpio_getIntStatus(GPIO_INT_USBPLUGIN) /*|| FALSE == (gpio_getPin(GPIO_CARD_DETECT) == 0 ? TRUE : FALSE)*/) + #else + if(gpio_getIntStatus(GPIO_INT_USBPLUGIN) || FALSE == (gpio_getPin(GPIO_CARD_DETECT) == 0 ? TRUE : FALSE)) + #endif { g_uiBootMode = DX_HUNTING_MODE_OTHER; Save_MenuInfo(); diff --git a/rtos/code/application/source/cardv/SrcCode/FastFlow/flow_preview.c b/rtos/code/application/source/cardv/SrcCode/FastFlow/flow_preview.c index 7fb72ae87..f1f5a6d3a 100755 --- a/rtos/code/application/source/cardv/SrcCode/FastFlow/flow_preview.c +++ b/rtos/code/application/source/cardv/SrcCode/FastFlow/flow_preview.c @@ -153,7 +153,7 @@ static HD_RESULT flowpreview_mem_relayout(void) +VDO_CA_BUF_SIZE(CA_WIN_NUM_W, CA_WIN_NUM_H) +VDO_LA_BUF_SIZE(LA_WIN_NUM_W, LA_WIN_NUM_H); - mem_cfg.pool_info[idx].blk_cnt = 6; + mem_cfg.pool_info[idx].blk_cnt = 7; mem_cfg.pool_info[idx].ddr_id = DDR_ID0; // config common pool (main) // mem_cfg.pool_info[1].type = HD_COMMON_MEM_COMMON_POOL; diff --git a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index c9a892b98..3af8b42a8 100755 --- a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -985,6 +985,7 @@ #ifndef ANR_FUNC #define ANR_FUNC ENABLE #endif +#define SF_NO_SD_SEND DISABLE ////////////////////sf end//////////////////////////////// diff --git a/rtos/code/application/source/cardv/SrcCode/System/sys_usrmem.c b/rtos/code/application/source/cardv/SrcCode/System/sys_usrmem.c new file mode 100644 index 000000000..5b7366b98 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/System/sys_usrmem.c @@ -0,0 +1,264 @@ + +#include "sys_usrmem.h" +#include "rtosfdt.h" +#include "libfdt.h" +#include "compiler.h" +#include +#include +#include "MemCheck.h" +#include "hdal.h" + +#if !defined(__FREERTOS) +#include +#include +#include +#include +#include +#include +#include +#endif + +#if defined(__FREERTOS) + +INT32 sys_usrmem_init(SYS_USRMEM* usrmem) +{ + const void* fdt = fdt_get_base(); + int nodeoffset = fdt_path_offset((const void*)fdt, SYS_USRMEM_NODE); + + int len; + + if(usrmem == NULL){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + usrmem->is_init = FALSE; + + if(nodeoffset >= 0){ + const unsigned long *nodep; + nodep = (const unsigned long *)fdt_getprop(fdt, nodeoffset, "reg", &len); + + usrmem->used_size = 0; + usrmem->addr = be32_to_cpu(nodep[0]); + usrmem->size = be32_to_cpu(nodep[1]); + + usrmem->hdr = (SYS_USRMEM_HDR*) usrmem->addr; + usrmem->hdr->photo_ofs = 0; + usrmem->hdr->photo_size = 0; + usrmem->hdr->photo_sum = 0; + usrmem->hdr->tag = SYS_USRMEM_TAG; + usrmem->used_size += sizeof(SYS_USRMEM_HDR); + usrmem->addr_photo = usrmem->addr + usrmem->used_size; + + DBG_DUMP("usrmem addr = %lx, size = %lx, addr_hdr = %lx, addr_photo = %lx\n", + usrmem->addr, + usrmem->size, + usrmem->hdr , + usrmem->addr_photo); + + usrmem->is_init = TRUE; + return E_OK; + } + + DBG_ERR("fdt node %s not found!\n", SYS_USRMEM_NODE); + + return E_SYS; +} + +INT32 sys_usrmem_write_photo(SYS_USRMEM* usrmem, UINT32 buf, UINT32 size) +{ + if(usrmem == NULL){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + if(usrmem->addr_photo == 0){ + DBG_ERR("address photo can't be null!\n"); + return E_SYS; + } + + if(buf == 0){ + DBG_ERR("buf can't be null!\n"); + return E_SYS; + } + + if(size == 0){ + DBG_ERR("size can't be zero!\n"); + return E_SYS; + } + + if(usrmem->is_init == FALSE){ + DBG_ERR("usrmem is not init yet!\n"); + return E_SYS; + } + + + memcpy((void*)usrmem->addr_photo, (void*)buf, size); + usrmem->hdr->photo_ofs = usrmem->used_size; + usrmem->hdr->photo_size = size; + usrmem->hdr->photo_sum = MemCheck_CalcCheckSum16Bit(usrmem->addr_photo, size); + usrmem->used_size += size; + + hd_common_mem_flush_cache((void*)usrmem->addr, usrmem->used_size); + + DBG_DUMP("photo addr:%lx, size:%lx, sum:%lx\n", usrmem->addr_photo, usrmem->hdr->photo_size, usrmem->hdr->photo_sum); + + return E_OK; + +} +#else + +static void* usrmem_mmap(int fd, unsigned int mapped_size, off_t phy_addr) +{ + void *map_base = NULL; + unsigned page_size = 0; + + page_size = getpagesize(); + map_base = mmap(NULL, + mapped_size, + PROT_READ | PROT_WRITE, + MAP_SHARED, + fd, + (phy_addr) & ~(off_t)(page_size - 1)); + + if (map_base == MAP_FAILED) + return NULL; + + return map_base; +} + +static int usrmem_munmap(void* map_base, unsigned int mapped_size) +{ + if (munmap(map_base, mapped_size) == -1) + return -1; + + return 0; +} + +static int usrmem_init_dev(char* dev) +{ + int fd = 0; + + DBG_DUMP("open %s\n", dev); + + fd = open(dev, O_RDWR | O_SYNC); + return fd; +} + +INT32 sys_usrmem_init(SYS_USRMEM* usrmem) +{ + const void* fdt = fdt_get_base(); + int nodeoffset = fdt_path_offset((const void*)fdt, SYS_USRMEM_NODE); + + int len; + + if(usrmem == NULL){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + usrmem->is_init = FALSE; + + if(nodeoffset >= 0){ + const unsigned long *nodep; + nodep = (const unsigned long *)fdt_getprop(fdt, nodeoffset, "reg", &len); + + usrmem->addr = be32_to_cpu(nodep[0]); + usrmem->size = be32_to_cpu(nodep[1]); + + int fd = usrmem_init_dev("/dev/mem"); + if(fd < 0){ + DBG_ERR("open %s failed\n", "/dev/mem"); + return E_SYS; + } + + DBG_DUMP("usrmem addr:%lx size:%lx\n", usrmem->addr, usrmem->size); + + void* va = usrmem_mmap(fd, usrmem->size ,usrmem->addr); + if(va){ + + usrmem->hdr = va; + usrmem->used_size = sizeof(SYS_USRMEM_HDR); + + if(usrmem->hdr->tag == SYS_USRMEM_TAG){ + + DBG_DUMP("check tag ok, hdr ofs:%lx, size:%lx, sum:%lx\n", + usrmem->hdr->photo_ofs, + usrmem->hdr->photo_size, + usrmem->hdr->photo_sum); + + usrmem->addr_photo = (UINT32)va + usrmem->hdr->photo_ofs; + + DBG_DUMP("photo data = %lx\n", *((UINT32*)usrmem->addr_photo)); + + UINT32 sum = MemCheck_CalcCheckSum16Bit(usrmem->addr_photo, usrmem->hdr->photo_size); + + usrmem->used_size += usrmem->hdr->photo_size; + + if(sum == usrmem->hdr->photo_sum){ + DBG_DUMP("checksum ok(%lx)\n", sum); + usrmem->is_init = TRUE; + return E_OK; + } + else{ + DBG_ERR("checksum err(%lx)\n", sum); + } + } + else{ + DBG_WRN("invalid usrmem hdr tag(%lx)!\n", usrmem->hdr->tag); + } + } + else{ + DBG_ERR("mmap failed(addr:%lx size:%lx)\n", usrmem->addr, usrmem->size); + } + + close(fd); + } + + return E_SYS; +} + +INT32 sys_usrmem_read_photo(SYS_USRMEM* usrmem, UINT32* addr, UINT32* size) +{ + if(usrmem == NULL){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + if(usrmem->is_init == FALSE){ + DBG_ERR("usrmem not init yet!\n"); + return E_SYS; + } + + + if(addr == NULL || size == NULL){ + DBG_ERR("addr & size can't be null!\n"); + return E_SYS; + } + + *addr = usrmem->addr_photo; + *size = usrmem->hdr->photo_size; + + return E_OK; +} + +INT32 sys_usrmem_hdr_uninit(SYS_USRMEM* usrmem) +{ + if(usrmem == NULL ){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + if(!usrmem->addr && !usrmem->size){ + DBG_ERR("addr & size can't be zero!\n"); + return E_SYS; + } + + return usrmem_munmap((void* )usrmem->addr, usrmem->size);; +} + + +#endif + + + diff --git a/rtos/code/application/source/cardv/SrcCode/System/sys_usrmem.h b/rtos/code/application/source/cardv/SrcCode/System/sys_usrmem.h new file mode 100644 index 000000000..757ea5826 --- /dev/null +++ b/rtos/code/application/source/cardv/SrcCode/System/sys_usrmem.h @@ -0,0 +1,41 @@ +#ifndef SYS_USRMEM_H +#define SYS_USRMEM_H + +#include "kwrap/type.h" + +#define SYS_USRMEM_NODE "/nvt_memory_cfg/usrmem" +#define SYS_USRMEM_TAG MAKEFOURCC('U','S','R','M') + +typedef struct{ + + UINT32 tag; + UINT32 photo_ofs; + UINT32 photo_size; + UINT32 photo_sum; + +} SYS_USRMEM_HDR; + +typedef struct{ + + UINT32 addr; + UINT32 size; + UINT32 used_size; + SYS_USRMEM_HDR* hdr; + UINT32 addr_photo; + BOOL is_init; + +} SYS_USRMEM; + +INT32 sys_usrmem_init(SYS_USRMEM* usrmem); + +#if defined(__FREERTOS) + +INT32 sys_usrmem_write_photo(SYS_USRMEM* usrmem, UINT32 buf, UINT32 size); + +#else + +INT32 sys_usrmem_read_photo(SYS_USRMEM* usrmem, UINT32* addr, UINT32* size); + +#endif + +#endif diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c index bf8d965d5..12706505d 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -1732,6 +1732,11 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) } else{ DBG_WRN("enq frame failed...\n"); + /* release */ + if ((hd_ret = hd_videoproc_release_out_buf(vprc_path, &video_frame))!= HD_OK) { + DBG_ERR("failed to hd_videoproc_release_out_buf, er=%d\n", (int)hd_ret); + goto exit; + } } if (g_u32PrvCapCnt >= max_cnt) { diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c index 8b2fad330..6338ee4c3 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c @@ -18,6 +18,7 @@ #include "DxHunting.h" #include "UIAppPhoto_Param.h" #include "DCF.h" +#include "sys_usrmem.h" #if HUNTING_CAMERA_MCU == ENABLE #include #endif @@ -40,7 +41,7 @@ #define PHOTOFAST_SLICE_ENC_DBG_SCREENNAIL_JPG 0 #define PHOTOFAST_SLICE_ENC_DBG_THUMBNAIL_JPG 0 -#define PHOTOFAST_SLICE_ENC_QUEUE12_MAX_SIZE 2 +#define PHOTOFAST_SLICE_ENC_QUEUE12_MAX_SIZE 1 #define PHOTOFAST_SLICE_ENC_QUEUE23_MAX_SIZE 1 #if PHOTOFAST_SLICE_ENC_DBG_PRIMARY_JPG || PHOTOFAST_SLICE_ENC_DBG_SCREENNAIL_JPG || PHOTOFAST_SLICE_ENC_DBG_THUMBNAIL_JPG @@ -2074,7 +2075,7 @@ INT32 PhotoFast_SliceEncode_CB2(void* user_data) if(PhotoFast_SliceEncode_Alloc_Buffer_Retry( &slice_encode_primary_info->bs_buf_mem_info, "slice_enc_primary", - 10, + 50, 100 ) != E_OK){ goto EXIT; @@ -2245,7 +2246,9 @@ INT32 PhotoFast_SliceEncode_CB2(void* user_data) param->cnt++; if(param->cnt >= param->max_cnt) break; - + if(fastboot_wait_done_timeout(BOOT_INIT_FILESYSOK, 1) != E_OK){ + goto EXIT; + } } while(1); EXIT: @@ -2310,95 +2313,113 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data) * Output jpg file ******************************************************************/ extern INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* Path); + #if SF_NO_SD_SEND == ENABLE + if(fastboot_wait_done_timeout(BOOT_INIT_FILESYSOK, FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK || fastboot_wait_done_timeout(BOOT_INIT_FILENAMINGOK, FASTBOOT_WAIT_FILENAMING_TIMEOUT_MS) != E_OK){ - if(fastboot_wait_done_timeout(BOOT_INIT_FILESYSOK, FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK){ + DBG_WRN("filesys not ready, store data into mem\n"); + + SYS_USRMEM usrmem = {0}; + + if(sys_usrmem_init(&usrmem) == E_OK){ + sys_usrmem_write_photo( + &usrmem, + (UINT32) queue_ele_in->jpg_combined_addr, + queue_ele_in->jpg_combined_size + ); + } + } + else + #else + if(fastboot_wait_done_timeout(BOOT_INIT_FILESYSOK, FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK){ goto EXIT; } if(fastboot_wait_done_timeout(BOOT_INIT_FILENAMINGOK, FASTBOOT_WAIT_FILENAMING_TIMEOUT_MS) != E_OK){ goto EXIT; } + #endif + { + vos_perf_mark(&t1); - vos_perf_mark(&t1); + #if !PHOTOFAST_FAST_CLOSE + PhotoFast_WriteFile( + (UINT32)queue_ele_in->jpg_combined_addr, + queue_ele_in->jpg_combined_size, + NAMERULE_FMT_JPG, + 0, + 0); + #else + PhotoFast_WriteFile( + (UINT32)queue_ele_in->jpg_combined_addr, + queue_ele_in->jpg_combined_size, + NAMERULE_FMT_JPG, + 0, + queue_ele_in->file_path); + #endif -#if !PHOTOFAST_FAST_CLOSE - PhotoFast_WriteFile( - (UINT32)queue_ele_in->jpg_combined_addr, - queue_ele_in->jpg_combined_size, - NAMERULE_FMT_JPG, - 0, - 0); -#else - PhotoFast_WriteFile( - (UINT32)queue_ele_in->jpg_combined_addr, - queue_ele_in->jpg_combined_size, - NAMERULE_FMT_JPG, - 0, - queue_ele_in->file_path); -#endif + vos_perf_mark(&t2); - vos_perf_mark(&t2); - - { - char tmp[NMC_TOTALFILEPATH_MAX_LEN] = {'\0'}; - - #if !PHOTOFAST_FAST_CLOSE - extern CHAR* PhotoFast_GetLastWriteFilePath(void); - char* file_path = PhotoFast_GetLastWriteFilePath(); - #else - char file_path[NMC_TOTALFILEPATH_MAX_LEN]; - - #if HUNTING_CAMERA_MCU == ENABLE - sprintf(tmp, "W%03ld%04ld.JPG", queue_ele_in->nextFolderID, queue_ele_in->nextFileID); - strncpy(file_path, tmp, strlen(queue_ele_in->file_path) - 1); - DBG_IND("last send file:%s\r\n", file_path); - #else - strncpy(file_path, FilePath, strlen(queue_ele_in->file_path) - 1); - #endif - #endif - -#if HUNTING_CAMERA_MCU == ENABLE - char tmp2[64] = {'\0'}; -#endif - -#if HUNTING_CAMERA_MCU == ENABLE - snprintf(tmp, sizeof(tmp), "%s%s", PHOTO_THUMB_PATH, file_path); /* DCF 8.3 naming rule */ -#else - UINT32 length = strlen(file_path); - snprintf(tmp, sizeof(tmp), "%s%s", PHOTO_THUMB_PATH, file_path + length - 12); /* DCF 8.3 naming rule */ - snprintf(tmp + strlen(tmp) - 3, sizeof(tmp), "%s", "JPG"); -#endif - DBG_IND("PHOTO THUMB %s\n", tmp); - - vos_perf_mark(&t3); - if(FALSE == sf_is_card_full()) { - FST_FILE fp = FileSys_OpenFile(tmp, FST_CREATE_ALWAYS | FST_OPEN_WRITE); + char tmp[NMC_TOTALFILEPATH_MAX_LEN] = {'\0'}; - FileSys_WriteFile(fp, (UINT8*)queue_ele_in->jpg_thumb_addr, &queue_ele_in->jpg_thumb_size, 0, NULL); - FileSys_FlushFile(fp); - FileSys_CloseFile(fp); - #if HUNTING_CAMERA_MCU == ENABLE - memset(tmp, '\0', sizeof(tmp)); - snprintf(tmp, sizeof(tmp), "%s/%s", SF_SEND_LIST_DIR, file_path); /* DCF 8.3 naming rule */ - snprintf(tmp2, sizeof(tmp2), "%s", file_path); /* DCF 8.3 naming rule */ - sf_file_thumb_cfg_fill(tmp, tmp2, queue_ele_in->jpg_thumb_size, SF_FILE_TYPE_PIC_SMALL); - DBG_IND("PHOTO THUMB %s \n %s\n %s\n", tmp, tmp2,file_path); - DBG_IND("%s:%d thumbfileSize:%d thumbfileName:%s thumbfilePath:%s\n", __FUNCTION__, __LINE__,queue_ele_in->jpg_thumb_size,tmp2,tmp); + #if !PHOTOFAST_FAST_CLOSE + extern CHAR* PhotoFast_GetLastWriteFilePath(void); + char* file_path = PhotoFast_GetLastWriteFilePath(); + #else + char file_path[NMC_TOTALFILEPATH_MAX_LEN]; + + #if HUNTING_CAMERA_MCU == ENABLE + sprintf(tmp, "W%03ld%04ld.JPG", queue_ele_in->nextFolderID, queue_ele_in->nextFileID); + strncpy(file_path, tmp, strlen(queue_ele_in->file_path) - 1); + DBG_IND("last send file:%s\r\n", file_path); + #else + strncpy(file_path, FilePath, strlen(queue_ele_in->file_path) - 1); + #endif #endif + + #if HUNTING_CAMERA_MCU == ENABLE + char tmp2[64] = {'\0'}; + #endif + + #if HUNTING_CAMERA_MCU == ENABLE + snprintf(tmp, sizeof(tmp), "%s%s", PHOTO_THUMB_PATH, file_path); /* DCF 8.3 naming rule */ + #else + UINT32 length = strlen(file_path); + snprintf(tmp, sizeof(tmp), "%s%s", PHOTO_THUMB_PATH, file_path + length - 12); /* DCF 8.3 naming rule */ + snprintf(tmp + strlen(tmp) - 3, sizeof(tmp), "%s", "JPG"); + #endif + DBG_IND("PHOTO THUMB %s\n", tmp); + + vos_perf_mark(&t3); + if(FALSE == sf_is_card_full()) + { + FST_FILE fp = FileSys_OpenFile(tmp, FST_CREATE_ALWAYS | FST_OPEN_WRITE); + + FileSys_WriteFile(fp, (UINT8*)queue_ele_in->jpg_thumb_addr, &queue_ele_in->jpg_thumb_size, 0, NULL); + FileSys_FlushFile(fp); + FileSys_CloseFile(fp); + #if HUNTING_CAMERA_MCU == ENABLE + memset(tmp, '\0', sizeof(tmp)); + snprintf(tmp, sizeof(tmp), "%s/%s", SF_SEND_LIST_DIR, file_path); /* DCF 8.3 naming rule */ + snprintf(tmp2, sizeof(tmp2), "%s", file_path); /* DCF 8.3 naming rule */ + sf_file_thumb_cfg_fill(tmp, tmp2, queue_ele_in->jpg_thumb_size, SF_FILE_TYPE_PIC_SMALL); + DBG_IND("PHOTO THUMB %s \n %s\n %s\n", tmp, tmp2,file_path); + DBG_IND("%s:%d thumbfileSize:%d thumbfileName:%s thumbfilePath:%s\n", __FUNCTION__, __LINE__,queue_ele_in->jpg_thumb_size,tmp2,tmp); + #endif + } + } - } + vos_perf_mark(&t4); - vos_perf_mark(&t4); - - DBG_DUMP("CB3 cost %lu ms(%lu , %lu , %lu)\n", - vos_perf_duration(t1, t4) / 1000, - vos_perf_duration(t1, t2) / 1000, - vos_perf_duration(t2, t3) / 1000, - vos_perf_duration(t3, t4) / 1000 - ); + DBG_DUMP("CB3 cost %lu ms(%lu , %lu , %lu)\n", + vos_perf_duration(t1, t4) / 1000, + vos_perf_duration(t1, t2) / 1000, + vos_perf_duration(t2, t3) / 1000, + vos_perf_duration(t3, t4) / 1000 + ); + } /* check user bs buffer is freed */ if(queue_ele_in->mem_info_combined.va){ PhotoFast_SliceEncode_Free_Buffer(&queue_ele_in->mem_info_combined); From 878b5bc8a2e3511ae118d73ca2a7b8fbc584b364 Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 16 Nov 2023 09:44:26 +0800 Subject: [PATCH 02/12] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0mem=E5=AD=98=E5=9B=BE?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/System/sys_usrmem.c | 264 ++++++++++++++++++ .../source/cardv/SrcCode/System/sys_usrmem.h | 41 +++ .../source/sf_app/code/include/sys_usrmem.h | 41 +++ .../sf_app/code/source/systemMng/sys_usrmem.c | 264 ++++++++++++++++++ 4 files changed, 610 insertions(+) create mode 100644 code/application/source/cardv/SrcCode/System/sys_usrmem.c create mode 100644 code/application/source/cardv/SrcCode/System/sys_usrmem.h create mode 100644 code/application/source/sf_app/code/include/sys_usrmem.h create mode 100644 code/application/source/sf_app/code/source/systemMng/sys_usrmem.c diff --git a/code/application/source/cardv/SrcCode/System/sys_usrmem.c b/code/application/source/cardv/SrcCode/System/sys_usrmem.c new file mode 100644 index 000000000..5b7366b98 --- /dev/null +++ b/code/application/source/cardv/SrcCode/System/sys_usrmem.c @@ -0,0 +1,264 @@ + +#include "sys_usrmem.h" +#include "rtosfdt.h" +#include "libfdt.h" +#include "compiler.h" +#include +#include +#include "MemCheck.h" +#include "hdal.h" + +#if !defined(__FREERTOS) +#include +#include +#include +#include +#include +#include +#include +#endif + +#if defined(__FREERTOS) + +INT32 sys_usrmem_init(SYS_USRMEM* usrmem) +{ + const void* fdt = fdt_get_base(); + int nodeoffset = fdt_path_offset((const void*)fdt, SYS_USRMEM_NODE); + + int len; + + if(usrmem == NULL){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + usrmem->is_init = FALSE; + + if(nodeoffset >= 0){ + const unsigned long *nodep; + nodep = (const unsigned long *)fdt_getprop(fdt, nodeoffset, "reg", &len); + + usrmem->used_size = 0; + usrmem->addr = be32_to_cpu(nodep[0]); + usrmem->size = be32_to_cpu(nodep[1]); + + usrmem->hdr = (SYS_USRMEM_HDR*) usrmem->addr; + usrmem->hdr->photo_ofs = 0; + usrmem->hdr->photo_size = 0; + usrmem->hdr->photo_sum = 0; + usrmem->hdr->tag = SYS_USRMEM_TAG; + usrmem->used_size += sizeof(SYS_USRMEM_HDR); + usrmem->addr_photo = usrmem->addr + usrmem->used_size; + + DBG_DUMP("usrmem addr = %lx, size = %lx, addr_hdr = %lx, addr_photo = %lx\n", + usrmem->addr, + usrmem->size, + usrmem->hdr , + usrmem->addr_photo); + + usrmem->is_init = TRUE; + return E_OK; + } + + DBG_ERR("fdt node %s not found!\n", SYS_USRMEM_NODE); + + return E_SYS; +} + +INT32 sys_usrmem_write_photo(SYS_USRMEM* usrmem, UINT32 buf, UINT32 size) +{ + if(usrmem == NULL){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + if(usrmem->addr_photo == 0){ + DBG_ERR("address photo can't be null!\n"); + return E_SYS; + } + + if(buf == 0){ + DBG_ERR("buf can't be null!\n"); + return E_SYS; + } + + if(size == 0){ + DBG_ERR("size can't be zero!\n"); + return E_SYS; + } + + if(usrmem->is_init == FALSE){ + DBG_ERR("usrmem is not init yet!\n"); + return E_SYS; + } + + + memcpy((void*)usrmem->addr_photo, (void*)buf, size); + usrmem->hdr->photo_ofs = usrmem->used_size; + usrmem->hdr->photo_size = size; + usrmem->hdr->photo_sum = MemCheck_CalcCheckSum16Bit(usrmem->addr_photo, size); + usrmem->used_size += size; + + hd_common_mem_flush_cache((void*)usrmem->addr, usrmem->used_size); + + DBG_DUMP("photo addr:%lx, size:%lx, sum:%lx\n", usrmem->addr_photo, usrmem->hdr->photo_size, usrmem->hdr->photo_sum); + + return E_OK; + +} +#else + +static void* usrmem_mmap(int fd, unsigned int mapped_size, off_t phy_addr) +{ + void *map_base = NULL; + unsigned page_size = 0; + + page_size = getpagesize(); + map_base = mmap(NULL, + mapped_size, + PROT_READ | PROT_WRITE, + MAP_SHARED, + fd, + (phy_addr) & ~(off_t)(page_size - 1)); + + if (map_base == MAP_FAILED) + return NULL; + + return map_base; +} + +static int usrmem_munmap(void* map_base, unsigned int mapped_size) +{ + if (munmap(map_base, mapped_size) == -1) + return -1; + + return 0; +} + +static int usrmem_init_dev(char* dev) +{ + int fd = 0; + + DBG_DUMP("open %s\n", dev); + + fd = open(dev, O_RDWR | O_SYNC); + return fd; +} + +INT32 sys_usrmem_init(SYS_USRMEM* usrmem) +{ + const void* fdt = fdt_get_base(); + int nodeoffset = fdt_path_offset((const void*)fdt, SYS_USRMEM_NODE); + + int len; + + if(usrmem == NULL){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + usrmem->is_init = FALSE; + + if(nodeoffset >= 0){ + const unsigned long *nodep; + nodep = (const unsigned long *)fdt_getprop(fdt, nodeoffset, "reg", &len); + + usrmem->addr = be32_to_cpu(nodep[0]); + usrmem->size = be32_to_cpu(nodep[1]); + + int fd = usrmem_init_dev("/dev/mem"); + if(fd < 0){ + DBG_ERR("open %s failed\n", "/dev/mem"); + return E_SYS; + } + + DBG_DUMP("usrmem addr:%lx size:%lx\n", usrmem->addr, usrmem->size); + + void* va = usrmem_mmap(fd, usrmem->size ,usrmem->addr); + if(va){ + + usrmem->hdr = va; + usrmem->used_size = sizeof(SYS_USRMEM_HDR); + + if(usrmem->hdr->tag == SYS_USRMEM_TAG){ + + DBG_DUMP("check tag ok, hdr ofs:%lx, size:%lx, sum:%lx\n", + usrmem->hdr->photo_ofs, + usrmem->hdr->photo_size, + usrmem->hdr->photo_sum); + + usrmem->addr_photo = (UINT32)va + usrmem->hdr->photo_ofs; + + DBG_DUMP("photo data = %lx\n", *((UINT32*)usrmem->addr_photo)); + + UINT32 sum = MemCheck_CalcCheckSum16Bit(usrmem->addr_photo, usrmem->hdr->photo_size); + + usrmem->used_size += usrmem->hdr->photo_size; + + if(sum == usrmem->hdr->photo_sum){ + DBG_DUMP("checksum ok(%lx)\n", sum); + usrmem->is_init = TRUE; + return E_OK; + } + else{ + DBG_ERR("checksum err(%lx)\n", sum); + } + } + else{ + DBG_WRN("invalid usrmem hdr tag(%lx)!\n", usrmem->hdr->tag); + } + } + else{ + DBG_ERR("mmap failed(addr:%lx size:%lx)\n", usrmem->addr, usrmem->size); + } + + close(fd); + } + + return E_SYS; +} + +INT32 sys_usrmem_read_photo(SYS_USRMEM* usrmem, UINT32* addr, UINT32* size) +{ + if(usrmem == NULL){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + if(usrmem->is_init == FALSE){ + DBG_ERR("usrmem not init yet!\n"); + return E_SYS; + } + + + if(addr == NULL || size == NULL){ + DBG_ERR("addr & size can't be null!\n"); + return E_SYS; + } + + *addr = usrmem->addr_photo; + *size = usrmem->hdr->photo_size; + + return E_OK; +} + +INT32 sys_usrmem_hdr_uninit(SYS_USRMEM* usrmem) +{ + if(usrmem == NULL ){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + if(!usrmem->addr && !usrmem->size){ + DBG_ERR("addr & size can't be zero!\n"); + return E_SYS; + } + + return usrmem_munmap((void* )usrmem->addr, usrmem->size);; +} + + +#endif + + + diff --git a/code/application/source/cardv/SrcCode/System/sys_usrmem.h b/code/application/source/cardv/SrcCode/System/sys_usrmem.h new file mode 100644 index 000000000..757ea5826 --- /dev/null +++ b/code/application/source/cardv/SrcCode/System/sys_usrmem.h @@ -0,0 +1,41 @@ +#ifndef SYS_USRMEM_H +#define SYS_USRMEM_H + +#include "kwrap/type.h" + +#define SYS_USRMEM_NODE "/nvt_memory_cfg/usrmem" +#define SYS_USRMEM_TAG MAKEFOURCC('U','S','R','M') + +typedef struct{ + + UINT32 tag; + UINT32 photo_ofs; + UINT32 photo_size; + UINT32 photo_sum; + +} SYS_USRMEM_HDR; + +typedef struct{ + + UINT32 addr; + UINT32 size; + UINT32 used_size; + SYS_USRMEM_HDR* hdr; + UINT32 addr_photo; + BOOL is_init; + +} SYS_USRMEM; + +INT32 sys_usrmem_init(SYS_USRMEM* usrmem); + +#if defined(__FREERTOS) + +INT32 sys_usrmem_write_photo(SYS_USRMEM* usrmem, UINT32 buf, UINT32 size); + +#else + +INT32 sys_usrmem_read_photo(SYS_USRMEM* usrmem, UINT32* addr, UINT32* size); + +#endif + +#endif diff --git a/code/application/source/sf_app/code/include/sys_usrmem.h b/code/application/source/sf_app/code/include/sys_usrmem.h new file mode 100644 index 000000000..757ea5826 --- /dev/null +++ b/code/application/source/sf_app/code/include/sys_usrmem.h @@ -0,0 +1,41 @@ +#ifndef SYS_USRMEM_H +#define SYS_USRMEM_H + +#include "kwrap/type.h" + +#define SYS_USRMEM_NODE "/nvt_memory_cfg/usrmem" +#define SYS_USRMEM_TAG MAKEFOURCC('U','S','R','M') + +typedef struct{ + + UINT32 tag; + UINT32 photo_ofs; + UINT32 photo_size; + UINT32 photo_sum; + +} SYS_USRMEM_HDR; + +typedef struct{ + + UINT32 addr; + UINT32 size; + UINT32 used_size; + SYS_USRMEM_HDR* hdr; + UINT32 addr_photo; + BOOL is_init; + +} SYS_USRMEM; + +INT32 sys_usrmem_init(SYS_USRMEM* usrmem); + +#if defined(__FREERTOS) + +INT32 sys_usrmem_write_photo(SYS_USRMEM* usrmem, UINT32 buf, UINT32 size); + +#else + +INT32 sys_usrmem_read_photo(SYS_USRMEM* usrmem, UINT32* addr, UINT32* size); + +#endif + +#endif diff --git a/code/application/source/sf_app/code/source/systemMng/sys_usrmem.c b/code/application/source/sf_app/code/source/systemMng/sys_usrmem.c new file mode 100644 index 000000000..5b7366b98 --- /dev/null +++ b/code/application/source/sf_app/code/source/systemMng/sys_usrmem.c @@ -0,0 +1,264 @@ + +#include "sys_usrmem.h" +#include "rtosfdt.h" +#include "libfdt.h" +#include "compiler.h" +#include +#include +#include "MemCheck.h" +#include "hdal.h" + +#if !defined(__FREERTOS) +#include +#include +#include +#include +#include +#include +#include +#endif + +#if defined(__FREERTOS) + +INT32 sys_usrmem_init(SYS_USRMEM* usrmem) +{ + const void* fdt = fdt_get_base(); + int nodeoffset = fdt_path_offset((const void*)fdt, SYS_USRMEM_NODE); + + int len; + + if(usrmem == NULL){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + usrmem->is_init = FALSE; + + if(nodeoffset >= 0){ + const unsigned long *nodep; + nodep = (const unsigned long *)fdt_getprop(fdt, nodeoffset, "reg", &len); + + usrmem->used_size = 0; + usrmem->addr = be32_to_cpu(nodep[0]); + usrmem->size = be32_to_cpu(nodep[1]); + + usrmem->hdr = (SYS_USRMEM_HDR*) usrmem->addr; + usrmem->hdr->photo_ofs = 0; + usrmem->hdr->photo_size = 0; + usrmem->hdr->photo_sum = 0; + usrmem->hdr->tag = SYS_USRMEM_TAG; + usrmem->used_size += sizeof(SYS_USRMEM_HDR); + usrmem->addr_photo = usrmem->addr + usrmem->used_size; + + DBG_DUMP("usrmem addr = %lx, size = %lx, addr_hdr = %lx, addr_photo = %lx\n", + usrmem->addr, + usrmem->size, + usrmem->hdr , + usrmem->addr_photo); + + usrmem->is_init = TRUE; + return E_OK; + } + + DBG_ERR("fdt node %s not found!\n", SYS_USRMEM_NODE); + + return E_SYS; +} + +INT32 sys_usrmem_write_photo(SYS_USRMEM* usrmem, UINT32 buf, UINT32 size) +{ + if(usrmem == NULL){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + if(usrmem->addr_photo == 0){ + DBG_ERR("address photo can't be null!\n"); + return E_SYS; + } + + if(buf == 0){ + DBG_ERR("buf can't be null!\n"); + return E_SYS; + } + + if(size == 0){ + DBG_ERR("size can't be zero!\n"); + return E_SYS; + } + + if(usrmem->is_init == FALSE){ + DBG_ERR("usrmem is not init yet!\n"); + return E_SYS; + } + + + memcpy((void*)usrmem->addr_photo, (void*)buf, size); + usrmem->hdr->photo_ofs = usrmem->used_size; + usrmem->hdr->photo_size = size; + usrmem->hdr->photo_sum = MemCheck_CalcCheckSum16Bit(usrmem->addr_photo, size); + usrmem->used_size += size; + + hd_common_mem_flush_cache((void*)usrmem->addr, usrmem->used_size); + + DBG_DUMP("photo addr:%lx, size:%lx, sum:%lx\n", usrmem->addr_photo, usrmem->hdr->photo_size, usrmem->hdr->photo_sum); + + return E_OK; + +} +#else + +static void* usrmem_mmap(int fd, unsigned int mapped_size, off_t phy_addr) +{ + void *map_base = NULL; + unsigned page_size = 0; + + page_size = getpagesize(); + map_base = mmap(NULL, + mapped_size, + PROT_READ | PROT_WRITE, + MAP_SHARED, + fd, + (phy_addr) & ~(off_t)(page_size - 1)); + + if (map_base == MAP_FAILED) + return NULL; + + return map_base; +} + +static int usrmem_munmap(void* map_base, unsigned int mapped_size) +{ + if (munmap(map_base, mapped_size) == -1) + return -1; + + return 0; +} + +static int usrmem_init_dev(char* dev) +{ + int fd = 0; + + DBG_DUMP("open %s\n", dev); + + fd = open(dev, O_RDWR | O_SYNC); + return fd; +} + +INT32 sys_usrmem_init(SYS_USRMEM* usrmem) +{ + const void* fdt = fdt_get_base(); + int nodeoffset = fdt_path_offset((const void*)fdt, SYS_USRMEM_NODE); + + int len; + + if(usrmem == NULL){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + usrmem->is_init = FALSE; + + if(nodeoffset >= 0){ + const unsigned long *nodep; + nodep = (const unsigned long *)fdt_getprop(fdt, nodeoffset, "reg", &len); + + usrmem->addr = be32_to_cpu(nodep[0]); + usrmem->size = be32_to_cpu(nodep[1]); + + int fd = usrmem_init_dev("/dev/mem"); + if(fd < 0){ + DBG_ERR("open %s failed\n", "/dev/mem"); + return E_SYS; + } + + DBG_DUMP("usrmem addr:%lx size:%lx\n", usrmem->addr, usrmem->size); + + void* va = usrmem_mmap(fd, usrmem->size ,usrmem->addr); + if(va){ + + usrmem->hdr = va; + usrmem->used_size = sizeof(SYS_USRMEM_HDR); + + if(usrmem->hdr->tag == SYS_USRMEM_TAG){ + + DBG_DUMP("check tag ok, hdr ofs:%lx, size:%lx, sum:%lx\n", + usrmem->hdr->photo_ofs, + usrmem->hdr->photo_size, + usrmem->hdr->photo_sum); + + usrmem->addr_photo = (UINT32)va + usrmem->hdr->photo_ofs; + + DBG_DUMP("photo data = %lx\n", *((UINT32*)usrmem->addr_photo)); + + UINT32 sum = MemCheck_CalcCheckSum16Bit(usrmem->addr_photo, usrmem->hdr->photo_size); + + usrmem->used_size += usrmem->hdr->photo_size; + + if(sum == usrmem->hdr->photo_sum){ + DBG_DUMP("checksum ok(%lx)\n", sum); + usrmem->is_init = TRUE; + return E_OK; + } + else{ + DBG_ERR("checksum err(%lx)\n", sum); + } + } + else{ + DBG_WRN("invalid usrmem hdr tag(%lx)!\n", usrmem->hdr->tag); + } + } + else{ + DBG_ERR("mmap failed(addr:%lx size:%lx)\n", usrmem->addr, usrmem->size); + } + + close(fd); + } + + return E_SYS; +} + +INT32 sys_usrmem_read_photo(SYS_USRMEM* usrmem, UINT32* addr, UINT32* size) +{ + if(usrmem == NULL){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + if(usrmem->is_init == FALSE){ + DBG_ERR("usrmem not init yet!\n"); + return E_SYS; + } + + + if(addr == NULL || size == NULL){ + DBG_ERR("addr & size can't be null!\n"); + return E_SYS; + } + + *addr = usrmem->addr_photo; + *size = usrmem->hdr->photo_size; + + return E_OK; +} + +INT32 sys_usrmem_hdr_uninit(SYS_USRMEM* usrmem) +{ + if(usrmem == NULL ){ + DBG_ERR("usrmem can't be null!\n"); + return E_SYS; + } + + if(!usrmem->addr && !usrmem->size){ + DBG_ERR("addr & size can't be zero!\n"); + return E_SYS; + } + + return usrmem_munmap((void* )usrmem->addr, usrmem->size);; +} + + +#endif + + + From 096a5d3f973a94da18967dc482d9371f95aa020a Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 16 Nov 2023 09:44:48 +0800 Subject: [PATCH 03/12] =?UTF-8?q?1.=E8=B0=83=E6=95=B4log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/application/source/sf_app/code/source/logMng/sf_log.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/application/source/sf_app/code/source/logMng/sf_log.c b/code/application/source/sf_app/code/source/logMng/sf_log.c index d7eba7eaa..0f0ae7d7b 100644 --- a/code/application/source/sf_app/code/source/logMng/sf_log.c +++ b/code/application/source/sf_app/code/source/logMng/sf_log.c @@ -113,7 +113,7 @@ static int sf_is_sdc_mounted(void) } fclose(file); - printf("%s:%d is_mounted:%d", __FUNCTION__, __LINE__,is_mounted); + //printf("%s:%d is_mounted:%d", __FUNCTION__, __LINE__,is_mounted); return is_mounted; } From 5df191f6588493212fe7cc76e6f06e60c08d0c58 Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 16 Nov 2023 09:54:05 +0800 Subject: [PATCH 04/12] =?UTF-8?q?1.mem=E5=8F=96=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/sf_app/code/include/sf_file.h | 2 + .../sf_app/code/source/fileMng/sf_file.c | 208 ++++++++++++++++++ 2 files changed, 210 insertions(+) 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 } From 95e8020192b9d06e6147300b24c783739cadcf7b Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 16 Nov 2023 09:54:50 +0800 Subject: [PATCH 05/12] =?UTF-8?q?1.mem=E5=8F=91=E5=9B=BE=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/sf_app/code/include/sf_ftp.h | 1 + .../source/sf_app/code/include/sf_service.h | 2 + .../source/sf_app/code/source/4gMng/sf_ftp.c | 725 +++++++++++++++++- .../sf_app/code/source/app/sf_service.c | 67 +- 4 files changed, 788 insertions(+), 7 deletions(-) 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 } From 75bff8a1744b2cb4e207606d218f6a51fd31ff8c Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 16 Nov 2023 09:46:47 +0800 Subject: [PATCH 06/12] =?UTF-8?q?1.=E7=94=B5=E6=B1=A0=E7=9B=92=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/sf_app/code/source/battery/sf_battery.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/code/application/source/sf_app/code/source/battery/sf_battery.c b/code/application/source/sf_app/code/source/battery/sf_battery.c index 25787d683..0e63359b7 100755 --- a/code/application/source/sf_app/code/source/battery/sf_battery.c +++ b/code/application/source/sf_app/code/source/battery/sf_battery.c @@ -1337,14 +1337,28 @@ UINT8 sf_battery_value_get(UINT8 nightMode) *************************************************/ UINT8 sf_battery_type_get(void) { + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); + if(IsPowerDcIn) + { return SF_POWER_TYPE_DC; + } else if(LiPolymerVoltageVal) + { + if(SF_BATT_LI != puiPara->BatteryType) + { + puiPara->BatteryType = SF_BATT_LI; + } return SF_POWER_TYPE_LI_POLYER; + } else if(BatVoltageVal) + { return SF_POWER_TYPE_AA; + } else + { return SF_POWER_TYPE_DC; + } } /************************************************* From 05803937c04d981b067be3ac044739e1a1486de5 Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 16 Nov 2023 09:49:25 +0800 Subject: [PATCH 07/12] =?UTF-8?q?1.=E6=98=BE=E7=A4=BA=E9=A2=84=E8=A7=88?= =?UTF-8?q?=E6=97=B6=E5=A2=9E=E5=8A=A0log=E6=9F=A5=E7=9C=8B=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c index d7f21d2fe..1834273c4 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c @@ -2265,6 +2265,16 @@ static void PhotoExe_DispCB(void) HD_VIDEO_FRAME video_frame = {0}; HD_RESULT ret; PHOTO_DISP_INFO *p_disp = NULL; + + #if HUNTING_CAMERA_MCU == ENABLE + static int tmp = 1; + if(tmp)//test log + { + tmp = 0; + printf("[%s:%d]ret=%d\n", __FUNCTION__, __LINE__, ret); + } + #endif + p_disp = UIAppPhoto_get_DispConfig(UIAPP_PHOTO_DISP_ID_1); //p_disp->enable = TRUE; if(0 != System_GetState(SYS_STATE_SLEEPLEVEL)){ From 57d0359554923199b915465343cf0636f1314626 Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 16 Nov 2023 09:49:59 +0800 Subject: [PATCH 08/12] =?UTF-8?q?1.mem=E7=BC=96=E8=AF=91=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/application/source/cardv/Makefile | 1 + code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h | 1 + code/application/source/sf_app/Makefile | 1 + 3 files changed, 3 insertions(+) diff --git a/code/application/source/cardv/Makefile b/code/application/source/cardv/Makefile index 69160cf75..f23fc6df9 100755 --- a/code/application/source/cardv/Makefile +++ b/code/application/source/cardv/Makefile @@ -121,6 +121,7 @@ SRC = \ ./SrcCode/System/SysSensor_Exe.c \ ./SrcCode/System/SysFW_Upgrade_Strg_Obj.c \ ./SrcCode/System/SysFW_Upgrade.c \ + ./SrcCode/System/sys_usrmem.c \ ./SrcCode/UIApp/UIAppObj.c \ ./SrcCode/UIApp/ExifVendor.c \ ./SrcCode/UIApp/Setup/UISetup_Exe.c \ diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index 42dc0ac04..f6b2ec2e5 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -974,6 +974,7 @@ #ifndef ANR_FUNC #define ANR_FUNC ENABLE #endif +#define SF_NO_SD_SEND DISABLE //////////////////////sf end/////////////////////////////// /******************************************************************************************* diff --git a/code/application/source/sf_app/Makefile b/code/application/source/sf_app/Makefile index e6decaf7c..5016a46da 100755 --- a/code/application/source/sf_app/Makefile +++ b/code/application/source/sf_app/Makefile @@ -316,6 +316,7 @@ SRC = \ ./code/source/systemMng/sf_systemMng.c \ ./code/source/systemMng/sf_commu_mcu_reg.c \ ./code/source/systemMng/sf_commu_mcu.c \ + ./code/source/systemMng/sys_usrmem.c \ ./code/source/devMng/sf_dev_other.c \ ./code/source/devMng/sf_dev_usb.c \ ./code/source/devMng/sf_keymng.c \ From 4fd94f66d7edfa79fcfd851d3bd12865247329e7 Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 16 Nov 2023 09:50:23 +0800 Subject: [PATCH 09/12] =?UTF-8?q?1.=E5=8E=BB=E6=8E=89=E8=B0=83=E8=AF=95adc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../init.d/S07_SysInit | 31 ------------------- 1 file changed, 31 deletions(-) diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit index fab776891..d07e74724 100755 --- a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit @@ -35,37 +35,6 @@ echo "fs" > /proc/nvt_info/bootts echo "/sbin/mdev" > /proc/sys/kernel/hotplug #modprobe mmc_na51055 -if [ 1 ] ; then - -sleep ${DELAY} - -echo 0x5 > /proc/adc -cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw -echo 0x3 > /proc/adc -sleep ${DELAY} - -echo 1 > /sys/devices/gpiochip0/gpio/gpio${SF_ADC_MUXA}/value -echo 0 > /sys/devices/gpiochip0/gpio/gpio${SF_ADC_MUXB}/value -sleep ${DELAY} -cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw -echo 0x1 > /proc/adc -sleep ${DELAY} - -echo 0 > /sys/devices/gpiochip0/gpio/gpio${SF_ADC_MUXA}/value -echo 0 > /sys/devices/gpiochip0/gpio/gpio${SF_ADC_MUXB}/value -sleep ${DELAY} -cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw -echo 0x0 > /proc/adc -sleep ${DELAY} - -echo 0 > /sys/devices/gpiochip0/gpio/gpio${SF_ADC_MUXA}/value -echo 1 > /sys/devices/gpiochip0/gpio/gpio${SF_ADC_MUXB}/value -sleep ${DELAY} -echo 0x2 > /proc/adc -sleep ${DELAY} -cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw - -fi mdev -s From d7e25d17d1dbf45fc054a1f992849a495bb4e5d4 Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 16 Nov 2023 09:50:40 +0800 Subject: [PATCH 10/12] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0log=E7=AD=89=E7=BA=A7?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/application/source/cardv/SrcCode/System/main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/application/source/cardv/SrcCode/System/main.c b/code/application/source/cardv/SrcCode/System/main.c index 8ec8863fe..322c976a9 100755 --- a/code/application/source/cardv/SrcCode/System/main.c +++ b/code/application/source/cardv/SrcCode/System/main.c @@ -16,7 +16,7 @@ #include #if HUNTING_CAMERA_MCU == ENABLE #include - +#include "sf_log.h" #endif @@ -407,6 +407,7 @@ int NvtMain(void) nvt_hdal_init(); nvt_user_init(); #if HUNTING_CAMERA_MCU == ENABLE + sf_log_Level_set(SF_LOG_LEVEL_DEBUG); sf_cardv_check_power_on_mode(); BOOL inUsb = GxUSB_GetIsUSBPlug(); if(TRUE == inUsb)//(!sf_gpio_get_status(GPIO_INT_USBPLUGIN)) From d973040350628bd79efadbb94ee825127cdbe7c0 Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 16 Nov 2023 17:40:52 +0800 Subject: [PATCH 11/12] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8DWiFi=E5=92=8C?= =?UTF-8?q?=E8=93=9D=E7=89=99=E8=AE=BE=E7=BD=AEcam=20id=202.=E4=BF=AE?= =?UTF-8?q?=E5=A4=8DWiFi=E4=B8=8B=E5=9B=BE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sf_app/code/include/sf_param_enum.h | 2 - .../source/sf_app/code/source/4gMng/sf_ftp.c | 2 +- .../sf_app/code/source/fileMng/sf_file.c | 2 +- .../code/source/sf_blue/src/sf_blue_app.c | 4 +- .../sf_app/code/source/wifi/sf_wifi_svr.c | 55 ++++++++++--------- 5 files changed, 34 insertions(+), 31 deletions(-) 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 f8a9dfae8..0caf16245 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 @@ -187,8 +187,6 @@ extern "C" { #define SF_THUMB_SMALL_DIR SF_SD_DISK"THUMB/small" #define SF_THUMB_BIG_DIR SF_SD_DISK"THUMB/big" #define SF_THUMB_VIDEO_DIR SF_SD_DISK"THUMB/video" -#define DCF_DIR_FREE_CHAR "MEDIA" -#define DCF_FILE_FREE_CHAR "SYFW" #define SF_TRUE 1 #define SF_FALSE 0 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 961e87bc8..d73de5bd8 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 @@ -1061,7 +1061,7 @@ SINT32 sf_video_send_ftp(void) sprintf((char *)ftpFileName, "%s%s", cameraID, videoFname); sprintf((char *)filePath, "UFS:/%s", videoFname); - sprintf((char *)videoDir, "%s\\%s%s\\%s", SF_DCIM_DIR, videoDirKey, DCF_DIR_FREE_CHAR, videoFname); + sprintf((char *)videoDir, "%s\\%s%s\\%s", SF_DCIM_DIR, videoDirKey, DCF_DIR_NAME, videoFname); */ fileIndex = sf_check_file_video(); 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 2a9e12248..a8e1151fc 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 @@ -694,7 +694,7 @@ SINT32 sf_upload_send_files_to_module(UINT8 mode) { SendPicSize = tempPicSize; /*sf_get_send_video_fname(videoDirKey, videoFname); - sprintf((char *)uploadAbsolutePath[0], "%s\\%s%s\\%s", SF_DCIM_DIR, videoDirKey, DCF_DIR_FREE_CHAR, videoFname); + sprintf((char *)uploadAbsolutePath[0], "%s\\%s%s\\%s", SF_DCIM_DIR, videoDirKey, DCF_DIR_NAME, videoFname); sprintf((char *)uploadFname[0], "%s", videoFname);*/ fileIndex = sf_check_file_video(); diff --git a/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_app.c b/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_app.c index 05a3ad830..64a3f06c3 100644 --- a/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_app.c +++ b/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_app.c @@ -271,7 +271,7 @@ static void sf_blue_command_get_camera_para(MSG_DEV_BLE_Param_Get_Rsp_T *CamPara CamPara->batType = puiPara->BatteryType; - CamPara->cameraID = puiPara->CamNameSwitch == SF_CAMID_OFF ? 0:1; + CamPara->cameraID = puiPara->CamNameSwitch == SF_CAMID_OFF ? 1:0; strcpy((char *)CamPara->cameraIDstr, (char *)puiPara->CamNameStr); CamPara->dateTimeAuto = puiPara->DateAuto; @@ -791,7 +791,7 @@ static signed int sf_blue_command_request_process(U8 *val, unsigned int nval, U8 case BLE_SET_CAMERA_CameraID: //O { BLU_SLOGI("[BLE_SET_CAMERA_CameraID],cameraID:%d\n",pMsgStruct->msgBuf.setCameraID.cameraID); - puiPara->CamNameSwitch = pMsgStruct->msgBuf.setCameraID.cameraID == 0 ? SF_CAMID_OFF : SF_CAMID_ON; + puiPara->CamNameSwitch = pMsgStruct->msgBuf.setCameraID.cameraID == 1 ? SF_CAMID_OFF : SF_CAMID_ON; strncpy(puiPara->CamNameStr, (char *)pMsgStruct->msgBuf.setCameraID.cameraIDstr, 4); //Use SF_STRNCPY to avoid that APP has not send '\0'. sf_camera_name_check(puiPara->CamNameStr); puiPara->CamNameStr[4] = '\0'; diff --git a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c index cc9392098..fa83af112 100755 --- a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c +++ b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c @@ -561,7 +561,7 @@ void appsvr_getFileList(UINT8 *dirPath, UINT8 *startFileKey) gDevFileList[nFileNums + gDevFileListNums].srcFileType = (ptr->d_name[0] == 'W' ? 0 : (ptr->d_name[0] == 'S' ? 1 : 1));//ptr->d_name[3] - '0'; //printf("%s\n", g3g75DevFileList[nFileNums - idx + gDevFileListNums].fileName); nFileNums ++ ; - //MLOGI("fileNameString:%s.\n", gDevFileList[nFileNums + gDevFileListNums].fileNameString); + // MLOGI("fileNameString:%s. srcFileType:%d\n", gDevFileList[nFileNums + gDevFileListNums].fileNameString, gDevFileList[nFileNums + gDevFileListNums].srcFileType); } //printf("[appsvr_getFileList]%d,%s\n",nFileNums - idx, gDevFileList[nFileNums - idx].fileName); } @@ -659,7 +659,7 @@ UINT8 appCmpFileList(void) //appThumbNameToKey(&fileType, &dirKey, &fileKey, gDevFileList[i].fileNameString);ERROR:dirKey always zero //printf("dirkey=%d\n",dirKey); sprintf(fileName,"D:/DCIM/%.3s%s/%s%.4s%s", - gDevFileList[i].fileNameString,DCF_DIR_FREE_CHAR,DCF_FILE_FREE_CHAR,gDevFileList[i].fileNameString+4, + gDevFileList[i].fileNameString,DCF_DIR_NAME,DCF_FILE_NAME,gDevFileList[i].fileNameString+4, (gDevFileList[i].fileNameString[3] == '0' ? ".JPG" : (gDevFileList[i].fileNameString[3] == '1' ? ".MP4" : ".MP4"))); //profLogPrintf(0,"file:%s", fileName); //printf("str:%s,name:%s,\n",gDevFileList[i].fileNameString,fileName); @@ -702,10 +702,10 @@ void appCreatThumbList(S8 *fileName)//start file name example: 10010032.JPG else { MLOGI("fileName3:%s\n",fileName); - //startDirKey[0] = '\0'; - //startFileKey[0] = '\0'; - strncpy((char *)startDirKey, "100", 3); - strncpy((char *)startFileKey, "0001", 4); + startDirKey[0] = '\0'; + startFileKey[0] = '\0'; + //strncpy((char *)startDirKey, "100", 3); + //strncpy((char *)startFileKey, "0001", 4); } //MLOGI("startDirKey:%s startFileKey:%s sizeof:%d\n",startDirKey,startFileKey, FILE_LIST_NUM_MAX*(sizeof(MSG_DEV_THUMB_LIST_Get_Data_Rsp_T))); //memset(gDevFileList, 0, FILE_LIST_NUM_MAX*(sizeof(MSG_DEV_THUMB_LIST_Get_Data_Rsp_T))); @@ -975,7 +975,7 @@ void sf_app_Get_Camera_Para(MSG_DEV_Param_Get_Rsp_T *CamPara) CamPara->batType = puiPara->BatteryType; - CamPara->cameraID = puiPara->CamNameSwitch == SF_CAMID_OFF ? 0:1; + CamPara->cameraID = puiPara->CamNameSwitch == SF_CAMID_OFF ? 1:0; strcpy((char *)CamPara->cameraIDstr, (char *)puiPara->CamNameStr); CamPara->dateTimeAuto = puiPara->DateAuto; @@ -1261,8 +1261,8 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) // printf("nRet = %d\n", nRet); } - for(i =0 ; i<16; i++) - printf("%s\n",gDevFileList[i].fileNameString); + for(i =0 ; i<(SINT32)gDevFileListNums; i++) + printf("%s %d\n",gDevFileList[i].fileNameString, gDevFileList[i].srcFileType); memdump(gDevFileList, sendSize); @@ -1284,17 +1284,18 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) { strcpy((char *)tempbuf, (char *)pMsgStruct->msgBuf.getHdFile.dirName); strncpy((char *)tempbuf2, (char *)pMsgStruct->msgBuf.getHdFile.dirName, 3); - sprintf((char *)gFileName, "%s/%s/%s", THUMB_PATH, tempbuf2, tempbuf); + sprintf((char *)gFileName, "%s%s/%s", THUMB_PATH, tempbuf2, tempbuf); } else if(pMsgStruct->msgBuf.getHdFile.type == 1) //srouce file { strcpy((char *)tempbuf, (char *)pMsgStruct->msgBuf.getHdFile.dirName); strncpy((char *)tempbuf2, (char *)tempbuf, 3); tempbuf[8] = '\0'; - sprintf((char *)gFileName, "D:/DCIM/%s%s/%s%s%s", + sprintf((char *)gFileName, "%sDCIM/%s%s/%s%s%s", + SF_SD_ROOT, tempbuf2, - DCF_DIR_FREE_CHAR, - DCF_FILE_FREE_CHAR, + DCF_DIR_NAME, + DCF_FILE_NAME, tempbuf+4, (tempbuf[3] == '0' ? ".JPG" : (tempbuf[3] == '1' ? ".MP4" : ".MP4"))); } @@ -1685,7 +1686,7 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) case WIFI_SET_CAMERA_CameraID: //O MLOGI("[WIFI_SET_CAMERA_CameraID],cameraID:%d\n",pMsgStruct->msgBuf.setCameraID.cameraID); - puiPara->CamNameSwitch = pMsgStruct->msgBuf.setCameraID.cameraID == 0 ? SF_CAMID_OFF : SF_CAMID_ON; + puiPara->CamNameSwitch = pMsgStruct->msgBuf.setCameraID.cameraID == 1 ? SF_CAMID_OFF : SF_CAMID_ON; strncpy(puiPara->CamNameStr, (char *)pMsgStruct->msgBuf.setCameraID.cameraIDstr, 4); //Use SF_STRNCPY to avoid that APP has not send '\0'. sf_camera_name_check(puiPara->CamNameStr); puiPara->CamNameStr[4] = '\0'; @@ -1809,10 +1810,12 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) break; case WIFI_CONTROL_CAMERA_FileTransfer: - + //printf("WIFI_CONTROL_CAMERA_FileTransfer\n"); keyMap = ntohl(pMsgStruct->msgBuf.ctrlFileTransfer.PORT); function = pMsgStruct->msgBuf.ctrlFileTransfer.function; - MLOGI("[WIFI_CONTROL_CAMERA_FileTransfer], keyMap=%d, function=%d,type:%d\n",keyMap,function,pMsgStruct->msgBuf.ctrlFileTransfer.type); + + MLOGI("[WIFI_CONTROL_CAMERA_FileTransfer], keyMap=%d, function=%d,type:%d \n",keyMap,function,pMsgStruct->msgBuf.ctrlFileTransfer.type); + if(function) { if(pMsgStruct->msgBuf.ctrlFileTransfer.type == 0) //thumbnail @@ -1820,7 +1823,7 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) //strcpy((char *)tempbuf, (char *)pMsgStruct->msgBuf.ctrlFileTransfer.fileName); memcpy((char *)tempbuf, (char *)pMsgStruct->msgBuf.ctrlFileTransfer.fileName,strlen((char *)pMsgStruct->msgBuf.ctrlFileTransfer.fileName)); - sprintf((char *)fileName, "%s/%s", THUMB_PATH, tempbuf); + sprintf((char *)fileName, "%s%s", THUMB_PATH, tempbuf); } else if(pMsgStruct->msgBuf.ctrlFileTransfer.type == 1) //srouce file @@ -1829,11 +1832,11 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) strncpy((char *)tempbuf2, (char *)pMsgStruct->msgBuf.ctrlFileTransfer.fileName +1, 3); tempbuf[8] = '\0'; - sprintf((char *)fileName, "%s/DCIM/%s%s/%s%s%s", + sprintf((char *)fileName, "%sDCIM/%s%s/%s%s%s", SD_PATH, tempbuf2, - DCF_DIR_FREE_CHAR, - DCF_FILE_FREE_CHAR, + DCF_DIR_NAME, + DCF_FILE_NAME, tempbuf+4, (tempbuf[0] == 'W' ? ".JPG" : (tempbuf[0] == 'S' ? ".MP4" : ".MP4"))); } @@ -1841,7 +1844,7 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) { sprintf((char *)fileName, "%s%s",SF_SD_ROOT,pMsgStruct->msgBuf.ctrlFileTransfer.fileName); } - // printf("rec file cmd:%s\n", fileName); + //MLOGI("rec file cmd:%s\n", fileName); } else { @@ -1865,11 +1868,12 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) // msgParse.msgBuf.rctrlFileTransferInfo.filePath[13]=0; msgParse.msgBuf.rctrlFileTransferInfo.type = (tempbuf[0] == 'W' ? 0 : (tempbuf[0] == 'S' ? 1 : 1)); fileFd = open((char *)fileName, O_RDONLY); + //printf("fileFd = %d rctrlFileTransferInfo.type:%d\n", fileFd,msgParse.msgBuf.rctrlFileTransferInfo.type); if(fileFd > 0) { fSize = sp5kFsFileSizeGet((char *)fileName); msgParse.msgBuf.rctrlFileTransferInfo.fileSize = htonl(fSize); - // printf("fileSize = %d\n", fSize); + //printf("fileSize = %d\n", fSize); stat( fileName, &fstat); mtime = localtime((time_t *)&fstat.st_mtime); @@ -1935,9 +1939,9 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) ret = remove((char *)fileName); MLOGI("delete thumb name=%s ret=%d\n",fileName,ret); if(fileType == STILL_THUMB) - sprintf((char *)fileName,"./%3dMEDIA/%s%04d.JPG", dirKey, DCF_FILE_FREE_CHAR, fileKey); + sprintf((char *)fileName,"./%3dMEDIA/%s%04d.JPG", dirKey, DCF_FILE_NAME, fileKey); else - sprintf((char *)fileName,"./%3dMEDIA/%s%04d.MP4", dirKey, DCF_FILE_FREE_CHAR, fileKey); + sprintf((char *)fileName,"./%3dMEDIA/%s%04d.MP4", dirKey, DCF_FILE_NAME, fileKey); ret = remove((char *)fileName); } @@ -2097,11 +2101,12 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) #endif default: + WIFI_SLOGI("[WIFI_CMD_MAX] default\n"); msgParse.msgBuf.camreaSetRsp.cmdRet = -1; msgParse.msgBuf.camreaSetRsp.suffix = htons(MSG_END_FIX); /* add the cmd + resp total 2*2 bytes */ msgParse.msglen = htons(sizeof(MSG_DEV_SET_Rsp_T) + 2*sizeof(UINT16) ); - respFlag = 1; + respFlag = 0; break; } From 1d7c12fddb0aaede5e350354de2ef039370bd885 Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 16 Nov 2023 17:38:01 +0800 Subject: [PATCH 12/12] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E5=BC=80=E6=9C=BA?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E5=87=BA=E5=9B=BE=E7=BC=96=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c index 1834273c4..f7006d68e 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c @@ -2271,7 +2271,7 @@ static void PhotoExe_DispCB(void) if(tmp)//test log { tmp = 0; - printf("[%s:%d]ret=%d\n", __FUNCTION__, __LINE__, ret); + printf("[%s:%d]s\n", __FUNCTION__, __LINE__); } #endif