Driver for the JY-MCU v1.06 HC-06 Bluetooth module.
Dependents: DISCO-F746NG_rtos_test MbedTableControl
HC06Bluetooth.cpp@6:5ba0038a7a9a, 2016-06-09 (annotated)
- Committer:
- Electrotiger
- Date:
- Thu Jun 09 18:25:31 2016 +0000
- Revision:
- 6:5ba0038a7a9a
- Parent:
- 3:ee17212e838e
- Child:
- 8:14bf9b541f9a
Fixed error with merging branches (I should have deleted the other branch.)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Electrotiger | 0:3ab5e47dde1e | 1 | /* |
Electrotiger | 0:3ab5e47dde1e | 2 | * HC06Bluetooth.cpp |
Electrotiger | 0:3ab5e47dde1e | 3 | * |
Electrotiger | 0:3ab5e47dde1e | 4 | * Created on: Jun 4, 2016 |
Electrotiger | 0:3ab5e47dde1e | 5 | * Author: Developer |
Electrotiger | 0:3ab5e47dde1e | 6 | */ |
Electrotiger | 0:3ab5e47dde1e | 7 | |
Electrotiger | 0:3ab5e47dde1e | 8 | #include <HC06Bluetooth.hpp> |
Electrotiger | 1:026034717620 | 9 | #include <algorithm> |
Electrotiger | 0:3ab5e47dde1e | 10 | |
Electrotiger | 2:7e0453895727 | 11 | HC06Bluetooth::HC06Bluetooth(PinName TX, PinName RX, std::string deviceName, void (*callbackFunc) (const char* readString)) |
Electrotiger | 6:5ba0038a7a9a | 12 | : btSerialObj(TX, RX), callbackFunc (callbackFunc) { |
Electrotiger | 0:3ab5e47dde1e | 13 | // The default baud rate is 9600. Overwrite it to 230400. |
Electrotiger | 6:5ba0038a7a9a | 14 | btSerialObj.puts("AT+BAUD9"); |
Electrotiger | 6:5ba0038a7a9a | 15 | btSerialObj.baud(230400); |
Electrotiger | 0:3ab5e47dde1e | 16 | // Set the name of the device. |
Electrotiger | 6:5ba0038a7a9a | 17 | btSerialObj.puts(("AT+NAME" + deviceName).c_str()); |
Electrotiger | 0:3ab5e47dde1e | 18 | // Set the interrupt to be called when a byte is received. |
Electrotiger | 3:ee17212e838e | 19 | if (callbackFunc != NULL) { |
Electrotiger | 6:5ba0038a7a9a | 20 | btSerialObj.attach(this, &HC06Bluetooth::receiveByteISR); |
Electrotiger | 3:ee17212e838e | 21 | } |
Electrotiger | 0:3ab5e47dde1e | 22 | } |
Electrotiger | 0:3ab5e47dde1e | 23 | |
Electrotiger | 0:3ab5e47dde1e | 24 | HC06Bluetooth::~HC06Bluetooth() { |
Electrotiger | 0:3ab5e47dde1e | 25 | // TODO Auto-generated destructor stub |
Electrotiger | 0:3ab5e47dde1e | 26 | } |
Electrotiger | 0:3ab5e47dde1e | 27 | |
Electrotiger | 6:5ba0038a7a9a | 28 | void HC06Bluetooth::print(const char* buffer) { |
Electrotiger | 6:5ba0038a7a9a | 29 | btSerialObj.puts(buffer); |
Electrotiger | 6:5ba0038a7a9a | 30 | } |
Electrotiger | 6:5ba0038a7a9a | 31 | |
Electrotiger | 0:3ab5e47dde1e | 32 | void HC06Bluetooth::receiveByteISR() { |
Electrotiger | 6:5ba0038a7a9a | 33 | while(btSerialObj.readable()) { |
Electrotiger | 1:026034717620 | 34 | // Get the character from the input. |
Electrotiger | 6:5ba0038a7a9a | 35 | char receivedChar = btSerialObj.getc(); |
Electrotiger | 1:026034717620 | 36 | // If the character is a newline, then a full command has been read. |
Electrotiger | 1:026034717620 | 37 | if (receivedChar == '\n') { |
Electrotiger | 1:026034717620 | 38 | // Terminate the buffer with a null character, since that is what strings end with. |
Electrotiger | 1:026034717620 | 39 | receivedChar = '\0'; |
Electrotiger | 1:026034717620 | 40 | dataReceivedBuffer[dataReceivedBufferPos] = receivedChar; |
Electrotiger | 1:026034717620 | 41 | // Copy data from the buffer to a copy. |
Electrotiger | 1:026034717620 | 42 | std::copy(dataReceivedBuffer, dataReceivedBuffer + dataReceivedBufferPos, dataReceivedBufferCopy); |
Electrotiger | 1:026034717620 | 43 | // Reset the buffer position. |
Electrotiger | 1:026034717620 | 44 | dataReceivedBufferPos = 0; |
Electrotiger | 1:026034717620 | 45 | // Call the callback function. |
Electrotiger | 1:026034717620 | 46 | callbackFunc((const char*)dataReceivedBuffer); |
Electrotiger | 1:026034717620 | 47 | } |
Electrotiger | 1:026034717620 | 48 | // Otherwise, just place it in the buffer and move on. |
Electrotiger | 1:026034717620 | 49 | else { |
Electrotiger | 6:5ba0038a7a9a | 50 | dataReceivedBuffer[dataReceivedBufferPos] = btSerialObj.getc(); |
Electrotiger | 1:026034717620 | 51 | dataReceivedBufferPos++; |
Electrotiger | 1:026034717620 | 52 | } |
Electrotiger | 1:026034717620 | 53 | } |
Electrotiger | 2:7e0453895727 | 54 | } |
Electrotiger | 0:3ab5e47dde1e | 55 |