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

Commit 0931d8bb authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Send Bluetooth call quality report to telephony"

parents 98964a53 d35a71eb
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -215,5 +215,9 @@ void invoke_thread_evt_cb(bt_cb_thread_evt event);
void invoke_le_test_mode_cb(bt_status_t status, uint16_t count);
void invoke_energy_info_cb(bt_activity_energy_info energy_info,
                           bt_uid_traffic_t* uid_data);
void invoke_link_quality_report_cb(
    uint64_t timestamp, int report_id, int rssi, int snr,
    int retransmission_count, int packets_not_receive_count,
    int negative_acknowledgement_count);

#endif /* BTIF_COMMON_H */
+19 −0
Original line number Diff line number Diff line
@@ -768,3 +768,22 @@ void invoke_energy_info_cb(bt_activity_energy_info energy_info,
          },
          energy_info, uid_data));
}

void invoke_link_quality_report_cb(
    uint64_t timestamp, int report_id, int rssi, int snr,
    int retransmission_count, int packets_not_receive_count,
    int negative_acknowledgement_count) {
  do_in_jni_thread(
      FROM_HERE,
      base::BindOnce(
          [](uint64_t timestamp, int report_id, int rssi, int snr,
             int retransmission_count, int packets_not_receive_count,
             int negative_acknowledgement_count) {
            HAL_CBACK(bt_hal_cbacks, link_quality_report_cb,
                      timestamp, report_id, rssi, snr, retransmission_count,
                      packets_not_receive_count,
                      negative_acknowledgement_count);
          },
          timestamp, report_id, rssi, snr, retransmission_count,
          packets_not_receive_count, negative_acknowledgement_count));
}
+11 −0
Original line number Diff line number Diff line
@@ -22,8 +22,10 @@
#include <sys/stat.h>

#include "btif_bqr.h"
#include "btif_common.h"
#include "btm_api.h"
#include "common/leaky_bonded_queue.h"
#include "common/time_util.h"
#include "osi/include/properties.h"

namespace bluetooth {
@@ -384,6 +386,15 @@ void AddLinkQualityEventToQueue(uint8_t length, uint8_t* p_link_quality_event) {
  p_bqr_event->ParseBqrLinkQualityEvt(length, p_link_quality_event);

  LOG(WARNING) << *p_bqr_event;
  invoke_link_quality_report_cb(
      bluetooth::common::time_get_os_boottime_ms(),
      p_bqr_event->bqr_link_quality_event_.quality_report_id,
      p_bqr_event->bqr_link_quality_event_.rssi,
      p_bqr_event->bqr_link_quality_event_.snr,
      p_bqr_event->bqr_link_quality_event_.retransmission_count,
      p_bqr_event->bqr_link_quality_event_.no_rx_count,
      p_bqr_event->bqr_link_quality_event_.nak_count);

  int ret = android::util::stats_write(
      android::util::BLUETOOTH_QUALITY_REPORT_REPORTED,
      p_bqr_event->bqr_link_quality_event_.quality_report_id,
+7 −0
Original line number Diff line number Diff line
@@ -425,6 +425,12 @@ typedef void (*acl_state_changed_callback)(bt_status_t status,
                                           RawAddress* remote_bd_addr,
                                           bt_acl_state_t state);

/** Bluetooth link quality report callback */
typedef void (*link_quality_report_callback)(
    uint64_t timestamp, int report_id, int rssi, int snr,
    int retransmission_count, int packets_not_receive_count,
    int negative_acknowledgement_count);

typedef enum { ASSOCIATE_JVM, DISASSOCIATE_JVM } bt_cb_thread_evt;

/** Thread Associate/Disassociate JVM Callback */
@@ -475,6 +481,7 @@ typedef struct {
  dut_mode_recv_callback dut_mode_recv_cb;
  le_test_mode_callback le_test_mode_cb;
  energy_info_callback energy_info_cb;
  link_quality_report_callback link_quality_report_cb;
} bt_callbacks_t;

typedef void (*alarm_cb)(void* data);
+27 −1
Original line number Diff line number Diff line
@@ -192,6 +192,23 @@ int ReleaseWakeLockCallout(const char* /* lock_name */) {
  return BT_STATUS_SUCCESS;
}

void LinkQualityReportCallback(uint64_t timestamp, int report_id, int rssi,
    int snr, int retransmission_count, int packets_not_receive_count,
    int negative_acknowledgement_count) {
  shared_lock<shared_mutex_impl> lock(g_instance_lock);
  VERIFY_INTERFACE_OR_RETURN();
  LOG(WARNING) << __func__ << " - timestamp: " << timestamp
               << " - report_id: " << report_id << " - rssi: " << rssi
               << " - snr: " << snr
               << " - retransmission_count: " << retransmission_count
               << " - packets_not_receive_count: " << packets_not_receive_count
               << " - negative_acknowledgement_count: "
               << negative_acknowledgement_count;
  FOR_EACH_BLUETOOTH_OBSERVER(LinkQualityReportCallback(
      timestamp, report_id, rssi, snr, retransmission_count,
      packets_not_receive_count, negative_acknowledgement_count));
}

// The HAL Bluetooth DM callbacks.
bt_callbacks_t bt_callbacks = {
    sizeof(bt_callbacks_t),
@@ -207,7 +224,8 @@ bt_callbacks_t bt_callbacks = {
    ThreadEventCallback,
    nullptr, /* dut_mode_recv_cb */
    nullptr, /* le_test_mode_cb */
    nullptr  /* energy_info_cb */
    nullptr, /* energy_info_cb */
    LinkQualityReportCallback
};

bt_os_callouts_t bt_os_callouts = {sizeof(bt_os_callouts_t),
@@ -350,6 +368,14 @@ void BluetoothInterface::Observer::AclStateChangedCallback(
  // Do nothing.
}

void BluetoothInterface::Observer::LinkQualityReportCallback(
    uint64_t /* timestamp */, int /* report_id */, int /* rssi */,
    int /* snr */, int /* retransmission_count */,
    int /* packets_not_receive_count */,
    int /* negative_acknowledgement_count */) {
  // Do nothing.
}

// static
bool BluetoothInterface::Initialize() {
  unique_lock<shared_mutex_impl> lock(g_instance_lock);
Loading