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 the AVSystem-5-clause 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_LWM2M_GATEWAY
28# define ANJAY_DM_OID_LWM2M_GATEWAY 25
29#endif // ANJAY_WITH_LWM2M_GATEWAY
30
32
39
41typedef struct {
43 int32_t min_period;
45 int32_t max_period;
50#ifdef ANJAY_WITH_CON_ATTR
53#endif // ANJAY_WITH_CON_ATTR
55
67
70#define ANJAY_ATTRIB_INTEGER_NONE (-1)
71
73#define ANJAY_ATTRIB_PERIOD_NONE ANJAY_ATTRIB_INTEGER_NONE
74
77#define ANJAY_ATTRIB_DOUBLE_NONE (NAN)
78
80#define ANJAY_ATTRIB_VALUE_NONE ANJAY_ATTRIB_DOUBLE_NONE
81
85
89
107 anjay_t *anjay,
108 const anjay_dm_object_def_t *const *obj_ptr,
109 anjay_ssid_t ssid,
111
129 anjay_t *anjay,
130 const anjay_dm_object_def_t *const *obj_ptr,
131 anjay_ssid_t ssid,
132 const anjay_dm_oi_attributes_t *attrs);
133
165typedef int
167 const anjay_dm_object_def_t *const *obj_ptr,
169
177 const anjay_dm_object_def_t *const *obj_ptr,
179
199typedef int
201 const anjay_dm_object_def_t *const *obj_ptr,
202 anjay_iid_t iid);
203
219typedef int
221 const anjay_dm_object_def_t *const *obj_ptr,
222 anjay_iid_t iid);
223
242typedef int
244 const anjay_dm_object_def_t *const *obj_ptr,
245 anjay_iid_t iid);
246
265 anjay_t *anjay,
266 const anjay_dm_object_def_t *const *obj_ptr,
267 anjay_iid_t iid,
268 anjay_ssid_t ssid,
270
289 anjay_t *anjay,
290 const anjay_dm_object_def_t *const *obj_ptr,
291 anjay_iid_t iid,
292 anjay_ssid_t ssid,
293 const anjay_dm_oi_attributes_t *attrs);
294
324typedef int
326 const anjay_dm_object_def_t *const *obj_ptr,
327 anjay_iid_t iid,
329
367typedef int
369 const anjay_dm_object_def_t *const *obj_ptr,
370 anjay_iid_t iid,
371 anjay_rid_t rid,
372 anjay_riid_t riid,
373 anjay_output_ctx_t *ctx);
374
402typedef int
404 const anjay_dm_object_def_t *const *obj_ptr,
405 anjay_iid_t iid,
406 anjay_rid_t rid,
407 anjay_riid_t riid,
408 anjay_input_ctx_t *ctx);
409
430typedef int
432 const anjay_dm_object_def_t *const *obj_ptr,
433 anjay_iid_t iid,
434 anjay_rid_t rid,
436
464typedef int
466 const anjay_dm_object_def_t *const *obj_ptr,
467 anjay_iid_t iid,
468 anjay_rid_t rid);
469
506typedef int
508 const anjay_dm_object_def_t *const *obj_ptr,
509 anjay_iid_t iid,
510 anjay_rid_t rid,
512
531typedef int
533 const anjay_dm_object_def_t *const *obj_ptr,
534 anjay_iid_t iid,
535 anjay_rid_t rid,
536 anjay_ssid_t ssid,
538
557typedef int
559 const anjay_dm_object_def_t *const *obj_ptr,
560 anjay_iid_t iid,
561 anjay_rid_t rid,
562 anjay_ssid_t ssid,
563 const anjay_dm_r_attributes_t *attrs);
564
585 anjay_t *anjay,
586 const anjay_dm_object_def_t *const *obj_ptr,
587 anjay_iid_t iid,
588 anjay_rid_t rid,
589 anjay_riid_t riid,
590 anjay_ssid_t ssid,
592
613 anjay_t *anjay,
614 const anjay_dm_object_def_t *const *obj_ptr,
615 anjay_iid_t iid,
616 anjay_rid_t rid,
617 anjay_riid_t riid,
618 anjay_ssid_t ssid,
619 const anjay_dm_r_attributes_t *attrs);
620
649typedef int
651 const anjay_dm_object_def_t *const *obj_ptr);
652
679typedef int
681 const anjay_dm_object_def_t *const *obj_ptr);
682
704typedef int
706 const anjay_dm_object_def_t *const *obj_ptr);
707
715 const anjay_dm_object_def_t *const *obj_ptr);
716
728typedef int
730 const anjay_dm_object_def_t *const *obj_ptr);
731
966
986
1006 anjay_oid_t oid,
1007 anjay_iid_t iid,
1008 anjay_rid_t rid);
1009
1027
1028#ifdef ANJAY_WITH_OBSERVATION_STATUS
1033# ifndef ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER
1034# define ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER 0
1035# endif // ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER
1036
1040typedef struct {
1050 int32_t min_period;
1058# if (ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER > 0)
1062 uint16_t servers_number;
1067# endif //(ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER > 0)
1069
1117 anjay_t *anjay, anjay_oid_t oid, anjay_iid_t iid, anjay_rid_t rid);
1118
1119#endif // ANJAY_WITH_OBSERVATION_STATUS
1120
1136 const anjay_dm_object_def_t *const *def_ptr);
1137
1159 const anjay_dm_object_def_t *const *def_ptr);
1160
1167bool anjay_binding_mode_valid(const char *binding_mode);
1168
1173typedef enum {
1174 ANJAY_SECURITY_PSK = 0, //< Pre-Shared Key mode
1175 ANJAY_SECURITY_RPK = 1, //< Raw Public Key mode
1176 ANJAY_SECURITY_CERTIFICATE = 2, //< Certificate mode
1177 ANJAY_SECURITY_NOSEC = 3, //< NoSec mode
1178 ANJAY_SECURITY_EST = 4 //< Certificate mode with EST
1180
1181#ifdef ANJAY_WITH_SMS
1186typedef enum {
1187 ANJAY_SMS_SECURITY_DTLS_PSK = 1, //< DTLS in PSK mode
1188 ANJAY_SMS_SECURITY_SECURE_PACKET = 2, //< Secure Packet Structure
1189 ANJAY_SMS_SECURITY_NOSEC = 3 //< NoSec mode
1191#endif // ANJAY_WITH_SMS
1192
1193#define ANJAY_ACCESS_MASK_READ (1U << 0)
1194#define ANJAY_ACCESS_MASK_WRITE (1U << 1)
1195#define ANJAY_ACCESS_MASK_EXECUTE (1U << 2)
1196#define ANJAY_ACCESS_MASK_DELETE (1U << 3)
1197#define ANJAY_ACCESS_MASK_CREATE (1U << 4)
1198// clang-format off
1199#define ANJAY_ACCESS_MASK_FULL \
1200 (ANJAY_ACCESS_MASK_READ \
1201 | ANJAY_ACCESS_MASK_WRITE \
1202 | ANJAY_ACCESS_MASK_DELETE \
1203 | ANJAY_ACCESS_MASK_EXECUTE \
1204 | ANJAY_ACCESS_MASK_CREATE)
1205// clang-format on
1206#define ANJAY_ACCESS_MASK_NONE 0
1207#define ANJAY_ACCESS_LIST_OWNER_BOOTSTRAP UINT16_MAX
1208
1209typedef uint16_t anjay_access_mask_t;
1210
1211#ifdef __cplusplus
1212} /* extern "C" */
1213#endif
1214
1215#endif /*ANJAY_INCLUDE_ANJAY_DM_H*/
uint16_t anjay_oid_t
Definition core.h:1225
uint16_t anjay_rid_t
Definition core.h:1231
uint16_t anjay_iid_t
Definition core.h:1228
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:1234
int anjay_notify_instances_changed(anjay_t *anjay, anjay_oid_t oid)
anjay_sms_security_mode_t
Definition dm.h:1186
@ ANJAY_SMS_SECURITY_NOSEC
Definition dm.h:1189
@ ANJAY_SMS_SECURITY_DTLS_PSK
Definition dm.h:1187
@ ANJAY_SMS_SECURITY_SECURE_PACKET
Definition dm.h:1188
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:220
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:650
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:128
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:558
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:264
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:243
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:532
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:612
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:465
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:680
anjay_dm_con_attr_t
Definition dm.h:34
@ ANJAY_DM_CON_ATTR_NON
Definition dm.h:36
@ ANJAY_DM_CON_ATTR_NONE
Definition dm.h:35
@ ANJAY_DM_CON_ATTR_CON
Definition dm.h:37
#define ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER
Definition dm.h:1034
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:584
uint16_t anjay_access_mask_t
Definition dm.h:1209
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:106
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:368
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:288
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:166
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:200
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:403
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:325
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:507
int anjay_dm_transaction_commit_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr)
Definition dm.h:705
int anjay_dm_transaction_rollback_t(anjay_t *anjay, const anjay_dm_object_def_t *const *obj_ptr)
Definition dm.h:729
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:431
anjay_security_mode_t
Definition dm.h:1173
@ ANJAY_SECURITY_RPK
Definition dm.h:1175
@ ANJAY_SECURITY_NOSEC
Definition dm.h:1177
@ ANJAY_SECURITY_EST
Definition dm.h:1178
@ ANJAY_SECURITY_CERTIFICATE
Definition dm.h:1176
@ ANJAY_SECURITY_PSK
Definition dm.h:1174
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:733
anjay_dm_resource_execute_t * resource_execute
Definition dm.h:850
anjay_dm_instance_create_t * instance_create
Definition dm.h:781
anjay_dm_resource_read_t * resource_read
Definition dm.h:832
anjay_dm_list_resource_instances_t * list_resource_instances
Definition dm.h:872
anjay_dm_resource_instance_read_attrs_t * resource_instance_read_attrs
Definition dm.h:951
anjay_dm_resource_reset_t * resource_reset
Definition dm.h:861
anjay_dm_object_write_default_attrs_t * object_write_default_attrs
Definition dm.h:753
anjay_dm_transaction_rollback_t * transaction_rollback
Definition dm.h:938
anjay_dm_transaction_validate_t * transaction_validate
Definition dm.h:915
anjay_dm_object_read_default_attrs_t * object_read_default_attrs
Definition dm.h:742
anjay_dm_instance_write_default_attrs_t * instance_write_default_attrs
Definition dm.h:813
anjay_dm_transaction_commit_t * transaction_commit
Definition dm.h:926
anjay_dm_instance_read_default_attrs_t * instance_read_default_attrs
Definition dm.h:802
anjay_dm_instance_remove_t * instance_remove
Definition dm.h:791
anjay_dm_list_instances_t * list_instances
Definition dm.h:763
anjay_dm_resource_write_t * resource_write
Definition dm.h:841
anjay_dm_resource_read_attrs_t * resource_read_attrs
Definition dm.h:882
anjay_dm_instance_reset_t * instance_reset
Definition dm.h:772
anjay_dm_transaction_begin_t * transaction_begin
Definition dm.h:903
anjay_dm_resource_write_attrs_t * resource_write_attrs
Definition dm.h:892
anjay_dm_resource_instance_write_attrs_t * resource_instance_write_attrs
Definition dm.h:964
anjay_dm_list_resources_t * list_resources
Definition dm.h:823
Definition dm.h:968
anjay_dm_handlers_t handlers
Definition dm.h:984
const char * version
Definition dm.h:981
anjay_oid_t oid
Definition dm.h:970
Definition dm.h:41
int32_t max_period
Definition dm.h:45
anjay_dm_con_attr_t con
Definition dm.h:52
int32_t min_period
Definition dm.h:43
int32_t max_eval_period
Definition dm.h:49
int32_t min_eval_period
Definition dm.h:47
Definition dm.h:57
double step
Definition dm.h:65
double less_than
Definition dm.h:63
double greater_than
Definition dm.h:61
anjay_dm_oi_attributes_t common
Definition dm.h:59
int32_t min_period
Definition dm.h:1050
bool is_observed
Definition dm.h:1044
int32_t max_eval_period
Definition dm.h:1057