[Tinyos-contrib-commits] CVS: tinyos-1.x/contrib/GGB/tos/lib/Straw Straw.h, 1.1, 1.2 StrawC.nc, 1.1, 1.2 StrawM.nc, 1.1, 1.2

Sukun Kim binetude at users.sourceforge.net
Thu Nov 30 15:12:25 PST 2006


Update of /cvsroot/tinyos/tinyos-1.x/contrib/GGB/tos/lib/Straw
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv23195

Modified Files:
	Straw.h StrawC.nc StrawM.nc 
Log Message:


Index: Straw.h
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/contrib/GGB/tos/lib/Straw/Straw.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Straw.h	19 May 2005 03:37:03 -0000	1.1
--- Straw.h	30 Nov 2006 23:12:23 -0000	1.2
***************
*** 26,31 ****
    STRAW_TRANSFER_DATA = 6,
    STRAW_RANDOM_READ = 7,
  
!   DIVERGE_HEADER_LENGTH = 3,
    STRAWCMDMSG_LENGTH = TOSH_DATA_LENGTH - DIVERGE_HEADER_LENGTH,
    
--- 26,32 ----
    STRAW_TRANSFER_DATA = 6,
    STRAW_RANDOM_READ = 7,
+   STRAW_ERR_CHK = 9,
  
!   DIVERGE_HEADER_LENGTH = 2,
    STRAWCMDMSG_LENGTH = TOSH_DATA_LENGTH - DIVERGE_HEADER_LENGTH,
    
***************
*** 37,40 ****
--- 38,42 ----
    STRAW_NETWORK_INFO_REPLY = 1,
    STRAW_DATA_REPLY = 8,
+   STRAW_ERR_CHK_REPLY = 9,
  
    CONVERGE_HEADER_LENGTH = 7,
***************
*** 46,60 ****
  };
  
  typedef struct {
    uint16_t type;
! } __attribute__ ((packed)) CmnDummy;
  
  typedef struct {
    uint16_t type;
-   uint16_t uartOnlyDelay;
-   uint16_t uartDelay;
-   uint16_t radioDelay;
    uint8_t toUART;
! } __attribute__ ((packed)) NetworkInfo;
  
  typedef struct {
--- 48,61 ----
  };
  
+ 
+ 
  typedef struct {
    uint16_t type;
! } CmnDummy;
  
  typedef struct {
    uint16_t type;
    uint8_t toUART;
! } NetworkInfo;
  
  typedef struct {
***************
*** 62,71 ****
    uint32_t start;
    uint32_t size;
    uint8_t toUART;
! } __attribute__ ((packed)) TransferData;
  
  typedef struct {
    uint16_t seqNo[MAX_RANDOM_READ_SEQNO_SIZE];
! } __attribute__ ((packed)) RandomRead;
  
  typedef struct StrawCmdMsg {
--- 63,82 ----
    uint32_t start;
    uint32_t size;
+   
+   uint16_t uartOnlyDelay;
+   uint16_t uartDelay;
+   uint16_t radioDelay;
    uint8_t toUART;
!   uint8_t portId;
! } TransferData;
  
  typedef struct {
    uint16_t seqNo[MAX_RANDOM_READ_SEQNO_SIZE];
! } RandomRead;
! 
! typedef struct {
!   uint16_t type;
!   uint8_t toUART;
! } ErrChk;
  
  typedef struct StrawCmdMsg {
***************
*** 76,81 ****
      TransferData td;
      RandomRead rr;
    } arg;
! } __attribute__ ((packed)) StrawCmdMsg;
  
  
--- 87,93 ----
      TransferData td;
      RandomRead rr;
+     ErrChk ec;
    } arg;
! } StrawCmdMsg;
  
  
***************
*** 83,100 ****
  typedef struct {
    uint16_t type;
! } __attribute__ ((packed)) CmnDummyReply;
  
  typedef struct {
    uint16_t type;
    uint16_t parent;
    uint8_t depth;
    uint8_t occupancy;
    uint8_t quality;
! } __attribute__ ((packed)) NetworkInfoReply;
  
  typedef struct {
    uint16_t seqNo;
    uint8_t data[MAX_DATA_REPLY_DATA_SIZE];
! } __attribute__ ((packed)) DataReply;
  
  typedef struct StrawReplyMsg {
--- 95,122 ----
  typedef struct {
    uint16_t type;
! } CmnDummyReply;
  
  typedef struct {
    uint16_t type;
+   uint16_t uartOnlyDelay;
+   uint16_t uartDelay;
+   uint16_t radioDelay;
+ 
    uint16_t parent;
    uint8_t depth;
    uint8_t occupancy;
    uint8_t quality;
! } NetworkInfoReply;
  
  typedef struct {
    uint16_t seqNo;
    uint8_t data[MAX_DATA_REPLY_DATA_SIZE];
! } DataReply;
! 
! typedef struct {
!   uint16_t type;
!   uint16_t checksum;
!   uint16_t bffrChk;
! } ErrChkReply;
  
  typedef struct StrawReplyMsg {
***************
*** 103,111 ****
      NetworkInfoReply nir;
      DataReply dr;
    } arg;
! } __attribute__ ((packed)) StrawReplyMsg;
  
  typedef struct StrawUARTMsg {
    StrawReplyMsg dummy;
! } __attribute__ ((packed)) StrawUARTMsg;
  
--- 125,134 ----
      NetworkInfoReply nir;
      DataReply dr;
+     ErrChkReply ecr;
    } arg;
! } StrawReplyMsg;
  
  typedef struct StrawUARTMsg {
    StrawReplyMsg dummy;
! }  StrawUARTMsg;
  

Index: StrawC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/contrib/GGB/tos/lib/Straw/StrawC.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** StrawC.nc	19 May 2005 03:37:03 -0000	1.1
--- StrawC.nc	30 Nov 2006 23:12:23 -0000	1.2
***************
*** 4,44 ****
    provides {
      interface StdControl;
!     interface Straw;
    }
  }
  implementation
  {
!   components StrawM,
      Bcast,
-     ////DripC, DripStateC,
      WMEWMAMultiHopRouter as multihopM,
!     QueuedSend,
!     GenericCommPromiscuous as Comm,
!     TimerC;
  
!   StdControl = StrawM;
    StdControl = Bcast;
-   ////StdControl = Drip;
    StdControl = multihopM;
!   StdControl = QueuedSend;
!   StdControl = Comm;
!   StdControl = TimerC;
   
    Straw = StrawM;
  
    StrawM.ReceiveCmd -> Bcast.Receive[AM_STRAWCMDMSG];
    Bcast.ReceiveMsg[AM_STRAWCMDMSG] -> Comm.ReceiveMsg[AM_STRAWCMDMSG];
-   ////StrawM.ReceiveCmd -> Drip.Receive[AM_STRAWCMDMSG];
-   ////StrawM.Drip -> DripC.Drip[AM_STRAWCMDMSG];
-   ////DripC.DripState[AM_STRAWCMDMSG] ->
-   ////  DripStateC.DripState[unique("DripState")];
-   
-   StrawM.SendReply -> multihopM.Send[AM_STRAWREPLYMSG];
-   multihopM.ReceiveMsg[AM_STRAWREPLYMSG] -> Comm.ReceiveMsg[AM_STRAWREPLYMSG];
- 
-   StrawM.SendUART -> QueuedSend.SendMsg[AM_STRAWUARTMSG];
  
    StrawM.RouteControl -> multihopM;
!   StrawM.Timer -> TimerC.Timer[unique("Timer")];
  }
  
--- 4,38 ----
    provides {
      interface StdControl;
!     interface Straw[uint8_t id];
    }
  }
  implementation
  {
!   components
!     TimerC,
!     GenericCommPromiscuous as Comm,
!     QueuedSend,
      Bcast,
      WMEWMAMultiHopRouter as multihopM,
!     StrawM;
  
!   StdControl = TimerC;
!   StdControl = Comm;
!   StdControl = QueuedSend;
    StdControl = Bcast;
    StdControl = multihopM;
!   StdControl = StrawM;
   
    Straw = StrawM;
  
+   StrawM.ShootingTimer -> TimerC.Timer[unique("Timer")];
+   StrawM.SendUART -> QueuedSend.SendMsg[AM_STRAWUARTMSG];
+ 
    StrawM.ReceiveCmd -> Bcast.Receive[AM_STRAWCMDMSG];
    Bcast.ReceiveMsg[AM_STRAWCMDMSG] -> Comm.ReceiveMsg[AM_STRAWCMDMSG];
  
    StrawM.RouteControl -> multihopM;
!   StrawM.SendReply -> multihopM.Send[AM_STRAWREPLYMSG];
!   multihopM.ReceiveMsg[AM_STRAWREPLYMSG] -> Comm.ReceiveMsg[AM_STRAWREPLYMSG];
  }
  

Index: StrawM.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/contrib/GGB/tos/lib/Straw/StrawM.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** StrawM.nc	19 May 2005 03:37:03 -0000	1.1
--- StrawM.nc	30 Nov 2006 23:12:23 -0000	1.2
***************
*** 1,15 ****
  module StrawM
  {
    provides {
      interface StdControl;
!     interface Straw;
    }
    uses {
!     interface Receive as ReceiveCmd;
!     ////interface Drip;
!     interface Send as SendReply;
      interface SendMsg as SendUART;
      interface RouteControl;
!     interface Timer;
    }
  }
--- 1,17 ----
+ includes Straw;
  module StrawM
  {
    provides {
      interface StdControl;
!     interface Straw[uint8_t id];
    }
    uses {
!     interface Timer as ShootingTimer;
      interface SendMsg as SendUART;
+ 
+     interface Receive as ReceiveCmd;
+ 
      interface RouteControl;
!     interface Send as SendReply;
    }
  }
***************
*** 18,26 ****
    enum {
      NO_OF_BFFR = 5,
!     RADIUS_OF_INTERFERENCE = 3,
    };
    uint16_t UART_ONLY_DELAY = (TOSH_DATA_LENGTH * 7 + 157) / 36;
    uint16_t UART_DELAY = (TOSH_DATA_LENGTH * 7 + 85) / 36;
    uint16_t RADIO_DELAY = (TOSH_DATA_LENGTH * 7 + 234) / 19;
   
    //  Buffer space for drip. But it will not be processed later.  //
--- 20,32 ----
    enum {
      NO_OF_BFFR = 5,
!     RADIUS_OF_INTERFERENCE = 5,
    };
    uint16_t UART_ONLY_DELAY = (TOSH_DATA_LENGTH * 7 + 157) / 36;
    uint16_t UART_DELAY = (TOSH_DATA_LENGTH * 7 + 85) / 36;
+ #if defined(PLATFORM_MICA2) 
    uint16_t RADIO_DELAY = (TOSH_DATA_LENGTH * 7 + 234) / 19;
+ #elif defined(PLATFORM_TELOSB) || defined(PLATFORM_MICAZ)
+   uint16_t RADIO_DELAY = (TOSH_DATA_LENGTH * 7 + 234) / 65;
+ #endif
   
    //  Buffer space for drip. But it will not be processed later.  //
***************
*** 38,41 ****
--- 44,48 ----
    uint8_t replyIndex;
  
+   uint8_t portId;
    uint32_t start;
    uint32_t size;
***************
*** 47,54 ****
--- 54,122 ----
    uint32_t dataIndex;
    uint8_t seqNoIndex;
+   uint8_t readingSize;
+ 
+   uint16_t checksum;
    uint8_t depth;
  
  
  
+   command result_t StdControl.init() {
+     return SUCCESS;
+   }
+   command result_t StdControl.start() {
+     uint8_t i;
+     state = STRAW_IDLE_STATE;
+     subState = STRAW_SUB_IDLE;
+     for (i = 0; i < NO_OF_BFFR; i++) {
+       reply[i] = (StrawReplyMsg *) call SendReply.getBuffer(&replyBffr[i],
+         &replyLen[i]);
+       bffrState[i] = STRAW_BFFR_EMPTY;
+     }
+     replyIndex = 0;
+     return SUCCESS;
+   }
+   command result_t StdControl.stop() {
+     state = STRAW_IDLE_STATE;
+     subState = STRAW_SUB_IDLE;
+     return SUCCESS;
+   }
+ 
+  
+ 
+   /* 
+   uint8_t getCRC(uint8_t currentCrc, uint8_t byteStream) {
+     uint8_t i;
+     currentCrc = currentCrc ^ byteStream;
+     for (i = 0; i < 8; i++) {
+       if (currentCrc & 0x8000) {
+         currentCrc = currentCrc << 1 ^ 0x07;
+       } else {
+         currentCrc = currentCrc << 1;
+       }
+     }
+     return currentCrc;
+   }*/
+   command result_t Straw.readDone[uint8_t id](result_t success) {
+     //  all  //
+     uint8_t i;
+     if (success) {
+       bffrState[replyIndex] = STRAW_BFFR_READDONE;
+       if (state == STRAW_TRANSFER_DATA) {
+         dataIndex += readingSize;
+ 	
+         for (i = 0; i < readingSize; i++)
+           checksum += reply[replyIndex]->arg.dr.data[i];
+ 
+       } else if (state == STRAW_RANDOM_READ) {
+         ++seqNoIndex;
+       }
+     } else {
+       bffrState[replyIndex] = STRAW_BFFR_EMPTY;
+     }
+     return SUCCESS;
+   }
+ 
+ 
+ 
    void adjPktIntrv() {
      if (subState == STRAW_SUB_PROC && !toUART) {
***************
*** 58,64 ****
        
        if (tempDepth != depth) {
!         call Timer.stop();
          depth = tempDepth;
!         call Timer.start(TIMER_REPEAT, depth < RADIUS_OF_INTERFERENCE
  	  ? UART_DELAY + depth * RADIO_DELAY
  	  : RADIUS_OF_INTERFERENCE * RADIO_DELAY);
--- 126,132 ----
        
        if (tempDepth != depth) {
!         call ShootingTimer.stop();
          depth = tempDepth;
!         call ShootingTimer.start(TIMER_REPEAT, depth < RADIUS_OF_INTERFERENCE
  	  ? UART_DELAY + depth * RADIO_DELAY
  	  : RADIUS_OF_INTERFERENCE * RADIO_DELAY);
***************
*** 69,77 ****
    //  tdNext and rrNext assume at least 1 packet  //
    task void tdNext() {
-     uint8_t readingSize;
      
      if (dataIndex == start + size) {
        subState = STRAW_SUB_FNSHD;
!       call Timer.stop();
        
      } else if ((bffrState[replyIndex] == STRAW_BFFR_EMPTY)
--- 137,149 ----
    //  tdNext and rrNext assume at least 1 packet  //
    task void tdNext() {
      
      if (dataIndex == start + size) {
        subState = STRAW_SUB_FNSHD;
!       call ShootingTimer.stop();
!       if (bffrState[(replyIndex + NO_OF_BFFR - 1) % NO_OF_BFFR]
!         != STRAW_BFFR_SENDING) {
!         state = STRAW_IDLE_STATE;
!         subState = STRAW_SUB_IDLE;
!       }
        
      } else if ((bffrState[replyIndex] == STRAW_BFFR_EMPTY)
***************
*** 80,88 ****
          ? start + size - dataIndex : MAX_DATA_REPLY_DATA_SIZE;
  	
!       if (signal Straw.read(dataIndex, readingSize,
          reply[replyIndex]->arg.dr.data)) {
          reply[replyIndex]->arg.dr.seqNo = (dataIndex - start)
            / MAX_DATA_REPLY_DATA_SIZE + STRAW_TYPE_SHIFT;
-         dataIndex += readingSize;
          bffrState[replyIndex] = STRAW_BFFR_READING;
        } else {
--- 152,159 ----
          ? start + size - dataIndex : MAX_DATA_REPLY_DATA_SIZE;
  	
!       if (signal Straw.read[portId](dataIndex, readingSize,
          reply[replyIndex]->arg.dr.data)) {
          reply[replyIndex]->arg.dr.seqNo = (dataIndex - start)
            / MAX_DATA_REPLY_DATA_SIZE + STRAW_TYPE_SHIFT;
          bffrState[replyIndex] = STRAW_BFFR_READING;
        } else {
***************
*** 96,106 ****
    task void rrNext() {
      uint32_t readingStart;
!     uint8_t readingSize;
!     
      if ((seqNoIndex == MAX_RANDOM_READ_SEQNO_SIZE)
        || (cmd->arg.rr.seqNo[seqNoIndex] == STRAW_RANDOM_READ)) {
        subState = STRAW_SUB_FNSHD;
!       call Timer.stop();
!       
      } else if ((bffrState[replyIndex] == STRAW_BFFR_EMPTY)
        || (bffrState[replyIndex] == STRAW_BFFR_READDONE)) {
--- 167,181 ----
    task void rrNext() {
      uint32_t readingStart;
! 
      if ((seqNoIndex == MAX_RANDOM_READ_SEQNO_SIZE)
        || (cmd->arg.rr.seqNo[seqNoIndex] == STRAW_RANDOM_READ)) {
        subState = STRAW_SUB_FNSHD;
!       call ShootingTimer.stop();
!       if (bffrState[(replyIndex + NO_OF_BFFR - 1) % NO_OF_BFFR]
!         != STRAW_BFFR_SENDING) {
!         state = STRAW_IDLE_STATE;
!         subState = STRAW_SUB_IDLE;
!       }
! 
      } else if ((bffrState[replyIndex] == STRAW_BFFR_EMPTY)
        || (bffrState[replyIndex] == STRAW_BFFR_READDONE)) {
***************
*** 111,118 ****
          ? start + size - readingStart : MAX_DATA_REPLY_DATA_SIZE;
        
!       if (signal Straw.read(readingStart, readingSize,
          reply[replyIndex]->arg.dr.data)) {
          reply[replyIndex]->arg.dr.seqNo = cmd->arg.rr.seqNo[seqNoIndex];
-         ++seqNoIndex;
          bffrState[replyIndex] = STRAW_BFFR_READING;
        } else {
--- 186,192 ----
          ? start + size - readingStart : MAX_DATA_REPLY_DATA_SIZE;
        
!       if (signal Straw.read[portId](readingStart, readingSize,
          reply[replyIndex]->arg.dr.data)) {
          reply[replyIndex]->arg.dr.seqNo = cmd->arg.rr.seqNo[seqNoIndex];
          bffrState[replyIndex] = STRAW_BFFR_READING;
        } else {
***************
*** 120,144 ****
        }
      }
      adjPktIntrv();
    }
  
!   command result_t Straw.readDone(result_t success) {
!     //  all  //
!     bffrState[replyIndex] = success ? STRAW_BFFR_READDONE : STRAW_BFFR_EMPTY;
      return SUCCESS;
    }
  
    task void cmdIntpr() {
      subState = STRAW_SUB_FIRST;
!     call Timer.start(TIMER_ONE_SHOT, RADIUS_OF_INTERFERENCE * RADIO_DELAY);
      switch (state) {
      case STRAW_NETWORK_INFO:
-       UART_ONLY_DELAY = cmd->arg.ni.uartOnlyDelay;
-       UART_DELAY = cmd->arg.ni.uartDelay;
-       RADIO_DELAY = cmd->arg.ni.radioDelay;
        toUART = cmd->arg.ni.toUART;
        if ((bffrState[replyIndex] == STRAW_BFFR_EMPTY)
          || (bffrState[replyIndex] == STRAW_BFFR_READDONE)) {
          reply[replyIndex]->arg.nir.type = STRAW_NETWORK_INFO_REPLY;
          reply[replyIndex]->arg.nir.parent = call RouteControl.getParent();
          reply[replyIndex]->arg.nir.depth = call RouteControl.getDepth();
--- 194,272 ----
        }
      }
+ 
      adjPktIntrv();
    }
  
! 
! 
!   result_t timerStart() {
!     subState = STRAW_SUB_PROC;
!     depth = call RouteControl.getDepth();
!     if (depth > RADIUS_OF_INTERFERENCE) depth = RADIUS_OF_INTERFERENCE;
!     return call ShootingTimer.start(TIMER_REPEAT, toUART
!       ? UART_ONLY_DELAY
!       : (depth < RADIUS_OF_INTERFERENCE ? UART_DELAY + depth * RADIO_DELAY
!         : RADIUS_OF_INTERFERENCE * RADIO_DELAY));
!   }
!   task void timerTask() {
!     if (bffrState[replyIndex] == STRAW_BFFR_READDONE) {
!       if (toUART) {
!         bffrState[replyIndex] = call SendUART.send(TOS_UART_ADDR,
! 	  TOSH_DATA_LENGTH, &replyBffr[replyIndex])
! 	  ? STRAW_BFFR_SENDING : STRAW_BFFR_EMPTY;
!       } else {
!         bffrState[replyIndex] = call SendReply.send(&replyBffr[replyIndex],
! 	  sizeof(StrawReplyMsg))
! 	  ? STRAW_BFFR_SENDING : STRAW_BFFR_EMPTY;
!       }
!     }
!     replyIndex = (replyIndex + 1) % NO_OF_BFFR;
! 
!     switch (state) {
!     case STRAW_NETWORK_INFO:
!       subState = STRAW_SUB_FNSHD;
!       break;
!     case STRAW_TRANSFER_DATA:
!       if (subState == STRAW_SUB_FIRST) {
!         subState = STRAW_SUB_PROC;
! 	timerStart();
!       }
!       post tdNext();
!       break;
!     case STRAW_RANDOM_READ:
!       if (subState == STRAW_SUB_FIRST) {
!         subState = STRAW_SUB_PROC;
! 	timerStart();
!       }
!       post rrNext();
!       break;
!     case STRAW_ERR_CHK:
!       subState = STRAW_SUB_FNSHD;
!       break;
!     default:
!       break;
!     }
!   }
!   event result_t ShootingTimer.fired() {
!     post timerTask();
      return SUCCESS;
    }
  
+ 
+ 
    task void cmdIntpr() {
      subState = STRAW_SUB_FIRST;
!     call ShootingTimer.start(TIMER_ONE_SHOT,
!       RADIUS_OF_INTERFERENCE * RADIO_DELAY);
      switch (state) {
      case STRAW_NETWORK_INFO:
        toUART = cmd->arg.ni.toUART;
        if ((bffrState[replyIndex] == STRAW_BFFR_EMPTY)
          || (bffrState[replyIndex] == STRAW_BFFR_READDONE)) {
          reply[replyIndex]->arg.nir.type = STRAW_NETWORK_INFO_REPLY;
+         reply[replyIndex]->arg.nir.uartOnlyDelay = UART_ONLY_DELAY;
+         reply[replyIndex]->arg.nir.uartDelay = UART_DELAY;
+         reply[replyIndex]->arg.nir.radioDelay = RADIO_DELAY;
+ 
          reply[replyIndex]->arg.nir.parent = call RouteControl.getParent();
          reply[replyIndex]->arg.nir.depth = call RouteControl.getDepth();
***************
*** 149,156 ****
--- 277,290 ----
        break;
      case STRAW_TRANSFER_DATA:
+       portId = cmd->arg.td.portId;
        start = cmd->arg.td.start;
        size = cmd->arg.td.size;
+ 
+       UART_ONLY_DELAY = cmd->arg.td.uartOnlyDelay;
+       UART_DELAY = cmd->arg.td.uartDelay;
+       RADIO_DELAY = cmd->arg.td.radioDelay;
        toUART = cmd->arg.td.toUART;
        dataIndex = start;
+       checksum = 0;
        post tdNext();
        break;
***************
*** 159,162 ****
--- 293,305 ----
        post rrNext();
        break;
+     case STRAW_ERR_CHK:
+       toUART = cmd->arg.ec.toUART;
+       if ((bffrState[replyIndex] == STRAW_BFFR_EMPTY)
+         || (bffrState[replyIndex] == STRAW_BFFR_READDONE)) {
+         reply[replyIndex]->arg.ecr.type = STRAW_ERR_CHK_REPLY;
+         reply[replyIndex]->arg.ecr.checksum = checksum;
+         bffrState[replyIndex] = STRAW_BFFR_READDONE;
+       }
+       break;
      default:
        break;
***************
*** 166,179 ****
      uint16_t payloadLen) {
  
!     StrawCmdMsg *dripCmd;
!     dripLength = payloadLen;
!     memcpy(dripBffr, (uint8_t *)payload, dripLength);
!     dripCmd = (StrawCmdMsg *)dripBffr;
  
!     if (dripCmd->dest != TOS_LOCAL_ADDRESS) return msg;
      if (state != STRAW_IDLE_STATE) return msg;
  
!     cmdLength = dripLength;
!     memcpy(cmdBffr, dripBffr, cmdLength);
      cmd = (StrawCmdMsg *)cmdBffr;
  
--- 309,319 ----
      uint16_t payloadLen) {
  
!     StrawCmdMsg *cmdMsg = (StrawCmdMsg *)payload;
  
!     if (cmdMsg->dest != TOS_LOCAL_ADDRESS) return msg;
      if (state != STRAW_IDLE_STATE) return msg;
  
!     cmdLength = payloadLen;
!     memcpy(cmdBffr, payload, cmdLength);
      cmd = (StrawCmdMsg *)cmdBffr;
  
***************
*** 185,192 ****
    }
  
!   ////event result_t Drip.rebroadcastRequest(TOS_MsgPtr msg, void *payload) {
!   ////  memcpy(payload, dripBffr, dripLength);
!   ////  return call Drip.rebroadcast(msg, payload, dripLength);
!   ////}
  
    result_t sendDoneCmn(TOS_MsgPtr msg) {
--- 325,329 ----
    }
  
! 
  
    result_t sendDoneCmn(TOS_MsgPtr msg) {
***************
*** 211,285 ****
    }
  
-   result_t timerStart() {
-     subState = STRAW_SUB_PROC;
-     depth = call RouteControl.getDepth();
-     if (depth > RADIUS_OF_INTERFERENCE) depth = RADIUS_OF_INTERFERENCE;
-     return call Timer.start(TIMER_REPEAT, toUART
-       ? UART_ONLY_DELAY
-       : (depth < RADIUS_OF_INTERFERENCE ? UART_DELAY + depth * RADIO_DELAY
-         : RADIUS_OF_INTERFERENCE * RADIO_DELAY));
-   }
-   task void timerTask() {
-     if (bffrState[replyIndex] == STRAW_BFFR_READDONE) {
-       if (toUART) {
-         bffrState[replyIndex] = call SendUART.send(TOS_UART_ADDR,
- 	  TOSH_DATA_LENGTH, &replyBffr[replyIndex])
- 	  ? STRAW_BFFR_SENDING : STRAW_BFFR_EMPTY;
-       } else {
-         bffrState[replyIndex] = call SendReply.send(&replyBffr[replyIndex],
- 	  sizeof(StrawReplyMsg))
- 	  ? STRAW_BFFR_SENDING : STRAW_BFFR_EMPTY;
-       }
-     }
-     replyIndex = (replyIndex + 1) % NO_OF_BFFR;
- 
-     switch (state) {
-     case STRAW_NETWORK_INFO:
-       subState = STRAW_SUB_FNSHD;
-       break;
-     case STRAW_TRANSFER_DATA:
-       if (subState == STRAW_SUB_FIRST) {
-         subState = STRAW_SUB_PROC;
- 	timerStart();
-       }
-       post tdNext();
-       break;
-     case STRAW_RANDOM_READ:
-       if (subState == STRAW_SUB_FIRST) {
-         subState = STRAW_SUB_PROC;
- 	timerStart();
-       }
-       post rrNext();
-       break;
-     default:
-       break;
-     }
-   }
-   event result_t Timer.fired() {
-     post timerTask();
-     return SUCCESS;
-   }
- 
  
  
!   command result_t StdControl.init() {
!     return SUCCESS;
!   }
!   command result_t StdControl.start() {
!     uint8_t i;
!     state = STRAW_IDLE_STATE;
!     subState = STRAW_SUB_IDLE;
!     for (i = 0; i < NO_OF_BFFR; i++) {
!       reply[i] = (StrawReplyMsg *) call SendReply.getBuffer(&replyBffr[i],
!         &replyLen[i]);
!       bffrState[i] = STRAW_BFFR_EMPTY;
!     }
!     replyIndex = 0;
!     return SUCCESS;
!   }
!   command result_t StdControl.stop() {
!     state = STRAW_IDLE_STATE;
!     subState = STRAW_SUB_IDLE;
!     return SUCCESS;
    }
  }
--- 348,356 ----
    }
  
  
  
!   default event result_t Straw.read[uint8_t id](uint32_t aStart, uint32_t aSize,
!     uint8_t* aBffr) {
!     return FAIL;
    }
  }



More information about the Tinyos-contrib-commits mailing list