📄 main_task.c
字号:
#include <gendef.h>
#include "main_task.h"
#include "system_drv.h"
#include "osg.h"
#include "keydef.h"
#include "gfm.h"
#include "gpio.h"
#if (CURRENT_CA == IRDETOCA)
#include "irdeto_ca.h"
#endif
#include "si.h"
#include "user.h"
#include "mcx.h"
#include "demux.h"
#include "avplay.h"
#if (CURRENT_CA == TFCAS)
#include "pub_st.h"
#include "booklist.h"
#endif
#if (CURRENT_BROADCAST == J_AVIT_BROADCAST)
#include "j_lib.h"
#include "j_qam.h"
#endif
/*
#include "booklist.h"
#include "callprog.h"
*/
static const UINT32 DefineColours[COLOR_MAX - COLOR_lightyellow] =
{
0x70ffff00,
0x70cc7a00,
0x70d25400,
0x70ff0000,
0x7066ffff,
0x706699ff,
0x7054547e,
0x7066ff99,
0x700000ff,
0x7000246b,
0x7098a8d2,
0x70999999,
0x70000000,
0x00000000, /*clear */
0x70ffffff, /*white */
0x70000000, /*black */
0x70b30000, /*dtred */
0x70279800, /*thickgreen*/
0x7091b285, /*weakgreen */
0x70000e79, /*thickblue1*/
0x700048b3, /*thickblue2*/
0x700000b3, /*thickblue3*/
0x705286b2, /*weakblue1 */
0x7096a6b3, /*weakblue2 */
0x708f8fb3, /*weakpurple*/
0x70b36a00, /*orange */
0x70b29600, /*midyellow */
0x70b2b300, /*lemonyellow*/
0x70eec000
};
UINT32 MainTaskQueue = 0xfffffff0;
UINT32 TimerTaskID;
static T_FTA_Applet CurrentApplet = FTAdefault,PreviousApplet;
static void MainTaskTask(void);
static void TimerTask(void);/*liuhj(2004-10-29)*/
T_OSGPalette BrocastPalette[256];
void MainTask_Init(UINT8 mode)
{
UINT32 i,j;
int err;
GFMCreateOSGRegion(680,550,0,0);
#if (RGB_MODE==TRUE)
for (i = 0; i < (COLOR_MAX - COLOR_lightyellow); i++)
BrocastPalette[i+ COLOR_lightyellow].reg = DefineColours[i];
#else
for(i = 0; i < (COLOR_MAX - COLOR_lightyellow); i++)
{
BrocastPalette[i + COLOR_lightyellow].reg = GFMConvertRGBToYCbCr((UINT8)(DefineColours[i] >> 16),
(UINT8)(DefineColours[i] >> 8),
(UINT8)DefineColours[i])
| (DefineColours[i] & 0xff000000);
}
#endif
GFMCreateOSGPalette(BrocastPalette);
GPIO_Control_YellowLight( TRUE );
GPIO_Control_RedLight( FALSE);
if (mode)
{
FNTDrawText(0, 0, 0, 0, "Aa1*");
GFMDrawRectangle(0, 0, 680, 550, Colors_clear, TRUE);
DT_DEMUX_Init();
MainTaskQueue = DTOS_DRV_CreatQueue(64);
DTOS_DRV_CreateTask((void (*)(void))MainTaskTask, 8, 0x1000, 0, "BDDT");
TimerTaskID = DTOS_DRV_CreateTask((void (*)(void))TimerTask, 5, 0x100, 0, "TIMT");
}
}
static void TimerTask(void)
{
while (TRUE)
{
task_delay(4000);
SendTimerToMainTask();
}
}
void SendKeyCodeToMainTask(T_KEY_Defines keyCode)
{
T_FTA_Event event;
event.code = keyCode;
event.param2 = keyCode;
if ( MainTaskQueue != 0xfffffff0)
DTOS_DRV_SendMessage(MainTaskQueue, &event);
}
void StopTimerTask()
{
DTOS_DRV_TaskSuspend(TimerTaskID);
}
void RestartTimerTask()
{
DTOS_DRV_TaskResume(TimerTaskID);
}
/******************************
每隔一秒一个消息
******************************/
static UINT8 timers = 0;
void SendTimerToMainTask(void)
{
T_FTA_Event event;
timers ++;
if ((timers &0x1) == 0 && MainTaskQueue != 0xfffffff0)
{
event.code = TIMER_1SEC;
DTOS_DRV_SendMessage(MainTaskQueue, &event);
if (timers >= 16)
{
timers = 0;
event.code = TIMER_SEC;
DTOS_DRV_SendMessage(MainTaskQueue, &event);
}
}
}
#if (LSI_DRIVERS==TRUE)
static void FTASendScreenSizeMessage(void)
{
SendKeyCodeToMainTask(FTA_AV_SETUP);
}
#else
#endif
static void MainTaskTask(void)
{
char buf[120];
int ret;
int cursel = 0;
T_FTA_Event event;
event.code = BAPP_CREATE;
FavEditEH(&event);
while (1)
{
ret = DTOS_DRV_ReceiveMessage(MainTaskQueue, &event);
if ( ret != SUCCESS )
{
continue;
}
FavEditEH(&event);
}
}
T_FTA_Applet FTAGetCurrentApplet(void)
{
return CurrentApplet;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -