Advertisement
Guest User

MoteToMoteC

a guest
Oct 25th, 2014
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. #include "MotetoMote.h"
  2. #include "printf.h"
  3. module MotetoMoteC{
  4. uses //generic
  5. {
  6. interface Boot;
  7. interface Leds;
  8. interface Timer<TMilli> as timer0;
  9. }
  10. uses //radio
  11. {
  12. interface Packet;
  13. interface AMPacket;
  14. interface AMSend;
  15. interface Receive;
  16. interface SplitControl as AMControl;
  17. interface CC2420Packet;
  18. }
  19. }
  20. implementation{
  21.  
  22. bool busy=FALSE;
  23. uint16_t counter;
  24. message_t pkt;
  25. uint16_t rcounter=0;
  26. uint16_t scounter=0;
  27. uint16_t pktratio;
  28. uint8_t power=32;
  29. uint8_t setpower=30;
  30. int8_t rssi;
  31. uint8_t lqi;
  32. uint16_t timeCounter = 0;
  33. uint16_t throughput;
  34.  
  35.  
  36. event void timer0.fired(){
  37. // TODO Auto-generated method stub
  38. counter++;
  39. timeCounter++;
  40. if(busy==FALSE) {
  41. motemsg* btrpkt=(motemsg*)(call Packet.getPayload(&pkt, sizeof(motemsg)));
  42. btrpkt -> nodeid= TOS_NODE_ID;
  43. btrpkt -> counter= counter;
  44. /*if(setpower < 32) {
  45. setpower++;
  46. }*/
  47. call CC2420Packet.setPower(&pkt,setpower);
  48. if(call AMSend.send(AM_BROADCAST_ADDR, &pkt, sizeof(motemsg))==SUCCESS){
  49. busy=TRUE;
  50. }
  51. }
  52. }
  53.  
  54. event void AMSend.sendDone(message_t *msg, error_t error){
  55. // TODO Auto-generated method stub
  56. if(&pkt==msg)
  57. {
  58. busy=FALSE;
  59. scounter++;
  60.  
  61. }
  62.  
  63. }
  64.  
  65. event message_t * Receive.receive(message_t *msg, void *payload, uint8_t len){
  66. // TODO Auto-generated method stub
  67. if(len==sizeof(motemsg))
  68. {
  69. motemsg* btrpkt=(motemsg*)payload;
  70. call Leds.set(counter);
  71. rcounter++;
  72. power= call CC2420Packet.getPower(&pkt);
  73. rssi= call CC2420Packet.getRssi(msg) -45;
  74. lqi= call CC2420Packet.getLqi(msg);
  75.  
  76. if (timeCounter == 0) {
  77. throughput = -1;
  78. }
  79.  
  80. else {
  81. throughput = rcounter/timeCounter;
  82. }
  83.  
  84. if(scounter==0)
  85. {
  86. pktratio=-1;
  87. }
  88. if(rcounter==100)
  89. {
  90. rcounter=0;
  91. scounter=0;
  92. timeCounter = 0;
  93. }
  94.  
  95. else
  96. {
  97. pktratio=rcounter/scounter;
  98.  
  99. }
  100.  
  101. printf("counter is: %d \n",btrpkt->counter);
  102. printf("nodeid is: %d \n", btrpkt->nodeid);
  103. printf("packet ratio is: %d \n",pktratio*100);
  104. printf("sender counter is: %d \n",scounter);
  105. printf("receiver counter is: %d \n",rcounter);
  106. printf("power is: %d \n",power);
  107. printf("rssi is: %d \n",rssi);
  108. printf("lqi is: %d \n",lqi);
  109. printf("Throughput is %d \n", throughput);
  110.  
  111. }
  112. return msg;
  113. }
  114.  
  115. event void AMControl.stopDone(error_t error){
  116. // TODO Auto-generated method stub
  117. }
  118.  
  119. event void AMControl.startDone(error_t error){
  120. // TODO Auto-generated method stub
  121. if(error==SUCCESS)
  122. {
  123. call timer0.startPeriodic(TIMER_MILLI_SEC);
  124. }
  125. else
  126. {
  127. call AMControl.start();
  128. }
  129. }
  130.  
  131. event void Boot.booted(){
  132. call AMControl.start();
  133. }
  134.  
  135.  
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement