1.rtos合并emmc修改

This commit is contained in:
payton 2023-12-29 11:51:11 +08:00
parent f6e9ed6ab3
commit e59243751a
10 changed files with 317 additions and 157 deletions

View File

@ -911,7 +911,9 @@ void Nvti2c_DevPowerOnReset(UINT32 GpioI2cCLK, UINT32 GpioI2cDAT)
static void fastboot(void) static void fastboot(void)
{ {
VK_TASK_HANDLE handle_photo_filenaming = 0; VK_TASK_HANDLE handle_photo_filenaming = 0;
VK_TASK_HANDLE handle_photo_filenaming2 = 0;
VK_TASK_HANDLE handle_movie_filenaming = 0; VK_TASK_HANDLE handle_movie_filenaming = 0;
VK_TASK_HANDLE handle_movie_filenaming2 = 0;
VK_TASK_HANDLE handle_movie_moviemode = 0; VK_TASK_HANDLE handle_movie_moviemode = 0;
#if (FASTBOOT_USB_FUNC == ENABLE) #if (FASTBOOT_USB_FUNC == ENABLE)
VK_TASK_HANDLE handle_usb_msdcmode = 0; VK_TASK_HANDLE handle_usb_msdcmode = 0;
@ -977,7 +979,7 @@ static void fastboot(void)
#endif #endif
// wait all text-code loaded // wait all text-code loaded
fwload_wait_done(CODE_SECTION_10); fwload_wait_done(CODE_SECTION_05);
handle_photo_filenaming = vos_task_create(PhotoFast_InitFileNamingThread, "init_fn", NULL, 10, DEFAULT_STASK_SIZE); handle_photo_filenaming = vos_task_create(PhotoFast_InitFileNamingThread, "init_fn", NULL, 10, DEFAULT_STASK_SIZE);
if(!handle_photo_filenaming){ if(!handle_photo_filenaming){
@ -986,6 +988,13 @@ static void fastboot(void)
else else
vos_task_resume(handle_photo_filenaming); vos_task_resume(handle_photo_filenaming);
handle_photo_filenaming2 = vos_task_create(PhotoFast_InitFileNamingThread2, "init_fn", NULL, 10, DEFAULT_STASK_SIZE);
if(!handle_photo_filenaming2){
DBG_ERR("create PhotoFast_InitFileNamingThread2 failed\n");
}
else
vos_task_resume(handle_photo_filenaming2);
break; break;
case DX_HUNTING_MODE_MOVIE2: case DX_HUNTING_MODE_MOVIE2:
case DX_HUNTING_MODE_MOVIE: case DX_HUNTING_MODE_MOVIE:
@ -1013,6 +1022,12 @@ static void fastboot(void)
else else
vos_task_resume(handle_movie_filenaming); vos_task_resume(handle_movie_filenaming);
handle_movie_filenaming2 = vos_task_create(MovieFast_InitFileNamingThread2, "init_fn2", NULL, 10, 8192);
if (!handle_movie_filenaming2) {
DBG_ERR("create MovieFast_InitFileNamingThread2 failed\r\n");
}
else
vos_task_resume(handle_movie_filenaming2);
handle_movie_moviemode = vos_task_create(MovieFast_InitMovieModeThread, "init_movie", NULL, 10, 8192); handle_movie_moviemode = vos_task_create(MovieFast_InitMovieModeThread, "init_movie", NULL, 10, 8192);
if (!handle_movie_moviemode) { if (!handle_movie_moviemode) {

View File

@ -2,13 +2,16 @@
#define SYS_FASTBOOT_H #define SYS_FASTBOOT_H
typedef enum _BOOT_INIT_ { typedef enum _BOOT_INIT_ {
BOOT_INIT_SYSTEM, BOOT_INIT_INVALID = -1,
BOOT_INIT_SYSTEM = 0,
BOOT_INIT_SENSOR, BOOT_INIT_SENSOR,
BOOT_INIT_CAPTURE, BOOT_INIT_CAPTURE,
BOOT_INIT_DISPLAY, BOOT_INIT_DISPLAY,
BOOT_INIT_STORAGE, BOOT_INIT_STORAGE,
BOOT_INIT_FILESYSOK, BOOT_INIT_FILESYSOK,
BOOT_INIT_FILESYSOK_2,
BOOT_INIT_FILENAMINGOK, BOOT_INIT_FILENAMINGOK,
BOOT_INIT_FILENAMINGOK_2,
BOOT_INIT_MEIDA_ENCODER, BOOT_INIT_MEIDA_ENCODER,
BOOT_INIT_MEIDA_DECODER, BOOT_INIT_MEIDA_DECODER,
BOOT_INIT_BOOTLOGO, BOOT_INIT_BOOTLOGO,

View File

@ -26,7 +26,7 @@
#define GPIO_CARD_INSERT_LEVEL (FALSE) // low active #define GPIO_CARD_INSERT_LEVEL (FALSE) // low active
#define MAX_OPENED_FILE_NUM 10 #define MAX_OPENED_FILE_NUM 10
static THREAD_HANDLE task_hdl; static THREAD_HANDLE task_hdl, task_hdl2;
static void card_insert_job(void) static void card_insert_job(void)
{ {
@ -34,7 +34,7 @@ static void card_insert_job(void)
int ret; int ret;
FILE_TSK_INIT_PARAM Param = {0}; FILE_TSK_INIT_PARAM Param = {0};
FS_HANDLE StrgDXH, StrgDXH2; FS_HANDLE StrgDXH;
printf("filesys_init b\r\n"); printf("filesys_init b\r\n");
memset(&Param, 0, sizeof(FILE_TSK_INIT_PARAM)); memset(&Param, 0, sizeof(FILE_TSK_INIT_PARAM));
@ -44,49 +44,6 @@ static void card_insert_job(void)
StrgDXH = (FS_HANDLE)sdio_getStorageObject(STRG_OBJ_FAT1); StrgDXH = (FS_HANDLE)sdio_getStorageObject(STRG_OBJ_FAT1);
#endif #endif
#if FS_MULTI_STRG_FUNC
StrgDXH2 = (FS_HANDLE)sdio2_getStorageObject(STRG_OBJ_FAT1);
DBG_WRN("sdio2_getStorageObject\n");
{
UINT32 totoal_sectors = 0;
// UINT32 uiPhyAddr = 0;
// UINT32 uiPhySize = 0;
// unsigned long long partition_ofs= 0, partition_size = 0;
// unsigned long long usr_area_size = 0;
STORAGE_OBJ* pStrg = sdio2_getStorageObject(STRG_OBJ_FAT1);
// void *strg_mem = malloc(0x300);
// pStrg->SetParam(STRG_SET_MEMORY_REGION, (UINT32)strg_mem, 0x300);
pStrg->Open(); //for initial emmc speed up, should open first, and then set partition
pStrg->GetParam(STRG_GET_DEVICE_PHY_SECTORS, (UINT32)&totoal_sectors, 0);
if (totoal_sectors == 0) {
DBG_WRN("totoal_sectors couldn't be zero\n");
}
DBG_WRN("storage_partition_init: totoal_sectors = %d\r\n", totoal_sectors);
pStrg->SetParam(STRG_SET_PARTITION_SECTORS, 16, totoal_sectors - 16);
// pStrg->Close();
//set the FAT size
// ret = storage_get_partition_addr(&partition_ofs, &partition_size, PARTITION_PATH_ROOTFSL1);
// usr_area_size = (unsigned long long)totoal_sectors*(unsigned long long)_EMBMEM_BLK_SIZE_;
// uiPhyAddr = partition_ofs/_EMBMEM_BLK_SIZE_;
// uiPhySize = (usr_area_size - partition_ofs)/_EMBMEM_BLK_SIZE_;
// if (ret == 0) {
// pStrg = EMB_GETSTRGOBJ(STRG_OBJ_FW_FAT);
// pStrg->SetParam(STRG_SET_MEMORY_REGION, (UINT32)strg_mem, STRG_MEM_SIZE);
// pStrg->SetParam(STRG_SET_PARTITION_SECTORS, uiPhyAddr, uiPhySize);
// } else {
// DBG_ERR("Cat get the %s path info\r\n", PARTITION_PATH_ROOTFSL1);
// }
}
#endif
uiPoolAddr = mempool_filesys; uiPoolAddr = mempool_filesys;
Param.FSParam.WorkBuf = uiPoolAddr; Param.FSParam.WorkBuf = uiPoolAddr;
Param.FSParam.WorkBufSize = (POOL_SIZE_FILESYS); Param.FSParam.WorkBufSize = (POOL_SIZE_FILESYS);
@ -108,21 +65,33 @@ static void card_insert_job(void)
FileSys_SetParamEx('A', FST_PARM_UPDATE_FSINFO , TRUE); FileSys_SetParamEx('A', FST_PARM_UPDATE_FSINFO , TRUE);
SF_RtosStrgRegister(0, ret); SF_RtosStrgRegister(0, ret);
#if HUNTING_CAMERA_MCU == ENABLE
//if(TRUE == sf_check_card_full())
//{
//DBG_WRN("ERR card full\r\n");
fastboot_set_done(BOOT_INIT_FILESYSOK);
//}
//else
//{
// sf_log_confg(); printf("filesys_init e\r\n");
// sf_log_open(); }
//}
#endif
static void card_insert_job2(void)
{
#if FS_MULTI_STRG_FUNC #if FS_MULTI_STRG_FUNC
UINT32 uiPoolAddr;
int ret;
FILE_TSK_INIT_PARAM Param = {0};
FS_HANDLE StrgDXH2;
UINT32 start_sector = 16 ; /* linux cmd fdisk can list partition info */
UINT32 totoal_sectors = 0;
StrgDXH2 = (FS_HANDLE)sdio2_getStorageObject(STRG_OBJ_FAT1);
STORAGE_OBJ* pStrg = sdio2_getStorageObject(STRG_OBJ_FAT1);
printf("filesys2_init b\r\n");
memset(&Param, 0, sizeof(FILE_TSK_INIT_PARAM));
pStrg->Open();
pStrg->GetParam(STRG_GET_DEVICE_PHY_SECTORS, (UINT32)&totoal_sectors, 0);
if (totoal_sectors == 0) {
DBG_WRN("totoal_sectors couldn't be zero\n");
}
pStrg->SetParam(STRG_SET_PARTITION_SECTORS, start_sector, totoal_sectors - start_sector);
uiPoolAddr = mempool_filesys + POOL_SIZE_FILESYS; uiPoolAddr = mempool_filesys + POOL_SIZE_FILESYS;
Param.FSParam.WorkBuf = uiPoolAddr; Param.FSParam.WorkBuf = uiPoolAddr;
Param.FSParam.WorkBufSize = (POOL_SIZE_FILESYS); Param.FSParam.WorkBufSize = (POOL_SIZE_FILESYS);
@ -132,22 +101,19 @@ static void card_insert_job(void)
strncpy(Param.FSParam.szMountPath, "/mnt/sd2", sizeof(Param.FSParam.szMountPath) - 1); //only used by FsLinux strncpy(Param.FSParam.szMountPath, "/mnt/sd2", sizeof(Param.FSParam.szMountPath) - 1); //only used by FsLinux
Param.FSParam.szMountPath[sizeof(Param.FSParam.szMountPath) - 1] = '\0'; Param.FSParam.szMountPath[sizeof(Param.FSParam.szMountPath) - 1] = '\0';
Param.FSParam.MaxOpenedFileNum = MAX_OPENED_FILE_NUM; Param.FSParam.MaxOpenedFileNum = MAX_OPENED_FILE_NUM;
// if (FST_STA_OK != FileSys_Init(FileSys_GetOPS_uITRON())) {
// printf("FileSys_Init failed\r\n");
// }
DBG_WRN("Open B:\n"); DBG_WRN("Open B:\n");
ret = FileSys_OpenEx('B', StrgDXH2, &Param); ret = FileSys_OpenEx('B', StrgDXH2, &Param);
if (FST_STA_OK != ret) { if (FST_STA_OK != ret) {
printf("FileSys_Open err %d\r\n", ret); printf("FileSys_Open err %d\r\n", ret);
} }
// call the function to wait init finish
FileSys_WaitFinishEx('B'); FileSys_WaitFinishEx('B');
SF_RtosStrgRegister(1, ret); SF_RtosStrgRegister(1, ret);
// FileSys_SetParamEx('B', FST_PARM_UPDATE_FSINFO , TRUE); fastboot_set_done(BOOT_INIT_FILESYSOK_2);
printf("filesys2_init e\r\n");
#endif #endif
//fastboot_set_done(BOOT_INIT_FILESYSOK);
DBG_WRN("filesys_init e\r\n");
} }
#if !defined(_EMBMEM_EMMC_) #if !defined(_EMBMEM_EMMC_)
@ -200,6 +166,15 @@ static void sys_detect_card_task(void)
THREAD_RETURN(0); THREAD_RETURN(0);
#endif #endif
} }
static void sys_detect_card_task2(void)
{
THREAD_ENTRY();
card_insert_job2();
THREAD_RETURN(0);
}
#endif #endif
void filesys_init(void) void filesys_init(void)
@ -231,6 +206,9 @@ void filesys_init(void)
if(DrvGPIO_GetHuntingWorkMode() != HUNTING_NORMAL_MODE){ if(DrvGPIO_GetHuntingWorkMode() != HUNTING_NORMAL_MODE){
task_hdl = vos_task_create(sys_detect_card_task, 0, "SysDetectCard", 12, 4096); task_hdl = vos_task_create(sys_detect_card_task, 0, "SysDetectCard", 12, 4096);
vos_task_resume(task_hdl); vos_task_resume(task_hdl);
task_hdl2 = vos_task_create(sys_detect_card_task2, 0, "SysDetectCard2", 12, 4096);
vos_task_resume(task_hdl2);
} }
#endif #endif

View File

@ -101,11 +101,11 @@ static lfqueue_t write_queue = {0};
#define STKSIZE_MOVIEFAST_CMDTSK 8192 #define STKSIZE_MOVIEFAST_CMDTSK 8192
#define MOVIEFAST_REC_SEC 10 #define MOVIEFAST_REC_SEC 10
//local variable
static DCF_HANDLE g_dcf_hdl = 0; DCF_HANDLE g_dcf_hdl = -1;
#if (FS_MULTI_STRG_FUNC) #if (FS_MULTI_STRG_FUNC)
static DCF_HANDLE g_dcf_hdl2 = 0; DCF_HANDLE g_dcf_hdl2 = -1;
#endif #endif
static ID MOVIEFAST_FLG_ID = 0; static ID MOVIEFAST_FLG_ID = 0;
@ -875,6 +875,50 @@ static DCF_HANDLE MovieFast_Get_DCF_Handle(void)
DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle); DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
return mmc_dev->dcf_handle; return mmc_dev->dcf_handle;
} }
INT32 MovieFast_Wait_FileSys(UINT32 timeout_ms)
{
DCF_HANDLE handle = MovieFast_Get_DCF_Handle();
BOOT_INIT boot_init = BOOT_INIT_INVALID;
if(handle == g_dcf_hdl){
boot_init = BOOT_INIT_FILESYSOK;
}
#if (FS_MULTI_STRG_FUNC)
else if(handle == g_dcf_hdl2){
boot_init = BOOT_INIT_FILESYSOK_2;
}
#endif
if(boot_init != BOOT_INIT_INVALID)
return fastboot_wait_done_timeout(boot_init, timeout_ms);
else{
DBG_ERR("boot_init = BOOT_INIT_INVALID\n");
return E_SYS;
}
}
INT32 MovieFast_Wait_FileNaming(UINT32 timeout_ms)
{
DCF_HANDLE handle = MovieFast_Get_DCF_Handle();
BOOT_INIT boot_init = BOOT_INIT_INVALID;
if(handle == g_dcf_hdl){
boot_init = BOOT_INIT_FILENAMINGOK;
}
#if (FS_MULTI_STRG_FUNC)
else if(handle == g_dcf_hdl2){
boot_init = BOOT_INIT_FILENAMINGOK_2;
}
#endif
if(boot_init != BOOT_INIT_INVALID)
return fastboot_wait_done_timeout(boot_init, timeout_ms);
else{
DBG_ERR("boot_init = BOOT_INIT_INVALID\n");
return E_SYS;
}
}
static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
{ {
@ -1018,7 +1062,7 @@ static void MovieFast_WriteFile_Task(void* arg)
lfqueue_t* queue = (lfqueue_t*)arg; lfqueue_t* queue = (lfqueue_t*)arg;
MOVIEFAST_WRITE_QUEUE_PARAM* param; MOVIEFAST_WRITE_QUEUE_PARAM* param;
fastboot_wait_done(BOOT_INIT_FILESYSOK); MovieFast_Wait_FileSys(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS);
#if HUNTING_CAMERA_MCU == ENABLE #if HUNTING_CAMERA_MCU == ENABLE
if(TRUE == sf_is_card_full()) if(TRUE == sf_is_card_full())
{ {
@ -1183,7 +1227,7 @@ static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT3
case MOVIE_USER_CB_EVENT_FILENAMING_EMR_CB: { case MOVIE_USER_CB_EVENT_FILENAMING_EMR_CB: {
CHAR *pFileName = (CHAR *) value; CHAR *pFileName = (CHAR *) value;
if(fastboot_wait_done_timeout(BOOT_INIT_FILENAMINGOK, FASTBOOT_WAIT_FILENAMING_TIMEOUT_MS) == E_OK){ if(MovieFast_Wait_FileNaming(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) == E_OK){
MovieFast_FileNamingCB(id, pFileName); MovieFast_FileNamingCB(id, pFileName);
} }
else{ else{
@ -1213,64 +1257,101 @@ int MovieFast_GetWaterLogoSource(const UINT32 recWidth,WATERLOGO_BUFFER *waterSr
return E_OK; return E_OK;
} }
static void MovieFast_FileNaming_Init(void)
{
static UINT8 is_init = 0;
if(is_init == 1)
return;
is_init = 1;
DCF_InstallID();
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);
}
THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg) THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg)
{ {
if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_PHOTO_MOVIE ){ if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_PHOTO_MOVIE ){
if(fastboot_wait_done_timeout(BOOT_INIT_FILESYSOK, FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK){
goto EXIT;
}
DCF_InstallID();
DCF_OPEN_PARM dcfParm = { DCF_OPEN_PARM dcfParm = {
.Drive = 'A', .Drive = 'A',
.WorkbuffAddr = mempool_dcf, .WorkbuffAddr = mempool_dcf,
.WorkbuffSize = POOL_SIZE_DCF_BUFFER, .WorkbuffSize = POOL_SIZE_DCF_BUFFER,
}; };
g_dcf_hdl = DCF_Open(&dcfParm);
DCF_SetParm(DCF_PRMID_REMOVE_DUPLICATE_FOLDER, TRUE); fastboot_wait_done(BOOT_INIT_FILESYSOK);
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_ScanObj();
#if (FS_MULTI_STRG_FUNC) MovieFast_FileNaming_Init();
{
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");
}
if(g_dcf_hdl == -1){
DBG_WRN("DCF_ScanObjEx emmc handle=%d\n", g_dcf_hdl2); g_dcf_hdl = DCF_Open(&dcfParm);
DCF_ScanObjEx(g_dcf_hdl2); DCF_ScanObjEx(g_dcf_hdl);
}
else{
DBG_WRN("dcf handle1 is already opened\n");
} }
#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())
#endif #endif
{ {
SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2);
fastboot_set_done(BOOT_INIT_FILENAMINGOK); fastboot_set_done(BOOT_INIT_FILENAMINGOK);
} }
} }
EXIT:
THREAD_RETURN(0); THREAD_RETURN(0);
} }
THREAD_RETTYPE MovieFast_InitFileNamingThread2(void *arg)
{
if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_PHOTO_MOVIE ){
#if (FS_MULTI_STRG_FUNC)
DCF_OPEN_PARM dcfParm = {
.Drive = 'B',
.WorkbuffAddr = mempool_dcf + POOL_SIZE_DCF_BUFFER,
.WorkbuffSize = POOL_SIZE_DCF_BUFFER,
};
fastboot_wait_done(BOOT_INIT_FILESYSOK_2);
MovieFast_FileNaming_Init();
if(g_dcf_hdl2== -1){
g_dcf_hdl2 = DCF_Open(&dcfParm);
if(g_dcf_hdl2 < 0){
DBG_ERR("get dcf handle error!\n");
}
}
else{
DBG_WRN("dcf handle2 is already opened\n");
}
DBG_WRN("DCF_ScanObjEx emmc handle=%d\n", g_dcf_hdl2);
DCF_ScanObjEx(g_dcf_hdl2);
#if HUNTING_CAMERA_MCU == ENABLE
if(TRUE != sf_is_card_full())
#endif
{
SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl);
fastboot_set_done(BOOT_INIT_FILENAMINGOK_2);
}
#endif
}
THREAD_RETURN(0);
}
extern void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo); extern void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo);
extern void Set_AEMODE(UINT32 id); extern void Set_AEMODE(UINT32 id);
extern void setet_preset_param(void); extern void setet_preset_param(void);

View File

@ -11,6 +11,7 @@
#define FIX_RECORD_NOISE ENABLE #define FIX_RECORD_NOISE ENABLE
extern THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg); extern THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg);
extern THREAD_RETTYPE MovieFast_InitFileNamingThread2(void *arg);
extern THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg); extern THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg);
typedef enum typedef enum

View File

@ -194,6 +194,10 @@ static ER FontConv_LVGL(FONT_CONV_IN *pIn, FONT_CONV_OUT *pOut)
draw_cfg.align_h = LV_USER_FONT_CONV_ALIGN_H; draw_cfg.align_h = LV_USER_FONT_CONV_ALIGN_H;
draw_cfg.string.align = LV_USER_CFG_STAMP_TEXT_ALIGN; draw_cfg.string.align = LV_USER_CFG_STAMP_TEXT_ALIGN;
draw_cfg.mode = LV_USER_FONT_CONV_DRAW_TEXT;
extern uint32_t palette_define[];
draw_cfg.img.palette = palette_define;
/************************************************ /************************************************
* Color setting convertion flow * Color setting convertion flow
* lv user format argb4444 -> lv format 8888 -> lv format by LV_COLOR_DEPTH (332 or 8888) * lv user format argb4444 -> lv format 8888 -> lv format by LV_COLOR_DEPTH (332 or 8888)

View File

@ -89,10 +89,15 @@ static MEM_RANGE g_photo_fast_fdb_pool = {
static CHAR g_photo_fast_write_file_Path[NMC_TOTALFILEPATH_MAX_LEN] = {0}; static CHAR g_photo_fast_write_file_Path[NMC_TOTALFILEPATH_MAX_LEN] = {0};
static INT32 g_photo_fast_id_mapping[PHOTO_CAP_ID_MAX] = {-1,-1}; static INT32 g_photo_fast_id_mapping[PHOTO_CAP_ID_MAX] = {-1,-1};
static PHOTO_FILENAME_CB *g_fpPhotoFastFileNameCB = NULL; static PHOTO_FILENAME_CB *g_fpPhotoFastFileNameCB = NULL;
static DCF_HANDLE g_dcf_hdl = 0;
/***************************************************
* Get from MovieFast
**************************************************/
extern DCF_HANDLE g_dcf_hdl;
#if (FS_MULTI_STRG_FUNC) #if (FS_MULTI_STRG_FUNC)
static DCF_HANDLE g_dcf_hdl2 = 0; extern DCF_HANDLE g_dcf_hdl2;
#endif #endif
static HD_PATH_ID g_video_enc_path[PHOTO_ENC_JPG_TYPE_MAX_ID] = {0}; static HD_PATH_ID g_video_enc_path[PHOTO_ENC_JPG_TYPE_MAX_ID] = {0};
@ -707,51 +712,82 @@ HD_RESULT PhotoFast_get_hd_common_buf(PPHOTOFAST_HD_COM_BUF p_hd_comm_buf)
return HD_OK; return HD_OK;
} }
INT32 PhotoFast_FileNaming_Open(void) static void PhotoFast_FileNaming_Init(void)
{ {
static UINT8 is_init = 0;
if(is_init == 1)
return;
is_init = 1;
DCF_InstallID(); DCF_InstallID();
DCF_OPEN_PARM dcfParm = {
.Drive = 'A',
.WorkbuffAddr = mempool_dcf,
.WorkbuffSize = POOL_SIZE_DCF_BUFFER,
};
g_dcf_hdl = DCF_Open(&dcfParm);
if(g_dcf_hdl < 0){
DBG_ERR("get dcf handle error!\n");
}
DCF_SetParm(DCF_PRMID_REMOVE_DUPLICATE_FOLDER, TRUE); DCF_SetParm(DCF_PRMID_REMOVE_DUPLICATE_FOLDER, TRUE);
DCF_SetParm(DCF_PRMID_REMOVE_DUPLICATE_FILE, 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_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_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_SetDirFreeChars(DCF_DIR_NAME);
DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME);
DCF_ScanObj(); }
INT32 PhotoFast_FileNaming_Open(void)
{
DCF_OPEN_PARM dcfParm = {
.Drive = 'A',
.WorkbuffAddr = mempool_dcf,
.WorkbuffSize = POOL_SIZE_DCF_BUFFER,
};
PhotoFast_FileNaming_Init();
if(g_dcf_hdl == -1){
g_dcf_hdl = DCF_Open(&dcfParm);
if(g_dcf_hdl < 0){
DBG_ERR("get dcf handle error!\n");
}
DCF_ScanObjEx(g_dcf_hdl);
SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl);
}
else{
DBG_WRN("dcf handle1 is already opened\n");
}
return 0;
}
INT32 PhotoFast_FileNaming_Open2(void)
{
#if (FS_MULTI_STRG_FUNC) #if (FS_MULTI_STRG_FUNC)
{
DCF_OPEN_PARM dcfParm = { DCF_OPEN_PARM dcfParm = {
.Drive = 'B', .Drive = 'B',
.WorkbuffAddr = mempool_dcf + POOL_SIZE_DCF_BUFFER, .WorkbuffAddr = mempool_dcf + POOL_SIZE_DCF_BUFFER,
.WorkbuffSize = POOL_SIZE_DCF_BUFFER, .WorkbuffSize = POOL_SIZE_DCF_BUFFER,
}; };
PhotoFast_FileNaming_Init();
if(g_dcf_hdl2 == -1){
g_dcf_hdl2 = DCF_Open(&dcfParm); g_dcf_hdl2 = DCF_Open(&dcfParm);
if(g_dcf_hdl2 < 0){ if(g_dcf_hdl2 < 0){
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); SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2);
} }
else{
DBG_WRN("dcf handle2 is already opened\n");
}
#endif #endif
return 0; return 0;
} }
INT32 PhotoFast_FileNaming_Close(void) INT32 PhotoFast_FileNaming_Close(void)
{ {
if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_PHOTO_MOVIE ){ if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_PHOTO_MOVIE ){
@ -903,6 +939,50 @@ DCF_HANDLE PhotoFast_Get_DCF_Handle()
DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle); DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
return mmc_dev->dcf_handle; return mmc_dev->dcf_handle;
} }
INT32 PhotoFast_Wait_FileSys(UINT32 timeout_ms)
{
DCF_HANDLE handle = PhotoFast_Get_DCF_Handle();
BOOT_INIT boot_init = BOOT_INIT_INVALID;
if(handle == g_dcf_hdl){
boot_init = BOOT_INIT_FILESYSOK;
}
#if (FS_MULTI_STRG_FUNC)
else if(handle == g_dcf_hdl2){
boot_init = BOOT_INIT_FILESYSOK_2;
}
#endif
if(boot_init != BOOT_INIT_INVALID)
return fastboot_wait_done_timeout(boot_init, timeout_ms);
else{
DBG_ERR("boot_init = BOOT_INIT_INVALID\n");
return E_SYS;
}
}
INT32 PhotoFast_Wait_FileNaming(UINT32 timeout_ms)
{
DCF_HANDLE handle = PhotoFast_Get_DCF_Handle();
BOOT_INIT boot_init = BOOT_INIT_INVALID;
if(handle == g_dcf_hdl){
boot_init = BOOT_INIT_FILENAMINGOK;
}
#if (FS_MULTI_STRG_FUNC)
else if(handle == g_dcf_hdl2){
boot_init = BOOT_INIT_FILENAMINGOK_2;
}
#endif
if(boot_init != BOOT_INIT_INVALID)
return fastboot_wait_done_timeout(boot_init, timeout_ms);
else{
DBG_ERR("boot_init = BOOT_INIT_INVALID\n");
return E_SYS;
}
}
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)
{ {
@ -956,27 +1036,6 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId,
DCF_AddDBfileEx(handle, FilePath); DCF_AddDBfileEx(handle, FilePath);
DBG_DUMP("%s added to DCF\r\n", FilePath); DBG_DUMP("%s added to DCF\r\n", FilePath);
} }
#if 0//FS_MULTI_STRG_FUNC
if (DCF_GetDBInfoEx(g_dcf_hdl2, DCF_INFO_IS_9999)) {
DBG_ERR("Exceed max dcf file!\r\n");
return FST_STA_NOFREE_SPACE;
}
else {
if (Fmt == HD_CODEC_TYPE_RAW){
fileType = DCF_FILE_TYPE_RAW;
}
else{
fileType = DCF_FILE_TYPE_JPG;
}
//DCF_GetNextIDEx(g_dcf_hdl2, &nextFolderID,&nextFileID);
DCF_MakeObjPathEx(g_dcf_hdl2, nextFolderID, nextFileID, fileType, FilePath2);
DCF_AddDBfileEx(g_dcf_hdl2, FilePath2);
DBG_DUMP("%s added to DCF2\r\n", FilePath2);
}
#endif
} }
else{ else{
strncpy(FilePath, Path, sizeof(FilePath)); strncpy(FilePath, Path, sizeof(FilePath));
@ -1484,6 +1543,18 @@ THREAD_RETTYPE PhotoFast_InitFileNamingThread(void *arg)
THREAD_RETURN(0); THREAD_RETURN(0);
} }
THREAD_RETTYPE PhotoFast_InitFileNamingThread2(void *arg)
{
fastboot_wait_done(BOOT_INIT_FILESYSOK_2);
PhotoFast_FileNaming_Open2();
fastboot_set_done(BOOT_INIT_FILENAMINGOK_2);
THREAD_RETURN(0);
}
#include "kwrap/util.h" #include "kwrap/util.h"
//extern void DrvGPIO_IRLed_Turn_Onoff(BOOL onoff); //extern void DrvGPIO_IRLed_Turn_Onoff(BOOL onoff);
extern void DrvGOIO_Turn_Onoff_IRCUT(UINT8 onoff); extern void DrvGOIO_Turn_Onoff_IRCUT(UINT8 onoff);

View File

@ -53,6 +53,7 @@ typedef struct _PHOTOFAST_ENC_SET{
extern void PhotoFast_Cal_Jpg_Size(USIZE *psrc, USIZE *pdest , URECT *pdestwin); extern void PhotoFast_Cal_Jpg_Size(USIZE *psrc, USIZE *pdest , URECT *pdestwin);
extern ER PhotoFast_Scale_YUV(VF_GFX_SCALE *pscale, HD_VIDEO_FRAME *psrc, PHOTOFAST_HD_COM_BUF *pComBufInfo, USIZE *pdest_sz, URECT *pdestwin, HD_VIDEO_PXLFMT pxl_fmt); extern ER PhotoFast_Scale_YUV(VF_GFX_SCALE *pscale, HD_VIDEO_FRAME *psrc, PHOTOFAST_HD_COM_BUF *pComBufInfo, USIZE *pdest_sz, URECT *pdestwin, HD_VIDEO_PXLFMT pxl_fmt);
extern THREAD_RETTYPE PhotoFast_InitFileNamingThread(void *arg); extern THREAD_RETTYPE PhotoFast_InitFileNamingThread(void *arg);
extern THREAD_RETTYPE PhotoFast_InitFileNamingThread2(void *arg);
extern THREAD_RETTYPE PhotoFast_EncodeBsPullThread(void *arg); extern THREAD_RETTYPE PhotoFast_EncodeBsPullThread(void *arg);
extern THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg); extern THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg);
extern void PhotoFast_PhotoClose(void); extern void PhotoFast_PhotoClose(void);
@ -64,5 +65,7 @@ UINT32 PhotoFast_GetTriggerFrmCnt(VOID);
extern UINT32 PhotoFast_GetTickBufSize(void); extern UINT32 PhotoFast_GetTickBufSize(void);
ER PhotoFast_Movie_Init(void); ER PhotoFast_Movie_Init(void);
DCF_HANDLE PhotoFast_Get_DCF_Handle(void); DCF_HANDLE PhotoFast_Get_DCF_Handle(void);
INT32 PhotoFast_Wait_FileSys(UINT32 timeout_ms);
INT32 PhotoFast_Wait_FileNaming(UINT32 timeout_ms);
#endif //_UIAPP_PHOTO_H_ #endif //_UIAPP_PHOTO_H_

View File

@ -1772,11 +1772,11 @@ INT32 PhotoFast_SliceEncode(const HD_PATH_ID vproc_path_id, const HD_VIDEO_FRAME
extern INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* path); extern INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* path);
if(fastboot_wait_done_timeout(BOOT_INIT_FILESYSOK, FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK){ if(PhotoFast_Wait_FileSys(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK){
goto EXIT; goto EXIT;
} }
if(fastboot_wait_done_timeout(BOOT_INIT_FILENAMINGOK, FASTBOOT_WAIT_FILENAMING_TIMEOUT_MS) != E_OK){ if(PhotoFast_Wait_FileNaming(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK){
goto EXIT; goto EXIT;
} }
@ -2248,7 +2248,7 @@ INT32 PhotoFast_SliceEncode_CB2(void* user_data)
if(param->cnt >= param->max_cnt) if(param->cnt >= param->max_cnt)
break; break;
#if SF_NO_SD_SEND == ENABLE #if SF_NO_SD_SEND == ENABLE
if(fastboot_wait_done_timeout(BOOT_INIT_FILESYSOK, 1) != E_OK){ if(PhotoFast_Wait_FileSys(1) != E_OK){
goto EXIT; goto EXIT;
} }
#endif #endif
@ -2274,6 +2274,8 @@ EXIT:
memset(queue_ele_out, 0, sizeof(PhotoFast_SliceEncode_Queue23_Param)); memset(queue_ele_out, 0, sizeof(PhotoFast_SliceEncode_Queue23_Param));
queue_ele_out->comm.terminate = 1; queue_ele_out->comm.terminate = 1;
lfqueue_enq(param->queue23, (void*) queue_ele_out); lfqueue_enq(param->queue23, (void*) queue_ele_out);
extern void flow_preview_set_stop_flag(BOOL flag);
flow_preview_set_stop_flag(TRUE);
} }
DBG_DUMP("task2 job finished\n"); DBG_DUMP("task2 job finished\n");
@ -2317,7 +2319,9 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data)
******************************************************************/ ******************************************************************/
extern INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* Path); extern INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* Path);
#if SF_NO_SD_SEND == ENABLE #if SF_NO_SD_SEND == ENABLE
if(fastboot_wait_done_timeout(BOOT_INIT_FILESYSOK, FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK || fastboot_wait_done_timeout(BOOT_INIT_FILENAMINGOK, FASTBOOT_WAIT_FILENAMING_TIMEOUT_MS) != E_OK){ if(
PhotoFast_Wait_FileSys(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK ||
PhotoFast_Wait_FileNaming(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK){
DBG_WRN("filesys not ready, store data into mem\n"); DBG_WRN("filesys not ready, store data into mem\n");
@ -2333,11 +2337,11 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data)
} }
else else
#else #else
if(fastboot_wait_done_timeout(BOOT_INIT_FILESYSOK, FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK){ if(PhotoFast_Wait_FileSys(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK){
goto EXIT; goto EXIT;
} }
if(fastboot_wait_done_timeout(BOOT_INIT_FILENAMINGOK, FASTBOOT_WAIT_FILENAMING_TIMEOUT_MS) != E_OK){ if(PhotoFast_Wait_FileNaming(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK){
goto EXIT; goto EXIT;
} }
#endif #endif

View File

@ -33,7 +33,7 @@ INT32 PhotoFast_SliceEncode_Close(void);
INT32 PhotoFast_SliceEncode(const HD_PATH_ID vproc_path_id, const HD_VIDEO_FRAME *p_video_frame); INT32 PhotoFast_SliceEncode(const HD_PATH_ID vproc_path_id, const HD_VIDEO_FRAME *p_video_frame);
INT32 PhotoFast_SliceEncode_Get_Curr_Dst_Slice_Info(PhotoFast_SliceSize_Info *info, const HD_VIDEO_FRAME src_frame); INT32 PhotoFast_SliceEncode_Get_Curr_Dst_Slice_Info(PhotoFast_SliceSize_Info *info, const HD_VIDEO_FRAME src_frame);
INT32 PhotoFast_SliceEncode_Get_Max_Dst_Slice_Buffer_Size(HD_VIDEO_PXLFMT pxl_fmt); INT32 PhotoFast_SliceEncode_Get_Max_Dst_Slice_Buffer_Size(HD_VIDEO_PXLFMT pxl_fmt);
HD_DIM PhotoFast_SliceEncode_Get_Curr_Photo_Size(VOID);
#if POWERON_FAST_SLICE_ENC_VER2 == ENABLE #if POWERON_FAST_SLICE_ENC_VER2 == ENABLE
INT32 PhotoFast_SliceEncode2_Open( INT32 PhotoFast_SliceEncode2_Open(