设备重置

更新时间:2024-03-07 07:30:53下载pdf

本文主要介绍 TuyaOS Bluetooth Mesh SDK 中设备重置相关的 API 与使用方法。设备重置除了可以使用手机 App 移除设备外,也可以通过按键或者通断电的方式对设备进行本地重置,设备重置后即可被重新发现与配网。

数据结构

MESH_PROVISION_TYPE_T

typedef enum {
    MESH_PB_GATT = 0x00,           /**< Enable PB-GATT, device can be provisioned by GATT connect (mobile phone use). */
    MESH_PB_ADV,                   /**< Enable PB-ADV, device can be provisioned by ADV (Gateway use). */
    MESH_PB_GATT_AND_PB_ADV,       /**< Enable PB-ADV and PB_ADV, device can be provisioned by ADV and GATT connect (Gateway use). */
    MESH_PROVISION_DISABLE,        /**< Disable provision, close the unprovision beacon and GATT unprovision adv. */
} MESH_PROVISION_TYPE_T;

此参数为设备配网使能 API 入参,可以选择开启或关闭未配网广播。选择 MESH_PROVISION_DISABLE 后,设备不会发送任何未配网广播,从而无法被 provisioner 发现与配网。

MESH_NETWORK_STATE_SET_T

typedef enum {
    MESH_NETWORK_RESET = 0x00,            /**< Kick out, mesh node will be in the unprovision state, and it will clear the mesh provision data in RAM and flash */
    MESH_NETWORK_RESET_WITH_RECOVER,      /**< Node reset in RAM, mesh node will be in the unprovision state, and it will clear the mesh provision data in RAM. The provision data is still stored in flash */
    MESH_NETWORK_RECOVER,                 /**< Recover the network, mesh node will be in the provision state, it will restore the provision data from flash into RAM */
} MESH_NETWORK_STATE_SET_T;

此参数为设备重置与恢复入参。

  • MESH_NETWORK_RESET 可将设备重置,设备重置之后无法恢复。App 或者网关发出的移除命令即使用此方式。

  • MESH_NETWORK_RESET_WITH_RECOVER 也可以将设备重置,但只会更新 RAM 内的网络信息,而不会擦除 Flash 内的数据。所以此方式可以从 Flash 内读出数据并恢复 Mesh 网络信息。一般设备在本地重置时可以选择此方式,尤其是通过 通断电 来实现本地重置时容易误操作。使用此方式可以快速恢复而无需重新配网。

  • 使用 MESH_NETWORK_RESET_WITH_RECOVER 方式重置后,API 入参选择 MESH_NETWORK_RECOVER,则可以将设备立即恢复到重置前的网络信息。另外,设备重启也可以恢复重置前的配网信息。

TAL_MESH_NET_STATE_T

typedef enum{
    TAL_MESH_POWER_ON_UNPROVISION = 0x00,
    TAL_MESH_POWER_ON_PROVISIONED,
    TAL_MESH_PROVISION_SUCCESS,

    TAL_MESH_RESET,
    TAL_MESH_RESET_IN_RAM,
    TAL_MESH_REVERT_IN_MESH,

    TAL_MESH_GROUP_SUB_ADD,
    TAL_MESH_GROUP_SUB_DEL,

    TAL_GATT_OTA_START,
    TAL_GATT_OTA_SUCCESS,
    TAL_GATT_OTA_FAIL,

    TAL_STATE_UNKONWN
}TAL_MESH_NET_STATE_T;

此参数为设备状态回调的事件类型,在 SDK 内的 Mesh 状态或者其他状态发生变化时,会通过回调函数通知应用层。

API 说明

设备重置与恢复

OPERATE_RET tal_mesh_network_state_set(MESH_NETWORK_STATE_SET_T net_state);

入参介绍参考前文数据结构,您可以根据设备的重置方式选择是否需要使用误重置恢复功能。

Mesh 网络状态回调

TUYA_WEAK_ATTRIBUTE VOID tal_mesh_state_callback(TAL_MESH_NET_STATE_T state);

以上为 Mesh 设备状态的回调,底层实现的方式为 weak 函数方式。如果业务层不实现函数实例,则底层会使用一个空函数链接到固件中。您需要在应用层实现此函数的实例,则 SDK 在相关操作后,通过此函数给到业务层提示。

设备配网使能

VOID tal_mesh_node_provision_enable(MESH_PROVISION_TYPE_T enable);

在设备处于未配网状态时,您可以调用此接口来关闭配网或者开启配网。在调用 MESH_PROVISION_DISABLE 后,设备将关闭所有未配网广播,App 与网关无法发现设备和配网。

此功能一般用于配网超时功能,例如设备重置后 10min 内可被发现与配网,10min 后则关闭配网使能,设备将不会被发现与配网。