Contiki协议栈Rime:实验ibc和abc相互通信

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tidyjiang/article/details/51520413

1 概述

为了更好得理解前面博客的内容,我们通过cooja仿真器做一个简单的实现。有两个节点,其中一个节点烧写ibc程序,另一个节点烧写abc程序,然后启动两个节点,看他们的通信情况。

2 代码

实验用的代码在contiki/example/rime目录下的abc和ibc的基础之上进行很小的改动,使其能够通信。

abc的代码

#include "contiki.h"
#include "net/rime/rime.h"
#include "random.h"

#include "dev/button-sensor.h"

#include "dev/leds.h"

#include <stdio.h>
/*---------------------------------------------------------------------------*/
PROCESS(example_abc_process, "ABC example");
AUTOSTART_PROCESSES(&example_abc_process);
/*---------------------------------------------------------------------------*/
static void
abc_recv(struct abc_conn *c)
{
  printf("abc message received '%s'\n", (char *)packetbuf_dataptr());
}
static const struct abc_callbacks abc_call = {abc_recv};
static struct abc_conn abc;
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(example_abc_process, ev, data)
{
  static struct etimer et;

  PROCESS_EXITHANDLER(abc_close(&abc);)

  PROCESS_BEGIN();

  abc_open(&abc, 128, &abc_call);

  while(1) {

    /* Delay 2-4 seconds */
    etimer_set(&et, CLOCK_SECOND * 2 + random_rand() % (CLOCK_SECOND * 2));

    PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));

    packetbuf_copyfrom("Hello", 6);
    abc_send(&abc);
    printf("abc message sent\n");
  }

  PROCESS_END();
}

ibc的代码

展开阅读全文

没有更多推荐了,返回首页