const struct attm_desc hids_att_db [hogpd_idx_nb] = {
// HID服务声明
[hogpd_idx_svc] = {att_decl_primary_service,
perm(rd,启用),
sizeof(hid_svc),sizeof(hid_svc),
(UINT8_T *)和HID_SVC},
// HID服务声明
[hogpd_idx_incl_svc] = {att_decl_include,
perm(rd,启用),
sizeof(struct att_incl_desc),0,
空值},
// HID信息特征声明
[hogpd_idx_hid_info_char] = {att_decl_characterativer,
perm(rd,启用),
sizeof(hids_hid_info_char),sizeof(hids_hid_info_char),
(uint8_t *)&hids_hid_info_char},
// HID信息特征值
[hogpd_idx_hid_info_val] = {att_char_hid_info,
perm(rd,启用),
sizeof(struct hids_hid_info),0,
空值},
// HID控制点特征声明
[hogpd_idx_hid_ctnl_pt_char] = {att_decl_characterativer,
perm(rd,启用),
sizeof(hids_hid_ctnl_pt_char),sizeof(hids_hid_ctnl_pt_char),
(uint8_t *)&hids_hid_ctnl_pt_char},
// HID控制点特征值
[hogpd_idx_hid_ctnl_pt_val] = {att_char_hid_ctnl_pt,
perm(wr,启用),
sizeof(uint8_t),0,
空值},
//报告地图特征声明
[hogpd_idx_report_map_char] = {att_decl_characterativer,
perm(rd,启用),
sizeof(hids_report_map_char),sizeof(hids_report_map_char),
(UINT8_T *)&HIDS_REPORT_MAP_CHAR},
//报告地图特征值
[hogpd_idx_report_map_val] = {att_char_report_map,
perm(rd,启用),
hogpd_report_map_max_len * sizeof(uint8_t),0,
空值},
//报告地图特征 - 外部报告参考描述符
[hogpd_idx_report_map_ext_rep_ref] = {att_desc_ext_report_ref,
perm(rd,启用),
sizeof(uint16_t),0,
空值},
......
}
有一些方法可以设置“HID信息特征值”的值和其他特征值??
我刚刚找到了“hogpd_set_report_map_req_handler”,它是设置“报告地图特征值”的函数
我尝试创建一个类似于“hogpd_set_report_map_req_handler”的函数。函数运行,但它没有工作。
静态int hogpd_set_hid_info_val_req_handler(ke_msg_id_t const msgid,
struct hogpd_set_report_map_req const * param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
// 地位
uint8_t status = prf_err_invalid_param;
//检查报告地图值长度
if(param-> report_map_len <= sizeof(struct hids_hid_info))
{
//检查HIDS实例 - 报表地图特征是强制性的,已添加。
if(param-> hids_nb
//设置报告地图char。价值
#ifndef udder_one_hids_instance.
status = attmdb_att_set_value(hogpd_env.shdl [param-> hids_nb] + hogpd_env.att_tbl [param-> hids_nb] [hogpd_hid_info_char] + 1,
param-> eport_map_len,
(UINT8_T *)&PARAM-> REPORT_MAP [0]);
#别的
status = attmdb_att_set_value(hogpd_env.shdl [0] + hogpd_env.att_tbl [0] [hogpd_hid_info_char] + 1,
param-> eport_map_len,
(UINT8_T *)&PARAM-> REPORT_MAP [0]);
#万一
}
别的
{
//报告地图char。不在DB中 - 请求不允许
status = prf_err_req_disalded;
}
}
if(状态!= prf_err_ok)
{
//连接不存在,请求禁止
prf_server_error_ind_send((prf_env_struct *)&hogpd_env,status,
hogpd_error_ind,hogpd_set_char_val_req);
}
return(ke_msg_consumed);
}
威斯利,
我唯一可以看到的是从示例函数改变的是,你用32个字节的结构的大小替换了hogpd_report_map_max_len(512),这足以让您的报告地图的尺寸?我想如果函数返回任何错误,但设备不起作用也许您应该检查您的报表地图。
谢谢mt_dialog.