fix protocol mode and vendor report

This commit is contained in:
hathach 2022-10-28 00:33:46 +07:00
parent 535d9885ca
commit c8585052fe
No known key found for this signature in database
GPG key ID: F5D50C6D51D17CBA
3 changed files with 18 additions and 1 deletions

View file

@ -508,6 +508,7 @@
#endif
#ifndef BT_TRACE_VERBOSE
// #define BT_TRACE_VERBOSE TRUE
#define BT_TRACE_VERBOSE FALSE
#endif

View file

@ -219,6 +219,7 @@ tHID_STATUS HID_DevAddRecord(uint32_t handle, char *p_name, char *p_description,
HIDD_TRACE_API("%s", __func__);
HIDD_TRACE_API("desc_len = %d, p_desc_data = %02x %02X %02X %02X", desc_len, p_desc_data[0], p_desc_data[1], p_desc_data[2], p_desc_data[3]);
HIDD_TRACE_API("subclass = 0x%02X, name = %s, description = %s, provider = %s", subclass, p_name, p_description, p_provider);
// Service Class ID List
if (result) {

View file

@ -136,6 +136,8 @@ static esp_err_t bt_hidd_init_config(esp_bt_hidd_dev_t *dev, const esp_hid_devic
free(rmap);
return ESP_ERR_NO_MEM;
}
// ESP_LOGE(TAG, "rmap->reports_len = %u", rmap->reports_len);
for (uint8_t r = 0; r < rmap->reports_len; r++) {
dev->devices[d].reports[r].map_index = d;
dev->devices[d].reports[r].report_id = rmap->reports[r].report_id;
@ -143,6 +145,10 @@ static esp_err_t bt_hidd_init_config(esp_bt_hidd_dev_t *dev, const esp_hid_devic
dev->devices[d].reports[r].report_type = rmap->reports[r].report_type;
dev->devices[d].reports[r].usage = rmap->reports[r].usage;
dev->devices[d].reports[r].value_len = rmap->reports[r].value_len;
// hidd_report_item_t* item = &dev->devices[d].reports[r];
// ESP_LOGE(TAG, "reports[%u]: id = %u, protocol_mode = %u, type = %u, usage = %u, value_len = %u",
// r, item->report_id, item->protocol_mode, item->report_type, item->usage, item->value_len);
}
free(rmap->reports);
free(rmap);
@ -610,7 +616,7 @@ void bt_hidd_cb(esp_hidd_cb_event_t event, esp_hidd_cb_param_t *param)
param->open.bd_addr[2], param->open.bd_addr[3], param->open.bd_addr[4], param->open.bd_addr[5]);
osi_mutex_lock(&s_hidd_param.mutex, OSI_MUTEX_MAX_TIMEOUT);
s_hidd_param.dev->connected = true;
s_hidd_param.dev->protocol_mode = false; // hathach: default to report each connection
s_hidd_param.dev->protocol_mode = 0x01; // hathach: default to report each connection
memcpy(s_hidd_param.dev->remote_bda, param->open.bd_addr, ESP_BD_ADDR_LEN);
osi_mutex_unlock(&s_hidd_param.mutex);
} else {
@ -651,6 +657,7 @@ void bt_hidd_cb(esp_hidd_cb_event_t event, esp_hidd_cb_param_t *param)
&map_index);
if (p_rpt == NULL) {
ESP_LOGE(TAG, "Can not find report!");
ESP_LOGE(TAG, "ESP_HIDD_GET_REPORT_EVT: report id = %u, type = %u", param->get_report.report_id, param->get_report.report_type);
esp_bt_hid_device_report_error(ESP_HID_PAR_HANDSHAKE_RSP_ERR_INVALID_REP_ID);
break;
}
@ -692,6 +699,7 @@ void bt_hidd_cb(esp_hidd_cb_event_t event, esp_hidd_cb_param_t *param)
&map_index);
if (p_rpt == NULL) {
ESP_LOGE(TAG, "Can not find report!");
ESP_LOGE(TAG, "ESP_HIDD_SET_REPORT_EVT report id = %u, type = %u", param->set_report.report_id, param->set_report.report_type);
esp_bt_hid_device_report_error(ESP_HID_PAR_HANDSHAKE_RSP_ERR_INVALID_REP_ID);
break;
}
@ -752,6 +760,13 @@ void bt_hidd_cb(esp_hidd_cb_event_t event, esp_hidd_cb_param_t *param)
&map_index);
if (p_rpt == NULL) {
ESP_LOGE(TAG, "Can not find report!");
ESP_LOGE(TAG, "ESP_HIDD_INTR_DATA_EVT report id = %u, report = %u, protocol = %u",
param->intr_data.report_id, ESP_HID_REPORT_TYPE_OUTPUT, s_hidd_param.dev->protocol_mode);
/* for(uint32_t i=0; i<param->intr_data.len; i++)
{
printf("%02X ", param->intr_data.data[i]);
}
printf("\n"); */
break;
}