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