Contiki系統代碼分析(三)

//注:新手剛學習,如有錯誤,歡迎指正。

//飲水不忘挖井人,感謝帶我入行的前輩。

 

1、簡介

使用contiki操作系統,開始一個進程之後,進程會進行等待一些事件或者超時消息等。

列如:

(1)可以用在某些週期性的應用,比如週期的讀取溫度溼度傳感器信息,週期性的採樣的行爲。

(2)等待某一個事件,比如等待加速度信息。

 

2、邏輯簡介

(1)開始這個進程

process_start(&adc_sensor_process, NULL);

(2)向這個進程post事件信息

process_post(&adc_sensor_process, at_cmd_event, &cmd_type);

 

3、代碼實現

(1)先初始化進程

void gsm_process_init(void)

{                        

    gsm_cmd = fifo_create(&fifo_ram, sizeof(uint8_t), 16);                             

    at_cmd_event = process_alloc_event();

    process_start(&adc_sensor_process, NULL);

}

 

(2)進程的具體實現

PROCESS(adc_sensor_process, " adc_sensor_process ");

/*---------------------------------------------------------------------------*/

PROCESS_THREAD(adc_sensor_process, ev, data)

{

  PROCESS_BEGIN();

  While(1)

{

     PROCESS_WAIT_EVENT_UNTIL((ev == cmd_ack_event)||(ev == ack_timeout_event));

  If(ev == cmd_ack_event)

  {

              Printf(“ cmd_ack_event \n”);

}

If (ev == ack_timeout_event)

{

                printf("Hello, world\n");

}

}

  PROCESS_END();

}

 

(3)在某處post這個事件

process_post(&adc_sensor_process, NULL, NULL);

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章