Zephyr Project API 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
lwm2m.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2017 Linaro Limited
3 * Copyright (c) 2017-2019 Foundries.io
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
26
27#ifndef ZEPHYR_INCLUDE_NET_LWM2M_H_
28#define ZEPHYR_INCLUDE_NET_LWM2M_H_
29
30#include <time.h>
31#include <zephyr/kernel.h>
32#include <zephyr/types.h>
33#include <zephyr/sys/mutex.h>
34#include <zephyr/net/coap.h>
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
46
47/* clang-format off */
48#define LWM2M_OBJECT_SECURITY_ID 0
49#define LWM2M_OBJECT_SERVER_ID 1
50#define LWM2M_OBJECT_ACCESS_CONTROL_ID 2
51#define LWM2M_OBJECT_DEVICE_ID 3
52#define LWM2M_OBJECT_CONNECTIVITY_MONITORING_ID 4
53#define LWM2M_OBJECT_FIRMWARE_ID 5
54#define LWM2M_OBJECT_LOCATION_ID 6
55#define LWM2M_OBJECT_CONNECTIVITY_STATISTICS_ID 7
56#define LWM2M_OBJECT_SOFTWARE_MANAGEMENT_ID 9
57#define LWM2M_OBJECT_PORTFOLIO_ID 16
58#define LWM2M_OBJECT_BINARYAPPDATACONTAINER_ID 19
59#define LWM2M_OBJECT_EVENT_LOG_ID 20
60#define LWM2M_OBJECT_OSCORE_ID 21
61#define LWM2M_OBJECT_GATEWAY_ID 25
62/* clang-format on */
63
65
73
74/* clang-format off */
75#define IPSO_OBJECT_GENERIC_SENSOR_ID 3300
76#define IPSO_OBJECT_TEMP_SENSOR_ID 3303
77#define IPSO_OBJECT_HUMIDITY_SENSOR_ID 3304
78#define IPSO_OBJECT_LIGHT_CONTROL_ID 3311
79#define IPSO_OBJECT_ACCELEROMETER_ID 3313
80#define IPSO_OBJECT_MAGNETOMETER_ID 3314
81#define IPSO_OBJECT_VOLTAGE_SENSOR_ID 3316
82#define IPSO_OBJECT_CURRENT_SENSOR_ID 3317
83#define IPSO_OBJECT_PRESSURE_ID 3323
84#define IPSO_OBJECT_TIME_ID 3333
85#define IPSO_OBJECT_BUZZER_ID 3338
86#define IPSO_OBJECT_TIMER_ID 3340
87#define IPSO_OBJECT_ONOFF_SWITCH_ID 3342
88#define IPSO_OBJECT_PUSH_BUTTON_ID 3347
89#define UCIFI_OBJECT_BATTERY_ID 3411
90#define IPSO_OBJECT_FILLING_LEVEL_SENSOR_ID 3435
91/* clang-format on */
92
94
100typedef void (*lwm2m_socket_fault_cb_t)(int error);
101
110
120
131typedef void (*lwm2m_observe_cb_t)(enum lwm2m_observe_event event, struct lwm2m_obj_path *path,
132 void *user_data);
133
134
135struct lwm2m_ctx;
136
177
178
185typedef void (*lwm2m_ctx_event_cb_t)(struct lwm2m_ctx *ctx,
186 enum lwm2m_rd_client_event event);
187
188typedef int (*lwm2m_set_sockopt_cb_t)(struct lwm2m_ctx *client_ctx);
189
205
210struct lwm2m_ctx {
212 union {
214 struct net_sockaddr_storage remote_addr_storage;
216 /* Use remote_addr_storage instead of remote_addr */
217 struct net_sockaddr remote_addr;
219 };
220
224 struct coap_pending pendings[CONFIG_LWM2M_ENGINE_MAX_PENDING + 1];
225 struct coap_reply replies[CONFIG_LWM2M_ENGINE_MAX_REPLIES + 1];
226 sys_slist_t pending_sends;
227#if defined(CONFIG_LWM2M_QUEUE_MODE_ENABLED)
228 sys_slist_t queued_messages;
229#endif
230 sys_slist_t observer;
231 struct k_mutex lock;
233
240
241#if defined(CONFIG_LWM2M_DTLS_SUPPORT) || defined(__DOXYGEN__)
252
260
265 int (*load_credentials)(struct lwm2m_ctx *client_ctx);
267#endif
274
281
287
288#if defined(CONFIG_LWM2M_QUEUE_MODE_ENABLED) || defined(__DOXYGEN__)
294#endif
297
300
305
308
313
318
321
326 uint8_t validate_buf[CONFIG_LWM2M_ENGINE_VALIDATION_BUFFER_SIZE];
327
335};
336
344 union {
346 uint8_t u8;
347 uint16_t u16;
348 uint32_t u32;
349 uint64_t u64;
350 int8_t i8;
351 int16_t i16;
352 int32_t i32;
353 int64_t i64;
354 time_t time;
355 double f;
356 bool b;
358 };
359};
360
372typedef bool (*lwm2m_cache_filter_cb_t)(const struct lwm2m_obj_path *path,
373 const struct lwm2m_time_series_elem *element);
374
394typedef void *(*lwm2m_engine_get_data_cb_t)(uint16_t obj_inst_id,
395 uint16_t res_id,
396 uint16_t res_inst_id,
397 size_t *data_len);
398
430typedef int (*lwm2m_engine_set_data_cb_t)(uint16_t obj_inst_id,
431 uint16_t res_id, uint16_t res_inst_id,
432 uint8_t *data, uint16_t data_len,
433 bool last_block, size_t total_size, size_t offset);
434
451typedef int (*lwm2m_engine_user_cb_t)(uint16_t obj_inst_id);
452
469typedef int (*lwm2m_engine_execute_cb_t)(uint16_t obj_inst_id,
470 uint8_t *args, uint16_t args_len);
471
477#define LWM2M_DEVICE_PWR_SRC_TYPE_DC_POWER 0
478#define LWM2M_DEVICE_PWR_SRC_TYPE_BAT_INT 1
479#define LWM2M_DEVICE_PWR_SRC_TYPE_BAT_EXT 2
480#define LWM2M_DEVICE_PWR_SRC_TYPE_FUEL_CELL 3
481#define LWM2M_DEVICE_PWR_SRC_TYPE_PWR_OVER_ETH 4
482#define LWM2M_DEVICE_PWR_SRC_TYPE_USB 5
483#define LWM2M_DEVICE_PWR_SRC_TYPE_AC_POWER 6
484#define LWM2M_DEVICE_PWR_SRC_TYPE_SOLAR 7
485#define LWM2M_DEVICE_PWR_SRC_TYPE_MAX 8
487
495#define LWM2M_DEVICE_ERROR_NONE 0
496#define LWM2M_DEVICE_ERROR_LOW_POWER 1
497#define LWM2M_DEVICE_ERROR_EXT_POWER_SUPPLY_OFF 2
498#define LWM2M_DEVICE_ERROR_GPS_FAILURE 3
499#define LWM2M_DEVICE_ERROR_LOW_SIGNAL_STRENGTH 4
500#define LWM2M_DEVICE_ERROR_OUT_OF_MEMORY 5
501#define LWM2M_DEVICE_ERROR_SMS_FAILURE 6
502#define LWM2M_DEVICE_ERROR_NETWORK_FAILURE 7
503#define LWM2M_DEVICE_ERROR_PERIPHERAL_FAILURE 8
504
506
514#define LWM2M_DEVICE_BATTERY_STATUS_NORMAL 0
517#define LWM2M_DEVICE_BATTERY_STATUS_CHARGING 1
518#define LWM2M_DEVICE_BATTERY_STATUS_CHARGE_COMP 2
521#define LWM2M_DEVICE_BATTERY_STATUS_DAMAGED 3
522#define LWM2M_DEVICE_BATTERY_STATUS_LOW 4
523#define LWM2M_DEVICE_BATTERY_STATUS_NOT_INST 5
524#define LWM2M_DEVICE_BATTERY_STATUS_UNKNOWN 6
525
527
536
537
545
549#define STATE_IDLE 0
553#define STATE_DOWNLOADING 1
557#define STATE_DOWNLOADED 2
561#define STATE_UPDATING 3
562
564
572
573#define RESULT_DEFAULT 0
574#define RESULT_SUCCESS 1
575#define RESULT_NO_STORAGE 2
576#define RESULT_OUT_OF_MEM 3
577#define RESULT_CONNECTION_LOST 4
578#define RESULT_INTEGRITY_FAILED 5
579#define RESULT_UNSUP_FW 6
580#define RESULT_INVALID_URI 7
581#define RESULT_UPDATE_FAILED 8
582#define RESULT_UNSUP_PROTO 9
583
585
586#if defined(CONFIG_LWM2M_FIRMWARE_UPDATE_OBJ_SUPPORT) || defined(__DOXYGEN__)
596
603
614
622
632
639
650
658
668
675
686
694#endif
695
696#if defined(CONFIG_LWM2M_SWMGMT_OBJ_SUPPORT) || defined(__DOXYGEN__)
697
710
723
736
749
762
775
786int lwm2m_swmgmt_install_completed(uint16_t obj_inst_id, int error_code);
787
788#endif
789
790#if defined(CONFIG_LWM2M_EVENT_LOG_OBJ_SUPPORT) || defined(__DOXYGEN__)
791
801
802#endif
803
807#define LWM2M_OBJLNK_MAX_ID USHRT_MAX
808
816
832 const struct lwm2m_obj_path *path, uint32_t period_s);
833
849 const struct lwm2m_obj_path *path, uint32_t period_s);
850
863
874
883
889
899int lwm2m_set_opaque(const struct lwm2m_obj_path *path, const char *data_ptr, uint16_t data_len);
900
909int lwm2m_set_string(const struct lwm2m_obj_path *path, const char *data_ptr);
910
919int lwm2m_set_u8(const struct lwm2m_obj_path *path, uint8_t value);
920
929int lwm2m_set_u16(const struct lwm2m_obj_path *path, uint16_t value);
930
939int lwm2m_set_u32(const struct lwm2m_obj_path *path, uint32_t value);
940
949int lwm2m_set_s8(const struct lwm2m_obj_path *path, int8_t value);
950
959int lwm2m_set_s16(const struct lwm2m_obj_path *path, int16_t value);
960
969int lwm2m_set_s32(const struct lwm2m_obj_path *path, int32_t value);
970
979int lwm2m_set_s64(const struct lwm2m_obj_path *path, int64_t value);
980
989int lwm2m_set_bool(const struct lwm2m_obj_path *path, bool value);
990
999int lwm2m_set_f64(const struct lwm2m_obj_path *path, const double value);
1000
1009int lwm2m_set_objlnk(const struct lwm2m_obj_path *path, const struct lwm2m_objlnk *value);
1010
1019int lwm2m_set_time(const struct lwm2m_obj_path *path, time_t value);
1020
1052
1065int lwm2m_set_bulk(const struct lwm2m_res_item res_list[], size_t res_list_size);
1066
1076int lwm2m_get_opaque(const struct lwm2m_obj_path *path, void *buf, uint16_t buflen);
1077
1087int lwm2m_get_string(const struct lwm2m_obj_path *path, void *str, uint16_t buflen);
1088
1097int lwm2m_get_u8(const struct lwm2m_obj_path *path, uint8_t *value);
1098
1107int lwm2m_get_u16(const struct lwm2m_obj_path *path, uint16_t *value);
1108
1117int lwm2m_get_u32(const struct lwm2m_obj_path *path, uint32_t *value);
1118
1127int lwm2m_get_s8(const struct lwm2m_obj_path *path, int8_t *value);
1128
1137int lwm2m_get_s16(const struct lwm2m_obj_path *path, int16_t *value);
1138
1147int lwm2m_get_s32(const struct lwm2m_obj_path *path, int32_t *value);
1148
1157int lwm2m_get_s64(const struct lwm2m_obj_path *path, int64_t *value);
1158
1167int lwm2m_get_bool(const struct lwm2m_obj_path *path, bool *value);
1168
1177int lwm2m_get_f64(const struct lwm2m_obj_path *path, double *value);
1178
1187int lwm2m_get_objlnk(const struct lwm2m_obj_path *path, struct lwm2m_objlnk *buf);
1188
1197int lwm2m_get_time(const struct lwm2m_obj_path *path, time_t *buf);
1198
1218
1233
1256
1273
1285
1298
1311
1315#define LWM2M_RES_DATA_READ_ONLY 0
1316
1320#define LWM2M_RES_DATA_FLAG_RO BIT(LWM2M_RES_DATA_READ_ONLY)
1321
1325#define LWM2M_HAS_RES_FLAG(res, f) ((res->data_flags & f) == f)
1326
1341int lwm2m_set_res_buf(const struct lwm2m_obj_path *path, void *buffer_ptr, uint16_t buffer_len,
1342 uint16_t data_len, uint8_t data_flags);
1343
1354int lwm2m_set_res_data_len(const struct lwm2m_obj_path *path, uint16_t data_len);
1355
1375int lwm2m_get_res_buf(const struct lwm2m_obj_path *path, void **buffer_ptr, uint16_t *buffer_len,
1376 uint16_t *data_len, uint8_t *data_flags);
1377
1390
1401
1413
1426
1438int lwm2m_engine_stop(struct lwm2m_ctx *client_ctx);
1439
1451int lwm2m_engine_start(struct lwm2m_ctx *client_ctx);
1452
1464void lwm2m_acknowledge(struct lwm2m_ctx *client_ctx);
1465
1466/*
1467 * LwM2M RD client flags, used to configure LwM2M session.
1468 */
1469
1473#define LWM2M_RD_CLIENT_FLAG_BOOTSTRAP BIT(0)
1474
1496int lwm2m_rd_client_start(struct lwm2m_ctx *client_ctx, const char *ep_name,
1498 lwm2m_observe_cb_t observe_cb);
1499
1515int lwm2m_rd_client_stop(struct lwm2m_ctx *client_ctx,
1516 lwm2m_ctx_event_cb_t event_cb, bool deregister);
1517
1528
1540
1545
1549#define LWM2M_MAX_PATH_STR_SIZE sizeof("/65535/65535/65535/65535")
1550
1559char *lwm2m_path_log_buf(char *buf, struct lwm2m_obj_path *path);
1560
1572
1577typedef void (*lwm2m_send_cb_t)(enum lwm2m_send_status status);
1578
1590int lwm2m_send_cb(struct lwm2m_ctx *ctx, const struct lwm2m_obj_path path_list[],
1591 uint8_t path_list_size, lwm2m_send_cb_t reply_cb);
1592
1600
1614int lwm2m_enable_cache(const struct lwm2m_obj_path *path, struct lwm2m_time_series_elem *data_cache,
1615 size_t cache_len);
1616
1630 lwm2m_cache_filter_cb_t filter_cb);
1631
1640
1651
1661
1673
1684
1685#ifdef __cplusplus
1686}
1687#endif
1688
1689#endif /* ZEPHYR_INCLUDE_NET_LWM2M_H_ */
_TIME_T_ time_t
Definition _timespec.h:14
CoAP implementation for Zephyr.
int lwm2m_cache_free_slots_get(const struct lwm2m_obj_path *path)
Return number of free slots in a cached resource.
int lwm2m_send_cb(struct lwm2m_ctx *ctx, const struct lwm2m_obj_path path_list[], uint8_t path_list_size, lwm2m_send_cb_t reply_cb)
 
int lwm2m_get_f64(const struct lwm2m_obj_path *path, double *value)
Get resource (instance) value (double).
int lwm2m_set_objlnk(const struct lwm2m_obj_path *path, const struct lwm2m_objlnk *value)
Set resource (instance) value (Objlnk).
int lwm2m_engine_stop(struct lwm2m_ctx *client_ctx)
Stop the LwM2M engine.
int lwm2m_get_u32(const struct lwm2m_obj_path *path, uint32_t *value)
Get resource (instance) value (u32).
int lwm2m_set_res_data_len(const struct lwm2m_obj_path *path, uint16_t data_len)
Update data size for a resource.
bool lwm2m_path_is_observed(const struct lwm2m_obj_path *path)
Check whether a path is observed.
lwm2m_security_mode_e
Security modes as defined in LwM2M Security object.
Definition lwm2m.h:1644
int lwm2m_get_s8(const struct lwm2m_obj_path *path, int8_t *value)
Get resource (instance) value (s8).
int lwm2m_engine_resume(void)
Resume the LwM2M engine thread.
int lwm2m_set_s64(const struct lwm2m_obj_path *path, int64_t value)
Set resource (instance) value (s64).
int lwm2m_engine_pause(void)
Suspend the LwM2M engine Thread.
int lwm2m_set_u8(const struct lwm2m_obj_path *path, uint8_t value)
Set resource (instance) value (u8).
int lwm2m_get_u16(const struct lwm2m_obj_path *path, uint16_t *value)
Get resource (instance) value (u16).
lwm2m_engine_execute_cb_t lwm2m_firmware_get_update_cb(void)
Get the event callback for firmware update execute events.
int lwm2m_set_u16(const struct lwm2m_obj_path *path, uint16_t value)
Set resource (instance) value (u16).
lwm2m_send_status
LwM2M send status.
Definition lwm2m.h:1567
int lwm2m_get_string(const struct lwm2m_obj_path *path, void *str, uint16_t buflen)
Get resource (instance) value (string).
int lwm2m_get_s16(const struct lwm2m_obj_path *path, int16_t *value)
Get resource (instance) value (s16).
int lwm2m_swmgmt_set_write_package_cb(uint16_t obj_inst_id, lwm2m_engine_set_data_cb_t cb)
Set data callback for software management block transfer.
int lwm2m_register_exec_callback(const struct lwm2m_obj_path *path, lwm2m_engine_execute_cb_t cb)
Set resource execute event callback.
int lwm2m_get_time(const struct lwm2m_obj_path *path, time_t *buf)
Get resource (instance) value (Time).
void lwm2m_firmware_set_update_cb_inst(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb)
Set data callback to handle firmware update execute events.
int lwm2m_set_s32(const struct lwm2m_obj_path *path, int32_t value)
Set resource (instance) value (s32).
int lwm2m_set_f64(const struct lwm2m_obj_path *path, const double value)
Set resource (instance) value (double).
int lwm2m_register_create_callback(uint16_t obj_id, lwm2m_engine_user_cb_t cb)
Set object instance create event callback.
lwm2m_engine_execute_cb_t lwm2m_firmware_get_update_cb_inst(uint16_t obj_inst_id)
Get the event callback for firmware update execute events.
int lwm2m_set_s8(const struct lwm2m_obj_path *path, int8_t value)
Set resource (instance) value (s8).
void(* lwm2m_ctx_event_cb_t)(struct lwm2m_ctx *ctx, enum lwm2m_rd_client_event event)
Asynchronous RD client event callback.
Definition lwm2m.h:185
void lwm2m_firmware_set_cancel_cb(lwm2m_engine_user_cb_t cb)
Set callback for firmware update cancel.
int(* lwm2m_engine_set_data_cb_t)(uint16_t obj_inst_id, uint16_t res_id, uint16_t res_inst_id, uint8_t *data, uint16_t data_len, bool last_block, size_t total_size, size_t offset)
Asynchronous callback when data has been set to a resource buffer.
Definition lwm2m.h:430
int lwm2m_register_post_write_callback(const struct lwm2m_obj_path *path, lwm2m_engine_set_data_cb_t cb)
Set resource (instance) post-write callback.
int lwm2m_set_bulk(const struct lwm2m_res_item res_list[], size_t res_list_size)
Set multiple resource (instance) values.
lwm2m_engine_set_data_cb_t lwm2m_firmware_get_write_cb(void)
Get the data callback for firmware block transfer writes.
int lwm2m_get_objlnk(const struct lwm2m_obj_path *path, struct lwm2m_objlnk *buf)
Get resource (instance) value (Objlnk).
int lwm2m_create_object_inst(const struct lwm2m_obj_path *path)
Create an LwM2M object instance.
int lwm2m_set_res_buf(const struct lwm2m_obj_path *path, void *buffer_ptr, uint16_t buffer_len, uint16_t data_len, uint8_t data_flags)
Set data buffer for a resource.
int lwm2m_swmgmt_install_completed(uint16_t obj_inst_id, int error_code)
Function to be called when a Software Management object instance completed the Install operation.
void *(* lwm2m_engine_get_data_cb_t)(uint16_t obj_inst_id, uint16_t res_id, uint16_t res_inst_id, size_t *data_len)
Asynchronous callback to get a resource buffer and length.
Definition lwm2m.h:394
void lwm2m_firmware_set_update_cb(lwm2m_engine_execute_cb_t cb)
Set data callback to handle firmware update execute events.
void lwm2m_pull_context_set_sockopt_callback(lwm2m_set_sockopt_cb_t set_sockopt_cb)
Set the lwm2m_ctx::set_socketoptions callback for the pull context's client.
void lwm2m_firmware_set_write_cb(lwm2m_engine_set_data_cb_t cb)
Set data callback for firmware block transfer.
int lwm2m_enable_cache(const struct lwm2m_obj_path *path, struct lwm2m_time_series_elem *data_cache, size_t cache_len)
 
int lwm2m_update_observer_max_period(struct lwm2m_ctx *client_ctx, const struct lwm2m_obj_path *path, uint32_t period_s)
Change an observer's pmax value.
int lwm2m_security_mode(struct lwm2m_ctx *ctx)
Read security mode from selected security object instance.
lwm2m_engine_user_cb_t lwm2m_firmware_get_cancel_cb_inst(uint16_t obj_inst_id)
Get the callback for firmware update cancel.
int lwm2m_register_pre_write_callback(const struct lwm2m_obj_path *path, lwm2m_engine_get_data_cb_t cb)
Set resource (instance) pre-write callback.
int lwm2m_set_time(const struct lwm2m_obj_path *path, time_t value)
Set resource (instance) value (Time).
int lwm2m_set_string(const struct lwm2m_obj_path *path, const char *data_ptr)
Set resource (instance) value (string).
lwm2m_socket_states
Different traffic states of the LwM2M socket.
Definition lwm2m.h:199
bool(* lwm2m_cache_filter_cb_t)(const struct lwm2m_obj_path *path, const struct lwm2m_time_series_elem *element)
Callback type for filtering cached time series samples.
Definition lwm2m.h:372
int lwm2m_swmgmt_set_deactivate_cb(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb)
Set callback to handle software deactivation requests.
struct lwm2m_ctx * lwm2m_rd_client_ctx(void)
&#160;
void lwm2m_acknowledge(struct lwm2m_ctx *client_ctx)
Acknowledge the currently processed request with an empty ACK.
int(* lwm2m_set_sockopt_cb_t)(struct lwm2m_ctx *client_ctx)
Definition lwm2m.h:188
int lwm2m_register_delete_callback(uint16_t obj_id, lwm2m_engine_user_cb_t cb)
Set object instance delete event callback.
int lwm2m_set_u32(const struct lwm2m_obj_path *path, uint32_t value)
Set resource (instance) value (u32).
void lwm2m_event_log_set_read_log_data_cb(lwm2m_engine_get_data_cb_t cb)
Set callback to read log data.
lwm2m_engine_user_cb_t lwm2m_firmware_get_cancel_cb(void)
Get a callback for firmware update cancel.
int lwm2m_set_default_sockopt(struct lwm2m_ctx *ctx)
Set default socket options for DTLS connections.
char * lwm2m_path_log_buf(char *buf, struct lwm2m_obj_path *path)
Helper function to print path objects' contents to log.
int lwm2m_get_s32(const struct lwm2m_obj_path *path, int32_t *value)
Get resource (instance) value (s32).
void lwm2m_registry_lock(void)
Locks the registry for this thread.
int lwm2m_rd_client_start(struct lwm2m_ctx *client_ctx, const char *ep_name, uint32_t flags, lwm2m_ctx_event_cb_t event_cb, lwm2m_observe_cb_t observe_cb)
Start the LwM2M RD (Registration / Discovery) Client.
int lwm2m_set_bool(const struct lwm2m_obj_path *path, bool value)
Set resource (instance) value (bool).
int lwm2m_engine_start(struct lwm2m_ctx *client_ctx)
Start the LwM2M engine.
void lwm2m_firmware_set_cancel_cb_inst(uint16_t obj_inst_id, lwm2m_engine_user_cb_t cb)
Set data callback for firmware update cancel.
int lwm2m_set_opaque(const struct lwm2m_obj_path *path, const char *data_ptr, uint16_t data_len)
Set resource (instance) value (opaque buffer).
int lwm2m_get_s64(const struct lwm2m_obj_path *path, int64_t *value)
Get resource (instance) value (s64).
void lwm2m_registry_unlock(void)
Unlocks the registry previously locked by lwm2m_registry_lock().
int lwm2m_update_device_service_period(uint32_t period_ms)
Update the period of the device service.
void lwm2m_rd_client_update(void)
Trigger a Registration Update of the LwM2M RD Client.
int lwm2m_swmgmt_set_read_package_version_cb(uint16_t obj_inst_id, lwm2m_engine_get_data_cb_t cb)
Set callback to read software package.
int(* lwm2m_engine_user_cb_t)(uint16_t obj_inst_id)
Asynchronous event notification callback.
Definition lwm2m.h:451
int lwm2m_device_add_err(uint8_t error_code)
Register a new error code with LwM2M Device object.
int lwm2m_get_res_buf(const struct lwm2m_obj_path *path, void **buffer_ptr, uint16_t *buffer_len, uint16_t *data_len, uint8_t *data_flags)
Get data buffer for a resource.
int lwm2m_swmgmt_set_activate_cb(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb)
Set callback to handle software activation requests.
void lwm2m_firmware_set_write_cb_inst(uint16_t obj_inst_id, lwm2m_engine_set_data_cb_t cb)
Set data callback for firmware block transfer.
int lwm2m_set_cache_filter(const struct lwm2m_obj_path *path, lwm2m_cache_filter_cb_t filter_cb)
Register a filtering callback for cached resource samples.
int lwm2m_get_u8(const struct lwm2m_obj_path *path, uint8_t *value)
Get resource (instance) value (u8).
int lwm2m_create_res_inst(const struct lwm2m_obj_path *path)
Create a resource instance.
lwm2m_observe_event
Observe callback events.
Definition lwm2m.h:114
lwm2m_rd_client_event
LwM2M RD client events.
Definition lwm2m.h:143
int lwm2m_swmgmt_set_delete_package_cb(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb)
Set callback to handle software uninstall requests.
int lwm2m_delete_res_inst(const struct lwm2m_obj_path *path)
Delete a resource instance.
int lwm2m_set_s16(const struct lwm2m_obj_path *path, int16_t value)
Set resource (instance) value (s16).
int lwm2m_register_validate_callback(const struct lwm2m_obj_path *path, lwm2m_engine_set_data_cb_t cb)
Set resource (instance) validation callback.
lwm2m_engine_set_data_cb_t lwm2m_firmware_get_write_cb_inst(uint16_t obj_inst_id)
Get the data callback for firmware block transfer writes.
void(* lwm2m_observe_cb_t)(enum lwm2m_observe_event event, struct lwm2m_obj_path *path, void *user_data)
Observe callback indicating observer adds and deletes, and notification ACKs and timeouts.
Definition lwm2m.h:131
int lwm2m_update_observer_min_period(struct lwm2m_ctx *client_ctx, const struct lwm2m_obj_path *path, uint32_t period_s)
Change an observer's pmin value.
int lwm2m_swmgmt_set_install_package_cb(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb)
Set callback to handle software install requests.
int lwm2m_get_opaque(const struct lwm2m_obj_path *path, void *buf, uint16_t buflen)
Get resource (instance) value (opaque buffer).
void(* lwm2m_socket_fault_cb_t)(int error)
Callback function called when a socket error is encountered.
Definition lwm2m.h:100
int(* lwm2m_engine_execute_cb_t)(uint16_t obj_inst_id, uint8_t *args, uint16_t args_len)
Asynchronous execute notification callback.
Definition lwm2m.h:469
int lwm2m_register_read_callback(const struct lwm2m_obj_path *path, lwm2m_engine_get_data_cb_t cb)
Set resource (instance) read callback.
void(* lwm2m_send_cb_t)(enum lwm2m_send_status status)
Callback returning send status.
Definition lwm2m.h:1577
int lwm2m_delete_object_inst(const struct lwm2m_obj_path *path)
Delete an LwM2M object instance.
int lwm2m_rd_client_stop(struct lwm2m_ctx *client_ctx, lwm2m_ctx_event_cb_t event_cb, bool deregister)
Stop the LwM2M RD (De-register) Client.
int lwm2m_get_bool(const struct lwm2m_obj_path *path, bool *value)
Get resource (instance) value (bool).
@ LWM2M_SECURITY_PSK
Pre-Shared Key mode.
Definition lwm2m.h:1645
@ LWM2M_SECURITY_RAW_PK
Raw Public Key mode.
Definition lwm2m.h:1646
@ LWM2M_SECURITY_CERT
Certificate mode.
Definition lwm2m.h:1647
@ LWM2M_SECURITY_CERT_EST
Certificate mode with EST.
Definition lwm2m.h:1649
@ LWM2M_SECURITY_NOSEC
NoSec mode.
Definition lwm2m.h:1648
@ LWM2M_SEND_STATUS_SUCCESS
Succeed.
Definition lwm2m.h:1568
@ LWM2M_SEND_STATUS_FAILURE
Failure.
Definition lwm2m.h:1569
@ LWM2M_SEND_STATUS_TIMEOUT
Timeout.
Definition lwm2m.h:1570
@ LWM2M_SOCKET_STATE_NO_DATA
No more data is expected.
Definition lwm2m.h:203
@ LWM2M_SOCKET_STATE_ONE_RESPONSE
One response is expected for the next message.
Definition lwm2m.h:201
@ LWM2M_SOCKET_STATE_ONGOING
Ongoing traffic is expected.
Definition lwm2m.h:200
@ LWM2M_SOCKET_STATE_LAST
Next message is the last one.
Definition lwm2m.h:202
@ LWM2M_OBSERVE_EVENT_OBSERVER_ADDED
Observer added.
Definition lwm2m.h:115
@ LWM2M_OBSERVE_EVENT_NOTIFY_TIMEOUT
Notification timed out.
Definition lwm2m.h:118
@ LWM2M_OBSERVE_EVENT_NOTIFY_ACK
Notification ACKed.
Definition lwm2m.h:117
@ LWM2M_OBSERVE_EVENT_OBSERVER_REMOVED
Observer removed.
Definition lwm2m.h:116
@ LWM2M_RD_CLIENT_EVENT_DEREGISTER_FAILURE
De-registration failure.
Definition lwm2m.h:161
@ LWM2M_RD_CLIENT_EVENT_QUEUE_MODE_RX_OFF
Queue mode RX off.
Definition lwm2m.h:165
@ LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_TRANSFER_COMPLETE
Bootstrap transfer complete.
Definition lwm2m.h:151
@ LWM2M_RD_CLIENT_EVENT_SERVER_DISABLED
Server disabled.
Definition lwm2m.h:175
@ LWM2M_RD_CLIENT_EVENT_REGISTRATION_COMPLETE
Registration complete.
Definition lwm2m.h:155
@ LWM2M_RD_CLIENT_EVENT_REG_TIMEOUT
Registration timeout.
Definition lwm2m.h:157
@ LWM2M_RD_CLIENT_EVENT_REG_UPDATE_COMPLETE
Registration update complete.
Definition lwm2m.h:159
@ LWM2M_RD_CLIENT_EVENT_DEREGISTER
De-register.
Definition lwm2m.h:173
@ LWM2M_RD_CLIENT_EVENT_REG_UPDATE
Registration update.
Definition lwm2m.h:171
@ LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_REG_FAILURE
Bootstrap registration failure.
Definition lwm2m.h:147
@ LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_REG_COMPLETE
Bootstrap registration complete.
Definition lwm2m.h:149
@ LWM2M_RD_CLIENT_EVENT_DISCONNECT
Disconnected.
Definition lwm2m.h:163
@ LWM2M_RD_CLIENT_EVENT_NONE
Invalid event.
Definition lwm2m.h:145
@ LWM2M_RD_CLIENT_EVENT_REGISTRATION_FAILURE
Registration failure.
Definition lwm2m.h:153
@ LWM2M_RD_CLIENT_EVENT_ENGINE_SUSPENDED
Engine suspended.
Definition lwm2m.h:167
@ LWM2M_RD_CLIENT_EVENT_NETWORK_ERROR
Network error.
Definition lwm2m.h:169
struct _slist sys_slist_t
Single-linked list structure.
Definition slist.h:54
Public kernel APIs.
time_t time(time_t *tloc)
LwM2M path helper macros.
flags
Definition parser.h:97
state
Definition parser_state.h:29
#define bool
Definition stdbool.h:13
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__INT32_TYPE__ int32_t
Definition stdint.h:74
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
__INT64_TYPE__ int64_t
Definition stdint.h:75
__INT8_TYPE__ int8_t
Definition stdint.h:72
__INT16_TYPE__ int16_t
Definition stdint.h:73
Represents a request awaiting for an acknowledgment (ACK).
Definition coap.h:425
Represents the handler for the reply of a request, it is also used when observing resources.
Definition coap.h:446
Kernel mutex structure.
Definition kernel.h:3572
LwM2M context structure to maintain information for a single LwM2M connection.
Definition lwm2m.h:210
lwm2m_socket_fault_cb_t fault_cb
Socket fault callback.
Definition lwm2m.h:312
char * desthostname
Destination hostname.
Definition lwm2m.h:257
lwm2m_observe_cb_t observe_cb
Callback for new or cancelled observations, and acknowledged or timed out notifications.
Definition lwm2m.h:317
uint8_t validate_buf[CONFIG_LWM2M_ENGINE_VALIDATION_BUFFER_SIZE]
Validation buffer.
Definition lwm2m.h:326
int(* load_credentials)(struct lwm2m_ctx *client_ctx)
Custom load_credentials function.
Definition lwm2m.h:265
int tls_tag
TLS tag is set by client as a reference used when the LwM2M engine calls tls_credential_(add|delete).
Definition lwm2m.h:251
int srv_obj_inst
Current index of Server Object used in this context.
Definition lwm2m.h:299
lwm2m_set_sockopt_cb_t set_socketoptions
Custom socket options.
Definition lwm2m.h:273
void * processed_req
A pointer to currently processed request, for internal LwM2M engine use.
Definition lwm2m.h:239
bool bootstrap_mode
Flag to enable BOOTSTRAP interface.
Definition lwm2m.h:304
lwm2m_ctx_event_cb_t event_cb
Callback for client events.
Definition lwm2m.h:320
int sec_obj_inst
Current index of Security Object used for server credentials.
Definition lwm2m.h:296
bool buffer_client_messages
Flag to indicate that the client is buffering Notifications and Send messages.
Definition lwm2m.h:293
void(* set_socket_state)(int fd, enum lwm2m_socket_states state)
Callback to indicate transmission states.
Definition lwm2m.h:334
struct net_sockaddr_storage remote_addr_storage
Destination address.
Definition lwm2m.h:214
bool use_dtls
Flag to indicate if context should use DTLS.
Definition lwm2m.h:280
int sock_fd
Socket File Descriptor.
Definition lwm2m.h:307
uint16_t desthostnamelen
Destination hostname length.
Definition lwm2m.h:259
bool connection_suspended
Flag to indicate that the socket connection is suspended.
Definition lwm2m.h:286
LwM2M object path structure.
Definition lwm2m.h:103
uint16_t obj_inst_id
Object instance ID.
Definition lwm2m.h:105
uint16_t res_inst_id
Resource instance ID.
Definition lwm2m.h:107
uint8_t level
Path level (0-4).
Definition lwm2m.h:108
uint16_t res_id
Resource ID.
Definition lwm2m.h:106
uint16_t obj_id
Object ID.
Definition lwm2m.h:104
LWM2M Objlnk resource type structure.
Definition lwm2m.h:812
uint16_t obj_id
Object ID.
Definition lwm2m.h:813
uint16_t obj_inst
Object instance ID.
Definition lwm2m.h:814
LwM2M resource item structure.
Definition lwm2m.h:1044
uint16_t size
Size of the value.
Definition lwm2m.h:1050
void * value
Pointer to resource value.
Definition lwm2m.h:1048
struct lwm2m_obj_path * path
Pointer to LwM2M path as a struct.
Definition lwm2m.h:1046
LwM2M Time series data structure.
Definition lwm2m.h:340
time_t t
Cached data Unix timestamp.
Definition lwm2m.h:342
Generic sockaddr struct.
Definition net_ip.h:455