From 60818422ac2ca38ab74cc17bd9d747f36792a959 Mon Sep 17 00:00:00 2001 From: Muhammad Qureshi <muhammadq@google.com> Date: Wed, 22 Sep 2021 16:00:14 -0700 Subject: [PATCH] Use bluetooth-specific statslog Use generated statslog_bt that contains a subset of stats_write methods only required for bluetooth module. This replaces monolithic libstatslog. There's currently a stats_write method signature collision with another atom (b/200741446). This fixes the collision by only linking against stats_write() methods needed for atoms with the 'bluetooth' module annotation. Bug: 200741446 Tag: #refactor Test: atest net_test_btif Test: atest net_test_btif_profile_queue Test: gd/cert/run Test: m libbtif Test: m libbluetooth Test: m bt_headless Test: m libstatslog_bt Test: m Change-Id: I4323117ddcdd344e2dcf15a7631e2dec37f0b38f --- system/blueberry/tests/gd/cert/gd_device.py | 2 +- system/btcore/fuzzer/Android.bp | 2 +- system/btif/Android.bp | 62 +++++++-- system/btif/src/btif_bqr.cc | 6 +- system/build/Android.bp | 4 +- system/common/Android.bp | 2 +- system/common/metrics.cc | 144 +++++++++----------- system/gd/Android.bp | 10 +- system/gd/Android.mk | 2 +- system/gd/cert/gd_device.py | 2 +- system/gd/os/android/metrics.cc | 82 +++++------ system/profile/avrcp/Android.bp | 2 +- 12 files changed, 165 insertions(+), 155 deletions(-) diff --git a/system/blueberry/tests/gd/cert/gd_device.py b/system/blueberry/tests/gd/cert/gd_device.py index b0b7d2acc6d..811951967b2 100644 --- a/system/blueberry/tests/gd/cert/gd_device.py +++ b/system/blueberry/tests/gd/cert/gd_device.py @@ -244,7 +244,7 @@ class GdAndroidDevice(GdDeviceBase): self.push_or_die(os.path.join(get_gd_root(), "target", "libgrpc++_unsecure.so"), "system/lib64") self.push_or_die(os.path.join(get_gd_root(), "target", "libgrpc++.so"), "system/lib64") self.push_or_die(os.path.join(get_gd_root(), "target", "libgrpc_wrap.so"), "system/lib64") - self.push_or_die(os.path.join(get_gd_root(), "target", "libstatslog.so"), "system/lib64") + self.push_or_die(os.path.join(get_gd_root(), "target", "libstatslog_bt.so"), "system/lib64") try: self.adb.shell("rm /data/misc/bluetooth/logs/btsnoop_hci.log") diff --git a/system/btcore/fuzzer/Android.bp b/system/btcore/fuzzer/Android.bp index ddaa6ae6e75..7368d715a2e 100644 --- a/system/btcore/fuzzer/Android.bp +++ b/system/btcore/fuzzer/Android.bp @@ -27,7 +27,7 @@ cc_defaults { name: "btcore_fuzz_defaults", shared_libs: [ "libcrypto", - "libstatslog", + "libstatslog_bt", "libbluetooth", "android.hardware.bluetooth@1.0", "android.hardware.bluetooth@1.1", diff --git a/system/btif/Android.bp b/system/btif/Android.bp index f86f3ccb2fa..a1cd9759752 100644 --- a/system/btif/Android.bp +++ b/system/btif/Android.bp @@ -35,6 +35,58 @@ btifCommonIncludes = [ "system/libhwbinder/include", ] +cc_library { + name: "libstatslog_bt", + host_supported: true, + generated_sources: ["statslog_bt.cpp"], + generated_headers: ["statslog_bt.h"], + export_generated_headers: ["statslog_bt.h"], + cflags: [ + "-Wall", + "-Werror", + ], + shared_libs: [ + "libcutils", + ], + target: { + android: { + shared_libs: [ + "libstatssocket", + ], + export_shared_lib_headers: [ + "libstatssocket", + ], + }, + host: { + static_libs: [ + "libstatssocket", + ], + export_static_lib_headers: [ + "libstatssocket", + ], + }, + darwin: { + enabled: false, + }, + }, +} + +genrule { + name: "statslog_bt.h", + tools: ["stats-log-api-gen"], + cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_bt.h --module bluetooth" + + " --namespace bluetooth", + out: ["statslog_bt.h"], +} + +genrule { + name: "statslog_bt.cpp", + tools: ["stats-log-api-gen"], + cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_bt.cpp --module bluetooth" + + " --namespace bluetooth --importHeader statslog_bt.h", + out: ["statslog_bt.cpp"], +} + // libbtif static library for target cc_library_static { name: "libbtif", @@ -111,12 +163,9 @@ cc_library_static { "android.hardware.bluetooth.audio@2.0", "android.hardware.bluetooth.audio@2.1", "libcrypto", - "libcutils", "libflatbuffers-cpp", "libhidlbase", - "liblog", "libtinyxml2", - "libutils", "libz", ], target: { @@ -124,7 +173,7 @@ cc_library_static { shared_libs: [ "libaaudio", "libfmq", - "libstatslog", + "libstatslog_bt", ], srcs: ["src/btif_avrcp_audio_track.cc"], }, @@ -165,11 +214,8 @@ cc_test { "libbinder_ndk", "libfmq", "libhidlbase", - "liblog", "libprotobuf-cpp-lite", - "libcutils", "libprocessgroup", - "libutils", "libcrypto", ], static_libs: [ @@ -216,9 +262,7 @@ cc_test { "BluetoothGeneratedPackets_h", ], shared_libs: [ - "libcutils", "libflatbuffers-cpp", - "liblog", ], static_libs: [ "libbluetooth-types", diff --git a/system/btif/src/btif_bqr.cc b/system/btif/src/btif_bqr.cc index c437b2c1b11..e477f4932e3 100644 --- a/system/btif/src/btif_bqr.cc +++ b/system/btif/src/btif_bqr.cc @@ -18,7 +18,7 @@ #include <errno.h> #include <fcntl.h> #ifdef OS_ANDROID -#include <statslog.h> +#include <statslog_bt.h> #endif #include <stdio.h> #include <sys/stat.h> @@ -398,8 +398,8 @@ void AddLinkQualityEventToQueue(uint8_t length, uint8_t* p_link_quality_event) { p_bqr_event->bqr_link_quality_event_.nak_count); #ifdef OS_ANDROID - int ret = android::util::stats_write( - android::util::BLUETOOTH_QUALITY_REPORT_REPORTED, + int ret = stats_write( + BLUETOOTH_QUALITY_REPORT_REPORTED, p_bqr_event->bqr_link_quality_event_.quality_report_id, p_bqr_event->bqr_link_quality_event_.packet_types, p_bqr_event->bqr_link_quality_event_.connection_handle, diff --git a/system/build/Android.bp b/system/build/Android.bp index 336cb19539a..559e4a754d4 100644 --- a/system/build/Android.bp +++ b/system/build/Android.bp @@ -109,7 +109,7 @@ fluoride_defaults { ], target: { darwin: { - // libstatslog -> libbinder doesn't build on mac + // libstatslog_bt -> libbinder doesn't build on mac enabled: false, }, android: { @@ -120,7 +120,7 @@ fluoride_defaults { "libgrpc++", "libgrpc_wrap", "libhidlbase", - "libstatslog", + "libstatslog_bt", "libutils", ], cflags: [ diff --git a/system/common/Android.bp b/system/common/Android.bp index d8871583979..3cb77b21f2e 100644 --- a/system/common/Android.bp +++ b/system/common/Android.bp @@ -33,7 +33,7 @@ cc_library_static { target: { android: { srcs: ["metrics.cc"], - shared_libs: ["libstatslog"], + shared_libs: ["libstatslog_bt"], }, host: { srcs: ["metrics_linux.cc"], diff --git a/system/common/metrics.cc b/system/common/metrics.cc index 0aa440a1dd2..47870e04021 100644 --- a/system/common/metrics.cc +++ b/system/common/metrics.cc @@ -21,7 +21,7 @@ #include <base/base64.h> #include <base/logging.h> #include <include/hardware/bt_av.h> -#include <statslog.h> +#include <statslog_bt.h> #include <unistd.h> #include <algorithm> @@ -584,13 +584,12 @@ void LogLinkLayerConnectionEvent(const RawAddress* address, metric_id = MetricIdAllocator::GetInstance().AllocateId(*address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField bytes_field( - address != nullptr ? obfuscated_id.c_str() : nullptr, - address != nullptr ? obfuscated_id.size() : 0); - int ret = android::util::stats_write( - android::util::BLUETOOTH_LINK_LAYER_CONNECTION_EVENT, bytes_field, - connection_handle, direction, link_type, hci_cmd, hci_event, - hci_ble_event, cmd_status, reason_code, metric_id); + BytesField bytes_field(address != nullptr ? obfuscated_id.c_str() : nullptr, + address != nullptr ? obfuscated_id.size() : 0); + int ret = + stats_write(BLUETOOTH_LINK_LAYER_CONNECTION_EVENT, bytes_field, + connection_handle, direction, link_type, hci_cmd, hci_event, + hci_ble_event, cmd_status, reason_code, metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed to log status " << loghex(cmd_status) << ", reason " << loghex(reason_code) << " from cmd " @@ -602,9 +601,8 @@ void LogLinkLayerConnectionEvent(const RawAddress* address, } void LogHciTimeoutEvent(uint32_t hci_cmd) { - int ret = - android::util::stats_write(android::util::BLUETOOTH_HCI_TIMEOUT_REPORTED, - static_cast<int64_t>(hci_cmd)); + int ret = stats_write(BLUETOOTH_HCI_TIMEOUT_REPORTED, + static_cast<int64_t>(hci_cmd)); if (ret < 0) { LOG(WARNING) << __func__ << ": failed for opcode " << loghex(hci_cmd) << ", error " << ret; @@ -613,9 +611,8 @@ void LogHciTimeoutEvent(uint32_t hci_cmd) { void LogRemoteVersionInfo(uint16_t handle, uint8_t status, uint8_t version, uint16_t manufacturer_name, uint16_t subversion) { - int ret = android::util::stats_write( - android::util::BLUETOOTH_REMOTE_VERSION_INFO_REPORTED, handle, status, - version, manufacturer_name, subversion); + int ret = stats_write(BLUETOOTH_REMOTE_VERSION_INFO_REPORTED, handle, status, + version, manufacturer_name, subversion); if (ret < 0) { LOG(WARNING) << __func__ << ": failed for handle " << handle << ", status " << loghex(status) << ", version " << loghex(version) @@ -634,13 +631,12 @@ void LogA2dpAudioUnderrunEvent(const RawAddress& address, metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField bytes_field( - address.IsEmpty() ? nullptr : obfuscated_id.c_str(), - address.IsEmpty() ? 0 : obfuscated_id.size()); + BytesField bytes_field(address.IsEmpty() ? nullptr : obfuscated_id.c_str(), + address.IsEmpty() ? 0 : obfuscated_id.size()); int64_t encoding_interval_nanos = encoding_interval_millis * 1000000; - int ret = android::util::stats_write( - android::util::BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED, bytes_field, - encoding_interval_nanos, num_missing_pcm_bytes, metric_id); + int ret = + stats_write(BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED, bytes_field, + encoding_interval_nanos, num_missing_pcm_bytes, metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed for " << address << ", encoding_interval_nanos " << encoding_interval_nanos @@ -661,14 +657,13 @@ void LogA2dpAudioOverrunEvent(const RawAddress& address, metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField bytes_field( - address.IsEmpty() ? nullptr : obfuscated_id.c_str(), - address.IsEmpty() ? 0 : obfuscated_id.size()); + BytesField bytes_field(address.IsEmpty() ? nullptr : obfuscated_id.c_str(), + address.IsEmpty() ? 0 : obfuscated_id.size()); int64_t encoding_interval_nanos = encoding_interval_millis * 1000000; - int ret = android::util::stats_write( - android::util::BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED, bytes_field, - encoding_interval_nanos, num_dropped_buffers, num_dropped_encoded_frames, - num_dropped_encoded_bytes, metric_id); + int ret = stats_write(BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED, bytes_field, + encoding_interval_nanos, num_dropped_buffers, + num_dropped_encoded_frames, num_dropped_encoded_bytes, + metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed to log for " << address << ", encoding_interval_nanos " << encoding_interval_nanos @@ -688,12 +683,10 @@ void LogA2dpPlaybackEvent(const RawAddress& address, int playback_state, metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField bytes_field( - address.IsEmpty() ? nullptr : obfuscated_id.c_str(), - address.IsEmpty() ? 0 : obfuscated_id.size()); - int ret = android::util::stats_write( - android::util::BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED, bytes_field, - playback_state, audio_coding_mode, metric_id); + BytesField bytes_field(address.IsEmpty() ? nullptr : obfuscated_id.c_str(), + address.IsEmpty() ? 0 : obfuscated_id.size()); + int ret = stats_write(BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED, bytes_field, + playback_state, audio_coding_mode, metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed to log for " << address << ", playback_state " << playback_state @@ -711,12 +704,10 @@ void LogReadRssiResult(const RawAddress& address, uint16_t handle, metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField bytes_field( - address.IsEmpty() ? nullptr : obfuscated_id.c_str(), - address.IsEmpty() ? 0 : obfuscated_id.size()); - int ret = android::util::stats_write( - android::util::BLUETOOTH_DEVICE_RSSI_REPORTED, bytes_field, handle, - cmd_status, rssi, metric_id); + BytesField bytes_field(address.IsEmpty() ? nullptr : obfuscated_id.c_str(), + address.IsEmpty() ? 0 : obfuscated_id.size()); + int ret = stats_write(BLUETOOTH_DEVICE_RSSI_REPORTED, bytes_field, handle, + cmd_status, rssi, metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed for " << address << ", handle " << handle << ", status " << loghex(cmd_status) << ", rssi " @@ -734,12 +725,11 @@ void LogReadFailedContactCounterResult(const RawAddress& address, metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField bytes_field( - address.IsEmpty() ? nullptr : obfuscated_id.c_str(), - address.IsEmpty() ? 0 : obfuscated_id.size()); - int ret = android::util::stats_write( - android::util::BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED, - bytes_field, handle, cmd_status, failed_contact_counter, metric_id); + BytesField bytes_field(address.IsEmpty() ? nullptr : obfuscated_id.c_str(), + address.IsEmpty() ? 0 : obfuscated_id.size()); + int ret = + stats_write(BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED, bytes_field, + handle, cmd_status, failed_contact_counter, metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed for " << address << ", handle " << handle << ", status " << loghex(cmd_status) @@ -758,12 +748,10 @@ void LogReadTxPowerLevelResult(const RawAddress& address, uint16_t handle, metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField bytes_field( - address.IsEmpty() ? nullptr : obfuscated_id.c_str(), - address.IsEmpty() ? 0 : obfuscated_id.size()); - int ret = android::util::stats_write( - android::util::BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED, bytes_field, - handle, cmd_status, transmit_power_level, metric_id); + BytesField bytes_field(address.IsEmpty() ? nullptr : obfuscated_id.c_str(), + address.IsEmpty() ? 0 : obfuscated_id.size()); + int ret = stats_write(BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED, bytes_field, + handle, cmd_status, transmit_power_level, metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed for " << address << ", handle " << handle << ", status " << loghex(cmd_status) @@ -782,12 +770,12 @@ void LogSmpPairingEvent(const RawAddress& address, uint8_t smp_cmd, metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField obfuscated_id_field( + BytesField obfuscated_id_field( address.IsEmpty() ? nullptr : obfuscated_id.c_str(), address.IsEmpty() ? 0 : obfuscated_id.size()); - int ret = android::util::stats_write( - android::util::BLUETOOTH_SMP_PAIRING_EVENT_REPORTED, obfuscated_id_field, - smp_cmd, direction, smp_fail_reason, metric_id); + int ret = + stats_write(BLUETOOTH_SMP_PAIRING_EVENT_REPORTED, obfuscated_id_field, + smp_cmd, direction, smp_fail_reason, metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed for " << address << ", smp_cmd " << loghex(smp_cmd) << ", direction " << direction @@ -805,13 +793,12 @@ void LogClassicPairingEvent(const RawAddress& address, uint16_t handle, uint32_t metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField obfuscated_id_field( + BytesField obfuscated_id_field( address.IsEmpty() ? nullptr : obfuscated_id.c_str(), address.IsEmpty() ? 0 : obfuscated_id.size()); - int ret = android::util::stats_write( - android::util::BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED, - obfuscated_id_field, handle, hci_cmd, hci_event, cmd_status, reason_code, - event_value, metric_id); + int ret = stats_write(BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED, + obfuscated_id_field, handle, hci_cmd, hci_event, + cmd_status, reason_code, event_value, metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed for " << address << ", handle " << handle << ", hci_cmd " << loghex(hci_cmd) << ", hci_event " << loghex(hci_event) << ", cmd_status " << loghex(cmd_status) << ", reason " @@ -829,13 +816,13 @@ void LogSdpAttribute(const RawAddress& address, uint16_t protocol_uuid, metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField obfuscated_id_field( + BytesField obfuscated_id_field( address.IsEmpty() ? nullptr : obfuscated_id.c_str(), address.IsEmpty() ? 0 : obfuscated_id.size()); - android::util::BytesField attribute_field(attribute_value, attribute_size); - int ret = android::util::stats_write( - android::util::BLUETOOTH_SDP_ATTRIBUTE_REPORTED, obfuscated_id_field, - protocol_uuid, attribute_id, attribute_field, metric_id); + BytesField attribute_field(attribute_value, attribute_size); + int ret = + stats_write(BLUETOOTH_SDP_ATTRIBUTE_REPORTED, obfuscated_id_field, + protocol_uuid, attribute_id, attribute_field, metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed for " << address << ", protocol_uuid " << loghex(protocol_uuid) << ", attribute_id " @@ -855,13 +842,13 @@ void LogSocketConnectionState( metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField obfuscated_id_field( + BytesField obfuscated_id_field( address.IsEmpty() ? nullptr : obfuscated_id.c_str(), address.IsEmpty() ? 0 : obfuscated_id.size()); - int ret = android::util::stats_write( - android::util::BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED, - obfuscated_id_field, port, type, connection_state, tx_bytes, rx_bytes, - uid, server_port, socket_role, metric_id); + int ret = + stats_write(BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED, + obfuscated_id_field, port, type, connection_state, tx_bytes, + rx_bytes, uid, server_port, socket_role, metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed for " << address << ", port " << port << ", type " << type << ", state " << connection_state @@ -885,13 +872,13 @@ void LogManufacturerInfo(const RawAddress& address, metric_id = MetricIdAllocator::GetInstance().AllocateId(address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField obfuscated_id_field( + BytesField obfuscated_id_field( address.IsEmpty() ? nullptr : obfuscated_id.c_str(), address.IsEmpty() ? 0 : obfuscated_id.size()); - int ret = android::util::stats_write( - android::util::BLUETOOTH_DEVICE_INFO_REPORTED, obfuscated_id_field, - source_type, source_name.c_str(), manufacturer.c_str(), model.c_str(), - hardware_version.c_str(), software_version.c_str(), metric_id); + int ret = stats_write(BLUETOOTH_DEVICE_INFO_REPORTED, obfuscated_id_field, + source_type, source_name.c_str(), manufacturer.c_str(), + model.c_str(), hardware_version.c_str(), + software_version.c_str(), metric_id); if (ret < 0) { LOG(WARNING) << __func__ << ": failed for " << address << ", source_type " << source_type << ", source_name " << source_name @@ -909,12 +896,11 @@ void LogBluetoothHalCrashReason(const RawAddress& address, uint32_t error_code, obfuscated_id = AddressObfuscator::GetInstance()->Obfuscate(address); } // nullptr and size 0 represent missing value for obfuscated_id - android::util::BytesField obfuscated_id_field( + BytesField obfuscated_id_field( address.IsEmpty() ? nullptr : obfuscated_id.c_str(), address.IsEmpty() ? 0 : obfuscated_id.size()); - int ret = android::util::stats_write( - android::util::BLUETOOTH_HAL_CRASH_REASON_REPORTED, 0, - obfuscated_id_field, error_code, vendor_error_code); + int ret = stats_write(BLUETOOTH_HAL_CRASH_REASON_REPORTED, 0, + obfuscated_id_field, error_code, vendor_error_code); if (ret < 0) { LOG(WARNING) << __func__ << ": failed for " << address << ", error_code " << loghex(error_code) << ", vendor_error_code " diff --git a/system/gd/Android.bp b/system/gd/Android.bp index 0fa4da68fdb..56726787485 100644 --- a/system/gd/Android.bp +++ b/system/gd/Android.bp @@ -149,7 +149,7 @@ cc_defaults { "libcutils", "libhidlbase", "libutils", - "libstatslog", + "libstatslog_bt", ], }, }, @@ -270,7 +270,7 @@ cc_binary { "libhidlbase", "libutils", "libcutils", - "libstatslog", + "libstatslog_bt", ], }, host: { @@ -322,7 +322,7 @@ cc_test { "libhidlbase", "libutils", "libcutils", - "libstatslog", + "libstatslog_bt", ], }, }, @@ -404,7 +404,7 @@ cc_test { "libhidlbase", "libutils", "libcutils", - "libstatslog", + "libstatslog_bt", ], }, }, @@ -535,7 +535,7 @@ cc_defaults { "libcutils", "libhidlbase", "libutils", - "libstatslog", + "libstatslog_bt", ], }, }, diff --git a/system/gd/Android.mk b/system/gd/Android.mk index 54d22c43e07..efe698ecf7e 100644 --- a/system/gd/Android.mk +++ b/system/gd/Android.mk @@ -49,7 +49,7 @@ LOCAL_target_libraries := \ $(TARGET_OUT_SHARED_LIBRARIES)/libgrpc++_unsecure.so \ $(TARGET_OUT_SHARED_LIBRARIES)/libgrpc++.so \ $(TARGET_OUT_SHARED_LIBRARIES)/libgrpc_wrap.so \ - $(TARGET_OUT_SHARED_LIBRARIES)/libstatslog.so + $(TARGET_OUT_SHARED_LIBRARIES)/libstatslog_bt.so #LINT.ThenChange(cert/run) bluetooth_cert_src_and_bin_zip := \ diff --git a/system/gd/cert/gd_device.py b/system/gd/cert/gd_device.py index de7797239aa..3c94c19f99a 100644 --- a/system/gd/cert/gd_device.py +++ b/system/gd/cert/gd_device.py @@ -247,7 +247,7 @@ class GdAndroidDevice(GdDeviceBase): self.push_or_die(os.path.join(get_gd_root(), "target", "libgrpc++_unsecure.so"), "system/lib64") self.push_or_die(os.path.join(get_gd_root(), "target", "libgrpc++.so"), "system/lib64") self.push_or_die(os.path.join(get_gd_root(), "target", "libgrpc_wrap.so"), "system/lib64") - self.push_or_die(os.path.join(get_gd_root(), "target", "libstatslog.so"), "system/lib64") + self.push_or_die(os.path.join(get_gd_root(), "target", "libstatslog_bt.so"), "system/lib64") try: self.adb.shell("rm /data/misc/bluetooth/logs/btsnoop_hci.log") diff --git a/system/gd/os/android/metrics.cc b/system/gd/os/android/metrics.cc index 52608191bb0..bb1e80e1eac 100644 --- a/system/gd/os/android/metrics.cc +++ b/system/gd/os/android/metrics.cc @@ -18,12 +18,13 @@ #define LOG_TAG "BluetoothMetrics" -#include <statslog.h> +#include "os/metrics.h" + +#include <statslog_bt.h> #include "common/metric_id_manager.h" #include "common/strings.h" #include "os/log.h" -#include "os/metrics.h" namespace bluetooth { @@ -35,7 +36,7 @@ using bluetooth::hci::Address; /** * nullptr and size 0 represent missing value for obfuscated_id */ -static const android::util::BytesField byteField(nullptr, 0); +static const BytesField byteField(nullptr, 0); void LogMetricLinkLayerConnectionEvent( const Address* address, @@ -51,8 +52,8 @@ void LogMetricLinkLayerConnectionEvent( if (address != nullptr) { metric_id = MetricIdManager::GetInstance().AllocateId(*address); } - int ret = android::util::stats_write( - android::util::BLUETOOTH_LINK_LAYER_CONNECTION_EVENT, + int ret = stats_write( + BLUETOOTH_LINK_LAYER_CONNECTION_EVENT, byteField, connection_handle, direction, @@ -80,7 +81,7 @@ void LogMetricLinkLayerConnectionEvent( } void LogMetricHciTimeoutEvent(uint32_t hci_cmd) { - int ret = android::util::stats_write(android::util::BLUETOOTH_HCI_TIMEOUT_REPORTED, static_cast<int64_t>(hci_cmd)); + int ret = stats_write(BLUETOOTH_HCI_TIMEOUT_REPORTED, static_cast<int64_t>(hci_cmd)); if (ret < 0) { LOG_WARN("Failed for opcode %s, error %d", common::ToHexString(hci_cmd).c_str(), ret); } @@ -88,8 +89,7 @@ void LogMetricHciTimeoutEvent(uint32_t hci_cmd) { void LogMetricRemoteVersionInfo( uint16_t handle, uint8_t status, uint8_t version, uint16_t manufacturer_name, uint16_t subversion) { - int ret = android::util::stats_write( - android::util::BLUETOOTH_REMOTE_VERSION_INFO_REPORTED, handle, status, version, manufacturer_name, subversion); + int ret = stats_write(BLUETOOTH_REMOTE_VERSION_INFO_REPORTED, handle, status, version, manufacturer_name, subversion); if (ret < 0) { LOG_WARN( "Failed for handle %d, status %s, version %s, manufacturer_name %s, subversion %s, error %d", @@ -109,12 +109,8 @@ void LogMetricA2dpAudioUnderrunEvent( metric_id = MetricIdManager::GetInstance().AllocateId(address); } int64_t encoding_interval_nanos = encoding_interval_millis * 1000000; - int ret = android::util::stats_write( - android::util::BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED, - byteField, - encoding_interval_nanos, - num_missing_pcm_bytes, - metric_id); + int ret = stats_write( + BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED, byteField, encoding_interval_nanos, num_missing_pcm_bytes, metric_id); if (ret < 0) { LOG_WARN( "Failed for %s, encoding_interval_nanos %s, num_missing_pcm_bytes %d, error %d", @@ -137,8 +133,8 @@ void LogMetricA2dpAudioOverrunEvent( } int64_t encoding_interval_nanos = encoding_interval_millis * 1000000; - int ret = android::util::stats_write( - android::util::BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED, + int ret = stats_write( + BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED, byteField, encoding_interval_nanos, num_dropped_buffers, @@ -164,8 +160,7 @@ void LogMetricA2dpPlaybackEvent(const Address& address, int playback_state, int metric_id = MetricIdManager::GetInstance().AllocateId(address); } - int ret = android::util::stats_write( - android::util::BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED, byteField, playback_state, audio_coding_mode, metric_id); + int ret = stats_write(BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED, byteField, playback_state, audio_coding_mode, metric_id); if (ret < 0) { LOG_WARN( "Failed to log for %s, playback_state %d, audio_coding_mode %d,error %d", @@ -181,8 +176,7 @@ void LogMetricReadRssiResult(const Address& address, uint16_t handle, uint32_t c if (!address.IsEmpty()) { metric_id = MetricIdManager::GetInstance().AllocateId(address); } - int ret = android::util::stats_write( - android::util::BLUETOOTH_DEVICE_RSSI_REPORTED, byteField, handle, cmd_status, rssi, metric_id); + int ret = stats_write(BLUETOOTH_DEVICE_RSSI_REPORTED, byteField, handle, cmd_status, rssi, metric_id); if (ret < 0) { LOG_WARN( "Failed for %s, handle %d, status %s, rssi %d dBm, error %d", @@ -200,8 +194,8 @@ void LogMetricReadFailedContactCounterResult( if (!address.IsEmpty()) { metric_id = MetricIdManager::GetInstance().AllocateId(address); } - int ret = android::util::stats_write( - android::util::BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED, + int ret = stats_write( + BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED, byteField, handle, cmd_status, @@ -224,13 +218,8 @@ void LogMetricReadTxPowerLevelResult( if (!address.IsEmpty()) { metric_id = MetricIdManager::GetInstance().AllocateId(address); } - int ret = android::util::stats_write( - android::util::BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED, - byteField, - handle, - cmd_status, - transmit_power_level, - metric_id); + int ret = stats_write( + BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED, byteField, handle, cmd_status, transmit_power_level, metric_id); if (ret < 0) { LOG_WARN( "Failed for %s, handle %d, status %s, transmit_power_level %d packets, error %d", @@ -248,8 +237,8 @@ void LogMetricSmpPairingEvent( if (!address.IsEmpty()) { metric_id = MetricIdManager::GetInstance().AllocateId(address); } - int ret = android::util::stats_write( - android::util::BLUETOOTH_SMP_PAIRING_EVENT_REPORTED, byteField, smp_cmd, direction, smp_fail_reason, metric_id); + int ret = + stats_write(BLUETOOTH_SMP_PAIRING_EVENT_REPORTED, byteField, smp_cmd, direction, smp_fail_reason, metric_id); if (ret < 0) { LOG_WARN( "Failed for %s, smp_cmd %s, direction %d, smp_fail_reason %s, error %d", @@ -273,8 +262,8 @@ void LogMetricClassicPairingEvent( if (!address.IsEmpty()) { metric_id = MetricIdManager::GetInstance().AllocateId(address); } - int ret = android::util::stats_write( - android::util::BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED, + int ret = stats_write( + BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED, byteField, handle, hci_cmd, @@ -308,14 +297,9 @@ void LogMetricSdpAttribute( if (!address.IsEmpty()) { metric_id = MetricIdManager::GetInstance().AllocateId(address); } - android::util::BytesField attribute_field(attribute_value, attribute_size); - int ret = android::util::stats_write( - android::util::BLUETOOTH_SDP_ATTRIBUTE_REPORTED, - byteField, - protocol_uuid, - attribute_id, - attribute_field, - metric_id); + BytesField attribute_field(attribute_value, attribute_size); + int ret = + stats_write(BLUETOOTH_SDP_ATTRIBUTE_REPORTED, byteField, protocol_uuid, attribute_id, attribute_field, metric_id); if (ret < 0) { LOG_WARN( "Failed for %s, protocol_uuid %s, attribute_id %s, error %d", @@ -340,8 +324,8 @@ void LogMetricSocketConnectionState( if (!address.IsEmpty()) { metric_id = MetricIdManager::GetInstance().AllocateId(address); } - int ret = android::util::stats_write( - android::util::BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED, + int ret = stats_write( + BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED, byteField, port, type, @@ -381,8 +365,8 @@ void LogMetricManufacturerInfo( if (!address.IsEmpty()) { metric_id = MetricIdManager::GetInstance().AllocateId(address); } - int ret = android::util::stats_write( - android::util::BLUETOOTH_DEVICE_INFO_REPORTED, + int ret = stats_write( + BLUETOOTH_DEVICE_INFO_REPORTED, byteField, source_type, source_name.c_str(), @@ -410,12 +394,8 @@ void LogMetricBluetoothHalCrashReason( const Address& address, uint32_t error_code, uint32_t vendor_error_code) { - int ret = android::util::stats_write( - android::util::BLUETOOTH_HAL_CRASH_REASON_REPORTED, - 0 /* metric_id */, - byteField, - error_code, - vendor_error_code); + int ret = + stats_write(BLUETOOTH_HAL_CRASH_REASON_REPORTED, 0 /* metric_id */, byteField, error_code, vendor_error_code); if (ret < 0) { LOG_WARN( "Failed for %s, error_code %s, vendor_error_code %s, error %d", diff --git a/system/profile/avrcp/Android.bp b/system/profile/avrcp/Android.bp index 72a30b52aa8..01589a6518f 100644 --- a/system/profile/avrcp/Android.bp +++ b/system/profile/avrcp/Android.bp @@ -106,7 +106,7 @@ cc_fuzz { "libcutils", "libevent", "liblog", - "libstatslog", + "libstatslog_bt", ], header_libs: ["libbluetooth_headers"], corpus: [ -- GitLab