diff --git a/lib/events/events.h b/lib/events/events.h index 539277c..329dea5 100644 --- a/lib/events/events.h +++ b/lib/events/events.h @@ -4,9 +4,10 @@ struct Event; enum EventType { - DETECTED = 0, + ALL_EVENTS = 0, // used only at registration time + DETECTED, SCAN_TASK_COMPLETE, - _MAX_EVENT_TYPE // unused as event type + _MAX_EVENT_TYPE = SCAN_TASK_COMPLETE // unused as event type }; struct Listener; diff --git a/lib/scan/scan.cpp b/lib/scan/scan.cpp index 8c4fbed..89ff530 100644 --- a/lib/scan/scan.cpp +++ b/lib/scan/scan.cpp @@ -177,6 +177,13 @@ void Scan::fireEvent(Event &event) { list[i]->onEvent(event); } + + list = eventListeners[(size_t)EventType::ALL_EVENTS]; + c = listener_count[(size_t)EventType::ALL_EVENTS]; + for (int i = 0; i < c; i++) + { + list[i]->onEvent(event); + } } #endif diff --git a/lib/scan/scan.h b/lib/scan/scan.h index b46ef83..c6b113c 100644 --- a/lib/scan/scan.h +++ b/lib/scan/scan.h @@ -45,8 +45,8 @@ struct Scan bool animated; float trigger_level; - Listener **eventListeners[(size_t)EventType::_MAX_EVENT_TYPE]; - size_t listener_count[(size_t)EventType::_MAX_EVENT_TYPE]; + Listener **eventListeners[(size_t)EventType::_MAX_EVENT_TYPE + 1]; + size_t listener_count[(size_t)EventType::_MAX_EVENT_TYPE + 1]; Scan() : epoch(0), current_frequency(0), fr_begin(0), fr_end(0),