nt9856x/code/application/source/cardv/SrcCode/UIApp/MovieStamp/MovieStampTsk.c
2023-03-28 15:07:53 +08:00

96 lines
2.4 KiB
C
Executable File

//#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 <kwrap/debug.h>
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);
}
//@}