Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ff0b8ea6 authored by Tom Huang's avatar Tom Huang Committed by Automerger Merge Worker
Browse files

Merge "Fix HID BTA_HH_GET_RPT_EVT callback data format" am: 2720aef7 am:...

Merge "Fix HID BTA_HH_GET_RPT_EVT callback data format" am: 2720aef7 am: febf89ec am: 69a23fd9 am: 5db39791

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/2027863



Change-Id: Iaedef0a41d3a6a35747baaa4feaae2d6a12c5bb7
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 8d19f2ed 5db39791
Loading
Loading
Loading
Loading
+39 −16
Original line number Diff line number Diff line
@@ -1017,33 +1017,56 @@ static uint8_t convert_api_sndcmd_param(const tBTA_HH_CMD_DATA& api_sndcmd) {
}

void bta_hh_write_dev_act(tBTA_HH_DEV_CB* p_cb, const tBTA_HH_DATA* p_data) {
  tBTA_HH_CBDATA cbdata = {BTA_HH_OK, 0};
  uint16_t event =
      (p_data->api_sndcmd.t_type - HID_TRANS_GET_REPORT) + BTA_HH_GET_RPT_EVT;

  if (p_cb->is_le_device)
    bta_hh_le_write_dev_act(p_cb, p_data);
  else
  {

    cbdata.handle = p_cb->hid_handle;

  else {
    /* match up BTE/BTA report/boot mode def */
    const uint8_t api_sndcmd_param =
        convert_api_sndcmd_param(p_data->api_sndcmd);

    if (HID_HostWriteDev(p_cb->hid_handle, p_data->api_sndcmd.t_type,
                         api_sndcmd_param, p_data->api_sndcmd.data,
    tHID_STATUS status = HID_HostWriteDev(p_cb->hid_handle,
                                          p_data->api_sndcmd.t_type,
                                          api_sndcmd_param,
                                          p_data->api_sndcmd.data,
                                          p_data->api_sndcmd.rpt_id,
                         p_data->api_sndcmd.p_data) != HID_SUCCESS) {
      APPL_TRACE_ERROR("HID_HostWriteDev Error ");
      cbdata.status = BTA_HH_ERR;
                                          p_data->api_sndcmd.p_data);
    if (status != HID_SUCCESS) {
      LOG_ERROR("HID_HostWriteDev Error, status: %d", status);

      if (p_data->api_sndcmd.t_type != HID_TRANS_CONTROL &&
          p_data->api_sndcmd.t_type != HID_TRANS_DATA)
        (*bta_hh_cb.p_cback)(event, (tBTA_HH*)&cbdata);
      else if (api_sndcmd_param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG)
        (*bta_hh_cb.p_cback)(BTA_HH_VC_UNPLUG_EVT, (tBTA_HH*)&cbdata);
          p_data->api_sndcmd.t_type != HID_TRANS_DATA) {
        BT_HDR cbhdr = {
          .event = BTA_HH_GET_RPT_EVT,
          .len = 0,
          .offset = 0,
          .layer_specific = 0,
        };
        tBTA_HH cbdata = {
          .hs_data = {
            .status = BTA_HH_ERR,
            .handle = p_cb->hid_handle,
            .rsp_data = {
              .p_rpt_data = &cbhdr,
            },
          },
        };
        (*bta_hh_cb.p_cback)(event, &cbdata);
      } else if (api_sndcmd_param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG) {
        tBTA_HH cbdata = {
          .dev_status = {
            .status = BTA_HH_ERR,
            .handle = p_cb->hid_handle,
          },
        };
        (*bta_hh_cb.p_cback)(BTA_HH_VC_UNPLUG_EVT, &cbdata);
      } else {
        LOG_ERROR("skipped executing callback in hid host error handling. "
                  "command type: %d, param: %d", p_data->api_sndcmd.t_type,
                  p_data->api_sndcmd.param);
      }
    } else {
      switch (p_data->api_sndcmd.t_type) {
        case HID_TRANS_SET_PROTOCOL: