aboutsummaryrefslogtreecommitdiff
path: root/btif/src/btif_bqr.cc
diff options
context:
space:
mode:
Diffstat (limited to 'btif/src/btif_bqr.cc')
-rw-r--r--btif/src/btif_bqr.cc30
1 files changed, 24 insertions, 6 deletions
diff --git a/btif/src/btif_bqr.cc b/btif/src/btif_bqr.cc
index 848d8863f..c437b2c1b 100644
--- a/btif/src/btif_bqr.cc
+++ b/btif/src/btif_bqr.cc
@@ -17,15 +17,18 @@
#include <base/logging.h>
#include <errno.h>
#include <fcntl.h>
+#ifdef OS_ANDROID
#include <statslog.h>
+#endif
#include <stdio.h>
#include <sys/stat.h>
#include "btif_bqr.h"
-#include "btif_dm.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"
-#include "stack/btm/btm_int.h"
namespace bluetooth {
namespace bqr {
@@ -51,7 +54,7 @@ void BqrVseSubEvt::ParseBqrLinkQualityEvt(uint8_t length,
STREAM_TO_UINT8(bqr_link_quality_event_.packet_types, p_param_buf);
STREAM_TO_UINT16(bqr_link_quality_event_.connection_handle, p_param_buf);
STREAM_TO_UINT8(bqr_link_quality_event_.connection_role, p_param_buf);
- STREAM_TO_UINT8(bqr_link_quality_event_.tx_power_level, p_param_buf);
+ STREAM_TO_INT8(bqr_link_quality_event_.tx_power_level, p_param_buf);
STREAM_TO_INT8(bqr_link_quality_event_.rssi, p_param_buf);
STREAM_TO_UINT8(bqr_link_quality_event_.snr, p_param_buf);
STREAM_TO_UINT8(bqr_link_quality_event_.unused_afh_channel_count,
@@ -123,8 +126,9 @@ std::string BqrVseSubEvt::ToString() const {
ss << QualityReportIdToString(bqr_link_quality_event_.quality_report_id)
<< ", Handle: " << loghex(bqr_link_quality_event_.connection_handle)
<< ", " << PacketTypeToString(bqr_link_quality_event_.packet_types) << ", "
- << ((bqr_link_quality_event_.connection_role == 0) ? "Master" : "Slave ")
- << ", PwLv: " << loghex(bqr_link_quality_event_.tx_power_level)
+ << ((bqr_link_quality_event_.connection_role == 0) ? "Central"
+ : "Peripheral ")
+ << ", PwLv: " << std::to_string(bqr_link_quality_event_.tx_power_level)
<< ", RSSI: " << std::to_string(bqr_link_quality_event_.rssi)
<< ", SNR: " << std::to_string(bqr_link_quality_event_.snr)
<< ", UnusedCh: "
@@ -267,7 +271,8 @@ void ConfigureBqr(const BqrConfiguration& bqr_config) {
return;
}
- LOG(INFO) << __func__ << ": Action: " << bqr_config.report_action
+ LOG(INFO) << __func__ << ": Action: "
+ << loghex(static_cast<uint8_t>(bqr_config.report_action))
<< ", Mask: " << loghex(bqr_config.quality_event_mask)
<< ", Interval: " << bqr_config.minimum_report_interval_ms;
@@ -383,6 +388,16 @@ 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);
+
+#ifdef OS_ANDROID
int ret = android::util::stats_write(
android::util::BLUETOOTH_QUALITY_REPORT_REPORTED,
p_bqr_event->bqr_link_quality_event_.quality_report_id,
@@ -408,6 +423,9 @@ void AddLinkQualityEventToQueue(uint8_t length, uint8_t* p_link_quality_event) {
LOG(WARNING) << __func__ << ": failed to log BQR event to statsd, error "
<< ret;
}
+#else
+ // TODO(abps) Metrics for non-Android build
+#endif
kpBqrEventQueue->Enqueue(p_bqr_event.release());
}