Clear ringbuffer after dumping to file
Clear the in-memory ringbuffer after writing to file.
Bug: 193007899
Test: Manually verified ringbuffers are cleared with command "adb shell
lshal debug android.hardware.wifi@1.5::IWifi"
Change-Id: Icfa08634e948d7155e231458edd394a4d699fbaa
diff --git a/wifi/1.5/default/ringbuffer.cpp b/wifi/1.5/default/ringbuffer.cpp
index 26971ff..f554111 100644
--- a/wifi/1.5/default/ringbuffer.cpp
+++ b/wifi/1.5/default/ringbuffer.cpp
@@ -47,6 +47,11 @@
return data_;
}
+void Ringbuffer::clear() {
+ data_.clear();
+ size_ = 0;
+}
+
} // namespace implementation
} // namespace V1_5
} // namespace wifi
diff --git a/wifi/1.5/default/ringbuffer.h b/wifi/1.5/default/ringbuffer.h
index d8b87f2..03fb37a 100644
--- a/wifi/1.5/default/ringbuffer.h
+++ b/wifi/1.5/default/ringbuffer.h
@@ -37,6 +37,7 @@
// within |maxSize_|.
void append(const std::vector<uint8_t>& input);
const std::list<std::vector<uint8_t>>& getData() const;
+ void clear();
private:
std::list<std::vector<uint8_t>> data_;
diff --git a/wifi/1.5/default/wifi_chip.cpp b/wifi/1.5/default/wifi_chip.cpp
index 961f9da..024747a 100644
--- a/wifi/1.5/default/wifi_chip.cpp
+++ b/wifi/1.5/default/wifi_chip.cpp
@@ -1940,8 +1940,8 @@
// write ringbuffers to file
{
std::unique_lock<std::mutex> lk(lock_t);
- for (const auto& item : ringbuffer_map_) {
- const Ringbuffer& cur_buffer = item.second;
+ for (auto& item : ringbuffer_map_) {
+ Ringbuffer& cur_buffer = item.second;
if (cur_buffer.getData().empty()) {
continue;
}
@@ -1959,6 +1959,7 @@
PLOG(ERROR) << "Error writing to file";
}
}
+ cur_buffer.clear();
}
// unique_lock unlocked here
}