Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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 |