Partial implementation of BlueGiga's BGAPI for use with the BLE112/3 modules over UART.

Hi there! I recently started using BLE112 modules with the mbed LPC1768 MCU, and I realized there was no implementation of BlueGiga's BGAPI available for mbed. This library implements only a few commands, but if you're looking to get started, this is a good place to look.

This was developed against BGAPI v1.3.2. I make no guarantees as to how well it will work with newer revisions of the software.

BGLib.h

Committer:
dishbreak
Date:
2015-05-19
Revision:
4:21eee6881dac
Parent:
3:8f43af513d87
Child:
5:7c7220a316ed

File content as of revision 4:21eee6881dac:

#include "mbed.h"
#include "callbacks.h"


class BGLib {
/** A class which can communicate with a BlueGiga BLE112(3) over a UART Connection. Note that all communication is asynchronous. Your class will have to supply callbacks for each command it intends to use.
* 
* Example:
* @code
* #include "mbed.h"
* #include "BGLib.h"
* 
* BGLib ble112(p9, p10, p7, p8);
* 
* uint8_t hello_msg[] = {0x00, 0x00, 0x00, 0x01};
* 
* void helloCallback() {
*    //executed when code compiles.
* }
* 
* int main() {
*     ble112.set_ble_rsp_system_hello(&helloCallback);
*     ble112.ble_cmd_system_hello();
* }
*/

public:
    /** Create a BGLib instance
    * @param tx Pin to use for UART transmission
    * @param rx Pin to use for UART reception
    * @param rts Flow control pin used for RTS.
    * @param cts Flow control pin used for CTS.
    */
    BGLib(PinName tx, PinName rx, PinName rts, PinName cts);
    
    /** Send a Hello command to the device. */
    void ble_cmd_system_hello();
    
    /** Set the callback for a Hello command. Invoked when a response arrives.
    * @param pCallback Function pointer to the desired callback.
    */
    void set_ble_rsp_system_hello(hello_callback_t pCallback); 
    
    /** Send a Get Info command to the device. */
    void ble_cmd_system_get_info();
    
    /** Set the callback for a Get Info command. Invoked when a response arrives.
    * @param pCallback Function pointer to the desired callback.
    */
    void set_ble_rsp_system_get_info(get_info_callback_t pCallback);
    
    /** Send a Reset command to the device. */
    void ble_cmd_system_reset(ble_msg_system_reset_t args);
    
    /** Set the callback for a Boot event. Invoked when the BLE112 is powered on or reset. 
    * @param pCallback Function pointer to the desired callback.
    */
    void set_ble_evt_system_boot(boot_callback_t pCallback);
    
    /** Set a "timestamping" callback. This is invoked whenever the mbed receives data on the UART interface.
    * @param pCallback Function pointer to the desired callback.
    */
    void set_timestamp_callback(timestamp_callback_t pCallback);
    
private:
    void parse();
    void send_bytes(uint8_t bytes[], int length);
    
    Serial mSerial;
    
    hello_callback_t mHelloCallback;
    get_info_callback_t mGetInfoCallback;
    boot_callback_t mBootCallback;
    timestamp_callback_t mTimestampCallback;
    
};