1.修改升级问题;2.优化代码。文件系统初始化完成后在进行文件操作

This commit is contained in:
payton 2024-01-23 16:49:40 +08:00
parent 2c8300c697
commit 707d92360d
7 changed files with 153 additions and 53 deletions

View File

@ -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
}

View File

@ -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_

View File

@ -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);
}

View File

@ -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);

View File

@ -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;

View File

@ -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;
}

View File

@ -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)
{