ref: 9196c18d376d4f18c686bcfec8550f9c8659d5ea
src/components/ble/ServiceDiscovery.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include "components/ble/ServiceDiscovery.h" #include <libraries/log/nrf_log.h> #include "components/ble/BleClient.h" using namespace Pinetime::Controllers; ServiceDiscovery::ServiceDiscovery(std::array<BleClient*, 2>&& clients) : clients {clients} { } void ServiceDiscovery::StartDiscovery(uint16_t connectionHandle) { NRF_LOG_INFO("[Discovery] Starting discovery"); clientIterator = clients.begin(); DiscoverNextService(connectionHandle); } void ServiceDiscovery::OnServiceDiscovered(uint16_t connectionHandle) { clientIterator++; if (clientIterator != clients.end()) { DiscoverNextService(connectionHandle); } else { NRF_LOG_INFO("End of service discovery"); } } void ServiceDiscovery::DiscoverNextService(uint16_t connectionHandle) { NRF_LOG_INFO("[Discovery] Discover next service"); auto discoverNextService = [this](uint16_t connectionHandle) { this->OnServiceDiscovered(connectionHandle); }; (*clientIterator)->Discover(connectionHandle, discoverNextService); } |