]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
Changes to reduce atomic code.
authorsmckown <smckown@4bc1554a-c7f2-4f65-a403-e0be01f0239c>
Fri, 8 May 2009 23:19:07 +0000 (23:19 +0000)
committerR. Steve McKown <rsmckown@gmail.com>
Tue, 1 Dec 2009 03:01:33 +0000 (20:01 -0700)
tos/chips/msp430/usci/Msp430SpiP.nc

index 69fca5a5702e3526416fdd1d20bd78db33b43e66..b4a25436232a75d2e5010ce30edac84395a8c8db 100644 (file)
@@ -72,10 +72,10 @@ implementation {
   };
 
   uint8_t m_pins;
-  uint8_t* m_txBuf;
-  uint8_t* m_rxBuf;
-  uint16_t m_len;
-  uint16_t m_pos;
+  norace uint8_t* m_txBuf;
+  norace uint8_t* m_rxBuf;
+  norace uint16_t m_len;
+  norace uint16_t m_pos;
 
   inline bool is4pin() /* TRUE if the SPI bus is in 4-pin mode */
   {
@@ -163,12 +163,10 @@ implementation {
 
   task void signalSendDone()
   {
-    atomic {
-      error_t error = (m_pos == m_len) ? SUCCESS : FAIL;
+    error_t error = (m_pos == m_len) ? SUCCESS : FAIL;
 
-      m_len = 0;
-      signal SpiPacket.sendDone(m_txBuf, m_rxBuf, m_pos, error);
-    }
+    m_len = 0;
+    signal SpiPacket.sendDone(m_txBuf, m_rxBuf, m_pos, error);
   }
 
   async command void ResourceConfigure.unconfigure()
@@ -269,22 +267,15 @@ implementation {
     if (isBusy() || (!txBuf && !rxBuf) || len == 0)
       return FAIL;
     else {
-      atomic {
-       m_txBuf = txBuf;
-       m_rxBuf = rxBuf;
-       m_len = len;
-       m_pos = 0;
-       if (sendData()) {
-         call Registers.setIeRx();
-         return SUCCESS;
-       } else if (m_pos) {
-         post signalSendDone();
-         return SUCCESS;
-       } else {
-         m_len = 0;
-         return FAIL;
-       }
-      }
+      m_txBuf = txBuf;
+      m_rxBuf = rxBuf;
+      m_len = len;
+      m_pos = 0;
+      if (sendData())
+       call Registers.setIeRx();
+      else
+       post signalSendDone();
+      return SUCCESS;
     }
   }
 
@@ -300,7 +291,7 @@ implementation {
        return;
     }
     call Registers.clrIeRx();
-    post signalSendDone(); /* Don't signal from ISR context */
+    post signalSendDone();
   }
 
   default async event void SpiPacket.sendDone(uint8_t*, uint8_t*, uint16_t,