Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1311060
  • 博文数量: 124
  • 博客积分: 4078
  • 博客等级: 中校
  • 技术积分: 3936
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-21 11:28
个人简介

新博客:http://sparkandshine.net/

文章分类

全部博文(124)

分类: 嵌入式

2011-10-27 15:47:25

摘要:

    本文介绍了Contiki系统怎么产生新事件,以及怎样处理事件。


一、事件加入及处理

理解以下内容,先注意下如下两个全局静态变量:

  1. static process_num_events_t nevents; /*未处理的事件总数*/
  2. static process_num_events_t fevent;  /*标识下一个要传递的事件的位置,事实上是数组的下标*/

  3. typedef unsigned char process_num_events_t;

二、新事件产生

    将事件加入到事件队列主要由process_post()函数完成,详情见博文《Contiki学习笔记:系统进程etimer_process》2.3,代码精简后如下:

  1. static process_num_events_t snum;
  2. snum = (process_num_events_t)(fevent + nevents) % PROCESS_CONF_NUMEVENTS;
  3. events[snum].ev = ev;
  4. events[snum].data = data;
  5. events[snum].p = p;
  6. ++nevents;

三、 处理事件

    事件处理由do_event()函数完成,do_event() 把下一个事件 (fevent 指向的事件 ) 从事件队列里取出来,然后传递给其对应的监听进程。把fevent往前移一位置(即++,),把nevents减1。详情见博文《Contiki学习笔记:深入理解process_run函数》2.2。

阅读(3816) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~