11 : universes_(
std::move(universes)) {
12 for (
auto universe : universes_) {
13 universe->addEventListener(
this);
19 for (
const auto& universe : universes_) {
20 count += universe->deviceCount();
26 std::function<
bool(
const DeviceLocator&)> callback)
const override {
27 for (
const auto& universe : universes_) {
28 if (!universe->forEachDevice(callback))
return false;
36 for (
const auto& universe : universes_) {
37 if (universe->getDeviceDescriptor(locator, descriptor))
return true;
43 for (
const auto& universe : universes_) {
53 for (
const auto& universe : universes_) {
54 if (universe->write(locator, value))
return true;
60 for (
const auto& universe : universes_) {
61 universe->requestUpdate();
66 listeners_.insert(listener);
70 listeners_.erase(listener);
74 for (
auto listener : listeners_) {
75 listener->devicesChanged();
80 for (
auto listener : listeners_) {
81 listener->newReadingsAvailable();
86 std::vector<Universe*> universes_;
87 roo_collections::FlatSmallHashSet<EventListener*> listeners_;
Identifies actuator within a transceiver device.
Identifies a transceiver device by schema and device id.
Listener for universe-level change notifications.
Measurement of a quantity at a specific time.
roo_transceivers_Quantity quantity() const
Returns the quantity type.
Universe that combines multiple other universes into one.
void newReadingsAvailable() override
Called when new readings are available.
virtual void removeEventListener(EventListener *listener)
Removes a previously registered event listener.
bool forEachDevice(std::function< bool(const DeviceLocator &)> callback) const override
Iterates over all transceiver devices in this universe, calling callback for each device.
virtual void addEventListener(EventListener *listener)
Registers a listener for device-set and reading update events.
void devicesChanged() override
Called when the set of devices changes.
bool write(const ActuatorLocator &locator, float value) override
Writes to the actuator identified by locator.
Measurement read(const SensorLocator &locator) const override
Returns the latest known reading of the sensor identified by locator.
bool getDeviceDescriptor(const DeviceLocator &locator, roo_transceivers_Descriptor &descriptor) const override
Retrieves the descriptor for the transceiver identified by locator.
void requestUpdate() override
Requests sensor reading update from underlying devices.
size_t deviceCount() const override
Returns the total number of transceiver devices in this universe.
Multiverse(std::vector< Universe * > universes)
Identifies sensor within a transceiver device.
An abstract collection of transceiver devices.
@ roo_transceivers_Quantity_kUnspecifiedQuantity