CC2538之Contiki3.0实验:3-event

通过对PEOCESS的一些乱讲,应该有一点可以知道就是我们每编写一个PROCESS_THREAD(...)实际就是弄出了一个 (struct)process;大家可以理解是不是每一个PROCESS_THREAD或者其他的都会在cmpile的时候产生一个全局的struct变量;回忆一下:
struct process {  
  struct process *next;  
#if PROCESS_CONF_NO_PROCESS_NAMES  
#define PROCESS_NAME_STRING(process) ""  
#else  
  const char *name;  
#define PROCESS_NAME_STRING(process) (process)->name  
#endif  
  PT_THREAD((* thread)(struct pt *, process_event_t, process_data_t));  
  struct pt pt;  
  unsigned char state, needspoll;  
};

至此我们至少可以CTRL+C/CTRL+V写出自己的小的测试程序,我们不管是学习TinyOS或者Contiki实际并不是只是make然后下载,验证结果就完事了,应该掌握代码的编写;鱼和渔的基本区别是我写这些文档的意义所在;

TinyOS和Contiki都是event驱动;RIOT在Contiki介绍完后会重点去介绍;个人还是比较喜欢他的风格一点;

回忆TinyOS的event是很简单的,采用signal抛出事件,使用者处理;

Contiki的event咱们慢慢来看;我们现在在test_null基础上再编写一次,达到事件处理的目的;

首先在:core/sys/process.h中:
typedef unsigned char process_event_t;
typedef void *        process_data_t;
typedef unsigned char process_num_events_t;

我们这次需要用到的函数为:
process_post

在core/sys/process.c中

int
process_post(struct process *p, process_event_t ev, process_data_t data)
{
  static process_num_events_t snum;


  if(PROCESS_CURRENT() == NULL) {
    PRINTF("process_post: NULL process posts event %d to process '%s', nevents %d\n",
	   ev,PROCESS_NAME_STRING(p), nevents);
  } else {
    PRINTF("process_post: Process '%s' posts event %d to process '%s&#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值