A library for communication with Adafruit BlueSmirf Bluetooth Modem.
Diff: blueSMIRF.cpp
- 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 +}