From 068f773b06cf78449176fff0c5b9ab4f37f2c4f2 Mon Sep 17 00:00:00 2001 From: Jochen Vothknecht <jochen3120@gmail.com> Date: Mon, 20 Jun 2022 08:23:14 +0200 Subject: [PATCH] ST: Couting started services --- .../SiliconTorch/Service/ServiceManager.cpp | 24 ++++++++++++------- .../SiliconTorch/Service/ServiceManager.hpp | 8 +++---- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp b/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp index ec5fe5b..a15fa1f 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 3a487b6..32a7dd0 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); -- GitLab