Bluetooth hc05 library

Dependents:   Nucleo_bt

Revision:
13:85c3dac25599
Parent:
12:4a779fa69f6b
Child:
14:1b81b957214a
--- a/hc05.cpp	Tue Aug 21 15:36:58 2018 +0000
+++ b/hc05.cpp	Sat Aug 25 21:46:43 2018 +0000
@@ -313,7 +313,7 @@
             at0.at_send("AT+INQ\r\n", "");
 
             if(t_interrupt == OFF)  {
-                return at0.getAnswer(20000);
+                return at0.getAnswer(600);
             } else  {
                 return at0.buffer;
             }
@@ -322,7 +322,7 @@
             at1.at_send1("AT+INQ\r\n", "");
 
             if(t_interrupt1 == OFF)  {
-                return at1.getAnswer(20000);
+                return at1.getAnswer(600);
             } else  {
                 return at1.buffer;
             }
@@ -601,11 +601,11 @@
 }
 
 
-char *bt_modul_hc05::set_fixed_addr(char *address)
+char *bt_modul_hc05::set_to_addr(char *address)
 {
     switch(t_uart)  {
         case UART1 :
-            at0.at_send("AT+BIND=\r\n", address);
+            at0.at_send("AT+BIND=%s\r\n", address);
             if(t_interrupt == OFF)  {
                 return at0.getAnswer(600);
             } else  {
@@ -613,7 +613,7 @@
             }
 
         case UART6 :
-            at1.at_send1("AT+BIND=\r\n", address);
+            at1.at_send1("AT+BIND=%s\r\n", address);
             if(t_interrupt1 == OFF)  {
                 return at1.getAnswer(600);
             } else  {
@@ -672,6 +672,32 @@
     return 0;
 }
 
+char *bt_modul_hc05::set_device_paired(char *address, int timeout)
+{
+    switch(t_uart)  {
+        case UART1 :
+            sprintf("%c,%d", address, timeout);
+            at0.at_send("AT+PAIR=%s\r\n", address);
+            if(t_interrupt == OFF)  {
+                return at0.getAnswer(800);
+            } else  {
+                return at0.buffer;
+            }
+
+        case UART6 :
+            sprintf("%c,%d", address, timeout);
+            at1.at_send1("AT+FSAD=%s\r\n", address);
+            if(t_interrupt1 == OFF)  {
+                return at1.getAnswer(800);
+            } else  {
+                return at1.buffer;
+            }
+
+    }
+    return 0;
+}
+
+
 char *bt_modul_hc05::delete_device(char *address)
 {
     switch(t_uart)  {
@@ -815,31 +841,38 @@
 
 char *bt_modul_hc05::search()
 {
+    bt_modul_hc05::set_addr_mode(ANY);
     bt_modul_hc05::get_modul_init();
     bt_modul_hc05::set_modul_giac("9e8b33");
     bt_modul_hc05::set_device_class(0);
-    bt_modul_hc05::set_modul_inquiry("1,5,20");
+    bt_modul_hc05::set_modul_inquiry("1,8,6");
     return bt_modul_hc05::get_modul_inqm();
 }
 
 char *bt_modul_hc05::link_device_any(char *address)
 {
     bt_modul_hc05::set_addr_mode(ANY);
-    
-    if(strncmp(bt_modul_hc05::get_modul_role(), "+ROLE:1", 7) == 0)  {
-        bt_modul_hc05::search_device(address);
-        return bt_modul_hc05::connect_device(address);
-    }
-    return '\0';
+    bt_modul_hc05::search_device(address);
+    bt_modul_hc05::set_to_addr(address);
+    return bt_modul_hc05::connect_device(address);
+
 }
 
 char *bt_modul_hc05::link_device_fixed(char *address)
 {
+
     bt_modul_hc05::set_addr_mode(FIXED);
-    
-    if(strncmp(bt_modul_hc05::get_modul_role(), "+ROLE:1", 7) == 0)  {
-        bt_modul_hc05::set_fixed_addr(address);
-        return bt_modul_hc05::connect_device(address);
-    }
-    return '\0';
+    bt_modul_hc05::set_to_addr(address);
+    return bt_modul_hc05::connect_device(address);
+
+}
+
+char *bt_modul_hc05::link_device_paired(char *address)
+{
+    bt_modul_hc05::set_addr_mode(ANY);
+    bt_modul_hc05::get_modul_init();
+    bt_modul_hc05::set_device_paired(address, 10);
+    bt_modul_hc05::set_to_addr(address);
+    return bt_modul_hc05::connect_device(address);
+
 }
\ No newline at end of file