#pragma once #include namespace roro { // A long-lived background capability (see CONTEXT.md). Services are ticked cooperatively from the // main loop; one that needs real concurrency (e.g. the radio) may run its own task internally and // report through the EventBus. class Service { public: virtual ~Service() = default; virtual const char* name() const = 0; virtual void start() {} virtual void stop() {} virtual void tick(uint32_t nowMs) { (void)nowMs; } virtual uint32_t tickIntervalMs() const { return 1000; } }; } // namespace roro