Example of BLE scan/connect/service discovery
Fork of BLE_LEDBlinker by
Diff: main.cpp
- Revision:
- 14:92bb9a8ccd0b
- Parent:
- 13:75f95a5cf9c1
--- a/main.cpp Fri Dec 09 10:10:14 2016 +0000 +++ b/main.cpp Thu Apr 20 06:54:25 2017 +0000 @@ -21,12 +21,6 @@ DigitalOut alivenessLED(LED1, 1); -#if defined(TARGET_DELTA_DFCM_NNN40) -Serial uart(p17, p16);//temp use for NNN50 -#else -Serial uart(USBTX, USBRX); -#endif - bool triggerLedCharacteristic = false; DiscoveredCharacteristic ledCharacteristic; @@ -40,7 +34,7 @@ if (params->peerAddr[0] != 0xF9) { /* !ALERT! Alter this filter to suit your device. */ return; } - uart.printf("adv peerAddr[%02x %02x %02x %02x %02x %02x] rssi %d, isScanResponse %u, AdvertisementType %u\r\n", + printf("adv peerAddr[%02x %02x %02x %02x %02x %02x] rssi %d, isScanResponse %u, AdvertisementType %u\r\n", params->peerAddr[5], params->peerAddr[4], params->peerAddr[3], params->peerAddr[2], params->peerAddr[1], params->peerAddr[0], params->rssi, params->isScanResponse, params->type); @@ -48,43 +42,43 @@ } void serviceDiscoveryCallback(const DiscoveredService *service) { - uart.printf("serviceDiscoveryCallback\n"); + printf("serviceDiscoveryCallback\n"); if (service->getUUID().shortOrLong() == UUID::UUID_TYPE_SHORT) { - uart.printf("S UUID-%x attrs[%u %u]\r\n", service->getUUID().getShortUUID(), service->getStartHandle(), service->getEndHandle()); + printf("S UUID-%x attrs[%u %u]\r\n", service->getUUID().getShortUUID(), service->getStartHandle(), service->getEndHandle()); } else { - uart.printf("S UUID-"); + printf("S UUID-"); const uint8_t *longUUIDBytes = service->getUUID().getBaseUUID(); for (unsigned i = 0; i < UUID::LENGTH_OF_LONG_UUID; i++) { - uart.printf("%02x", longUUIDBytes[i]); + printf("%02x", longUUIDBytes[i]); } - uart.printf(" attrs[%u %u]\r\n", service->getStartHandle(), service->getEndHandle()); + printf(" attrs[%u %u]\r\n", service->getStartHandle(), service->getEndHandle()); } } void characteristicDiscoveryCallback(const DiscoveredCharacteristic *characteristicP) { if (characteristicP->getUUID().shortOrLong() == UUID::UUID_TYPE_SHORT) { - uart.printf(" C UUID-%x valueAttr[%u] props[%x]\r\n", characteristicP->getUUID().getShortUUID(), characteristicP->getValueHandle(), (uint8_t)characteristicP->getProperties().broadcast()); + printf(" C UUID-%x valueAttr[%u] props[%x]\r\n", characteristicP->getUUID().getShortUUID(), characteristicP->getValueHandle(), (uint8_t)characteristicP->getProperties().broadcast()); if (characteristicP->getUUID().getShortUUID() == 0x2a19) { /* !ALERT! Alter this filter to suit your device. */ ledCharacteristic = *characteristicP; triggerLedCharacteristic = true; } } else { - uart.printf(" C UUID-"); + printf(" C UUID-"); const uint8_t *longUUIDBytes = characteristicP->getUUID().getBaseUUID(); for (unsigned i = (UUID::LENGTH_OF_LONG_UUID) - 1; i < UUID::LENGTH_OF_LONG_UUID; i--) { - uart.printf("%02x ", longUUIDBytes[i]); + printf("%02x ", longUUIDBytes[i]); } - uart.printf(" valueAttr[%u] props[%x]\r\n", characteristicP->getValueHandle(), (uint8_t)characteristicP->getProperties().broadcast()); + printf(" valueAttr[%u] props[%x]\r\n", characteristicP->getValueHandle(), (uint8_t)characteristicP->getProperties().broadcast()); } } void discoveryTerminationCallback(Gap::Handle_t connectionHandle) { - uart.printf("terminated SD for handle %u\r\n", connectionHandle); + printf("terminated SD for handle %u\r\n", connectionHandle); } void connectionCallback(const Gap::ConnectionCallbackParams_t *params) { - uart.printf("connectionCallback\n"); + printf("connectionCallback\n"); if (params->role == Gap::CENTRAL) { BLE::Instance().gattClient().onServiceDiscoveryTermination(discoveryTerminationCallback); BLE::Instance().gattClient().launchServiceDiscovery(params->handle, serviceDiscoveryCallback, characteristicDiscoveryCallback); @@ -94,11 +88,11 @@ void triggerToggledWrite(const GattReadCallbackParams *response) { if (response->handle == ledCharacteristic.getValueHandle()) { #if DUMP_READ_DATA - uart.printf("triggerToggledWrite: handle %u, offset %u, len %u\r\n", response->handle, response->offset, response->len); + printf("triggerToggledWrite: handle %u, offset %u, len %u\r\n", response->handle, response->offset, response->len); for (unsigned index = 0; index < response->len; index++) { - uart.printf("%c[%02x]", response->data[index], response->data[index]); + printf("%c[%02x]", response->data[index], response->data[index]); } - uart.printf("\r\n"); + printf("\r\n"); #endif uint8_t toggledValue = response->data[0] ^ 0x1; @@ -113,7 +107,7 @@ } void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params) { - uart.printf("disconnected\r\n"); + printf("disconnected\r\n"); } /** @@ -154,7 +148,7 @@ } int main(void) { - uart.printf("APPLICATION START\r\n"); + printf("APPLICATION START\r\n"); ticker.attach(periodicCallback, 1); BLE &ble = BLE::Instance(); @@ -163,7 +157,7 @@ /* SpinWait for initialization to complete. This is necessary because the * BLE object is used in the main loop below. */ while (ble.hasInitialized() == false) { /* spin loop */ } - uart.printf("init DONE\r\n"); + printf("init DONE\r\n"); while (true) { if (triggerLedCharacteristic && !ble.gattClient().isServiceDiscoveryActive()) { triggerLedCharacteristic = false;