使用Jennic的协议栈需要使用BOS系统,该系统基于一种简单调度调度机制,可以在该系统内创建两个用户任务,一个是BOS默认创建的任务,而用户的应用只可以创建一个任务。任务是不可剥夺性的,由BOS系统时间驱动。
下面是两个关于任务创建的函数:
bool_t bBosCreateTask (const void (*pfvInit)(uint8), const void (*pfvHandler)(void *, uint8, uint8));
这个函数是用来在BOS中注册用户任务,参数是两个函数的指针,一个是初始化任务函数的指针,另一个是处理从任务接收到消息和事件的函数的指针。
在BOS中用户任务限制在两个,包括由bBosRun()创建的默认用户任务JZA_AppEventHandler(),该函数只可以用来创建第二个用户任务,如果需要,bBosCreateTask函数由下面的函数调用:
PUBLIC void JZA_vAppDefineTasks(void);
这个函数用来在BOS中注册用户任务,在应用第一次运行之前由BOS调用一次。
下面是一个示例:
void vAppTask1Init(uint8 u8Handler)
{
gu8AppHandle = u8Handler;
bBosSetEvent(gu8AppHandle, EV_START_DEVICE);
}
void vAppTask1Handler(void* vTempTaskMsg, uint8 u8TempTaskMsgLen, uint8 u8Event)
{
if(u8Event & EV_START_DEVICE)
{
vAppSystemInit();
JZS_vStartStack();
}
}
bool_t JZA_vAppDefineTask(void)
{
if (!bBosCreateTask(vAppTask1Init, vAppTask1Handler))
{
vBosPanic(1);
}
return TRUE;
}