BLE to Digi-Dot-Booster bridge. Send commands to DD-Booster over Bluetooth using BLE Nordic UART service
Dependencies: BLE_API DD-Booster-mbed mbed nRF51822
main.cpp
- Committer:
- Gamadril
- Date:
- 2017-03-06
- Revision:
- 1:841b99be017c
- Parent:
- 0:972386bde852
File content as of revision 1:841b99be017c:
#include "mbed.h" #include "BLE.h" #include "UARTService.h" #include "DDBooster.h" const static char DEVICE_NAME[] = "DD-Booster"; #define SPI_MOSI P0_3 #define SPI_SCK P0_4 #define SPI_CS P0_2 #define RESET P0_1 UARTService *uart = NULL; DDBooster booster(SPI_MOSI, SPI_SCK, SPI_CS, RESET); void onConnected(const Gap::ConnectionCallbackParams_t *params) { Gap::ConnectionParams_t fast; BLE &ble = BLE::Instance(); ble.getPreferredConnectionParams(&fast); fast.minConnectionInterval = 8; fast.maxConnectionInterval = 16; fast.slaveLatency = 0; ble.setPreferredConnectionParams(&fast); } void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params) { BLE &ble = BLE::Instance(); ble.startAdvertising(); } void onDataWritten(const GattWriteCallbackParams *params) { if ((uart != NULL) && (params->handle == uart->getTXCharacteristicHandle())) { booster.sendRawBytes(params->data, params->len); } } int main(void) { booster.reset(); BLE &ble = BLE::Instance(); ble.init(); ble.onConnection(onConnected); ble.onDisconnection(disconnectionCallback); ble.onDataWritten(onDataWritten); uart = new UARTService(ble); /* setup advertising */ ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (const uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME) - 1); ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS, (const uint8_t *)UARTServiceUUID_reversed, sizeof(UARTServiceUUID_reversed)); ble.setAdvertisingInterval(500); ble.startAdvertising(); while (true) { ble.waitForEvent(); } }