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

Commit eab45bd0 authored by William Escande's avatar William Escande Committed by Android (Google) Code Review
Browse files

Merge "Fix BT Snoop log size issue" into tm-qpr-dev

parents 785140c9 867889cb
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -193,6 +193,7 @@ size_t get_btsnooz_packet_length_to_write(
}  // namespace

const std::string SnoopLogger::kBtSnoopLogModeDisabled = "disabled";
const std::string SnoopLogger::kBtSnoopLogModeTruncated = "truncated";
const std::string SnoopLogger::kBtSnoopLogModeFiltered = "filtered";
const std::string SnoopLogger::kBtSnoopLogModeFull = "full";
const std::string SnoopLogger::kSoCManufacturerQualcomm = "Qualcomm";
@@ -203,6 +204,10 @@ const std::string SnoopLogger::kBtSnoopLogModeProperty = "persist.bluetooth.btsn
const std::string SnoopLogger::kBtSnoopDefaultLogModeProperty = "persist.bluetooth.btsnoopdefaultmode";
const std::string SnoopLogger::kSoCManufacturerProperty = "ro.soc.manufacturer";

// The max ACL packet size (in bytes) in truncated logging mode. All information
// past this point is truncated from a packet.
static constexpr uint32_t kMaxTruncatedAclPacketSize = 100;

SnoopLogger::SnoopLogger(
    std::string snoop_log_path,
    std::string snooz_log_path,
@@ -236,6 +241,15 @@ SnoopLogger::SnoopLogger(
    delete_btsnoop_files(get_btsnoop_log_path(snoop_log_path_, true));
    // delete snooz logs
    delete_btsnoop_files(snooz_log_path_);
  } else if (btsnoop_mode == kBtSnoopLogModeTruncated) {
    LOG_INFO("Snoop Logs truncated. Limiting to %u", kMaxTruncatedAclPacketSize);
    is_enabled_ = true;
    is_truncated_ = true;
    is_filtered_ = false;
    // delete filtered logs
    delete_btsnoop_files(get_btsnoop_log_path(snoop_log_path_, true));
    // delete snooz logs
    delete_btsnoop_files(snooz_log_path_);
  } else {
    LOG_INFO("Snoop Logs disabled");
    is_enabled_ = false;
@@ -320,6 +334,9 @@ void SnoopLogger::Capture(const HciPacket& packet, Direction direction, PacketTy
                             .dropped_packets = 0,
                             .timestamp = htonll(timestamp_us + kBtSnoopEpochDelta),
                             .type = static_cast<uint8_t>(type)};
  if (is_truncated_ && type == PacketType::ACL) {
    header.length_captured = htonl(std::min(length, kMaxTruncatedAclPacketSize));
  }
  {
    std::lock_guard<std::recursive_mutex> lock(file_mutex_);
    if (!is_enabled_) {
+2 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ class SnoopLogger : public ::bluetooth::Module {
  static const ModuleFactory Factory;

  static const std::string kBtSnoopLogModeDisabled;
  static const std::string kBtSnoopLogModeTruncated;
  static const std::string kBtSnoopLogModeFiltered;
  static const std::string kBtSnoopLogModeFull;
  static const std::string kSoCManufacturerQualcomm;
@@ -124,6 +125,7 @@ class SnoopLogger : public ::bluetooth::Module {
  std::ofstream btsnoop_ostream_;
  bool is_enabled_ = false;
  bool is_filtered_ = false;
  bool is_truncated_ = false;
  size_t max_packets_per_file_;
  common::CircularBuffer<std::string> btsnooz_buffer_;
  bool qualcomm_debug_log_enabled_ = false;