第 4 章 - Azure RTOS NetX LWM2M 服务说明

本章提供下面按字母顺序列出的所有 Azure RTOS NetX LWM2M 服务的说明。

在以下 API 说明的“返回值”部分中,以粗体显示的值不受 NX_DISABLE_ERROR_CHECKING 定义(用于禁用 API 错误检查)影响,而不以粗体显示的值会被完全禁用。

nx_lwm2m_client_create

创建 LWM2M 客户端

原型

UINT nx_lwm2m_client_create(
    NX_LWM2M_CLIENT *client_ptr, 
    NX_IP *ip_ptr,
    NX_PACKET_POOL *packet_pool_ptr, 
    UINT local_port, 
    const CHAR *name_ptr,
    const CHAR *msisdn_ptr, 
    UCHAR binding_modes, 
    VOID *stack_ptr, 
    ULONG stack_size);

说明

此服务创建 LWM2M 客户端实例,该实例在其自己的 ThreadX 线程的上下文中运行。

LWM2M 客户端实现了以下 OMA LWM2M 对象:安全性 (0)、服务器 (1)、访问控制 (2) 和设备 (3)。 其他对象实现必须由应用程序添加。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • ip_ptr:指向以前所创建 IP 实例的指针。
  • packet_pool_ptr:指向此 LWM2M 客户端的默认数据包池的指针。
  • local_port:用于非安全通信的本地 UDP 端口。
  • name_ptr:指向 LWM2M 客户端终结点名称的指针。
  • msisdn_ptr:指向 MSISDN 的指针,从中可以访问 LWM2M 客户端以便与 SMS 绑定配合使用;如果不支持 SMS 绑定,则可以为 NULL。
  • binding_modes:LWM2M 客户端支持的绑定和模式,必须是 NX_LWM2M_BINDING_U、NX_LWM2M_BINDING_UQ、NX_LWM2M_BINDING_S 和 NX_LWM2M_BINDING_SQ 标志的组合。
  • stack_ptr:指向 LWM2M 客户端线程堆栈区域的指针。
  • stack_size:LWM2M 客户端线程堆栈大小。

返回值

  • NX_SUCCESS:已成功创建 LWM2M 客户端。
  • NX_LWM2M_ERROR:创建 LWM2M 客户端出错。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_delete

删除 LWM2M 客户端

原型

UINT nx_lwm2m_client_delete(NX_LWM2M_CLIENT *client_ptr);

说明

此服务删除以前创建的 LWM2M 客户端实例。

此调用还会删除所有当前已附加该客户端的会话。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。

返回值

  • NX_SUCCESS:已成功删除 LWM2M 客户端。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_device_callbacks_set

设置设备对象应用程序回调

原型

UINT nx_lwm2m_client_device_callbacks_set(
    NX_LWM2M_CLIENT *client_ptr,
    NX_LWM2M_CLIENT_DEVICE_READ_CALLBACK read_callback,
    NX_LWM2M_CLIENT_DEVICE_DISCOVER_CALLBACK discover_callback,
    NX_LWM2M_CLIENT_DEVICE_WRITE_CALLBACK write_callback,
    NX_LWM2M_CLIENT_DEVICE_EXECUTE_CALLBACK execute_callback);

说明

此服务安装应用程序回调,用于在并非由 LWM2M 客户端处理的 LWM2M 设备对象资源上实现操作。

LWM2M 客户端实现了以下资源:错误代码 (11)、重置错误代码 (12) 以及支持的绑定和模式 (16),针对其他资源的操作将重定向到应用程序。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • read_callback:“读取”方法回调。
  • discover_callback:“发现”方法回调。
  • write_callback:“写入”方法回调。
  • execute_callback:“执行”方法回调。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_device_error_push

向设备对象添加错误代码

原型

UINT nx_lwm2m_client_device_error_push(
    NX_LWM2M_CLIENT *client_ptr, 
    UCHAR code);

说明

此服务将一个新实例添加到对象设备的错误代码 (11) 资源。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • code:新的错误代码。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BUFFER_TOO_SMALL:已达到存储的错误代码的最大数目。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_device_error_reset

重置设备对象的错误代码

原型

UINT nx_lwm2m_client_device_error_reset(NX_LWM2M_CLIENT *client_ptr);

说明

此服务从设备对象中删除所有的错误代码资源实例。 这等同于执行资源“重置错误代码”(12)。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_device_resource_changed

指出设备对象资源已更改

原型

UINT nx_lwm2m_client_device_resource_changed(
    NX_LWM2M_CLIENT *client_ptr,
    const NX_LWM2M_RESOURCE *resource);

说明

应用程序使用该服务向 LWM2M 客户端发送信号,指出对象设备的资源已更改。 当 LWM2M 服务器观察到资源时,LWM2M 客户端就会发送通知。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • resource:指向一个结构的指针,该结构说明已更改的资源。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_lock

锁定 LWM2M 客户端

原型

UINT nx_lwm2m_client_lock(NX_LWM2M_CLIENT *client_ptr);

说明

此服务用于锁定 LWM2M 客户端,以防止服务器或另一个应用程序线程并发访问 LWM2M 对象。

如果 LWM2M 客户端当前被另一个线程锁定,那么此函数会被阻止,直到 LWM2M 客户端解除锁定。

可以嵌套调用 nx_lwm2m_client_lock/nx_lwm2m_client_unlock 对。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_object_add

向 LWM2M 客户端添加对象实现

原型

UINT nx_lwm2m_client_object_add(
    NX_LWM2M_CLIENT *client_ptr,
    NX_LWM2M_OBJECT *object_ptr);

说明

此服务将新的对象实现添加到 LWM2M 客户端。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • object_ptr:指向一个结构的指针,该结构定义对象实现。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_ALREADY_EXIST:该对象 ID 已存在。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_object_create

创建新的对象实例

原型

UINT nx_lwm2m_client_object_create(
    NX_LWM2M_CLIENT *client_ptr,
    NX_LWM2M_ID object_id,
    NX_LWM2M_ID *instance_id_ptr,
    UINT num_values,
    const NX_LWM2M_RESOURCE *values_ptr);

说明

此服务对 LWM2M 客户端的对象执行“创建”操作,以创建新的对象实例。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • object_id:对象 ID。
  • instance_id_ptr:指向新实例的 ID 的指针;如果 LWM2M 客户端必须分配实例 ID,则此参数可以为 NULL。 如果该 ID 为保留值 65535,则 LWM2M 客户端会分配实例 ID。 如果不为 NULL,则在调用后返回已分配的 ID。
  • num_values:要设置的值的数目。
  • values_ptr:指向资源值数组的指针,这些资源值用于初始化新对象实例。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_ALREADY_EXIST:该对象实例 ID 已存在。
  • NX_LWM2M_METHOD_NOT_ALLOWED:该对象不支持实例创建。
  • NX_LWM2M_NO_MEMORY:无法分配内存来存储新实例。
  • NX_LWM2M_NOT_FOUND:该对象 ID 不存在。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_object_delete

删除对象实例

原型

UINT nx_lwm2m_client_object_delete(
    NX_LWM2M_CLIENT *client_ptr,
    NX_LWM2M_ID object_id,
    NX_LWM2M_ID instance_id);

说明

此服务对 LWM2M 客户端的对象实例执行“删除”操作。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • object_id:对象 ID。
  • instance_id:对象实例 ID。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_METHOD_NOT_ALLOWED:该对象不支持实例删除。
  • NX_LWM2M_NOT_FOUND:该对象 ID 或对象实例 ID 不存在。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_object_discover

发现对象实例的资源

原型

UINT nx_lwm2m_client_object_discover(
    NX_LWM2M_CLIENT *client_ptr,
    NX_LWM2M_ID object_id,
    NX_LWM2M_ID instance_id,
    UINT *num_resources_ptr,
    NX_LWM2M_RESOURCE_INFO *resources_ptr);

说明

此服务对 LWM2M 客户端的对象实例执行“发现”操作,这将返回该对象所实现的资源列表。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • object_id:对象 ID。
  • instance_id:对象实例 ID。
  • num_resources_ptr:输入时,这是目标缓冲区的大小,输出时,这是写入缓冲区的元素数目。
  • resources_ptr:指向目标缓冲区的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BUFFER_TOO_SMALL:资源缓冲区太小,无法存储资源列表。
  • NX_LWM2M_NOT_FOUND:该对象 ID 或对象实例 ID 不存在。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_object_execute

执行对象实例的资源

原型

UINT nx_lwm2m_client_object_execute(
    NX_LWM2M_CLIENT *client_ptr,
    NX_LWM2M_ID object_id, NX_LWM2M_ID instance_id,
    NX_LWM2M_ID resource_id,
    const CHAR *arguments_ptr,
    UINT arguments_length);

说明

此服务对 LWM2M 客户端的对象实例资源执行“执行”操作。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • object_id:对象 ID。
  • instance_id:对象实例 ID。
  • resource_id:资源 ID。
  • arguments_ptr:指向执行操作参数的指针。 如果 arguments_length 为零,则此参数可为 NULL。
  • arguments_length:参数的长度。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_METHOD_NOT_ALLOWED:该资源不支持执行操作。
  • NX_LWM2M_NOT_FOUND:该对象 ID、对象实例 ID 或资源 ID 不存在。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_object_get_next

获取 LWM2M 客户端所实现的对象列表

原型

UINT nx_lwm2m_client_object_get_next(
    NX_LWM2M_CLIENT *client_ptr,
    NX_LWM2M_ID *object_id_ptr);

说明

此服务返回 LWM2M 客户端所实现的下一个对象的 ID。 如果当前对象 ID 设置为 NX_LWM2M_RESERVED_ID (65535),则会返回第一个对象 ID。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • object_id_ptr:指向当前对象 ID 的指针。 返回时,包含 LWM2M 客户端所实现的下一个对象 ID。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_NOT_FOUND:给定的对象 ID 是数据库中的最后一个 ID。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_object_instance_get_next

获取对象的实例列表

原型

UINT nx_lwm2m_client_object_instance_get_next(
    NX_LWM2M_CLIENT *client_ptr,
    NX_LWM2M_ID object_id,
    NX_LWM2M_ID *instance_id_ptr);

说明

此服务返回给定对象的下一个对象实例的 ID。 如果当前实例 ID 设置为 NX_LWM2M_RESERVED_ID (65535),则会返回第一个实例的 ID。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • object_id:对象 ID。
  • instance_id_ptr:指向当前对象实例 ID 的指针。 返回时,包含该对象的下一个实例 ID。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_NOT_FOUND:给定的实例 ID 是该对象的最后一个实例 ID,或者该对象 ID 尚未实现。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_object_read

读取对象实例的资源值

原型

UINT nx_lwm2m_client_object_read(
    NX_LWM2M_CLIENT *client_ptr,
    NX_LWM2M_ID object_id,
    NX_LWM2M_ID instance_id,
    UINT num_values,
    NX_LWM2M_RESOURCE *values);

说明

此服务对 LWM2M 客户端的对象实例执行“读取”操作。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • object_id:对象 ID。
  • instance_id:对象实例 ID。
  • num_values:要读取的资源数目。
  • values_ptr:指向 NX_LWM2M_RESOURCE 数组的指针,该数组包含要读取的资源的 ID。 返回时,该数组中填充有相应的类型和值。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_METHOD_NOT_ALLOWED:资源不支持读取操作。
  • NX_LWM2M_NOT_FOUND:该对象 ID、对象实例 ID 或资源 ID 不存在。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_object_write

更改对象实例的资源值

原型

UINT nx_lwm2m_client_object_write(
    NX_LWM2M_CLIENT *client_ptr,
    NX_LWM2M_ID object_id,
    NX_LWM2M_ID instance_id,
    UINT num_values,
    const NX_LWM2M_RESOURCE *values_ptr,
    UINT write_op);

说明

此服务对 LWM2M 客户端的对象实例执行“写入”操作。

可以对 write_op 参数指定以下写入操作:

  • 0 — 部分更新:添加或更新在新值中提供的资源,其他现有资源保持不变。

  • NX_LWM2M_OBJECT_WRITE_REPLACE_INSTANCE — 替换实例:将对象实例替换为新提供的资源值。

  • NX_LWM2M_OBJECT_WRITE_REPLACE_RESOURCE — 替换资源:将资源替换为新提供的资源值(用于替换多重资源)。

  • NX_LWM2M_OBJECT_WRITE_BOOTSTRAP — 启动写入:指示从启动序列中执行的调用。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • object_id:对象 ID。
  • instance_id:对象实例 ID。
  • num_values:要写入的资源数目。
  • values_ptr:指向 NX_LWM2M_RESOURCE 数组的指针,其中,NX_LWM2M_RESOURCE 包含要写入的资源 ID、类型和值。
  • write_op:写入操作的类型。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_ENCODING:资源类型无效。
  • NX_LWM2M_BUFFER_TOO_SMALL:值的长度太大,无法存储在该实例中。
  • NX_LWM2M_METHOD_NOT_ALLOWED:资源不支持写入操作。
  • NX_LWM2M_NO_MEMORY:无法分配内存来存储资源值。
  • NX_LWM2M_NOT_ACCEPTABLE:某个资源的值无效。
  • NX_LWM2M_NOT_FOUND:该对象 ID、对象实例 ID 或资源 ID 不存在。
  • NX_OPTION_ERROR:写入操作类型无效。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_security_key_callbacks_set

设置安全对象密钥管理回调

原型

UINT nx_lwm2m_client_security_key_callbacks_set(
    NX_LWM2M_CLIENT *client_ptr,
    NX_LWM2M_CLIENT_SECURITY_KEY_WRITE_CALLBACK write_callback,
    NX_LWM2M_CLIENT_SECURITY_KEY_DELETE_CALLBACK delete_callback);

说明

此服务安装应用程序回调,用于在 LWM2M 安全对象资源上实现与安全密钥相关的操作。

在启动会话过程中,LWM2M 客户端会将安全密钥管理委托给应用程序,当启动服务器在安全对象实例上写入或删除以下资源时,就会调用这些回调:公钥或身份 (3)、服务器公钥 (4) 和密钥 (5)。

应用程序负责存储密钥数据,以及配置 LWM2M 客户端所使用的 DTLS 会话。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。
  • write_callback:“写入”密钥方法回调。
  • delete_callback:“删除”密钥方法回调。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_session_bootstrap

启动与启动服务器的会话

原型

UINT nx_lwm2m_client_session_bootstrap(
    NX_LWM2M_CLIENT_SESSION
    *session_ptr, NX_LWM2M_ID security_id,
    ULONG ip_address, UINT port);

说明

此服务启动与启动服务器的会话。 该服务器在安全对象中应该有相应的安全实例。

如果在与此服务器相关联的安全实例中“推迟”资源不为零,那么会话会等待服务器启动的 Bootstrap;如果在这段时间后服务器没有启动任何 Bootstrap,则会执行客户端启动的 Bootstrap。

此调用会中止所有的当前活动会话,并将其替换为新的启动服务器会话。

参数

  • session_ptr:指向 LWM2M 客户端会话控制块的指针。
  • security_id:如果启动服务器未定义有任何安全实例,则启动服务器的安全实例 ID 必须设置为 NX_LWM2M_RESERVED_ID (65535)。
  • ip_address:服务器的 IP 地址。
  • port:服务器的 UDP 端口。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_NOT_FOUND:没有与安全实例 ID 相对应的安全对象实例。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_session_bootstrap_dtls

启动与启动服务器的安全会话

原型

UINT nx_lwm2m_client_session_bootstrap_dtls(
    NX_LWM2M_CLIENT_SESSION *session_ptr,
    NX_LWM2M_ID security_id,
    ULONG ip_address, UINT port,
    NX_SECURE_DTLS_SESSION
    *dtls_session_ptr,
    UINT dtls_local_port);

说明

此服务使用安全 DTLS 连接来启动与启动服务器的会话。 服务器在安全对象中应有相应的安全实例。

在调用此函数之前,必须使用正确的密码套件和密钥材料来配置 DTLS 会话。 必须定义 NX_SECURE_ENABLE_DTLS。

如果在与此服务器相关联的安全实例中“推迟”资源不为零,那么会话会等待服务器启动的 Bootstrap;如果在这段时间后服务器没有启动任何 Bootstrap,则会执行客户端启动的 Bootstrap。

此调用会中止所有的当前活动会话,并将其替换为新的启动服务器会话。

参数

  • session_ptr:指向 LWM2M 客户端会话控制块的指针。
  • security_id:如果启动服务器未定义有任何安全实例,则启动服务器的安全实例 ID 必须设置为 NX_LWM2M_RESERVED_ID (65535)。
  • ip_address:服务器的 IP 地址。
  • port:服务器的 UDP 端口。
  • dtls_session_ptr:要用于启动会话的 DTLS 会话。
  • dtls_local_port:用于 DTLS 会话的本地 UDP 端口。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_NOT_FOUND:没有与安全实例 ID 相对应的安全对象实例。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_session_create

创建 LWM2M 客户端会话

原型

UINT nx_lwm2m_client_session_create(
    NX_LWM2M_CLIENT_SESSION *session_ptr,
    NX_LWM2M_CLIENT *client_ptr,
    NX_LWM2M_CLIENT_SESSION_STATE_CALLBACK state_callback);

说明

此服务创建新的 LWM2M 客户端会话,该会话会附加到现有的 LWM2M 客户端。 LWM2M 客户端使用该会话与启动服务器或 LWM2M 服务器进行通信。

应用程序必须提供一个回调函数,以在会话状态更新时调用该函数。

参数

  • session_ptr:指向 LWM2M 客户端会话控制块的指针。
  • client_ptr:指向以前所创建 LWM2M 客户端的指针。
  • state_callback:会话状态更改时调用的应用程序回调。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_session_delete

删除 LWM2M 客户端会话

原型

UINT nx_lwm2m_client_session_delete(NX_LWM2M_CLIENT_SESSION *session_ptr);

说明

此服务删除 LWM2M 客户端会话。

通过调用 nx_lwm2m_client_delete 删除 LWM2M 客户端时,还会删除所有附加到该客户端的会话。

参数

  • session_ptr:指向 LWM2M 客户端会话控制块的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_session_deregister

终止与 LWM2M 服务器的会话

原型

UINT nx_lwm2m_client_session_deregister(NX_LWM2M_CLIENT_SESSION *session_ptr);

说明

此服务对 LWM2M 服务器执行“注销”操作。

参数

  • session_ptr:指向 LWM2M 客户端会话控制块的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_NOT_REGISTERED:该客户端未向服务器注册。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_session_error_get

获取会话的最后一个错误

原型

UINT nx_lwm2m_client_session_error_get(NX_LWM2M_CLIENT_SESSION *session_ptr);

说明

当会话处于错误状态时,此服务会返回该会话的错误代码。

参数

  • session_ptr:指向 LWM2M 客户端会话控制块的指针。

返回值

  • NX_SUCCESS:该会话并非处于错误状态。
  • NX_LWM2M_ADDRESS_ERROR:服务器地址无效。
  • NX_LWM2M_BUFFER_TOO_SMALL:请求有效负载在网络缓冲区中放不下。
  • NX_LWM2M_DTLS_ERROR:未能与服务器建立安全连接。
  • NX_LWM2M_ERROR:未指定的错误。
  • NX_LWM2M_FORBIDDEN:注册被服务器拒绝。
  • NX_LWM2M_NOT_FOUND:执行更新/注销时,服务器找不到客户端。
  • NX_LWM2M_SERVER_INSTANCE_DELETED:与该会话相对应的服务器对象实例已删除。
  • NX_LWM2M_TIMED_OUT:服务器无应答。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_session_register

启动与 LWM2M 服务器的会话

原型

UINT nx_lwm2m_client_session_register(
    NX_LWM2M_CLIENT_SESSION *session_ptr,
    NX_LWM2M_ID server_id,
    ULONG ip_address, UINT port);

说明

此服务对 LWM2M 服务器执行“注册”操作。 该服务器在服务器对象中必须有相应的服务器实例。

如果注册成功,则 LWM2M 客户端会处理来自服务器的进一步操作,并且会定期发送“更新”消息,直到该客户端注销为止。

此调用会中止所有的当前活动会话,并将其替换为新的 LWM2M 服务器会话。

参数

  • session_ptr:指向 LWM2M 客户端会话控制块的指针。
  • server_id:LWM2M 服务器的短服务器 ID。
  • ip_address:服务器的 IP 地址。
  • port:服务器的 UDP 端口。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_NOT_FOUND:没有与该短服务器 ID 相对应的服务器对象实例。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_session_register_dtls

启动与 LWM2M 服务器的安全会话

原型

UINT nx_lwm2m_client_session_register_dtls(
    NX_LWM2M_CLIENT_SESSION *session_ptr,
    NX_LWM2M_ID server_id,
    ULONG ip_address,
    UINT port,
    NX_SECURE_DTLS_SESSION *dtls_session_ptr,
    UINT dtls_local_port);

说明

此服务使用安全 DTLS 连接对 LWM2M 服务器执行“注册”操作。 该服务器在服务器对象中必须有相应的服务器实例。

在调用此函数之前,必须为 DTLS 会话配置正确的密码套件和密钥材料。 必须定义 NX_SECURE_ENABLE_DTLS。

每个 DTLS 会话都使用自己的 UDP 套接字进行通信,因此,当应用程序创建多个安全会话时,各个会话的本地端口 dtls_local_port 不得相同。

如果注册成功,则 LWM2M 客户端会处理来自服务器的进一步操作,并且会定期发送“更新”消息,直到该客户端注销为止。

此调用会中止所有的当前活动会话,并将其替换为新的 LWM2M 服务器会话。

参数

  • session_ptr:指向 LWM2M 客户端会话控制块的指针。
  • server_id:LWM2M 服务器的短服务器 ID。
  • ip_address:服务器的 IP 地址。
  • port:服务器的 UDP 端口。
  • dtls_session_ptr:要用于 LWM2M 会话的 DTLS 会话。
  • dtls_local_port:用于 DTLS 会话的本地 UDP 端口。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_NOT_FOUND:没有与该短服务器 ID 相对应的服务器对象实例。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_session_update

更新与 LWM2M 服务器的会话

原型

UINT nx_lwm2m_client_session_update(NX_LWM2M_CLIENT_SESSION *session_ptr);

说明

此服务对 LWM2M 服务器执行“更新”操作。

参数

  • session_ptr:指向 LWM2M 客户端会话控制块的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_NOT_REGISTERED:该客户端未向服务器注册。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_client_unlock

解锁 LWM2M 客户端

原型

UINT nx_lwm2m_client_unlock(NX_LWM2M_CLIENT *client_ptr);

说明

此服务通过调用 nx_lwm2m_client_unlock 来解除锁定之前锁定的 LWM2M 客户端。

参数

  • client_ptr:指向 LWM2M 客户端控制块的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_firmware_create

创建固件更新对象

原型

UINT nx_lwm2m_firmware_create(
    NX_LWM2M_FIRMWARE *firmware_ptr,
    NX_LWM2M_CLIENT *client_ptr, UINT protocols,
    NX_LWM2M_FIRMWARE_PACKAGE_CALLBACK package_callback,
    NX_LWM2M_FIRMWARE_PACKAGE_URI_CALLBACK package_uri_callback,
    NX_LWM2M_FIRMWARE_UPDATE_CALLBACK update_callback);

说明

此服务初始化固件更新对象,并将该对象添加到以前创建的 LWM2M 客户端。 该固件更新对象实现了用于与 LWM2M 服务器通信的资源,但应用程序必须提供回调,才能在固件上实现实际的操作(下载、存储以及更新固件)。

protocols 参数指出应用程序支持哪些协议来通过“包 URI”资源检索固件,其中定义了以下标志:

  • NX_LWM2M_FIRMWARE_PROTOCOL_COAP、
  • NX_LWM2M_FIRMWARE_PROTOCOL_COAPS、
  • NX_LWM2M_FIRMWARE_PROTOCOL_HTTP、
  • NX_LWM2M_FIRMWARE_PROTOCOL_HTPPS。

参数

  • firmware_ptr:指向固件对象控制块的指针。
  • client_ptr:指向以前所创建 LWM2M 客户端的指针。
  • protocols:这是一些标志,它们指出“包 URI”资源支持哪些协议。
  • package_callback:必须为 NULL [待定]。
  • package_uri_callback:用于实现“包 URI”资源的回调。
  • update_callback:用于实现“更新”资源的回调。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_firmware_package_info_set

设置固件更新包信息

原型

UINT nx_lwm2m_firmware_package_info_set(
    NX_LWM2M_FIRMWARE *firmware_ptr,
    const CHAR *name,
    const CHAR *version);

说明

此服务更改固件更新对象的“包名称”(6) 和“包版本”(7) 资源的值。

参数

  • firmware_ptr:指向固件更新对象的指针。
  • name:包名称的新值。
  • version:包版本的新值。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_firmware_result_set

设置固件更新结果

原型

UINT nx_lwm2m_firmware_result_set(
    NX_LWM2M_FIRMWARE *firmware_ptr,
    UCHAR result);

说明

此服务更改固件更新对象的“更新结果”(5) 资源的值。

参数

  • firmware_ptr:指向固件更新对象的指针。
  • result:“更新结果”资源的新值。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_firmware_state_set

设置固件更新状态

原型

UINT nx_lwm2m_firmware_state_set(
    NX_LWM2M_FIRMWARE *firmware_ptr,
    UCHAR state);

说明

此服务更改固件更新对象的“状态”(3) 资源的值。

参数

  • firmware_ptr:指向固件更新对象的指针。
  • state:“状态”资源的新值。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_object_resource_changed

指出对象实例的资源值已更改

原型

UINT nx_lwm2m_object_resource_changed(
    NX_LWM2M_OBJECT *object_ptr,
    NX_LWM2M_OBJECT_INSTANCE *instance_ptr,
    const NX_LWM2M_RESOURCE *resource);

说明

此服务由对象实现用来向 LWM2M 客户端发出信号,指出其某个资源值已更改。 当 LWM2M 服务器观察到资源时,LWM2M 客户端就会发送通知。

参数

  • object_ptr:指向对象实现的指针。
  • instance_ptr:指向对象实例的指针。
  • resource:指向一个结构的指针,该结构说明已更改的资源。

返回值

  • NX_SUCCESS:操作成功。
  • NX_PTR_ERROR:指针无效。

nx_lwm2m_resource_get_boolean

获取布尔资源的值

原型

UINT nx_lwm2m_resource_get_boolean(
    const NX_LWM2M_RESOURCE *value,
    NX_LWM2M_BOOL *bool_ptr);

说明

此服务检索布尔资源的值。

参数

  • value:指向资源值说明的指针。
  • bool_ptr:指向目标布尔值的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_ENCODING:该资源值不是布尔值。

nx_lwm2m_resource_get_float32

获取 32 位浮点资源的值

原型

UINT nx_lwm2m_resource_get_float32(
    const NX_LWM2M_RESOURCE *value,
    NX_LWM2M_FLOAT32 *float32_ptr);

说明

此服务检索 32 位浮点资源的值。

参数

  • value:指向资源值说明的指针。
  • float32_ptr:指向目标 32 位浮点值的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_ENCODING:该资源值不是浮点值。

nx_lwm2m_resource_get_float64

获取 64 位浮点资源的值

原型

UINT nx_lwm2m_resource_get_float64(
    const NX_LWM2M_RESOURCE *value,
    NX_LWM2M_FLOAT64 *float64_ptr);

说明

此服务检索 64 位浮点资源的值。

参数

  • value:指向资源值说明的指针。
  • float64_ptr:指向目标 64 位浮点值的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_ENCODING:该资源值不是浮点值。

nx_lwm2m_resource_get_integer32

获取 32 位整数资源的值

原型

UINT nx_lwm2m_resource_get_integer32(
    const NX_LWM2M_RESOURCE *value,
    NX_LWM2M_INT32 *int32_ptr);

说明

此服务检索 32 位整数资源的值。

参数

  • value:指向资源值说明的指针。
  • int32_ptr:指向目标 32 位整数值的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_ENCODING:该资源值不是整数值,或者该整数值在 32 位数字中放不下。

nx_lwm2m_resource_get_integer64

获取 64 位整数资源的值

原型

UINT nx_lwm2m_resource_get_integer64(
    const NX_LWM2M_RESOURCE *value,
    NX_LWM2M_INT64 *int64_ptr);

说明

此服务检索 64 位整数资源的值。

参数

  • value:指向资源值说明的指针。
  • int64_ptr:指向目标 64 位整数值的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_ENCODING:该资源值不是整数值。

nx_lwm2m_resource_get_objlnk

获取对象链接资源的值

原型

UINT nx_lwm2m_resource_get_objlnk(
    const NX_LWM2M_RESOURCE *value,
    NX_LWM2M_OBJLNK *objlnk_ptr);

说明

此服务检索对象链接资源的值。

参数

  • value:指向资源值说明的指针。
  • objlnk_ptr:指向目标对象链接值的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_ENCODING:该资源值不是对象链接值。

nx_lwm2m_resource_get_opaque

获取不透明资源的值

原型

UINT nx_lwm2m_resource_get_opaque(
    const NX_LWM2M_RESOURCE *value,
    const VOID **opaque_ptr_ptr,
    UINT *opaque_length_ptr);

说明

此服务检索不透明资源的值。

不透明资源值是由指向缓冲区的指针以及长度所组成。

参数

  • value:指向资源值说明的指针。
  • opaque_ptr_ptr:指向目标不透明缓冲区指针的指针。
  • opaque_length_ptr:指向目标不透明缓冲区长度的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_ENCODING:该资源值不是不透明值。

nx_lwm2m_resource_get_string

获取字符串资源的值

原型

UINT nx_lwm2m_resource_get_string(
    const NX_LWM2M_RESOURCE *value,
    const CHAR **string_ptr_ptr,
    UINT *string_length_ptr);

说明

此服务检索字符串资源的值。

参数

  • value:指向资源值说明的指针。
  • string_ptr_ptr:指向目标字符串指针的指针。
  • string_length_ptr:指向目标字符串长度的指针。 如果字符串是以 NULL 结尾,则此参数可以为 NULL。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_ENCODING:该资源值不是字符串值。

nx_lwm2m_resource_multiple_get_boolean

获取布尔资源多重资源实例的值

原型

UINT nx_lwm2m_resource_multiple_get_boolean(
    const NX_LWM2M_RESOURCE *value,
    int index,
    NX_LWM2M_ID *instance_id_ptr,
    NX_LWM2M_BOOL *bool_ptr);

说明

此服务从多重资源检索布尔资源实例的值。

参数

  • value:指向多重资源值说明的指针。
  • index:要检索的实例在资源值数组中的下标。
  • instance_id_ptr:指向目标实例 ID 的指针。
  • bool_ptr:指向目标布尔值的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_PARAMETER:下标超出范围。
  • NX_LWM2M_BAD_ENCODING:该资源不是多重资源,或资源值不是布尔值。

nx_lwm2m_resource_multiple_get_float32

获取 32 位浮点多重资源实例的值

原型

UINT nx_lwm2m_resource_multiple_get_float32(
    const NX_LWM2M_RESOURCE *value,
    int index,
    NX_LWM2M_ID *instance_id_ptr,
    NX_LWM2M_FLOAT32 *float32_ptr);

说明

此服务从多重资源检索 32 位浮点资源实例的值。

参数

  • value:指向多重资源值说明的指针。
  • index:要检索的实例在资源值数组中的下标。
  • instance_id_ptr:指向目标实例 ID 的指针。
  • float32_ptr:指向目标 32 位浮点值的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_PARAMETER:下标超出范围。
  • NX_LWM2M_BAD_ENCODING:该资源不是多重资源,或资源值不是浮点值。

nx_lwm2m_resource_multiple_get_float64

获取 64 位浮点多重资源实例的值

原型

UINT nx_lwm2m_resource_multiple_get_float64(
    const NX_LWM2M_RESOURCE *value,
    int index,
    NX_LWM2M_ID *instance_id_ptr,
    NX_LWM2M_FLOAT64 *float64_ptr);

说明

此服务从多重资源检索 64 位浮点资源实例的值。

参数

  • value:指向多重资源值说明的指针。
  • index:要检索的实例在资源值数组中的下标。
  • instance_id_ptr:指向目标实例 ID 的指针。
  • float64_ptr:指向目标 64 位浮点值的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_PARAMETER:下标超出范围。
  • NX_LWM2M_BAD_ENCODING:该资源不是多重资源,或资源值不是浮点值。

nx_lwm2m_resource_multiple_get_integer32

获取 32 位整数多重资源实例的值

原型

UINT nx_lwm2m_resource_multiple_get_integer32(
    const NX_LWM2M_RESOURCE *value,
    int index,
    NX_LWM2M_ID *instance_id_ptr,
    NX_LWM2M_INT32 *int32_ptr);

说明

此服务从多重资源检索 32 位整数资源实例的值。

参数

  • value:指向多重资源值说明的指针。
  • index:要检索的实例在资源值数组中的下标。
  • instance_id_ptr:指向目标实例 ID 的指针。
  • int32_ptr:指向目标 32 位整数值的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_PARAMETER:下标超出范围。
  • NX_LWM2M_BAD_ENCODING:该资源不是多重资源,或资源值不是整数值,或者该整数值在 32 位数字中放不下。

nx_lwm2m_resource_multiple_get_integer64

获取 64 位整数多重资源实例的值

原型

UINT nx_lwm2m_resource_multiple_get_integer64(
    const NX_LWM2M_RESOURCE *value,
    int index,
    NX_LWM2M_ID *instance_id_ptr,
    NX_LWM2M_INT64 *int64_ptr);

说明

此服务从多重资源检索 64 位整数资源实例的值。

参数

  • value:指向多重资源值说明的指针。
  • index:要检索的实例在资源值数组中的下标。
  • instance_id_ptr:指向目标实例 ID 的指针。
  • int64_ptr:指向目标 64 位整数值的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_PARAMETER:下标超出范围。
  • NX_LWM2M_BAD_ENCODING:该资源不是多重资源,或资源值不是整数值。

nx_lwm2m_resource_multiple_get_objlnk

获取对象链接多重资源实例的值

原型

UINT nx_lwm2m_resource_multiple_get_objlnk(
    const NX_LWM2M_RESOURCE *value,
    int index,
    NX_LWM2M_ID *instance_id_ptr,
    NX_LWM2M_OBJLNK *objlnk_ptr);

说明

此服务从多重资源检索对象链接资源实例的值。

参数

  • value:指向多重资源值说明的指针。
  • index:要检索的实例在资源值数组中的下标。
  • instance_id_ptr:指向目标实例 ID 的指针。
  • objlnk_ptr:指向目标对象链接值的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_PARAMETER:下标超出范围。
  • NX_LWM2M_BAD_ENCODING:该资源不是多重资源,或资源值不是对象链接值。

nx_lwm2m_resource_multiple_get_opaque

获取不透明多重资源实例的值

原型

UINT nx_lwm2m_resource_multiple_get_opaque(
    const NX_LWM2M_RESOURCE *value,
    int index,
    NX_LWM2M_ID *instance_id_ptr,
    const VOID **opaque_ptr_ptr,
    UINT *opaque_length_ptr);

说明

此服务从多重资源检索不透明资源实例的值。

不透明资源值是由指向缓冲区的指针以及长度所组成。

参数

  • value:指向多重资源值说明的指针。
  • index:要检索的实例在资源值数组中的下标。
  • instance_id_ptr:指向目标实例 ID 的指针。
  • opaque_ptr_ptr:指向目标不透明缓冲区指针的指针。
  • opaque_length_ptr:指向目标不透明缓冲区长度的指针。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_PARAMETER:下标超出范围。
  • NX_LWM2M_BAD_ENCODING:该资源不是多重资源,或资源值不是不透明值。

nx_lwm2m_resource_multiple_get_string

获取字符串多重资源实例的值

原型

UINT nx_lwm2m_resource_multiple_get_string(
    const NX_LWM2M_RESOURCE *value,
    int index,
    NX_LWM2M_ID *instance_id_ptr,
    const CHAR **string_ptr_ptr,
    UINT *string_length_ptr);

说明

此服务从多重资源检索字符串资源实例的值。

参数

  • value:指向多重资源值说明的指针。
  • index:要检索的实例在资源值数组中的下标。
  • instance_id_ptr:指向目标实例 ID 的指针。
  • string_ptr_ptr:指向目标字符串指针的指针。
  • string_length_ptr:指向目标字符串长度的指针。 如果字符串是以 NULL 结尾,则此参数可以为 NULL。

返回值

  • NX_SUCCESS:操作成功。
  • NX_LWM2M_BAD_PARAMETER:下标超出范围。
  • NX_LWM2M_BAD_ENCODING:该资源不是多重资源,或实例值不是字符串值。