Zephyr Project API  3.3.0
A Scalable Open Source RTOS
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
24#ifndef ZEPHYR_INCLUDE_NET_LWM2M_H_
25#define ZEPHYR_INCLUDE_NET_LWM2M_H_
26
27#include <time.h>
28#include <zephyr/kernel.h>
29#include <zephyr/sys/mutex.h>
30#include <zephyr/net/coap.h>
32
38/* clang-format off */
39#define LWM2M_OBJECT_SECURITY_ID 0
40#define LWM2M_OBJECT_SERVER_ID 1
41#define LWM2M_OBJECT_ACCESS_CONTROL_ID 2
42#define LWM2M_OBJECT_DEVICE_ID 3
43#define LWM2M_OBJECT_CONNECTIVITY_MONITORING_ID 4
44#define LWM2M_OBJECT_FIRMWARE_ID 5
45#define LWM2M_OBJECT_LOCATION_ID 6
46#define LWM2M_OBJECT_CONNECTIVITY_STATISTICS_ID 7
47#define LWM2M_OBJECT_SOFTWARE_MANAGEMENT_ID 9
48#define LWM2M_OBJECT_PORTFOLIO_ID 16
49#define LWM2M_OBJECT_BINARYAPPDATACONTAINER_ID 19
50#define LWM2M_OBJECT_EVENT_LOG_ID 20
51#define LWM2M_OBJECT_GATEWAY_ID 25
52/* clang-format on */
53
61/* clang-format off */
62#define IPSO_OBJECT_GENERIC_SENSOR_ID 3300
63#define IPSO_OBJECT_TEMP_SENSOR_ID 3303
64#define IPSO_OBJECT_HUMIDITY_SENSOR_ID 3304
65#define IPSO_OBJECT_LIGHT_CONTROL_ID 3311
66#define IPSO_OBJECT_ACCELEROMETER_ID 3313
67#define IPSO_OBJECT_CURRENT_SENSOR_ID 3317
68#define IPSO_OBJECT_PRESSURE_ID 3323
69#define IPSO_OBJECT_BUZZER_ID 3338
70#define IPSO_OBJECT_TIMER_ID 3340
71#define IPSO_OBJECT_ONOFF_SWITCH_ID 3342
72#define IPSO_OBJECT_PUSH_BUTTON_ID 3347
73#define UCIFI_OBJECT_BATTERY_ID 3411
74#define IPSO_OBJECT_FILLING_LEVEL_SENSOR_ID 3435
75/* clang-format on */
76
77typedef void (*lwm2m_socket_fault_cb_t)(int error);
78
84 uint8_t level; /* 0/1/2/3/4 (4 = resource instance) */
85};
86
95};
96
107typedef void (*lwm2m_observe_cb_t)(enum lwm2m_observe_event event, struct lwm2m_obj_path *path,
108 void *user_data);
109
110
111struct lwm2m_ctx;
119typedef void (*lwm2m_ctx_event_cb_t)(struct lwm2m_ctx *ctx,
120 enum lwm2m_rd_client_event event);
121
122
127struct lwm2m_ctx {
130
132 struct coap_pending pendings[CONFIG_LWM2M_ENGINE_MAX_PENDING + 1];
133 struct coap_reply replies[CONFIG_LWM2M_ENGINE_MAX_REPLIES + 1];
135#if defined(CONFIG_LWM2M_QUEUE_MODE_ENABLED)
136 sys_slist_t queued_messages;
137#endif
139
146
147#if defined(CONFIG_LWM2M_DTLS_SUPPORT)
151 int tls_tag;
152
156 char *desthostname;
157 uint16_t desthostnamelen;
158 bool hostname_verify;
159
163 int (*load_credentials)(struct lwm2m_ctx *client_ctx);
164#endif
171
177
178#if defined(CONFIG_LWM2M_QUEUE_MODE_ENABLED)
183 bool buffer_client_messages;
184#endif
187
190
195
198
203
208
210
215 uint8_t validate_buf[CONFIG_LWM2M_ENGINE_VALIDATION_BUFFER_SIZE];
216};
217
222 /* Cached data Unix timestamp */
224 union {
234 double f;
235 bool b;
236 };
237};
238
258typedef void *(*lwm2m_engine_get_data_cb_t)(uint16_t obj_inst_id,
259 uint16_t res_id,
260 uint16_t res_inst_id,
261 size_t *data_len);
262
289typedef int (*lwm2m_engine_set_data_cb_t)(uint16_t obj_inst_id,
290 uint16_t res_id, uint16_t res_inst_id,
291 uint8_t *data, uint16_t data_len,
292 bool last_block, size_t total_size);
293
310typedef int (*lwm2m_engine_user_cb_t)(uint16_t obj_inst_id);
311
328typedef int (*lwm2m_engine_execute_cb_t)(uint16_t obj_inst_id,
329 uint8_t *args, uint16_t args_len);
330
335#define LWM2M_DEVICE_PWR_SRC_TYPE_DC_POWER 0
336#define LWM2M_DEVICE_PWR_SRC_TYPE_BAT_INT 1
337#define LWM2M_DEVICE_PWR_SRC_TYPE_BAT_EXT 2
338#define LWM2M_DEVICE_PWR_SRC_TYPE_UNUSED 3
339#define LWM2M_DEVICE_PWR_SRC_TYPE_PWR_OVER_ETH 4
340#define LWM2M_DEVICE_PWR_SRC_TYPE_USB 5
341#define LWM2M_DEVICE_PWR_SRC_TYPE_AC_POWER 6
342#define LWM2M_DEVICE_PWR_SRC_TYPE_SOLAR 7
343#define LWM2M_DEVICE_PWR_SRC_TYPE_MAX 8
344
350#define LWM2M_DEVICE_ERROR_NONE 0
351#define LWM2M_DEVICE_ERROR_LOW_POWER 1
352#define LWM2M_DEVICE_ERROR_EXT_POWER_SUPPLY_OFF 2
353#define LWM2M_DEVICE_ERROR_GPS_FAILURE 3
354#define LWM2M_DEVICE_ERROR_LOW_SIGNAL_STRENGTH 4
355#define LWM2M_DEVICE_ERROR_OUT_OF_MEMORY 5
356#define LWM2M_DEVICE_ERROR_SMS_FAILURE 6
357#define LWM2M_DEVICE_ERROR_NETWORK_FAILURE 7
358#define LWM2M_DEVICE_ERROR_PERIPHERAL_FAILURE 8
359
366#define LWM2M_DEVICE_BATTERY_STATUS_NORMAL 0
367#define LWM2M_DEVICE_BATTERY_STATUS_CHARGING 1
368#define LWM2M_DEVICE_BATTERY_STATUS_CHARGE_COMP 2
369#define LWM2M_DEVICE_BATTERY_STATUS_DAMAGED 3
370#define LWM2M_DEVICE_BATTERY_STATUS_LOW 4
371#define LWM2M_DEVICE_BATTERY_STATUS_NOT_INST 5
372#define LWM2M_DEVICE_BATTERY_STATUS_UNKNOWN 6
373
382
383
390#define STATE_IDLE 0
391#define STATE_DOWNLOADING 1
392#define STATE_DOWNLOADED 2
393#define STATE_UPDATING 3
394
401#define RESULT_DEFAULT 0
402#define RESULT_SUCCESS 1
403#define RESULT_NO_STORAGE 2
404#define RESULT_OUT_OF_MEM 3
405#define RESULT_CONNECTION_LOST 4
406#define RESULT_INTEGRITY_FAILED 5
407#define RESULT_UNSUP_FW 6
408#define RESULT_INVALID_URI 7
409#define RESULT_UPDATE_FAILED 8
410#define RESULT_UNSUP_PROTO 9
411
412#if defined(CONFIG_LWM2M_FIRMWARE_UPDATE_OBJ_SUPPORT)
421void lwm2m_firmware_set_write_cb(lwm2m_engine_set_data_cb_t cb);
422
428lwm2m_engine_set_data_cb_t lwm2m_firmware_get_write_cb(void);
429
439void lwm2m_firmware_set_write_cb_inst(uint16_t obj_inst_id, lwm2m_engine_set_data_cb_t cb);
440
447lwm2m_engine_set_data_cb_t lwm2m_firmware_get_write_cb_inst(uint16_t obj_inst_id);
448
449#if defined(CONFIG_LWM2M_FIRMWARE_UPDATE_PULL_SUPPORT)
458void lwm2m_firmware_set_update_cb(lwm2m_engine_execute_cb_t cb);
459
465lwm2m_engine_execute_cb_t lwm2m_firmware_get_update_cb(void);
466
476void lwm2m_firmware_set_update_cb_inst(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb);
477
484lwm2m_engine_execute_cb_t lwm2m_firmware_get_update_cb_inst(uint16_t obj_inst_id);
485#endif
486#endif
487
488
489#if defined(CONFIG_LWM2M_SWMGMT_OBJ_SUPPORT)
490
502int lwm2m_swmgmt_set_activate_cb(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb);
503
515int lwm2m_swmgmt_set_deactivate_cb(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb);
516
528int lwm2m_swmgmt_set_install_package_cb(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb);
529
541int lwm2m_swmgmt_set_delete_package_cb(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb);
542
554int lwm2m_swmgmt_set_read_package_version_cb(uint16_t obj_inst_id, lwm2m_engine_get_data_cb_t cb);
555
567int lwm2m_swmgmt_set_write_package_cb(uint16_t obj_inst_id, lwm2m_engine_set_data_cb_t cb);
568
579int lwm2m_swmgmt_install_completed(uint16_t obj_inst_id, int error_code);
580
581#endif
582
583#if defined(CONFIG_LWM2M_EVENT_LOG_OBJ_SUPPORT)
584
593void lwm2m_event_log_set_read_log_data_cb(lwm2m_engine_get_data_cb_t cb);
594
595#endif
596
600#define LWM2M_OBJLNK_MAX_ID USHRT_MAX
601
608};
609
626__deprecated
627int lwm2m_engine_update_observer_min_period(struct lwm2m_ctx *client_ctx, const char *pathstr,
628 uint32_t period_s);
629
645 const struct lwm2m_obj_path *path, uint32_t period_s);
646
663__deprecated
664int lwm2m_engine_update_observer_max_period(struct lwm2m_ctx *client_ctx, const char *pathstr,
665 uint32_t period_s);
666
682 const struct lwm2m_obj_path *path, uint32_t period_s);
683
697__deprecated
698int lwm2m_engine_create_obj_inst(const char *pathstr);
699
712
724__deprecated
725int lwm2m_engine_delete_obj_inst(const char *pathstr);
726
737
746
752
764__deprecated
765int lwm2m_engine_set_opaque(const char *pathstr, const char *data_ptr, uint16_t data_len);
766
776int lwm2m_set_opaque(const struct lwm2m_obj_path *path, const char *data_ptr, uint16_t data_len);
777
788__deprecated
789int lwm2m_engine_set_string(const char *pathstr, const char *data_ptr);
790
799int lwm2m_set_string(const struct lwm2m_obj_path *path, const char *data_ptr);
800
811__deprecated
812int lwm2m_engine_set_u8(const char *pathstr, uint8_t value);
813
822int lwm2m_set_u8(const struct lwm2m_obj_path *path, uint8_t value);
823
834__deprecated
835int lwm2m_engine_set_u16(const char *pathstr, uint16_t value);
836
845int lwm2m_set_u16(const struct lwm2m_obj_path *path, uint16_t value);
846
857__deprecated
858int lwm2m_engine_set_u32(const char *pathstr, uint32_t value);
859
868int lwm2m_set_u32(const struct lwm2m_obj_path *path, uint32_t value);
869
880__deprecated
881int lwm2m_engine_set_u64(const char *pathstr, uint64_t value);
882
891int lwm2m_set_u64(const struct lwm2m_obj_path *path, uint64_t value);
892
903__deprecated
904int lwm2m_engine_set_s8(const char *pathstr, int8_t value);
905
914int lwm2m_set_s8(const struct lwm2m_obj_path *path, int8_t value);
915
926__deprecated
927int lwm2m_engine_set_s16(const char *pathstr, int16_t value);
928
937int lwm2m_set_s16(const struct lwm2m_obj_path *path, int16_t value);
938
949__deprecated
950int lwm2m_engine_set_s32(const char *pathstr, int32_t value);
951
960int lwm2m_set_s32(const struct lwm2m_obj_path *path, int32_t value);
961
972__deprecated
973int lwm2m_engine_set_s64(const char *pathstr, int64_t value);
974
983int lwm2m_set_s64(const struct lwm2m_obj_path *path, int64_t value);
984
995__deprecated
996int lwm2m_engine_set_bool(const char *pathstr, bool value);
997
1006int lwm2m_set_bool(const struct lwm2m_obj_path *path, bool value);
1007
1018__deprecated
1019int lwm2m_engine_set_float(const char *pathstr, const double *value);
1020
1029int lwm2m_set_f64(const struct lwm2m_obj_path *path, const double value);
1030
1041__deprecated
1042int lwm2m_engine_set_objlnk(const char *pathstr, const struct lwm2m_objlnk *value);
1043
1052int lwm2m_set_objlnk(const struct lwm2m_obj_path *path, const struct lwm2m_objlnk *value);
1053
1064__deprecated
1065int lwm2m_engine_set_time(const char *pathstr, time_t value);
1066
1075int lwm2m_set_time(const struct lwm2m_obj_path *path, time_t value);
1076
1088__deprecated
1089int lwm2m_engine_get_opaque(const char *pathstr, void *buf, uint16_t buflen);
1090
1100int lwm2m_get_opaque(const struct lwm2m_obj_path *path, void *buf, uint16_t buflen);
1101
1113__deprecated
1114int lwm2m_engine_get_string(const char *pathstr, void *str, uint16_t strlen);
1115
1125int lwm2m_get_string(const struct lwm2m_obj_path *path, void *str, uint16_t strlen);
1126
1137__deprecated
1138int lwm2m_engine_get_u8(const char *pathstr, uint8_t *value);
1139
1148int lwm2m_get_u8(const struct lwm2m_obj_path *path, uint8_t *value);
1149
1160__deprecated
1161int lwm2m_engine_get_u16(const char *pathstr, uint16_t *value);
1162
1171int lwm2m_get_u16(const struct lwm2m_obj_path *path, uint16_t *value);
1172
1183__deprecated
1184int lwm2m_engine_get_u32(const char *pathstr, uint32_t *value);
1185
1194int lwm2m_get_u32(const struct lwm2m_obj_path *path, uint32_t *value);
1195
1206__deprecated
1207int lwm2m_engine_get_u64(const char *pathstr, uint64_t *value);
1208
1217int lwm2m_get_u64(const struct lwm2m_obj_path *path, uint64_t *value);
1218
1229__deprecated
1230int lwm2m_engine_get_s8(const char *pathstr, int8_t *value);
1231
1240int lwm2m_get_s8(const struct lwm2m_obj_path *path, int8_t *value);
1241
1252__deprecated
1253int lwm2m_engine_get_s16(const char *pathstr, int16_t *value);
1254
1263int lwm2m_get_s16(const struct lwm2m_obj_path *path, int16_t *value);
1264
1275__deprecated
1276int lwm2m_engine_get_s32(const char *pathstr, int32_t *value);
1277
1286int lwm2m_get_s32(const struct lwm2m_obj_path *path, int32_t *value);
1287
1298__deprecated
1299int lwm2m_engine_get_s64(const char *pathstr, int64_t *value);
1300
1309int lwm2m_get_s64(const struct lwm2m_obj_path *path, int64_t *value);
1310
1321__deprecated
1322int lwm2m_engine_get_bool(const char *pathstr, bool *value);
1323
1332int lwm2m_get_bool(const struct lwm2m_obj_path *path, bool *value);
1333
1344__deprecated
1345int lwm2m_engine_get_float(const char *pathstr, double *buf);
1346
1355int lwm2m_get_f64(const struct lwm2m_obj_path *path, double *value);
1356
1367__deprecated
1368int lwm2m_engine_get_objlnk(const char *pathstr, struct lwm2m_objlnk *buf);
1369
1378int lwm2m_get_objlnk(const struct lwm2m_obj_path *path, struct lwm2m_objlnk *buf);
1379
1390__deprecated
1391int lwm2m_engine_get_time(const char *pathstr, time_t *buf);
1392
1401int lwm2m_get_time(const struct lwm2m_obj_path *path, time_t *buf);
1402
1423__deprecated
1426
1446
1461__deprecated
1464
1479
1502__deprecated
1505
1528
1545__deprecated
1548
1565
1578__deprecated
1581
1593
1606__deprecated
1609
1622
1635__deprecated
1638
1651
1655#define LWM2M_RES_DATA_READ_ONLY 0
1656
1660#define LWM2M_RES_DATA_FLAG_RO BIT(LWM2M_RES_DATA_READ_ONLY)
1661
1665#define LWM2M_HAS_RES_FLAG(res, f) ((res->data_flags & f) == f)
1666
1683__deprecated
1684int lwm2m_engine_set_res_buf(const char *pathstr, void *buffer_ptr, uint16_t buffer_len,
1685 uint16_t data_len, uint8_t data_flags);
1686
1701int lwm2m_set_res_buf(const struct lwm2m_obj_path *path, void *buffer_ptr, uint16_t buffer_len,
1702 uint16_t data_len, uint8_t data_flags);
1703
1720__deprecated
1721int lwm2m_engine_set_res_data(const char *pathstr, void *data_ptr, uint16_t data_len,
1722 uint8_t data_flags);
1723
1736__deprecated
1737int lwm2m_engine_set_res_data_len(const char *pathstr, uint16_t data_len);
1738
1749int lwm2m_set_res_data_len(const struct lwm2m_obj_path *path, uint16_t data_len);
1750
1772__deprecated
1773int lwm2m_engine_get_res_buf(const char *pathstr, void **buffer_ptr, uint16_t *buffer_len,
1774 uint16_t *data_len, uint8_t *data_flags);
1775
1795int lwm2m_get_res_buf(const struct lwm2m_obj_path *path, void **buffer_ptr, uint16_t *buffer_len,
1796 uint16_t *data_len, uint8_t *data_flags);
1797
1813__deprecated
1814int lwm2m_engine_get_res_data(const char *pathstr, void **data_ptr, uint16_t *data_len,
1815 uint8_t *data_flags);
1816
1830__deprecated
1831int lwm2m_engine_create_res_inst(const char *pathstr);
1832
1845
1857__deprecated
1858int lwm2m_engine_delete_res_inst(const char *pathstr);
1859
1870
1885
1897
1911__deprecated
1912bool lwm2m_engine_path_is_observed(const char *pathstr);
1913
1926
1938int lwm2m_engine_stop(struct lwm2m_ctx *client_ctx);
1939
1951int lwm2m_engine_start(struct lwm2m_ctx *client_ctx);
1952
1964void lwm2m_acknowledge(struct lwm2m_ctx *client_ctx);
1965
1986};
1987
1991#define LWM2M_RD_CLIENT_EVENT_REG_UPDATE_FAILURE \
1992 LWM2M_RD_CLIENT_EVENT_REG_TIMEOUT __DEPRECATED_MACRO
1993
1994/*
1995 * LwM2M RD client flags, used to configure LwM2M session.
1996 */
1997
2001#define LWM2M_RD_CLIENT_FLAG_BOOTSTRAP BIT(0)
2002
2024int lwm2m_rd_client_start(struct lwm2m_ctx *client_ctx, const char *ep_name,
2026 lwm2m_observe_cb_t observe_cb);
2027
2043int lwm2m_rd_client_stop(struct lwm2m_ctx *client_ctx,
2044 lwm2m_ctx_event_cb_t event_cb, bool deregister);
2045
2056
2068
2073
2077#define LWM2M_MAX_PATH_STR_SIZE sizeof("/65535/65535/65535/65535")
2078
2087char *lwm2m_path_log_buf(char *buf, struct lwm2m_obj_path *path);
2088
2102int lwm2m_engine_send(struct lwm2m_ctx *ctx, char const *path_list[], uint8_t path_list_size,
2103 bool confirmation_request);
2104
2116int lwm2m_send(struct lwm2m_ctx *ctx, const struct lwm2m_obj_path path_list[],
2117 uint8_t path_list_size, bool confirmation_request);
2118
2126
2142__deprecated
2143int lwm2m_engine_enable_cache(char const *resource_path, struct lwm2m_time_series_elem *data_cache,
2144 size_t cache_len);
2145
2159int lwm2m_enable_cache(struct lwm2m_obj_path *path, struct lwm2m_time_series_elem *data_cache,
2160 size_t cache_len);
2161
2162#endif /* ZEPHYR_INCLUDE_NET_LWM2M_H_ */
_TIME_T_ time_t
Definition: _timespec.h:14
CoAP implementation for Zephyr.
int lwm2m_engine_set_u8(const char *pathstr, uint8_t value)
Set resource (instance) value (u8)
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)
Asynchronous callback when data has been set to a resource buffer.
Definition: lwm2m.h:289
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)
bool lwm2m_engine_path_is_observed(const char *pathstr)
Check whether a path is observed.
int lwm2m_engine_stop(struct lwm2m_ctx *client_ctx)
Stop the LwM2M engine.
int lwm2m_engine_get_float(const char *pathstr, double *buf)
Get resource (instance) value (double)
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.
int lwm2m_engine_set_s64(const char *pathstr, int64_t value)
Set resource (instance) value (s64)
int lwm2m_get_s8(const struct lwm2m_obj_path *path, int8_t *value)
Get resource (instance) value (s8)
int lwm2m_engine_register_pre_write_callback(const char *pathstr, lwm2m_engine_get_data_cb_t cb)
Set resource (instance) pre-write callback.
int lwm2m_engine_update_service_period(k_work_handler_t service, uint32_t period_ms)
Update the period of a given service.
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)
int lwm2m_engine_set_s16(const char *pathstr, int16_t value)
Set resource (instance) value (s16)
int lwm2m_set_u16(const struct lwm2m_obj_path *path, uint16_t value)
Set resource (instance) value (u16)
int lwm2m_engine_register_read_callback(const char *pathstr, lwm2m_engine_get_data_cb_t cb)
Set resource (instance) read callback.
int lwm2m_get_s16(const struct lwm2m_obj_path *path, int16_t *value)
Get resource (instance) value (s16)
int lwm2m_engine_get_time(const char *pathstr, time_t *buf)
Get resource (instance) value (Time)
int lwm2m_engine_set_string(const char *pathstr, const char *data_ptr)
Set resource (instance) value (string)
int lwm2m_register_exec_callback(const struct lwm2m_obj_path *path, lwm2m_engine_execute_cb_t cb)
Set resource execute event callback.
int lwm2m_engine_set_opaque(const char *pathstr, const char *data_ptr, uint16_t data_len)
Set resource (instance) value (opaque buffer)
int lwm2m_get_time(const struct lwm2m_obj_path *path, time_t *buf)
Get resource (instance) value (Time)
int lwm2m_engine_set_u32(const char *pathstr, uint32_t value)
Set resource (instance) value (u32)
int lwm2m_set_s32(const struct lwm2m_obj_path *path, int32_t value)
Set resource (instance) value (s32)
int lwm2m_engine_create_obj_inst(const char *pathstr)
Create an LwM2M object instance.
int lwm2m_set_f64(const struct lwm2m_obj_path *path, const double value)
Set resource (instance) value (double)
int lwm2m_engine_get_opaque(const char *pathstr, void *buf, uint16_t buflen)
Get resource (instance) value (opaque buffer)
int lwm2m_register_create_callback(uint16_t obj_id, lwm2m_engine_user_cb_t cb)
Set object instance create event callback.
int lwm2m_set_s8(const struct lwm2m_obj_path *path, int8_t value)
Set resource (instance) value (s8)
int lwm2m_engine_delete_obj_inst(const char *pathstr)
Delete an LwM2M object instance.
void(* lwm2m_ctx_event_cb_t)(struct lwm2m_ctx *ctx, enum lwm2m_rd_client_event event)
Asynchronous RD client event callback.
Definition: lwm2m.h:119
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_engine_get_s32(const char *pathstr, int32_t *value)
Get resource (instance) value (s32)
int lwm2m_engine_update_observer_min_period(struct lwm2m_ctx *client_ctx, const char *pathstr, uint32_t period_s)
Change an observer's pmin value.
int lwm2m_get_objlnk(const struct lwm2m_obj_path *path, struct lwm2m_objlnk *buf)
Get resource (instance) value (ObjLnk)
int lwm2m_engine_set_s32(const char *pathstr, int32_t value)
Set resource (instance) value (s32)
int lwm2m_engine_set_u16(const char *pathstr, uint16_t value)
Set resource (instance) value (u16)
int lwm2m_engine_get_u8(const char *pathstr, uint8_t *value)
Get resource (instance) value (u8)
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_engine_send(struct lwm2m_ctx *ctx, char const *path_list[], uint8_t path_list_size, bool confirmation_request)
 LwM2M SEND operation to given path list
int lwm2m_engine_register_post_write_callback(const char *pathstr, lwm2m_engine_set_data_cb_t cb)
Set resource (instance) post-write callback.
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:258
int lwm2m_engine_get_bool(const char *pathstr, bool *value)
Get resource (instance) value (bool)
int lwm2m_engine_get_res_data(const char *pathstr, void **data_ptr, uint16_t *data_len, uint8_t *data_flags)
Get data buffer for a resource.
int lwm2m_engine_create_res_inst(const char *pathstr)
Create a resource instance.
int lwm2m_engine_set_res_buf(const char *pathstr, void *buffer_ptr, uint16_t buffer_len, uint16_t data_len, uint8_t data_flags)
Set data buffer for a resource.
int lwm2m_engine_get_u16(const char *pathstr, uint16_t *value)
Get resource (instance) value (u16)
int lwm2m_engine_register_delete_callback(uint16_t obj_id, lwm2m_engine_user_cb_t cb)
Set object instance delete event callback.
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_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_engine_get_s8(const char *pathstr, int8_t *value)
Get resource (instance) value (s8)
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)
int lwm2m_engine_get_s64(const char *pathstr, int64_t *value)
Get resource (instance) value (s64)
int lwm2m_engine_set_u64(const char *pathstr, uint64_t value)
Set resource (instance) value (u64)
int lwm2m_get_u64(const struct lwm2m_obj_path *path, uint64_t *value)
Get resource (instance) value (u64)
int lwm2m_engine_set_res_data_len(const char *pathstr, uint16_t data_len)
Update data size for a resource.
struct lwm2m_ctx * lwm2m_rd_client_ctx(void)
&#160;Returns LwM2M&#160;client context
int lwm2m_set_u64(const struct lwm2m_obj_path *path, uint64_t value)
Set resource (instance) value (u64)
int lwm2m_engine_set_bool(const char *pathstr, bool value)
Set resource (instance) value (bool)
int lwm2m_engine_get_u64(const char *pathstr, uint64_t *value)
Get resource (instance) value (u64)
void lwm2m_acknowledge(struct lwm2m_ctx *client_ctx)
Acknowledge the currently processed request with an empty ACK.
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)
int lwm2m_engine_get_s16(const char *pathstr, int16_t *value)
Get resource (instance) value (s16)
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.
int lwm2m_engine_register_create_callback(uint16_t obj_id, lwm2m_engine_user_cb_t cb)
Set object instance create event callback.
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_engine_user_cb_t)(uint16_t obj_inst_id)
Asynchronous event notification callback.
Definition: lwm2m.h:310
int lwm2m_engine_set_res_data(const char *pathstr, void *data_ptr, uint16_t data_len, uint8_t data_flags)
Set data buffer for a resource.
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_engine_delete_res_inst(const char *pathstr)
Delete a resource instance.
int lwm2m_engine_register_validate_callback(const char *pathstr, lwm2m_engine_set_data_cb_t cb)
Set resource (instance) validation callback.
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.
int lwm2m_enable_cache(struct lwm2m_obj_path *path, struct lwm2m_time_series_elem *data_cache, size_t cache_len)
 Enable data cache for a resource.
lwm2m_observe_event
Observe callback events.
Definition: lwm2m.h:90
lwm2m_rd_client_event
LwM2M RD client events.
Definition: lwm2m.h:1972
int lwm2m_engine_update_observer_max_period(struct lwm2m_ctx *client_ctx, const char *pathstr, uint32_t period_s)
Change an observer's pmax value.
int lwm2m_delete_res_inst(const struct lwm2m_obj_path *path)
Delete a resource instance.
int lwm2m_engine_get_string(const char *pathstr, void *str, uint16_t strlen)
Get resource (instance) value (string)
int lwm2m_engine_register_exec_callback(const char *pathstr, lwm2m_engine_execute_cb_t cb)
Set resource execute event callback.
int lwm2m_engine_set_time(const char *pathstr, time_t value)
Set resource (instance) value (Time)
int lwm2m_get_string(const struct lwm2m_obj_path *path, void *str, uint16_t strlen)
Get resource (instance) value (string)
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.
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:107
int lwm2m_engine_set_objlnk(const char *pathstr, const struct lwm2m_objlnk *value)
Set resource (instance) value (ObjLnk)
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_get_opaque(const struct lwm2m_obj_path *path, void *buf, uint16_t buflen)
Get resource (instance) value (opaque buffer)
int lwm2m_send(struct lwm2m_ctx *ctx, const struct lwm2m_obj_path path_list[], uint8_t path_list_size, bool confirmation_request)
 LwM2M SEND operation to given path list
int lwm2m_engine_set_s8(const char *pathstr, int8_t value)
Set resource (instance) value (s8)
void(* lwm2m_socket_fault_cb_t)(int error)
Definition: lwm2m.h:77
int lwm2m_engine_set_float(const char *pathstr, const double *value)
Set resource (instance) value (double)
int lwm2m_engine_enable_cache(char const *resource_path, struct lwm2m_time_series_elem *data_cache, size_t cache_len)
 Enable data cache for a resource.
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:328
int lwm2m_register_read_callback(const struct lwm2m_obj_path *path, lwm2m_engine_get_data_cb_t cb)
Set resource (instance) read callback.
int lwm2m_engine_get_objlnk(const char *pathstr, struct lwm2m_objlnk *buf)
Get resource (instance) value (ObjLnk)
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)
int lwm2m_engine_get_u32(const char *pathstr, uint32_t *value)
Get resource (instance) value (u32)
int lwm2m_engine_get_res_buf(const char *pathstr, void **buffer_ptr, uint16_t *buffer_len, uint16_t *data_len, uint8_t *data_flags)
Get data buffer for a resource.
@ LWM2M_OBSERVE_EVENT_OBSERVER_ADDED
Definition: lwm2m.h:91
@ LWM2M_OBSERVE_EVENT_NOTIFY_TIMEOUT
Definition: lwm2m.h:94
@ LWM2M_OBSERVE_EVENT_NOTIFY_ACK
Definition: lwm2m.h:93
@ LWM2M_OBSERVE_EVENT_OBSERVER_REMOVED
Definition: lwm2m.h:92
@ LWM2M_RD_CLIENT_EVENT_DEREGISTER_FAILURE
Definition: lwm2m.h:1981
@ LWM2M_RD_CLIENT_EVENT_QUEUE_MODE_RX_OFF
Definition: lwm2m.h:1983
@ LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_TRANSFER_COMPLETE
Definition: lwm2m.h:1976
@ LWM2M_RD_CLIENT_EVENT_REGISTRATION_COMPLETE
Definition: lwm2m.h:1978
@ LWM2M_RD_CLIENT_EVENT_REG_TIMEOUT
Definition: lwm2m.h:1979
@ LWM2M_RD_CLIENT_EVENT_REG_UPDATE_COMPLETE
Definition: lwm2m.h:1980
@ LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_REG_FAILURE
Definition: lwm2m.h:1974
@ LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_REG_COMPLETE
Definition: lwm2m.h:1975
@ LWM2M_RD_CLIENT_EVENT_DISCONNECT
Definition: lwm2m.h:1982
@ LWM2M_RD_CLIENT_EVENT_NONE
Definition: lwm2m.h:1973
@ LWM2M_RD_CLIENT_EVENT_REGISTRATION_FAILURE
Definition: lwm2m.h:1977
@ LWM2M_RD_CLIENT_EVENT_ENGINE_SUSPENDED
Definition: lwm2m.h:1984
@ LWM2M_RD_CLIENT_EVENT_NETWORK_ERROR
Definition: lwm2m.h:1985
void(* k_work_handler_t)(struct k_work *work)
The signature for a work item handler function.
Definition: kernel.h:3115
Public kernel APIs.
flags
Definition: parser.h:96
struct _slist sys_slist_t
Definition: slist.h:40
__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
size_t strlen(const char *s)
Represents a request awaiting for an acknowledgment (ACK).
Definition: coap.h:270
Represents the handler for the reply of a request, it is also used when observing resources.
Definition: coap.h:284
LwM2M context structure to maintain information for a single LwM2M connection.
Definition: lwm2m.h:127
lwm2m_socket_fault_cb_t fault_cb
Definition: lwm2m.h:202
sys_slist_t observer
Definition: lwm2m.h:138
lwm2m_observe_cb_t observe_cb
Definition: lwm2m.h:207
struct sockaddr remote_addr
Definition: lwm2m.h:129
uint8_t validate_buf[CONFIG_LWM2M_ENGINE_VALIDATION_BUFFER_SIZE]
Definition: lwm2m.h:215
int srv_obj_inst
Definition: lwm2m.h:189
void * processed_req
Definition: lwm2m.h:145
bool bootstrap_mode
Definition: lwm2m.h:194
lwm2m_ctx_event_cb_t event_cb
Definition: lwm2m.h:209
int sec_obj_inst
Definition: lwm2m.h:186
struct coap_reply replies[CONFIG_LWM2M_ENGINE_MAX_REPLIES+1]
Definition: lwm2m.h:133
struct coap_pending pendings[CONFIG_LWM2M_ENGINE_MAX_PENDING+1]
Definition: lwm2m.h:132
bool use_dtls
Definition: lwm2m.h:170
sys_slist_t pending_sends
Definition: lwm2m.h:134
int sock_fd
Definition: lwm2m.h:197
bool connection_suspended
Definition: lwm2m.h:176
Definition: lwm2m.h:79
uint16_t obj_inst_id
Definition: lwm2m.h:81
uint16_t res_inst_id
Definition: lwm2m.h:83
uint8_t level
Definition: lwm2m.h:84
uint16_t res_id
Definition: lwm2m.h:82
uint16_t obj_id
Definition: lwm2m.h:80
LWM2M ObjLnk resource type structure.
Definition: lwm2m.h:605
uint16_t obj_id
Definition: lwm2m.h:606
uint16_t obj_inst
Definition: lwm2m.h:607
Definition: lwm2m.h:221
int64_t i64
Definition: lwm2m.h:232
int16_t i16
Definition: lwm2m.h:230
double f
Definition: lwm2m.h:234
uint32_t u32
Definition: lwm2m.h:227
int32_t i32
Definition: lwm2m.h:231
int8_t i8
Definition: lwm2m.h:229
uint8_t u8
Definition: lwm2m.h:225
time_t t
Definition: lwm2m.h:223
uint16_t u16
Definition: lwm2m.h:226
uint64_t u64
Definition: lwm2m.h:228
bool b
Definition: lwm2m.h:235
time_t time
Definition: lwm2m.h:233
Definition: net_ip.h:344
static fdata_t data[2]
Definition: test_fifo_contexts.c:15
static const intptr_t user_data[5]
Definition: main.c:588