anjay
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
dm.h
Go to the documentation of this file.
1/*
2 * Copyright 2017-2025 AVSystem <avsystem@avsystem.com>
3 * AVSystem Anjay LwM2M SDK
4 * All rights reserved.
5 *
6 * Licensed under AVSystem Anjay LwM2M Client SDK - Non-Commercial License.
7 * See the attached LICENSE file for details.
8 */
9
10#ifndef ANJAY_INCLUDE_ANJAY_DM_H
11#define ANJAY_INCLUDE_ANJAY_DM_H
12
13#include <math.h>
14#include <stdint.h>
15
16#include <anjay/io.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22#define ANJAY_DM_OID_SECURITY 0
23#define ANJAY_DM_OID_SERVER 1
24#define ANJAY_DM_OID_ACCESS_CONTROL 2
25#define ANJAY_DM_OID_DEVICE 3
26#define ANJAY_DM_OID_FIRMWARE_UPDATE 5
27#ifdef ANJAY_WITH_COAP_OSCORE
28# define ANJAY_DM_OID_OSCORE 21
29#endif // ANJAY_WITH_COAP_OSCORE
30#ifdef ANJAY_WITH_LWM2M_GATEWAY
31# define ANJAY_DM_OID_LWM2M_GATEWAY 25
32#endif // ANJAY_WITH_LWM2M_GATEWAY
33
35
42
44typedef struct {
46 int32_t min_period;
48 int32_t max_period;
53#ifdef ANJAY_WITH_CON_ATTR
56#endif // ANJAY_WITH_CON_ATTR
58
70
73#define ANJAY_ATTRIB_INTEGER_NONE (-1)
74
76#define ANJAY_ATTRIB_PERIOD_NONE ANJAY_ATTRIB_INTEGER_NONE
77
80#define ANJAY_ATTRIB_DOUBLE_NONE (NAN)
81
83#define ANJAY_ATTRIB_VALUE_NONE ANJAY_ATTRIB_DOUBLE_NONE
84
88
92
110 anjay_t *anjay,
111 const anjay_dm_object_def_t *const *obj_ptr,
112 anjay_ssid_t ssid,
114
132 anjay_t *anjay,
133 const anjay_dm_object_def_t *const *obj_ptr,
134 anjay_ssid_t ssid,
135 const anjay_dm_oi_attributes_t *attrs);
136
168typedef int
170 const anjay_dm_object_def_t *const *obj_ptr,
172
180 const anjay_dm_object_def_t *const *obj_ptr,
182
202typedef int
204 const anjay_dm_object_def_t *const *obj_ptr,
205 anjay_iid_t iid);
206
222typedef int
224 const anjay_dm_object_def_t *const *obj_ptr,
225 anjay_iid_t iid);
226
245typedef int
247 const anjay_dm_object_def_t *const *obj_ptr,
248 anjay_iid_t iid);
249
268 anjay_t *anjay,
269 const anjay_dm_object_def_t *const *obj_ptr,
270 anjay_iid_t iid,
271 anjay_ssid_t ssid,
273
292 anjay_t *anjay,
293 const anjay_dm_object_def_t *const *obj_ptr,
294 anjay_iid_t iid,
295 anjay_ssid_t ssid,
296 const anjay_dm_oi_attributes_t *attrs);
297
327typedef int
329 const anjay_dm_object_def_t *const *obj_ptr,
330 anjay_iid_t iid,
332
370typedef int
372 const anjay_dm_object_def_t *const *obj_ptr,
373 anjay_iid_t iid,
374 anjay_rid_t rid,
375 anjay_riid_t riid,
376 anjay_output_ctx_t *ctx);
377
405typedef int
407 const anjay_dm_object_def_t *const *obj_ptr,
408 anjay_iid_t iid,
409 anjay_rid_t rid,
410 anjay_riid_t riid,
411 anjay_input_ctx_t *ctx);
412
433typedef int
435 const anjay_dm_object_def_t *const *obj_ptr,
436 anjay_iid_t iid,
437 anjay_rid_t rid,
439
467typedef int
469 const anjay_dm_object_def_t *const *obj_ptr,
470 anjay_iid_t iid,
471 anjay_rid_t rid);
472
509typedef int
511 const anjay_dm_object_def_t *const *obj_ptr,
512 anjay_iid_t iid,
513 anjay_rid_t rid,
515
534typedef int
536 const anjay_dm_object_def_t *const *obj_ptr,
537 anjay_iid_t iid,
538 anjay_rid_t rid,
539 anjay_ssid_t ssid,
541
560typedef int
562 const anjay_dm_object_def_t *const *obj_ptr,
563 anjay_iid_t iid,
564 anjay_rid_t rid,
565 anjay_ssid_t ssid,
566 const anjay_dm_r_attributes_t *attrs);
567
588 anjay_t *anjay,
589 const anjay_dm_object_def_t *const *obj_ptr,
590 anjay_iid_t iid,
591 anjay_rid_t rid,
592 anjay_riid_t riid,
593 anjay_ssid_t ssid,
595
616 anjay_t *anjay,
617 const anjay_dm_object_def_t *const *obj_ptr,
618 anjay_iid_t iid,
619 anjay_rid_t rid,
620 anjay_riid_t riid,
621 anjay_ssid_t ssid,
622 const anjay_dm_r_attributes_t *attrs);
623
652typedef int
654 const anjay_dm_object_def_t *const *obj_ptr);
655
682typedef int
684 const anjay_dm_object_def_t *const *obj_ptr);
685
707typedef int
709 const anjay_dm_object_def_t *const *obj_ptr);
710
718 const anjay_dm_object_def_t *const *obj_ptr);
719
731typedef int
733 const anjay_dm_object_def_t *const *obj_ptr);
734
969
989
1014 anjay_oid_t oid,
1015 anjay_iid_t iid,
1016 anjay_rid_t rid);
1017
1035
1036#ifdef ANJAY_WITH_OBSERVATION_STATUS
1041# ifndef ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER
1042# define ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER 0
1043# endif // ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER
1044
1048typedef struct {
1058 int32_t min_period;
1066# if (ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER > 0)
1075# endif //(ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER > 0)
1077
1125 anjay_t *anjay, anjay_oid_t oid, anjay_iid_t iid, anjay_rid_t rid);
1126
1127#endif // ANJAY_WITH_OBSERVATION_STATUS
1128
1144 const anjay_dm_object_def_t *const *def_ptr);
1145
1167 const anjay_dm_object_def_t *const *def_ptr);
1168
1175bool anjay_binding_mode_valid(const char *binding_mode);
1176
1181typedef enum {
1182 ANJAY_SECURITY_PSK = 0, //< Pre-Shared Key mode
1183 ANJAY_SECURITY_RPK = 1, //< Raw Public Key mode
1184 ANJAY_SECURITY_CERTIFICATE = 2, //< Certificate mode
1185 ANJAY_SECURITY_NOSEC = 3, //< NoSec mode
1186 ANJAY_SECURITY_EST = 4 //< Certificate mode with EST
1188
1189#ifdef ANJAY_WITH_SMS
1194typedef enum {
1195 ANJAY_SMS_SECURITY_DTLS_PSK = 1, //< DTLS in PSK mode
1196 ANJAY_SMS_SECURITY_SECURE_PACKET = 2, //< Secure Packet Structure
1197 ANJAY_SMS_SECURITY_NOSEC = 3 //< NoSec mode
1199#endif // ANJAY_WITH_SMS
1200
1201#define ANJAY_ACCESS_MASK_READ (1U << 0)
1202#define ANJAY_ACCESS_MASK_WRITE (1U << 1)
1203#define ANJAY_ACCESS_MASK_EXECUTE (1U << 2)
1204#define ANJAY_ACCESS_MASK_DELETE (1U << 3)
1205#define ANJAY_ACCESS_MASK_CREATE (1U << 4)
1206// clang-format off
1207#define ANJAY_ACCESS_MASK_FULL \
1208 (ANJAY_ACCESS_MASK_READ \
1209 | ANJAY_ACCESS_MASK_WRITE \
1210 | ANJAY_ACCESS_MASK_DELETE \
1211 | ANJAY_ACCESS_MASK_EXECUTE \
1212 | ANJAY_ACCESS_MASK_CREATE)
1213// clang-format on
1214#define ANJAY_ACCESS_MASK_NONE 0
1215#define ANJAY_ACCESS_LIST_OWNER_BOOTSTRAP UINT16_MAX
1216
1217typedef uint16_t anjay_access_mask_t;
1218
1219#ifdef __cplusplus
1220} /* extern "C" */
1221#endif
1222
1223#endif /*ANJAY_INCLUDE_ANJAY_DM_H*/
#define ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER
Definition anjay_config.h:166
uint16_t anjay_oid_t
Definition core.h:1323
uint16_t anjay_rid_t
Definition core.h:1329
uint16_t anjay_iid_t
Definition core.h:1326
struct anjay_struct anjay_t
Definition core.h:49
uint16_t anjay_ssid_t
Definition core.h:35
uint16_t anjay_riid_t
Definition core.h:1332
int anjay_notify_instances_changed(anjay_t *anjay, anjay_oid_t oid)
anjay_sms_security_mode_t
Definition dm.h:1194
@ ANJAY_SMS_SECURITY_NOSEC
Definition dm.h:1197
@ ANJAY_SMS_SECURITY_DTLS_PSK
Definition dm.h:1195
@ ANJAY_SMS_SECURITY_SECURE_PACKET
Definition dm.h:1196
int anjay_notify_changed(anjay_t *anjay, anjay_oid_t oid, anjay_iid_t iid, anjay_rid_t rid)
int anjay_dm_instance_remove_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid)
Definition dm.h:223
int anjay_register_object(anjay_t *anjay, const anjay_dm_object_def_t *const *def_ptr)
int anjay_dm_transaction_begin_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr)
Definition dm.h:653
int anjay_dm_object_write_default_attrs_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_ssid_t ssid, const anjay_dm_oi_attributes_t *attrs)
Definition dm.h:131
int anjay_dm_resource_write_attrs_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid, anjay_rid_t rid, anjay_ssid_t ssid, const anjay_dm_r_attributes_t *attrs)
Definition dm.h:561
anjay_resource_observation_status_t anjay_resource_observation_status(anjay_t *anjay, anjay_oid_t oid, anjay_iid_t iid, anjay_rid_t rid)
int anjay_dm_instance_read_default_attrs_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid, anjay_ssid_t ssid, anjay_dm_oi_attributes_t *out)
Definition dm.h:267
const anjay_dm_r_attributes_t ANJAY_DM_R_ATTRIBUTES_EMPTY
int anjay_dm_instance_create_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid)
Definition dm.h:246
int anjay_dm_resource_read_attrs_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid, anjay_rid_t rid, anjay_ssid_t ssid, anjay_dm_r_attributes_t *out)
Definition dm.h:535
int anjay_dm_resource_instance_write_attrs_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid, anjay_rid_t rid, anjay_riid_t riid, anjay_ssid_t ssid, const anjay_dm_r_attributes_t *attrs)
Definition dm.h:615
int anjay_dm_resource_reset_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid, anjay_rid_t rid)
Definition dm.h:468
int anjay_unregister_object(anjay_t *anjay, const anjay_dm_object_def_t *const *def_ptr)
int anjay_dm_transaction_validate_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr)
Definition dm.h:683
anjay_dm_con_attr_t
Definition dm.h:37
@ ANJAY_DM_CON_ATTR_NON
Definition dm.h:39
@ ANJAY_DM_CON_ATTR_NONE
Definition dm.h:38
@ ANJAY_DM_CON_ATTR_CON
Definition dm.h:40
bool anjay_binding_mode_valid(const char *binding_mode)
int anjay_dm_resource_instance_read_attrs_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid, anjay_rid_t rid, anjay_riid_t riid, anjay_ssid_t ssid, anjay_dm_r_attributes_t *out)
Definition dm.h:587
uint16_t anjay_access_mask_t
Definition dm.h:1217
int anjay_dm_object_read_default_attrs_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_ssid_t ssid, anjay_dm_oi_attributes_t *out)
Definition dm.h:109
int anjay_dm_resource_read_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid, anjay_rid_t rid, anjay_riid_t riid, anjay_output_ctx_t *ctx)
Definition dm.h:371
int anjay_dm_instance_write_default_attrs_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid, anjay_ssid_t ssid, const anjay_dm_oi_attributes_t *attrs)
Definition dm.h:291
int anjay_dm_list_instances_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_dm_list_ctx_t *ctx)
Definition dm.h:169
const anjay_dm_oi_attributes_t ANJAY_DM_OI_ATTRIBUTES_EMPTY
int anjay_dm_transaction_NOOP(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr)
int anjay_dm_instance_reset_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid)
Definition dm.h:203
int anjay_dm_resource_write_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid, anjay_rid_t rid, anjay_riid_t riid, anjay_input_ctx_t *ctx)
Definition dm.h:406
int anjay_dm_list_resources_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid, anjay_dm_resource_list_ctx_t *ctx)
Definition dm.h:328
int anjay_dm_list_resource_instances_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid, anjay_rid_t rid, anjay_dm_list_ctx_t *ctx)
Definition dm.h:510
int anjay_dm_transaction_commit_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr)
Definition dm.h:708
int anjay_dm_transaction_rollback_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr)
Definition dm.h:732
int anjay_dm_resource_execute_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_iid_t iid, anjay_rid_t rid, anjay_execute_ctx_t *ctx)
Definition dm.h:434
anjay_security_mode_t
Definition dm.h:1181
@ ANJAY_SECURITY_RPK
Definition dm.h:1183
@ ANJAY_SECURITY_NOSEC
Definition dm.h:1185
@ ANJAY_SECURITY_EST
Definition dm.h:1186
@ ANJAY_SECURITY_CERTIFICATE
Definition dm.h:1184
@ ANJAY_SECURITY_PSK
Definition dm.h:1182
int anjay_dm_list_instances_SINGLE(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr, anjay_dm_list_ctx_t *ctx)
struct anjay_dm_resource_list_ctx_struct anjay_dm_resource_list_ctx_t
Definition io.h:40
struct anjay_input_ctx_struct anjay_input_ctx_t
Definition io.h:413
struct anjay_dm_list_ctx_struct anjay_dm_list_ctx_t
Definition io.h:22
struct anjay_output_ctx_struct anjay_output_ctx_t
Definition io.h:123
struct anjay_execute_ctx_struct anjay_execute_ctx_t
Definition io.h:417
Definition dm.h:736
anjay_dm_resource_execute_t * resource_execute
Definition dm.h:853
anjay_dm_instance_create_t * instance_create
Definition dm.h:784
anjay_dm_resource_read_t * resource_read
Definition dm.h:835
anjay_dm_list_resource_instances_t * list_resource_instances
Definition dm.h:875
anjay_dm_resource_instance_read_attrs_t * resource_instance_read_attrs
Definition dm.h:954
anjay_dm_resource_reset_t * resource_reset
Definition dm.h:864
anjay_dm_object_write_default_attrs_t * object_write_default_attrs
Definition dm.h:756
anjay_dm_transaction_rollback_t * transaction_rollback
Definition dm.h:941
anjay_dm_transaction_validate_t * transaction_validate
Definition dm.h:918
anjay_dm_object_read_default_attrs_t * object_read_default_attrs
Definition dm.h:745
anjay_dm_instance_write_default_attrs_t * instance_write_default_attrs
Definition dm.h:816
anjay_dm_transaction_commit_t * transaction_commit
Definition dm.h:929
anjay_dm_instance_read_default_attrs_t * instance_read_default_attrs
Definition dm.h:805
anjay_dm_instance_remove_t * instance_remove
Definition dm.h:794
anjay_dm_list_instances_t * list_instances
Definition dm.h:766
anjay_dm_resource_write_t * resource_write
Definition dm.h:844
anjay_dm_resource_read_attrs_t * resource_read_attrs
Definition dm.h:885
anjay_dm_instance_reset_t * instance_reset
Definition dm.h:775
anjay_dm_transaction_begin_t * transaction_begin
Definition dm.h:906
anjay_dm_resource_write_attrs_t * resource_write_attrs
Definition dm.h:895
anjay_dm_resource_instance_write_attrs_t * resource_instance_write_attrs
Definition dm.h:967
anjay_dm_list_resources_t * list_resources
Definition dm.h:826
Definition dm.h:971
anjay_dm_handlers_t handlers
Definition dm.h:987
const char * version
Definition dm.h:984
anjay_oid_t oid
Definition dm.h:973
Definition dm.h:44
int32_t max_period
Definition dm.h:48
anjay_dm_con_attr_t con
Definition dm.h:55
int32_t min_period
Definition dm.h:46
int32_t max_eval_period
Definition dm.h:52
int32_t min_eval_period
Definition dm.h:50
Definition dm.h:60
double step
Definition dm.h:68
double less_than
Definition dm.h:66
double greater_than
Definition dm.h:64
anjay_dm_oi_attributes_t common
Definition dm.h:62
uint16_t servers_number
Definition dm.h:1070
int32_t min_period
Definition dm.h:1058
bool is_observed
Definition dm.h:1052
int32_t max_eval_period
Definition dm.h:1065