Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "MotetoMote.h"
- #include "printf.h"
- module MotetoMoteC{
- uses //generic
- {
- interface Boot;
- interface Leds;
- interface Timer<TMilli> as timer0;
- }
- uses //radio
- {
- interface Packet;
- interface AMPacket;
- interface AMSend;
- interface Receive;
- interface SplitControl as AMControl;
- interface CC2420Packet;
- }
- }
- implementation{
- bool busy=FALSE;
- uint16_t counter;
- message_t pkt;
- uint16_t rcounter=0;
- uint16_t scounter=0;
- uint16_t pktratio;
- uint8_t power=32;
- uint8_t setpower=30;
- int8_t rssi;
- uint8_t lqi;
- uint16_t timeCounter = 0;
- uint16_t throughput;
- event void timer0.fired(){
- // TODO Auto-generated method stub
- counter++;
- timeCounter++;
- if(busy==FALSE) {
- motemsg* btrpkt=(motemsg*)(call Packet.getPayload(&pkt, sizeof(motemsg)));
- btrpkt -> nodeid= TOS_NODE_ID;
- btrpkt -> counter= counter;
- /*if(setpower < 32) {
- setpower++;
- }*/
- call CC2420Packet.setPower(&pkt,setpower);
- if(call AMSend.send(AM_BROADCAST_ADDR, &pkt, sizeof(motemsg))==SUCCESS){
- busy=TRUE;
- }
- }
- }
- event void AMSend.sendDone(message_t *msg, error_t error){
- // TODO Auto-generated method stub
- if(&pkt==msg)
- {
- busy=FALSE;
- scounter++;
- }
- }
- event message_t * Receive.receive(message_t *msg, void *payload, uint8_t len){
- // TODO Auto-generated method stub
- if(len==sizeof(motemsg))
- {
- motemsg* btrpkt=(motemsg*)payload;
- call Leds.set(counter);
- rcounter++;
- power= call CC2420Packet.getPower(&pkt);
- rssi= call CC2420Packet.getRssi(msg) -45;
- lqi= call CC2420Packet.getLqi(msg);
- if (timeCounter == 0) {
- throughput = -1;
- }
- else {
- throughput = rcounter/timeCounter;
- }
- if(scounter==0)
- {
- pktratio=-1;
- }
- if(rcounter==100)
- {
- rcounter=0;
- scounter=0;
- timeCounter = 0;
- }
- else
- {
- pktratio=rcounter/scounter;
- }
- printf("counter is: %d \n",btrpkt->counter);
- printf("nodeid is: %d \n", btrpkt->nodeid);
- printf("packet ratio is: %d \n",pktratio*100);
- printf("sender counter is: %d \n",scounter);
- printf("receiver counter is: %d \n",rcounter);
- printf("power is: %d \n",power);
- printf("rssi is: %d \n",rssi);
- printf("lqi is: %d \n",lqi);
- printf("Throughput is %d \n", throughput);
- }
- return msg;
- }
- event void AMControl.stopDone(error_t error){
- // TODO Auto-generated method stub
- }
- event void AMControl.startDone(error_t error){
- // TODO Auto-generated method stub
- if(error==SUCCESS)
- {
- call timer0.startPeriodic(TIMER_MILLI_SEC);
- }
- else
- {
- call AMControl.start();
- }
- }
- event void Boot.booted(){
- call AMControl.start();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement