diff --git a/subsys/net/lib/lwm2m/CMakeLists.txt b/subsys/net/lib/lwm2m/CMakeLists.txt index 2e895ec381b..7246ff70999 100644 --- a/subsys/net/lib/lwm2m/CMakeLists.txt +++ b/subsys/net/lib/lwm2m/CMakeLists.txt @@ -127,4 +127,6 @@ zephyr_library_sources_ifdef(CONFIG_LWM2M_SHELL lwm2m_shell.c ) +zephyr_linker_sources(SECTIONS iterables.ld) + zephyr_library_link_libraries_ifdef(CONFIG_MBEDTLS mbedTLS) diff --git a/subsys/net/lib/lwm2m/ipso_accelerometer.c b/subsys/net/lib/lwm2m/ipso_accelerometer.c index 2458bf75321..0c1be988408 100644 --- a/subsys/net/lib/lwm2m/ipso_accelerometer.c +++ b/subsys/net/lib/lwm2m/ipso_accelerometer.c @@ -157,4 +157,4 @@ static int ipso_accel_init(void) return 0; } -SYS_INIT(ipso_accel_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ipso_accel_init); diff --git a/subsys/net/lib/lwm2m/ipso_buzzer.c b/subsys/net/lib/lwm2m/ipso_buzzer.c index 4bd41735fa6..f679d7e4a60 100644 --- a/subsys/net/lib/lwm2m/ipso_buzzer.c +++ b/subsys/net/lib/lwm2m/ipso_buzzer.c @@ -258,4 +258,4 @@ static int ipso_buzzer_init(void) return 0; } -SYS_INIT(ipso_buzzer_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ipso_buzzer_init); diff --git a/subsys/net/lib/lwm2m/ipso_current_sensor.c b/subsys/net/lib/lwm2m/ipso_current_sensor.c index 0684db94220..1268b7da56d 100644 --- a/subsys/net/lib/lwm2m/ipso_current_sensor.c +++ b/subsys/net/lib/lwm2m/ipso_current_sensor.c @@ -228,5 +228,4 @@ static int ipso_current_sensor_init(void) return 0; } -SYS_INIT(ipso_current_sensor_init, APPLICATION, - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ipso_current_sensor_init); diff --git a/subsys/net/lib/lwm2m/ipso_filling_sensor.c b/subsys/net/lib/lwm2m/ipso_filling_sensor.c index 072d6d35bbb..96944e0c16a 100644 --- a/subsys/net/lib/lwm2m/ipso_filling_sensor.c +++ b/subsys/net/lib/lwm2m/ipso_filling_sensor.c @@ -228,7 +228,7 @@ static struct lwm2m_engine_obj_inst *filling_sensor_create(uint16_t obj_inst_id) return &inst[index]; } -static int init(void) +static int fill_sensor_init(void) { fill_sensor.obj_id = IPSO_OBJECT_ID; fill_sensor.version_major = FILLING_VERSION_MAJOR; @@ -243,4 +243,4 @@ static int init(void) return 0; } -SYS_INIT(init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(fill_sensor_init); diff --git a/subsys/net/lib/lwm2m/ipso_generic_sensor.c b/subsys/net/lib/lwm2m/ipso_generic_sensor.c index def650ce9e4..05a1afc9806 100644 --- a/subsys/net/lib/lwm2m/ipso_generic_sensor.c +++ b/subsys/net/lib/lwm2m/ipso_generic_sensor.c @@ -237,5 +237,4 @@ static int ipso_generic_sensor_init(void) return 0; } -SYS_INIT(ipso_generic_sensor_init, APPLICATION, - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ipso_generic_sensor_init); diff --git a/subsys/net/lib/lwm2m/ipso_humidity_sensor.c b/subsys/net/lib/lwm2m/ipso_humidity_sensor.c index 24be33d37f2..b2d147060a0 100644 --- a/subsys/net/lib/lwm2m/ipso_humidity_sensor.c +++ b/subsys/net/lib/lwm2m/ipso_humidity_sensor.c @@ -218,5 +218,4 @@ static int ipso_humidity_sensor_init(void) return 0; } -SYS_INIT(ipso_humidity_sensor_init, APPLICATION, - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ipso_humidity_sensor_init); diff --git a/subsys/net/lib/lwm2m/ipso_light_control.c b/subsys/net/lib/lwm2m/ipso_light_control.c index fc9a897461a..b7f727ff4a4 100644 --- a/subsys/net/lib/lwm2m/ipso_light_control.c +++ b/subsys/net/lib/lwm2m/ipso_light_control.c @@ -201,5 +201,4 @@ static int ipso_light_control_init(void) return 0; } -SYS_INIT(ipso_light_control_init, APPLICATION, - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ipso_light_control_init); diff --git a/subsys/net/lib/lwm2m/ipso_onoff_switch.c b/subsys/net/lib/lwm2m/ipso_onoff_switch.c index 3bf8ba65c4e..3da496b2ca1 100644 --- a/subsys/net/lib/lwm2m/ipso_onoff_switch.c +++ b/subsys/net/lib/lwm2m/ipso_onoff_switch.c @@ -249,4 +249,4 @@ static int ipso_switch_init(void) return 0; } -SYS_INIT(ipso_switch_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ipso_switch_init); diff --git a/subsys/net/lib/lwm2m/ipso_pressure_sensor.c b/subsys/net/lib/lwm2m/ipso_pressure_sensor.c index 87f87e4a277..7dca2ed3956 100644 --- a/subsys/net/lib/lwm2m/ipso_pressure_sensor.c +++ b/subsys/net/lib/lwm2m/ipso_pressure_sensor.c @@ -221,5 +221,4 @@ static int ipso_pressure_sensor_init(void) return 0; } -SYS_INIT(ipso_pressure_sensor_init, APPLICATION, - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ipso_pressure_sensor_init); diff --git a/subsys/net/lib/lwm2m/ipso_push_button.c b/subsys/net/lib/lwm2m/ipso_push_button.c index 2cccd276aa9..07782a86756 100644 --- a/subsys/net/lib/lwm2m/ipso_push_button.c +++ b/subsys/net/lib/lwm2m/ipso_push_button.c @@ -186,4 +186,4 @@ static int ipso_button_init(void) return 0; } -SYS_INIT(ipso_button_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ipso_button_init); diff --git a/subsys/net/lib/lwm2m/ipso_temp_sensor.c b/subsys/net/lib/lwm2m/ipso_temp_sensor.c index bdf59563833..ba843db0ebd 100644 --- a/subsys/net/lib/lwm2m/ipso_temp_sensor.c +++ b/subsys/net/lib/lwm2m/ipso_temp_sensor.c @@ -221,5 +221,4 @@ static int ipso_temp_sensor_init(void) return 0; } -SYS_INIT(ipso_temp_sensor_init, APPLICATION, - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ipso_temp_sensor_init); diff --git a/subsys/net/lib/lwm2m/ipso_timer.c b/subsys/net/lib/lwm2m/ipso_timer.c index 6085d36d04c..833002e56c4 100644 --- a/subsys/net/lib/lwm2m/ipso_timer.c +++ b/subsys/net/lib/lwm2m/ipso_timer.c @@ -366,4 +366,4 @@ static int ipso_timer_init(void) return 0; } -SYS_INIT(ipso_timer_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ipso_timer_init); diff --git a/subsys/net/lib/lwm2m/ipso_voltage_sensor.c b/subsys/net/lib/lwm2m/ipso_voltage_sensor.c index 55b45902234..ec1274d07ff 100644 --- a/subsys/net/lib/lwm2m/ipso_voltage_sensor.c +++ b/subsys/net/lib/lwm2m/ipso_voltage_sensor.c @@ -229,5 +229,4 @@ static int ipso_voltage_sensor_init(void) return 0; } -SYS_INIT(ipso_voltage_sensor_init, APPLICATION, - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ipso_voltage_sensor_init); diff --git a/subsys/net/lib/lwm2m/iterables.ld b/subsys/net/lib/lwm2m/iterables.ld new file mode 100644 index 00000000000..83ce9070ef0 --- /dev/null +++ b/subsys/net/lib/lwm2m/iterables.ld @@ -0,0 +1 @@ +ITERABLE_SECTION_ROM(lwm2m_init_func, 4) diff --git a/subsys/net/lib/lwm2m/lwm2m_engine.c b/subsys/net/lib/lwm2m/lwm2m_engine.c index bad54c521d7..ba408c1de8e 100644 --- a/subsys/net/lib/lwm2m/lwm2m_engine.c +++ b/subsys/net/lib/lwm2m/lwm2m_engine.c @@ -1330,9 +1330,12 @@ static int lwm2m_engine_init(void) (void)memset(output_block_contexts, 0, sizeof(output_block_contexts)); #endif - if (IS_ENABLED(CONFIG_LWM2M_RESOURCE_DATA_CACHE_SUPPORT)) { - /* Init data cache */ - lwm2m_engine_data_cache_init(); + STRUCT_SECTION_FOREACH(lwm2m_init_func, init) { + int ret = init->f(); + + if (ret) { + LOG_ERR("Init function %p returned %d", init, ret); + } } /* start sock receive thread */ diff --git a/subsys/net/lib/lwm2m/lwm2m_engine.h b/subsys/net/lib/lwm2m/lwm2m_engine.h index 81b28395662..bd96a380cf7 100644 --- a/subsys/net/lib/lwm2m/lwm2m_engine.h +++ b/subsys/net/lib/lwm2m/lwm2m_engine.h @@ -12,6 +12,7 @@ #include "lwm2m_object.h" #include "lwm2m_observation.h" #include "lwm2m_registry.h" +#include #define LWM2M_PROTOCOL_VERSION_MAJOR 1 #if defined(CONFIG_LWM2M_VERSION_1_1) @@ -30,6 +31,65 @@ /* length of time in milliseconds to wait for buffer allocations */ #define BUF_ALLOC_TIMEOUT K_SECONDS(1) +/** initialization function */ +struct lwm2m_init_func { + int (*f)(void); +}; +/** + * @defgroup LWM2M_PRIO LwM2M initialization priorities + * @{ + */ +#define LWM2M_PRIO_ENGINE 0 /**< Engine initialization */ +#define LWM2M_PRIO_CORE 1 /**< Core object initialization */ +#define LWM2M_PRIO_OBJ 2 /**< Object initializations */ +#define LwM2M_PRIO_APP 3 /**< Application logic initialization */ +/** @} */ + +/** + * @brief Declare an initialization function to be executed when LwM2M engine starts. + * + * When LwM2M engine starts up, it first executes all initialization functions in following + * priority order: + * 1. LWM2M_PRIO_ENGINE + * 2. LWM2M_PRIO_CORE, this is where all LwM2M core objects are initialized + * 3. LWM2M_PRIO_OBJ, this is where all other than core objects are initialized + * 4. LwM2M_PRIO_APP, application initialization. + * For example create sensor objects, and register object callbacks. + * + * @param[in] prio Priority, one of @ref LWM2M_PRIO macros. + * @param[in] init_function Initialization function + */ +#define LWM2M_ON_INIT(prio, init_function) \ + STRUCT_SECTION_ITERABLE(lwm2m_init_func, \ + CONCAT(LWM2M, prio, init_function)) = {.f = init_function} + +/** + * @brief Declare engine initialization function. + * @sa LWM2M_ON_INIT + * @param[in] init_function Initialization function + */ +#define LWM2M_ENGINE_INIT(init_function) LWM2M_ON_INIT(LWM2M_PRIO_ENGINE, init_function) + +/** + * @brief Declare core object initialization function. + * @sa LWM2M_ON_INIT + * @param[in] init_function Initialization function + */ +#define LWM2M_CORE_INIT(init_function) LWM2M_ON_INIT(LWM2M_PRIO_CORE, init_function) + +/** + * @brief Declare object initialization function. + * @sa LWM2M_ON_INIT + * @param[in] init_function Initialization function + */ +#define LWM2M_OBJ_INIT(init_function) LWM2M_ON_INIT(LWM2M_PRIO_OBJ, init_function) + +/** + * @brief Declare application specific initialization function. + * @sa LWM2M_ON_INIT + * @param[in] init_function Initialization function + */ +#define LWM2M_APP_INIT(init_function) LWM2M_ON_INIT(LWM2M_PRIO_APP, init_function) /** * @brief Validates that writing is a legal operation on the field given by the object in diff --git a/subsys/net/lib/lwm2m/lwm2m_obj_access_control.c b/subsys/net/lib/lwm2m/lwm2m_obj_access_control.c index 383dbe9b539..e5eb8c56efb 100644 --- a/subsys/net/lib/lwm2m/lwm2m_obj_access_control.c +++ b/subsys/net/lib/lwm2m/lwm2m_obj_access_control.c @@ -439,4 +439,4 @@ static int ac_control_init(void) return 0; } -SYS_INIT(ac_control_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_CORE_INIT(ac_control_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_obj_binaryappdata.c b/subsys/net/lib/lwm2m/lwm2m_obj_binaryappdata.c index e9166f9e678..51e90b820ec 100644 --- a/subsys/net/lib/lwm2m/lwm2m_obj_binaryappdata.c +++ b/subsys/net/lib/lwm2m/lwm2m_obj_binaryappdata.c @@ -122,4 +122,4 @@ static int lwm2m_binaryappdata_init(void) return ret; } -SYS_INIT(lwm2m_binaryappdata_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(lwm2m_binaryappdata_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_obj_connmon.c b/subsys/net/lib/lwm2m/lwm2m_obj_connmon.c index 70309a0d3d6..a3cfaad8fa2 100644 --- a/subsys/net/lib/lwm2m/lwm2m_obj_connmon.c +++ b/subsys/net/lib/lwm2m/lwm2m_obj_connmon.c @@ -222,4 +222,4 @@ static int lwm2m_connmon_init(void) return ret; } -SYS_INIT(lwm2m_connmon_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_CORE_INIT(lwm2m_connmon_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_obj_device.c b/subsys/net/lib/lwm2m/lwm2m_obj_device.c index f5399fefc1e..c4abb72d506 100644 --- a/subsys/net/lib/lwm2m/lwm2m_obj_device.c +++ b/subsys/net/lib/lwm2m/lwm2m_obj_device.c @@ -393,4 +393,4 @@ static int lwm2m_device_init(void) return ret; } -SYS_INIT(lwm2m_device_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_CORE_INIT(lwm2m_device_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_obj_event_log.c b/subsys/net/lib/lwm2m/lwm2m_obj_event_log.c index 907dd596611..e80dfc10ee6 100644 --- a/subsys/net/lib/lwm2m/lwm2m_obj_event_log.c +++ b/subsys/net/lib/lwm2m/lwm2m_obj_event_log.c @@ -103,4 +103,4 @@ static int lwm2m_event_log_init(void) return ret; } -SYS_INIT(lwm2m_event_log_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(lwm2m_event_log_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_obj_firmware.c b/subsys/net/lib/lwm2m/lwm2m_obj_firmware.c index 1f0f6bb5b1e..082197c83a5 100644 --- a/subsys/net/lib/lwm2m/lwm2m_obj_firmware.c +++ b/subsys/net/lib/lwm2m/lwm2m_obj_firmware.c @@ -506,4 +506,4 @@ static int lwm2m_firmware_init(void) return ret; } -SYS_INIT(lwm2m_firmware_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_CORE_INIT(lwm2m_firmware_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_obj_gateway.c b/subsys/net/lib/lwm2m/lwm2m_obj_gateway.c index 5bb12f80f47..106ef951653 100644 --- a/subsys/net/lib/lwm2m/lwm2m_obj_gateway.c +++ b/subsys/net/lib/lwm2m/lwm2m_obj_gateway.c @@ -206,7 +206,7 @@ static int lwm2m_gw_init(void) lwm2m_gw.obj_id = LWM2M_OBJECT_GATEWAY_ID; lwm2m_gw.version_major = GATEWAY_VERSION_MAJOR; lwm2m_gw.version_minor = GATEWAY_VERSION_MINOR; - lwm2m_gw.is_core = true; + lwm2m_gw.is_core = false; lwm2m_gw.fields = fields; lwm2m_gw.field_count = ARRAY_SIZE(fields); lwm2m_gw.max_instance_count = MAX_INSTANCE_COUNT; @@ -215,4 +215,4 @@ static int lwm2m_gw_init(void) return ret; } -SYS_INIT(lwm2m_gw_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(lwm2m_gw_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_obj_location.c b/subsys/net/lib/lwm2m/lwm2m_obj_location.c index 73c43ff78eb..b7b9828982c 100644 --- a/subsys/net/lib/lwm2m/lwm2m_obj_location.c +++ b/subsys/net/lib/lwm2m/lwm2m_obj_location.c @@ -117,4 +117,4 @@ static int ipso_location_init(void) return ret; } -SYS_INIT(ipso_location_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_CORE_INIT(ipso_location_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_obj_portfolio.c b/subsys/net/lib/lwm2m/lwm2m_obj_portfolio.c index e5cdc2198e6..b77fc722130 100644 --- a/subsys/net/lib/lwm2m/lwm2m_obj_portfolio.c +++ b/subsys/net/lib/lwm2m/lwm2m_obj_portfolio.c @@ -122,4 +122,4 @@ static int lwm2m_portfolio_init(void) return 0; } -SYS_INIT(lwm2m_portfolio_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(lwm2m_portfolio_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_obj_security.c b/subsys/net/lib/lwm2m/lwm2m_obj_security.c index 00796648634..a926cb39b27 100644 --- a/subsys/net/lib/lwm2m/lwm2m_obj_security.c +++ b/subsys/net/lib/lwm2m/lwm2m_obj_security.c @@ -261,4 +261,4 @@ static int lwm2m_security_init(void) return ret; } -SYS_INIT(lwm2m_security_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_CORE_INIT(lwm2m_security_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_obj_server.c b/subsys/net/lib/lwm2m/lwm2m_obj_server.c index a9432340038..a7d3e541bbe 100644 --- a/subsys/net/lib/lwm2m/lwm2m_obj_server.c +++ b/subsys/net/lib/lwm2m/lwm2m_obj_server.c @@ -18,6 +18,7 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME); #include "lwm2m_obj_server.h" #include "lwm2m_rd_client.h" #include "lwm2m_registry.h" +#include "lwm2m_engine.h" #define SERVER_VERSION_MAJOR 1 #if defined(CONFIG_LWM2M_SERVER_OBJECT_VERSION_1_1) @@ -458,4 +459,4 @@ static int lwm2m_server_init(void) return ret; } -SYS_INIT(lwm2m_server_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_CORE_INIT(lwm2m_server_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_obj_swmgmt.c b/subsys/net/lib/lwm2m/lwm2m_obj_swmgmt.c index a8376ea8621..1ccd22520b6 100644 --- a/subsys/net/lib/lwm2m/lwm2m_obj_swmgmt.c +++ b/subsys/net/lib/lwm2m/lwm2m_obj_swmgmt.c @@ -794,4 +794,4 @@ static int lwm2m_swmgmt_init(void) return 0; } -SYS_INIT(lwm2m_swmgmt_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(lwm2m_swmgmt_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_rd_client.c b/subsys/net/lib/lwm2m/lwm2m_rd_client.c index 22ce51e5248..99f673ce6b1 100644 --- a/subsys/net/lib/lwm2m/lwm2m_rd_client.c +++ b/subsys/net/lib/lwm2m/lwm2m_rd_client.c @@ -1791,6 +1791,4 @@ static int sys_lwm2m_rd_client_init(void) return lwm2m_rd_client_init(); } - -SYS_INIT(sys_lwm2m_rd_client_init, APPLICATION, - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_ENGINE_INIT(sys_lwm2m_rd_client_init); diff --git a/subsys/net/lib/lwm2m/lwm2m_registry.c b/subsys/net/lib/lwm2m/lwm2m_registry.c index 1701b7f7412..6c1bab92b25 100644 --- a/subsys/net/lib/lwm2m/lwm2m_registry.c +++ b/subsys/net/lib/lwm2m/lwm2m_registry.c @@ -2234,9 +2234,9 @@ int lwm2m_engine_enable_cache(const char *resource_path, struct lwm2m_time_serie #endif /* CONFIG_LWM2M_RESOURCE_DATA_CACHE_SUPPORT */ } -int lwm2m_engine_data_cache_init(void) -{ #if defined(CONFIG_LWM2M_RESOURCE_DATA_CACHE_SUPPORT) +static int lwm2m_engine_data_cache_init(void) +{ int i; sys_slist_init(&lwm2m_timed_cache_list); @@ -2244,9 +2244,10 @@ int lwm2m_engine_data_cache_init(void) for (i = 0; i < ARRAY_SIZE(lwm2m_cache_entries); i++) { lwm2m_cache_entries[i].path.level = LWM2M_PATH_LEVEL_NONE; } -#endif return 0; } +LWM2M_ENGINE_INIT(lwm2m_engine_data_cache_init); +#endif bool lwm2m_cache_write(struct lwm2m_time_series_resource *cache_entry, struct lwm2m_time_series_elem *buf) diff --git a/subsys/net/lib/lwm2m/lwm2m_registry.h b/subsys/net/lib/lwm2m/lwm2m_registry.h index 0d817d00442..554babd93cd 100644 --- a/subsys/net/lib/lwm2m/lwm2m_registry.h +++ b/subsys/net/lib/lwm2m/lwm2m_registry.h @@ -242,7 +242,6 @@ struct lwm2m_cache_read_info { }; #endif -int lwm2m_engine_data_cache_init(void); struct lwm2m_time_series_resource * lwm2m_cache_entry_get_by_object(const struct lwm2m_obj_path *obj_path); bool lwm2m_cache_write(struct lwm2m_time_series_resource *cache_entry, diff --git a/subsys/net/lib/lwm2m/ucifi_battery.c b/subsys/net/lib/lwm2m/ucifi_battery.c index 11da0980967..468f4bbc4c3 100644 --- a/subsys/net/lib/lwm2m/ucifi_battery.c +++ b/subsys/net/lib/lwm2m/ucifi_battery.c @@ -150,4 +150,4 @@ static int ucifi_battery_init(void) return 0; } -SYS_INIT(ucifi_battery_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ucifi_battery_init); diff --git a/subsys/net/lib/lwm2m/ucifi_lpwan.c b/subsys/net/lib/lwm2m/ucifi_lpwan.c index 82878724405..0acbb0ecf3b 100644 --- a/subsys/net/lib/lwm2m/ucifi_lpwan.c +++ b/subsys/net/lib/lwm2m/ucifi_lpwan.c @@ -178,4 +178,4 @@ static int ucifi_lpwan_init(void) return 0; } -SYS_INIT(ucifi_lpwan_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +LWM2M_OBJ_INIT(ucifi_lpwan_init); diff --git a/tests/net/lib/lwm2m/lwm2m_engine/CMakeLists.txt b/tests/net/lib/lwm2m/lwm2m_engine/CMakeLists.txt index 36e161c6b11..d4a60e2bb9c 100644 --- a/tests/net/lib/lwm2m/lwm2m_engine/CMakeLists.txt +++ b/tests/net/lib/lwm2m/lwm2m_engine/CMakeLists.txt @@ -10,6 +10,7 @@ set(APP_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) target_sources(app PRIVATE ${APP_SRC_DIR}/main.c) target_sources(app PRIVATE ${APP_SRC_DIR}/stubs.c) target_sources(app PRIVATE ${ZEPHYR_BASE}/subsys/net/lib/lwm2m/lwm2m_engine.c) +zephyr_linker_sources(SECTIONS ${ZEPHYR_BASE}/subsys/net/lib/lwm2m/iterables.ld) # Add includes directories target_include_directories(app PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) diff --git a/tests/net/lib/lwm2m/lwm2m_registry/src/lwm2m_registry.c b/tests/net/lib/lwm2m/lwm2m_registry/src/lwm2m_registry.c index 8e99f666b7f..7763469bc4e 100644 --- a/tests/net/lib/lwm2m/lwm2m_registry/src/lwm2m_registry.c +++ b/tests/net/lib/lwm2m/lwm2m_registry/src/lwm2m_registry.c @@ -612,7 +612,6 @@ ZTEST(lwm2m_registry, test_resource_cache) struct lwm2m_time_series_elem e; /* Resource cache is turned off */ - zassert_equal(lwm2m_engine_data_cache_init(), 0); zassert_is_null(lwm2m_cache_entry_get_by_object(&path)); zassert_equal(lwm2m_enable_cache(&path, &e, 1), -ENOTSUP); /* deprecated */