mirror of
https://github.com/esphome/esphome.git
synced 2025-10-06 03:43:49 +01:00
ble pool
This commit is contained in:
@@ -356,7 +356,7 @@ void ESP32BLE::loop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Log dropped events periodically
|
// Log dropped events periodically
|
||||||
uint32_t dropped = this->ble_events_.get_and_reset_dropped_count();
|
uint16_t dropped = this->ble_events_.get_and_reset_dropped_count();
|
||||||
if (dropped > 0) {
|
if (dropped > 0) {
|
||||||
ESP_LOGW(TAG, "Dropped %u BLE events due to buffer overflow", dropped);
|
ESP_LOGW(TAG, "Dropped %u BLE events due to buffer overflow", dropped);
|
||||||
}
|
}
|
||||||
|
@@ -58,7 +58,7 @@ template<class T, uint8_t SIZE> class LockFreeQueue {
|
|||||||
return (tail - head + SIZE) % SIZE;
|
return (tail - head + SIZE) % SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t get_and_reset_dropped_count() { return dropped_count_.exchange(0, std::memory_order_relaxed); }
|
uint16_t get_and_reset_dropped_count() { return dropped_count_.exchange(0, std::memory_order_relaxed); }
|
||||||
|
|
||||||
void increment_dropped_count() { dropped_count_.fetch_add(1, std::memory_order_relaxed); }
|
void increment_dropped_count() { dropped_count_.fetch_add(1, std::memory_order_relaxed); }
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ template<class T, uint8_t SIZE> class LockFreeQueue {
|
|||||||
protected:
|
protected:
|
||||||
T *buffer_[SIZE];
|
T *buffer_[SIZE];
|
||||||
// Atomic: written by producer (push/increment), read+reset by consumer (get_and_reset)
|
// Atomic: written by producer (push/increment), read+reset by consumer (get_and_reset)
|
||||||
std::atomic<uint32_t> dropped_count_; // Keep this larger for accumulated counts
|
std::atomic<uint16_t> dropped_count_; // 65535 max - more than enough for drop tracking
|
||||||
// Atomic: written by consumer (pop), read by producer (push) to check if full
|
// Atomic: written by consumer (pop), read by producer (push) to check if full
|
||||||
std::atomic<uint8_t> head_;
|
std::atomic<uint8_t> head_;
|
||||||
// Atomic: written by producer (push), read by consumer (pop) to check if empty
|
// Atomic: written by producer (push), read by consumer (pop) to check if empty
|
||||||
|
Reference in New Issue
Block a user