From 11152df385033043366e6df81e2ea2249ff9baba Mon Sep 17 00:00:00 2001 From: payton Date: Tue, 26 Dec 2023 14:57:42 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1.=E5=90=88=E5=B9=B6emmc=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c | 4 +- .../source/cardv/SrcCode/Gx/GxStrg/GxStrg.c | 4 + .../cardv/SrcCode/Gx/GxStrg/GxStrgDevice.c | 2 +- .../cardv/SrcCode/Gx/GxStrg/GxStrgLnx.c | 81 +++- .../cardv/SrcCode/PrjCfg_HUNTING_S550.h | 5 +- .../source/cardv/SrcCode/System/SysMain_Exe.c | 4 + .../source/cardv/SrcCode/System/SysMain_cmd.c | 20 + .../source/cardv/SrcCode/System/SysStrg_Exe.c | 397 +++++++++++------- .../SrcCode/UIApp/Movie/UIAppMovie_Exe.c | 39 +- .../SrcCode/UIApp/Photo/UIAppPhoto_Exe.c | 38 +- .../SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c | 25 -- code/lib/include/AppControl/AppControl.h | 1 + 12 files changed, 398 insertions(+), 222 deletions(-) diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c index 5a39261e8..6ffd2ba1d 100755 --- a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxCfg.c @@ -110,13 +110,13 @@ DX_HANDLE Dx_GetObject(UINT32 DxClassType) // Query device object hDevice = (UINT32)(&gDevEmbMem7); } else if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_EMBMEM8) { hDevice = (UINT32)(&gDevEmbMem8); - DBG_ERR("DX_TYPE_EMBMEM8 hDevice = %lx\n", hDevice); + DBG_IND("DX_TYPE_EMBMEM8 hDevice = %lx\n", hDevice); } #endif #if !defined(_CARD1_NONE_) if ((DxClassType & DX_TYPE_MASK) == DX_TYPE_CARD1) { hDevice = (UINT32)(&gDevCARD1); - DBG_ERR("DX_TYPE_CARD1 hDevice = %lx\n", hDevice); + DBG_IND("DX_TYPE_CARD1 hDevice = %lx\n", hDevice); } #endif #if !defined(_CARD3_NONE_) diff --git a/code/application/source/cardv/SrcCode/Gx/GxStrg/GxStrg.c b/code/application/source/cardv/SrcCode/Gx/GxStrg/GxStrg.c index 822eda4e2..4394af02d 100755 --- a/code/application/source/cardv/SrcCode/Gx/GxStrg/GxStrg.c +++ b/code/application/source/cardv/SrcCode/Gx/GxStrg/GxStrg.c @@ -47,6 +47,7 @@ BOOL GxStrg_OpenDevice(UINT32 DevID, DX_HANDLE NewStrgDXH) return FALSE; } + DBG_WRN("FileSys_OpenEx %c\n", GXSTRG_ID2DRV(DevID)); if (FileSys_OpenEx(GXSTRG_ID2DRV(DevID), (FS_HANDLE)NewStrgDXH, &g_FSInitParam[DevID]) != FST_STA_OK) { DBG_WRN("FileSys_Open(DevID %d)\r\n", DevID); return FALSE; @@ -101,11 +102,14 @@ void GxStrg_SendMountStatus(UINT32 DevId, UINT32 MsgId) if (FST_FS_TYPE_LINUX == g_FsType) { if (g_LnxStrgStatus[DevId].IsFormatted) { + CHKPNT; MountStatus = FST_STA_OK; } else { + CHKPNT; MountStatus = FST_STA_DISK_UNFORMAT; } } else { + CHKPNT; MountStatus = MsgId; } diff --git a/code/application/source/cardv/SrcCode/Gx/GxStrg/GxStrgDevice.c b/code/application/source/cardv/SrcCode/Gx/GxStrg/GxStrgDevice.c index c2e0ce689..675d5953e 100644 --- a/code/application/source/cardv/SrcCode/Gx/GxStrg/GxStrgDevice.c +++ b/code/application/source/cardv/SrcCode/Gx/GxStrg/GxStrgDevice.c @@ -45,7 +45,7 @@ void GxStrg_Det(UINT32 DevID, DX_HANDLE StrgDXH) (uiStrgCardCurSts != uiStrgCardStatus)) { isFormat = g_LnxStrgStatus[DevID].IsFormatted; - DBG_DUMP("isFormat = %lu\n", isFormat); + DBG_DUMP("DevID=%lu, isFormat = %lu\n", DevID, isFormat); switch (uiStrgCardCurSts) { case DET_CARD_INSERTED: diff --git a/code/application/source/cardv/SrcCode/Gx/GxStrg/GxStrgLnx.c b/code/application/source/cardv/SrcCode/Gx/GxStrg/GxStrgLnx.c index 912928260..5c7fff495 100644 --- a/code/application/source/cardv/SrcCode/Gx/GxStrg/GxStrgLnx.c +++ b/code/application/source/cardv/SrcCode/Gx/GxStrg/GxStrgLnx.c @@ -137,6 +137,73 @@ static int GxStrgLnx_GetSD1DevByBus(char *out_path, int out_size) } } +static int GxStrgLnx_GetSD2DevByBus(char *out_path, int out_size) +{ + #define MMC_SYS_PATH "/sys/bus/mmc/devices" + #define MMC1BUS_PREFIX "mmc1" + #define MMC0BUS "mmc2" + #define MMCDEV "mmc" + + char find_path[64] = {0};//e.g. /sys/devices/platform/nt96660_mmc.0/mmc_host/mmc0/mmc0:b368/block + char dev_path[32] = {0};//e.g. /dev/mmcblk0p1, /dev/mmcblk0, /dev/mmcblk1p1, /dev/mmcblk1 + char mmc_bus_name[16] = {0}; //e.g. mmc0:b368 + char mmc_dev_name[16] = {0}; + int bFound = 0, beMMCFound = 0;; + + out_path[0] = '\0';//set empty first + + //1. find the mmc2 to check eMMC is existed or not. + if(0 == GxStrgLnx_FindEntryByPrefix(MMC_SYS_PATH, MMC0BUS, mmc_bus_name, sizeof(mmc_bus_name))) { + DBG_IND("mmc0 bus not found\r\n"); + beMMCFound = 1; + //return -1; + } else if(0 != GxStrgLnx_FindEntryByPrefix(MMC_SYS_PATH, MMC1BUS_PREFIX, mmc_bus_name, sizeof(mmc_bus_name))) { // find the bus mmc0 to check the card is inserted or not + DBG_IND("mmc0 bus not found\r\n"); + return -1; + } + + //2. get the device name from mmc0 information + snprintf(find_path, sizeof(find_path), "%s/%s/block", MMC_SYS_PATH, mmc_bus_name); + if (!GxStrgLnx_IsPathExist(find_path)) { + DBG_ERR("%s not found\r\n", find_path); + return -1; + } + + if(0 != GxStrgLnx_FindEntryByPrefix(find_path, MMCDEV, mmc_dev_name, sizeof(mmc_dev_name))) { + DBG_IND("device not found\r\n"); + return -1; + } + + //3. try the real device name is mmcblk0/mmcblk1 or mmcblk0p1/mmcblk1p1 + //find dev name with p1 (e.g. mmcblk0p1) + if (beMMCFound) { // emmc is mmcblk2p5. + snprintf(dev_path, sizeof(dev_path), "/dev/%sp5", mmc_dev_name); + DBG_IND("GxStrgLnx_GetSD2DevByBus: found emmc\r\n"); + } + else { + snprintf(dev_path, sizeof(dev_path), "/dev/%sp1", mmc_dev_name); + } + if (GxStrgLnx_IsPathExist(dev_path)) { + bFound = 1; + } + + if(!bFound) {//find dev name without p1. (e.g. mmcblk0) + snprintf(dev_path, sizeof(dev_path), "/dev/%s", mmc_dev_name); + if(GxStrgLnx_IsPathExist(dev_path)) { + bFound = 1; + } + } + + if(bFound) { + DBG_IND("SD2Dev = %s\r\n", out_path); + GXSTRG_STRCPY(out_path, dev_path, out_size); + return 0; + } else { + DBG_ERR("The dev partition name not found\r\n"); + return -1; + } +} + static int GxStrgLnx_GetDevByMountPath(char *pDevPath, const char* pMountPath, int BufSize) { struct mntent *ent; @@ -177,7 +244,7 @@ static INT32 GxStrgLnx_ChkStatus(UINT32 DevId) UINT32 StrgCbVal; BOOL bIsReadOnly = FALSE; BOOL bIsFormatted; - static UINT32 StrgCbValPrev = STRG_CB_UNKNOWN; + static UINT32 StrgCbValPrev[2] = {STRG_CB_UNKNOWN, STRG_CB_UNKNOWN}; //1. get the device name from the mount list ret = GxStrgLnx_GetDevByMountPath(DevPath, pMountPath, sizeof(DevPath)); @@ -203,7 +270,11 @@ static INT32 GxStrgLnx_ChkStatus(UINT32 DevId) } //2. if the device is not mounted, get the dev name from the mmc0 bus - ret = GxStrgLnx_GetSD1DevByBus(DevPath, sizeof(DevPath)); + if(DevId == 0) + ret = GxStrgLnx_GetSD1DevByBus(DevPath, sizeof(DevPath)); + else + ret = GxStrgLnx_GetSD2DevByBus(DevPath, sizeof(DevPath)); + if (ret == 0) { //0. if the storage object is set, detect card insert if (g_pCurStrgDXH[DevId]) { @@ -246,16 +317,16 @@ static INT32 GxStrgLnx_ChkStatus(UINT32 DevId) } label_exit: - if (StrgCbValPrev != StrgCbVal) { + if (StrgCbValPrev[DevId] != StrgCbVal) { g_LnxStrgStatus[DevId].IsInserted = (StrgCbVal == STRG_CB_INSERTED); g_LnxStrgStatus[DevId].IsReadOnly = bIsReadOnly; g_LnxStrgStatus[DevId].IsFormatted = bIsFormatted; - DBG_IND("MntPath %s, IsInserted %d, IsReadOnly %d, bIsFormatted %d\r\n", + DBG_DUMP("MntPath %s, IsInserted %d, IsReadOnly %d, bIsFormatted %d\r\n", g_FSInitParam[DevId].FSParam.szMountPath, g_LnxStrgStatus[DevId].IsInserted, g_LnxStrgStatus[DevId].IsReadOnly, g_LnxStrgStatus[DevId].IsFormatted); - StrgCbValPrev = StrgCbVal; + StrgCbValPrev[DevId] = StrgCbVal; } if(g_LnxStrgStatus[DevId].IsInserted && bIsFormatted && !g_LnxStrgStatus[DevId].IsFormatted){ diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index 4812f681f..e3a882150 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -926,8 +926,9 @@ #define HW_S530 DISABLE #define DCF_DIR_NAME "MEDIA" /* 100MEDIA */ #define DCF_FILE_NAME "SYGW" /* SYFW0001.JPG */ -#define PHOTO_THUMB_PATH "A:\\THUMB\\" -#define MOVIE_THUMB_PATH "A:\\THUMB\\" +#define PHOTO_THUMB_PATH ":\\THUMB\\" +#define MOVIE_THUMB_PATH ":\\THUMB\\" + #define SF_SD_ROOT "/mnt/sd/" #define SF_SEND_LIST_DIR "/mnt/sd/THUMB/" #define SF_THUMB_SEND_LIST SF_SEND_LIST_DIR"send.list" diff --git a/code/application/source/cardv/SrcCode/System/SysMain_Exe.c b/code/application/source/cardv/SrcCode/System/SysMain_Exe.c index a13a8cc02..c1d5c49af 100755 --- a/code/application/source/cardv/SrcCode/System/SysMain_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysMain_Exe.c @@ -714,6 +714,8 @@ INT32 System_OnLensAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) } */ +extern INT32 System_OnStrgSetActDrive(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray); + EVENT_ENTRY SystemObjCmdMap[] = { //////////////////////////////////////////////////////////// @@ -751,6 +753,8 @@ EVENT_ENTRY SystemObjCmdMap[] = { {NVTEVT_STRG_REMOVE, System_OnStrgRemove }, {NVTEVT_STRG_ATTACH, System_OnStrgAttach }, {NVTEVT_STRG_DETACH, System_OnStrgDetach }, + {NVTEVT_STRG_SET_ACT_DRIVE, System_OnStrgSetActDrive}, + #endif #if(USB_MODE==ENABLE) //Usb device event diff --git a/code/application/source/cardv/SrcCode/System/SysMain_cmd.c b/code/application/source/cardv/SrcCode/System/SysMain_cmd.c index 2dea0e44e..814ef68dd 100755 --- a/code/application/source/cardv/SrcCode/System/SysMain_cmd.c +++ b/code/application/source/cardv/SrcCode/System/SysMain_cmd.c @@ -185,6 +185,23 @@ static BOOL Cmd_user_EventTest(unsigned char argc, char **argv) #endif +#if FS_MULTI_STRG_FUNC /* test cmd */ + +static BOOL cmd_storage_set_act_drive(unsigned char argc, char **argv) +{ + /* A or B*/ + UINT32 drive_idx = strtoul(argv[0], NULL, 10); + + if(drive_idx == 0 || drive_idx == 1) + Ux_PostEvent(NVTEVT_STRG_SET_ACT_DRIVE, 1, (UINT32)drive_idx); + else + DBG_ERR("invalid drive(%c)\n", drive_idx); + + return TRUE; +} + +#endif + SXCMD_BEGIN(sys_cmd_tbl, "system command") SXCMD_ITEM("mem %", cmd_sys_mem, "system memory layout") @@ -266,6 +283,9 @@ SXCMD_ITEM("wifisw %", cmd_wifi_switch, "wifisw 0/1") SXCMD_ITEM("lcdbk %", sf_set_backlight_status, "lcdbk 0/1") #endif +#if FS_MULTI_STRG_FUNC /* test cmd */ +SXCMD_ITEM("strg_set_act_drvie %", cmd_storage_set_act_drive, "set storage act drive (0 / 1)") +#endif SXCMD_END() diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index fe4a9b0f2..9258db29f 100644 --- a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -132,6 +132,26 @@ static FST_FS_TYPE m_GxStrgType = FST_FS_TYPE_UITRON; static void *mp_fwsrv_work_buf = NULL; #endif static BOOL g_bSupportExfat = FALSE; + +#define STRG_NUM 2 +#define STRG_ID_SD 0 +#define STRG_ID_EMMC 1 + +typedef struct { + char name[16]; + UINT8 strg_id; + DCF_HANDLE dcf_hdl; + CHAR drive; +} STRG_MAPPING_TABLE; + + +STRG_MAPPING_TABLE g_strg_mapping_table[STRG_NUM] = { + [STRG_ID_SD] = { "SD", .strg_id = STRG_ID_SD, .dcf_hdl = -1, .drive = 'A'}, + [STRG_ID_EMMC] = { "EMMC", .strg_id = STRG_ID_EMMC, .dcf_hdl = -1, .drive = 'B'}, +}; + +static DCF_HANDLE g_dcf_hdl_act = -1; + /////////////////////////////////////////////////////////////////////////////// // // EMBMEM @@ -316,68 +336,53 @@ void System_OnStrgInit_FS(void) #if (FS_MULTI_STRG_FUNC == ENABLE) MEM_RANGE Pool2; Pool.size = POOL_SIZE_FILESYS; - GxStrg_SetConfigEx(0, FILE_CFG_BUF, (UINT32)&Pool); + GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_BUF, (UINT32)&Pool); Pool2.addr = Pool.addr + POOL_SIZE_FILESYS; Pool2.size = POOL_SIZE_FILESYS; - GxStrg_SetConfigEx(1, FILE_CFG_BUF, (UINT32)&Pool2); -#if defined(_CPU2_LINUX_) && defined(_EMBMEM_EMMC_) - // 3rd is for linux-pstore mounted by filesys - MEM_RANGE Pool3; - Pool3.Addr = Pool2.Addr + POOL_SIZE_FS_BUFFER; - Pool3.Size = POOL_SIZE_FS_BUFFER; - GxStrg_SetConfigEx(PST_DEV_ID, FILE_CFG_BUF, (UINT32)&Pool3); -#endif + GxStrg_SetConfigEx(STRG_ID_EMMC, FILE_CFG_BUF, (UINT32)&Pool2); #else Pool.size = POOL_SIZE_FILESYS; - GxStrg_SetConfigEx(0, FILE_CFG_BUF, (UINT32)&Pool); + GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_BUF, (UINT32)&Pool); #endif } - - //#NT#2017/06/02#Nestor Yang -begin - //#NT# Do not link uITRON if not use - //GxStrg_SetConfigEx(0, FILE_CFG_FS_TYPE, m_GxStrgType); #if !defined(__FREERTOS) - GxStrg_SetConfigEx(0, FILE_CFG_FS_TYPE, FileSys_GetOPS_Linux()); //for FILE_CFG_FS_TYPE, DevID is don't care -#else - GxStrg_SetConfigEx(0, FILE_CFG_FS_TYPE, FileSys_GetOPS_uITRON()); -#endif - //#NT#2017/06/02#Nestor Yang -end -#if 0 -#if (LOGFILE_FUNC==ENABLE) - GxStrg_SetConfigEx(0, FILE_CFG_MAX_OPEN_FILE, 6); -#endif -#if (USERLOG_FUNC == ENABLE) - GxStrg_SetConfigEx(0, FILE_CFG_MAX_OPEN_FILE, 6); -#endif -#if (CURL_FUNC == ENABLE) - GxStrg_SetConfigEx(0, FILE_CFG_MAX_OPEN_FILE, 8); -#endif -#if (IPCAM_FUNC == DISABLE) - GxStrg_SetConfigEx(0, FILE_CFG_MAX_OPEN_FILE, 8); -#endif -#else - GxStrg_SetConfigEx(0, FILE_CFG_MAX_OPEN_FILE, 10); + GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_FS_TYPE, FileSys_GetOPS_Linux()); //for FILE_CFG_FS_TYPE, DevID is don't care + +#if (FS_MULTI_STRG_FUNC == ENABLE) + GxStrg_SetConfigEx(STRG_ID_EMMC, FILE_CFG_FS_TYPE, FileSys_GetOPS_Linux()); #endif - GxStrg_SetConfigEx(0, FILE_CFG_SUPPORT_EXFAT, TRUE); +#else + GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_FS_TYPE, FileSys_GetOPS_uITRON()); + +#if (FS_MULTI_STRG_FUNC == ENABLE) + GxStrg_SetConfigEx(STRG_ID_EMMC, FILE_CFG_FS_TYPE, FileSys_GetOPS_uITRON()); +#endif + +#endif + + GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_MAX_OPEN_FILE, 10); + +#if (FS_MULTI_STRG_FUNC == ENABLE) + GxStrg_SetConfigEx(STRG_ID_EMMC, FILE_CFG_MAX_OPEN_FILE, 10); +#endif + + + GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_SUPPORT_EXFAT, TRUE); g_bSupportExfat = TRUE; - //set the device node of msdc mode for emmc only -#if (defined(_EMBMEM_EMMC_) && !defined(__FREERTOS)) - emmc_set_dev_node("/dev/mmcblk2p5"); //This devicde node is related to storate-partition, it is last rootfslX logical partition. Using "cat /proc/nvt_info/emmc" to get. + +#if (FS_MULTI_STRG_FUNC == ENABLE) + GxStrg_SetConfigEx(STRG_ID_EMMC, FILE_CFG_SUPPORT_EXFAT, FALSE); #endif - // mount path -#if (defined(_EMBMEM_EMMC_) && !defined(__FREERTOS)) - strncpy(mount_path, "/mnt/emmc1", sizeof(mount_path) - 1); -#else + strncpy(mount_path, "/mnt/sd", sizeof(mount_path) - 1); -#endif mount_path[sizeof(mount_path) - 1] = '\0'; - GxStrg_SetConfigEx(0, FILE_CFG_MOUNT_PATH, (UINT32)mount_path); + GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_MOUNT_PATH, (UINT32)mount_path); #if !defined(__FREERTOS) - GxStrg_SetConfigEx(0, FILE_CFG_STRG_OBJECT, (UINT32)Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_A)); + GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_STRG_OBJECT, (UINT32)Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_A)); #endif @@ -385,19 +390,10 @@ void System_OnStrgInit_FS(void) emmc_set_dev_node("/dev/mmcblk1p1"); /* msdc strg obj */ strncpy(mount_path, "/mnt/sd2", sizeof(mount_path) - 1); mount_path[sizeof(mount_path) - 1] = '\0'; - GxStrg_SetConfigEx(1, FILE_CFG_MOUNT_PATH, (UINT32)mount_path); - GxStrg_SetConfigEx(1, FILE_CFG_STRG_OBJECT, (UINT32)Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B)); + GxStrg_SetConfigEx(STRG_ID_EMMC, FILE_CFG_MOUNT_PATH, (UINT32)mount_path); + GxStrg_SetConfigEx(STRG_ID_EMMC, FILE_CFG_STRG_OBJECT, (UINT32)Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B)); #endif - - //#NT#2018/12/18#Philex Lin - begin - // unused now - #if 0 - // Enable 32MB alignment recording. - GxStrg_SetConfigEx(0, FILE_CFG_ALIGNED_SIZE, 32 * 1024 * 1024); - #endif - //#NT#2018/12/18#Philex Lin - end - #if (LOGFILE_FUNC==ENABLE) { LOGFILE_CFG cfg = {0}; @@ -457,43 +453,31 @@ void System_OnStrgInit_FS(void) if (m_GxStrgType == FST_FS_TYPE_UITRON) { #if (FS_MULTI_STRG_FUNC) + + /************************************************ + * EMMC + ************************************************/ + GxStrg_Det(1, Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B)); + UINT32 uiDxState = 0; DX_HANDLE pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B); if (Dx_GetState((DX_HANDLE)pStrgDev, STORAGE_STATE_INSERT, &uiDxState) != DX_OK || uiDxState == FALSE) { - Ux_PostEvent(NVTEVT_STRG_REMOVE, 1, 1); + Ux_PostEvent(NVTEVT_STRG_REMOVE, 1, STRG_ID_EMMC); } else { - Ux_PostEvent(NVTEVT_STRG_INSERT, 1, 1); + Ux_PostEvent(NVTEVT_STRG_INSERT, 1, STRG_ID_EMMC); } #endif } #if (USE_DCF == ENABLE) - { - // init DCF -// CHAR pFolderName[9] = {0}; -// CHAR pFileName[5] = {0}; -// // init DCF FolderID/FileID with RTC data -// struct tm tm_cur = hwclock_get_time(TIME_ID_CURRENT); -// snprintf(pFolderName, sizeof(pFolderName), "%1d%02d%02d", tm_cur.tm_year % 0x0A, tm_cur.tm_mon, tm_cur.tm_mday); -// snprintf(pFileName, sizeof(pFileName), "%02d%02d", tm_cur.tm_hour, tm_cur.tm_min); -// //DCF dir-name -// DCF_SetDirFreeChars(pFolderName); -// //DCF file-name -// DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, pFileName); -// -// //DCF format -// DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_SUPPORT_FORMAT); -// DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG | DCF_FILE_TYPE_WAV | DCF_FILE_TYPE_MPO); -// //TODO: [DCF] How to add an new format & its ext? + DCF_SetParm(DCF_PRMID_REMOVE_DUPLICATE_FOLDER, TRUE); + DCF_SetParm(DCF_PRMID_REMOVE_DUPLICATE_FILE, TRUE); + DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_MP4|DCF_FILE_TYPE_MOV); + DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO); + DCF_SetDirFreeChars(DCF_DIR_NAME); + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); - DCF_SetParm(DCF_PRMID_REMOVE_DUPLICATE_FOLDER, TRUE); - DCF_SetParm(DCF_PRMID_REMOVE_DUPLICATE_FILE, TRUE); - DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_MP4|DCF_FILE_TYPE_MOV); - DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO); - DCF_SetDirFreeChars(DCF_DIR_NAME); - DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); - } #endif } void System_OnStrgInit_FS2(void) @@ -559,13 +543,10 @@ static BOOL FileSys_DetBusy(void) void Card_DetInsert(void) { -#if defined(__FREERTOS) - GxStrg_Det(0, Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_A)); -#if (0)//FS_MULTI_STRG_FUNC) - GxStrg_Det(1, Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B)); -#endif -#else GxStrg_Det(0, 0); + +#if 0 //FS_MULTI_STRG_FUNC + GxStrg_Det(1, Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B)); #endif } @@ -739,24 +720,94 @@ int System_umount_storage(char *pMountPath) } #endif +const char* System_Get_Strg_Name(UINT32 strg_id) +{ + if(strg_id >= STRG_NUM){ + DBG_ERR("invalid storage id(%d)!\n", strg_id); + return NULL; + } + + return g_strg_mapping_table[strg_id].name; +} + +INT32 System_Set_Storage_Act_Drive(char drive) +{ + DCF_HANDLE act_handle = -1; + + + for(int i=0 ; iNightMode) ? 2 : 1),puiPara->FlashLed, puiPara->NightMode,0); @@ -6185,19 +6199,19 @@ INT32 PhotoExe_Preview_SliceEncode(VControl *pCtrl, UINT32 paramNum, UINT32 *par DBG_ERR("primary buffer overflow during combine jpg!\r\n"); } - UINT32 dcf_path = 1; /* 0:emmc , 1:sd */ + UINT32 dcf_handle = (UINT32)System_Get_DCF_Handle(); FstStatus.Status = ImageApp_Photo_WriteCB( dst_jpg_file.addr, dst_jpg_file.size, - HD_CODEC_TYPE_JPEG, dcf_path); + HD_CODEC_TYPE_JPEG, dcf_handle); { char* file_path = ImageApp_Photo_GetLastWriteFilePath(); char tmp[256] = {'\0'}; UINT32 length = strlen(file_path); - snprintf(tmp, sizeof(tmp), "%s%s", PHOTO_THUMB_PATH, file_path + length - 12); /* DCF 8.3 naming rule */ + snprintf(tmp, sizeof(tmp), "%c%s%s", System_Get_DCF_Disk_Drive(dcf_handle), PHOTO_THUMB_PATH, file_path + length - 12); /* DCF 8.3 naming rule */ snprintf(tmp + strlen(tmp) - 3, sizeof(tmp), "%s", "JPG"); DBG_DUMP("PHOTO THUMB %s\n", tmp); @@ -6783,12 +6797,12 @@ INT32 PhotoExe_Preview_SliceEncode_CB3(void* user_data) extern INT32 ImageApp_Photo_WriteCB(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId); IMG_CAP_FST_INFO FstStatus = {FST_STA_OK}; - UINT32 dcf_path = 1; /* 0:emmc 1:sd */ + UINT32 dcf_handle = (UINT32)System_Get_DCF_Handle(); /* 0:emmc 1:sd */ FstStatus.Status = ImageApp_Photo_WriteCB( (UINT32)queue_ele_in->jpg_combined_addr, queue_ele_in->jpg_combined_size, - HD_CODEC_TYPE_JPEG, dcf_path); + HD_CODEC_TYPE_JPEG, dcf_handle); { char* file_path = ImageApp_Photo_GetLastWriteFilePath(); @@ -6803,11 +6817,11 @@ INT32 PhotoExe_Preview_SliceEncode_CB3(void* user_data) strncpy(number, file_path + length - 8, 4); number[4] = '\0'; - snprintf(tmp, sizeof(tmp), "%sW%s%s.JPG", PHOTO_THUMB_PATH, folder, number); /* DCF 8.3 naming rule */ + snprintf(tmp, sizeof(tmp), "%c%sW%s%s.JPG", System_Get_DCF_Disk_Drive(dcf_handle), PHOTO_THUMB_PATH, folder, number); /* DCF 8.3 naming rule */ #else - snprintf(tmp, sizeof(tmp), "%s%s", PHOTO_THUMB_PATH, file_path + length - 12); /* DCF 8.3 naming rule */ + snprintf(tmp, sizeof(tmp), "%c%s%s", System_Get_DCF_Disk_Drive(dcf_handle), PHOTO_THUMB_PATH, file_path + length - 12); /* DCF 8.3 naming rule */ snprintf(tmp + strlen(tmp) - 3, sizeof(tmp), "%s", "JPG"); #endif DBG_IND("PHOTO THUMB %s\n", tmp); diff --git a/code/application/source/cardv/SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c b/code/application/source/cardv/SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c index 5835176fd..281a37e04 100755 --- a/code/application/source/cardv/SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c @@ -150,12 +150,6 @@ ER AppInit_ModeUSBMSDC(void) //If project doesn't need the MSDC Vendor command, set this callback function as NULL. MSDCInfo.msdc_check_cb = NULL; MSDCInfo.msdc_vendor_cb = NULL; - //#NT#2016/12/20#Niven Cho -begin - //#NT#MULTI_DRIVE -//#if (FS_MULTI_STRG_FUNC == ENABLE) -// char *pDxName2 = NULL; -// DX_HANDLE pStrgDev2 = 0; -//#endif pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_A); @@ -166,10 +160,6 @@ ER AppInit_ModeUSBMSDC(void) } #endif -//#if (FS_MULTI_STRG_FUNC == ENABLE) -// pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_B); -//#endif - MSDCInfo.pStrgHandle[0] = (PSTRG_TAB)Dx_Getcaps(pStrgDev, STORAGE_CAPS_HANDLE, 0); if (Dx_GetInfo(pStrgDev, DX_INFO_NAME, &pDxName) != DX_OK) { @@ -192,14 +182,6 @@ ER AppInit_ModeUSBMSDC(void) DBG_DUMP("handle = %lx, open = %lx, pDxName2 ===>%s, type=%lu, status=%lu\r\n", MSDCInfo.pStrgHandle[1], MSDCInfo.pStrgHandle[1]->Open, pDxName2, MSDCInfo.pStrgHandle[1]->uiStrgType, MSDCInfo.pStrgHandle[1]->uiStrgStatus); #endif -//#if (FS_MULTI_STRG_FUNC == ENABLE) -// MSDCInfo.pStrgHandle[1] = pStrgDev2; -// -// if (Dx_GetInfo(pStrgDev2, DX_INFO_NAME, &pDxName2) != DX_OK) { -// pDxName2 = NULL; -// } -//#endif - #if (FS_MULTI_STRG_FUNC == ENABLE) MSDCInfo.msdc_storage_detCB[0] = (MSDC_StorageDet_CB)DrvCARD_DetStrgCard; @@ -210,13 +192,6 @@ ER AppInit_ModeUSBMSDC(void) MSDCInfo.msdc_type[1] = MSDC_STRG; MSDCInfo.LUNs = 2; -// MSDCInfo.msdc_storage_detCB[0] = NULL; -// MSDCInfo.msdc_strgLock_detCB[0] = NULL; -// MSDCInfo.pStrgHandle[0] = MSDCInfo.pStrgHandle[1]; -// MSDCInfo.msdc_type[0] = MSDC_STRG; -// MSDCInfo.LUNs = 1; - - #else if (pDxName == NULL || strcmp(pDxName, "Storage_EmbMem5") == 0) { MSDCInfo.msdc_storage_detCB[0] = NULL; diff --git a/code/lib/include/AppControl/AppControl.h b/code/lib/include/AppControl/AppControl.h index 9c64352c5..b25947e89 100755 --- a/code/lib/include/AppControl/AppControl.h +++ b/code/lib/include/AppControl/AppControl.h @@ -33,6 +33,7 @@ typedef enum { NVTEVT_STRG_ATTACH = 0x11010003, //Param1=storage id, Param2=status NVTEVT_STRG_CHANGE = 0x11010004, //Param1=storage id, if insert / remove occurs, also indicate change flag NVTEVT_STRG_MOUNT_OK = 0x11010005, + NVTEVT_STRG_SET_ACT_DRIVE = 0x11010006, /* INSERT NEW EVENT HRER */ NVTEVT_STRG_EVT_END = DEV_STRG_EVENT_BASE + 0x1000 - 1, ///< Max value = 0x11010fff From 9baa65f8d560b5973dbddf3d25c586b4e9a60d3a Mon Sep 17 00:00:00 2001 From: payton Date: Tue, 26 Dec 2023 14:58:00 +0800 Subject: [PATCH 2/2] =?UTF-8?q?1.=E5=90=88=E5=B9=B6rtos=E4=B8=8Bemmc?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cardv/SrcCode/UIApp/MovieFast/MovieFast.c | 47 ++++++++++++- .../cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c | 66 +++++++------------ .../cardv/SrcCode/UIApp/PhotoFast/PhotoFast.h | 2 + .../SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c | 8 +-- 4 files changed, 74 insertions(+), 49 deletions(-) diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c index 6252c77a2..c2079f0a6 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -102,6 +102,11 @@ static lfqueue_t write_queue = {0}; //local variable static DCF_HANDLE g_dcf_hdl = 0; + +#if (FS_MULTI_STRG_FUNC) +static DCF_HANDLE g_dcf_hdl2 = 0; +#endif + static ID MOVIEFAST_FLG_ID = 0; static UINT32 g_moviefast_tsk_run = 1; static UINT32 g_moviefast_poweroff_tsk_run = 1; @@ -852,6 +857,16 @@ static void MovieFast_OnRecStop(void) } +static DCF_HANDLE MovieFast_Get_DCF_Handle(void) +{ +#if (FS_MULTI_STRG_FUNC) + /* check free space here */ + return g_dcf_hdl2; +#else + return g_dcf_hdl; +#endif +} + static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) { //1. The FileID and DirID is set at booting. @@ -863,7 +878,8 @@ static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) DBG_ERR("Exceed max dcf file!\r\n"); pFileName[0] = '\0'; } else { - DCF_GetNextID(&nextFolderID,&nextFileID); + DCF_HANDLE handle = MovieFast_Get_DCF_Handle(); + DCF_GetNextIDEx(handle, &nextFolderID,&nextFileID); if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2) { Movie2_nextFolderID = nextFolderID; @@ -900,8 +916,8 @@ static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) } } } - DCF_MakeObjPath(nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName); - DCF_AddDBfile(pFileName); + DCF_MakeObjPathEx(handle, nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName); + DCF_AddDBfileEx(handle, pFileName); DBG_DUMP("%s added to DCF\r\n", pFileName); #if HUNTING_CAMERA_MCU == ENABLE char tmp[NMC_TOTALFILEPATH_MAX_LEN] = {'\0'}; @@ -1198,6 +1214,26 @@ THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg) DCF_SetDirFreeChars(DCF_DIR_NAME); DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); DCF_ScanObj(); + +#if (FS_MULTI_STRG_FUNC) + { + DCF_OPEN_PARM dcfParm = { + .Drive = 'B', + .WorkbuffAddr = mempool_dcf + POOL_SIZE_DCF_BUFFER, + .WorkbuffSize = POOL_SIZE_DCF_BUFFER, + }; + g_dcf_hdl2 = DCF_Open(&dcfParm); + if(g_dcf_hdl2 < 0){ + DBG_ERR("get dcf handle error!\n"); + } + + + DBG_WRN("DCF_ScanObjEx emmc handle=%d\n", g_dcf_hdl2); + DCF_ScanObjEx(g_dcf_hdl2); + } +#endif + + #if HUNTING_CAMERA_MCU == ENABLE if(TRUE != sf_is_card_full()) #endif @@ -1894,6 +1930,11 @@ static void MovieFast_Close(void) EXIT: DCF_Close(g_dcf_hdl); + +#if (FS_MULTI_STRG_FUNC) + DCF_Close(g_dcf_hdl2); +#endif + DCF_UnInstallID(); vos_flag_destroy(MOVIEFAST_FLG_ID); diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c index 4b9102435..5484fb608 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -88,7 +88,11 @@ static CHAR g_photo_fast_write_file_Path[NMC_TOTALFILEPATH_MAX_LE static INT32 g_photo_fast_id_mapping[PHOTO_CAP_ID_MAX] = {-1,-1}; static PHOTO_FILENAME_CB *g_fpPhotoFastFileNameCB = NULL; static DCF_HANDLE g_dcf_hdl = 0; + +#if (FS_MULTI_STRG_FUNC) static DCF_HANDLE g_dcf_hdl2 = 0; +#endif + static HD_PATH_ID g_video_enc_path[PHOTO_ENC_JPG_TYPE_MAX_ID] = {0}; static UINT32 g_bVideoEncPathStart[PHOTO_ENC_JPG_TYPE_MAX_ID] = {0}; static HD_VIDEOENC_BUFINFO g_enc_buf_info[PHOTO_ENC_JPG_TYPE_MAX_ID] = {0}; @@ -737,12 +741,6 @@ INT32 PhotoFast_FileNaming_Open(void) DBG_WRN("DCF_ScanObjEx emmc handle=%d\n", g_dcf_hdl2); -// DCF_SetParm(DCF_PRMID_REMOVE_DUPLICATE_FOLDER, TRUE); -// DCF_SetParm(DCF_PRMID_REMOVE_DUPLICATE_FILE, TRUE); -// DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_MP4|DCF_FILE_TYPE_MOV); -// DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO); -// DCF_SetDirFreeChars(DCF_DIR_NAME); -// DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); DCF_ScanObjEx(g_dcf_hdl2); } #endif @@ -761,8 +759,10 @@ INT32 PhotoFast_FileNaming_Close(void) } #if (FS_MULTI_STRG_FUNC) - DCF_Close(g_dcf_hdl2); - g_dcf_hdl2 = -1; + if(g_dcf_hdl2 >= 0){ + DCF_Close(g_dcf_hdl2); + g_dcf_hdl2 = -1; + } #endif DCF_UnInstallID(); @@ -881,23 +881,29 @@ void PhotoFast_FileNaming_SetSortBySN(CHAR *pDelimStr, UINT32 nDelimCount, UINT3 DBG_ERR("No set Delim String!!\r\n"); } +DCF_HANDLE PhotoFast_Get_DCF_Handle() +{ +#if (FS_MULTI_STRG_FUNC) + /* check free space here */ + return g_dcf_hdl2; +#else + return g_dcf_hdl; +#endif +} + INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* Path) { FST_FILE fp; INT32 rt; UINT32 Length; CHAR FilePath[NMC_TOTALFILEPATH_MAX_LEN]; - -#if FS_MULTI_STRG_FUNC - CHAR FilePath2[NMC_TOTALFILEPATH_MAX_LEN]; -#endif - UINT32 fileType; UINT32 open_flag; - UINT32 nextFolderID = 0, nextFileID = 0; + UINT32 nextFolderID = 0, nextFileID = 0; + DCF_HANDLE handle = PhotoFast_Get_DCF_Handle(); /* handle determines which storage would be written */ if(Path == NULL){ - if (DCF_GetDBInfo(DCF_INFO_IS_9999)) { + if (DCF_GetDBInfoEx(handle, DCF_INFO_IS_9999)) { DBG_ERR("Exceed max dcf file!\r\n"); return FST_STA_NOFREE_SPACE; } @@ -908,7 +914,7 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, else{ fileType = DCF_FILE_TYPE_JPG; } - DCF_GetNextID(&nextFolderID,&nextFileID); + DCF_GetNextIDEx(handle, &nextFolderID,&nextFileID); if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2) { nextFolderID = Movie2_nextFolderID; @@ -933,8 +939,8 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, } } } - DCF_MakeObjPath(nextFolderID, nextFileID, fileType, FilePath); - DCF_AddDBfile(FilePath); + DCF_MakeObjPathEx(handle, nextFolderID, nextFileID, fileType, FilePath); + DCF_AddDBfileEx(handle, FilePath); DBG_DUMP("%s added to DCF\r\n", FilePath); } @@ -1004,30 +1010,6 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, DBG_ERR("FileSys_OpenFile fail\r\n"); rt =FST_STA_ERROR; } - -#if FS_MULTI_STRG_FUNC - - DBG_WRN("write %s\n", FilePath2); - if ((fp = FileSys_OpenFile(FilePath2, open_flag)) != NULL) { - Length = Size; - - rt = FileSys_WriteFile(fp, (UINT8 *)Addr, &Length, 0, NULL); - FileSys_FlushFile(fp); - FileSys_CloseFile(fp); - if (rt == FST_STA_OK) { - // DCF_AddDBfile(FilePath); - // DBG_DUMP("%s added to DCF\r\n", FilePath); - } else { - DBG_ERR("Addr=0x%x,Size=0x%x,Fmt=%d\r\n", Addr, Size, Fmt); - } - }else{ - DBG_ERR("FileSys_OpenFile fail\r\n"); - rt =FST_STA_ERROR; - } - -#endif - - return rt; } diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.h b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.h index 3aae8e853..280e32b9c 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.h +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.h @@ -4,6 +4,7 @@ #include "hd_common.h" #include "UIAppPhoto.h" #include +#include "DCF.h" #define FLGPHOTOFAST_CHGMODE 0x00000001 #define FLGPHOTOFAST_SHUTDOWN 0x00000002 @@ -62,5 +63,6 @@ extern BOOL PhotoFast_SetTriggerFrmCnt(UINT32 cnt); /* trigger vcap frame count UINT32 PhotoFast_GetTriggerFrmCnt(VOID); extern UINT32 PhotoFast_GetTickBufSize(void); ER PhotoFast_Movie_Init(void); +DCF_HANDLE PhotoFast_Get_DCF_Handle(void); #endif //_UIAPP_PHOTO_H_ diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c b/rtos/code/application/source/cardv/SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c index a6e618cb0..95c421c6d 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/UsbDisk/UIAppUsbDisk_Exe.c @@ -153,10 +153,10 @@ ER AppInit_ModeUSBMSDC(void) MSDCInfo.msdc_vendor_cb = NULL; //#NT#2016/12/20#Niven Cho -begin //#NT#MULTI_DRIVE -// #if (FS_MULTI_STRG_FUNC == ENABLE) -// char *pDxName2 = NULL; -// DX_HANDLE pStrgDev2 = 0; -// #endif +//#if (FS_MULTI_STRG_FUNC == ENABLE) +// char *pDxName2 = NULL; +// DX_HANDLE pStrgDev2 = 0; +//#endif pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT | FS_DX_TYPE_DRIVE_A);