A library for communication with Adafruit BlueSmirf Bluetooth Modem.

/media/uploads/pmundt/bluesmirf.jpg

Revision:
3:b5ecc07f54e1
Parent:
2:ccd6a9ecbe46
Child:
4:c57439dbda24
--- a/blueSMIRF.cpp	Sat Nov 11 10:36:07 2017 +0000
+++ b/blueSMIRF.cpp	Sat Nov 11 12:59:47 2017 +0000
@@ -62,8 +62,8 @@
         return 0; 
 }
 
-int blueSMIRF::setStatusString(void){
-    serial.printf("SO,OUT:%\n");
+int blueSMIRF::setStatusString(char * str){
+    serial.printf("SO,%s%\n", str);
     char response[16] = {0}; //AOK
     readResponse(response);
     if(strcmp(response, "AOK\r\n") == 0)
@@ -72,8 +72,8 @@
         return 0;
 }
 
-int blueSMIRF::setSpecialConf(void){
-    serial.printf("SQ,128\n");
+int blueSMIRF::setSpecialConf(int value){
+    serial.printf("SQ,%d\n", value);
     char response[16] = {0}; //AOK
     readResponse(response);
     if(strcmp(response, "AOK\r\n") == 0)
@@ -143,7 +143,6 @@
 
 int blueSMIRF::enterCMD(void){
     serial.printf("$$$");
-    wait_ms(50);
     char response[16] = {0};
     readResponse(response);
     if(strcmp(response, "CMD\r\n") == 0)
@@ -154,7 +153,6 @@
 
 int blueSMIRF::exitCMD(void){
     serial.printf("---\n");
-    wait_ms(50);
     char response[16] = {0};
     readResponse(response);
     if(strcmp(response, "END\r\n") == 0)
@@ -162,10 +160,169 @@
     else
         return 0;
 }
+    
+int blueSMIRF::toggleLocalEcho(void){
+    serial.printf("+\n");
+    char response[16] = {0};
+    readResponse(response);
+    if(strcmp(response, "ECHO ON\r\n") == 0)
+        return 1;
+    else if(strcmp(response, "ECHO OFF\r\n") == 0)
+        return 2;
+    else
+        return 0;
+}
+
+void blueSMIRF::returnDipswitchValues(char * response){
+    serial.printf("&\n");
+    readResponse(response);
+}
+
+int blueSMIRF::connectStoredAddress(void){
+    serial.printf("&\n");
+    char response[16] = {0};
+    readResponse(response);
+    if(strcmp(response, "TRYING\r\n") == 0)
+        return 1;
+    else
+        return 0;
+}
+//------------------------------------------>>>>
+int blueSMIRF::connectAddress(int address){
+    serial.printf("C,%12X\n", address);
+    char response[16] = {0};
+    readResponse(response);
+    if(strcmp(response, "TRYING\r\n") == 0)
+        return 1;
+    else
+        return 0;
+}
+ //------------------------------------------>>>>   
+void blueSMIRF::connectAddressFast(int address){
+    serial.printf("CF,%12X\n", address);
+    //No Response
+}
+
+void blueSMIRF::connectLastAddressFast(void){
+    serial.printf("CFI\n");
+    //No Response
+}
+
+void blueSMIRF::connectStoredAddressFast(void){
+    serial.printf("CFR\n");
+    //No Response
+}
+    
+int blueSMIRF::connectAddressTimer(int address, int value = 28){
+    serial.printf("CT,%12X,%d\n", address, value);
+    char response[16] = {0};
+    readResponse(response);
+    if(strcmp(response, "TRYING\r\n") == 0)
+        return 1;
+    else
+        return 0;
+}
+    
+int blueSMIRF::enterFastMode(void){
+    serial.printf("F,1\n");
+    char response[16] = {0};
+    readResponse(response);
+    if(strcmp(response, "TRYING\r\n") == 0)
+        return 1;
+    else
+        return 0;
+}
+
+void blueSMIRF::deviceScan(int time, char * response, int classCOD = 0){
+    if(classCOD == 0)
+        serial.printf("I,%d\n",time);
+    else
+        serial.printf("I,%d,%d\n",time ,classCOD);
+        
+    wait(time);
+    
+    readResponse(response);
+}
+
+void blueSMIRF::deviceScanWithNames(int time, char * response, int classCOD = 0){
+    if(classCOD == 0)
+        serial.printf("IN,%d\n",time);
+    else
+        serial.printf("IN,%d,%d\n",time ,classCOD);
+        
+    wait(time);
+    
+    readResponse(response);
+}
+    
+void blueSMIRF::deviceScanWithRSSI(char * response){
+    serial.printf("IQ\n");
+    wait(7); // Wait 7 seconds
+    readResponse(response);
+}
+    
+void blueSMIRF::deviceScanRovingNetwork(int time, char * response){
+    serial.printf("IS%d\n",time);
+    wait(time);
+    readResponse(response);
+}
+    
+void blueSMIRF::deviceScanCablePair(int time, char * response){
+    serial.printf("IR%d\n",time);
+    wait(time);
+    readResponse(response);
+}
+    
+int blueSMIRF::hidePin(void){
+    serial.printf("J\n");
+    char response[16] = {0};
+    readResponse(response);
+    if(strcmp(response, "Pin Hidden\r\n") == 0)
+        return 1;
+    else
+        return 0;
+}
+    
+int blueSMIRF::killConnection(void){
+    serial.printf("K,\n");
+    char response[16] = {0};
+    readResponse(response);
+    if(strcmp(response, "AOK\r\n") == 0)
+        return 1;
+    else
+        return 0;
+}
+
+int blueSMIRF::toggleLinkQuality(char * response){
+    serial.printf("L\n");
+    readResponse(response);
+    if(strcmp(response, "NOT Connected!\r\n") == 0)
+        return 0;
+    else
+        return 1;
+       
+}
+    
+void blueSMIRF::passCharacter(char c){
+    serial.printf("P,%c\n", c);
+}
+
+int blueSMIRF::quiteMode(int mode = -1){
+    if(mode == -1)
+        serial.printf("Q\n");
+    else
+        serial.printf("Q,%d\n",mode);
+        
+    char response[32] = {0};
+    readResponse(response);
+    if((strcmp(response, "Quiet\r\n") == 0) || (strcmp(response, "AOK\r\n") == 0))
+        return 1;
+    else
+        return 0;
+}
 
 int blueSMIRF::reboot(void){
     serial.printf("R,1\n");
-    wait_ms(50);
     char response[16] = {0}; //Reboot!
     readResponse(response);
     if(strcmp(response, "Reboot!\r\n") == 0)
@@ -174,6 +331,40 @@
         return 0;
 }
 
+int blueSMIRF::passReceived(int mode){
+    serial.printf("T,%d\n", mode);
+    char response[16] = {0};
+    readResponse(response);
+    if((strcmp(response, "T=0!\r\n") == 0) || (strcmp(response, "T=0!\r\n") == 0))
+        return 1;
+    else
+        return 0;
+}
+    
+int blueSMIRF::changeUART(char * baud, char parity){
+    serial.printf("U,%s,%c\n", baud, parity);
+    char response[16] = {0};
+    readResponse(response);
+    if(strcmp(response, "AOK\r\n") == 0)
+        return 1;
+    else
+        return 0;
+}
+    
+int blueSMIRF::enableDiscovery(void){
+    serial.printf("W\n");
+    char response[16] = {0};
+    readResponse(response);
+    if(strcmp(response, "Wake\r\n") == 0)
+        return 1;
+    else
+        return 0;
+}
+
+void blueSMIRF::enterLowPowerSleep(void){
+    serial.printf("Z\n"); 
+}    
+
 void blueSMIRF::readResponse(char* response){
     wait_ms(50);
     int index = 0;
@@ -186,4 +377,4 @@
 void blueSMIRF::flushSerial(void){
     while(serial.readable())
         char c = serial.getc();
-}
\ No newline at end of file
+}