#include "ServiceDiscovery.h" #include #include "BleClient.h" using namespace Pinetime::Controllers; ServiceDiscovery::ServiceDiscovery(std::array&& 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); }