合入原厂Linux和Rtos下EMMC最新改动和存储设备切换逻辑
This commit is contained in:
parent
b18d94f150
commit
8bbe9651b2
|
@ -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 \
|
||||||
|
|
320
code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c
Executable file
320
code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c
Executable 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;
|
||||||
|
}
|
|
@ -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_
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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, \
|
||||||
|
|
|
@ -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 \
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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
|
||||||
|
|
|
@ -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 \
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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())
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user