diff --git a/src/api/io.h b/src/api/io.h new file mode 100644 index 0000000..b88d5cf --- /dev/null +++ b/src/api/io.h @@ -0,0 +1,20 @@ +#ifndef BT_API_IO_H +#define BT_API_IO_H + +#include +#include + +#include "api/core/config.h" + +typedef bool (*bt_io_configure_t)(const bt_core_config_t *config); + +typedef struct bt_io_api { + uint16_t version; + + struct { + // Optional + bt_io_configure_t configure; + } v1; +} bt_hook_api_t; + +#endif \ No newline at end of file diff --git a/src/main/module/configure.h b/src/main/module/configure.h new file mode 100644 index 0000000..2ac7896 --- /dev/null +++ b/src/main/module/configure.h @@ -0,0 +1,8 @@ +#ifndef MODULE_CONFIGURE_H +#define MODULE_CONFIGURE_H + +#include "api/core/config.h" + +typedef bool (*bt_module_configure_do_t)(const bt_core_config_t *config); + +#endif \ No newline at end of file diff --git a/src/main/module/io.c b/src/main/module/io.c index 11ef1ec..bb2887f 100644 --- a/src/main/module/io.c +++ b/src/main/module/io.c @@ -7,6 +7,7 @@ #include "iface-core/log.h" #include "main/module/core.h" +#include "main/module/configure.h" #include "main/module/io.h" #include "main/module/module.h" @@ -21,6 +22,7 @@ struct module_io { bt_module_core_config_api_set_t core_config_api_set; bt_module_core_log_api_set_t core_log_api_set; bt_module_core_thread_api_set_t core_thread_api_set; + bt_module_configure_do_t configure_do; module_io_api_get_t api_get; // Keep for debug logging @@ -39,6 +41,9 @@ _module_io_resolve(module_io_t *module, const char *api_get_func_name) module->core_thread_api_set = (bt_module_core_thread_api_set_t) module_func_optional_resolve( module->module, "bt_module_core_thread_api_set"); + module->configure_do = + (bt_module_configure_do_t) module_func_optional_resolve( + module->module, "bt_module_configure_do"); module->api_get = (module_io_api_get_t) module_func_required_resolve( module->module, api_get_func_name); @@ -122,6 +127,28 @@ void module_io_core_thread_api_set( } } +bool module_io_configure_do(const module_io_t *module, const bt_core_config_t *config) +{ + bool result; + + log_assert(module); + log_assert(config); + + result = true; + + if (module->configure_do) { + module_func_pre_invoke_log( + module->module, "bt_module_configure_do"); + + result = module->configure_do(config); + + module_func_post_invoke_log( + module->module, "bt_module_configure_do"); + } + + return result; +} + void module_io_api_get(const module_io_t *module, void *api) { log_assert(module); diff --git a/src/main/module/io.h b/src/main/module/io.h index 5329513..53fb423 100644 --- a/src/main/module/io.h +++ b/src/main/module/io.h @@ -20,6 +20,7 @@ void module_io_core_log_api_set( const module_io_t *module, const bt_core_log_api_t *api); void module_io_core_thread_api_set( const module_io_t *module, const bt_core_thread_api_t *api); +bool module_io_configure_do(const module_io_t *module, const bt_core_config_t *config); void module_io_api_get(const module_io_t *module, void *api); diff --git a/src/sdk/module/configure.h b/src/sdk/module/configure.h new file mode 100644 index 0000000..8ff4cf2 --- /dev/null +++ b/src/sdk/module/configure.h @@ -0,0 +1,10 @@ +#ifndef MODULE_CONFIGURE_H +#define MODULE_CONFIGURE_H + +#include + +#include "api/core/config.h" + +bool bt_module_configure_do(const bt_core_config_t *config); + +#endif \ No newline at end of file