⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testm.nc

📁 tinyos2.0版本驱动
💻 NC
字号:
#include "routing_table.h"module TestM {    uses {    interface Boot;    interface Leds;    interface SplitControl;    interface AMPacket as MHPacket;    interface Packet;    interface Receive;    interface Intercept;    interface AMSend as MHSend;    interface Timer<TMilli>;  }#ifdef DYMO_MONITORING  uses interface DymoMonitor;#endif}implementation {  message_t packet;  enum {    ORIGIN = 1,    TARGET = 3,  };  void display(message_t * msg){    uint8_t * payload = NULL;    uint8_t size;    int8_t i;    dbg("messages", "message content:\n");    for(i=0; i<size; i+=4, payload+=4){      dbg("messages", "\t%hhu\t%hhu\t%hhu\t%hhu\n", *payload, *(payload+1), *(payload+2), *(payload+3));    }  }  void setLeds(uint16_t val) {    if (val & 0x01)      call Leds.led0Toggle();    if (val & 0x02)      call Leds.led1Toggle();    if (val & 0x04)      call Leds.led2Toggle();  }  task void stop(){    call SplitControl.stop();  }  event void Boot.booted(){    call SplitControl.start();  }  event void SplitControl.startDone(error_t e){    if(call MHPacket.address() == ORIGIN){      call Timer.startPeriodic(2048);    }  }  event void Timer.fired(){    nx_uint16_t * payload = call Packet.getPayload(&packet, 2);    error_t error;    *payload = 1664;    error = call MHSend.send(TARGET, &packet, sizeof(*payload));    if(error == SUCCESS){      dbg("messages", "Sending a beer...\n");    } else {      dbg("messages", "Unable to send the beer! - %hhu\n", error);    }  }  event void MHSend.sendDone(message_t * msg, error_t e){    if((e == SUCCESS) && (msg == &packet) && (call MHPacket.address() == ORIGIN)){      dbg("messages", "Beer successfully sent.\n");      setLeds(1);    } else if (e == FAIL) {      dbg("messages", "Sending the beer didn't succeed!\n");      setLeds(2);    } else {      dbg("messages", "What the hell is going on!?");    }  }    event message_t * Receive.receive(message_t * msg, void * payload, uint8_t len){    if(call MHPacket.address() == TARGET){      dbg("messages", "I have received a message from %u\n", call MHPacket.source(msg));      dbg("messages", "It is a %u french beer, great! :o)\n", *(nx_uint16_t *)payload);      setLeds(4);    } else {      dbg("messages", "What is this message?\n");    }    return msg;  }  event bool Intercept.forward(message_t * msg, void * payload, uint8_t len){    setLeds(2);    return TRUE;  }  event void SplitControl.stopDone(error_t e){}#ifdef DYMO_MONITORING  event void DymoMonitor.msgReceived(message_t * msg){    dbg("messages", "Dymo msg received.\n");  }  event void DymoMonitor.msgSent(message_t * msg){    dbg("messages", "Dymo msg sent.\n");  }  event void DymoMonitor.routeDiscovered(uint32_t delay, addr_t target){    dbg("messages", "Route for %u discovered in %lu milliseconds.\n", target, delay);  }#endif}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -