增加UIStorageCheckEMMC检测和UI格式化EMMC
This commit is contained in:
parent
b9e1fda503
commit
57420f5c15
|
@ -69,11 +69,11 @@ static UINT32 SF_StrgSpaceCheckFull(MMC_DEV_TYPE mmc_dev)
|
||||||
/*check disk free size*/
|
/*check disk free size*/
|
||||||
if(mmc_dev == MMC_DEV_SD)
|
if(mmc_dev == MMC_DEV_SD)
|
||||||
{
|
{
|
||||||
diskFree = FileSys_GetDiskInfo(FST_INFO_FREE_SPACE);
|
diskFree = FileSys_GetDiskInfoEx('A', FST_INFO_FREE_SPACE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
diskFree = FileSys_GetEMMCDiskInfo(FST_INFO_FREE_SPACE);
|
diskFree = FileSys_GetDiskInfoEx('B', FST_INFO_FREE_SPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
diskFree = diskFree/1024/1024;
|
diskFree = diskFree/1024/1024;
|
||||||
|
@ -133,16 +133,6 @@ void SF_StrgRegister(SF_MESSAGE_BUF_S *pMessageBuf)
|
||||||
sf_mmc_dev[MMC_DEV_SD]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED;
|
sf_mmc_dev[MMC_DEV_SD]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32 isfull = SF_StrgSpaceCheckFull(MMC_DEV_SD);
|
|
||||||
if(isfull == 1)
|
|
||||||
{
|
|
||||||
sf_mmc_dev[MMC_DEV_SD]->space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH;
|
|
||||||
}
|
|
||||||
else if(isfull == 0)
|
|
||||||
{
|
|
||||||
sf_mmc_dev[MMC_DEV_SD]->space_state = MMC_DEV_SPACE_STATE_ENOUGH;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(puiPara->SdLoopSwitch == 1)
|
if(puiPara->SdLoopSwitch == 1)
|
||||||
{
|
{
|
||||||
sf_mmc_dev[MMC_DEV_SD]->loop_state = MMC_DEV_LOOP_STATE_ON;
|
sf_mmc_dev[MMC_DEV_SD]->loop_state = MMC_DEV_LOOP_STATE_ON;
|
||||||
|
@ -173,16 +163,6 @@ void SF_StrgRegister(SF_MESSAGE_BUF_S *pMessageBuf)
|
||||||
sf_mmc_dev[MMC_DEV_EMMC]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED;
|
sf_mmc_dev[MMC_DEV_EMMC]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32 isfull = SF_StrgSpaceCheckFull(MMC_DEV_EMMC);
|
|
||||||
if(isfull == 1)
|
|
||||||
{
|
|
||||||
sf_mmc_dev[MMC_DEV_EMMC]->space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH;
|
|
||||||
}
|
|
||||||
else if(isfull == 0)
|
|
||||||
{
|
|
||||||
sf_mmc_dev[MMC_DEV_EMMC]->space_state = MMC_DEV_SPACE_STATE_ENOUGH;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(puiPara->SdLoopSwitch == 1)
|
if(puiPara->SdLoopSwitch == 1)
|
||||||
{
|
{
|
||||||
sf_mmc_dev[MMC_DEV_EMMC]->loop_state = MMC_DEV_LOOP_STATE_ON;
|
sf_mmc_dev[MMC_DEV_EMMC]->loop_state = MMC_DEV_LOOP_STATE_ON;
|
||||||
|
@ -201,10 +181,32 @@ void SF_StrgRegister(SF_MESSAGE_BUF_S *pMessageBuf)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int SF_StrgCheckWorkableDev(void)
|
SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void)
|
||||||
{
|
{
|
||||||
MMC_DEV_TYPE workable_dev = MMC_DEV_NO;
|
MMC_DEV_TYPE workable_dev = MMC_DEV_NO;
|
||||||
MLOGD("sf mmc check workable dev start!!!\n");
|
//MLOGD("sf mmc check workable dev start!!!\n");
|
||||||
|
|
||||||
|
UINT32 isfull = 0;
|
||||||
|
isfull = SF_StrgSpaceCheckFull(MMC_DEV_EMMC);
|
||||||
|
if(isfull == 1)
|
||||||
|
{
|
||||||
|
sf_mmc_dev[MMC_DEV_EMMC]->space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH;
|
||||||
|
}
|
||||||
|
else if(isfull == 0)
|
||||||
|
{
|
||||||
|
sf_mmc_dev[MMC_DEV_EMMC]->space_state = MMC_DEV_SPACE_STATE_ENOUGH;
|
||||||
|
}
|
||||||
|
|
||||||
|
isfull = SF_StrgSpaceCheckFull(MMC_DEV_SD);
|
||||||
|
if(isfull == 1)
|
||||||
|
{
|
||||||
|
sf_mmc_dev[MMC_DEV_SD]->space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH;
|
||||||
|
}
|
||||||
|
else if(isfull == 0)
|
||||||
|
{
|
||||||
|
sf_mmc_dev[MMC_DEV_SD]->space_state = MMC_DEV_SPACE_STATE_ENOUGH;
|
||||||
|
}
|
||||||
|
|
||||||
if((sf_mmc_dev[MMC_DEV_SD]->node == MMC_DEV_NODE_STATE_NO_EXIST) &&
|
if((sf_mmc_dev[MMC_DEV_SD]->node == MMC_DEV_NODE_STATE_NO_EXIST) &&
|
||||||
(sf_mmc_dev[MMC_DEV_EMMC]->node == MMC_DEV_NODE_STATE_NO_EXIST))
|
(sf_mmc_dev[MMC_DEV_EMMC]->node == MMC_DEV_NODE_STATE_NO_EXIST))
|
||||||
{
|
{
|
||||||
|
@ -304,19 +306,21 @@ int SF_StrgCheckWorkableDev(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MLOGD("sf mmc check workable dev end, dev_id = %d!!!\n", workable_dev);
|
//MLOGD("sf mmc check workable dev end, dev_id = %d!!!\n", workable_dev);
|
||||||
for(int i = 0; i < 2; i++)
|
for(int i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
sf_mmc_dev[i]->dev_type = workable_dev;
|
sf_mmc_dev[i]->dev_type = workable_dev;
|
||||||
MLOGD("node:%d, mount:%d, space:%d, loop:%d\n",
|
//MLOGD("node:%d, mount:%d, space:%d, loop:%d\n",
|
||||||
sf_mmc_dev[i]->node, sf_mmc_dev[i]->moumted_state,
|
//sf_mmc_dev[i]->node, sf_mmc_dev[i]->moumted_state,
|
||||||
sf_mmc_dev[i]->space_state, sf_mmc_dev[i]->loop_state);
|
//sf_mmc_dev[i]->space_state, sf_mmc_dev[i]->loop_state);
|
||||||
}
|
}
|
||||||
if(workable_dev != MMC_DEV_NO)
|
|
||||||
|
if(workable_dev == MMC_DEV_NO)
|
||||||
{
|
{
|
||||||
MLOGD("dcf_handle = %d\n", sf_mmc_dev[workable_dev]->dcf_handle);
|
return NULL;
|
||||||
return sf_mmc_dev[workable_dev]->dcf_handle;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return -1;
|
{
|
||||||
|
return sf_mmc_dev[workable_dev];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,7 +83,8 @@ void SF_StrgInit(void);
|
||||||
void SF_StrgUnInit(void);
|
void SF_StrgUnInit(void);
|
||||||
void SF_StrgSetDcfHandle(UINT32 strg_id, UINT32 handle);
|
void SF_StrgSetDcfHandle(UINT32 strg_id, UINT32 handle);
|
||||||
void SF_StrgRegister(SF_MESSAGE_BUF_S *pMessageBuf);
|
void SF_StrgRegister(SF_MESSAGE_BUF_S *pMessageBuf);
|
||||||
int SF_StrgCheckWorkableDev(void);
|
SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif //_SF_SYS_STRG_MNG_H_
|
#endif //_SF_SYS_STRG_MNG_H_
|
||||||
|
|
|
@ -760,14 +760,14 @@ INT32 System_Set_Storage_Act_Drive(char drive)
|
||||||
|
|
||||||
DCF_HANDLE System_Get_DCF_Handle(void)
|
DCF_HANDLE System_Get_DCF_Handle(void)
|
||||||
{
|
{
|
||||||
int dcf_handle = SF_StrgCheckWorkableDev();
|
SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
|
||||||
if(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 -1;
|
return -1;
|
||||||
}
|
}
|
||||||
DBG_WRN("DCF_GET_HANDLE, %d\n", dcf_handle);
|
DBG_WRN("DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
|
||||||
return dcf_handle;
|
return mmc_dev->dcf_handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
CHAR System_Get_DCF_Disk_Drive(DCF_HANDLE handle)
|
CHAR System_Get_DCF_Disk_Drive(DCF_HANDLE handle)
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "UIApp/Network/EthCamAppCmd.h"
|
#include "UIApp/Network/EthCamAppCmd.h"
|
||||||
#if (USE_DCF == ENABLE)
|
#if (USE_DCF == ENABLE)
|
||||||
#include "DCF.h"
|
#include "DCF.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#include "Utility/SwTimer.h"
|
#include "Utility/SwTimer.h"
|
||||||
|
|
||||||
|
@ -861,9 +862,103 @@ UINT32 BackgroundFormat(void)
|
||||||
|
|
||||||
UINT32 BackgroundFormatEmmc(void)
|
UINT32 BackgroundFormatEmmc(void)
|
||||||
{
|
{
|
||||||
printf(" BackgroundFormatEmmc\n ");
|
int ret;
|
||||||
return TRUE;
|
DBG_FUNC_BEGIN("\r\n");
|
||||||
|
#if HUNTING_CAMERA_MCU == ENABLE
|
||||||
|
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FORMAT_START);
|
||||||
|
//sf_sys_status_led_set(SF_LED_SYS_STATE_EXIT_GO_TO_PIR);
|
||||||
|
#endif
|
||||||
|
//DX_HANDLE pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT|DX_TYPE_CARD1);
|
||||||
|
//UINT32 hStrgObj = Dx_Getcaps(pStrgDev, STORAGE_CAPS_HANDLE, 0);
|
||||||
|
//ret = FileSys_FormatDisk((HNVT_STRG)hStrgObj, FALSE);
|
||||||
|
FS_HANDLE pStrgDXH = (FS_HANDLE)Dx_GetObject(DX_CLASS_STORAGE_EXT | DX_TYPE_CARD1);
|
||||||
|
//FS_HANDLE pStrgDXH = (FS_HANDLE)sdio_getStorageObject(STRG_OBJ_FAT1);
|
||||||
|
DBG_FUNC("pStrgDXH=0x%08X\r\n",pStrgDXH);
|
||||||
|
//#NT#2016/05/30#Lincy Lin -begin
|
||||||
|
//#NT#Support logfile function
|
||||||
|
#if (LOGFILE_FUNC==ENABLE)
|
||||||
|
#if HUNTING_CAMERA_MCU == ENABLE
|
||||||
|
UIMenuStoreInfo *puiPara = sf_ui_para_get();
|
||||||
|
if (puiPara->DebugMode)
|
||||||
|
{
|
||||||
|
LogFile_Suspend();
|
||||||
|
LogFile_Complete();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
LogFile_Suspend();
|
||||||
|
LogFile_Complete();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
//#NT#2016/05/30#Lincy Lin -end
|
||||||
|
ret = FileSys_FormatAndLabel('B', pStrgDXH, FALSE, NULL);
|
||||||
|
DBG_FUNC("Call FileSys_FormatDisk() ret=%d\r\n", ret);
|
||||||
|
|
||||||
|
if (ret == FST_STA_OK) {
|
||||||
|
// reset file ID (for FileDB)
|
||||||
|
#if USE_FILEDB
|
||||||
|
if (UI_GetData(FL_IsUseFileDB)) {
|
||||||
|
Ux_SendEvent(&UISetupObjCtrl, NVTEVT_FILEID_RESET, 0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if (USE_DCF == ENABLE)
|
||||||
|
//reset next id 100 , 1
|
||||||
|
DCF_SetNextID(MIN_DCF_DIR_NUM, MIN_DCF_FILE_NUM);
|
||||||
|
UI_SetData(FL_DCF_DIR_ID, MIN_DCF_DIR_NUM);
|
||||||
|
UI_SetData(FL_DCF_FILE_ID, MIN_DCF_FILE_NUM);
|
||||||
|
UI_SetData(FL_IsDCIMReadOnly, FALSE);
|
||||||
|
#endif
|
||||||
|
#if (PLAY_MODE==ENABLE)
|
||||||
|
if (System_GetState(SYS_STATE_CURRMODE) == PRIMARY_MODE_PLAYBACK) {
|
||||||
|
UIPlay_PlaySingle(PB_SINGLE_CURR);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
//#NT#2016/05/30#Lincy Lin -begin
|
||||||
|
//#NT#Support logfile function
|
||||||
|
#if (LOGFILE_FUNC==ENABLE)
|
||||||
|
#if HUNTING_CAMERA_MCU == ENABLE
|
||||||
|
if (puiPara->DebugMode)
|
||||||
|
{
|
||||||
|
LogFile_ReOpen();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
LogFile_ReOpen();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
//#NT#2016/05/30#Lincy Lin -end
|
||||||
|
// vos_util_delay_ms(1000);
|
||||||
|
SysMain_system("sync");
|
||||||
|
#if HUNTING_CAMERA_MCU == ENABLE
|
||||||
|
//vos_util_delay_ms(1000);
|
||||||
|
// sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FORMAT_SUCCESS);
|
||||||
|
// if(sf_get_pir_statu_flag()){
|
||||||
|
// vos_util_delay_ms(3000);
|
||||||
|
// }
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if HUNTING_CAMERA_MCU == ENABLE
|
||||||
|
// sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FORMAT_FAIL);
|
||||||
|
// if(sf_get_pir_statu_flag()){
|
||||||
|
// vos_util_delay_ms(3000);
|
||||||
|
// }
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
MovieExe_ResetFileSN();
|
||||||
|
#if HUNTING_CAMERA_MCU == ENABLE
|
||||||
|
// sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FORMAT_EXIT);
|
||||||
|
// if(sf_get_pir_statu_flag()){
|
||||||
|
// vos_util_delay_ms(1000);
|
||||||
|
// }
|
||||||
|
sf_set_card_statu(ret);
|
||||||
|
#endif
|
||||||
|
DBG_FUNC_END("\r\n");
|
||||||
|
return (UINT32)ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32 BackgroundFormatCard(void)
|
UINT32 BackgroundFormatCard(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
|
@ -39,6 +39,8 @@
|
||||||
#if (USE_DCF == ENABLE)
|
#if (USE_DCF == ENABLE)
|
||||||
#include "DCF.h"
|
#include "DCF.h"
|
||||||
#endif
|
#endif
|
||||||
|
#include "SF_SysStrgMng.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 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
|
||||||
|
|
||||||
|
@ -690,7 +692,7 @@ UINT32 PhotoExe_GetExpectSize_RhoBRCrtl(UINT32 ImgIdx, BOOL bPrimaryOnly)
|
||||||
UINT32 PhotoExe_GetFreePicNum(void)
|
UINT32 PhotoExe_GetFreePicNum(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
UINT64 uiFreeSpace;
|
UINT64 uiFreeSpace = 0;
|
||||||
UINT32 uiMaxImageSize;
|
UINT32 uiMaxImageSize;
|
||||||
UINT32 freeImgNum;
|
UINT32 freeImgNum;
|
||||||
// UINT32 reserveSize = 0x80000; // 500KB
|
// UINT32 reserveSize = 0x80000; // 500KB
|
||||||
|
@ -698,10 +700,24 @@ UINT32 PhotoExe_GetFreePicNum(void)
|
||||||
UINT32 CaptureSize;
|
UINT32 CaptureSize;
|
||||||
UINT32 size;
|
UINT32 size;
|
||||||
|
|
||||||
|
SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
|
||||||
|
if(mmc_dev->dcf_handle < 0)
|
||||||
|
{
|
||||||
|
DBG_ERR("No MMC_Dev Can use!\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
#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(mmc_dev->dev_type == MMC_DEV_SD)
|
||||||
|
{
|
||||||
|
uiFreeSpace = FileSys_GetDiskInfoEx('A', FST_INFO_FREE_SPACE);
|
||||||
|
}
|
||||||
|
else if(mmc_dev->dev_type == MMC_DEV_EMMC)
|
||||||
|
{
|
||||||
|
uiFreeSpace = FileSys_GetDiskInfoEx('B', FST_INFO_FREE_SPACE);
|
||||||
|
}
|
||||||
|
|
||||||
//DBG_IND("[cap]Free Space = %d KB\r\n", uiFreeSpace / 1024);
|
//DBG_IND("[cap]Free Space = %d KB\r\n", uiFreeSpace / 1024);
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,8 @@
|
||||||
#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
|
#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
|
||||||
#define __DBGFLT__ "*" //*=All, [mark]=CustomClass
|
#define __DBGFLT__ "*" //*=All, [mark]=CustomClass
|
||||||
#include <kwrap/debug.h>
|
#include <kwrap/debug.h>
|
||||||
|
#include "SF_SysStrgMng.h"
|
||||||
|
|
||||||
|
|
||||||
void UIStorageCheck_AllSize(UINT64 *uiTotal, UINT64 *uiRemain)
|
void UIStorageCheck_AllSize(UINT64 *uiTotal, UINT64 *uiRemain)
|
||||||
{
|
{
|
||||||
|
@ -56,6 +58,12 @@ 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)
|
||||||
{
|
{
|
||||||
|
SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
|
||||||
|
if(mmc_dev->dcf_handle < 0)
|
||||||
|
{
|
||||||
|
DBG_ERR("No MMC_Dev Can use!\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
UINT32 useFileDB = 0;
|
UINT32 useFileDB = 0;
|
||||||
useFileDB = UI_GetData(FL_IsUseFileDB);
|
useFileDB = UI_GetData(FL_IsUseFileDB);
|
||||||
|
|
||||||
|
@ -66,9 +74,9 @@ static BOOL check_CurrDir_writable(void)
|
||||||
UINT32 CurrDirID;
|
UINT32 CurrDirID;
|
||||||
SDCFDIRINFO dirinfo = {0};
|
SDCFDIRINFO dirinfo = {0};
|
||||||
|
|
||||||
CurrDirID = DCF_GetDBInfo(DCF_INFO_CUR_DIR_ID);
|
CurrDirID = DCF_GetDBInfoEx(mmc_dev->dcf_handle, DCF_INFO_CUR_DIR_ID);
|
||||||
if (CurrDirID) {
|
if (CurrDirID) {
|
||||||
if (DCF_GetDirInfo(CurrDirID, &dirinfo)) {
|
if (DCF_GetDirInfoEx(mmc_dev->dcf_handle, CurrDirID, &dirinfo)) {
|
||||||
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;
|
||||||
|
@ -90,18 +98,32 @@ static BOOL check_CurrDir_writable(void)
|
||||||
|
|
||||||
BOOL UIStorageCheck_DCIMWritable(void)
|
BOOL UIStorageCheck_DCIMWritable(void)
|
||||||
{
|
{
|
||||||
|
SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
|
||||||
|
if(mmc_dev->dcf_handle < 0)
|
||||||
|
{
|
||||||
|
DBG_ERR("No MMC_Dev Can use!\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
UINT32 useFileDB = 0;
|
UINT32 useFileDB = 0;
|
||||||
useFileDB = UI_GetData(FL_IsUseFileDB);
|
useFileDB = UI_GetData(FL_IsUseFileDB);
|
||||||
if (useFileDB) {
|
if (useFileDB) {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
char DCIM_DIR[9] = "A:\\DCIM";
|
|
||||||
INT32 uiStatus = 0;
|
INT32 uiStatus = 0;
|
||||||
UINT8 ucAttrib = 0;
|
UINT8 ucAttrib = 0;
|
||||||
BOOL ret = FALSE;
|
BOOL ret = FALSE;
|
||||||
|
|
||||||
|
if(mmc_dev->dev_type == MMC_DEV_SD)
|
||||||
|
{
|
||||||
|
uiStatus = FileSys_GetAttrib("A:\\DCIM", &ucAttrib);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uiStatus = FileSys_GetAttrib("B:\\DCIM", &ucAttrib);
|
||||||
|
}
|
||||||
|
|
||||||
uiStatus = FileSys_GetAttrib(DCIM_DIR, &ucAttrib);
|
|
||||||
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) {
|
||||||
|
@ -127,11 +149,90 @@ BOOL UIStorageCheck_DCIMWritable(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
|
static BOOL UIStrgCheckFolderFull(DCF_HANDLE DcfHandle)
|
||||||
|
{
|
||||||
|
#if (USE_DCF == ENABLE)
|
||||||
|
BOOL bIsFileReachMax = FALSE;
|
||||||
|
UINT32 DCF_DirId = 0, DCF_FileId = 0;
|
||||||
|
BOOL ret;
|
||||||
|
|
||||||
|
if (System_GetState(SYS_STATE_FS) == FS_NUM_FULL) {
|
||||||
|
DBG_ERR("UI_Validate_Storage: DIR:999 is existing!\r\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
bIsFileReachMax = FALSE;
|
||||||
|
|
||||||
|
ret = DCF_GetNextIDEx(DcfHandle, &DCF_DirId, &DCF_FileId);
|
||||||
|
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);
|
||||||
|
} else if (ret && DCF_GetDBInfoEx(DcfHandle, DCF_INFO_IS_9999) == TRUE)
|
||||||
|
{
|
||||||
|
bIsFileReachMax = TRUE;
|
||||||
|
}
|
||||||
|
return bIsFileReachMax;
|
||||||
|
#else
|
||||||
|
return FALSE;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL UIStrgCheckFull(UINT32 *pFreeCount)
|
||||||
{
|
{
|
||||||
#if (PHOTO_MODE==ENABLE)
|
#if (PHOTO_MODE==ENABLE)
|
||||||
UINT32 uiCountTmp = 0;
|
UINT32 uiCountTmp = 0;
|
||||||
#endif
|
#endif
|
||||||
|
#if (PHOTO_MODE==ENABLE)
|
||||||
|
uiCountTmp = PhotoExe_GetFreePicNum();
|
||||||
|
DBG_IND("uiCountTmp = %d, pFreeCount=%d\r\n",uiCountTmp,pFreeCount);
|
||||||
|
if (pFreeCount) {
|
||||||
|
*pFreeCount = uiCountTmp;
|
||||||
|
}
|
||||||
|
if (uiCountTmp == 0) {
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
return FALSE;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL UIStrgCheckErr(MMC_DEV_TYPE dev_id)
|
||||||
|
{
|
||||||
|
if(dev_id == MMC_DEV_SD)
|
||||||
|
{
|
||||||
|
FileSys_WaitFinishEx('A');
|
||||||
|
}
|
||||||
|
else if(dev_id == MMC_DEV_EMMC)
|
||||||
|
{
|
||||||
|
FileSys_WaitFinishEx('B');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (System_GetState(SYS_STATE_FS) == FS_DISK_ERROR
|
||||||
|
|| System_GetState(SYS_STATE_FS) == FS_UNKNOWN_FORMAT
|
||||||
|
|| System_GetState(SYS_STATE_FS) == FS_UNFORMATTED
|
||||||
|
//#NT#2016/12/06#Niven Cho -begin
|
||||||
|
//#NT#MULTI_DRIVE
|
||||||
|
|| System_GetState(SYS_STATE_CARD) == CARD_REMOVED)
|
||||||
|
//#NT#2016/12/06#Niven Cho -end
|
||||||
|
//|| UIStorageCheck_Error() )
|
||||||
|
{
|
||||||
|
DBG_ERR("UIStorageCheck: %d Card Error\r\n", System_GetState(SYS_STATE_FS));
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
|
||||||
|
{
|
||||||
|
SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
|
||||||
|
if(mmc_dev->dcf_handle < 0)
|
||||||
|
{
|
||||||
|
DBG_ERR("No MMC_Dev Can use!\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
UINT32 useFileDB = 0;
|
UINT32 useFileDB = 0;
|
||||||
useFileDB = UI_GetData(FL_IsUseFileDB);
|
useFileDB = UI_GetData(FL_IsUseFileDB);
|
||||||
|
|
||||||
|
@ -142,49 +243,11 @@ BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
|
||||||
if (useFileDB) {
|
if (useFileDB) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
} else {
|
} else {
|
||||||
#if (USE_DCF == ENABLE)
|
UIStrgCheckFolderFull(mmc_dev->dcf_handle);
|
||||||
BOOL bIsFileReachMax = FALSE;
|
|
||||||
UINT32 DCF_DirId = 0, DCF_FileId = 0;
|
|
||||||
BOOL ret;
|
|
||||||
|
|
||||||
if (System_GetState(SYS_STATE_FS) == FS_NUM_FULL) {
|
|
||||||
DBG_ERR("UI_Validate_Storage: DIR:999 is existing!\r\n");
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
bIsFileReachMax = FALSE;
|
|
||||||
//#NT#2011/03/28#Lincy Lin -begin
|
|
||||||
//#NT#fix delete the 9999th file in 999 folder cause capture not save
|
|
||||||
ret = DCF_GetNextID(&DCF_DirId, &DCF_FileId);
|
|
||||||
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);
|
|
||||||
} else if (ret && DCF_GetDBInfo(DCF_INFO_IS_9999) == TRUE)
|
|
||||||
//#NT#2011/03/28#Lincy Lin -end
|
|
||||||
{
|
|
||||||
bIsFileReachMax = TRUE;
|
|
||||||
}
|
|
||||||
return bIsFileReachMax;
|
|
||||||
#else
|
|
||||||
return FALSE;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case STORAGE_CHECK_FULL:
|
case STORAGE_CHECK_FULL:
|
||||||
#if (PHOTO_MODE==ENABLE)
|
UIStrgCheckFull(pFreeCount);
|
||||||
uiCountTmp = PhotoExe_GetFreePicNum();
|
|
||||||
DBG_IND("uiCountTmp = %d, pFreeCount=%d\r\n",uiCountTmp,pFreeCount);
|
|
||||||
if (pFreeCount) {
|
|
||||||
*pFreeCount = uiCountTmp;
|
|
||||||
}
|
|
||||||
if (uiCountTmp == 0) {
|
|
||||||
return TRUE;
|
|
||||||
} else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
return FALSE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case STORAGE_CHECK_LOCKED:
|
case STORAGE_CHECK_LOCKED:
|
||||||
if (System_GetState(SYS_STATE_CARD) == CARD_LOCKED) {
|
if (System_GetState(SYS_STATE_CARD) == CARD_LOCKED) {
|
||||||
|
@ -195,21 +258,7 @@ BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case STORAGE_CHECK_ERROR:
|
case STORAGE_CHECK_ERROR:
|
||||||
FileSys_WaitFinish();
|
UIStrgCheckErr(mmc_dev->dev_type);
|
||||||
if (System_GetState(SYS_STATE_FS) == FS_DISK_ERROR
|
|
||||||
|| System_GetState(SYS_STATE_FS) == FS_UNKNOWN_FORMAT
|
|
||||||
|| System_GetState(SYS_STATE_FS) == FS_UNFORMATTED
|
|
||||||
//#NT#2016/12/06#Niven Cho -begin
|
|
||||||
//#NT#MULTI_DRIVE
|
|
||||||
|| System_GetState(SYS_STATE_CARD) == CARD_REMOVED)
|
|
||||||
//#NT#2016/12/06#Niven Cho -end
|
|
||||||
//|| UIStorageCheck_Error() )
|
|
||||||
{
|
|
||||||
DBG_ERR("UIStorageCheck: %d Card Error\r\n", System_GetState(SYS_STATE_FS));
|
|
||||||
return TRUE;
|
|
||||||
} else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case STORAGE_CHECK_DCIM_READONLY:
|
case STORAGE_CHECK_DCIM_READONLY:
|
||||||
if ((UIStorageCheck_DCIMWritable() == FALSE)
|
if ((UIStorageCheck_DCIMWritable() == FALSE)
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "sf_common.h"
|
#include "sf_common.h"
|
||||||
#if (USE_DCF == ENABLE)
|
#if (USE_DCF == ENABLE)
|
||||||
#include "DCF.h"
|
#include "DCF.h"
|
||||||
|
#include "SF_SysStrgMng.h"
|
||||||
#endif
|
#endif
|
||||||
#if HUNTING_CAMERA_MCU == ENABLE
|
#if HUNTING_CAMERA_MCU == ENABLE
|
||||||
#include <sf_inc.h>
|
#include <sf_inc.h>
|
||||||
|
@ -673,6 +674,12 @@ 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))
|
||||||
|
|
||||||
|
SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
|
||||||
|
if(mmc_dev->dcf_handle < 0)
|
||||||
|
{
|
||||||
|
DBG_ERR("No MMC_Dev Can use!\n");
|
||||||
|
}
|
||||||
|
|
||||||
switch (puiPara->ImgSize)
|
switch (puiPara->ImgSize)
|
||||||
{
|
{
|
||||||
case PHOTO_SIZE_40M:
|
case PHOTO_SIZE_40M:
|
||||||
|
@ -719,6 +726,8 @@ static void update_camera_message(void)
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 1
|
||||||
if (System_GetState(SYS_STATE_FS) == FS_INIT_OK)
|
if (System_GetState(SYS_STATE_FS) == FS_INIT_OK)
|
||||||
{
|
{
|
||||||
UINT32 cardStatus = System_GetState(SYS_STATE_CARD);
|
UINT32 cardStatus = System_GetState(SYS_STATE_CARD);
|
||||||
|
@ -771,6 +780,8 @@ static void update_camera_message(void)
|
||||||
set_warning_label_text(label_6_scr_uiflowphoto);
|
set_warning_label_text(label_6_scr_uiflowphoto);
|
||||||
lv_label_set_text(label_6_scr_uiflowphoto, "SD Card Error");
|
lv_label_set_text(label_6_scr_uiflowphoto, "SD Card Error");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int is_menu_screen_luck(void);
|
extern int is_menu_screen_luck(void);
|
||||||
|
|
|
@ -1715,8 +1715,6 @@ extern int FileSys_SearchFileRewind(FS_SEARCH_HDL pSearch);
|
||||||
#define FileSys_RegisterCB(parm1) FileSys_RegisterCBEx('A', parm1)
|
#define FileSys_RegisterCB(parm1) FileSys_RegisterCBEx('A', parm1)
|
||||||
#define FileSys_Benchmark(parm1,parm2,parm3) FileSys_BenchmarkEx('A', parm1,parm2,parm3)
|
#define FileSys_Benchmark(parm1,parm2,parm3) FileSys_BenchmarkEx('A', parm1,parm2,parm3)
|
||||||
|
|
||||||
#define FileSys_GetEMMCDiskInfo(parm1) FileSys_GetDiskInfoEx('B', parm1)
|
|
||||||
|
|
||||||
|
|
||||||
#define fs_getcwd FileSys_GetCwd
|
#define fs_getcwd FileSys_GetCwd
|
||||||
#define fs_setcwd FileSys_SetCwd
|
#define fs_setcwd FileSys_SetCwd
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
#include "UIApp/AppDisp_PipView.h"
|
#include "UIApp/AppDisp_PipView.h"
|
||||||
#include <vf_gfx.h>
|
#include <vf_gfx.h>
|
||||||
#include "vendor_videocapture.h"
|
#include "vendor_videocapture.h"
|
||||||
|
#include "sf_sd_common.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 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
|
||||||
|
|
||||||
|
@ -615,17 +617,31 @@ UINT32 PhotoExe_GetExpectSize_RhoBRCrtl(UINT32 ImgIdx, BOOL bPrimaryOnly)
|
||||||
UINT32 PhotoExe_GetFreePicNum(void)
|
UINT32 PhotoExe_GetFreePicNum(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
UINT64 uiFreeSpace;
|
UINT64 uiFreeSpace = 0;
|
||||||
UINT32 uiMaxImageSize;
|
UINT32 uiMaxImageSize;
|
||||||
UINT32 freeImgNum;
|
UINT32 freeImgNum;
|
||||||
UINT32 reserveSize = 0x80000; // 500KB
|
UINT32 reserveSize = 0x80000; // 500KB
|
||||||
UINT32 CaptureSize;
|
UINT32 CaptureSize;
|
||||||
UINT32 size;
|
UINT32 size;
|
||||||
|
|
||||||
|
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev();
|
||||||
|
if(mmc_dev->dcf_handle < 0)
|
||||||
|
{
|
||||||
|
DBG_ERR("No MMC_Dev Can use!\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
#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(mmc_dev->dev_type == MMC_DEV_SD)
|
||||||
|
{
|
||||||
|
uiFreeSpace = FileSys_GetDiskInfoEx('A', FST_INFO_FREE_SPACE);
|
||||||
|
}
|
||||||
|
else if(mmc_dev->dev_type == MMC_DEV_EMMC)
|
||||||
|
{
|
||||||
|
uiFreeSpace = FileSys_GetDiskInfoEx('B', FST_INFO_FREE_SPACE);
|
||||||
|
}
|
||||||
|
|
||||||
DBG_IND("[cap]Free Space = %d KB\r\n", uiFreeSpace / 1024);
|
DBG_IND("[cap]Free Space = %d KB\r\n", uiFreeSpace / 1024);
|
||||||
|
|
||||||
|
@ -659,7 +675,6 @@ UINT32 PhotoExe_GetFreePicNum(void)
|
||||||
return freeImgNum;
|
return freeImgNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PhotoExe_GetDispCord(URECT *dispCord)
|
void PhotoExe_GetDispCord(URECT *dispCord)
|
||||||
{
|
{
|
||||||
UINT32 ImageRatioIdx = 0;
|
UINT32 ImageRatioIdx = 0;
|
||||||
|
|
|
@ -30,6 +30,8 @@
|
||||||
#include "FileSysTsk.h"
|
#include "FileSysTsk.h"
|
||||||
#include "PlaybackTsk.h"
|
#include "PlaybackTsk.h"
|
||||||
#include "DCF.h"
|
#include "DCF.h"
|
||||||
|
#include "sf_sd_common.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 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -46,16 +48,22 @@ void UIStorageCheck_AllSize(UINT64 *uiTotal, UINT64 *uiRemain)
|
||||||
(*uiRemain) /= (1024 * 1024);
|
(*uiRemain) /= (1024 * 1024);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static BOOL bIsFileReachMax = FALSE;
|
static BOOL bIsFileReachMax = FALSE;
|
||||||
|
|
||||||
void UIStorageCheck_ResetFileReachMax(void)
|
void UIStorageCheck_ResetFileReachMax(void)
|
||||||
{
|
{
|
||||||
bIsFileReachMax = FALSE;
|
bIsFileReachMax = FALSE;
|
||||||
}
|
}
|
||||||
//#NT#2009/12/30#Ben Wang -begin
|
|
||||||
//#NT#Add check for folder attribute
|
|
||||||
static BOOL check_CurrDir_writable(void)
|
static BOOL check_CurrDir_writable(void)
|
||||||
{
|
{
|
||||||
|
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev();
|
||||||
|
if(mmc_dev->dcf_handle < 0)
|
||||||
|
{
|
||||||
|
DBG_ERR("No MMC_Dev Can use!\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
UINT32 useFileDB = 0;
|
UINT32 useFileDB = 0;
|
||||||
useFileDB = UI_GetData(FL_IsUseFileDB);
|
useFileDB = UI_GetData(FL_IsUseFileDB);
|
||||||
|
|
||||||
|
@ -66,9 +74,9 @@ static BOOL check_CurrDir_writable(void)
|
||||||
UINT32 CurrDirID;
|
UINT32 CurrDirID;
|
||||||
SDCFDIRINFO dirinfo = {0};
|
SDCFDIRINFO dirinfo = {0};
|
||||||
|
|
||||||
CurrDirID = DCF_GetDBInfo(DCF_INFO_CUR_DIR_ID);
|
CurrDirID = DCF_GetDBInfoEx(mmc_dev->dcf_handle, DCF_INFO_CUR_DIR_ID);
|
||||||
if (CurrDirID) {
|
if (CurrDirID) {
|
||||||
if (DCF_GetDirInfo(CurrDirID, &dirinfo)) {
|
if (DCF_GetDirInfoEx(mmc_dev->dcf_handle, CurrDirID, &dirinfo)) {
|
||||||
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;
|
||||||
|
@ -88,20 +96,34 @@ static BOOL check_CurrDir_writable(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BOOL UIStorageCheck_DCIMWritable(void)
|
BOOL UIStorageCheck_DCIMWritable(void)
|
||||||
{
|
{
|
||||||
|
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev();
|
||||||
|
if(mmc_dev->dcf_handle < 0)
|
||||||
|
{
|
||||||
|
DBG_ERR("No MMC_Dev Can use!\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
UINT32 useFileDB = 0;
|
UINT32 useFileDB = 0;
|
||||||
useFileDB = UI_GetData(FL_IsUseFileDB);
|
useFileDB = UI_GetData(FL_IsUseFileDB);
|
||||||
if (useFileDB) {
|
if (useFileDB) {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
char DCIM_DIR[9] = "A:\\DCIM";
|
|
||||||
INT32 uiStatus = 0;
|
INT32 uiStatus = 0;
|
||||||
UINT8 ucAttrib = 0;
|
UINT8 ucAttrib = 0;
|
||||||
BOOL ret = FALSE;
|
BOOL ret = FALSE;
|
||||||
|
if(mmc_dev->dev_type == MMC_DEV_SD)
|
||||||
|
{
|
||||||
|
uiStatus = FileSys_GetAttrib("A:\\DCIM", &ucAttrib);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uiStatus = FileSys_GetAttrib("B:\\DCIM", &ucAttrib);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
uiStatus = FileSys_GetAttrib(DCIM_DIR, &ucAttrib);
|
|
||||||
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) {
|
||||||
|
@ -127,11 +149,90 @@ BOOL UIStorageCheck_DCIMWritable(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
|
static BOOL UIStrgCheckFolderFull(DCF_HANDLE DcfHandle)
|
||||||
|
{
|
||||||
|
#if (USE_DCF == ENABLE)
|
||||||
|
BOOL bIsFileReachMax = FALSE;
|
||||||
|
UINT32 DCF_DirId = 0, DCF_FileId = 0;
|
||||||
|
BOOL ret;
|
||||||
|
|
||||||
|
if (System_GetState(SYS_STATE_FS) == FS_NUM_FULL) {
|
||||||
|
DBG_ERR("UI_Validate_Storage: DIR:999 is existing!\r\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
bIsFileReachMax = FALSE;
|
||||||
|
|
||||||
|
ret = DCF_GetNextIDEx(DcfHandle, &DCF_DirId, &DCF_FileId);
|
||||||
|
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);
|
||||||
|
} else if (ret && DCF_GetDBInfoEx(DcfHandle, DCF_INFO_IS_9999) == TRUE)
|
||||||
|
{
|
||||||
|
bIsFileReachMax = TRUE;
|
||||||
|
}
|
||||||
|
return bIsFileReachMax;
|
||||||
|
#else
|
||||||
|
return FALSE;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL UIStrgCheckFull(UINT32 *pFreeCount)
|
||||||
{
|
{
|
||||||
#if (PHOTO_MODE==ENABLE)
|
#if (PHOTO_MODE==ENABLE)
|
||||||
UINT32 uiCountTmp = 0;
|
UINT32 uiCountTmp = 0;
|
||||||
#endif
|
#endif
|
||||||
|
#if (PHOTO_MODE==ENABLE)
|
||||||
|
uiCountTmp = PhotoExe_GetFreePicNum();
|
||||||
|
DBG_IND("uiCountTmp = %d, pFreeCount=%d\r\n",uiCountTmp,pFreeCount);
|
||||||
|
if (pFreeCount) {
|
||||||
|
*pFreeCount = uiCountTmp;
|
||||||
|
}
|
||||||
|
if (uiCountTmp == 0) {
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
return FALSE;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL UIStrgCheckErr(MMC_DEV_TYPE dev_id)
|
||||||
|
{
|
||||||
|
if(dev_id == MMC_DEV_SD)
|
||||||
|
{
|
||||||
|
FileSys_WaitFinishEx('A');
|
||||||
|
}
|
||||||
|
else if(dev_id == MMC_DEV_EMMC)
|
||||||
|
{
|
||||||
|
FileSys_WaitFinishEx('B');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (System_GetState(SYS_STATE_FS) == FS_DISK_ERROR
|
||||||
|
|| System_GetState(SYS_STATE_FS) == FS_UNKNOWN_FORMAT
|
||||||
|
|| System_GetState(SYS_STATE_FS) == FS_UNFORMATTED
|
||||||
|
//#NT#2016/12/06#Niven Cho -begin
|
||||||
|
//#NT#MULTI_DRIVE
|
||||||
|
|| System_GetState(SYS_STATE_CARD) == CARD_REMOVED)
|
||||||
|
//#NT#2016/12/06#Niven Cho -end
|
||||||
|
//|| UIStorageCheck_Error() )
|
||||||
|
{
|
||||||
|
DBG_ERR("UIStorageCheck: %d Card Error\r\n", System_GetState(SYS_STATE_FS));
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
|
||||||
|
{
|
||||||
|
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev();
|
||||||
|
if(mmc_dev->dcf_handle < 0)
|
||||||
|
{
|
||||||
|
DBG_ERR("No MMC_Dev Can use!\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
UINT32 useFileDB = 0;
|
UINT32 useFileDB = 0;
|
||||||
useFileDB = UI_GetData(FL_IsUseFileDB);
|
useFileDB = UI_GetData(FL_IsUseFileDB);
|
||||||
|
|
||||||
|
@ -142,49 +243,11 @@ BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
|
||||||
if (useFileDB) {
|
if (useFileDB) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
} else {
|
} else {
|
||||||
#if (USE_DCF == ENABLE)
|
UIStrgCheckFolderFull(mmc_dev->dcf_handle);
|
||||||
BOOL bIsFileReachMax = FALSE;
|
|
||||||
UINT32 DCF_DirId = 0, DCF_FileId = 0;
|
|
||||||
BOOL ret;
|
|
||||||
|
|
||||||
if (System_GetState(SYS_STATE_FS) == FS_NUM_FULL) {
|
|
||||||
DBG_ERR("UI_Validate_Storage: DIR:999 is existing!\r\n");
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
bIsFileReachMax = FALSE;
|
|
||||||
//#NT#2011/03/28#Lincy Lin -begin
|
|
||||||
//#NT#fix delete the 9999th file in 999 folder cause capture not save
|
|
||||||
ret = DCF_GetNextID(&DCF_DirId, &DCF_FileId);
|
|
||||||
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);
|
|
||||||
} else if (ret && DCF_GetDBInfo(DCF_INFO_IS_9999) == TRUE)
|
|
||||||
//#NT#2011/03/28#Lincy Lin -end
|
|
||||||
{
|
|
||||||
bIsFileReachMax = TRUE;
|
|
||||||
}
|
|
||||||
return bIsFileReachMax;
|
|
||||||
#else
|
|
||||||
return FALSE;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case STORAGE_CHECK_FULL:
|
case STORAGE_CHECK_FULL:
|
||||||
#if (PHOTO_MODE==ENABLE)
|
UIStrgCheckFull(pFreeCount);
|
||||||
uiCountTmp = PhotoExe_GetFreePicNum();
|
|
||||||
DBG_IND("uiCountTmp = %d, pFreeCount=%d\r\n",uiCountTmp,pFreeCount);
|
|
||||||
if (pFreeCount) {
|
|
||||||
*pFreeCount = uiCountTmp;
|
|
||||||
}
|
|
||||||
if (uiCountTmp == 0) {
|
|
||||||
return TRUE;
|
|
||||||
} else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
return FALSE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case STORAGE_CHECK_LOCKED:
|
case STORAGE_CHECK_LOCKED:
|
||||||
if (System_GetState(SYS_STATE_CARD) == CARD_LOCKED) {
|
if (System_GetState(SYS_STATE_CARD) == CARD_LOCKED) {
|
||||||
|
@ -195,21 +258,7 @@ BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case STORAGE_CHECK_ERROR:
|
case STORAGE_CHECK_ERROR:
|
||||||
FileSys_WaitFinish();
|
UIStrgCheckErr(mmc_dev->dev_type);
|
||||||
if (System_GetState(SYS_STATE_FS) == FS_DISK_ERROR
|
|
||||||
|| System_GetState(SYS_STATE_FS) == FS_UNKNOWN_FORMAT
|
|
||||||
|| System_GetState(SYS_STATE_FS) == FS_UNFORMATTED
|
|
||||||
//#NT#2016/12/06#Niven Cho -begin
|
|
||||||
//#NT#MULTI_DRIVE
|
|
||||||
|| System_GetState(SYS_STATE_CARD) == CARD_REMOVED)
|
|
||||||
//#NT#2016/12/06#Niven Cho -end
|
|
||||||
//|| UIStorageCheck_Error() )
|
|
||||||
{
|
|
||||||
DBG_ERR("UIStorageCheck: %d Card Error\r\n", System_GetState(SYS_STATE_FS));
|
|
||||||
return TRUE;
|
|
||||||
} else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case STORAGE_CHECK_DCIM_READONLY:
|
case STORAGE_CHECK_DCIM_READONLY:
|
||||||
if ((UIStorageCheck_DCIMWritable() == FALSE)
|
if ((UIStorageCheck_DCIMWritable() == FALSE)
|
||||||
|
|
|
@ -62,6 +62,7 @@ typedef struct
|
||||||
MMC_DEV_TYPE dev_type;
|
MMC_DEV_TYPE dev_type;
|
||||||
MMC_DEV_MOUNT_STATE moumted_state;
|
MMC_DEV_MOUNT_STATE moumted_state;
|
||||||
MMC_DEV_SPACE_STATE space_state;
|
MMC_DEV_SPACE_STATE space_state;
|
||||||
|
MMC_DEV_LOOP_STATE loop_state;
|
||||||
int dcf_handle;
|
int dcf_handle;
|
||||||
}SF_RTOS_ST_MMC_DEV;
|
}SF_RTOS_ST_MMC_DEV;
|
||||||
|
|
||||||
|
|
|
@ -157,19 +157,19 @@ static UINT32 sf_rtos_mmc_dev_space_check_full(MMC_DEV_TYPE mmc_dev)
|
||||||
/*check disk free size*/
|
/*check disk free size*/
|
||||||
if(mmc_dev == MMC_DEV_SD)
|
if(mmc_dev == MMC_DEV_SD)
|
||||||
{
|
{
|
||||||
diskFree = FileSys_GetDiskInfo(FST_INFO_FREE_SPACE);
|
diskFree = FileSys_GetDiskInfoEx('A', FST_INFO_FREE_SPACE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
diskFree = FileSys_GetEMMCDiskInfo(FST_INFO_FREE_SPACE);
|
diskFree = FileSys_GetDiskInfoEx('B', FST_INFO_FREE_SPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
diskFree = diskFree/1024/1024;
|
diskFree = diskFree/1024/1024;
|
||||||
|
|
||||||
if(diskFree < 30) /* 30MB */
|
if(diskFree < 30) /* 30MB */
|
||||||
{
|
{
|
||||||
ret = 1;
|
ret = 1;
|
||||||
IsCardFull = TRUE;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -181,6 +181,7 @@ static UINT32 sf_rtos_mmc_dev_space_check_full(MMC_DEV_TYPE mmc_dev)
|
||||||
|
|
||||||
int SF_RtosStrgRegister(int devid, int mounted_state)
|
int SF_RtosStrgRegister(int devid, int mounted_state)
|
||||||
{
|
{
|
||||||
|
UIMenuStoreInfo *puiPara = sf_ui_para_get();
|
||||||
if(mounted_state == FST_STA_OK)
|
if(mounted_state == FST_STA_OK)
|
||||||
{
|
{
|
||||||
sf_rtos_mmc_dev[devid]->moumted_state = MMC_DEV_MOUNT_STATE_MOUNTED;
|
sf_rtos_mmc_dev[devid]->moumted_state = MMC_DEV_MOUNT_STATE_MOUNTED;
|
||||||
|
@ -190,16 +191,15 @@ int SF_RtosStrgRegister(int devid, int mounted_state)
|
||||||
sf_rtos_mmc_dev[devid]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED;
|
sf_rtos_mmc_dev[devid]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32 isfull = sf_rtos_mmc_dev_space_check_full(devid);
|
if(puiPara->SdLoopSwitch == 1)
|
||||||
if(isfull == 1)
|
|
||||||
{
|
{
|
||||||
sf_rtos_mmc_dev[devid]->space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH;
|
sf_rtos_mmc_dev[devid]->loop_state = MMC_DEV_LOOP_STATE_ON;
|
||||||
}
|
}
|
||||||
else if(isfull == 0)
|
else
|
||||||
{
|
sf_rtos_mmc_dev[devid]->loop_state = MMC_DEV_LOOP_STATE_OFF;
|
||||||
sf_rtos_mmc_dev[devid]->space_state = MMC_DEV_SPACE_STATE_ENOUGH;
|
|
||||||
}
|
|
||||||
DBG_WRN("11devid = %d, state = %d\n", devid, mounted_state);
|
DBG_WRN("devid = %d, state = %d\n", devid, mounted_state);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,6 +214,27 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void)
|
||||||
{
|
{
|
||||||
MMC_DEV_TYPE workable_dev = MMC_DEV_NO;
|
MMC_DEV_TYPE workable_dev = MMC_DEV_NO;
|
||||||
|
|
||||||
|
UINT32 isfull = 0;
|
||||||
|
isfull = sf_rtos_mmc_dev_space_check_full(MMC_DEV_SD);
|
||||||
|
if(isfull == 1)
|
||||||
|
{
|
||||||
|
sf_rtos_mmc_dev[MMC_DEV_SD]->space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH;
|
||||||
|
}
|
||||||
|
else if(isfull == 0)
|
||||||
|
{
|
||||||
|
sf_rtos_mmc_dev[MMC_DEV_SD]->space_state = MMC_DEV_SPACE_STATE_ENOUGH;
|
||||||
|
}
|
||||||
|
|
||||||
|
isfull = sf_rtos_mmc_dev_space_check_full(MMC_DEV_EMMC);
|
||||||
|
if(isfull == 1)
|
||||||
|
{
|
||||||
|
sf_rtos_mmc_dev[MMC_DEV_EMMC]->space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH;
|
||||||
|
}
|
||||||
|
else if(isfull == 0)
|
||||||
|
{
|
||||||
|
sf_rtos_mmc_dev[MMC_DEV_EMMC]->space_state = MMC_DEV_SPACE_STATE_ENOUGH;
|
||||||
|
}
|
||||||
|
|
||||||
if((sf_rtos_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) &&
|
if((sf_rtos_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) &&
|
||||||
(sf_rtos_mmc_dev[MMC_DEV_EMMC]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED))
|
(sf_rtos_mmc_dev[MMC_DEV_EMMC]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED))
|
||||||
{
|
{
|
||||||
|
@ -227,9 +248,9 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//if(sf_rtos_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON)
|
if(sf_rtos_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON)
|
||||||
{
|
{
|
||||||
//workable_dev = MMC_DEV_EMMC;
|
workable_dev = MMC_DEV_EMMC;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -241,9 +262,9 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//if(sf_rtos_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON)
|
if(sf_rtos_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON)
|
||||||
{
|
{
|
||||||
//workable_dev = MMC_DEV_SD;
|
workable_dev = MMC_DEV_SD;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -264,9 +285,9 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//if(sf_rtos_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON)
|
if(sf_rtos_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON)
|
||||||
{
|
{
|
||||||
//workable_dev = MMC_DEV_EMMC;
|
workable_dev = MMC_DEV_EMMC;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user