test
Fork of nRF51822 by
Diff: btle/btle_discovery.cpp
- Revision:
- 251:d4e0cf5e8751
- Parent:
- 249:55aa8e43f532
- Child:
- 252:4b3f294415f5
--- a/btle/btle_discovery.cpp Fri Jun 19 15:55:22 2015 +0100 +++ b/btle/btle_discovery.cpp Fri Jun 19 15:55:22 2015 +0100 @@ -117,6 +117,54 @@ } } +void +NordicServiceDiscovery::progressCharacteristicDiscovery(void) +{ + while (cDiscoveryActive && (characteristicIndex < numCharacteristics)) { + /* THIS IS WHERE THE CALLBACK WILL GO */ + printf("%x [%u]\r\n", characteristics[characteristicIndex].uuid, characteristics[characteristicIndex].valueHandle); + + characteristicIndex++; + } + + if (cDiscoveryActive) { + Gap::Handle_t startHandle = characteristics[characteristicIndex - 1].valueHandle + 1; + Gap::Handle_t endHandle = services[serviceIndex].endHandle; + resetDiscoveredCharacteristics(); + + if (startHandle < endHandle) { + ble_gattc_handle_range_t handleRange = { + .start_handle = startHandle, + .end_handle = endHandle + }; + printf("char discovery returned %u\r\n", sd_ble_gattc_characteristics_discover(connHandle, &handleRange)); + } else { + terminateCharacteristicDiscovery(); + } + } +} + +void +NordicServiceDiscovery::progressServiceDiscovery(void) +{ + while (sDiscoveryActive && (serviceIndex < numServices)) { + /* THIS IS WHERE THE CALLBACK WILL GO */ + printf("%x [%u %u]\r\n", services[serviceIndex].uuid, services[serviceIndex].startHandle, services[serviceIndex].endHandle); + + if (true) { /* characteristic discovery is optional. */ + launchCharacteristicDiscovery(connHandle, services[serviceIndex].startHandle, services[serviceIndex].endHandle); + } else { + serviceIndex++; /* Progress service index to keep discovery alive. */ + } + } + if (sDiscoveryActive && (numServices > 0) && (serviceIndex > 0)) { + Gap::Handle_t endHandle = services[serviceIndex - 1].endHandle; + resetDiscoveredServices(); + + printf("services discover returned %u\r\n", sd_ble_gattc_primary_services_discover(connHandle, endHandle, NULL)); + } +} + void bleGattcEventHandler(const ble_evt_t *p_ble_evt) { switch (p_ble_evt->header.evt_id) {