diff --git a/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c b/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c index 432a9faf5..42f0d7f1c 100644 --- a/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c +++ b/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c @@ -981,6 +981,8 @@ static void fastboot(void) 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_moviefast_power_off_tsk_id = 0; + #if (FASTBOOT_USB_FUNC == ENABLE) VK_TASK_HANDLE handle_usb_msdcmode = 0; VK_TASK_HANDLE handle_usb_uvacmode = 0; @@ -1101,6 +1103,13 @@ static void fastboot(void) } else vos_task_resume(handle_movie_moviemode); + + handle_moviefast_power_off_tsk_id = vos_task_create(MovieFast_PowerOffTsk, 0, "MovieFastPwrTsk", 10, 8192); + if (!handle_moviefast_power_off_tsk_id) { + DBG_ERR("MovieFast_PowerOffTsk create failed.\r\n"); + } else { + vos_task_resume(handle_moviefast_power_off_tsk_id); + } /* GxTime, for stamp */ fwload_wait_done(CODE_SECTION_10); 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 32e8a0360..6b5c77281 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -113,7 +113,7 @@ static UINT32 g_moviefast_tsk_run = 1; static UINT32 g_moviefast_poweroff_tsk_run = 1; static THREAD_HANDLE g_moviefast_tsk_id = 0; static THREAD_HANDLE g_moviefast_raw_tsk_id = 0; -static THREAD_HANDLE g_moviefast_power_off_tsk_id = 0; +// static THREAD_HANDLE g_moviefast_power_off_tsk_id = 0; static THREAD_HANDLE g_moviefast_write_tsk_id = 0; static BOOL g_bIsRecStatus = FALSE; static BOOL g_manual_raw_tsk_running = FALSE; @@ -135,6 +135,7 @@ static void MovieFast_Close(void); static void MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_CFG cfg); extern void sf_log_sava(void); +extern void MovieFast_Set_Shutdown_flag(void); static VOID MovieFast_Set_RecStartTick(VOS_TICK tick) { g_rec_start_tick = tick; @@ -170,15 +171,16 @@ static ER MovieFast_InstallID(void) return ret; } -static THREAD_RETTYPE MovieFast_PowerOffTsk(void) +THREAD_RETTYPE MovieFast_PowerOffTsk(void *arg) { const BOOL delay_ms = 200; - + VOS_TICK t1, t2; THREAD_ENTRY(); DBG_DUMP("MovieFast_PowerOffTsk started\n"); g_moviefast_poweroff_tsk_run = TRUE; + vos_perf_mark(&t1); while(g_moviefast_poweroff_tsk_run) { @@ -187,6 +189,13 @@ static THREAD_RETTYPE MovieFast_PowerOffTsk(void) break; } + vos_perf_mark(&t2); + if((vos_perf_duration(t1, t2) / 1000) > (30*1000)) + { + fastboot_msg_en(ENABLE); + DBG_ERR("failed timeout ID:%d\n", MOVIEFAST_FLG_ID); + break; + } vos_util_delay_ms(delay_ms); } @@ -2049,11 +2058,11 @@ DBG_WRN(">>>>>>>>>>>>>>> movie thread <<<<<<<<<<\r\n"); } vos_util_delay_ms(33); - if ((g_moviefast_power_off_tsk_id = vos_task_create(MovieFast_PowerOffTsk, 0, "MovieFastPwrTsk", PRI_MOVIEFAST_CMDTSK, STKSIZE_MOVIEFAST_CMDTSK)) == 0) { - DBG_ERR("MovieFast_PowerOffTsk create failed.\r\n"); - } else { - vos_task_resume(g_moviefast_power_off_tsk_id); - } + // if ((g_moviefast_power_off_tsk_id = vos_task_create(MovieFast_PowerOffTsk, 0, "MovieFastPwrTsk", PRI_MOVIEFAST_CMDTSK, STKSIZE_MOVIEFAST_CMDTSK)) == 0) { + // DBG_ERR("MovieFast_PowerOffTsk create failed.\r\n"); + // } else { + // vos_task_resume(g_moviefast_power_off_tsk_id); + // } if ((g_moviefast_tsk_id = vos_task_create(MovieFast_CmdTsk, 0, "MovieFastTsk", PRI_MOVIEFAST_CMDTSK, STKSIZE_MOVIEFAST_CMDTSK)) == 0) { DBG_ERR("MovieFast_CmdTsk create failed.\r\n"); diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.h b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.h index 2f6f312b1..933ecf301 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.h +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.h @@ -13,7 +13,7 @@ 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_PowerOffTsk(void *arg); typedef enum { EAC_CONFIG_AD_DMIC_EN, ///< Configure AD(Record) Digital Microphone Enable/Disable.