Skip to main content

Object / Resource Model

LWM2M data model with typed resources and callback-driven access.

This module defines the core LWM2M data model used throughout the wb-idf-lwm2m component:

  • Object definitions ( ) — Top-level container with an Object ID, human-readable name, instance list, and resource list.
  • Resource definitions ( ) — Per-resource metadata including data type, allowed operations (R/W/E), and user callbacks.
  • Value type ( ) — Tagged union supporting all 10 LWM2M data types (String, Integer, UInteger, Float, Boolean, Opaque, Time, Objlink, CoreLnk, None).
  • Callback types — wb_lwm2m_read_cb_t , wb_lwm2m_write_cb_t , wb_lwm2m_execute_cb_t for server-initiated operations.
  • Helper macros — , , etc. for convenient value construction.
  • Accessor functions — , , for type-safe access.

Type Definitions​

wb_lwm2m_read_cb_t​

typedef esp_err_t(* wb_lwm2m_read_cb_t) (uint16_t obj_id, uint16_t inst_id, uint16_t res_id, wb_lwm2m_value_t *value, void *user_ctx)

Read callback — invoked when a resource value is needed.

wb_lwm2m_write_cb_t​

typedef esp_err_t(* wb_lwm2m_write_cb_t) (uint16_t obj_id, uint16_t inst_id, uint16_t res_id, const wb_lwm2m_value_t *value, void *user_ctx)

Write callback — invoked when the server writes a resource.

wb_lwm2m_execute_cb_t​

typedef esp_err_t(* wb_lwm2m_execute_cb_t) (uint16_t obj_id, uint16_t inst_id, uint16_t res_id, const uint8_t *args, size_t args_len, void *user_ctx)

Execute callback — invoked when the server executes a resource.

Enumerations​

wb_lwm2m_fw_state_t​

Firmware Update States (/5/0/3)

EnumeratorValueDescription
WB_LWM2M_FW_STATE_IDLE= 0
WB_LWM2M_FW_STATE_DOWNLOADING= 1
WB_LWM2M_FW_STATE_DOWNLOADED= 2
WB_LWM2M_FW_STATE_UPDATING= 3

wb_lwm2m_fw_update_result_t​

Firmware Update Result Codes (/5/0/5)

EnumeratorValueDescription
WB_LWM2M_FW_RESULT_DEFAULT= 0
WB_LWM2M_FW_RESULT_SUCCESS= 1
WB_LWM2M_FW_RESULT_NOT_ENOUGH_FLASH= 2
WB_LWM2M_FW_RESULT_OUT_OF_RAM= 3
WB_LWM2M_FW_RESULT_CONN_LOST= 4
WB_LWM2M_FW_RESULT_INTEGRITY_FAILED= 5
WB_LWM2M_FW_RESULT_UNSUPPORTED_PKG= 6
WB_LWM2M_FW_RESULT_INVALID_URI= 7
WB_LWM2M_FW_RESULT_UPDATE_FAILED= 8
WB_LWM2M_FW_RESULT_UNSUPPORTED_PROTOCOL= 9

wb_lwm2m_res_type_t​

LWM2M Resource Data Type enumeration.

EnumeratorValueDescription
WB_LWM2M_RES_TYPE_NONE= 0Execute-only resource (no data)
WB_LWM2M_RES_TYPE_STRING= 1UTF-8 string, 0..65535 bytes.
WB_LWM2M_RES_TYPE_INTEGER= 2Signed integer: 8/16/32/64-bit.
WB_LWM2M_RES_TYPE_UINTEGER= 3Unsigned integer: 8/16/32/64-bit (LWM2M 1.1+)
WB_LWM2M_RES_TYPE_FLOAT= 4IEEE 754 float: 32-bit or 64-bit.
WB_LWM2M_RES_TYPE_BOOLEAN= 5Boolean: 0 or 1.
WB_LWM2M_RES_TYPE_OPAQUE= 6Opaque binary data, 0..65535 bytes.
WB_LWM2M_RES_TYPE_TIME= 7Unix timestamp (signed 32/64-bit integer)
WB_LWM2M_RES_TYPE_OBJLINK= 8Object Link: ObjectID:InstanceID.
WB_LWM2M_RES_TYPE_CORELNK= 9CoRE Link-Format string (RFC 6690)

wb_lwm2m_security_mode_t​

LWM2M Security Modes (Security Object /0, Resource /0/0/2)

EnumeratorValueDescription
WB_LWM2M_SEC_MODE_PSK= 0Pre-Shared Key.
WB_LWM2M_SEC_MODE_RAW_PUB_KEY= 1Raw Public Key.
WB_LWM2M_SEC_MODE_CERTIFICATE= 2Certificate.
WB_LWM2M_SEC_MODE_NOSEC= 3NoSec (plain CoAP)
WB_LWM2M_SEC_MODE_CERT_EST= 4Certificate with EST.

Macros​

WB_LWM2M_OBJ_SECURITY 0​

WB_LWM2M_OBJ_SERVER 1​

WB_LWM2M_OBJ_ACCESS_CONTROL 2​

WB_LWM2M_OBJ_DEVICE 3​

WB_LWM2M_OBJ_CONN_MONITORING 4​

WB_LWM2M_OBJ_FIRMWARE_UPDATE 5​

WB_LWM2M_OBJ_LOCATION 6​

WB_LWM2M_OBJ_CONN_STATISTICS 7​

WB_LWM2M_RES_SEC_SERVER_URI 0​

String — LWM2M Server URI.

WB_LWM2M_RES_SEC_BOOTSTRAP 1​

Boolean — Bootstrap-Server.

WB_LWM2M_RES_SEC_MODE 2​

Integer — Security Mode (0-4)

WB_LWM2M_RES_SEC_PUB_KEY_IDENTITY 3​

Opaque — Public Key or Identity.

WB_LWM2M_RES_SEC_SERVER_PUB_KEY 4​

Opaque — Server Public Key.

WB_LWM2M_RES_SEC_SECRET_KEY 5​

Opaque — Secret Key.

WB_LWM2M_RES_SEC_SHORT_SERVER_ID 10​

Integer — Short Server ID.

WB_LWM2M_RES_SRV_SHORT_ID 0​

Integer — Short Server ID.

WB_LWM2M_RES_SRV_LIFETIME 1​

Integer — Lifetime (seconds)

WB_LWM2M_RES_SRV_MIN_PERIOD 2​

Integer — Default Min Period.

WB_LWM2M_RES_SRV_MAX_PERIOD 3​

Integer — Default Max Period.

WB_LWM2M_RES_SRV_DISABLE 4​

Execute — Disable.

WB_LWM2M_RES_SRV_DISABLE_TIMEOUT 5​

Integer — Disable Timeout.

WB_LWM2M_RES_SRV_NOTIFICATION_STORING 6​

Boolean — Notification Storing.

WB_LWM2M_RES_SRV_BINDING 7​

String — Binding.

WB_LWM2M_RES_SRV_REG_UPDATE_TRIGGER 8​

Execute — Registration Update Trigger.

WB_LWM2M_RES_DEVICE_MANUFACTURER 0​

String — Manufacturer.

WB_LWM2M_RES_DEVICE_MODEL_NUMBER 1​

String — Model Number.

WB_LWM2M_RES_DEVICE_SERIAL_NUMBER 2​

String — Serial Number.

WB_LWM2M_RES_DEVICE_FW_VERSION 3​

String — Firmware Version.

WB_LWM2M_RES_DEVICE_REBOOT 4​

Execute — Reboot.

WB_LWM2M_RES_DEVICE_FACTORY_RESET 5​

Execute — Factory Reset.

WB_LWM2M_RES_DEVICE_POWER_SOURCES 6​

Integer[] — Available Power Sources.

WB_LWM2M_RES_DEVICE_POWER_VOLTAGE 7​

Integer[] — Power Source Voltage (mV)

WB_LWM2M_RES_DEVICE_POWER_CURRENT 8​

Integer[] — Power Source Current (mA)

WB_LWM2M_RES_DEVICE_BATTERY_LEVEL 9​

Integer — Battery Level (%)

WB_LWM2M_RES_DEVICE_MEMORY_FREE 10​

Integer — Memory Free (KB)

WB_LWM2M_RES_DEVICE_ERROR_CODE 11​

Integer[] — Error Code.

WB_LWM2M_RES_DEVICE_RESET_ERROR_CODE 12​

Execute — Reset Error Code.

WB_LWM2M_RES_DEVICE_CURRENT_TIME 13​

Time — Current Time.

WB_LWM2M_RES_DEVICE_UTC_OFFSET 14​

String — UTC Offset.

WB_LWM2M_RES_DEVICE_TIMEZONE 15​

String — Timezone.

WB_LWM2M_RES_DEVICE_BINDING 16​

String — Supported Binding.

WB_LWM2M_RES_DEVICE_TYPE 17​

String — Device Type.

WB_LWM2M_RES_DEVICE_HW_VERSION 18​

String — Hardware Version.

WB_LWM2M_RES_DEVICE_SW_VERSION 19​

String — Software Version.

WB_LWM2M_RES_DEVICE_BATTERY_STATUS 20​

Integer — Battery Status.

WB_LWM2M_RES_DEVICE_MEMORY_TOTAL 21​

Integer — Memory Total (KB)

WB_LWM2M_RES_FW_PACKAGE 0​

Opaque — Package.

WB_LWM2M_RES_FW_PACKAGE_URI 1​

String — Package URI.

WB_LWM2M_RES_FW_UPDATE 2​

Execute — Update.

WB_LWM2M_RES_FW_STATE 3​

Integer — State (0-3)

WB_LWM2M_RES_FW_UPDATE_RESULT 5​

Integer — Update Result (0-9)

WB_LWM2M_RES_FW_PKG_NAME 6​

String — Package Name.

WB_LWM2M_RES_FW_PKG_VERSION 7​

String — Package Version.

WB_LWM2M_RES_FW_PROTOCOL_SUPPORT 8​

Integer[] — Protocol Support.

WB_LWM2M_RES_FW_DELIVERY_METHOD 9​

Integer — Delivery Method.

WB_LWM2M_RES_LOC_LATITUDE 0​

Float — Latitude.

WB_LWM2M_RES_LOC_LONGITUDE 1​

Float — Longitude.

WB_LWM2M_RES_LOC_ALTITUDE 2​

Float — Altitude (m)

WB_LWM2M_RES_LOC_RADIUS 3​

Float — Radius (m)

WB_LWM2M_RES_LOC_VELOCITY 4​

Opaque — Velocity.

WB_LWM2M_RES_LOC_TIMESTAMP 5​

Time — Timestamp.

WB_LWM2M_RES_LOC_SPEED 6​

Float — Speed (m/s)

WB_LWM2M_RES_CONN_NETWORK_BEARER 0​

Integer — Network Bearer.

WB_LWM2M_RES_CONN_AVAIL_BEARERS 1​

Integer[] — Available Network Bearer.

WB_LWM2M_RES_CONN_RADIO_SIGNAL 2​

Integer — Radio Signal Strength (dBm)

Integer — Link Quality.

WB_LWM2M_RES_CONN_IP_ADDRESSES 4​

String[] — IP Addresses.

WB_LWM2M_RES_CONN_ROUTER_IP 5​

String[] — Router IP Addresses.

Integer — Link Utilization (%)

WB_LWM2M_RES_CONN_APN 7​

String[] — APN.

WB_LWM2M_RES_CONN_CELL_ID 8​

Integer — Cell ID.

WB_LWM2M_RES_CONN_SMNC 9​

Integer — SMNC.

WB_LWM2M_RES_CONN_SMCC 10​

Integer — SMCC.

WB_LWM2M_OP_READ (1 << 0)​

Server can read this resource.

WB_LWM2M_OP_WRITE (1 << 1)​

Server can write this resource.

WB_LWM2M_OP_EXECUTE (1 << 2)​

Server can execute this resource.

WB_LWM2M_OP_RW (​

Read + Write.

WB_LWM2M_VALUE_STRING (​

Construct a String value.

WB_LWM2M_VALUE_STRING_LEN (​

Construct a String value with explicit length (for non-NUL-terminated)

WB_LWM2M_VALUE_INT (​

Construct a signed Integer value.

WB_LWM2M_VALUE_UINT (​

Construct an unsigned Integer value (LWM2M 1.1+)

WB_LWM2M_VALUE_FLOAT (​

Construct a Float value (double precision)

WB_LWM2M_VALUE_BOOL (​

Construct a Boolean value.

WB_LWM2M_VALUE_OPAQUE (​

Construct an Opaque (binary) value.

WB_LWM2M_VALUE_TIME (​

Construct a Time value (Unix timestamp)

Construct an Object Link value.

WB_LWM2M_VALUE_CORELNK (​

Construct a CoRE Link-Format value.

WB_LWM2M_MAX_INSTANCES 4​

WB_LWM2M_MAX_RESOURCES 24​

Functions​

wb_lwm2m_type_name​

Get type name as string (for logging)

static const char * wb_lwm2m_type_name(wb_lwm2m_res_type_t type)

Parameters:

  • type (wb_lwm2m_res_type_t)

wb_lwm2m_value_get_int​

Get integer from value (auto-converts from int, uint, time, bool)

static int64_t wb_lwm2m_value_get_int(const wb_lwm2m_value_t *v)

Parameters:

  • v (const wb_lwm2m_value_t *)

wb_lwm2m_value_get_float​

Get float from value (auto-converts from int, uint)

static double wb_lwm2m_value_get_float(const wb_lwm2m_value_t *v)

Parameters:

  • v (const wb_lwm2m_value_t *)

wb_lwm2m_value_is_string​

Check if value carries string-like data (String or CoreLnk)

static bool wb_lwm2m_value_is_string(const wb_lwm2m_value_t *v)

Parameters:

  • v (const wb_lwm2m_value_t *)

wb_lwm2m_value_is_numeric​

Check if value carries numeric data (Integer, UInteger, Float, Time)

static bool wb_lwm2m_value_is_numeric(const wb_lwm2m_value_t *v)

Parameters:

  • v (const wb_lwm2m_value_t *)