|
|
1、以ble键盘为例:
在hid remap数据组里,为了测试方便,在remap数值里增加了同样的键盘report,但是注意要修改report id,特征描述是需要传入report id;
2、在原有hid中增加特征:参考代码如下:
/* 添加描述符:HID report reference */
static void ble_add_hid_report_descriptor(uint8_t server_id, uint16_t srvc_handle, uint8_t * value, uint16_t len)
{
gatts_add_desc_info_t descriptor = {
.permissions = GATT_ATTRIBUTE_PERMISSION_READ,
.value = value,
.value_len = len,
};
bts_data_to_uuid_len2(BLE_UUID_REPORT_REFERENCE, &descriptor.desc_uuid);
gatts_add_descriptor(server_id, srvc_handle, &descriptor);
}
static void ble_hid_add_character_custom_report(uint8_t server_id, uint16_t srvc_handle)
{
uint8_t value[7] = { 0 };
gatts_add_character_result_t handle_result = { 0 };
gatts_add_chara_info_t character = {
.permissions = GATT_ATTRIBUTE_PERMISSION_READ,
.properties = HID_INPUT_REPORT_PROPERTIES,
.value_len = sizeof(value),
.value = value,
};
bts_data_to_uuid_len2(BLE_UUID_REPORT, &character.chara_uuid);
if (gatts_add_characteristic_sync(server_id, srvc_handle, &character, &handle_result) == ERRCODE_SUCC)
{
ble_hid_add_descriptor_ccc(server_id, srvc_handle);
uint8_t report_reference[] = { 2, 1 };
ble_add_hid_report_descriptor(server_id, srvc_handle, report_reference, sizeof(report_reference));
g_char_value_handle.nkro_handle = handle_result.value_handle;
}
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|