增加USE_MMC_DEV_CHECK宏开关

This commit is contained in:
sober.song 2023-12-28 20:57:41 +08:00
parent e6138b8e55
commit 924dc666e9
6 changed files with 57 additions and 8 deletions

View File

@ -32,6 +32,7 @@
#define EMMC_DEVICE_NAME "/dev/mmcblk1p1" #define EMMC_DEVICE_NAME "/dev/mmcblk1p1"
#define EMMC_MOUNT_ROOT "/mnt/sd2" #define EMMC_MOUNT_ROOT "/mnt/sd2"
#define USE_MMC_DEV_CHECK (0)
typedef enum typedef enum
{ {

View File

@ -178,6 +178,7 @@ void Strg_CB(UINT32 event, UINT32 param1, UINT32 param2)
stMessageBuf.cmdId = CMD_SD; stMessageBuf.cmdId = CMD_SD;
sf_com_message_send_to_app(&stMessageBuf); sf_com_message_send_to_app(&stMessageBuf);
printf("strg_cb send MOUNT! dev_id = %d\n", param1); printf("strg_cb send MOUNT! dev_id = %d\n", param1);
#if USE_MMC_DEV_CHECK
SF_StrgRegister(&stMessageBuf); SF_StrgRegister(&stMessageBuf);
} }
#endif #endif

View File

@ -348,9 +348,9 @@ void System_OnStrgInit_FS(void)
GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_BUF, (UINT32)&Pool); GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_BUF, (UINT32)&Pool);
#endif #endif
} }
#if USE_MMC_DEV_CHECK
SF_StrgInit();// 初始化sf_mmc设备Obj SF_StrgInit();// 初始化sf_mmc设备Obj
#endif
#if !defined(__FREERTOS) #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 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
#endif #endif
#if USE_MMC_DEV_CHECK
SF_StrgUnInit();// 反初始化sf_mmc设备Obj SF_StrgUnInit();// 反初始化sf_mmc设备Obj
#endif
// unmount file system // unmount file system
GxStrg_CloseDevice(0); GxStrg_CloseDevice(0);
#if (FS_MULTI_STRG_FUNC) #if (FS_MULTI_STRG_FUNC)
@ -760,6 +761,7 @@ INT32 System_Set_Storage_Act_Drive(char drive)
DCF_HANDLE System_Get_DCF_Handle(void) DCF_HANDLE System_Get_DCF_Handle(void)
{ {
#if USE_MMC_DEV_CHECK
SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev(); SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
if(mmc_dev->dcf_handle < 0) 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); DBG_WRN("DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
return mmc_dev->dcf_handle; return mmc_dev->dcf_handle;
#else
return 0;
#endif
} }
CHAR System_Get_DCF_Disk_Drive(DCF_HANDLE handle) 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"); DBG_WRN("emmc act\n");
System_Set_Storage_Act_Drive(g_strg_mapping_table[strg_id].drive); 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 SF_StrgSetDcfHandle(strg_id, g_strg_mapping_table[strg_id].dcf_hdl); //获取mmc设备dcf_handle
#endif
} }
#endif #endif
@ -1117,7 +1124,9 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
stMessageBuf.arg3 = FST_STA_OK; stMessageBuf.arg3 = FST_STA_OK;
stMessageBuf.cmdId = CMD_SD; stMessageBuf.cmdId = CMD_SD;
sf_com_message_send_to_app(&stMessageBuf); sf_com_message_send_to_app(&stMessageBuf);
#if USE_MMC_DEV_CHECK
SF_StrgRegister(&stMessageBuf); SF_StrgRegister(&stMessageBuf);
#endif
printf("System_OnStrgAttach send MOUNT! dev_id = %d\n", strg_id); printf("System_OnStrgAttach send MOUNT! dev_id = %d\n", strg_id);
Ux_PostEvent(NVTEVT_STRG_MOUNT_OK, 0); 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.arg2 = strg_id;
stMessageBuf.cmdId = CMD_SD; stMessageBuf.cmdId = CMD_SD;
sf_com_message_send_to_app(&stMessageBuf); sf_com_message_send_to_app(&stMessageBuf);
#if USE_MMC_DEV_CHECK
SF_StrgRegister(&stMessageBuf); SF_StrgRegister(&stMessageBuf);
#endif
printf("System_OnStrgAttach send UNMOUNT! dev_id = %d\n", strg_id); printf("System_OnStrgAttach send UNMOUNT! dev_id = %d\n", strg_id);
} }
#endif #endif

View File

@ -699,6 +699,7 @@ UINT32 PhotoExe_GetFreePicNum(void)
UINT32 reserveSize = 0x1e00000; // 30MB UINT32 reserveSize = 0x1e00000; // 30MB
UINT32 CaptureSize; UINT32 CaptureSize;
UINT32 size; UINT32 size;
#if USE_MMC_DEV_CHECK
SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev(); SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
if(mmc_dev->dcf_handle < 0) if(mmc_dev->dcf_handle < 0)
@ -706,10 +707,14 @@ UINT32 PhotoExe_GetFreePicNum(void)
DBG_ERR("No MMC_Dev Can use!\n"); DBG_ERR("No MMC_Dev Can use!\n");
return FALSE; return FALSE;
} }
#endif
#if (FILESIZE_ALIGN_FUNC) #if (FILESIZE_ALIGN_FUNC)
reserveSize += FS_ALIGN_RESERVED_SIZE; reserveSize += FS_ALIGN_RESERVED_SIZE;
#endif #endif
uiFreeSpace = FileSys_GetDiskInfo(FST_INFO_FREE_SPACE);
#if USE_MMC_DEV_CHECK
if(mmc_dev->dev_type == MMC_DEV_SD) if(mmc_dev->dev_type == MMC_DEV_SD)
{ {
uiFreeSpace = FileSys_GetDiskInfoEx('A', FST_INFO_FREE_SPACE); uiFreeSpace = FileSys_GetDiskInfoEx('A', FST_INFO_FREE_SPACE);
@ -718,6 +723,7 @@ UINT32 PhotoExe_GetFreePicNum(void)
{ {
uiFreeSpace = FileSys_GetDiskInfoEx('B', FST_INFO_FREE_SPACE); uiFreeSpace = FileSys_GetDiskInfoEx('B', FST_INFO_FREE_SPACE);
} }
#endif
//DBG_IND("[cap]Free Space = %d KB\r\n", uiFreeSpace / 1024); //DBG_IND("[cap]Free Space = %d KB\r\n", uiFreeSpace / 1024);

View File

@ -58,12 +58,15 @@ void UIStorageCheck_ResetFileReachMax(void)
//#NT#Add check for folder attribute //#NT#Add check for folder attribute
static BOOL check_CurrDir_writable(void) static BOOL check_CurrDir_writable(void)
{ {
#if USE_MMC_DEV_CHECK
SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev(); SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
if(mmc_dev->dcf_handle < 0) if(mmc_dev->dcf_handle < 0)
{ {
DBG_ERR("No MMC_Dev Can use!\n"); DBG_ERR("No MMC_Dev Can use!\n");
return FALSE; return FALSE;
} }
#endif
UINT32 useFileDB = 0; UINT32 useFileDB = 0;
useFileDB = UI_GetData(FL_IsUseFileDB); useFileDB = UI_GetData(FL_IsUseFileDB);
@ -73,10 +76,16 @@ static BOOL check_CurrDir_writable(void)
#if (USE_DCF == ENABLE) #if (USE_DCF == ENABLE)
UINT32 CurrDirID; UINT32 CurrDirID;
SDCFDIRINFO dirinfo = {0}; SDCFDIRINFO dirinfo = {0};
#if USE_MMC_DEV_CHECK
CurrDirID = DCF_GetDBInfoEx(mmc_dev->dcf_handle, DCF_INFO_CUR_DIR_ID); CurrDirID = DCF_GetDBInfoEx(mmc_dev->dcf_handle, DCF_INFO_CUR_DIR_ID);
if (CurrDirID) { if (CurrDirID) {
if (DCF_GetDirInfoEx(mmc_dev->dcf_handle, CurrDirID, &dirinfo)) { 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)) { if (M_IsReadOnly(dirinfo.ucAttrib)) {
DBG_IND("DCF folder %d is READONLY.\r\n", CurrDirID); DBG_IND("DCF folder %d is READONLY.\r\n", CurrDirID);
return FALSE; return FALSE;
@ -98,13 +107,15 @@ static BOOL check_CurrDir_writable(void)
BOOL UIStorageCheck_DCIMWritable(void) BOOL UIStorageCheck_DCIMWritable(void)
{ {
#if USE_MMC_DEV_CHECK
SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev(); SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
if(mmc_dev->dcf_handle < 0) if(mmc_dev->dcf_handle < 0)
{ {
DBG_ERR("No MMC_Dev Can use!\n"); DBG_ERR("No MMC_Dev Can use!\n");
return FALSE; return FALSE;
} }
#endif
UINT32 useFileDB = 0; UINT32 useFileDB = 0;
useFileDB = UI_GetData(FL_IsUseFileDB); useFileDB = UI_GetData(FL_IsUseFileDB);
if (useFileDB) { if (useFileDB) {
@ -114,6 +125,7 @@ BOOL UIStorageCheck_DCIMWritable(void)
INT32 uiStatus = 0; INT32 uiStatus = 0;
UINT8 ucAttrib = 0; UINT8 ucAttrib = 0;
BOOL ret = FALSE; BOOL ret = FALSE;
#if USE_MMC_DEV_CHECK
if(mmc_dev->dev_type == MMC_DEV_SD) if(mmc_dev->dev_type == MMC_DEV_SD)
{ {
@ -123,7 +135,9 @@ BOOL UIStorageCheck_DCIMWritable(void)
{ {
uiStatus = FileSys_GetAttrib("B:\\DCIM", &ucAttrib); uiStatus = FileSys_GetAttrib("B:\\DCIM", &ucAttrib);
} }
#else
uiStatus = FileSys_GetAttrib("A:\\DCIM", &ucAttrib);
#endif
if (uiStatus == FST_STA_OK) { if (uiStatus == FST_STA_OK) {
if (ucAttrib & FS_ATTRIB_DIRECTORY) { if (ucAttrib & FS_ATTRIB_DIRECTORY) {
if (System_GetState(SYS_STATE_CARD) == CARD_REMOVED) { if (System_GetState(SYS_STATE_CARD) == CARD_REMOVED) {
@ -161,8 +175,11 @@ static BOOL UIStrgCheckFolderFull(DCF_HANDLE DcfHandle)
return TRUE; return TRUE;
} }
bIsFileReachMax = FALSE; bIsFileReachMax = FALSE;
#if USE_MMC_DEV_CHECK
ret = DCF_GetNextIDEx(DcfHandle, &DCF_DirId, &DCF_FileId); 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) { if (ret && DCF_DirId == 0 && DCF_FileId == 0) {
bIsFileReachMax = TRUE; bIsFileReachMax = TRUE;
DBG_IND("Next dir_id =%d, file_id = %d \r\n", DCF_DirId, DCF_FileId); 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) BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
{ {
#if USE_MMC_DEV_CHECK
SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev(); SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
if(mmc_dev->dcf_handle < 0) if(mmc_dev->dcf_handle < 0)
{ {
DBG_ERR("No MMC_Dev Can use!\n"); DBG_ERR("No MMC_Dev Can use!\n");
return FALSE; return FALSE;
} }
#endif
UINT32 useFileDB = 0; UINT32 useFileDB = 0;
useFileDB = UI_GetData(FL_IsUseFileDB); useFileDB = UI_GetData(FL_IsUseFileDB);
@ -243,7 +262,12 @@ BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
if (useFileDB) { if (useFileDB) {
return FALSE; return FALSE;
} else { } else {
#if USE_MMC_DEV_CHECK
UIStrgCheckFolderFull(mmc_dev->dcf_handle); UIStrgCheckFolderFull(mmc_dev->dcf_handle);
#else
UIStrgCheckFolderFull(0);
#endif
} }
break; break;
case STORAGE_CHECK_FULL: case STORAGE_CHECK_FULL:
@ -258,7 +282,12 @@ BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
} }
break; break;
case STORAGE_CHECK_ERROR: case STORAGE_CHECK_ERROR:
#if USE_MMC_DEV_CHECK
UIStrgCheckErr(mmc_dev->dev_type); UIStrgCheckErr(mmc_dev->dev_type);
#else
UIStrgCheckErr(0);
#endif
break; break;
case STORAGE_CHECK_DCIM_READONLY: case STORAGE_CHECK_DCIM_READONLY:
if ((UIStorageCheck_DCIMWritable() == FALSE) if ((UIStorageCheck_DCIMWritable() == FALSE)

View File

@ -673,13 +673,14 @@ static void update_camera_message(void)
{ {
UIMenuStoreInfo *puiPara = sf_ui_para_get(); UIMenuStoreInfo *puiPara = sf_ui_para_get();
// if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO)) // 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(); SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
if(mmc_dev->dcf_handle < 0) if(mmc_dev->dcf_handle < 0)
{ {
DBG_ERR("No MMC_Dev Can use!\n"); DBG_ERR("No MMC_Dev Can use!\n");
} }
#endif
switch (puiPara->ImgSize) switch (puiPara->ImgSize)
{ {
case PHOTO_SIZE_40M: case PHOTO_SIZE_40M: