Driver for the JY-MCU v1.06 HC-06 Bluetooth module.
Dependents: DISCO-F746NG_rtos_test MbedTableControl
HC06Bluetooth.hpp.orig
- Committer:
- Weimen Li
- Date:
- 2016-08-08
- Revision:
- 21:cce827364df1
- Parent:
- 5:f169dd551a3a
File content as of revision 21:cce827364df1:
/** * @file HC06Bluetooth.hpp * @date June 4th, 2016 * @author Weimen Li * @class HC06Bluetooth * @brief This class creates an object representing the HC06 Bluetooth Module * @code // First, make sure to have included the hpp file: #include HC06Bluetooth.hpp // In the scope that you need it, create a new instance of the HC06Bluetooth object by calling: HC06Bluetooth HC06BluetoothObj(TXPin, RXPin, "My Cool Robot", someCallBackFunction); // The "someCallBackFunction" is a function you write that is called when a new line has been read. // For instance, one simple callback is to simply echo (reprint to output) the received line: void BTEchoCallback(const char* receivedLine) { HC06BluetoothObj.print(receivedLine); } // A more sophisticated callback would be one that understands the received line contains commands, // and parses them: // Callback function to read a command from input // Include the <sstream> library, since that is what we use to process information. #include <sstream> #include <string> // Variables to read information into. volatile float kConst; volatile float iConst; volatile float dConst; void BTCommandCallback(const char* receivedString) { stringstream stringStream(receivedString); // The received string has the form "newDeviceName kConst iConst dConst" // Necessary to use these temporary variables since stringStream cannot read into // "volatile float", but it can read into "float". float kConstTemp; float iConstTemp; float dConstTemp; stringStream >> kConstTemp; stringStream >> iConstTemp; stringStream >> dConstTemp; kConst = kConstTemp; iConst = iConstTemp; dConst = dConstTemp; // Echo the received commands: char output[256]; sprintf(output, "Received Command: kConst = %f, iConst = %f, dConst = %f", kConst, iConst, dConst); bluetoothObj.print(output); } } * @endcode */ //TODO: Complete this example. #ifndef HC06BLUETOOTH_H_ #define HC06BLUETOOTH_H_ #include "mbed.h" #include <string> class HC06Bluetooth : public RawSerial{ public: /** * @brief Constructor for the HC06_Bluetooth class. * @param TX The pin that the TX line is attached to. * @param RX The pin that the RX line is attached to. * @param deviceName The name that you want your system to be identified as when you connect to it i.e. "Weimen's MAE433Robot" * @param callbackFunc The callback function that will be called once a newline character is encountered on the receiving data. * The callback function takes as an argument a string containing the line that has been read. * @remark The callback function is run within within an interrupt service routine, so it should be written to be safe for ISRs. */ HC06Bluetooth(PinName TX, PinName RX, std::string deviceName, void (*callbackFunc) (const char* readString) = NULL); virtual ~HC06Bluetooth(); /** * @brief Print information in buffer to the output. */ void print(const char *buffer); private: void receiveByteISR(); void (*callbackFunc) (const char*); char dataReceivedBuffer[256]; int32_t dataReceivedBufferPos; char dataReceivedBufferCopy[256]; }; #endif /* HC06BLUETOOTH_H_ */