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

Commit 6dd9041a authored by Myles Watson's avatar Myles Watson
Browse files

Simplify btm_process_inq_results_rssi

Bug: 322230000
Test: mma -j32
Flag: EXEMPT, no logical change
Change-Id: I411483771c1735ad25a303077f9a7a720b2e7259
parent f61fb47e
Loading
Loading
Loading
Loading
+10 −62
Original line number Diff line number Diff line
@@ -1401,16 +1401,11 @@ static void btm_process_inq_results_standard(const uint8_t* p,
 *                  from the device. It updates the inquiry database. If the
 *                  inquiry database is full, the oldest entry is discarded.
 *
 * Parameters       inq_res_mode - BTM_INQ_RESULT_STANDARD
 *                                 BTM_INQ_RESULT_WITH_RSSI
 *                                 BTM_INQ_RESULT_EXTENDED
 *
 *
 * Returns          void
 *
 ******************************************************************************/
static void btm_process_inq_results_rssi(const uint8_t* p, uint8_t hci_evt_len,
                                         uint8_t inq_res_mode) {
static void btm_process_inq_results_rssi(const uint8_t* p,
                                         uint8_t hci_evt_len) {
  uint8_t num_resp, xx;
  RawAddress bda;
  tINQ_DB_ENT* p_i;
@@ -1438,19 +1433,7 @@ static void btm_process_inq_results_rssi(const uint8_t* p, uint8_t hci_evt_len,

  STREAM_TO_UINT8(num_resp, p);

  if (inq_res_mode == BTM_INQ_RESULT_EXTENDED) {
    if (num_resp > 1) {
      log::error("extended results ({}) > 1", num_resp);
      return;
    }

    constexpr uint16_t extended_inquiry_result_size = 254;
    if (hci_evt_len - 1 != extended_inquiry_result_size) {
      log::error("can't fit {} results in {} bytes", num_resp, hci_evt_len);
      return;
    }
  } else if (inq_res_mode == BTM_INQ_RESULT_STANDARD ||
             inq_res_mode == BTM_INQ_RESULT_WITH_RSSI) {
  {
    constexpr uint16_t inquiry_result_size = 14;
    if (hci_evt_len < num_resp * inquiry_result_size) {
      log::error("can't fit {} results in {} bytes", num_resp, hci_evt_len);
@@ -1466,15 +1449,9 @@ static void btm_process_inq_results_rssi(const uint8_t* p, uint8_t hci_evt_len,
    STREAM_TO_UINT8(page_scan_rep_mode, p);
    STREAM_TO_UINT8(page_scan_per_mode, p);

    if (inq_res_mode == BTM_INQ_RESULT_STANDARD) {
      STREAM_TO_UINT8(page_scan_mode, p);
    }

    STREAM_TO_DEVCLASS(dc, p);
    STREAM_TO_UINT16(clock_offset, p);
    if (inq_res_mode != BTM_INQ_RESULT_STANDARD) {
    STREAM_TO_UINT8(rssi, p);
    }

    p_i = btm_inq_db_find(bda);

@@ -1495,13 +1472,6 @@ static void btm_process_inq_results_rssi(const uint8_t* p, uint8_t hci_evt_len,
        p_cur->rssi = i_rssi;
        update = true;
      }
      /* If we received a second Extended Inq Event for an already */
      /* discovered device, this is because for the first one EIR was not
         received */
      else if ((inq_res_mode == BTM_INQ_RESULT_EXTENDED) && (p_i)) {
        p_cur = &p_i->inq_info.results;
        update = true;
      }
      /* If no update needed continue with next response (if any) */
      else
        continue;
@@ -1515,20 +1485,15 @@ static void btm_process_inq_results_rssi(const uint8_t* p, uint8_t hci_evt_len,
    }

    /* If an entry for the device already exists, overwrite it ONLY if it is
       from
       a previous inquiry. (Ignore it if it is a duplicate response from the
       same
       inquiry.
       from a previous inquiry. (Ignore it if it is a duplicate response from
       the same inquiry.
    */
    else if (p_i->inq_count == btm_cb.btm_inq_vars.inq_counter &&
             (p_i->inq_info.results.device_type == BT_DEVICE_TYPE_BREDR))
      is_new = false;

    /* keep updating RSSI to have latest value */
    if (inq_res_mode != BTM_INQ_RESULT_STANDARD)
    p_i->inq_info.results.rssi = (int8_t)rssi;
    else
      p_i->inq_info.results.rssi = BTM_INQ_RES_IGNORE_RSSI;

    if (is_new) {
      /* Save the info */
@@ -1546,17 +1511,7 @@ static void btm_process_inq_results_rssi(const uint8_t* p, uint8_t hci_evt_len,
      if (p_i->inq_count != btm_cb.btm_inq_vars.inq_counter) {
        /* A new response was found */
        btm_cb.btm_inq_vars.inq_cmpl_info.num_resp++;
        switch (static_cast<tBTM_INQ_RESULT>(inq_res_mode)) {
          case BTM_INQ_RESULT_STANDARD:
          case BTM_INQ_RESULT_WITH_RSSI:
          case BTM_INQ_RESULT_EXTENDED:
            btm_cb.btm_inq_vars.inq_cmpl_info.resp_type[inq_res_mode]++;
            break;
          case BTM_INQ_RES_IGNORE_RSSI:
            btm_cb.btm_inq_vars.inq_cmpl_info
                .resp_type[BTM_INQ_RESULT_STANDARD]++;
            break;
        }
        btm_cb.btm_inq_vars.inq_cmpl_info.resp_type[BTM_INQ_RESULT_WITH_RSSI]++;
      }

      p_cur->inq_result_type |= BT_DEVICE_TYPE_BREDR;
@@ -1573,13 +1528,6 @@ static void btm_process_inq_results_rssi(const uint8_t* p, uint8_t hci_evt_len,
    }

    if (is_new || update) {
      if (inq_res_mode == BTM_INQ_RESULT_EXTENDED) {
        memset(p_cur->eir_uuid, 0,
               BTM_EIR_SERVICE_ARRAY_SIZE * (BTM_EIR_ARRAY_BITS / 8));
        /* set bit map of UUID list from received EIR */
        btm_set_eir_uuid(p, p_cur);
        p_eir_data = p;
      } else
      p_eir_data = NULL;

      /* If a callback is registered, call it with the results */
@@ -1816,7 +1764,7 @@ void btm_process_inq_results(const uint8_t* p, uint8_t hci_evt_len,
      btm_process_inq_results_standard(p, hci_evt_len);
      break;
    case BTM_INQ_RESULT_WITH_RSSI:
      btm_process_inq_results_rssi(p, hci_evt_len, BTM_INQ_RESULT_WITH_RSSI);
      btm_process_inq_results_rssi(p, hci_evt_len);
      break;
    case BTM_INQ_RESULT_EXTENDED:
      btm_process_inq_results_extended(p, hci_evt_len, BTM_INQ_RESULT_EXTENDED);