Bluetooth module HC-05 Lib. suppotrs printf(); support IrqAttach, with using RTOS. include feature as background rxIrq attach. the lib store rx buf of serial, therefore can have over 16 bytes string. if you want to get string, you call read() or getLine(). read() is ALL string, getLine() is under CR('\r').

Dependencies:   RingBuffer

Fork of HC05 by Akinori Hashimoto

Revision:
4:488e26ebc411
Parent:
3:df094ed45a88
Child:
5:a05c7662c51f
diff -r df094ed45a88 -r 488e26ebc411 HC05.h
--- a/HC05.h	Wed Oct 28 06:14:40 2015 +0000
+++ b/HC05.h	Mon Nov 02 07:19:11 2015 +0000
@@ -2,38 +2,14 @@
 
 /**
  * @code
-#include "mbed.h"
-#include "HC05.h"
-
-DigitalOut led[]= {LED1, LED2, LED3, LED4};
-HC05 hc05(p9, p10);
 
-void rcvIrq(unsigned int id)
-{
-    led[0]= !led[0];
-    if('2'<=id && id<='4') {   // LED2 ~ 4
-        id -= '1';
-        led[id]= !led[id];
-    }
-    return;
-}
 
-int main()
-{
-    hc05.init();
-    hc05.setAttachRx(rcvIrq);
-    while(true) {
-//        hc05.sendLine(hc05.read());
-        hc05.sendLine(hc05.getLine());
-        wait(10);
-    }
-}
-// EOF
  * @endcode
 */
 
 #include "mbed.h"
 #include <string>
+#include "RingBuffer.h"
 
 /**     Bluetooth module HC05 control class.
  *
@@ -55,7 +31,7 @@
     void init(int baudrate= 115200, int bit=8, int parity=SerialBase::None, int stop=1, bool CRLN=true);
 
 
-    void setAttachRx(void (*fptr)(unsigned int));
+    void setAttachRx(void (*fptr)(char));
     bool readable();
     string read();
     string getLine();
@@ -65,12 +41,13 @@
 //    void sendInt(int num, string foreword="");
 
 private:
-    Serial hc05;
+    RawSerial hc05;
     string CR;
-    string rxStr;
+//    string rxStr;
+    RingBuffer ringBuf;
 
     // RxIrq function pointer as out of class.
-    void (*fptrRxIrq)(unsigned int);
+    void (*fptrRxIrq)(char);
 
     // copy buf of rx to private string.
     void _read();   // copy buf of rx to private string.