mbed library to connect to rfduino

Dependents:   RFDuino_example

Revision:
0:af5f495861b2
Child:
2:effa15a46f51
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RFDuino.cpp	Mon Jan 06 15:50:16 2014 +0000
@@ -0,0 +1,105 @@
+#include "RFDuino.h"
+
+//Commands
+#define HANDSHAKE  0x11
+#define CONNECTED  0x22 
+#define TRANSMIT   0x33
+#define RECEIVE    0x44
+
+
+
+RFDuino::RFDuino(PinName tx, PinName rx): rfd(tx,rx)    {
+    //init
+        dataFlag=false;
+        //attach Serial isr
+        rfd.attach(this, &RFDuino::receive_isr);
+}
+
+
+
+//rfduino seems to take a few seconds to be ready
+//for serial comm
+bool RFDuino::handshake()   {
+    unsigned char temp = 0;
+    __disable_irq();
+
+    rfd.putc(HANDSHAKE);
+    wait(0.1);
+    if(rfd.readable())  {
+            temp = rfd.getc();
+    }
+    __enable_irq();
+    if(temp) { return 1;} 
+            else { return 0;};
+
+
+}
+
+bool RFDuino::dataReady()   {
+    return dataFlag;
+}
+
+bool RFDuino::isConnected() {
+    unsigned char temp;
+    __disable_irq();
+    
+    rfd.putc(CONNECTED);
+    temp = rfd.getc();
+    
+
+  __enable_irq();
+    return temp;
+}
+
+
+
+
+//needs to be less than 255 bytes
+void RFDuino::transmit(unsigned char* buff, int len)    {
+    int i;
+    __disable_irq();
+    
+    //send command
+    rfd.putc(TRANSMIT);
+    rfd.putc((unsigned char)len);
+    for(i=0;i<len;i++)  {
+        rfd.putc(buff[i]);
+    }
+    
+    __enable_irq();
+}
+
+
+int RFDuino::copyData(unsigned char* buff, int size)    {
+    
+    memcpy(buff, data.buff, size/*data.len*/);
+    dataFlag = false;
+    
+    return data.len;
+}
+
+void RFDuino::receive_isr() {
+    
+    if(rfd.getc() == RECEIVE)   {
+        data.len = (int)rfd.getc();
+        for(int i=0;i<data.len;i++) {
+            data.buff[i] = rfd.getc();
+        }
+        //handshake
+        //rfd.putc(HANDSHAKE);
+        
+        dataFlag=true;
+    } else  {
+    //we dont know this command, read and disregard
+        while(rfd.readable())   {
+            rfd.getc();
+        }
+    }
+    
+}
+
+
+
+
+
+