TinyOS nesC myep3
来源:互联网 发布:java enum 实现接口 编辑:程序博客网 时间:2024/04/29 21:22
BlinkToRadio.h
BlinkToRadioC.nc
Makefile
pr.h
#ifndef BLINKTORADIO_H#define BLINKTORADIO_H#define MOTE_ID 1//only need to modify hereenum { AM_BLINKTORADIO = 6,#if (MOTE_ID == 2) TIMER_PERIOD_MILLI = 250#elif (MOTE_ID == 3)TIMER_PERIOD_MILLI = 1500#endif};typedef nx_struct PayloadMsg { nx_uint16_t nodeId; nx_uint16_t counter;} PayloadMsg, payloadMsg_t;#endif
BlinkToRadioAppC.nc
#include <Timer.h>#include "BlinkToRadio.h"configuration BlinkToRadioAppC {} implementation { components MainC; components LedsC; components BlinkToRadioC as App;#if (MOTE_ID != 1) components new TimerMilliC() as Timer0;#endif components ActiveMessageC as AM;#if (MOTE_ID != 1) components new AMSenderC(AM_BLINKTORADIO);#else components new AMReceiverC(AM_BLINKTORADIO);#endif App.Boot -> MainC;#if (MOTE_ID == 1) App.Leds -> LedsC;#endif#if (MOTE_ID != 1) App.Timer0 -> Timer0;#endif#if (MOTE_ID != 1) App.Packet -> AMSenderC;#endifApp.AMPacket -> AM.AMPacket; App.AMControl -> AM.SplitControl;#if (MOTE_ID != 1) App.AMSend -> AMSenderC;#else App.Receive -> AMReceiverC;#endif}
BlinkToRadioC.nc
#include <Timer.h>#include "BlinkToRadio.h"#include "pr.h" module BlinkToRadioC { uses interface Boot; #if (MOTE_ID == 1) uses interface Leds; #endif #if (MOTE_ID != 1) uses interface Timer<TMilli> as Timer0; #endif uses interface Packet; uses interface AMPacket; #if (MOTE_ID != 1) uses interface AMSend; #else uses interface Receive; #endif uses interface SplitControl as AMControl;} implementation { message_t pkt; bool busy = FALSE; event void Boot.booted() { call AMControl.start(); } event void AMControl.startDone(error_t err) { if (err == SUCCESS) { #if (MOTE_ID != 1) call Timer0.startPeriodic(TIMER_PERIOD_MILLI); #endif pr("start done\n"); } else { call AMControl.start(); } } event void AMControl.stopDone(error_t err) { pr("stop done\n"); } #if (MOTE_ID != 1) event void Timer0.fired() { static uint16_t counter = 0; if (!busy) { PayloadMsg * pPM = (PayloadMsg *)(call Packet.getPayload(&pkt, sizeof (PayloadMsg))); if (pPM == NULL) { pr("can not creatbtr\n"); return; } pPM->nodeId = TOS_NODE_ID; pPM->counter = counter; if (call AMSend.send(1, &pkt, sizeof (PayloadMsg)) == SUCCESS) { pr("call send\n"); busy = TRUE; } } counter++; } #endif #if (MOTE_ID != 1) event void AMSend.sendDone(message_t * pMsg, error_t err) { if (&pkt == pMsg) { busy = FALSE; } } #endif #if (MOTE_ID == 1) event message_t * Receive.receive(message_t * pMsg, void * pPayload, uint8_t payloadLen) { static uint8_t lock2 = 0, lock3 = 0; //state start with unlock; it doesn't support bit type static uint8_t isFirstPkt2 = 1, isFirstPkt3 = 1; //special judge static uint16_t dataBuf = 0; pr("in receive\n"); if (payloadLen == sizeof (PayloadMsg)) { //payload is not missed am_addr_t srcAddr = call AMPacket.source(pMsg); PayloadMsg * pPM = (PayloadMsg *)pPayload; if (srcAddr == 2) { if (pPM->counter == 0 && isFirstPkt2 == 0) { lock2 = !lock2; } if (lock2 == 0) { //reset LEDBuff only when lock2 is unlocked dataBuf = pPM->counter; call Leds.set(dataBuf); } pr("receive from nodeid: %d, %d\n", pPM->nodeId, pPM->counter); } else if (srcAddr == 3) { if (pPM->counter == 0 && isFirstPkt3 == 0) { lock3 = !lock3; } if (lock3 == 0) { if (pPM->counter & 1) { call Leds.set(0); } else { call Leds.set(dataBuf); } } pr("receive from nodeid: %d, %d\n", pPM->nodeId, pPM->counter); } isFirstPkt2 = 0; isFirstPkt3 = 0; } return pMsg; } #endif}
Makefile
COMPONENT=BlinkToRadioAppCCFLAGS += -DCC2420_DEF_CHANNEL=13CFLAGS += -DCC2420_DEF_RFPOWER=5CFLAGS += -DENABLE_PRCFLAGS += -I$(TOSDIR)/lib/printfCFLAGS += -DTOSH_DATA_LENGTH=128include $(MAKERULES)
pr.h
#ifndef MY_PR_H#define MY_PR_H#ifdef ENABLE_PR#ifndef TOSSIM#include "printf.h"#define pr(fmt, args...) do { printf(fmt, ##args); printfflush(); } while (0)#else#define pr(fmt, args...) dbg("Sim", fmt, ##args)#endif // TOSSIM#else#define pr(fmt, args...) #endif // ENABLE_PR#endif /* PR_H */
0 0
- TinyOS nesC myep3
- TinyOS nesC myep3 - upgrade
- TinyOS、NesC程序开发经验谈
- TinyOS、NesC程序开发经验谈
- TinyOS、NesC程序开发经验谈
- 『TinyOS』 nesC 1.1 语言参考手册
- TinyOs 开发中 NESC涉及的关键字
- TinyOS、NesC程序开发经验谈[转载]
- TinyOS nesc的几个语法小点
- CC2538之TinyOS例程实验:1-blink nesC语法
- 《TinyOS系统与nesC程序设计课内实验指导书》中的基本实验
- 第八部视频(作者 语音讲解)TinyOS nesC全手打编程实例
- 第3篇TinyOS/NesC程序的基本结构和入手写法(教程lesson 1 blink)
- CC2538之TinyOS例程实验:3/4-timer nesC编程最难理解部分参数化接口讲解
- TinyOS
- TinyOS
- TinyOS
- TinyOS
- 【Eclipse工具】Eclipse中导入源码(Attach source)或者doc文档
- 如何设置好看的swing风格主题界面lookandfeel
- Java clone() 浅克隆与深度克隆
- 雷观(十四):为什么很多大公司都面试算法和数据结构
- Shell排序(改良的插入排序)
- TinyOS nesC myep3
- Android Demo Sample: 一种新建Notification通知的方法
- HDU 2925 Musical Chairs
- SDUT OJ 查找练习 2123 hash——出现过的数字
- auto tool: make -2014-1210-0001
- <h1>02_Linux学习_命令</h1>
- 大二生活之致给影响我最大的大学老师,我和老师的一些事
- 阿牛的EOF牛肉串
- 选择、插入、气泡排序