31 #ifndef ETL_CALLBACK_SERVICE_INCLUDED
32 #define ETL_CALLBACK_SERVICE_INCLUDED
36 #include "static_assert.h"
48 template <const
size_t RANGE, const
size_t OFFSET = 0U>
58 : unhandled_callback(*this),
59 p_unhandled(ETL_NULLPTR)
61 lookup.
fill(&unhandled_callback);
70 template <const
size_t ID>
73 ETL_STATIC_ASSERT(ID < (OFFSET + RANGE),
"Callback Id out of range");
74 ETL_STATIC_ASSERT(ID >= OFFSET,
"Callback Id out of range");
87 if ((
id >= OFFSET) && (
id < (OFFSET + RANGE)))
107 template <const
size_t ID>
110 ETL_STATIC_ASSERT(ID < (OFFSET + RANGE),
"Callback Id out of range");
111 ETL_STATIC_ASSERT(ID >= OFFSET,
"Callback Id out of range");
113 (*lookup[ID - OFFSET])(ID);
122 if ((
id >= OFFSET) && (
id < (OFFSET + RANGE)))
124 (*lookup[
id - OFFSET])(
id);
138 void unhandled(
size_t id)
140 if (p_unhandled != ETL_NULLPTR)
149 &callback_service<RANGE, OFFSET>::unhandled> unhandled_callback;
Definition: callback_service.h:50
void callback(const size_t id)
Definition: callback_service.h:120
void register_unhandled_callback(etl::ifunction< size_t > &callback)
Definition: callback_service.h:97
void callback()
Definition: callback_service.h:108
void register_callback(etl::ifunction< size_t > &callback)
Definition: callback_service.h:71
callback_service()
Definition: callback_service.h:57
void register_callback(const size_t id, etl::ifunction< size_t > &callback)
Definition: callback_service.h:85
Definition: callback.h:45
void fill(parameter_t value)
Definition: array.h:341
Definition: function.h:236
Definition: absolute.h:37