96 lines
2.4 KiB
C
Executable File
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);
|
|
}
|
|
|
|
//@}
|