The driver was tested with the Grove BLE module. It's an HM-11 BLE 4.0 module based on a TI CC2541 chip. It operates using a standard 'AT' command set. See the datasheet for a full list of available commands and their possible responses:
http://www.seeedstudio.com/wiki/images/c/cd/Bluetooth4_en.pdf
It is connected via a UART at 9,600 baud.
if (!ble.setupTty(B9600)) {
cerr << "Failed to setup tty port parameters" << endl;
return 1;
}
printUsage(argv[0]);
if (argc > 1) {
cout << "Sending command line argument (" << argv[1] << ")..." << endl;
sendCommand(ble, argv[1]);
} else {
char addr[] = "AT+ADDR?";
cout << "Querying module address (" << addr << ")..." << endl;
sendCommand(ble, addr);
upm_delay(1);
char pin[] = "AT+PASS?";
cout << "Querying module PIN (" << pin << ")..." << endl;
sendCommand(ble, pin);
}