📄 testm.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 + -