1.修改升级问题;2.优化代码。文件系统初始化完成后在进行文件操作
This commit is contained in:
parent
2c8300c697
commit
707d92360d
|
@ -22,7 +22,9 @@
|
|||
#if (USE_DCF == ENABLE)
|
||||
#include "DCF.h"
|
||||
#endif
|
||||
|
||||
#include "kwrap/flag.h"
|
||||
#include "kwrap/debug.h"
|
||||
#include "kwrap/util.h"
|
||||
|
||||
#if HUNTING_CAMERA_MCU == ENABLE
|
||||
#include <sf_message_queue.h>
|
||||
|
@ -51,6 +53,49 @@ SF_ST_MMC_DEV *sf_mmc_dev[MMC_DEV_MAX_NUM] = {NULL};
|
|||
|
||||
SF_ST_MMC_DEV *pMMCDev = NULL;
|
||||
|
||||
static ID sf_dev_flag_id = 0;
|
||||
|
||||
void sf_dev_flag_init(void)
|
||||
{
|
||||
ER ret = E_OK;
|
||||
T_CFLG cflg;
|
||||
if ((ret |= vos_flag_create(&sf_dev_flag_id, &cflg, "sf_dev_flag_id")) != E_OK)
|
||||
{
|
||||
SYS_SLOGE("sf_dev_flag_id fail\r\n");
|
||||
}
|
||||
vos_flag_clr(sf_dev_flag_id, (FLGPTN)-1);
|
||||
}
|
||||
|
||||
void sf_dev_flag_set_done(DEV_FLAG_INIT boot_init)
|
||||
{
|
||||
vos_flag_set(sf_dev_flag_id, (FLGPTN)(1 << boot_init));
|
||||
}
|
||||
|
||||
void sf_dev_flag_wait_done(DEV_FLAG_INIT boot_init)
|
||||
{
|
||||
FLGPTN flgptn;
|
||||
vos_flag_wait(&flgptn, sf_dev_flag_id, (FLGPTN)(1 << boot_init), TWF_ANDW);
|
||||
}
|
||||
|
||||
int sf_dev_flag_wait_done_timeout(DEV_FLAG_INIT boot_init, int timeout_ms)
|
||||
{
|
||||
ER ret = E_OK;
|
||||
FLGPTN flgptn;
|
||||
|
||||
ret = vos_flag_wait_timeout(&flgptn, sf_dev_flag_id, (FLGPTN)(1 << boot_init), TWF_ANDW, vos_util_msec_to_tick(timeout_ms));
|
||||
if(unlikely(ret != E_OK)){
|
||||
printf("wait(%lu) init timeout(%ld ms)!\n", boot_init, timeout_ms);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void sf_dev_flag_clear_done(DEV_FLAG_INIT boot_init)
|
||||
{
|
||||
//vos_flag_clr(sf_mcu_flag_id, (FLGPTN)(1 << boot_init));
|
||||
vos_flag_clr(sf_dev_flag_id, (FLGPTN)-1);
|
||||
}
|
||||
|
||||
void SF_SetMMCDev(SF_ST_MMC_DEV *pDev)
|
||||
{
|
||||
if(pDev == NULL)
|
||||
|
@ -144,6 +189,10 @@ static UINT32 SF_StrgSpaceCheckFull(MMC_DEV_TYPE mmc_dev)
|
|||
if(diskFree < MIN_FREE_SIZE_MB) /* 30MB*/
|
||||
{
|
||||
ret = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = 0;
|
||||
if(mmc_dev == MMC_DEV_SD){
|
||||
sf_set_sd_card_full(1);
|
||||
}
|
||||
|
@ -151,10 +200,6 @@ static UINT32 SF_StrgSpaceCheckFull(MMC_DEV_TYPE mmc_dev)
|
|||
sf_set_emmc_card_full(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
if(sf_mmc_dev != NULL) {
|
||||
sf_mmc_dev[mmc_dev]->space_state = ret == 0 ? MMC_DEV_SPACE_STATE_ENOUGH : MMC_DEV_SPACE_STATE_NO_ENOUGH;
|
||||
|
@ -315,7 +360,7 @@ SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void)
|
|||
{
|
||||
if(puiPara->SdLoopSwitch == 1)
|
||||
{
|
||||
workable_dev = MMC_DEV_SD;
|
||||
workable_dev = MMC_DEV_EMMC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -338,7 +383,7 @@ SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void)
|
|||
{
|
||||
if(puiPara->SdLoopSwitch == 1)
|
||||
{
|
||||
workable_dev = MMC_DEV_SD;
|
||||
workable_dev = MMC_DEV_EMMC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -382,6 +427,7 @@ static void* mmc_monitoring_thread(void *arg)
|
|||
static MMC_DEV_TYPE current_id = MMC_DEV_NO;
|
||||
while(MMCMonitorTskCfg.IsRun)
|
||||
{
|
||||
sf_dev_flag_wait_done_timeout(DEV_FLAG_INIT_FILENAMINGOK, 5000);
|
||||
pMMCDev = SF_StrgCheckWorkableDev();
|
||||
|
||||
if(pMMCDev != NULL) {
|
||||
|
@ -401,7 +447,7 @@ static void* mmc_monitoring_thread(void *arg)
|
|||
int sf_mmc_dev_check_start(void)
|
||||
{
|
||||
SF_StrgInit();// 初始化sf_mmc设备Obj
|
||||
|
||||
sf_dev_flag_init();
|
||||
int ret = pthread_create(&MMCMonitorTskCfg.TskId, NULL, mmc_monitoring_thread, NULL);
|
||||
if(ret != SF_SUCCESS)
|
||||
{
|
||||
|
@ -413,3 +459,34 @@ int sf_mmc_dev_check_start(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void sf_file_sys_int_status(void)
|
||||
{
|
||||
MLOGD("s\n");
|
||||
|
||||
SF_MESSAGE_BUF_S stMessageBuf = {0};
|
||||
stMessageBuf.arg1 = CMD_SD_FILESYS_INIT_STATUS;
|
||||
stMessageBuf.cmdId = CMD_SD;
|
||||
sf_com_message_send_to_app(&stMessageBuf);
|
||||
sf_thumb_dir();
|
||||
}
|
||||
|
||||
void sf_thumb_dir(void)
|
||||
{
|
||||
MLOGD("s\n");
|
||||
char thumb_dir[128] = {'\0'};
|
||||
|
||||
sprintf(thumb_dir, "%c%s", 'A', PHOTO_THUMB_PATH);
|
||||
FileSys_MakeDir(thumb_dir);
|
||||
|
||||
#if SF_IQ_TEST != ENABLE
|
||||
FileSys_SetAttrib(thumb_dir, FST_ATTRIB_HIDDEN/* | FST_ATTRIB_SYSTEM*/, TRUE);
|
||||
#endif
|
||||
|
||||
#if FS_MULTI_STRG_FUNC
|
||||
sprintf(thumb_dir, "%c%s", 'B', PHOTO_THUMB_PATH);
|
||||
FileSys_MakeDir(thumb_dir);
|
||||
#if SF_IQ_TEST != ENABLE
|
||||
FileSys_SetAttrib(thumb_dir, FST_ATTRIB_HIDDEN/* | FST_ATTRIB_SYSTEM*/, TRUE);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -71,6 +71,13 @@ typedef enum
|
|||
MMC_DEV_LOOP_STATE_OFF = 2,
|
||||
}MMC_DEV_LOOP_STATE;
|
||||
|
||||
typedef enum DEV_FLAG_INIT {
|
||||
DEV_FLAG_INIT_FILESYSOK = 0x00,
|
||||
DEV_FLAG_INIT_FILENAMINGOK,
|
||||
DEV_FLAG_GET,
|
||||
DEV_FLAG_INIT_MAX_CNT = 32, //flag max bit cnt is 32
|
||||
} DEV_FLAG_INIT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
MMC_DEV_TYPE dev_type;
|
||||
|
@ -90,8 +97,8 @@ void SF_SetMMCDev(SF_ST_MMC_DEV *pDev);
|
|||
SF_ST_MMC_DEV *SF_GetMMCDev(void);
|
||||
int sf_mmc_dev_check_start(void);
|
||||
int SF_GetMMCDevHandle(MMC_DEV_TYPE dev_type);
|
||||
|
||||
|
||||
|
||||
void sf_dev_flag_set_done(DEV_FLAG_INIT boot_init);
|
||||
void sf_file_sys_int_status(void);
|
||||
void sf_thumb_dir(void);
|
||||
#endif //_SF_SYS_STRG_MNG_H_
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <sf_param_enum.h>
|
||||
#include <sf_message_queue.h>
|
||||
#include <sf_commMng.h>
|
||||
#include "SF_SysStrgMng.h"
|
||||
#endif
|
||||
#if (LOGFILE_FUNC==ENABLE)
|
||||
#include "LogFile.h"
|
||||
|
@ -1298,6 +1299,11 @@ void System_WaitFS(void)
|
|||
TM_BOOT_END("Fs", "WaitAttach");
|
||||
is_fs_ready = TRUE;
|
||||
|
||||
#if HUNTING_CAMERA_MCU == ENABLE
|
||||
sf_dev_flag_set_done(DEV_FLAG_INIT_FILENAMINGOK);
|
||||
sf_file_sys_int_status();
|
||||
#endif
|
||||
|
||||
BKG_PostEvent(NVTEVT_BKW_INIT_FILESYS);
|
||||
}
|
||||
|
||||
|
|
|
@ -2705,22 +2705,6 @@ INT32 PhotoExe_OnOpen(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
|||
g_photo_ImageRatioSize = IMAGERATIO_SIZE[ImageRatioIdx];
|
||||
|
||||
// g_photo_ImageRatioSize = IMAGERATIO_SIZE[4];
|
||||
char thumb_dir[128] = {'\0'};
|
||||
|
||||
sprintf(thumb_dir, "%c%s", 'A', PHOTO_THUMB_PATH);
|
||||
FileSys_MakeDir(thumb_dir);
|
||||
|
||||
#if SF_IQ_TEST != ENABLE
|
||||
FileSys_SetAttrib(thumb_dir, FST_ATTRIB_HIDDEN/* | FST_ATTRIB_SYSTEM*/, TRUE);
|
||||
#endif
|
||||
|
||||
#if FS_MULTI_STRG_FUNC
|
||||
sprintf(thumb_dir, "%c%s", 'B', PHOTO_THUMB_PATH);
|
||||
FileSys_MakeDir(thumb_dir);
|
||||
#if SF_IQ_TEST != ENABLE
|
||||
FileSys_SetAttrib(thumb_dir, FST_ATTRIB_HIDDEN/* | FST_ATTRIB_SYSTEM*/, TRUE);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
GOIO_Turn_Onoff_IRCUT(1);
|
||||
|
||||
|
|
|
@ -405,6 +405,7 @@ typedef enum sf_MESSAGE_CMD_SD_e
|
|||
CMD_SD_FULL = 5,
|
||||
CMD_SD_FORMAT = 6,
|
||||
CMD_SD_STRG_WORKABLE_DEV = 7,
|
||||
CMD_SD_FILESYS_INIT_STATUS = 8,
|
||||
CMD_SD_SYSTEM_CB_CONFIG = 0xFFFFFFFF,
|
||||
|
||||
}SF_MESSAGE_CMD_SD_E;
|
||||
|
|
|
@ -604,7 +604,7 @@ static SINT32 sf_app_process_cmd_keyctrl(SF_MESSAGE_BUF_S *pMessageBuf)
|
|||
|
||||
static SINT32 sfStrgDevOnActionMount(int dev_id, int result)
|
||||
{
|
||||
SINT16 startup = sf_poweron_type_get();
|
||||
// SINT16 startup = sf_poweron_type_get();
|
||||
UINT32 status = 0;
|
||||
status = result;
|
||||
switch (status)
|
||||
|
@ -612,32 +612,33 @@ static SINT32 sfStrgDevOnActionMount(int dev_id, int result)
|
|||
case FST_STA_OK:
|
||||
sf_set_card(1);
|
||||
sf_sd_status_set(SF_SD_OK);
|
||||
|
||||
if(SF_MCU_STARTUP_ONKEY == startup)
|
||||
{
|
||||
SF_STORE_ATTR_S storeattrs = {0};
|
||||
sf_activity_info_get(&storeattrs);
|
||||
printf("SD free=%dM/%dM\n", storeattrs.SDFree, storeattrs.SDTotalSize);
|
||||
if (storeattrs.SDFree < 30) /* 30MB */
|
||||
{
|
||||
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_NORMAL);
|
||||
}
|
||||
}
|
||||
sf_statistics_param_load(sf_statistics_param_get());
|
||||
MLOGI("card-%d mount OK\r\n", dev_id + 1);
|
||||
sf_set_key_fw_update(sf_get_fw_update());//up fw
|
||||
if(sf_get_mcu_update_flag())//up mcu
|
||||
{
|
||||
sf_app_mcu_updata_start();
|
||||
}
|
||||
if(dev_id == MMC_DEV_EMMC)
|
||||
if(dev_id == MMC_DEV_EMMC)
|
||||
{
|
||||
printf("EMMC has Mounted!\r\n");
|
||||
sf_strg_dev_register(MMC_DEV_EMMC, MMC_DEV_MOUNT_STATE_MOUNTED);
|
||||
}
|
||||
// if(SF_MCU_STARTUP_ONKEY == startup)
|
||||
// {
|
||||
// SF_STORE_ATTR_S storeattrs = {0};
|
||||
// sf_activity_info_get(&storeattrs);
|
||||
// printf("SD free=%dM/%dM\n", storeattrs.SDFree, storeattrs.SDTotalSize);
|
||||
// if (storeattrs.SDFree < 30) /* 30MB */
|
||||
// {
|
||||
// sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FULL);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// sf_sys_status_led_set(SF_LED_SYS_STATE_SD_NORMAL);
|
||||
// }
|
||||
// }
|
||||
// sf_statistics_param_load(sf_statistics_param_get());
|
||||
// MLOGI("card-%d mount OK\r\n", dev_id + 1);
|
||||
// sf_set_key_fw_update(sf_get_fw_update());//up fw
|
||||
// if(sf_get_mcu_update_flag())//up mcu
|
||||
// {
|
||||
// sf_app_mcu_updata_start();
|
||||
// }
|
||||
|
||||
break;
|
||||
case FST_STA_DISK_UNFORMAT:
|
||||
sf_statistics_param_load(sf_statistics_param_get());
|
||||
|
@ -716,6 +717,7 @@ static SINT32 sfStrgDevEmmcHandler(int cb_evt, int dev_id, int result)
|
|||
static SINT32 sf_app_process_cmd_SD(SF_MESSAGE_BUF_S *pMessageBuf)
|
||||
{
|
||||
MLOGD("[dev_id:%d,evt:%d]\n",pMessageBuf->arg2,pMessageBuf->arg1);
|
||||
SINT16 startup = sf_poweron_type_get();
|
||||
|
||||
if(pMessageBuf->arg2 == MMC_DEV_SD)
|
||||
{
|
||||
|
@ -743,6 +745,29 @@ static SINT32 sf_app_process_cmd_SD(SF_MESSAGE_BUF_S *pMessageBuf)
|
|||
case CMD_SD_STRG_WORKABLE_DEV:
|
||||
sf_strg_dev_register(pMessageBuf->arg2, pMessageBuf->arg3);
|
||||
break;
|
||||
case CMD_SD_FILESYS_INIT_STATUS:
|
||||
if(SF_MCU_STARTUP_ONKEY == startup)
|
||||
{
|
||||
SF_STORE_ATTR_S storeattrs = {0};
|
||||
sf_activity_info_get(&storeattrs);
|
||||
printf("SD free=%dM/%dM\n", storeattrs.SDFree, storeattrs.SDTotalSize);
|
||||
if (storeattrs.SDFree < 30) /* 30MB */
|
||||
{
|
||||
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_NORMAL);
|
||||
}
|
||||
}
|
||||
sf_statistics_param_load(sf_statistics_param_get());
|
||||
MLOGI("FILESYS mount OK\r\n");
|
||||
sf_set_key_fw_update(sf_get_fw_update());//up fw
|
||||
if(sf_get_mcu_update_flag())//up mcu
|
||||
{
|
||||
sf_app_mcu_updata_start();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -47,8 +47,8 @@
|
|||
|
||||
SF_CALLBACK_SD_CMD g_fpSd_Exist_CB = NULL;
|
||||
static int formatSD = CMD_FORMAT_SD_ERR;
|
||||
static BOOL IsCardFull = FALSE;
|
||||
static BOOL IsEmmcFull = FALSE;
|
||||
static BOOL IsCardFull = TRUE;
|
||||
static BOOL IsEmmcFull = TRUE;
|
||||
|
||||
void sf_sd_exist_reg_cb(SF_CALLBACK_SD_CMD fpCB)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user