Refactoring of BLE service discovery : it is now implemented into the classes of the services.
This commit is contained in:
31
src/components/ble/ServiceDiscovery.cpp
Normal file
31
src/components/ble/ServiceDiscovery.cpp
Normal file
@@ -0,0 +1,31 @@
|
||||
#include <libraries/log/nrf_log.h>
|
||||
#include "ServiceDiscovery.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);
|
||||
}
|
Reference in New Issue
Block a user