//#include "SysKer.h" #include "MovieStampAPI.h" #include "MovieStampInt.h" #include "kwrap/error_no.h" #include "kwrap/flag.h" #define __MODULE__ MovieStampTask #define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER #define __DBGFLT__ "*" //*=All, [mark]=CustomClass #include static BOOL g_bMovieStampTskOpened = FALSE; static BOOL g_bMovieStampTskClosing = FALSE; static MOVIESTAMP_UPDATE_CB g_MovieStampUpdateCb = NULL; static MOVIESTAMP_TRIGGER_UPDATE_CHECK_CB g_MovieStampTrigUpdateChkCb = NULL; #define PRI_MOVIESTAMP 9//10 #define STKSIZE_MOVIESTAMP 4096 ER MovieStampTsk_Open(void) { if (g_bMovieStampTskOpened) { return E_SYS; } MovieStamp_InstallID(); vos_flag_clr(FLG_ID_MOVIESTAMP, FLGMOVIESTAMP_ALL); g_bMovieStampTskOpened = TRUE; g_bMovieStampTskClosing = FALSE; //sta_tsk(MOVIESTAMPTSK_ID, 0); MOVIESTAMPTSK_ID=vos_task_create(MovieStampTsk, 0, "MovieStampTsk", PRI_MOVIESTAMP, STKSIZE_MOVIESTAMP); vos_task_resume(MOVIESTAMPTSK_ID); return E_OK; } ER MovieStampTsk_Close(void) { FLGPTN FlgPtn; if (!g_bMovieStampTskOpened) { return E_SYS; } g_bMovieStampTskClosing = TRUE; vos_flag_wait(&FlgPtn, FLG_ID_MOVIESTAMP, FLGMOVIESTAMP_IDLE, TWF_ORW); vos_task_destroy(MOVIESTAMPTSK_ID); MovieStamp_UnInstallID(); g_bMovieStampTskOpened = FALSE; return E_OK; } void MovieStampTsk_TrigUpdate(void) { set_flg(FLG_ID_MOVIESTAMP, FLGMOVIESTAMP_UPDATE); } void MovieStampTsk_RegTrigUpdateChkCB(MOVIESTAMP_TRIGGER_UPDATE_CHECK_CB fpMovieStampTrigUpdateChkCb) { g_MovieStampTrigUpdateChkCb = fpMovieStampTrigUpdateChkCb; } void MovieStampTsk_RegUpdateCB(MOVIESTAMP_UPDATE_CB fpMovieStampUpdate) { g_MovieStampUpdateCb = fpMovieStampUpdate; } BOOL MovieStampTsk_IsOpen(void) { return g_bMovieStampTskOpened; } THREAD_RETTYPE MovieStampTsk(void) { FLGPTN FlgPtn; THREAD_ENTRY(); while (MOVIESTAMPTSK_ID) { vos_flag_set(FLG_ID_MOVIESTAMP, FLGMOVIESTAMP_IDLE); PROFILE_TASK_IDLE(); vos_flag_wait(&FlgPtn, FLG_ID_MOVIESTAMP, FLGMOVIESTAMP_UPDATE, TWF_ORW | TWF_CLR); PROFILE_TASK_BUSY(); vos_flag_clr(FLG_ID_MOVIESTAMP, FLGMOVIESTAMP_IDLE); if (FlgPtn & FLGMOVIESTAMP_UPDATE) { if (g_MovieStampUpdateCb && (g_bMovieStampTskClosing == FALSE)) { if (g_MovieStampTrigUpdateChkCb && g_MovieStampTrigUpdateChkCb()==1) { g_MovieStampUpdateCb(); } } } } THREAD_RETURN(0); } //@}