Zephyr Project API  3.4.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_VOLTAGE_SENSOR_ID 3316
68#define IPSO_OBJECT_CURRENT_SENSOR_ID 3317
69#define IPSO_OBJECT_PRESSURE_ID 3323
70#define IPSO_OBJECT_BUZZER_ID 3338
71#define IPSO_OBJECT_TIMER_ID 3340
72#define IPSO_OBJECT_ONOFF_SWITCH_ID 3342
73#define IPSO_OBJECT_PUSH_BUTTON_ID 3347
74#define UCIFI_OBJECT_BATTERY_ID 3411
75#define IPSO_OBJECT_FILLING_LEVEL_SENSOR_ID 3435
76/* clang-format on */
77
78typedef void (*lwm2m_socket_fault_cb_t)(int error);
79
85 uint8_t level; /* 0/1/2/3/4 (4 = resource instance) */
86};
87
96};
97
108typedef void (*lwm2m_observe_cb_t)(enum lwm2m_observe_event event, struct lwm2m_obj_path *path,
109 void *user_data);
110
111
112struct lwm2m_ctx;
120typedef void (*lwm2m_ctx_event_cb_t)(struct lwm2m_ctx *ctx,
121 enum lwm2m_rd_client_event event);
122
123
128struct lwm2m_ctx {
131
133 struct coap_pending pendings[CONFIG_LWM2M_ENGINE_MAX_PENDING + 1];
134 struct coap_reply replies[CONFIG_LWM2M_ENGINE_MAX_REPLIES + 1];
136#if defined(CONFIG_LWM2M_QUEUE_MODE_ENABLED)
137 sys_slist_t queued_messages;
138#endif
140
147
148#if defined(CONFIG_LWM2M_DTLS_SUPPORT)
152 int tls_tag;
153
157 char *desthostname;
158 uint16_t desthostnamelen;
159 bool hostname_verify;
160
164 int (*load_credentials)(struct lwm2m_ctx *client_ctx);
165#endif
170 int (*set_socketoptions)(struct lwm2m_ctx *client_ctx);
171
178
184
185#if defined(CONFIG_LWM2M_QUEUE_MODE_ENABLED)
190 bool buffer_client_messages;
191#endif
194
197
202
205
210
215
217
222 uint8_t validate_buf[CONFIG_LWM2M_ENGINE_VALIDATION_BUFFER_SIZE];
223};
224
229 /* Cached data Unix timestamp */
231 union {
241 double f;
242 bool b;
243 };
244};
245
265typedef void *(*lwm2m_engine_get_data_cb_t)(uint16_t obj_inst_id,
266 uint16_t res_id,
267 uint16_t res_inst_id,
268 size_t *data_len);
269
296typedef int (*lwm2m_engine_set_data_cb_t)(uint16_t obj_inst_id,
297 uint16_t res_id, uint16_t res_inst_id,
298 uint8_t *data, uint16_t data_len,
299 bool last_block, size_t total_size);
300
317typedef int (*lwm2m_engine_user_cb_t)(uint16_t obj_inst_id);
318
335typedef int (*lwm2m_engine_execute_cb_t)(uint16_t obj_inst_id,
336 uint8_t *args, uint16_t args_len);
337
342#define LWM2M_DEVICE_PWR_SRC_TYPE_DC_POWER 0
343#define LWM2M_DEVICE_PWR_SRC_TYPE_BAT_INT 1
344#define LWM2M_DEVICE_PWR_SRC_TYPE_BAT_EXT 2
345#define LWM2M_DEVICE_PWR_SRC_TYPE_UNUSED 3
346#define LWM2M_DEVICE_PWR_SRC_TYPE_PWR_OVER_ETH 4
347#define LWM2M_DEVICE_PWR_SRC_TYPE_USB 5
348#define LWM2M_DEVICE_PWR_SRC_TYPE_AC_POWER 6
349#define LWM2M_DEVICE_PWR_SRC_TYPE_SOLAR 7
350#define LWM2M_DEVICE_PWR_SRC_TYPE_MAX 8
351
357#define LWM2M_DEVICE_ERROR_NONE 0
358#define LWM2M_DEVICE_ERROR_LOW_POWER 1
359#define LWM2M_DEVICE_ERROR_EXT_POWER_SUPPLY_OFF 2
360#define LWM2M_DEVICE_ERROR_GPS_FAILURE 3
361#define LWM2M_DEVICE_ERROR_LOW_SIGNAL_STRENGTH 4
362#define LWM2M_DEVICE_ERROR_OUT_OF_MEMORY 5
363#define LWM2M_DEVICE_ERROR_SMS_FAILURE 6
364#define LWM2M_DEVICE_ERROR_NETWORK_FAILURE 7
365#define LWM2M_DEVICE_ERROR_PERIPHERAL_FAILURE 8
366
373#define LWM2M_DEVICE_BATTERY_STATUS_NORMAL 0
374#define LWM2M_DEVICE_BATTERY_STATUS_CHARGING 1
375#define LWM2M_DEVICE_BATTERY_STATUS_CHARGE_COMP 2
376#define LWM2M_DEVICE_BATTERY_STATUS_DAMAGED 3
377#define LWM2M_DEVICE_BATTERY_STATUS_LOW 4
378#define LWM2M_DEVICE_BATTERY_STATUS_NOT_INST 5
379#define LWM2M_DEVICE_BATTERY_STATUS_UNKNOWN 6
380
389
390
397#define STATE_IDLE 0
398#define STATE_DOWNLOADING 1
399#define STATE_DOWNLOADED 2
400#define STATE_UPDATING 3
401
408#define RESULT_DEFAULT 0
409#define RESULT_SUCCESS 1
410#define RESULT_NO_STORAGE 2
411#define RESULT_OUT_OF_MEM 3
412#define RESULT_CONNECTION_LOST 4
413#define RESULT_INTEGRITY_FAILED 5
414#define RESULT_UNSUP_FW 6
415#define RESULT_INVALID_URI 7
416#define RESULT_UPDATE_FAILED 8
417#define RESULT_UNSUP_PROTO 9
418
419#if defined(CONFIG_LWM2M_FIRMWARE_UPDATE_OBJ_SUPPORT)
428void lwm2m_firmware_set_write_cb(lwm2m_engine_set_data_cb_t cb);
429
435lwm2m_engine_set_data_cb_t lwm2m_firmware_get_write_cb(void);
436
446void lwm2m_firmware_set_write_cb_inst(uint16_t obj_inst_id, lwm2m_engine_set_data_cb_t cb);
447
454lwm2m_engine_set_data_cb_t lwm2m_firmware_get_write_cb_inst(uint16_t obj_inst_id);
455
464void lwm2m_firmware_set_cancel_cb(lwm2m_engine_user_cb_t cb);
465
471lwm2m_engine_user_cb_t lwm2m_firmware_get_cancel_cb(void);
472
482void lwm2m_firmware_set_cancel_cb_inst(uint16_t obj_inst_id, lwm2m_engine_user_cb_t cb);
483
490lwm2m_engine_user_cb_t lwm2m_firmware_get_cancel_cb_inst(uint16_t obj_inst_id);
491
492#if defined(CONFIG_LWM2M_FIRMWARE_UPDATE_PULL_SUPPORT)
501void lwm2m_firmware_set_update_cb(lwm2m_engine_execute_cb_t cb);
502
508lwm2m_engine_execute_cb_t lwm2m_firmware_get_update_cb(void);
509
519void lwm2m_firmware_set_update_cb_inst(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb);
520
527lwm2m_engine_execute_cb_t lwm2m_firmware_get_update_cb_inst(uint16_t obj_inst_id);
528#endif
529#endif
530
531
532#if defined(CONFIG_LWM2M_SWMGMT_OBJ_SUPPORT)
533
545int lwm2m_swmgmt_set_activate_cb(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb);
546
558int lwm2m_swmgmt_set_deactivate_cb(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb);
559
571int lwm2m_swmgmt_set_install_package_cb(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb);
572
584int lwm2m_swmgmt_set_delete_package_cb(uint16_t obj_inst_id, lwm2m_engine_execute_cb_t cb);
585
597int lwm2m_swmgmt_set_read_package_version_cb(uint16_t obj_inst_id, lwm2m_engine_get_data_cb_t cb);
598
610int lwm2m_swmgmt_set_write_package_cb(uint16_t obj_inst_id, lwm2m_engine_set_data_cb_t cb);
611
622int lwm2m_swmgmt_install_completed(uint16_t obj_inst_id, int error_code);
623
624#endif
625
626#if defined(CONFIG_LWM2M_EVENT_LOG_OBJ_SUPPORT)
627
636void lwm2m_event_log_set_read_log_data_cb(lwm2m_engine_get_data_cb_t cb);
637
638#endif
639
643#define LWM2M_OBJLNK_MAX_ID USHRT_MAX
644
651};
652
669__deprecated
670int lwm2m_engine_update_observer_min_period(struct lwm2m_ctx *client_ctx, const char *pathstr,
671 uint32_t period_s);
672
688 const struct lwm2m_obj_path *path, uint32_t period_s);
689
706__deprecated
707int lwm2m_engine_update_observer_max_period(struct lwm2m_ctx *client_ctx, const char *pathstr,
708 uint32_t period_s);
709
725 const struct lwm2m_obj_path *path, uint32_t period_s);
726
740__deprecated
741int lwm2m_engine_create_obj_inst(const char *pathstr);
742
755
767__deprecated
768int lwm2m_engine_delete_obj_inst(const char *pathstr);
769
780
789
795
807__deprecated
808int lwm2m_engine_set_opaque(const char *pathstr, const char *data_ptr, uint16_t data_len);
809
819int lwm2m_set_opaque(const struct lwm2m_obj_path *path, const char *data_ptr, uint16_t data_len);
820
831__deprecated
832int lwm2m_engine_set_string(const char *pathstr, const char *data_ptr);
833
842int lwm2m_set_string(const struct lwm2m_obj_path *path, const char *data_ptr);
843
854__deprecated
855int lwm2m_engine_set_u8(const char *pathstr, uint8_t value);
856
865int lwm2m_set_u8(const struct lwm2m_obj_path *path, uint8_t value);
866
877__deprecated
878int lwm2m_engine_set_u16(const char *pathstr, uint16_t value);
879
888int lwm2m_set_u16(const struct lwm2m_obj_path *path, uint16_t value);
889
900__deprecated
901int lwm2m_engine_set_u32(const char *pathstr, uint32_t value);
902
911int lwm2m_set_u32(const struct lwm2m_obj_path *path, uint32_t value);
912
923__deprecated
924int lwm2m_engine_set_u64(const char *pathstr, uint64_t value);
925
934int lwm2m_set_u64(const struct lwm2m_obj_path *path, uint64_t value);
935
946__deprecated
947int lwm2m_engine_set_s8(const char *pathstr, int8_t value);
948
957int lwm2m_set_s8(const struct lwm2m_obj_path *path, int8_t value);
958
969__deprecated
970int lwm2m_engine_set_s16(const char *pathstr, int16_t value);
971
980int lwm2m_set_s16(const struct lwm2m_obj_path *path, int16_t value);
981
992__deprecated
993int lwm2m_engine_set_s32(const char *pathstr, int32_t value);
994
1003int lwm2m_set_s32(const struct lwm2m_obj_path *path, int32_t value);
1004
1015__deprecated
1016int lwm2m_engine_set_s64(const char *pathstr, int64_t value);
1017
1026int lwm2m_set_s64(const struct lwm2m_obj_path *path, int64_t value);
1027
1038__deprecated
1039int lwm2m_engine_set_bool(const char *pathstr, bool value);
1040
1049int lwm2m_set_bool(const struct lwm2m_obj_path *path, bool value);
1050
1061__deprecated
1062int lwm2m_engine_set_float(const char *pathstr, const double *value);
1063
1072int lwm2m_set_f64(const struct lwm2m_obj_path *path, const double value);
1073
1084__deprecated
1085int lwm2m_engine_set_objlnk(const char *pathstr, const struct lwm2m_objlnk *value);
1086
1095int lwm2m_set_objlnk(const struct lwm2m_obj_path *path, const struct lwm2m_objlnk *value);
1096
1107__deprecated
1108int lwm2m_engine_set_time(const char *pathstr, time_t value);
1109
1118int lwm2m_set_time(const struct lwm2m_obj_path *path, time_t value);
1119
1131__deprecated
1132int lwm2m_engine_get_opaque(const char *pathstr, void *buf, uint16_t buflen);
1133
1143int lwm2m_get_opaque(const struct lwm2m_obj_path *path, void *buf, uint16_t buflen);
1144
1156__deprecated
1157int lwm2m_engine_get_string(const char *pathstr, void *str, uint16_t strlen);
1158
1168int lwm2m_get_string(const struct lwm2m_obj_path *path, void *str, uint16_t strlen);
1169
1180__deprecated
1181int lwm2m_engine_get_u8(const char *pathstr, uint8_t *value);
1182
1191int lwm2m_get_u8(const struct lwm2m_obj_path *path, uint8_t *value);
1192
1203__deprecated
1204int lwm2m_engine_get_u16(const char *pathstr, uint16_t *value);
1205
1214int lwm2m_get_u16(const struct lwm2m_obj_path *path, uint16_t *value);
1215
1226__deprecated
1227int lwm2m_engine_get_u32(const char *pathstr, uint32_t *value);
1228
1237int lwm2m_get_u32(const struct lwm2m_obj_path *path, uint32_t *value);
1238
1249__deprecated
1250int lwm2m_engine_get_u64(const char *pathstr, uint64_t *value);
1251
1260int lwm2m_get_u64(const struct lwm2m_obj_path *path, uint64_t *value);
1261
1272__deprecated
1273int lwm2m_engine_get_s8(const char *pathstr, int8_t *value);
1274
1283int lwm2m_get_s8(const struct lwm2m_obj_path *path, int8_t *value);
1284
1295__deprecated
1296int lwm2m_engine_get_s16(const char *pathstr, int16_t *value);
1297
1306int lwm2m_get_s16(const struct lwm2m_obj_path *path, int16_t *value);
1307
1318__deprecated
1319int lwm2m_engine_get_s32(const char *pathstr, int32_t *value);
1320
1329int lwm2m_get_s32(const struct lwm2m_obj_path *path, int32_t *value);
1330
1341__deprecated
1342int lwm2m_engine_get_s64(const char *pathstr, int64_t *value);
1343
1352int lwm2m_get_s64(const struct lwm2m_obj_path *path, int64_t *value);
1353
1364__deprecated
1365int lwm2m_engine_get_bool(const char *pathstr, bool *value);
1366
1375int lwm2m_get_bool(const struct lwm2m_obj_path *path, bool *value);
1376
1387__deprecated
1388int lwm2m_engine_get_float(const char *pathstr, double *buf);
1389
1398int lwm2m_get_f64(const struct lwm2m_obj_path *path, double *value);
1399
1410__deprecated
1411int lwm2m_engine_get_objlnk(const char *pathstr, struct lwm2m_objlnk *buf);
1412
1421int lwm2m_get_objlnk(const struct lwm2m_obj_path *path, struct lwm2m_objlnk *buf);
1422
1433__deprecated
1434int lwm2m_engine_get_time(const char *pathstr, time_t *buf);
1435
1444int lwm2m_get_time(const struct lwm2m_obj_path *path, time_t *buf);
1445
1466__deprecated
1469
1489
1504__deprecated
1507
1522
1545__deprecated
1548
1571
1588__deprecated
1591
1608
1621__deprecated
1624
1636
1649__deprecated
1652
1665
1678__deprecated
1681
1694
1698#define LWM2M_RES_DATA_READ_ONLY 0
1699
1703#define LWM2M_RES_DATA_FLAG_RO BIT(LWM2M_RES_DATA_READ_ONLY)
1704
1708#define LWM2M_HAS_RES_FLAG(res, f) ((res->data_flags & f) == f)
1709
1726__deprecated
1727int lwm2m_engine_set_res_buf(const char *pathstr, void *buffer_ptr, uint16_t buffer_len,
1728 uint16_t data_len, uint8_t data_flags);
1729
1744int lwm2m_set_res_buf(const struct lwm2m_obj_path *path, void *buffer_ptr, uint16_t buffer_len,
1745 uint16_t data_len, uint8_t data_flags);
1746
1763__deprecated
1764int lwm2m_engine_set_res_data(const char *pathstr, void *data_ptr, uint16_t data_len,
1765 uint8_t data_flags);
1766
1779__deprecated
1780int lwm2m_engine_set_res_data_len(const char *pathstr, uint16_t data_len);
1781
1792int lwm2m_set_res_data_len(const struct lwm2m_obj_path *path, uint16_t data_len);
1793
1815__deprecated
1816int lwm2m_engine_get_res_buf(const char *pathstr, void **buffer_ptr, uint16_t *buffer_len,
1817 uint16_t *data_len, uint8_t *data_flags);
1818
1838int lwm2m_get_res_buf(const struct lwm2m_obj_path *path, void **buffer_ptr, uint16_t *buffer_len,
1839 uint16_t *data_len, uint8_t *data_flags);
1840
1856__deprecated
1857int lwm2m_engine_get_res_data(const char *pathstr, void **data_ptr, uint16_t *data_len,
1858 uint8_t *data_flags);
1859
1873__deprecated
1874int lwm2m_engine_create_res_inst(const char *pathstr);
1875
1888
1900__deprecated
1901int lwm2m_engine_delete_res_inst(const char *pathstr);
1902
1913
1928
1940
1954__deprecated
1955bool lwm2m_engine_path_is_observed(const char *pathstr);
1956
1969
1981int lwm2m_engine_stop(struct lwm2m_ctx *client_ctx);
1982
1994int lwm2m_engine_start(struct lwm2m_ctx *client_ctx);
1995
2007void lwm2m_acknowledge(struct lwm2m_ctx *client_ctx);
2008
2030};
2031
2035#define LWM2M_RD_CLIENT_EVENT_REG_UPDATE_FAILURE \
2036 LWM2M_RD_CLIENT_EVENT_REG_TIMEOUT __DEPRECATED_MACRO
2037
2038/*
2039 * LwM2M RD client flags, used to configure LwM2M session.
2040 */
2041
2045#define LWM2M_RD_CLIENT_FLAG_BOOTSTRAP BIT(0)
2046
2068int lwm2m_rd_client_start(struct lwm2m_ctx *client_ctx, const char *ep_name,
2070 lwm2m_observe_cb_t observe_cb);
2071
2087int lwm2m_rd_client_stop(struct lwm2m_ctx *client_ctx,
2088 lwm2m_ctx_event_cb_t event_cb, bool deregister);
2089
2100
2112
2117
2121#define LWM2M_MAX_PATH_STR_SIZE sizeof("/65535/65535/65535/65535")
2122
2131char *lwm2m_path_log_buf(char *buf, struct lwm2m_obj_path *path);
2132
2143};
2144
2149typedef void (*lwm2m_send_cb_t)(enum lwm2m_send_status status);
2150
2164__deprecated
2165int lwm2m_engine_send(struct lwm2m_ctx *ctx, char const *path_list[], uint8_t path_list_size,
2166 bool confirmation_request);
2167
2181__deprecated
2182int lwm2m_send(struct lwm2m_ctx *ctx, const struct lwm2m_obj_path path_list[],
2183 uint8_t path_list_size, bool confirmation_request);
2184
2196int lwm2m_send_cb(struct lwm2m_ctx *ctx, const struct lwm2m_obj_path path_list[],
2197 uint8_t path_list_size, lwm2m_send_cb_t reply_cb);
2198
2206
2222__deprecated
2223int lwm2m_engine_enable_cache(char const *resource_path, struct lwm2m_time_series_elem *data_cache,
2224 size_t cache_len);
2225
2239int lwm2m_enable_cache(const struct lwm2m_obj_path *path, struct lwm2m_time_series_elem *data_cache,
2240 size_t cache_len);
2241
2242#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_send_cb(struct lwm2m_ctx *ctx, const struct lwm2m_obj_path path_list[], uint8_t path_list_size, lwm2m_send_cb_t reply_cb)
 LwM2M SEND operation to given path list asynchronously with confirmation callback
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:296
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)
lwm2m_send_status
LwM2M send status.
Definition: lwm2m.h:2139
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:120
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:265
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_enable_cache(const struct lwm2m_obj_path *path, struct lwm2m_time_series_elem *data_cache, size_t cache_len)
 Enable data cache for a resource.
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)
void(* lwm2m_send_cb_t)(enum lwm2m_send_status status)
Callback returning send status.
Definition: lwm2m.h:2149
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:317
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.
lwm2m_observe_event
Observe callback events.
Definition: lwm2m.h:91
lwm2m_rd_client_event
LwM2M RD client events.
Definition: lwm2m.h:2015
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:108
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:78
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:335
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_SEND_STATUS_SUCCESS
Definition: lwm2m.h:2140
@ LWM2M_SEND_STATUS_FAILURE
Definition: lwm2m.h:2141
@ LWM2M_SEND_STATUS_TIMEOUT
Definition: lwm2m.h:2142
@ LWM2M_OBSERVE_EVENT_OBSERVER_ADDED
Definition: lwm2m.h:92
@ LWM2M_OBSERVE_EVENT_NOTIFY_TIMEOUT
Definition: lwm2m.h:95
@ LWM2M_OBSERVE_EVENT_NOTIFY_ACK
Definition: lwm2m.h:94
@ LWM2M_OBSERVE_EVENT_OBSERVER_REMOVED
Definition: lwm2m.h:93
@ LWM2M_RD_CLIENT_EVENT_DEREGISTER_FAILURE
Definition: lwm2m.h:2024
@ LWM2M_RD_CLIENT_EVENT_QUEUE_MODE_RX_OFF
Definition: lwm2m.h:2026
@ LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_TRANSFER_COMPLETE
Definition: lwm2m.h:2019
@ LWM2M_RD_CLIENT_EVENT_REGISTRATION_COMPLETE
Definition: lwm2m.h:2021
@ LWM2M_RD_CLIENT_EVENT_REG_TIMEOUT
Definition: lwm2m.h:2022
@ LWM2M_RD_CLIENT_EVENT_REG_UPDATE_COMPLETE
Definition: lwm2m.h:2023
@ LWM2M_RD_CLIENT_EVENT_REG_UPDATE
Definition: lwm2m.h:2029
@ LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_REG_FAILURE
Definition: lwm2m.h:2017
@ LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_REG_COMPLETE
Definition: lwm2m.h:2018
@ LWM2M_RD_CLIENT_EVENT_DISCONNECT
Definition: lwm2m.h:2025
@ LWM2M_RD_CLIENT_EVENT_NONE
Definition: lwm2m.h:2016
@ LWM2M_RD_CLIENT_EVENT_REGISTRATION_FAILURE
Definition: lwm2m.h:2020
@ LWM2M_RD_CLIENT_EVENT_ENGINE_SUSPENDED
Definition: lwm2m.h:2027
@ LWM2M_RD_CLIENT_EVENT_NETWORK_ERROR
Definition: lwm2m.h:2028
void(* k_work_handler_t)(struct k_work *work)
The signature for a work item handler function.
Definition: kernel.h:3173
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:128
lwm2m_socket_fault_cb_t fault_cb
Definition: lwm2m.h:209
sys_slist_t observer
Definition: lwm2m.h:139
lwm2m_observe_cb_t observe_cb
Definition: lwm2m.h:214
struct sockaddr remote_addr
Definition: lwm2m.h:130
uint8_t validate_buf[CONFIG_LWM2M_ENGINE_VALIDATION_BUFFER_SIZE]
Definition: lwm2m.h:222
int(* set_socketoptions)(struct lwm2m_ctx *client_ctx)
Definition: lwm2m.h:170
int srv_obj_inst
Definition: lwm2m.h:196
void * processed_req
Definition: lwm2m.h:146
bool bootstrap_mode
Definition: lwm2m.h:201
lwm2m_ctx_event_cb_t event_cb
Definition: lwm2m.h:216
int sec_obj_inst
Definition: lwm2m.h:193
struct coap_reply replies[CONFIG_LWM2M_ENGINE_MAX_REPLIES+1]
Definition: lwm2m.h:134
struct coap_pending pendings[CONFIG_LWM2M_ENGINE_MAX_PENDING+1]
Definition: lwm2m.h:133
bool use_dtls
Definition: lwm2m.h:177
sys_slist_t pending_sends
Definition: lwm2m.h:135
int sock_fd
Definition: lwm2m.h:204
bool connection_suspended
Definition: lwm2m.h:183
Definition: lwm2m.h:80
uint16_t obj_inst_id
Definition: lwm2m.h:82
uint16_t res_inst_id
Definition: lwm2m.h:84
uint8_t level
Definition: lwm2m.h:85
uint16_t res_id
Definition: lwm2m.h:83
uint16_t obj_id
Definition: lwm2m.h:81
LWM2M ObjLnk resource type structure.
Definition: lwm2m.h:648
uint16_t obj_id
Definition: lwm2m.h:649
uint16_t obj_inst
Definition: lwm2m.h:650
Definition: lwm2m.h:228
int64_t i64
Definition: lwm2m.h:239
int16_t i16
Definition: lwm2m.h:237
double f
Definition: lwm2m.h:241
uint32_t u32
Definition: lwm2m.h:234
int32_t i32
Definition: lwm2m.h:238
int8_t i8
Definition: lwm2m.h:236
uint8_t u8
Definition: lwm2m.h:232
time_t t
Definition: lwm2m.h:230
uint16_t u16
Definition: lwm2m.h:233
uint64_t u64
Definition: lwm2m.h:235
bool b
Definition: lwm2m.h:242
time_t time
Definition: lwm2m.h:240
Definition: net_ip.h:347
static fdata_t data[2]
Definition: test_fifo_contexts.c:15
static const intptr_t user_data[5]
Definition: main.c:588