int aciga_action_in_set_keys(uint8_t msgid, uint32_t runid, uint8_t aiid, aciga_service_data_t *svc,uint8_t *out,int *out_len ) { ACIGA_LOGD("[ACTION_IN] %s",__func__); uint16_t key_id ; uint8_t week ; uint32_t date_start_time ; uint32_t date_end_time; uint16_t start_time; uint16_t end_time; props_data_t data[6]; data[0].piid = E_LOCK_PIID_KEY_ID; data[1].piid = E_LOCK_PIID_WEEKEND; data[2].piid = E_LOCK_PIID_START_TIME; data[3].piid = E_LOCK_PIID_END_TIME; data[4].piid = E_LOCK_PIID_START_DATA; data[5].piid = E_LOCK_PIID_END_DATE; if(aciga_action_in_scv_get_piid_val(svc,(props_data_t *)&data,ARRAY_SIZE(data))==0){ ACIGA_LOGE("get piid error"); return -1; }
时间: 2024-04-06 18:29:28 浏览: 64
这段代码定义了一个名为 aciga_action_in_set_keys 的函数,它有六个参数,分别为 msgid、runid、aiid、svc、out 和 out_len。函数返回一个 int 类型的值。
函数的主要作用是从 svc 中获取一组属性值,并根据这些属性值执行一些动作。具体来说,函数首先使用 __func__ 宏打印日志,然后声明了一些变量,包括 key_id、week、date_start_time、date_end_time、start_time、end_time 和 data 数组。
接下来,函数使用数组 data 来存储属性值,每个属性值都有一个 piid 标识符,分别为 E_LOCK_PIID_KEY_ID、E_LOCK_PIID_WEEKEND、E_LOCK_PIID_START_TIME、E_LOCK_PIID_END_TIME、E_LOCK_PIID_START_DATA 和 E_LOCK_PIID_END_DATE。
函数调用了 aciga_action_in_scv_get_piid_val 函数来从 svc 中获取属性值,并将这些值存储在 data 数组中。如果获取属性值失败,则函数返回 -1。
总之,这段代码实现了从 svc 中获取属性值并执行相应动作的功能。
相关问题
const static action_in_cmd_pro_t g_action_in_cmd_pro[] = { {E_LOCK_AIID_OPEN_DOOR , aciga_action_in_open_door}, {E_LOCK_AIID_ADD_KEYS ,aciga_action_in_add_keys }, {E_LOCK_AIID_DELETE_KEYS_BY_ID ,aciga_action_in_delete_keys_by_id }, {E_LOCK_AIID_DELETE_KEYS_BY_TYPE ,aciga_action_in_delete_keys_by_type }, {E_LOCK_AIID_GET_KEYS_BY_ID ,aciga_action_in_get_keys_by_id }, {E_LOCK_AIID_SET_KEYS ,aciga_action_in_set_keys }, {E_LOCK_AIID_REENTER_KEYS ,aciga_action_in_reenter_keys }, {E_LOCK_AIID_GET_CACHED_EVENTS_INFO ,aciga_action_in_get_cached_events_info }, {E_LOCK_AIID_GET_CACHED_EVENT_BY_ID ,aciga_action_in_get_cached_event_by_id }, {E_LOCK_AIID_GET_CACHED_EVENT_LIST ,aciga_action_in_get_cached_event_list }, {E_LOCK_AIID_VERIFY_ADMIN_PASSCODE ,aciga_action_in_verify_admin_passcode }, {E_LOCK_AIID_GET_KEYS_ID ,aciga_action_in_get_keys_id }, };
这是一个静态常量数组,数组名为g_action_in_cmd_pro,类型为action_in_cmd_pro_t。该数组中包含多个结构体元素,每个结构体元素包含两个字段:第一个字段为枚举类型E_LOCK_AIID_XXX,第二个字段为函数指针,指向一个函数,函数的类型为aciga_action_in_XXX。这个数组用于将不同的枚举类型与对应的函数关联起来,实现不同的操作函数调用。
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`:场景配置回调函数,当需要对设备进行场景配置时,会调用该回调函数来实现配置操作。
阅读全文