31#ifndef ETL_CALLBACK_SERVICE_INCLUDED
32#define ETL_CALLBACK_SERVICE_INCLUDED
38#include "static_assert.h"
48 template <
size_t Range,
size_t Offset = 0U>
58 : unhandled_callback(*this)
59 , p_unhandled(ETL_NULLPTR)
61 lookup.fill(&unhandled_callback);
81 ETL_STATIC_ASSERT(Id < (Offset + Range),
"Callback Id out of range");
82 ETL_STATIC_ASSERT(Id >= Offset,
"Callback Id out of range");
95 if ((
id >= Offset) && (
id < (Offset + Range)))
118 ETL_STATIC_ASSERT(Id < (Offset + Range),
"Callback Id out of range");
119 ETL_STATIC_ASSERT(Id >= Offset,
"Callback Id out of range");
121 (*lookup[Id - Offset])(Id);
130 if ((
id >= Offset) && (
id < (Offset + Range)))
132 (*lookup[
id - Offset])(
id);
146 void unhandled(
size_t id)
148 if (p_unhandled != ETL_NULLPTR)
158 etl::ifunction<size_t>* p_unhandled;
161 etl::array<etl::ifunction<size_t>*, Range> lookup;
Definition callback_service.h:50
callback_service()
Definition callback_service.h:57
void register_callback(size_t id, etl::ifunction< size_t > &callback)
Definition callback_service.h:93
void register_callback(etl::ifunction< size_t > &callback)
Definition callback_service.h:79
void register_unhandled_callback(etl::ifunction< size_t > &callback)
Definition callback_service.h:105
void callback()
Definition callback_service.h:116
void callback(size_t id)
Definition callback_service.h:128