合入原厂Linux和Rtos下EMMC最新改动和存储设备切换逻辑

This commit is contained in:
sober.song 2023-12-26 21:16:40 +08:00
parent b18d94f150
commit 8bbe9651b2
19 changed files with 1110 additions and 433 deletions

View File

@ -118,6 +118,7 @@ SRC = \
./SrcCode/System/SysAudio_Exe.c \ ./SrcCode/System/SysAudio_Exe.c \
./SrcCode/System/SysStrg_CB.c \ ./SrcCode/System/SysStrg_CB.c \
./SrcCode/System/SysStrg_Exe.c \ ./SrcCode/System/SysStrg_Exe.c \
./SrcCode/System/SF_SysStrgMng.c \
./SrcCode/System/SysSensor_Exe.c \ ./SrcCode/System/SysSensor_Exe.c \
./SrcCode/System/SysFW_Upgrade_Strg_Obj.c \ ./SrcCode/System/SysFW_Upgrade_Strg_Obj.c \
./SrcCode/System/SysFW_Upgrade.c \ ./SrcCode/System/SysFW_Upgrade.c \

View File

@ -0,0 +1,320 @@
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/vfs.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <ctype.h>
#include <dirent.h>
#include <memory.h>
#include "DCF.h"
#include "sf_type.h"
#include "sf_log.h"
#include "SF_SysStrgMng.h"
#include <sf_param_common.h>
#include <sf_param_struct.h>
#include <FileSysTsk.h>
typedef struct
{
int event;
int dev_id;
int mounted_status;
}STRG_CB_PARAM;
static SF_ST_MMC_DEV *sf_mmc_dev[MMC_DEV_MAX_NUM] = {NULL};
void SF_StrgInit(void)
{
for(int i = 0; i < MMC_DEV_MAX_NUM; i++)
{
sf_mmc_dev[i] = (SF_ST_MMC_DEV *)malloc(sizeof(SF_ST_MMC_DEV));
if(sf_mmc_dev[i] == NULL) {
// 处理内存分配失败的情况
}
sf_mmc_dev[i]->dcf_handle = -1;
sf_mmc_dev[i]->node = MMC_DEV_NODE_STATE_NO;
sf_mmc_dev[i]->moumted_state = MMC_DEV_MOUNT_STATE_NO;
sf_mmc_dev[i]->space_state = MMC_DEV_SPACE_STATE_NO;
sf_mmc_dev[i]->loop_state = MMC_DEV_LOOP_STATE_NO;
}
}
void SF_StrgUnInit(void)
{
for(int i = 0; i < MMC_DEV_MAX_NUM; i++)
{
if(sf_mmc_dev[i] != NULL) {
free(sf_mmc_dev[i]);
sf_mmc_dev[i] = NULL;
}
}
}
void SF_StrgSetDcfHandle(UINT32 strg_id, UINT32 handle)
{
sf_mmc_dev[strg_id]->dcf_handle = handle;
}
static UINT32 SF_StrgSpaceCheckFull(MMC_DEV_TYPE mmc_dev)
{
UINT64 diskFree = 0;
UINT32 ret = 0;
/*check disk free size*/
if(mmc_dev == MMC_DEV_SD)
{
diskFree = FileSys_GetDiskInfo(FST_INFO_FREE_SPACE);
}
else
{
diskFree = FileSys_GetEMMCDiskInfo(FST_INFO_FREE_SPACE);
}
diskFree = diskFree/1024/1024;
if(diskFree < 30) /* 30MB */
{
ret = TRUE;
}
else
{
ret = FALSE;
}
MLOGD("[%s:%d]sd card diskFree=%lluM\n", __FUNCTION__, __LINE__, diskFree);
return ret;
}
static int SF_StrgNodeCheck(const char *devName)
{
int tryCnt = 200;
int ret = access(devName, F_OK);
while (ret != 0 && tryCnt--)
{
usleep(10*1000);
ret = access(devName, F_OK);
}
if (tryCnt < 0)
{
printf("no found %s\n", devName);
return -1;
}
return ret;
}
void SF_StrgRegister(SF_MESSAGE_BUF_S *pMessageBuf)
{
MLOGD("[dev_id:%d, evt:%d]\n",pMessageBuf->arg2, pMessageBuf->arg1);
UIMenuStoreInfo *puiPara = sf_ui_para_get();
if(pMessageBuf->arg2 == MMC_DEV_SD)
{
if(pMessageBuf->arg1 == CMD_SD_STRG_CB_INSERTED)
{
sf_mmc_dev[MMC_DEV_SD]->node = MMC_DEV_NODE_STATE_EXIST;
}
else if(pMessageBuf->arg1 == CMD_SD_STRG_CB_REMOVED)
{
sf_mmc_dev[MMC_DEV_SD]->node = MMC_DEV_NODE_STATE_NO_EXIST;
}
else if(pMessageBuf->arg1 == CMD_SD_STRG_CB_MOUNT_FINISH)
{
sf_mmc_dev[MMC_DEV_SD]->moumted_state = MMC_DEV_MOUNT_STATE_MOUNTED;
}
else if(pMessageBuf->arg1 == CMD_SD_STRG_CB_UNMOUNT_FINISH)
{
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)
{
sf_mmc_dev[MMC_DEV_SD]->loop_state = MMC_DEV_LOOP_STATE_ON;
}
else if(puiPara->SdLoopSwitch == 0)
{
sf_mmc_dev[MMC_DEV_SD]->loop_state = MMC_DEV_LOOP_STATE_OFF;
}
}
else if(pMessageBuf->arg2 == MMC_DEV_EMMC)
{
if(SF_StrgNodeCheck(EMMC_DEVICE_NAME) == 0)
{
sf_mmc_dev[MMC_DEV_EMMC]->node = MMC_DEV_NODE_STATE_EXIST;
}
else
{
sf_mmc_dev[MMC_DEV_EMMC]->node = MMC_DEV_NODE_STATE_NO_EXIST;
}
if(pMessageBuf->arg1 == CMD_SD_STRG_CB_MOUNT_FINISH)
{
sf_mmc_dev[MMC_DEV_EMMC]->moumted_state = MMC_DEV_MOUNT_STATE_MOUNTED;
}
else if(pMessageBuf->arg1 == CMD_SD_STRG_CB_UNMOUNT_FINISH)
{
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)
{
sf_mmc_dev[MMC_DEV_EMMC]->loop_state = MMC_DEV_LOOP_STATE_ON;
}
else if(puiPara->SdLoopSwitch == 0)
{
sf_mmc_dev[MMC_DEV_EMMC]->loop_state = MMC_DEV_LOOP_STATE_OFF;
}
}
for(int i = 0; i < 2; i++)
{
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]->space_state, sf_mmc_dev[i]->loop_state);
}
}
SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void)
{
MMC_DEV_TYPE workable_dev = MMC_DEV_NO;
MLOGD("sf mmc check workable dev start!!!\n");
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))
{
workable_dev = MMC_DEV_NO;
}
else if(sf_mmc_dev[MMC_DEV_EMMC]->node == MMC_DEV_NODE_STATE_NO_EXIST) //EMMC节点不存在
{
if(sf_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_MOUNTED)
{
if(sf_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_SD;
}
else if(sf_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_NO_ENOUGH)
{
if(sf_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON)
{
workable_dev = MMC_DEV_SD;
}
}
}
}
else if(sf_mmc_dev[MMC_DEV_SD]->node == MMC_DEV_NODE_STATE_NO_EXIST) //SD节点不存在
{
if(sf_mmc_dev[MMC_DEV_EMMC]->moumted_state == MMC_DEV_MOUNT_STATE_MOUNTED)
{
if(sf_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_EMMC;
}
else if(sf_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_NO_ENOUGH)
{
if(sf_mmc_dev[MMC_DEV_EMMC]->loop_state == MMC_DEV_LOOP_STATE_ON)
{
workable_dev = MMC_DEV_EMMC;
}
}
}
}
else //MMC节点都存在
{
if((sf_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) &&
(sf_mmc_dev[MMC_DEV_EMMC]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED))
{
workable_dev = MMC_DEV_NO;
}
else if(sf_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED)
{
if(sf_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_EMMC;
}
else
{
if(sf_mmc_dev[MMC_DEV_EMMC]->loop_state == MMC_DEV_LOOP_STATE_ON)
{
workable_dev = MMC_DEV_EMMC;
}
}
}
else if(sf_mmc_dev[MMC_DEV_EMMC]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED)
{
if(sf_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_SD;
}
else
{
if(sf_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON)
{
workable_dev = MMC_DEV_SD;
}
}
}
else
{
if(sf_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH &&
sf_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_EMMC;
}
else if(sf_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_EMMC;
}
else if(sf_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_SD;
}
else
{
if(sf_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON)
{
workable_dev = MMC_DEV_SD;
}
}
}
}
MLOGD("sf mmc check workable dev end, dev_id = %d!!!\n", workable_dev);
for(int i = 0; i < 2; i++)
{
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]->space_state, sf_mmc_dev[i]->loop_state);
}
if(workable_dev != MMC_DEV_NO)
{
MLOGD("dcf_handle = %d\n", sf_mmc_dev[workable_dev]->dcf_handle);
return sf_mmc_dev[workable_dev];
}
else
return NULL;
}

View File

@ -17,8 +17,8 @@
* Ver: 1.0.0 2023.12.23 * Ver: 1.0.0 2023.12.23
* Description: Creat * Description: Creat
**************************************************************************/ **************************************************************************/
#ifndef _SF_MMC_DEV_H_ #ifndef _SF_SYS_STRG_MNG_H_
#define _SF_MMC_DEV_H_ #define _SF_SYS_STRG_MNG_H_
#include "sf_type.h" #include "sf_type.h"
#include "sf_param_common.h" #include "sf_param_common.h"
@ -74,9 +74,16 @@ typedef struct
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; MMC_DEV_LOOP_STATE loop_state;
int dcf_handle;
}SF_ST_MMC_DEV; }SF_ST_MMC_DEV;
MMC_DEV_TYPE sf_mmc_check_workable_dev(void);
#endif void SF_StrgInit(void);
void SF_StrgUnInit(void);
void SF_StrgSetDcfHandle(UINT32 strg_id, UINT32 handle);
void SF_StrgRegister(SF_MESSAGE_BUF_S *pMessageBuf);
SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void);
#endif //_SF_SYS_STRG_MNG_H_

View File

@ -42,6 +42,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_SysStrgMng.h"
#endif #endif
void Strg_CB(UINT32 event, UINT32 param1, UINT32 param2); void Strg_CB(UINT32 event, UINT32 param1, UINT32 param2);
@ -52,7 +53,8 @@ void Strg_CB(UINT32 event, UINT32 param1, UINT32 param2)
#if HUNTING_CAMERA_MCU == ENABLE #if HUNTING_CAMERA_MCU == ENABLE
SF_MESSAGE_BUF_S stMessageBuf = {0}; SF_MESSAGE_BUF_S stMessageBuf = {0};
#endif #endif
DBG_IND("Strg_CB: strg_id = %d, status = %d\n", param1, param2);
switch (event) { switch (event) {
// part-1 // part-1
case SYSTEM_CB_CONFIG: case SYSTEM_CB_CONFIG:
@ -175,6 +177,8 @@ void Strg_CB(UINT32 event, UINT32 param1, UINT32 param2)
stMessageBuf.arg3 = param2; stMessageBuf.arg3 = param2;
stMessageBuf.cmdId = CMD_SD; stMessageBuf.cmdId = CMD_SD;
sf_com_message_send_to_app(&stMessageBuf); sf_com_message_send_to_app(&stMessageBuf);
printf("strg_cb send MOUNT! dev_id = %d\n", param1);
SF_StrgRegister(&stMessageBuf);
} }
#endif #endif

View File

@ -83,6 +83,8 @@
#include "userlog.h" #include "userlog.h"
#endif #endif
//#include "wdt.h" //#include "wdt.h"
#include "SF_SysStrgMng.h"
#if defined(_EMBMEM_SPI_NOR_) #if defined(_EMBMEM_SPI_NOR_)
#define MAX_BLK_PER_SEC 128 #define MAX_BLK_PER_SEC 128
@ -329,6 +331,7 @@ static UINT32 gLogFile_Buff2_Size = sizeof(gLogFile_Buff2);
void System_OnStrgInit_FS(void) void System_OnStrgInit_FS(void)
{ {
CHAR mount_path[KFS_LONGNAME_PATH_MAX_LENG] = {0}; CHAR mount_path[KFS_LONGNAME_PATH_MAX_LENG] = {0};
TM_BOOT_BEGIN("sdio", "init_fs"); TM_BOOT_BEGIN("sdio", "init_fs");
{ {
MEM_RANGE Pool; MEM_RANGE Pool;
@ -346,6 +349,8 @@ void System_OnStrgInit_FS(void)
#endif #endif
} }
SF_StrgInit();// 初始化sf_mmc设备Obj
#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
@ -525,6 +530,8 @@ void System_OnStrgExit_FS(void)
#endif #endif
#endif #endif
SF_StrgUnInit();// 反初始化sf_mmc设备Obj
// unmount file system // unmount file system
GxStrg_CloseDevice(0); GxStrg_CloseDevice(0);
#if (FS_MULTI_STRG_FUNC) #if (FS_MULTI_STRG_FUNC)
@ -733,7 +740,6 @@ INT32 System_Set_Storage_Act_Drive(char drive)
{ {
DCF_HANDLE act_handle = -1; DCF_HANDLE act_handle = -1;
for(int i=0 ; i<STRG_NUM ; i++) for(int i=0 ; i<STRG_NUM ; i++)
{ {
if(drive == g_strg_mapping_table[i].drive){ if(drive == g_strg_mapping_table[i].drive){
@ -748,17 +754,20 @@ INT32 System_Set_Storage_Act_Drive(char drive)
} }
g_dcf_hdl_act = act_handle; g_dcf_hdl_act = act_handle;
DBG_WRN("DCF_ACT_HANDLE, %d\n", act_handle);
return E_OK; return E_OK;
} }
DCF_HANDLE System_Get_DCF_Handle(void) DCF_HANDLE System_Get_DCF_Handle(void)
{ {
if(g_dcf_hdl_act == -1){ SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev();
DBG_WRN("g_dcf_hdl_act is not set\n"); if(mmc_dev->dcf_handle < 0)
{
DBG_ERR("No MMC_Dev Can use!\n");
return -1;
} }
DBG_WRN("DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
return g_dcf_hdl_act; return mmc_dev->dcf_handle;
} }
CHAR System_Get_DCF_Disk_Drive(DCF_HANDLE handle) CHAR System_Get_DCF_Disk_Drive(DCF_HANDLE handle)
@ -798,6 +807,8 @@ INT32 System_OnStrgInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
char *pMountPath = "/mnt/sd"; char *pMountPath = "/mnt/sd";
#endif #endif
DBG_DUMP("System_OnStrgInsert: strg_id = %d\n", strg_id);
if (m_BootState_Drive[strg_id] != BOOT_CARD_STATE_UNKNOWN) { if (m_BootState_Drive[strg_id] != BOOT_CARD_STATE_UNKNOWN) {
if (strg_id == 0) { if (strg_id == 0) {
#if(IPCAM_FUNC==DISABLE && SDHOTPLUG_FUNCTION == DISABLE) #if(IPCAM_FUNC==DISABLE && SDHOTPLUG_FUNCTION == DISABLE)
@ -843,7 +854,8 @@ INT32 System_OnStrgInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
return NVTEVT_CONSUME; return NVTEVT_CONSUME;
} }
} }
else if(strg_id == STRG_ID_EMMC){ else if(strg_id == STRG_ID_EMMC)
{
DX_HANDLE pStrgDev = (DX_HANDLE)emmc_getStorageObject(STRG_OBJ_FAT1); DX_HANDLE pStrgDev = (DX_HANDLE)emmc_getStorageObject(STRG_OBJ_FAT1);
if (GxStrg_OpenDevice(strg_id, pStrgDev) != TRUE) { if (GxStrg_OpenDevice(strg_id, pStrgDev) != TRUE) {
char *pDxName = "unknown"; char *pDxName = "unknown";
@ -894,18 +906,24 @@ INT32 System_OnStrgInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
* init dcf act handle with sd card * init dcf act handle with sd card
*****************************************************************/ *****************************************************************/
if(strg_id == STRG_ID_SD){ if(strg_id == STRG_ID_SD){
DBG_WRN("sd act\n");
System_Set_Storage_Act_Drive(g_strg_mapping_table[strg_id].drive); System_Set_Storage_Act_Drive(g_strg_mapping_table[strg_id].drive);
} }
else if(strg_id == STRG_ID_EMMC){
DBG_WRN("emmc act\n");
System_Set_Storage_Act_Drive(g_strg_mapping_table[strg_id].drive);
}
SF_StrgSetDcfHandle(strg_id, g_strg_mapping_table[strg_id].dcf_hdl); //获取mmc设备dcf_handle
} }
#endif #endif
if(strg_id == STRG_ID_SD){ if(strg_id == STRG_ID_SD){
if (GxStrg_GetDeviceCtrl(strg_id, CARD_READONLY)) { if (GxStrg_GetDeviceCtrl(strg_id, CARD_READONLY)) {
System_SetState(SYS_STATE_CARD, CARD_LOCKED); System_SetState(SYS_STATE_CARD, CARD_LOCKED);
DBG_IND("Card Locked\r\n"); DBG_WRN("Card Locked\r\n");
} else { } else {
System_SetState(SYS_STATE_CARD, CARD_INSERTED); System_SetState(SYS_STATE_CARD, CARD_INSERTED);
DBG_IND("Card inserted\r\n"); DBG_WRN("Card inserted\r\n");
} }
} }
/************************************************ /************************************************
@ -1033,6 +1051,7 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
////////////////////////////////////////////////// //////////////////////////////////////////////////
#endif #endif
//DBG_IND("System_OnStrgAttach: strg_id = %d\n", strg_id);
if (m_GxStrgType == FST_FS_TYPE_LINUX) { if (m_GxStrgType == FST_FS_TYPE_LINUX) {
//Do Nothing //Do Nothing
} else { //m_GxStrgType == FST_FS_TYPE_UITRON } else { //m_GxStrgType == FST_FS_TYPE_UITRON
@ -1094,10 +1113,12 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
if((CMD_FORMAT_SD_STA != sf_get_card_statu())){ if((CMD_FORMAT_SD_STA != sf_get_card_statu())){
stMessageBuf.arg1 = STRG_CB_MOUNT_FINISH; stMessageBuf.arg1 = STRG_CB_MOUNT_FINISH;
stMessageBuf.arg2 = result; stMessageBuf.arg2 = strg_id;//result;
stMessageBuf.arg3 = FST_STA_OK; stMessageBuf.arg3 = FST_STA_OK;
stMessageBuf.cmdId = CMD_SD; stMessageBuf.cmdId = CMD_SD;
sf_com_message_send_to_app(&stMessageBuf); sf_com_message_send_to_app(&stMessageBuf);
SF_StrgRegister(&stMessageBuf);
printf("System_OnStrgAttach send MOUNT! dev_id = %d\n", strg_id);
Ux_PostEvent(NVTEVT_STRG_MOUNT_OK, 0); Ux_PostEvent(NVTEVT_STRG_MOUNT_OK, 0);
} }
#endif #endif
@ -1188,8 +1209,11 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
if((FS_DISK_ERROR == System_GetState(SYS_STATE_FS))){ if((FS_DISK_ERROR == System_GetState(SYS_STATE_FS))){
stMessageBuf.arg1 = CMD_SD_STRG_CB_UNMOUNT_FINISH; stMessageBuf.arg1 = CMD_SD_STRG_CB_UNMOUNT_FINISH;
stMessageBuf.arg2 = strg_id;
stMessageBuf.cmdId = CMD_SD; stMessageBuf.cmdId = CMD_SD;
sf_com_message_send_to_app(&stMessageBuf); sf_com_message_send_to_app(&stMessageBuf);
SF_StrgRegister(&stMessageBuf);
printf("System_OnStrgAttach send UNMOUNT! dev_id = %d\n", strg_id);
} }
#endif #endif
#if (POWERON_FAST_BOOT == ENABLE) #if (POWERON_FAST_BOOT == ENABLE)

View File

@ -37,6 +37,9 @@
#endif #endif
#include "vendor_videoout.h" #include "vendor_videoout.h"
#include "IOCfg.h" #include "IOCfg.h"
#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
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -1218,7 +1221,6 @@ 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)
{ {
#if USE_FILEDB #if USE_FILEDB
static struct tm CurDateTime = {0}; static struct tm CurDateTime = {0};
@ -1251,6 +1253,9 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
#elif USE_DCF #elif USE_DCF
UINT32 dcf_handle = (UINT32) System_Get_DCF_Handle(); UINT32 dcf_handle = (UINT32) System_Get_DCF_Handle();
DBG_DUMP("System_Get_DCF_Handle, dcf_handle: %d\n", dcf_handle);
UINT32 nextFolderID = 0, nextFileID = 0; UINT32 nextFolderID = 0, nextFileID = 0;
if (DCF_GetDBInfoEx(dcf_handle, DCF_INFO_IS_9999)) { if (DCF_GetDBInfoEx(dcf_handle, DCF_INFO_IS_9999)) {
@ -1260,7 +1265,7 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
DCF_GetNextIDEx(dcf_handle, &nextFolderID,&nextFileID); DCF_GetNextIDEx(dcf_handle, &nextFolderID,&nextFileID);
DCF_MakeObjPathEx(dcf_handle, nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName); DCF_MakeObjPathEx(dcf_handle, nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName);
DCF_AddDBfileEx(dcf_handle, pFileName); DCF_AddDBfileEx(dcf_handle, pFileName);
DBG_DUMP("%s added to DCF Path%lu\r\n", pFileName, dcf_handle); DBG_WRN("0000 %s added to DCF Path%lu\r\n", pFileName, dcf_handle);
#if HUNTING_CAMERA_MCU == ENABLE #if HUNTING_CAMERA_MCU == ENABLE
char tmp[NMC_TOTALFILEPATH_MAX_LEN] = {'\0'}; char tmp[NMC_TOTALFILEPATH_MAX_LEN] = {'\0'};
sprintf(tmp, "S%03d%04d.JPG", nextFolderID, nextFileID); sprintf(tmp, "S%03d%04d.JPG", nextFolderID, nextFileID);
@ -1279,8 +1284,6 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
snprintf(thumb_current_path_clone, sizeof(thumb_current_path_clone), "%s", pFileName); snprintf(thumb_current_path_clone, sizeof(thumb_current_path_clone), "%s", pFileName);
} }
#endif #endif
} }
#endif #endif
@ -1321,7 +1324,8 @@ static void MovieExe_RawEncodeFileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
#elif USE_DCF #elif USE_DCF
UINT32 nextFolderID = 0, nextFileID = 0; UINT32 nextFolderID = 0, nextFileID = 0;
UINT32 dcf_handle = (UINT32) System_Get_DCF_Handle();
UINT32 dcf_handle = (UINT32) System_Get_DCF_Handle();
if (DCF_GetDBInfoEx(dcf_handle, DCF_INFO_IS_9999)) { if (DCF_GetDBInfoEx(dcf_handle, DCF_INFO_IS_9999)) {
DBG_ERR("Exceed max dcf file!\r\n"); DBG_ERR("Exceed max dcf file!\r\n");
@ -1329,6 +1333,7 @@ static void MovieExe_RawEncodeFileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
} else { } else {
DCF_GetNextIDEx(dcf_handle, &nextFolderID,&nextFileID); DCF_GetNextIDEx(dcf_handle, &nextFolderID,&nextFileID);
DCF_MakeObjPathEx(dcf_handle, nextFolderID, nextFileID, DCF_FILE_TYPE_JPG, pFileName); DCF_MakeObjPathEx(dcf_handle, nextFolderID, nextFileID, DCF_FILE_TYPE_JPG, pFileName);
DBG_WRN("1111 %s added to DCF Path%lu\r\n", pFileName, dcf_handle);
} }
#endif #endif

View File

@ -782,7 +782,7 @@ void show_qr_picture_page(lv_obj_t* obj)
lv_obj_set_drag(QRImage, false); lv_obj_set_drag(QRImage, false);
lv_obj_set_pos(QRImage, 210, 141); lv_obj_set_pos(QRImage, 210, 141);
lv_obj_set_size(QRImage, 32, 32); lv_obj_set_size(QRImage, 32, 32);
lv_img_set_src(QRImage, &sf_qr_page); //lv_img_set_src(QRImage, &sf_qr_page);
if(NULL != qr){ if(NULL != qr){
lv_obj_set_hidden(qr, false); lv_obj_set_hidden(qr, false);

View File

@ -26,7 +26,7 @@ static int isSetting = 0;
//static TM_MENU *g_pOptionMenu = 0; //static TM_MENU *g_pOptionMenu = 0;
UINT16 PrevOption = 0; UINT16 PrevOption = 0;
UINT16 s_SelOption = 0; UINT16 s_SelOption = 100;
UINT16 OptionEN_Num = 0; UINT16 OptionEN_Num = 0;
UINT16 enableIndex[30] = {}; UINT16 enableIndex[30] = {};
@ -150,6 +150,7 @@ static int is_message_item(lv_obj_t* obj)
case IDM_OPERATING_TIME: case IDM_OPERATING_TIME:
break; break;
case IDM_FORMAT_SD: case IDM_FORMAT_SD:
break;
{ {
printf("[is_message_item]IDM_FORMAT_SD\n"); printf("[is_message_item]IDM_FORMAT_SD\n");
UIFlowMenuCommonConfirmAPI_Open(itemID); UIFlowMenuCommonConfirmAPI_Open(itemID);
@ -216,12 +217,13 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu)
UINT32 i; UINT32 i;
// UINT16 startIndex = 0; // UINT16 startIndex = 0;
UINT16 itemIndex = 0; UINT16 itemIndex = 0;
UINT16 itemIconId = 0;
#if 1 #if 1
UINT16 SelOption = 0; UINT16 SelOption = 0;
UINT32 Selindex = 0; UINT32 Selindex = 0;
BOOL ui_hidden = true; BOOL ui_hidden = true;
#endif #endif
UIMenuStoreInfo *puiPara = sf_ui_para_get();
pPage = &pMenu->pPages[pMenu->SelPage]; pPage = &pMenu->pPages[pMenu->SelPage];
pItem = &pPage->pItems[pPage->SelItem]; pItem = &pPage->pItems[pPage->SelItem];
#if 0 #if 0
@ -354,32 +356,459 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu)
lv_plugin_menu_set_item_hidden(menu_option, i, true); lv_plugin_menu_set_item_hidden(menu_option, i, true);
ui_hidden = true; ui_hidden = true;
}else{ }else{
itemIconId = pOption->IconId;
ui_hidden = true;
printf("\033[33m[LV_MenuCommonOption_UpdateContent] 3 \033[0m\n"); printf("\033[33m[LV_MenuCommonOption_UpdateContent] 3 \033[0m\n");
lv_plugin_menu_set_item_string_id(menu_option, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, pOption->TextId); lv_plugin_menu_set_item_string_id(menu_option, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, pOption->TextId);
lv_plugin_menu_set_item_img_id(menu_option, i, LV_PLUGIN_MENU_ITEM_STATE_DISABLED, pOption->IconId);
lv_plugin_menu_set_item_hidden(menu_option, i, false); printf("[LV_MenuCommonOption_UpdateContent]s_SelOption: %d\n", s_SelOption);
ui_hidden = true; if (IDM_FORMAT_SD == pItem->ItemId) {
if(enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){ if (0 == SelOption && i == 0) {
printf("\033[33m[LV_MenuCommonOption_UpdateContent] 4 %d %d \033[0m\n", i, Selindex); itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√
s_SelOption = i + (Selindex * OPTION_PAGE_NUM); lv_obj_set_pos(image_option1_scr_uiflowmenucommonoption, 272, 0);
lv_plugin_menu_select_item(menu_option, i); ui_hidden = false;
ui_hidden = false; } else if (1 == SelOption && i == 1) {
} itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√
} lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 272, 0);
ui_hidden = false;
} else if (0 == SelOption && i == 1) {
itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT1;//>
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0);
ui_hidden = false;
} else if (1 == SelOption && i == 0) {
itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT1;//>
lv_obj_set_pos(image_option1_scr_uiflowmenucommonoption, 288, 0);
ui_hidden = false;
}
} else if (s_SelOption == 100){//first init page add select icon
if (enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption)
{
s_SelOption = i + (Selindex * OPTION_PAGE_NUM);
switch (pItem->ItemId) {
case IDM_DELAY:{}
case IDM_OPERATING_TIME:{}
case IDM_DATE_AND_TIME:{}
case IDM_MAX_NUM_DAY:{}
case IDM_PASSWORD:{}
case IDM_CAMERA_NAME:
{
if (i == 1)
{
printf("[LV_MenuCommonOption_UpdateContent]first init black > √\n");
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 259, 0);
}
else if (i==0){
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√
lv_obj_set_pos(image_option1_scr_uiflowmenucommonoption, 272, 0);
}
else{
printf("[LV_MenuCommonOption_UpdateContent]first init √\n");
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 272, 0);
}
break;
}
case IDM_SEND_TYPE:{
if(i == 1)
{
printf("[LV_MenuCommonOption_UpdateContent]first init IDM_SEND_TYPE black > √\n");
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 259, 0);
}
else if (i == 0){
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√
lv_obj_set_pos(image_option1_scr_uiflowmenucommonoption, 272, 0);
}
else if (i == 2)
{
printf("[LV_MenuCommonOption_UpdateContent]first init IDM_SEND_TYPE black > √\n");
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √
lv_obj_set_pos(image_option3_scr_uiflowmenucommonoption, 259, 0);
}
else if (i == 3)
{
printf("[LV_MenuCommonOption_UpdateContent]first init IDM_SEND_TYPE black > √\n");
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √
lv_obj_set_pos(image_option4_scr_uiflowmenucommonoption, 259, 0);
}
break;
}
default:
{
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√
if(i == 1)
{
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 272, 0);
}
else if (i == 0){
lv_obj_set_pos(image_option1_scr_uiflowmenucommonoption, 272, 0);
}
else if (i == 2)
{
lv_obj_set_pos(image_option3_scr_uiflowmenucommonoption, 272, 0);
}
else if (i == 3)
{
lv_obj_set_pos(image_option4_scr_uiflowmenucommonoption, 272, 0);
}
}
}
ui_hidden = false;
}
else if (enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption && i == 1)
{
printf("[LV_MenuCommonOption_UpdateContent]first init white >\n");
switch (pItem->ItemId) {
case IDM_DELAY:{}
case IDM_OPERATING_TIME:{}
case IDM_DATE_AND_TIME:{}
case IDM_MAX_NUM_DAY:{}
case IDM_PASSWORD:{}
case IDM_SEND_TYPE:{}
case IDM_CAMERA_NAME:
{
itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT1;//white >
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0);
ui_hidden = false;
break;
}
}
DBG_DUMP("%s ui_hidden=%d\r\n", __func__,ui_hidden); }
if(i==0){ else if(enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption && i > 1)
{
if (pItem->ItemId == IDM_SEND_TYPE)
{
printf("[LV_MenuCommonOption_UpdateContent]first init IDM_SEND_TYPE white >\n");
itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT1;//white >
if (i == 2)
{
lv_obj_set_pos(image_option3_scr_uiflowmenucommonoption, 288, 0);
}
else if (i == 3)
{
lv_obj_set_pos(image_option4_scr_uiflowmenucommonoption, 288, 0);
}
ui_hidden = false;
}
}
if (pItem->ItemId == IDM_BATTERY_TYPE && s_SelOption < 3)
{
if (puiPara->BatteryType == SF_BATT_LI_PACK){
printf("[LV_MenuCommonOption_UpdateContent]first init change battery to lith\n");
if (i < 1)
{
lv_plugin_menu_set_item_state(menu_option, 0, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
if (i < 2)
{
lv_plugin_menu_set_item_state(menu_option, 1, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
if (i < 3)
{
lv_plugin_menu_set_item_state(menu_option, 2, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
lv_obj_set_state(label_option4_scr_uiflowmenucommonoption, LV_STATE_DEFAULT);
ui_hidden = true;
lv_plugin_menu_select_item(menu_option, 3);
s_SelOption = 3;
SelOption = 3;
SysSetFlag(pItem->SysFlag,3);
}
else
{
printf("[LV_MenuCommonOption_UpdateContent]first init is not lith\n");
lv_plugin_menu_set_item_state(menu_option, 3, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
}
else if (pItem->ItemId == IDM_BATTERY_TYPE && s_SelOption == 3)
{
if (puiPara->BatteryType == SF_BATT_LI_PACK)
{
printf("[LV_MenuCommonOption_UpdateContent]first init and is lith\n");
if (i < 1)
{
lv_plugin_menu_set_item_state(menu_option, 0, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
if (i < 2)
{
lv_plugin_menu_set_item_state(menu_option, 1, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
if (i < 3)
{
lv_plugin_menu_set_item_state(menu_option, 2, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
lv_obj_set_state(label_option4_scr_uiflowmenucommonoption, LV_STATE_DEFAULT);
}
else
{
printf("[LV_MenuCommonOption_UpdateContent]first init change battery\n");
lv_plugin_menu_set_item_state(menu_option, 3, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
ui_hidden = true;
lv_plugin_menu_select_item(menu_option, 0);
s_SelOption = 0;
SelOption = 0;
SysSetFlag(pItem->SysFlag,0);
lv_obj_set_hidden(image_option1_scr_uiflowmenucommonoption, true);
}
}
}
else{
if (pItem->ItemId == IDM_SEND_TYPE){
if (i == s_SelOption)
{
switch(i)
{
case 0:
{
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√
lv_obj_set_pos(image_option1_scr_uiflowmenucommonoption, 272, 0);
break;
}
case 1:
{
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 259, 0);
break;
}
case 2:
{
lv_obj_set_pos(image_option3_scr_uiflowmenucommonoption, 259, 0);
break;
}
case 3:
{
lv_obj_set_pos(image_option4_scr_uiflowmenucommonoption, 259, 0);
break;
}
default:
{
break;
}
}
if (i >= 1 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption)
{
printf("[LV_MenuCommonOption_UpdateContent]IDM_SEND_TYPE add black √ > \n");
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √
}
else if (i >= 1 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption)
{
printf("[LV_MenuCommonOption_UpdateContent]IDM_SEND_TYPE add white √ > \n");
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT1;//white > √
}
ui_hidden = false;
}
else{
switch(i)
{
case 0:
{
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√
lv_obj_set_pos(image_option1_scr_uiflowmenucommonoption, 272, 0);
break;
}
case 1:
{
printf("[LV_MenuCommonOption_UpdateContent]set 1 option \n");
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0);
break;
}
case 2:
{
printf("[LV_MenuCommonOption_UpdateContent]set 2 option \n");
lv_obj_set_pos(image_option3_scr_uiflowmenucommonoption, 288, 0);
break;
}
case 3:
{
printf("[LV_MenuCommonOption_UpdateContent]set 3 option \n");
lv_obj_set_pos(image_option4_scr_uiflowmenucommonoption, 288, 0);
break;
}
default:
{
break;
}
}
if (i >= 1 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption)
{
printf("[LV_MenuCommonOption_UpdateContent]IDM_SEND_TYPE add black > \n");
itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT2;//black >
ui_hidden = false;
}
else if (i >= 1 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption)
{
printf("[LV_MenuCommonOption_UpdateContent]IDM_SEND_TYPE add white > \n");
itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT1;//white >
ui_hidden = false;
}
}
}
else if (i == 1)
{
//printf("[LV_MenuCommonOption_UpdateContent] add > icon\n");
switch (pItem->ItemId) {
case IDM_DELAY:{}
case IDM_OPERATING_TIME:{}
case IDM_DATE_AND_TIME:{}
case IDM_MAX_NUM_DAY:{}
case IDM_PASSWORD:{}
case IDM_CAMERA_NAME:
{
if (s_SelOption == 0 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){
printf("[LV_MenuCommonOption_UpdateContent] add black > \n");
itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT2;//black >
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0);
}
else if (s_SelOption == 0 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption){
printf("[LV_MenuCommonOption_UpdateContent] add white > \n");
itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT1;//white >
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0);
}
else if (s_SelOption == 1 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){
printf("[LV_MenuCommonOption_UpdateContent] add black √ > \n");
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 259, 0);
}
else{
printf("[LV_MenuCommonOption_UpdateContent] add white √ > \n");
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT1;//white > √
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 259, 0);
}
ui_hidden = false;
break;
}
default:
{
printf("[LV_MenuCommonOption_UpdateContent] add √ \n");
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√
lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 272, 0);
if (s_SelOption == 1)
{
ui_hidden = false;
}
break;
}
}
}
else if (i == s_SelOption)
{
itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√
if (i == 2)
{
lv_obj_set_pos(image_option3_scr_uiflowmenucommonoption, 272, 0);
}
else if (i == 3)
{
lv_obj_set_pos(image_option4_scr_uiflowmenucommonoption, 272, 0);
}
ui_hidden = false;
}
if (pItem->ItemId == IDM_BATTERY_TYPE && s_SelOption < 3)
{
if (puiPara->BatteryType == SF_BATT_LI_PACK){
if (i < 1)
{
lv_plugin_menu_set_item_state(menu_option, 0, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
if (i < 2)
{
lv_plugin_menu_set_item_state(menu_option, 1, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
if (i < 3)
{
lv_plugin_menu_set_item_state(menu_option, 2, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
lv_obj_set_state(label_option4_scr_uiflowmenucommonoption, LV_STATE_DEFAULT);
ui_hidden = true;
lv_plugin_menu_select_item(menu_option, 3);
s_SelOption = 3;
SelOption = 3;
SysSetFlag(pItem->SysFlag,3);
}
else
{
printf("[LV_MenuCommonOption_UpdateContent]is not lith\n");
lv_plugin_menu_set_item_state(menu_option, 3, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
}
else if (pItem->ItemId == IDM_BATTERY_TYPE && s_SelOption == 3)
{
if (puiPara->BatteryType == SF_BATT_LI_PACK)
{
printf("[LV_MenuCommonOption_UpdateContent]is lith\n");
if (i < 1)
{
lv_plugin_menu_set_item_state(menu_option, 0, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
if (i < 2)
{
lv_plugin_menu_set_item_state(menu_option, 1, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
if (i < 3)
{
lv_plugin_menu_set_item_state(menu_option, 2, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
lv_obj_set_state(label_option4_scr_uiflowmenucommonoption, LV_STATE_DEFAULT);
lv_plugin_menu_select_item(menu_option, 3);
}
else
{
printf("[LV_MenuCommonOption_UpdateContent]change battery\n");
lv_plugin_menu_set_item_state(menu_option, 3, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
ui_hidden = true;
lv_plugin_menu_select_item(menu_option, 0);
s_SelOption = 0;
SelOption = 0;
SysSetFlag(pItem->SysFlag,0);
lv_obj_set_hidden(image_option1_scr_uiflowmenucommonoption, true);
}
}
}
lv_plugin_menu_set_item_img_id(menu_option, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, itemIconId);
lv_plugin_menu_set_item_hidden(menu_option, i, false);
if (enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){
lv_plugin_menu_select_item(menu_option, i);
}
}
DBG_DUMP("%s ui_hidden %d=%d\r\n", __func__,i,ui_hidden);
if (i==0)
{
lv_obj_set_hidden(image_option1_scr_uiflowmenucommonoption, ui_hidden); lv_obj_set_hidden(image_option1_scr_uiflowmenucommonoption, ui_hidden);
}else if(i == 1){ }
else if (i == 1)
{
lv_obj_set_hidden(image_option2_scr_uiflowmenucommonoption, ui_hidden); lv_obj_set_hidden(image_option2_scr_uiflowmenucommonoption, ui_hidden);
}else if(i == 2){ }
else if (i == 2)
{
lv_obj_set_hidden(image_option3_scr_uiflowmenucommonoption, ui_hidden); lv_obj_set_hidden(image_option3_scr_uiflowmenucommonoption, ui_hidden);
}else if(i == 3){ }
else if (i == 3)
{
lv_obj_set_hidden(image_option4_scr_uiflowmenucommonoption, ui_hidden); lv_obj_set_hidden(image_option4_scr_uiflowmenucommonoption, ui_hidden);
}else if(i == 4){ }
else if (i == 4)
{
lv_obj_set_hidden(image_option5_scr_uiflowmenucommonoption, ui_hidden); lv_obj_set_hidden(image_option5_scr_uiflowmenucommonoption, ui_hidden);
} }
} }
#else #else
itemIndex = PAGE * (1 + (SelOption / PAGE)); itemIndex = PAGE * (1 + (SelOption / PAGE));
@ -428,6 +857,7 @@ static void LV_MenuOption_OnOpen(lv_obj_t* obj, TM_MENU *data)
TM_ITEM* pItem; TM_ITEM* pItem;
//TM_OPTION *pOption; //TM_OPTION *pOption;
UINT16 SelOption = 0; UINT16 SelOption = 0;
UIMenuStoreInfo *puiPara = sf_ui_para_get();
pPage = &pMenu->pPages[pMenu->SelPage]; pPage = &pMenu->pPages[pMenu->SelPage];
// pPage->SelItem = 0; // pPage->SelItem = 0;
@ -462,7 +892,18 @@ static void LV_MenuOption_OnOpen(lv_obj_t* obj, TM_MENU *data)
// lv_obj_set_hidden(container_main_menu_scr_uiflowmenucommonoption, true); // lv_obj_set_hidden(container_main_menu_scr_uiflowmenucommonoption, true);
// } // }
LV_MenuCommonOption_UpdateContent(pMenu); LV_MenuCommonOption_UpdateContent(pMenu);
if (pItem->ItemId == IDM_BATTERY_TYPE)
{
if(puiPara->BatteryType == SF_BATT_LI_PACK)
{
lv_plugin_menu_set_item_state(menu_option, 0, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
lv_plugin_menu_set_item_state(menu_option, 1, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
lv_plugin_menu_set_item_state(menu_option, 2, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
else{
lv_plugin_menu_set_item_state(menu_option, 3, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
}
lv_plugin_menu_select_item(menu_option, SelOption); lv_plugin_menu_select_item(menu_option, SelOption);
} }
@ -473,6 +914,7 @@ static void LV_MenuOption_OnNext(lv_obj_t* obj)
TM_PAGE *pPage; TM_PAGE *pPage;
TM_ITEM *pItem; TM_ITEM *pItem;
UINT16 SelOption = 0; UINT16 SelOption = 0;
UIMenuStoreInfo *puiPara = sf_ui_para_get();
pPage = &pMenu->pPages[pMenu->SelPage]; pPage = &pMenu->pPages[pMenu->SelPage];
pItem = &pPage->pItems[pPage->SelItem]; pItem = &pPage->pItems[pPage->SelItem];
@ -481,18 +923,40 @@ static void LV_MenuOption_OnNext(lv_obj_t* obj)
// DBG_DUMP("%s SelItem=%d\r\n", __func__,pPage->SelItem); // DBG_DUMP("%s SelItem=%d\r\n", __func__,pPage->SelItem);
// DBG_DUMP("%s Count=%d\r\n", __func__,pItem->Count); // DBG_DUMP("%s Count=%d\r\n", __func__,pItem->Count);
// DBG_DUMP("%s SelOption=%d\r\n", __func__,SelOption); // DBG_DUMP("%s SelOption=%d\r\n", __func__,SelOption);
SelOption++;
SelOption++;
if (pItem->ItemId == IDM_BATTERY_TYPE)
{
if(puiPara->BatteryType == SF_BATT_LI_PACK)
{
SelOption = 3;
SysSetFlag(pItem->SysFlag, SelOption);
lv_plugin_menu_set_item_state(menu_option, 0, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
lv_plugin_menu_set_item_state(menu_option, 1, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
lv_plugin_menu_set_item_state(menu_option, 2, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
else{
if (SelOption >= 3)
{
SelOption = 0;
}
SysSetFlag(pItem->SysFlag, SelOption);
LV_MenuCommonOption_UpdateContent(pMenu);
lv_plugin_menu_set_item_state(menu_option, 3, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
return;
}
if (SelOption >= pItem->Count){ if (SelOption >= pItem->Count){
// Close current UI Window now // Close current UI Window now
//SysSetFlag(pItem->SysFlag, PrevOption); //SysSetFlag(pItem->SysFlag, PrevOption);
//lv_plugin_scr_close(obj, NULL); //lv_plugin_scr_close(obj, NULL);
SelOption = 0; SelOption = 0;
SysSetFlag(pItem->SysFlag, SelOption); // lv_plugin_menu_select_item(menu_option, SelOption);
lv_plugin_menu_select_item(menu_option, SelOption);
}else{ }else{
SysSetFlag(pItem->SysFlag, SelOption); // lv_plugin_menu_select_next_item(menu_option);
lv_plugin_menu_select_next_item(menu_option);
} }
SysSetFlag(pItem->SysFlag, SelOption);
LV_MenuCommonOption_UpdateContent(pMenu);
// DBG_DUMP("%s flag=%d\r\n", __func__,SysGetFlag(pItem->SysFlag)); // DBG_DUMP("%s flag=%d\r\n", __func__,SysGetFlag(pItem->SysFlag));
} }
@ -502,23 +966,50 @@ static void LV_MenuOption_OnPrev(lv_obj_t* obj)
TM_PAGE *pPage; TM_PAGE *pPage;
TM_ITEM *pItem; TM_ITEM *pItem;
UINT16 SelOption = 0; UINT16 SelOption = 0;
UIMenuStoreInfo *puiPara = sf_ui_para_get();
pPage = &pMenu->pPages[pMenu->SelPage]; pPage = &pMenu->pPages[pMenu->SelPage];
pItem = &pPage->pItems[pPage->SelItem]; pItem = &pPage->pItems[pPage->SelItem];
SelOption = SysGetFlag(pItem->SysFlag); SelOption = SysGetFlag(pItem->SysFlag);
if (pItem->ItemId == IDM_BATTERY_TYPE)
{
if(puiPara->BatteryType == SF_BATT_LI_PACK)
{
SelOption = 3;
SysSetFlag(pItem->SysFlag, SelOption);
lv_plugin_menu_set_item_state(menu_option, 0, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
lv_plugin_menu_set_item_state(menu_option, 1, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
lv_plugin_menu_set_item_state(menu_option, 2, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
else{
if (SelOption == 0)
{
SelOption = (pItem->Count - 2);
}
else
{
SelOption--;
}
SysSetFlag(pItem->SysFlag, SelOption);
LV_MenuCommonOption_UpdateContent(pMenu);
lv_plugin_menu_set_item_state(menu_option, 3, LV_PLUGIN_MENU_ITEM_STATE_DISABLED);
}
return;
}
if (SelOption == 0) { if (SelOption == 0) {
// Close current UI Window now // Close current UI Window now
//SysSetFlag(pItem->SysFlag, PrevOption); //SysSetFlag(pItem->SysFlag, PrevOption);
//lv_plugin_scr_close(obj, NULL); //lv_plugin_scr_close(obj, NULL);
SelOption = (pItem->Count - 1); SelOption = (pItem->Count - 1);
SysSetFlag(pItem->SysFlag, SelOption); // lv_plugin_menu_select_item(menu_option, SelOption);
lv_plugin_menu_select_item(menu_option, SelOption);
} else { } else {
SelOption--; SelOption--;
SysSetFlag(pItem->SysFlag, SelOption); // lv_plugin_menu_select_prev_item(menu_option);
// LV_MenuCommonOption_UpdateContent(pMenu);
lv_plugin_menu_select_prev_item(menu_option);
} }
SysSetFlag(pItem->SysFlag, SelOption);
LV_MenuCommonOption_UpdateContent(pMenu);
// DBG_DUMP("%s flag=%d\r\n", __func__,SysGetFlag(pItem->SysFlag)); // DBG_DUMP("%s flag=%d\r\n", __func__,SysGetFlag(pItem->SysFlag));
} }
@ -602,13 +1093,15 @@ static void LV_MenuOption_OnSelected(lv_obj_t* obj)
pItem->ItemId == IDM_OPERATING_TIME || pItem->ItemId == IDM_OPERATING_TIME ||
pItem->ItemId == IDM_DATE_AND_TIME || pItem->ItemId == IDM_DATE_AND_TIME ||
pItem->ItemId == IDM_MAX_NUM_DAY || pItem->ItemId == IDM_MAX_NUM_DAY ||
pItem->ItemId == IDM_SEND_TYPE) pItem->ItemId == IDM_SEND_TYPE ||
pItem->ItemId == IDM_FORMAT_SD)
&& (pOption->TextId == IDS_CAMERA_NAME_ON || && (pOption->TextId == IDS_CAMERA_NAME_ON ||
pOption->TextId == IDS_DATE_AND_TIME_MANUAL || pOption->TextId == IDS_DATE_AND_TIME_MANUAL ||
pOption->TextId == IDS_SEND_TYPE_ONCE_DAY || pOption->TextId == IDS_SEND_TYPE_ONCE_DAY ||
pOption->TextId == IDS_SEND_TYPE_TWICE_DAY || pOption->TextId == IDS_SEND_TYPE_TWICE_DAY ||
pOption->TextId == IDS_SEND_TYPE_4_TIMES_DAY || pOption->TextId == IDS_SEND_TYPE_4_TIMES_DAY ||
pOption->TextId == IDS_MAX_NUM_DAY_NUMBER)) pOption->TextId == IDS_MAX_NUM_DAY_NUMBER ||
pItem->ItemId == IDM_FORMAT_SD))
{ {
lv_obj_set_hidden(container_main_menu_scr_uiflowmenucommonoption, true); lv_obj_set_hidden(container_main_menu_scr_uiflowmenucommonoption, true);
isSetting = 1; isSetting = 1;
@ -633,8 +1126,22 @@ static void LV_MenuOption_OnSelected(lv_obj_t* obj)
show_MaxNum_page(obj); show_MaxNum_page(obj);
break; break;
case IDM_SEND_TYPE: case IDM_SEND_TYPE:
show_send_time_page(obj, SelOption); show_send_time_page(obj, SelOption);
break; break;
case IDM_FORMAT_SD:
if (0 == SelOption)
{
printf("format emmc.\n");
//UIFlowMenuCommonConfirmAPI_Open(IDM_FORMAT_EMMC);
break;
}
if (1 == SelOption)
{
printf("format sd card.\n");
UIFlowMenuCommonConfirmAPI_Open(IDM_FORMAT_SD);
break;
}
break;
default: default:
break; break;
} }
@ -796,7 +1303,7 @@ static void CommondOptionCloseSencondPage(lv_obj_t* obj, uint32_t* key)
pPage = &pMenu->pPages[pMenu->SelPage]; pPage = &pMenu->pPages[pMenu->SelPage];
pItem = &pPage->pItems[pPage->SelItem]; pItem = &pPage->pItems[pPage->SelItem];
UINT16 itemID = pItem->ItemId; UINT16 itemID = pItem->ItemId;
printf("\033[33m[UIFlowMenuCommonOptionEventCallback]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key); printf("\033[33m[CommondOptionCloseSencondPage]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key);
/* handle key event */ /* handle key event */
switch(itemID) switch(itemID)
{ {
@ -860,6 +1367,7 @@ static void CommondOptionCloseSencondPage(lv_obj_t* obj, uint32_t* key)
} }
break; break;
case IDM_FORMAT_SD: case IDM_FORMAT_SD:
break;
case IDM_DATE_AND_TIME: case IDM_DATE_AND_TIME:
if(isSetting) if(isSetting)
{ {
@ -917,15 +1425,49 @@ static void CommondOptionKeyCallback(lv_obj_t* obj, uint32_t* key)
pPage = &pMenu->pPages[pMenu->SelPage]; pPage = &pMenu->pPages[pMenu->SelPage];
pItem = &pPage->pItems[pPage->SelItem]; pItem = &pPage->pItems[pPage->SelItem];
UINT16 itemID = pItem->ItemId; UINT16 itemID = pItem->ItemId;
printf("\033[33m[UIFlowMenuCommonOptionEventCallback]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key); printf("\033[33m[CommondOptionKeyCallback]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key);
/* handle key event */ /* handle key event */
switch(*key)
{
case LV_USER_KEY_NEXT:
case LV_USER_KEY_DOWN:
{
//printf("[CommondOptionKeyCallback]>>>DOWN\n");
break;
}
case LV_USER_KEY_PREV:
case LV_USER_KEY_UP:
{
//printf("[CommondOptionKeyCallback]>>>UP\n");
break;
}
case LV_KEY_LEFT:
{
//printf("[CommondOptionKeyCallback]>>>LEFT\n");
break;
}
case LV_KEY_RIGHT:
{
//printf("[CommondOptionKeyCallback]>>>RIGHT\n");
break;
}
case LV_KEY_ENTER:
{
//printf("[CommondOptionKeyCallback]>>>ENTER\n");
break;
}
}
switch(itemID) switch(itemID)
{ {
case IDM_NETWORK_SELECTION: case IDM_NETWORK_SELECTION:
Option_Network_Selection_Key(obj, *key); Option_Network_Selection_Key(obj, *key);
break; break;
case IDM_QR_PICTURE: case IDM_QR_PICTURE:
UIFlowMenuCommonOption_Key(obj, *key); //Option_qr_picture_Key(obj, *key);
break; break;
case IDM_PASSWORD: case IDM_PASSWORD:
if(isSetting) if(isSetting)
@ -981,6 +1523,8 @@ static void CommondOptionKeyCallback(lv_obj_t* obj, uint32_t* key)
} }
break; break;
case IDM_FORMAT_SD: case IDM_FORMAT_SD:
UIFlowMenuCommonOption_Key(obj, *key);
break;
case IDM_DATE_AND_TIME: case IDM_DATE_AND_TIME:
if(isSetting) if(isSetting)
{ {
@ -1054,6 +1598,7 @@ void UIFlowMenuCommonOptionEventCallback(lv_obj_t* obj, lv_event_t event)
uint32_t key = LV_KEY_ENTER; uint32_t key = LV_KEY_ENTER;
CommondOptionCloseSencondPage(obj, &key); CommondOptionCloseSencondPage(obj, &key);
isSetting = 0; isSetting = 0;
s_SelOption = 100;
UIFlowMenuCommonOption_ScrClose(obj); UIFlowMenuCommonOption_ScrClose(obj);
break; break;
} }

View File

@ -17,7 +17,7 @@
#define DBG_WRN(fmtstr, args...) printf("\033[33m%s(): \033[0m" fmtstr,__func__, ##args) #define DBG_WRN(fmtstr, args...) printf("\033[33m%s(): \033[0m" fmtstr,__func__, ##args)
#define DBG_ERR(fmtstr, args...) printf("\033[31m%s(): \033[0m" fmtstr,__func__, ##args) #define DBG_ERR(fmtstr, args...) printf("\033[31m%s(): \033[0m" fmtstr,__func__, ##args)
#if 1 #if 0
#define DBG_IND(fmtstr, args...) #define DBG_IND(fmtstr, args...)
#else #else
#define DBG_IND(fmtstr, args...) printf("%s(): " fmtstr, \ #define DBG_IND(fmtstr, args...) printf("%s(): " fmtstr, \

View File

@ -298,7 +298,6 @@ 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

@ -596,8 +596,6 @@ static SINT32 sf_app_process_cmd_SD(SF_MESSAGE_BUF_S *pMessageBuf)
SINT16 startup = sf_poweron_type_get(); SINT16 startup = sf_poweron_type_get();
MLOGD("[dev_id:%d,evt:%s]\n",pMessageBuf->arg2,app_process_SD_getstatusstring(pMessageBuf->arg1)); MLOGD("[dev_id:%d,evt:%s]\n",pMessageBuf->arg2,app_process_SD_getstatusstring(pMessageBuf->arg1));
sf_mmc_dev_register(pMessageBuf);
switch(pMessageBuf->arg1) switch(pMessageBuf->arg1)
{ {

View File

@ -1,299 +0,0 @@
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/vfs.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <ctype.h>
#include <dirent.h>
#include <memory.h>
#include "DCF.h"
#include "sf_type.h"
#include "sf_log.h"
#include "sf_fileMng.h"
#include "sf_storeMng.h"
#include "sf_mmc_dev.h"
#include <sf_param_common.h>
typedef struct
{
int event;
int dev_id;
int mounted_status;
}STRG_CB_PARAM;
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 = NULL;
//SF_COMM_CHECK_POINTER(pstoreattrs,SF_FAILURE);
SINT32 fd = -1;
UINT32 Isfull = 0;
fd = open(mountPath, O_RDONLY,0);
if(fd >= 0)
{
struct statfs diskInfo;
statfs(mountPath, &diskInfo);
if(diskInfo.f_bsize > 1024)
{
pstoreattrs->SDTotalSize = (diskInfo.f_blocks * (diskInfo.f_bsize >> 10)) >> 10 ; //blocks * 4096 / 1024 /1024 = MB
pstoreattrs->SDFree = (diskInfo.f_bavail * (diskInfo.f_bsize >> 10)) >> 10 ;
}
else
{
pstoreattrs->SDTotalSize = (diskInfo.f_blocks * diskInfo.f_bsize) >> 10 ; //blocks * 4096 / 1024 /1024 = MB
pstoreattrs->SDFree = (diskInfo.f_bavail * diskInfo.f_bsize) >> 10 ;
}
close(fd);
if(pstoreattrs->SDTotalSize > 0)
pstoreattrs->SDStatus = 0; //SD card SUCESS
else
pstoreattrs->SDStatus = 2; //SD card ERROR
}
else
{
pstoreattrs->SDStatus = 1; //SD card not insert
pstoreattrs->SDFree = 0;
pstoreattrs->SDTotalSize = 0;
return SF_FAILURE;
}
MLOGD("SDStatus = %d,SDFree = %d MB,SDTotalSize = %d MB\n", pstoreattrs->SDStatus, pstoreattrs->SDFree,pstoreattrs->SDTotalSize);
if(pstoreattrs->SDStatus != 0)
return pstoreattrs->SDStatus;
Isfull = (pstoreattrs->SDFree <= SD_WARNING_SPACE)?1:0;
return Isfull;
}
static int sf_mmc_dev_node_check(const char *devName)
{
int tryCnt = 200;
int ret = access(devName, F_OK);
while (ret != 0 && tryCnt--)
{
usleep(10*1000);
ret = access(devName, F_OK);
}
if (tryCnt < 0)
{
printf("no found %s\n", devName);
return -1;
}
return ret;
}
void sf_mmc_dev_register(SF_MESSAGE_BUF_S *pMessageBuf)
{
STRG_CB_PARAM strg_cb_param;
UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
strg_cb_param.event = pMessageBuf->arg1;
strg_cb_param.dev_id = pMessageBuf->arg2;
strg_cb_param.mounted_status = pMessageBuf->arg3;
MLOGD("[dev_id:%d, evt:%d]\n",strg_cb_param.dev_id, strg_cb_param.event);
if(strg_cb_param.dev_id == MMC_DEV_SD)
{
if(strg_cb_param.event == CMD_SD_STRG_CB_INSERTED)
{
sf_mmc_dev[MMC_DEV_SD].node == MMC_DEV_NODE_STATE_EXIST;
}
else if(strg_cb_param.event == CMD_SD_STRG_CB_REMOVED)
{
sf_mmc_dev[MMC_DEV_SD].node == MMC_DEV_NODE_STATE_NO_EXIST;
}
else if(strg_cb_param.event == CMD_SD_STRG_CB_MOUNT_FINISH)
{
sf_mmc_dev[MMC_DEV_SD].moumted_state = MMC_DEV_MOUNT_STATE_MOUNTED;
}
else if(strg_cb_param.event == CMD_SD_STRG_CB_UNMOUNT_FINISH)
{
sf_mmc_dev[MMC_DEV_SD].moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED;
}
UINT32 isfull = sf_mmc_dev_space_check_full(SD_MOUNT_ROOT);
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)
{
sf_mmc_dev[MMC_DEV_SD].loop_state == MMC_DEV_LOOP_STATE_ON;
}
else if(puiPara->SdLoopSwitch == 0)
{
sf_mmc_dev[MMC_DEV_SD].loop_state == MMC_DEV_LOOP_STATE_OFF;
}
}
else if(strg_cb_param.dev_id == MMC_DEV_EMMC)
{
if(sf_mmc_dev_node_check(EMMC_DEVICE_NAME) == 0)
{
sf_mmc_dev[MMC_DEV_EMMC].node == MMC_DEV_NODE_STATE_EXIST;
}
else
{
sf_mmc_dev[MMC_DEV_EMMC].node == MMC_DEV_NODE_STATE_NO_EXIST;
}
if(strg_cb_param.event == CMD_SD_STRG_CB_MOUNT_FINISH)
{
sf_mmc_dev[MMC_DEV_EMMC].moumted_state = MMC_DEV_MOUNT_STATE_MOUNTED;
}
else if(strg_cb_param.event == CMD_SD_STRG_CB_UNMOUNT_FINISH)
{
sf_mmc_dev[MMC_DEV_EMMC].moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED;
}
UINT32 isfull = sf_mmc_dev_space_check_full(EMMC_MOUNT_ROOT);
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)
{
sf_mmc_dev[MMC_DEV_EMMC].loop_state == MMC_DEV_LOOP_STATE_ON;
}
else if(puiPara->SdLoopSwitch == 0)
{
sf_mmc_dev[MMC_DEV_EMMC].loop_state == MMC_DEV_LOOP_STATE_OFF;
}
}
}
MMC_DEV_TYPE sf_mmc_check_workable_dev(void)
{
MMC_DEV_TYPE workable_dev = MMC_DEV_NO;
MLOGD("sf mmc check workable dev start!!!\n");
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))
{
workable_dev = MMC_DEV_NO;
}
else if(sf_mmc_dev[MMC_DEV_EMMC].node == MMC_DEV_NODE_STATE_NO_EXIST) //EMMC节点不存在
{
if(sf_mmc_dev[MMC_DEV_EMMC].moumted_state == MMC_DEV_MOUNT_STATE_MOUNTED)
{
if(sf_mmc_dev[MMC_DEV_EMMC].space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_EMMC;
}
else if(sf_mmc_dev[MMC_DEV_EMMC].space_state == MMC_DEV_SPACE_STATE_NO_ENOUGH)
{
if(sf_mmc_dev[MMC_DEV_EMMC].loop_state == MMC_DEV_LOOP_STATE_ON)
{
workable_dev = MMC_DEV_EMMC;
}
}
}
}
else if(sf_mmc_dev[MMC_DEV_SD].node == MMC_DEV_NODE_STATE_NO_EXIST) //SD节点不存在
{
if(sf_mmc_dev[MMC_DEV_SD].moumted_state == MMC_DEV_MOUNT_STATE_MOUNTED)
{
if(sf_mmc_dev[MMC_DEV_SD].space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_SD;
}
else if(sf_mmc_dev[MMC_DEV_SD].space_state == MMC_DEV_SPACE_STATE_NO_ENOUGH)
{
if(sf_mmc_dev[MMC_DEV_SD].loop_state == MMC_DEV_LOOP_STATE_ON)
{
workable_dev = MMC_DEV_SD;
}
}
}
}
else //MMC节点都存在
{
if((sf_mmc_dev[MMC_DEV_SD].moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) &&
(sf_mmc_dev[MMC_DEV_EMMC].moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED))
{
workable_dev = MMC_DEV_NO;
}
else if(sf_mmc_dev[MMC_DEV_SD].moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED)
{
if(sf_mmc_dev[MMC_DEV_EMMC].space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_EMMC;
}
else
{
if(sf_mmc_dev[MMC_DEV_SD].loop_state == MMC_DEV_LOOP_STATE_ON)
{
workable_dev = MMC_DEV_EMMC;
}
}
}
else if(sf_mmc_dev[MMC_DEV_EMMC].moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED)
{
if(sf_mmc_dev[MMC_DEV_SD].space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_SD;
}
else
{
if(sf_mmc_dev[MMC_DEV_SD].loop_state == MMC_DEV_LOOP_STATE_ON)
{
workable_dev = MMC_DEV_SD;
}
}
}
else
{
if(sf_mmc_dev[MMC_DEV_EMMC].space_state == MMC_DEV_SPACE_STATE_ENOUGH &&
sf_mmc_dev[MMC_DEV_SD].space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_EMMC;
}
else if(sf_mmc_dev[MMC_DEV_EMMC].space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_EMMC;
}
else if(sf_mmc_dev[MMC_DEV_SD].space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{
workable_dev = MMC_DEV_SD;
}
else
{
if(sf_mmc_dev[MMC_DEV_SD].loop_state == MMC_DEV_LOOP_STATE_ON)
{
workable_dev = MMC_DEV_EMMC;
}
}
}
}
MLOGD("sf mmc check workable dev end, dev_id = %d!!!\n", workable_dev);
for(int i = 0; i < 2; i++)
{
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].space_state, sf_mmc_dev[i].loop_state);
}
return workable_dev;
}

View File

@ -1715,6 +1715,9 @@ 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
#define fs_dir_getParent FileSys_GetParentDir #define fs_dir_getParent FileSys_GetParentDir

View File

@ -84,7 +84,6 @@ 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

@ -107,7 +107,7 @@ static void card_insert_job(void)
FileSys_WaitFinishEx('A'); FileSys_WaitFinishEx('A');
FileSys_SetParamEx('A', FST_PARM_UPDATE_FSINFO , TRUE); FileSys_SetParamEx('A', FST_PARM_UPDATE_FSINFO , TRUE);
sf_rtos_mmc_dev_register(0, ret); SF_RtosStrgRegister(0, ret);
#if HUNTING_CAMERA_MCU == ENABLE #if HUNTING_CAMERA_MCU == ENABLE
//if(TRUE == sf_check_card_full()) //if(TRUE == sf_check_card_full())
//{ //{
@ -142,7 +142,7 @@ static void card_insert_job(void)
} }
// call the function to wait init finish // call the function to wait init finish
FileSys_WaitFinishEx('B'); FileSys_WaitFinishEx('B');
sf_rtos_mmc_dev_register(1, ret); SF_RtosStrgRegister(1, ret);
// FileSys_SetParamEx('B', FST_PARM_UPDATE_FSINFO , TRUE); // FileSys_SetParamEx('B', FST_PARM_UPDATE_FSINFO , TRUE);
#endif #endif
@ -163,6 +163,7 @@ static void sys_detect_card_task(void)
#if defined(_EMBMEM_EMMC_) #if defined(_EMBMEM_EMMC_)
THREAD_ENTRY(); THREAD_ENTRY();
SF_RtosStrgInit();
card_insert_job(); card_insert_job();
THREAD_RETURN(0); THREAD_RETURN(0);
@ -195,7 +196,7 @@ static void sys_detect_card_task(void)
vTaskDelay(pdMS_TO_TICKS(1000)); vTaskDelay(pdMS_TO_TICKS(1000));
} }
SF_RtosStrgUnInit();
THREAD_RETURN(0); THREAD_RETURN(0);
#endif #endif
} }

View File

@ -64,6 +64,7 @@
#endif #endif
#include "IOCfg.h" #include "IOCfg.h"
#include <kwrap/cmdsys.h> #include <kwrap/cmdsys.h>
#include "sf_sd_common.h"
/** /**
Flags for control Flags for control
*/ */
@ -859,12 +860,20 @@ static void MovieFast_OnRecStop(void)
static DCF_HANDLE MovieFast_Get_DCF_Handle(void) static DCF_HANDLE MovieFast_Get_DCF_Handle(void)
{ {
#if (FS_MULTI_STRG_FUNC) //#if (FS_MULTI_STRG_FUNC)
/* check free space here */ /* check free space here */
return g_dcf_hdl2; //return g_dcf_hdl2;
#else //#else
return g_dcf_hdl; //return g_dcf_hdl;
#endif //#endif
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev();
if(mmc_dev->dcf_handle < 0)
{
DBG_ERR("No MMC_Dev Can use!\n");
return -1;
}
DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
return mmc_dev->dcf_handle;
} }
static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
@ -1233,6 +1242,8 @@ THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg)
} }
#endif #endif
SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl);
SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2);
#if HUNTING_CAMERA_MCU == ENABLE #if HUNTING_CAMERA_MCU == ENABLE
if(TRUE != sf_is_card_full()) if(TRUE != sf_is_card_full())

View File

@ -42,6 +42,8 @@
#include <sf_mcu.h> #include <sf_mcu.h>
#include "sf_led.h" #include "sf_led.h"
#endif #endif
#include "sf_sd_common.h"
#if POWERON_FAST_SLICE_ENC == ENABLE #if POWERON_FAST_SLICE_ENC == ENABLE
#include "PhotoFastSliceEncode.h" #include "PhotoFastSliceEncode.h"
@ -739,9 +741,10 @@ INT32 PhotoFast_FileNaming_Open(void)
DBG_ERR("get dcf handle error!\n"); DBG_ERR("get dcf handle error!\n");
} }
DBG_WRN("DCF_ScanObjEx emmc handle=%d\n", g_dcf_hdl2); DBG_WRN("DCF_ScanObjEx emmc handle=%d\n", g_dcf_hdl2);
DCF_ScanObjEx(g_dcf_hdl2); DCF_ScanObjEx(g_dcf_hdl2);
SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl);
SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2);
} }
#endif #endif
@ -767,6 +770,8 @@ INT32 PhotoFast_FileNaming_Close(void)
DCF_UnInstallID(); DCF_UnInstallID();
} }
SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl);
SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2);
return 0; return 0;
} }
@ -883,12 +888,20 @@ void PhotoFast_FileNaming_SetSortBySN(CHAR *pDelimStr, UINT32 nDelimCount, UINT3
DCF_HANDLE PhotoFast_Get_DCF_Handle() DCF_HANDLE PhotoFast_Get_DCF_Handle()
{ {
#if (FS_MULTI_STRG_FUNC) //#if (FS_MULTI_STRG_FUNC)
/* check free space here */ /* check free space here */
return g_dcf_hdl2; //return g_dcf_hdl2;
#else //#else
return g_dcf_hdl; //return g_dcf_hdl;
#endif //#endif
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev();
if(mmc_dev->dcf_handle < 0)
{
DBG_ERR("No MMC_Dev Can use!\n");
return -1;
}
DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
return mmc_dev->dcf_handle;
} }
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)

View File

@ -63,8 +63,13 @@ typedef struct
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; //MMC_DEV_LOOP_STATE loop_state;
int dcf_handle;
}SF_RTOS_ST_MMC_DEV; }SF_RTOS_ST_MMC_DEV;
int sf_rtos_mmc_dev_register(int devid, int mounted_state); void SF_RtosStrgInit(void);
MMC_DEV_TYPE sf_rtos_mmc_check_workable_dev(void); void SF_RtosStrgUnInit(void);
int SF_RtosStrgRegister(int devid, int mounted_state);
void SF_RtosStrgSetDcfHandle(UINT32 strg_id, UINT32 handle);
SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void);
#endif #endif

View File

@ -49,14 +49,12 @@ 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}; static SF_RTOS_ST_MMC_DEV *sf_mmc_dev[MMC_DEV_MAX_NUM] = {NULL};
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);
return IsCardFull; return IsCardFull;
} }
UINT32 sf_check_card_full(void) UINT32 sf_check_card_full(void)
@ -94,6 +92,56 @@ UINT32 sf_check_card_full(void)
return ret; return ret;
} }
void sf_sd_exist_reg_cb(SF_CALLBACK_SD_CMD fpCB)
{
g_fpSd_Exist_CB = fpCB;
}
BOOL sf_in_card_exist(void)
{
return DrvCARD_DetStrgCard();
/*
if(g_fpSd_Exist_CB)
{
return g_fpSd_Exist_CB();
}
else
{
return FALSE;
}*/
}
void SF_RtosStrgInit(void)
{
for(int i = 0; i < MMC_DEV_MAX_NUM; i++)
{
sf_mmc_dev[i] = (SF_RTOS_ST_MMC_DEV *)malloc(sizeof(SF_RTOS_ST_MMC_DEV));
if(sf_mmc_dev[i] == NULL) {
// 处理内存分配失败的情况
}
sf_mmc_dev[i]->dcf_handle = -1;
//sf_mmc_dev[i]->node = MMC_DEV_NODE_STATE_NO;
sf_mmc_dev[i]->moumted_state = MMC_DEV_MOUNT_STATE_NO;
sf_mmc_dev[i]->space_state = MMC_DEV_SPACE_STATE_NO;
//sf_mmc_dev[i]->loop_state = MMC_DEV_LOOP_STATE_NO;
}
DBG_WRN("SF_RtosStrgInit!\n");
}
void SF_RtosStrgUnInit(void)
{
for(int i = 0; i < MMC_DEV_MAX_NUM; i++)
{
if(sf_mmc_dev[i] != NULL) {
free(sf_mmc_dev[i]);
sf_mmc_dev[i] = NULL;
}
}
DBG_WRN("SF_RtosStrgUnInit!\n");
}
static UINT32 sf_mmc_dev_space_check_full(MMC_DEV_TYPE mmc_dev) static UINT32 sf_mmc_dev_space_check_full(MMC_DEV_TYPE mmc_dev)
{ {
UINT64 diskFree = 0; UINT64 diskFree = 0;
@ -119,99 +167,79 @@ static UINT32 sf_mmc_dev_space_check_full(MMC_DEV_TYPE mmc_dev)
if(diskFree < 30) /* 30MB */ if(diskFree < 30) /* 30MB */
{ {
ret = TRUE; ret = TRUE;
//if(0 == puiPara->SdLoopSwitch) IsCardFull = TRUE;
{
IsCardFull = TRUE;
}
//printf("%s:%d sd card is full diskFree=%lu",__FUNCTION__,__LINE__,diskFree);
} }
else else
{ {
ret = FALSE; ret = FALSE;
} }
DBG_WRN("[%s:%d]sd card diskFree=%lluM\n", __FUNCTION__, __LINE__, diskFree);
printf("[%s:%d]sd card diskFree=%lluM\n", __FUNCTION__, __LINE__, diskFree);
return ret; return ret;
} }
void sf_sd_exist_reg_cb(SF_CALLBACK_SD_CMD fpCB) int SF_RtosStrgRegister(int devid, int mounted_state)
{
g_fpSd_Exist_CB = fpCB;
}
BOOL sf_in_card_exist(void)
{
return DrvCARD_DetStrgCard();
/*
if(g_fpSd_Exist_CB)
{
return g_fpSd_Exist_CB();
}
else
{
return FALSE;
}*/
}
int sf_rtos_mmc_dev_register(int devid, int mounted_state)
{ {
if(mounted_state == FST_STA_OK) if(mounted_state == FST_STA_OK)
{ {
sf_mmc_dev[devid].moumted_state = MMC_DEV_MOUNT_STATE_MOUNTED; sf_mmc_dev[devid]->moumted_state = MMC_DEV_MOUNT_STATE_MOUNTED;
} }
else else
{ {
sf_mmc_dev[devid].moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED; sf_mmc_dev[devid]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED;
} }
int isfull = sf_mmc_dev_space_check_full(devid); int isfull = sf_mmc_dev_space_check_full(devid);
if(isfull) if(isfull)
{ {
sf_mmc_dev[devid].space_state = MMC_DEV_SPACE_STATE_ENOUGH; sf_mmc_dev[devid]->space_state = MMC_DEV_SPACE_STATE_ENOUGH;
} }
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;
} }
DBG_WRN("devid = %d, state = %d\n", devid, mounted_state);
return 0; return 0;
} }
MMC_DEV_TYPE sf_rtos_mmc_check_workable_dev(void) void SF_RtosStrgSetDcfHandle(UINT32 strg_id, UINT32 handle)
{
sf_mmc_dev[strg_id]->dcf_handle = handle;
DBG_WRN("strg_id = %d, handle = %d\n", strg_id, handle);
}
SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void)
{ {
MMC_DEV_TYPE workable_dev = MMC_DEV_NO; MMC_DEV_TYPE workable_dev = MMC_DEV_NO;
if((sf_mmc_dev[MMC_DEV_SD].moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) && if((sf_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) &&
(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))
{ {
workable_dev = MMC_DEV_NO; workable_dev = MMC_DEV_NO;
} }
else if(sf_mmc_dev[MMC_DEV_SD].moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) else if(sf_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED)
{ {
if(sf_mmc_dev[MMC_DEV_EMMC].space_state == MMC_DEV_SPACE_STATE_ENOUGH) if(sf_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{ {
workable_dev = MMC_DEV_EMMC; workable_dev = MMC_DEV_EMMC;
} }
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;
} }
} }
} }
else if(sf_mmc_dev[MMC_DEV_EMMC].moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) else if(sf_mmc_dev[MMC_DEV_EMMC]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED)
{ {
if(sf_mmc_dev[MMC_DEV_SD].space_state == MMC_DEV_SPACE_STATE_ENOUGH) if(sf_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{ {
workable_dev = MMC_DEV_SD; workable_dev = MMC_DEV_SD;
} }
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;
} }
@ -219,29 +247,42 @@ MMC_DEV_TYPE sf_rtos_mmc_check_workable_dev(void)
} }
else else
{ {
if(sf_mmc_dev[MMC_DEV_EMMC].space_state == MMC_DEV_SPACE_STATE_ENOUGH && if(sf_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH &&
sf_mmc_dev[MMC_DEV_SD].space_state == MMC_DEV_SPACE_STATE_ENOUGH) sf_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{ {
workable_dev = MMC_DEV_EMMC; workable_dev = MMC_DEV_EMMC;
} }
else if(sf_mmc_dev[MMC_DEV_EMMC].space_state == MMC_DEV_SPACE_STATE_ENOUGH) else if(sf_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{ {
workable_dev = MMC_DEV_EMMC; workable_dev = MMC_DEV_EMMC;
} }
else if(sf_mmc_dev[MMC_DEV_SD].space_state == MMC_DEV_SPACE_STATE_ENOUGH) else if(sf_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH)
{ {
workable_dev = MMC_DEV_SD; workable_dev = MMC_DEV_SD;
} }
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;
} }
} }
} }
return workable_dev; DBG_WRN("dev_id = %d!!!\n", workable_dev);
for(int i = 0; i < 2; i++)
{
DBG_WRN("mount:%d, space:%d\n",
sf_mmc_dev[i]->moumted_state, sf_mmc_dev[i]->space_state);
}
if(workable_dev != MMC_DEV_NO)
{
DBG_WRN("dcf_handle = %d\n", sf_mmc_dev[workable_dev]->dcf_handle);
return sf_mmc_dev[workable_dev];
}
else
return NULL;
} }