摘要:
本文介绍了Contiki系统怎么产生新事件,以及怎样处理事件。
一、事件加入及处理
理解以下内容,先注意下如下两个全局静态变量:
- static process_num_events_t nevents; /*未处理的事件总数*/
-
static process_num_events_t fevent; /*标识下一个要传递的事件的位置,事实上是数组的下标*/
- typedef unsigned char process_num_events_t;
二、新事件产生
将事件加入到事件队列主要由process_post()函数完成,详情见博文《Contiki学习笔记:系统进程etimer_process》2.3,代码精简后如下:
三、 处理事件
事件处理由do_event()函数完成,do_event() 把下一个事件 (fevent 指向的事件 ) 从事件队列里取出来,然后传递给其对应的监听进程。把fevent往前移一位置(即++,),把nevents减1。详情见博文《Contiki学习笔记:深入理解process_run函数》2.2。