Anjay Lite
Loading...
Searching...
No Matches
LwM2M data types

Macros

#define ANJ_DATA_TYPE_NULL   ((anj_data_type_t) 0)
 
#define ANJ_DATA_TYPE_BYTES   ((anj_data_type_t) (1 << 0))
 
#define ANJ_DATA_TYPE_STRING   ((anj_data_type_t) (1 << 1))
 
#define ANJ_DATA_TYPE_INT   ((anj_data_type_t) (1 << 2))
 
#define ANJ_DATA_TYPE_DOUBLE   ((anj_data_type_t) (1 << 3))
 
#define ANJ_DATA_TYPE_BOOL   ((anj_data_type_t) (1 << 4))
 
#define ANJ_DATA_TYPE_OBJLNK   ((anj_data_type_t) (1 << 5))
 
#define ANJ_DATA_TYPE_UINT   ((anj_data_type_t) (1 << 6))
 
#define ANJ_DATA_TYPE_TIME   ((anj_data_type_t) (1 << 7))
 
#define ANJ_DATA_TYPE_ANY
 
#define ANJ_DATA_TYPE_FLAG_EXTERNAL   ((anj_data_type_t) (1 << 15))
 
#define ANJ_DATA_TYPE_EXTERNAL_BYTES
 
#define ANJ_DATA_TYPE_EXTERNAL_STRING
 

Typedefs

typedef uint16_t anj_data_type_t
 

Detailed Description

Data type identifiers used in the Anjay Lite data model.

These values correspond to the types defined in OMA LwM2M Core Specification v1.2.2 [OMA-TS-LightweightM2M_Core-V1_2_2-20240613-A] §C. They are primarily used when parsing or encoding request/response payloads.

Each constant indicates which field of anj_res_value_t is used to hold the value.

Macro Definition Documentation

◆ ANJ_DATA_TYPE_ANY

#define ANJ_DATA_TYPE_ANY
Value:
#define ANJ_DATA_TYPE_DOUBLE
Definition defs.h:327
#define ANJ_DATA_TYPE_OBJLNK
Definition defs.h:341
#define ANJ_DATA_TYPE_UINT
Definition defs.h:348
uint16_t anj_data_type_t
Definition defs.h:280
#define ANJ_DATA_TYPE_BOOL
Definition defs.h:334
#define ANJ_DATA_TYPE_STRING
Definition defs.h:313
#define ANJ_DATA_TYPE_INT
Definition defs.h:320
#define ANJ_DATA_TYPE_BYTES
Definition defs.h:303
#define ANJ_DATA_TYPE_TIME
Definition defs.h:355

Bitmask representing all supported data types.

Note
Does not include ANJ_DATA_TYPE_FLAG_EXTERNAL.
ANJ_DATA_TYPE_NULL is not a part of the bitmask.

◆ ANJ_DATA_TYPE_BOOL

#define ANJ_DATA_TYPE_BOOL   ((anj_data_type_t) (1 << 4))

Boolean data type.

The anj_res_value_t::bool_value field holds the value.

◆ ANJ_DATA_TYPE_BYTES

#define ANJ_DATA_TYPE_BYTES   ((anj_data_type_t) (1 << 0))

Opaque data type.

The anj_res_value_t::bytes_or_string field holds the raw bytes.

◆ ANJ_DATA_TYPE_DOUBLE

#define ANJ_DATA_TYPE_DOUBLE   ((anj_data_type_t) (1 << 3))

Floating-point data type.

The anj_res_value_t::double_value field holds the number.

◆ ANJ_DATA_TYPE_EXTERNAL_BYTES

#define ANJ_DATA_TYPE_EXTERNAL_BYTES
Value:
#define ANJ_DATA_TYPE_FLAG_EXTERNAL
Definition defs.h:390

Opaque data type supplied via external callback.

The anj_res_value_t::external_data field provides the data. Valid only for output contexts.

◆ ANJ_DATA_TYPE_EXTERNAL_STRING

#define ANJ_DATA_TYPE_EXTERNAL_STRING
Value:

String data type supplied via external callback.

The anj_res_value_t::external_data field provides the data. Valid only for output contexts.

◆ ANJ_DATA_TYPE_FLAG_EXTERNAL

#define ANJ_DATA_TYPE_FLAG_EXTERNAL   ((anj_data_type_t) (1 << 15))

Flag indicating that data is supplied via an external callback.

May be OR-ed with ANJ_DATA_TYPE_BYTES or ANJ_DATA_TYPE_STRING. Valid only for output contexts.

When this flag is set, the anj_res_value_t::external_data field must be used to provide the data.

Typical use cases:

  • Data is not directly available in memory and must be streamed (e.g., from external storage).
  • Data size is unknown in advance; the external data callback interface does not require providing the total length beforehand.
Note
When encoding CBOR-based formats (LwM2M CBOR, SenML CBOR), data is encoded as an Indefinite-Length String, split into chunks of up to 23 bytes.

◆ ANJ_DATA_TYPE_INT

#define ANJ_DATA_TYPE_INT   ((anj_data_type_t) (1 << 2))

Integer data type.

The anj_res_value_t::int_value field holds the number.

◆ ANJ_DATA_TYPE_NULL

#define ANJ_DATA_TYPE_NULL   ((anj_data_type_t) 0)

Null data type.

Indicates absence of a value. It is reported in the following cases:

  • Parsing a Composite-Read request payload.
  • Parsing a SenML-ETCH JSON/CBOR Write-Composite payload that contains an entry without a value (removal of a Resource Instance).
  • Parsing a LwM2M CBOR or SenML-ETCH JSON/CBOR Write-Composite payload that contains an explicit NULL value (removal of a Resource Instance).
  • Parsing a TLV or LwM2M CBOR payload where an aggregate (Object Instance or Multiple Instance Resource) contains zero nested elements.
Note
For this type, anj_res_value_t is not used.

◆ ANJ_DATA_TYPE_OBJLNK

#define ANJ_DATA_TYPE_OBJLNK   ((anj_data_type_t) (1 << 5))

Object Link (Objlnk) data type.

The anj_res_value_t::objlnk field holds the value.

◆ ANJ_DATA_TYPE_STRING

#define ANJ_DATA_TYPE_STRING   ((anj_data_type_t) (1 << 1))

String data type.

The anj_res_value_t::bytes_or_string field holds the string.

Note
May also be used to represent the "Corelnk" type, as both appear identical on the wire.

◆ ANJ_DATA_TYPE_TIME

#define ANJ_DATA_TYPE_TIME   ((anj_data_type_t) (1 << 7))

Time data type.

The anj_res_value_t::time_value field holds the value.

◆ ANJ_DATA_TYPE_UINT

#define ANJ_DATA_TYPE_UINT   ((anj_data_type_t) (1 << 6))

Unsigned Integer data type.

The anj_res_value_t::uint_value field holds the number.

Typedef Documentation

◆ anj_data_type_t

typedef uint16_t anj_data_type_t

LwM2M data type identifier. As this type is a bitmask, see LwM2M data types for possible combinations.