diff --git a/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp b/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp index ec5fe5bcb6074535f5188564bd6ac5ce043e0d0d..a15fa1f1d07106ee20812945902200d925dbe510 100644 --- a/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp +++ b/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp @@ -37,13 +37,14 @@ namespace SiliconTorch { registrationLocked = true; - // TODO: start services! - printServiceTable(); + ESP_LOGI(TAG, "Starting services…"); + u32 started = startEnabledServices(); + ESP_LOGI(TAG, "Starting services#[ %d ] done.", started); } - std::vector<Service*> ServiceManager::getServicesInStartOrder() { + std::vector<Service*> ServiceManager::getServicesInStartOrder() const { std::vector<Service*> services; for (const auto& [_, service] : serviceMap) @@ -56,15 +57,22 @@ namespace SiliconTorch { return services; } - void ServiceManager::startEnabledServices() { + u32 ServiceManager::startEnabledServices() { std::vector<Service*> services = getServicesInStartOrder(); + u32 started = 0; - for (const auto& service : services) - if (service->isEnabled()) service->start(); + for (const auto& service : services) { + if (service->isEnabled()) { + service->start(); + started++; + } + } + + return started; } - void ServiceManager::printServiceTable() { + void ServiceManager::printServiceTable() const { // burn a few cycles because Espressivs logging is mehr :/ // while (xTaskGetTickCount() * portTICK_PERIOD_MS < 1000) { @@ -148,7 +156,7 @@ namespace SiliconTorch { } } - bool ServiceManager::getServiceEnabled(const str& name) { + bool ServiceManager::getServiceEnabled(const str& name) const { if (serviceMap.count(name) > 0) { return serviceMap.at(name)->isEnabled(); } else { diff --git a/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp b/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp index 3a487b64243a1ab712666121d9a6edb0cd602942..32a7dd07bb759dd67fa9591d20c4dc81d893f842 100644 --- a/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp +++ b/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp @@ -33,15 +33,15 @@ namespace SiliconTorch { ServiceManager(); - void startEnabledServices(); + u32 startEnabledServices(); - void printServiceTable(); + void printServiceTable() const; void setServiceEnabled(const str& name, bool enabled); - bool getServiceEnabled(const str& name); + bool getServiceEnabled(const str& name) const; - std::vector<Service*> getServicesInStartOrder(); + std::vector<Service*> getServicesInStartOrder() const; void registerService(Service* s);