From 924dc666e9aa55fe5ff17a650fdd23e84d0d0519 Mon Sep 17 00:00:00 2001 From: "sober.song" Date: Thu, 28 Dec 2023 20:57:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0USE=5FMMC=5FDEV=5FCHECK?= =?UTF-8?q?=E5=AE=8F=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cardv/SrcCode/System/SF_SysStrgMng.h | 1 + .../source/cardv/SrcCode/System/SysStrg_CB.c | 1 + .../source/cardv/SrcCode/System/SysStrg_Exe.c | 17 +++++++-- .../SrcCode/UIApp/Photo/UIAppPhoto_Exe.c | 6 +++ .../SrcCode/UIApp/Photo/UIStorageCheck.c | 37 +++++++++++++++++-- .../UIFlowPhoto/UIFlowPhotoEventCallback.c | 3 +- 6 files changed, 57 insertions(+), 8 deletions(-) diff --git a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.h b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.h index cf5f67873..421608c42 100755 --- a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.h +++ b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.h @@ -32,6 +32,7 @@ #define EMMC_DEVICE_NAME "/dev/mmcblk1p1" #define EMMC_MOUNT_ROOT "/mnt/sd2" +#define USE_MMC_DEV_CHECK (0) typedef enum { diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_CB.c b/code/application/source/cardv/SrcCode/System/SysStrg_CB.c index 83e77adef..afe371082 100755 --- a/code/application/source/cardv/SrcCode/System/SysStrg_CB.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_CB.c @@ -178,6 +178,7 @@ void Strg_CB(UINT32 event, UINT32 param1, UINT32 param2) stMessageBuf.cmdId = CMD_SD; sf_com_message_send_to_app(&stMessageBuf); printf("strg_cb send MOUNT! dev_id = %d\n", param1); +#if USE_MMC_DEV_CHECK SF_StrgRegister(&stMessageBuf); } #endif diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index 705b5fc53..365ff6862 100644 --- a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -348,9 +348,9 @@ void System_OnStrgInit_FS(void) GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_BUF, (UINT32)&Pool); #endif } - +#if USE_MMC_DEV_CHECK SF_StrgInit();// 初始化sf_mmc设备Obj - +#endif #if !defined(__FREERTOS) GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_FS_TYPE, FileSys_GetOPS_Linux()); //for FILE_CFG_FS_TYPE, DevID is don't care @@ -530,8 +530,9 @@ void System_OnStrgExit_FS(void) #endif #endif - +#if USE_MMC_DEV_CHECK SF_StrgUnInit();// 反初始化sf_mmc设备Obj +#endif // unmount file system GxStrg_CloseDevice(0); #if (FS_MULTI_STRG_FUNC) @@ -760,6 +761,7 @@ INT32 System_Set_Storage_Act_Drive(char drive) DCF_HANDLE System_Get_DCF_Handle(void) { + #if USE_MMC_DEV_CHECK SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev(); if(mmc_dev->dcf_handle < 0) { @@ -768,6 +770,9 @@ DCF_HANDLE System_Get_DCF_Handle(void) } DBG_WRN("DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle); return mmc_dev->dcf_handle; + #else + return 0; + #endif } CHAR System_Get_DCF_Disk_Drive(DCF_HANDLE handle) @@ -913,7 +918,9 @@ INT32 System_OnStrgInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) DBG_WRN("emmc act\n"); System_Set_Storage_Act_Drive(g_strg_mapping_table[strg_id].drive); } + #if USE_MMC_DEV_CHECK SF_StrgSetDcfHandle(strg_id, g_strg_mapping_table[strg_id].dcf_hdl); //获取mmc设备dcf_handle + #endif } #endif @@ -1117,7 +1124,9 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) stMessageBuf.arg3 = FST_STA_OK; stMessageBuf.cmdId = CMD_SD; sf_com_message_send_to_app(&stMessageBuf); + #if USE_MMC_DEV_CHECK SF_StrgRegister(&stMessageBuf); + #endif printf("System_OnStrgAttach send MOUNT! dev_id = %d\n", strg_id); Ux_PostEvent(NVTEVT_STRG_MOUNT_OK, 0); } @@ -1212,7 +1221,9 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) stMessageBuf.arg2 = strg_id; stMessageBuf.cmdId = CMD_SD; sf_com_message_send_to_app(&stMessageBuf); + #if USE_MMC_DEV_CHECK SF_StrgRegister(&stMessageBuf); + #endif printf("System_OnStrgAttach send UNMOUNT! dev_id = %d\n", strg_id); } #endif 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 44e80ff37..5e5a5a230 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c @@ -699,6 +699,7 @@ UINT32 PhotoExe_GetFreePicNum(void) UINT32 reserveSize = 0x1e00000; // 30MB UINT32 CaptureSize; UINT32 size; +#if USE_MMC_DEV_CHECK SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev(); if(mmc_dev->dcf_handle < 0) @@ -706,10 +707,14 @@ UINT32 PhotoExe_GetFreePicNum(void) DBG_ERR("No MMC_Dev Can use!\n"); return FALSE; } +#endif #if (FILESIZE_ALIGN_FUNC) reserveSize += FS_ALIGN_RESERVED_SIZE; #endif + uiFreeSpace = FileSys_GetDiskInfo(FST_INFO_FREE_SPACE); +#if USE_MMC_DEV_CHECK + if(mmc_dev->dev_type == MMC_DEV_SD) { uiFreeSpace = FileSys_GetDiskInfoEx('A', FST_INFO_FREE_SPACE); @@ -718,6 +723,7 @@ UINT32 PhotoExe_GetFreePicNum(void) { uiFreeSpace = FileSys_GetDiskInfoEx('B', FST_INFO_FREE_SPACE); } +#endif //DBG_IND("[cap]Free Space = %d KB\r\n", uiFreeSpace / 1024); diff --git a/code/application/source/cardv/SrcCode/UIApp/Photo/UIStorageCheck.c b/code/application/source/cardv/SrcCode/UIApp/Photo/UIStorageCheck.c index 96ce8437d..4e304eb62 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIStorageCheck.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIStorageCheck.c @@ -58,12 +58,15 @@ void UIStorageCheck_ResetFileReachMax(void) //#NT#Add check for folder attribute static BOOL check_CurrDir_writable(void) { +#if USE_MMC_DEV_CHECK + SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev(); if(mmc_dev->dcf_handle < 0) { DBG_ERR("No MMC_Dev Can use!\n"); return FALSE; } +#endif UINT32 useFileDB = 0; useFileDB = UI_GetData(FL_IsUseFileDB); @@ -73,10 +76,16 @@ static BOOL check_CurrDir_writable(void) #if (USE_DCF == ENABLE) UINT32 CurrDirID; SDCFDIRINFO dirinfo = {0}; +#if USE_MMC_DEV_CHECK CurrDirID = DCF_GetDBInfoEx(mmc_dev->dcf_handle, DCF_INFO_CUR_DIR_ID); if (CurrDirID) { if (DCF_GetDirInfoEx(mmc_dev->dcf_handle, CurrDirID, &dirinfo)) { +#else + CurrDirID = DCF_GetDBInfo(DCF_INFO_CUR_DIR_ID); + if (CurrDirID) { + if (DCF_GetDirInfo(CurrDirID, &dirinfo)) { +#endif if (M_IsReadOnly(dirinfo.ucAttrib)) { DBG_IND("DCF folder %d is READONLY.\r\n", CurrDirID); return FALSE; @@ -98,13 +107,15 @@ static BOOL check_CurrDir_writable(void) BOOL UIStorageCheck_DCIMWritable(void) { +#if USE_MMC_DEV_CHECK + SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev(); if(mmc_dev->dcf_handle < 0) { DBG_ERR("No MMC_Dev Can use!\n"); return FALSE; } - +#endif UINT32 useFileDB = 0; useFileDB = UI_GetData(FL_IsUseFileDB); if (useFileDB) { @@ -114,6 +125,7 @@ BOOL UIStorageCheck_DCIMWritable(void) INT32 uiStatus = 0; UINT8 ucAttrib = 0; BOOL ret = FALSE; +#if USE_MMC_DEV_CHECK if(mmc_dev->dev_type == MMC_DEV_SD) { @@ -123,7 +135,9 @@ BOOL UIStorageCheck_DCIMWritable(void) { uiStatus = FileSys_GetAttrib("B:\\DCIM", &ucAttrib); } - +#else + uiStatus = FileSys_GetAttrib("A:\\DCIM", &ucAttrib); +#endif if (uiStatus == FST_STA_OK) { if (ucAttrib & FS_ATTRIB_DIRECTORY) { if (System_GetState(SYS_STATE_CARD) == CARD_REMOVED) { @@ -161,8 +175,11 @@ static BOOL UIStrgCheckFolderFull(DCF_HANDLE DcfHandle) return TRUE; } bIsFileReachMax = FALSE; - +#if USE_MMC_DEV_CHECK ret = DCF_GetNextIDEx(DcfHandle, &DCF_DirId, &DCF_FileId); +#else + ret = DCF_GetNextID(&DCF_DirId, &DCF_FileId); +#endif if (ret && DCF_DirId == 0 && DCF_FileId == 0) { bIsFileReachMax = TRUE; DBG_IND("Next dir_id =%d, file_id = %d \r\n", DCF_DirId, DCF_FileId); @@ -226,13 +243,15 @@ static BOOL UIStrgCheckErr(MMC_DEV_TYPE dev_id) BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount) { +#if USE_MMC_DEV_CHECK + SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev(); if(mmc_dev->dcf_handle < 0) { DBG_ERR("No MMC_Dev Can use!\n"); return FALSE; } - +#endif UINT32 useFileDB = 0; useFileDB = UI_GetData(FL_IsUseFileDB); @@ -243,7 +262,12 @@ BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount) if (useFileDB) { return FALSE; } else { + +#if USE_MMC_DEV_CHECK UIStrgCheckFolderFull(mmc_dev->dcf_handle); +#else + UIStrgCheckFolderFull(0); +#endif } break; case STORAGE_CHECK_FULL: @@ -258,7 +282,12 @@ BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount) } break; case STORAGE_CHECK_ERROR: + +#if USE_MMC_DEV_CHECK UIStrgCheckErr(mmc_dev->dev_type); +#else + UIStrgCheckErr(0); +#endif break; case STORAGE_CHECK_DCIM_READONLY: if ((UIStorageCheck_DCIMWritable() == FALSE) 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 2ca389305..b5220dd39 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 @@ -673,13 +673,14 @@ static void update_camera_message(void) { UIMenuStoreInfo *puiPara = sf_ui_para_get(); // if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO)) +#if USE_MMC_DEV_CHECK SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev(); if(mmc_dev->dcf_handle < 0) { DBG_ERR("No MMC_Dev Can use!\n"); } - +#endif switch (puiPara->ImgSize) { case PHOTO_SIZE_40M: