Merge branch 'Branch_S550_Fast_Emmc' of 192.168.6.216:linux-em-group/s530-ntk into Branch_S550_Emmc
This commit is contained in:
commit
400bebebd6
|
@ -34,6 +34,9 @@ SF_THREAD_S MMCMonitorTskCfg =
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#define MIN_DISK_FREE_SIZE_MB 30
|
||||||
|
|
||||||
|
|
||||||
SF_ST_MMC_DEV *sf_mmc_dev[MMC_DEV_MAX_NUM] = {NULL};
|
SF_ST_MMC_DEV *sf_mmc_dev[MMC_DEV_MAX_NUM] = {NULL};
|
||||||
|
|
||||||
SF_ST_MMC_DEV *pMMCDev = NULL;
|
SF_ST_MMC_DEV *pMMCDev = NULL;
|
||||||
|
@ -48,22 +51,21 @@ SF_ST_MMC_DEV *SF_GetMMCDev(void)
|
||||||
return pMMCDev;
|
return pMMCDev;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SF_StrgInit(void)
|
void SF_StrgInit(void) {
|
||||||
{
|
for (int i = 0; i < MMC_DEV_MAX_NUM; i++) {
|
||||||
for(int i = 0; i < MMC_DEV_MAX_NUM; i++)
|
|
||||||
{
|
|
||||||
sf_mmc_dev[i] = (SF_ST_MMC_DEV *)malloc(sizeof(SF_ST_MMC_DEV));
|
sf_mmc_dev[i] = (SF_ST_MMC_DEV *)malloc(sizeof(SF_ST_MMC_DEV));
|
||||||
if(sf_mmc_dev[i] == NULL) {
|
if (sf_mmc_dev[i] == NULL) {
|
||||||
MLOGD("SF_StrgInit Failed, id = %d\n", i);
|
MLOGD("SF_StrgInit Failed, id = %d\n", i);
|
||||||
|
// Handle malloc failure
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
sf_mmc_dev[i]->dcf_handle = -1;
|
sf_mmc_dev[i]->dcf_handle = -1;
|
||||||
sf_mmc_dev[i]->dev_type = MMC_DEV_NO;
|
sf_mmc_dev[i]->dev_type = MMC_DEV_NO;
|
||||||
sf_mmc_dev[i]->node = MMC_DEV_NODE_STATE_NO_EXIST;
|
sf_mmc_dev[i]->node = MMC_DEV_NODE_STATE_NO_EXIST;
|
||||||
sf_mmc_dev[i]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED;
|
sf_mmc_dev[i]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED;
|
||||||
sf_mmc_dev[i]->space_state = MMC_DEV_SPACE_STATE_ENOUGH;
|
sf_mmc_dev[i]->space_state = MMC_DEV_SPACE_STATE_ENOUGH;
|
||||||
sf_mmc_dev[i]->loop_state = MMC_DEV_LOOP_STATE_OFF;
|
sf_mmc_dev[i]->loop_state = MMC_DEV_LOOP_STATE_OFF;
|
||||||
}
|
}
|
||||||
pMMCDev = (SF_ST_MMC_DEV *)malloc(sizeof(SF_ST_MMC_DEV));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SF_StrgUnInit(void)
|
void SF_StrgUnInit(void)
|
||||||
|
@ -101,7 +103,7 @@ static UINT32 SF_StrgSpaceCheckFull(MMC_DEV_TYPE mmc_dev)
|
||||||
|
|
||||||
diskFree = diskFree/1024/1024;
|
diskFree = diskFree/1024/1024;
|
||||||
|
|
||||||
if(diskFree < 30) /* 30MB */
|
if(diskFree < MIN_DISK_FREE_SIZE_MB) /* 30MB */
|
||||||
{
|
{
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
|
@ -196,7 +198,7 @@ void SF_StrgRegister(SF_MESSAGE_BUF_S *pMessageBuf)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i < 2; i++)
|
for(int i = 0; i < MMC_DEV_MAX_NUM; i++)
|
||||||
{
|
{
|
||||||
MLOGD("node:%d, mount:%d, loop:%d\n",
|
MLOGD("node:%d, mount:%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,
|
||||||
|
@ -321,6 +323,7 @@ SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MLOGD("Strg Check, workable_dev = %d\n", workable_dev);
|
MLOGD("Strg Check, workable_dev = %d\n", workable_dev);
|
||||||
|
SF_SetMMCDev(sf_mmc_dev[workable_dev]);
|
||||||
return sf_mmc_dev[workable_dev];
|
return sf_mmc_dev[workable_dev];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -339,6 +342,9 @@ static void* mmc_monitoring_thread(void *arg)
|
||||||
|
|
||||||
int sf_mmc_dev_check_start(void)
|
int sf_mmc_dev_check_start(void)
|
||||||
{
|
{
|
||||||
|
#if USE_MMC_DEV_CHECK
|
||||||
|
SF_StrgInit();// 初始化sf_mmc设备Obj
|
||||||
|
#endif
|
||||||
int ret = pthread_create(&MMCMonitorTskCfg.TskId, NULL, mmc_monitoring_thread, NULL);
|
int ret = pthread_create(&MMCMonitorTskCfg.TskId, NULL, mmc_monitoring_thread, NULL);
|
||||||
if(ret != SF_SUCCESS)
|
if(ret != SF_SUCCESS)
|
||||||
{
|
{
|
||||||
|
@ -346,7 +352,7 @@ int sf_mmc_dev_check_start(void)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
MMCMonitorTskCfg.IsRun = 1;
|
MMCMonitorTskCfg.IsRun = 1;
|
||||||
MLOGD("mmc_dev check create success!\n");
|
MLOGD("00 mmc_dev check create success!\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +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)
|
#define USE_MMC_DEV_CHECK (1)
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
|
|
@ -348,9 +348,7 @@ 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
|
|
||||||
#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
|
||||||
|
|
||||||
|
|
|
@ -866,14 +866,18 @@ static DCF_HANDLE MovieFast_Get_DCF_Handle(void)
|
||||||
//#else
|
//#else
|
||||||
//return g_dcf_hdl;
|
//return g_dcf_hdl;
|
||||||
//#endif
|
//#endif
|
||||||
|
#if USE_RTOS_MMC_CHECK
|
||||||
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev();
|
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev();
|
||||||
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 -1;
|
return -1;
|
||||||
}
|
}
|
||||||
DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
|
DBG_WRN("Moviefast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
|
||||||
return mmc_dev->dcf_handle;
|
return mmc_dev->dcf_handle;
|
||||||
|
#else
|
||||||
|
return g_dcf_hdl;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
INT32 MovieFast_Wait_FileSys(UINT32 timeout_ms)
|
INT32 MovieFast_Wait_FileSys(UINT32 timeout_ms)
|
||||||
{
|
{
|
||||||
|
@ -931,6 +935,7 @@ static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
|
||||||
DBG_ERR("Exceed max dcf file!\r\n");
|
DBG_ERR("Exceed max dcf file!\r\n");
|
||||||
pFileName[0] = '\0';
|
pFileName[0] = '\0';
|
||||||
} else {
|
} else {
|
||||||
|
DBG_DUMP("%s\n", __FUNCTION__);
|
||||||
DCF_HANDLE handle = MovieFast_Get_DCF_Handle();
|
DCF_HANDLE handle = MovieFast_Get_DCF_Handle();
|
||||||
DCF_GetNextIDEx(handle, &nextFolderID,&nextFileID);
|
DCF_GetNextIDEx(handle, &nextFolderID,&nextFileID);
|
||||||
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2)
|
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2)
|
||||||
|
|
|
@ -936,6 +936,7 @@ DCF_HANDLE PhotoFast_Get_DCF_Handle()
|
||||||
//#else
|
//#else
|
||||||
//return g_dcf_hdl;
|
//return g_dcf_hdl;
|
||||||
//#endif
|
//#endif
|
||||||
|
#if USE_RTOS_MMC_CHECK
|
||||||
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev();
|
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev();
|
||||||
if(mmc_dev->dcf_handle < 0)
|
if(mmc_dev->dcf_handle < 0)
|
||||||
{
|
{
|
||||||
|
@ -944,6 +945,9 @@ DCF_HANDLE PhotoFast_Get_DCF_Handle()
|
||||||
}
|
}
|
||||||
DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
|
DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
|
||||||
return mmc_dev->dcf_handle;
|
return mmc_dev->dcf_handle;
|
||||||
|
#else
|
||||||
|
return g_dcf_hdl;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
INT32 PhotoFast_Wait_FileSys(UINT32 timeout_ms)
|
INT32 PhotoFast_Wait_FileSys(UINT32 timeout_ms)
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
#define MMC_DEV_MAX_NUM (2)
|
#define MMC_DEV_MAX_NUM (2)
|
||||||
|
|
||||||
#define USE_RTOS_MMC_CHECK (0)
|
#define USE_RTOS_MMC_CHECK (1)
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
|
|
@ -164,15 +164,16 @@ static UINT32 sf_rtos_mmc_dev_space_check_full(MMC_DEV_TYPE mmc_dev)
|
||||||
diskFree = FileSys_GetDiskInfoEx('B', 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 */
|
||||||
{
|
{
|
||||||
|
IsCardFull = TRUE;
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
IsCardFull = FALSE;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
DBG_WRN("[%d]sd card diskFree=%lluM, ret = %d\n", __LINE__, diskFree, ret);
|
DBG_WRN("[%d]sd card diskFree=%lluM, ret = %d\n", __LINE__, diskFree, ret);
|
||||||
|
@ -198,7 +199,6 @@ int SF_RtosStrgRegister(int devid, int mounted_state)
|
||||||
else
|
else
|
||||||
sf_rtos_mmc_dev[devid]->loop_state = MMC_DEV_LOOP_STATE_OFF;
|
sf_rtos_mmc_dev[devid]->loop_state = MMC_DEV_LOOP_STATE_OFF;
|
||||||
|
|
||||||
|
|
||||||
DBG_WRN("devid = %d, state = %d\n", devid, mounted_state);
|
DBG_WRN("devid = %d, state = %d\n", devid, mounted_state);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user