rtos和linux下存储文件路径加入存储设备切换逻辑

This commit is contained in:
sober.song 2023-12-23 19:15:22 +08:00
parent 85230bb460
commit 2a20d7fd2a
12 changed files with 65 additions and 20 deletions

View File

@ -75,6 +75,7 @@
#include <sf_message_queue.h> #include <sf_message_queue.h>
#include <sf_param_struct.h> #include <sf_param_struct.h>
#include "sf_sd_common.h" #include "sf_sd_common.h"
#include <sf_mmc_dev.h>
#endif #endif
#if (LOGFILE_FUNC==ENABLE) #if (LOGFILE_FUNC==ENABLE)
#include "LogFile.h" #include "LogFile.h"

View File

@ -37,6 +37,7 @@
#endif #endif
#include "vendor_videoout.h" #include "vendor_videoout.h"
#include "IOCfg.h" #include "IOCfg.h"
#include "sf_mmc_dev.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
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -1217,6 +1218,11 @@ BOOL MovieExe_CheckSNFull(void)
static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
{ {
MMC_DEV_TYPE mmc_dev = sf_mmc_check_workable_dev();
if(mmc_dev == MMC_DEV_NO)
{
DBG_ERR("No Strg dev can use!\n");
}
#if USE_FILEDB #if USE_FILEDB
static struct tm CurDateTime = {0}; static struct tm CurDateTime = {0};
@ -1226,10 +1232,19 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
g_FileSerialNum = FILE_SN_MAX; g_FileSerialNum = FILE_SN_MAX;
Ux_PostEvent(NVTEVT_CB_MOVIE_FULL, 0); Ux_PostEvent(NVTEVT_CB_MOVIE_FULL, 0);
} }
GxTime_GetTime(&CurDateTime); GxTime_GetTime(&CurDateTime);
#if(SENSOR_CAPS_COUNT>=2 || ((defined(_NVT_ETHREARCAM_RX_)) && (ETH_REARCAM_CAPS_COUNT >= 2))) #if(SENSOR_CAPS_COUNT>=2 || ((defined(_NVT_ETHREARCAM_RX_)) && (ETH_REARCAM_CAPS_COUNT >= 2)))
char NH_endChar='A'; char NH_endChar='A';
if(mmc_dev == MMC_DEV_SD)
{
NH_endChar='A';
}
else if(mmc_dev == MMC_DEV_EMMC)
{
NH_endChar='B';
}
if(id < _CFG_REC_ID_MAX){ if(id < _CFG_REC_ID_MAX){
NH_endChar+=id; NH_endChar+=id;
}else if(id <_CFG_CLONE_ID_MAX){ }else if(id <_CFG_CLONE_ID_MAX){
@ -1247,8 +1262,16 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
CurDateTime.tm_hour, CurDateTime.tm_min, CurDateTime.tm_sec, g_FileSerialNum); CurDateTime.tm_hour, CurDateTime.tm_min, CurDateTime.tm_sec, g_FileSerialNum);
#endif #endif
#elif USE_DCF #elif USE_DCF
UINT32 dcf_path = 1;
UINT32 dcf_path = 1; /* 0:emmc 1:sd */ if(mmc_dev == MMC_DEV_SD)
{
dcf_path = 1; /* 0:emmc 1:sd */
}
else if(mmc_dev == MMC_DEV_EMMC)
{
dcf_path = 0; /* 0:emmc 1:sd */
}
UINT32 nextFolderID = 0, nextFileID = 0; UINT32 nextFolderID = 0, nextFileID = 0;
if (DCF_GetDBInfoEx(dcf_path, DCF_INFO_IS_9999)) { if (DCF_GetDBInfoEx(dcf_path, DCF_INFO_IS_9999)) {

View File

@ -298,6 +298,7 @@ SRC = \
./code/source/qrcodeMng/sf_qrcode.c \ ./code/source/qrcodeMng/sf_qrcode.c \
./code/source/qrcodeMng/split.c \ ./code/source/qrcodeMng/split.c \
./code/source/storeMng/sf_storeMng.c \ ./code/source/storeMng/sf_storeMng.c \
./code/source/storeMng/sf_mmc_dev.c \
./code/source/ttyusb/sf_hal_ttyusb.c \ ./code/source/ttyusb/sf_hal_ttyusb.c \
./code/source/4gMng/sf_4g_lpa.c \ ./code/source/4gMng/sf_4g_lpa.c \
./code/source/4gMng/sf_4G_sms_lpa_cmd.c \ ./code/source/4gMng/sf_4G_sms_lpa_cmd.c \

View File

@ -76,7 +76,7 @@ typedef struct
MMC_DEV_LOOP_STATE loop_state; MMC_DEV_LOOP_STATE loop_state;
}SF_ST_MMC_DEV; }SF_ST_MMC_DEV;
MMC_DEV_TYPE sf_mmc_check_workable_dev(void);
#endif #endif

View File

@ -16,6 +16,11 @@
#include "sf_fileMng.h" #include "sf_fileMng.h"
#include "sf_storeMng.h" #include "sf_storeMng.h"
#include "sf_mmc_dev.h"
#include <sf_param_common.h>
typedef struct typedef struct
{ {
int event; int event;
@ -24,12 +29,12 @@ typedef struct
}STRG_CB_PARAM; }STRG_CB_PARAM;
static SF_ST_MMC_DEV sf_mmc_dev[SF_ST_MMC_DEV] = {0}; static SF_ST_MMC_DEV sf_mmc_dev[MMC_DEV_MAX_NUM] = {0};
SINT32 sf_mmc_dev_space_check_full(const char *mountPath, SF_STORE_ATTR_S *pstoreattrs) SINT32 sf_mmc_dev_space_check_full(const char *mountPath)
{ {
SF_STORE_ATTR_S *pstoreattrs = NULL;
SF_COMM_CHECK_POINTER(pstoreattrs,SF_FAILURE); SF_COMM_CHECK_POINTER(pstoreattrs,SF_FAILURE);
SINT32 fd = -1; SINT32 fd = -1;
UINT32 Isfull = 0; UINT32 Isfull = 0;
fd = open(mountPath, O_RDONLY,0); fd = open(mountPath, O_RDONLY,0);
@ -65,10 +70,10 @@ SINT32 sf_mmc_dev_space_check_full(const char *mountPath, SF_STORE_ATTR_S *pstor
MLOGD("SDStatus = %d,SDFree = %d MB,SDTotalSize = %d MB\n", pstoreattrs->SDStatus, pstoreattrs->SDFree,pstoreattrs->SDTotalSize); MLOGD("SDStatus = %d,SDFree = %d MB,SDTotalSize = %d MB\n", pstoreattrs->SDStatus, pstoreattrs->SDFree,pstoreattrs->SDTotalSize);
if(pstoreattrs.SDStatus != 0) if(pstoreattrs->SDStatus != 0)
return pstoreattrs.SDStatus; return pstoreattrs->SDStatus;
Isfull = (pstoreattrs.SDFree <= SD_WARNING_SPACE)?1:0; Isfull = (pstoreattrs->SDFree <= SD_WARNING_SPACE)?1:0;
return Isfull; return Isfull;
} }
@ -86,7 +91,7 @@ static int sf_mmc_dev_node_check(const char *devName)
if (tryCnt < 0) if (tryCnt < 0)
{ {
HAL_MMC_LOG("no found %s\n", devName); printf("no found %s\n", devName);
return -1; return -1;
} }
return ret; return ret;
@ -96,7 +101,7 @@ void sf_mmc_dev_register(SF_MESSAGE_BUF_S *pMessageBuf)
{ {
STRG_CB_PARAM strg_cb_param; STRG_CB_PARAM strg_cb_param;
UIMenuStoreInfo *puiPara = sf_ui_para_get(); UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
strg_cb_param.event = pMessageBuf->arg1; strg_cb_param.event = pMessageBuf->arg1;
strg_cb_param.dev_id = pMessageBuf->arg2; strg_cb_param.dev_id = pMessageBuf->arg2;
strg_cb_param.mounted_status = pMessageBuf->arg3; strg_cb_param.mounted_status = pMessageBuf->arg3;

View File

@ -84,6 +84,7 @@ SRC = \
$(APP_DIR)/source/sf_app/code/source/qrcodeMng/sf_base64.c \ $(APP_DIR)/source/sf_app/code/source/qrcodeMng/sf_base64.c \
$(APP_DIR)/source/sf_app/code/source/paramMng/sf_param_common.c \ $(APP_DIR)/source/sf_app/code/source/paramMng/sf_param_common.c \
$(APP_DIR)/source/sf_app/code/source/commMng/sf_message_queue.c \ $(APP_DIR)/source/sf_app/code/source/commMng/sf_message_queue.c \
$(APP_DIR)/source/sf_app/code/source/storeMng/sf_mmc_dev.c \
$(APP_DIR)/source/sf_app/code/source/commMng/sf_share_mem.c \ $(APP_DIR)/source/sf_app/code/source/commMng/sf_share_mem.c \
$(APP_DIR)/source/sf_app/code/source/fileMng/sf_fileMng.c \ $(APP_DIR)/source/sf_app/code/source/fileMng/sf_fileMng.c \
$(APP_DIR)/source/sf_app/code/source/wifi/sf_data_transfer.c \ $(APP_DIR)/source/sf_app/code/source/wifi/sf_data_transfer.c \

View File

@ -43,6 +43,7 @@
#include <io/gpio.h> #include <io/gpio.h>
#include "UIInfo/UIInfo.h" #include "UIInfo/UIInfo.h"
#include <FileSysTsk.h> #include <FileSysTsk.h>
#include "sf_sd_common.h"
SF_CALLBACK_SD_CMD g_fpSd_Exist_CB = NULL; SF_CALLBACK_SD_CMD g_fpSd_Exist_CB = NULL;
static int formatSD = CMD_FORMAT_SD_ERR; static int formatSD = CMD_FORMAT_SD_ERR;

View File

@ -21,6 +21,7 @@
#if (HUNTING_CAMERA_MODEL == ENABLE) #if (HUNTING_CAMERA_MODEL == ENABLE)
#include "IOCfg.h" #include "IOCfg.h"
#include "sf_sd_common.h"
#define GPIO_CARD_INSERT_LEVEL (FALSE) // low active #define GPIO_CARD_INSERT_LEVEL (FALSE) // low active
#define MAX_OPENED_FILE_NUM 10 #define MAX_OPENED_FILE_NUM 10

View File

@ -38,7 +38,7 @@
#include "UIAppPhoto_Param.h" #include "UIAppPhoto_Param.h"
#include "sys_fwload.h" #include "sys_fwload.h"
#include "../lfqueue/lfqueue.h" #include "../lfqueue/lfqueue.h"
#include "sf_sd_common.h"
#include <sys_linuxboot.h> #include <sys_linuxboot.h>
#include <libfdt.h> #include <libfdt.h>

View File

@ -41,6 +41,8 @@
#if HUNTING_CAMERA_MCU == ENABLE #if HUNTING_CAMERA_MCU == ENABLE
#include <sf_mcu.h> #include <sf_mcu.h>
#include "sf_led.h" #include "sf_led.h"
#include "sf_sd_common.h"
#endif #endif
#if POWERON_FAST_SLICE_ENC == ENABLE #if POWERON_FAST_SLICE_ENC == ENABLE
@ -884,7 +886,7 @@ void PhotoFast_FileNaming_SetSortBySN(CHAR *pDelimStr, UINT32 nDelimCount, UINT3
INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* Path) INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* Path)
{ {
FST_FILE fp; FST_FILE fp;
INT32 rt; INT32 rt = 0;
UINT32 Length; UINT32 Length;
CHAR FilePath[NMC_TOTALFILEPATH_MAX_LEN]; CHAR FilePath[NMC_TOTALFILEPATH_MAX_LEN];

View File

@ -20,6 +20,8 @@
#ifndef _SF_SD_COMM_H_ #ifndef _SF_SD_COMM_H_
#define _SF_SD_COMM_H_ #define _SF_SD_COMM_H_
#define MMC_DEV_MAX_NUM (2)
typedef enum typedef enum
{ {
MMC_DEV_SD = 0, MMC_DEV_SD = 0,
@ -63,4 +65,6 @@ typedef struct
//MMC_DEV_LOOP_STATE loop_state; //MMC_DEV_LOOP_STATE loop_state;
}SF_RTOS_ST_MMC_DEV; }SF_RTOS_ST_MMC_DEV;
int sf_rtos_mmc_dev_register(int devid, int mounted_state);
MMC_DEV_TYPE sf_rtos_mmc_check_workable_dev(void);
#endif #endif

View File

@ -43,11 +43,15 @@
//#include <io/gpio.h> //#include <io/gpio.h>
#include "UIInfo/UIInfo.h" #include "UIInfo/UIInfo.h"
#include <FileSysTsk.h> #include <FileSysTsk.h>
#include "sf_sd_common.h"
static BOOL IsCardFull = FALSE; static BOOL IsCardFull = FALSE;
SF_CALLBACK_SD_CMD g_fpSd_Exist_CB = NULL; SF_CALLBACK_SD_CMD g_fpSd_Exist_CB = NULL;
extern BOOL DrvCARD_DetStrgCard(void); extern BOOL DrvCARD_DetStrgCard(void);
static SF_RTOS_ST_MMC_DEV sf_mmc_dev[MMC_DEV_MAX_NUM] = {0};
BOOL sf_is_card_full(void) BOOL sf_is_card_full(void)
{ {
//printf("[%s]:%d IsCardFull:%d\n", __FUNCTION__, __LINE__, IsCardFull); //printf("[%s]:%d IsCardFull:%d\n", __FUNCTION__, __LINE__, IsCardFull);
@ -172,6 +176,8 @@ int sf_rtos_mmc_dev_register(int devid, int mounted_state)
else{ else{
sf_mmc_dev[devid].space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH; sf_mmc_dev[devid].space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH;
} }
return 0;
} }
MMC_DEV_TYPE sf_rtos_mmc_check_workable_dev(void) MMC_DEV_TYPE sf_rtos_mmc_check_workable_dev(void)
@ -186,9 +192,9 @@ MMC_DEV_TYPE sf_rtos_mmc_check_workable_dev(void)
} }
else else
{ {
if(sf_mmc_dev[MMC_DEV_SD].loop_state == MMC_DEV_LOOP_STATE_ON) //if(sf_mmc_dev[MMC_DEV_SD].loop_state == MMC_DEV_LOOP_STATE_ON)
{ {
workable_dev = MMC_DEV_EMMC; //workable_dev = MMC_DEV_EMMC;
} }
} }
} }
@ -200,9 +206,9 @@ MMC_DEV_TYPE sf_rtos_mmc_check_workable_dev(void)
} }
else else
{ {
if(sf_mmc_dev[MMC_DEV_SD].loop_state == MMC_DEV_LOOP_STATE_ON) //if(sf_mmc_dev[MMC_DEV_SD].loop_state == MMC_DEV_LOOP_STATE_ON)
{ {
workable_dev = MMC_DEV_SD; //workable_dev = MMC_DEV_SD;
} }
} }
} }
@ -223,9 +229,9 @@ MMC_DEV_TYPE sf_rtos_mmc_check_workable_dev(void)
} }
else else
{ {
if(sf_mmc_dev[MMC_DEV_SD].loop_state == MMC_DEV_LOOP_STATE_ON) //if(sf_mmc_dev[MMC_DEV_SD].loop_state == MMC_DEV_LOOP_STATE_ON)
{ {
workable_dev = MMC_DEV_EMMC; //workable_dev = MMC_DEV_EMMC;
} }
} }
} }