tinyos学习笔记10--TestRPL(UDP)例程学习过程中碰到的问题

      最近一直在学习TinyRPL,RPL结合BLIP可以实现TinyOS的IPv6。看了几天的文档及部分源码后再回头看TestRPL例程,明白了不少内容,但还是有很多不懂的地方,比如:

1.SplitControl中最后的那些xxx.start()在哪实现的?到底干了些什么??

components IPStackC;
App.SplitControl -> IPStackC;
configuration IPStackC {
  provides {
    interface SplitControl;
...
SplitControl = IPStackControlP.SplitControl;
command error_t SplitControl.start() {
    if (blip_started) return EALREADY;
    return call SubSplitControl.start();
  }
event void SubSplitControl.startDone(error_t error) {
    if (error == SUCCESS) {
      blip_started = TRUE;
      call StdControl.start();
    }

    call NeighborDiscoveryControl.start();

#if RPL_ADDR_AUTOCONF
    // If we are using the routing layer to get our full address, then
    // we must start the routing layer immediately.
    call RoutingControl.start();
#else
    // Otherwise, check to see if we have a global address before starting
    // the routing layer.
    {
      struct in6_addr addr;
      // if we have a global address, we can start any routing protocols now.
      if (call IPAddress.getGlobalAddr(&addr)) {
        call RoutingControl.start();
      }
    }
#endif

    signal SplitControl.startDone(error);
  }
      这些xxx.start()在哪实现的?到底干了些什么??追踪到最后发现到了一个接口StdControl里面。
2.RPL路由在哪里启动的?是Boot.booted()中的call RoutingControl.start();么?在哪里做创建网络及更新路由等工作的?

event void Boot.booted() {
    memset(MULTICAST_ADDR.s6_addr, 0, 16);
    MULTICAST_ADDR.s6_addr[0] = 0xFF;
    MULTICAST_ADDR.s6_addr[1] = 0x2;
    MULTICAST_ADDR.s6_addr[15] = 0x1A;

    //call Lcd.initialize();

    if(TOS_NODE_ID == RPL_ROOT_ADDR){
      call RootControl.setRoot();
    }
    call RoutingControl.start();
    //call RoutingControl.start();
    call SplitControl.start();

    call RPLUDP.bind(UDP_PORT);
  }
3.可以在上位机编写一个基于UDP的程序接收节点传输的数据吧?

components new UdpSocketC() as RPLUDP;
  App.RPLUDP -> RPLUDP;
      好多问题呀,师父们看了能解答的帮忙解答一下咯。在此谢过。

      联系qq:154292501


By:霜月孤鸟

2016.1.18

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值