Skip to content

Instantly share code, notes, and snippets.

@kapi-no
Created February 19, 2020 14:22
Show Gist options
  • Save kapi-no/ce902e1aed6aac57eae2c6a3eabf7b58 to your computer and use it in GitHub Desktop.
Save kapi-no/ce902e1aed6aac57eae2c6a3eabf7b58 to your computer and use it in GitHub Desktop.
BLE HIDS: setting Feature Report content dynamically
uint32_t ble_hids_feat_rep_set(ble_hids_t * p_hids,
uint8_t rep_index,
uint16_t len,
uint8_t offset,
uint16_t conn_handle,
uint8_t * p_feat_rep)
{
VERIFY_PARAM_NOT_NULL(p_hids);
VERIFY_PARAM_NOT_NULL(p_feat_rep);
ret_code_t err_code;
uint8_t * p_rep_data;
uint8_t index;
if (rep_index >= p_hids->feature_rep_count)
{
return NRF_ERROR_INVALID_PARAM;
}
err_code = blcm_link_ctx_get(p_hids->p_link_ctx_storage,
conn_handle,
(void *) &p_rep_data);
VERIFY_SUCCESS(err_code);
p_rep_data += sizeof(ble_hids_client_context_t) + BOOT_KB_INPUT_REPORT_MAX_SIZE +
BOOT_KB_OUTPUT_REPORT_MAX_SIZE + BOOT_MOUSE_INPUT_REPORT_MAX_SIZE;
for (index = 0; index < p_hids->inp_rep_count; index++)
{
p_rep_data += p_hids->p_inp_rep_init_array[index].max_len;
}
for (index = 0; index < p_hids->outp_rep_count; index++)
{
p_rep_data += p_hids->p_outp_rep_init_array[index].max_len;
}
for (index = 0; index < rep_index; index++)
{
p_rep_data += p_hids->p_feature_rep_init_array[index].max_len;
}
// Copy the requested feature report data
if (len + offset <= p_hids->p_feature_rep_init_array[rep_index].max_len)
{
memcpy(p_rep_data + offset, p_feat_rep, len);
}
else
{
return NRF_ERROR_INVALID_LENGTH;
}
return NRF_SUCCESS;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment