void aciga_model_dev_reset(aciga_peer_device_t *src, uint8_t flag) { ACIGA_LOGD("aciga_model_dev_reset"); if (flag) { bt_mesh_reset(); aciga_connect_adv_set_enable(1); aciga_network_reset_handle(); } else { bt_mesh_clear(); aciga_connect_adv_set_enable(1); } }
时间: 2023-09-11 16:11:03 浏览: 148
这是一个函数,其功能是重置设备模型。具体来说,该函数接收一个指向设备的指针和一个标志位。如果标志位为1,则函数执行重置操作,包括调用 bt_mesh_reset 函数重置 Mesh 网络,调用 aciga_connect_adv_set_enable 函数使设备能够发送广告信息,调用 aciga_network_reset_handle 函数重置网络处理函数。如果标志位为0,则函数执行清除操作,包括调用 bt_mesh_clear 函数清除 Mesh 网络和调用 aciga_connect_adv_set_enable 函数使设备能够发送广告信息。函数执行完成后,设备模型将被重置或清除。
相关问题
typedef struct aciga_dev_model_srv_cbs { void (*dev_prop_write_cb)(aciga_peer_device_t *src, uint8_t n_svc, aciga_service_data_t svc[]); void (*dev_prop_read_cb)(aciga_peer_device_t *src, uint8_t msgid, uint8_t n_svc, aciga_service_read_param_t svc[]); void (*dev_action_in_cb)(aciga_peer_device_t *src, uint8_t msgid, uint32_t runid, uint8_t aiid, aciga_service_data_t *svc); void (*dev_reset_cb)(aciga_peer_device_t *src, uint8_t flag); //flag 0: unbind without clear user data, 1: unbind and clear user data void (*dev_time_sync_data_cb)(aciga_peer_device_t *src, uint64_t utc_timestamp, int tz_offset_minutes); void (*dev_wifi_conf_cb)(aciga_peer_device_t *src, const char *ssid, const char *psk); void (*dev_group_add_cb)(aciga_peer_device_t *src, uint8_t msgid, int n_group, uint16_t groups[]); void (*dev_group_del_cb)(aciga_peer_device_t *src, uint8_t msgid, int n_group, uint16_t groups[]); void (*dev_group_get_cb)(aciga_peer_device_t *src, uint8_t msgid); void (*dev_relay_set_cb)(aciga_peer_device_t *src, uint8_t msgid, uint8_t enable); void (*dev_relay_get_cb)(aciga_peer_device_t *src, uint8_t msgid); void (*dev_factory_test_cmd_cb)(aciga_peer_device_t *src, const uint8_t *payload, size_t len); void (*dev_scene_conf_cb)(aciga_peer_device_t *src, uint8_t msgid, const uint8_t *payload, size_t len); } aciga_dev_model_srv_cbs_t;
这是一个结构体类型定义,名为`aciga_dev_model_srv_cbs_t`,其中包含了多个函数指针成员,每个函数指针成员都对应着一种回调函数。该结构体类型很可能是一个设备模型服务的回调函数集合,用于指定在设备模型服务中,当某个事件或操作发生时,应该调用哪些回调函数来进行处理。
具体来说,该结构体类型中的每个函数指针成员都有着不同的作用:
- `dev_prop_write_cb`:设备属性写回调函数,当需要写入设备属性时,会调用该回调函数来实现写入操作。
- `dev_prop_read_cb`:设备属性读回调函数,当需要读取设备属性时,会调用该回调函数来实现读取操作。
- `dev_action_in_cb`:设备动作回调函数,当需要执行某个设备动作时,会调用该回调函数来实现动作执行。
- `dev_reset_cb`:设备重置回调函数,当需要重置设备时,会调用该回调函数来实现重置操作。
- `dev_time_sync_data_cb`:时间同步回调函数,当需要对设备进行时间同步时,会调用该回调函数来实现同步操作。
- `dev_wifi_conf_cb`:WiFi配置回调函数,当需要对设备进行WiFi配置时,会调用该回调函数来实现配置操作。
- `dev_group_add_cb`:设备分组添加回调函数,当需要将设备添加到某个分组时,会调用该回调函数来实现添加操作。
- `dev_group_del_cb`:设备分组删除回调函数,当需要将设备从某个分组中删除时,会调用该回调函数来实现删除操作。
- `dev_group_get_cb`:设备分组查询回调函数,当需要查询设备所在的所有分组时,会调用该回调函数来实现查询操作。
- `dev_relay_set_cb`:继电器设置回调函数,当需要设置设备继电器状态时,会调用该回调函数来实现设置操作。
- `dev_relay_get_cb`:继电器查询回调函数,当需要查询设备继电器状态时,会调用该回调函数来实现查询操作。
- `dev_factory_test_cmd_cb`:设备出厂测试命令回调函数,当需要执行设备出厂测试命令时,会调用该回调函数来实现测试操作。
- `dev_scene_conf_cb`:场景配置回调函数,当需要对设备进行场景配置时,会调用该回调函数来实现配置操作。
void aciga_model_dev_action_in( aciga_peer_device_t *src, uint8_t msgid, uint32_t runid, uint8_t aiid, aciga_service_data_t *svc) { uint8_t siid = 0, piid = 0, *data = NULL, len = 0; if (!svc) return; siid = svc->siid; if (svc->n_piid) { piid = svc->props[0].piid; data = svc->props[0].value; len = svc->props[0].len; } aciga_model_do_action(aiid, siid, piid, data, len); aciga_action_out(src, msgid, 0, runid, aiid, svc); }解释一下这个函数的功能
这是一个函数,其功能是接收来自设备的服务请求,并将请求转发给模型处理。具体来说,该函数接收一个指向发送服务请求的设备的指针,一个消息ID,一个运行ID,一个AI ID和一个指向服务数据结构的指针。如果服务数据结构为空,则函数直接返回,否则提取服务数据结构中的服务ID,属性ID,属性值和属性值长度,并调用 aciga_model_do_action 函数,以便将服务请求转发给模型处理。然后,函数调用 aciga_action_out 函数,将响应发送回设备。
阅读全文