]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/chips/msp430/usci/Msp430SpiP.nc
Have Msp430 USCI SpiPacket send op abort if it sees peripheral UCSWRST.
[tinyos-2.x.git] / tos / chips / msp430 / usci / Msp430SpiP.nc
index 1f9701cc1da40cb3befded98cc1400b9748d63fe..8e9100a9e9e59db37bae7fe02d3232ba998510bc 100644 (file)
@@ -182,7 +182,7 @@ implementation {
        end = m_len;
       call Registers.setTxbuf((m_txBuf) ? m_txBuf[m_pos] : 0);
       while (++m_pos < end) {
-       while (!call Registers.getIfgRx());
+       while (!call Registers.getIfgTx() && !call Registers.getCtl1(UCSWRST));
        if (m_rxBuf)
          m_rxBuf[m_pos - 1] = call Registers.getRxbuf();
        else
@@ -215,17 +215,15 @@ implementation {
   task void signalSendDone()
   {
     atomic {
-      signal SpiPacket.sendDone(m_txBuf, m_rxBuf, m_len, SUCCESS);
       m_len = 0;
+      signal SpiPacket.sendDone(m_txBuf, m_rxBuf, m_len, SUCCESS);
     }
   }
 
   async event void Interrupts.rx(uint8_t byte)
   {
     if (m_rxBuf)
-      m_rxBuf[m_pos - 1] = call Registers.getRxbuf();
-    else
-      call Registers.getRxbuf();
+      m_rxBuf[m_pos - 1] = byte;
 
     if (m_pos < m_len)
       sendData();