From e8397d37b6ca3fbae553ee0a7173ed9737b09f90 Mon Sep 17 00:00:00 2001 From: payton Date: Tue, 16 Jan 2024 21:02:16 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0Linux=E4=B8=8B=E6=97=A0?= =?UTF-8?q?=E5=8D=A1=E5=8F=91=E9=80=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/System/sys_usrmem.c | 42 +++++++++++++++++++ .../source/cardv/SrcCode/System/sys_usrmem.h | 1 + .../SrcCode/UIApp/Movie/UIAppMovie_Exe.c | 4 +- .../SrcCode/UIApp/Photo/UIAppPhoto_Exe.c | 22 ++++++++-- .../UIFlowPhoto/UIFlowPhotoEventCallback.c | 12 +++++- .../source/sf_app/code/include/sys_usrmem.h | 1 + .../sf_app/code/source/app/sf_service.c | 11 +++++ 7 files changed, 86 insertions(+), 7 deletions(-) diff --git a/code/application/source/cardv/SrcCode/System/sys_usrmem.c b/code/application/source/cardv/SrcCode/System/sys_usrmem.c index 5b7366b98..da15c663d 100644 --- a/code/application/source/cardv/SrcCode/System/sys_usrmem.c +++ b/code/application/source/cardv/SrcCode/System/sys_usrmem.c @@ -218,6 +218,48 @@ INT32 sys_usrmem_init(SYS_USRMEM* usrmem) 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; + +} + INT32 sys_usrmem_read_photo(SYS_USRMEM* usrmem, UINT32* addr, UINT32* size) { if(usrmem == NULL){ diff --git a/code/application/source/cardv/SrcCode/System/sys_usrmem.h b/code/application/source/cardv/SrcCode/System/sys_usrmem.h index 757ea5826..03c6be1b6 100644 --- a/code/application/source/cardv/SrcCode/System/sys_usrmem.h +++ b/code/application/source/cardv/SrcCode/System/sys_usrmem.h @@ -35,6 +35,7 @@ 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); +INT32 sys_usrmem_write_photo(SYS_USRMEM* usrmem, UINT32 buf, UINT32 size); #endif diff --git a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c index ff2228f0a..473e801d4 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c @@ -38,7 +38,7 @@ #include "vendor_videoout.h" #include "IOCfg.h" -#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define THIS_DBGLVL 6 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER /////////////////////////////////////////////////////////////////////////////// #define __MODULE__ UiAppMovie #define __DBGLVL__ ((THIS_DBGLVL>=PRJ_DBG_LVL)?THIS_DBGLVL:PRJ_DBG_LVL) @@ -1273,7 +1273,7 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) else if(id == _CFG_CLONE_ID_1){ snprintf(thumb_current_path_clone, sizeof(thumb_current_path_clone), "%s", tmp); } - DBG_DUMP("last send file:%s\r\n", tmp); + DBG_DUMP("id:%d last send file:%s\r\n", id, tmp); #else if(id == _CFG_REC_ID_1){ snprintf(thumb_current_path_main, sizeof(thumb_current_path_main), "%s", pFileName); 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 a7274cda3..c264be46b 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c @@ -40,7 +40,7 @@ #include "DCF.h" #endif #include "SF_SysStrgMng.h" - +#include "sys_usrmem.h" #define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER @@ -6879,14 +6879,15 @@ INT32 PhotoExe_Preview_SliceEncode_CB3(void* user_data) extern INT32 ImageApp_Photo_WriteCB(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId); IMG_CAP_FST_INFO FstStatus = {FST_STA_OK}; - UINT32 dcf_handle = (UINT32)System_Get_DCF_Handle(); /* 0:emmc 1:sd */ + INT32 dcf_handle = (INT32)System_Get_DCF_Handle(); /* 0:emmc 1:sd */ - FstStatus.Status = ImageApp_Photo_WriteCB( + if(dcf_handle >= 0) + { + FstStatus.Status = ImageApp_Photo_WriteCB( (UINT32)queue_ele_in->jpg_combined_addr, queue_ele_in->jpg_combined_size, HD_CODEC_TYPE_JPEG, dcf_handle); - { char* file_path = ImageApp_Photo_GetLastWriteFilePath(); char tmp[256] = {'\0'}; UINT32 length = strlen(file_path); @@ -6940,6 +6941,19 @@ INT32 PhotoExe_Preview_SliceEncode_CB3(void* user_data) } #endif } + else + { + 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_thumb_addr, + queue_ele_in->jpg_thumb_size + ); + } + } if(PhotoCapMsgCb){ PhotoCapMsgCb(IMG_CAP_CBMSG_FSTOK, &FstStatus); diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c index e11603238..b9c03c8fd 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c @@ -84,6 +84,7 @@ static lv_obj_t *g_preview_info_msgbox = NULL; static lv_obj_t *g_preview_info_label = NULL; static int g_preview_info_ishidden = true; static lv_task_t* preview_info_task = NULL; +extern DCF_HANDLE System_Get_DCF_Handle(void); static void preview_info_task_cb(lv_task_t* task) { static int count = 0; @@ -1892,6 +1893,7 @@ void UIFlowPhoto_UpdateInfo(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* msg) { #if HUNTING_CAMERA_MCU == ENABLE UIMenuStoreInfo *puiPara = sf_ui_para_get(); + INT32 dcf_handle = -1; #endif if(msg == NULL){ @@ -1911,7 +1913,15 @@ void UIFlowPhoto_UpdateInfo(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* msg) case UIAPPPHOTO_CB_CAPSTART: #if HUNTING_CAMERA_MCU == ENABLE sf_set_cap_statu(TRUE); - sf_set_cammode_statu(puiPara->CamMode); + dcf_handle = (INT32)System_Get_DCF_Handle(); /* 0:emmc 1:sd */ + if(dcf_handle >= 0) + { + sf_set_cammode_statu(puiPara->CamMode); + } + else { + DBG_WRN("filesys not ready, CamMode SF_CAM_MODE_PHOTO\n"); + sf_set_cammode_statu(SF_CAM_MODE_PHOTO); + } #endif if(obj == UIFlowPhoto) diff --git a/code/application/source/sf_app/code/include/sys_usrmem.h b/code/application/source/sf_app/code/include/sys_usrmem.h index 757ea5826..03c6be1b6 100644 --- a/code/application/source/sf_app/code/include/sys_usrmem.h +++ b/code/application/source/sf_app/code/include/sys_usrmem.h @@ -35,6 +35,7 @@ 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); +INT32 sys_usrmem_write_photo(SYS_USRMEM* usrmem, UINT32 buf, UINT32 size); #endif 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 17bd3b884..caa5a1bd3 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 @@ -1275,9 +1275,20 @@ static SINT32 app_file_transfer(SF_FN_PARAM_S *pfnParam) { SINT32 sf_cardv_file_to_app_send_thread(void) { SINT32 s32ret = 0; SF_FN_PARAM_S stpfncallback = {0}; + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); + if(SF_FAILURE == sf_check_sd()) { MLOGE("ERROR sf_check_sd\n"); + + #if SF_NO_SD_SEND == ENABLE + if((0 == puiPara->SendType) && (0 == sf_usr_mem_photo_ch())) + { + s32ret = sf_mem_send_file_to_ftp(); + return s32ret; + } + #endif + return SF_FAILURE; } stpfncallback.pstParam = sf_customer_param_get();