| // Copyright 2019 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef DIAGNOSTICS_WILCO_DTC_SUPPORTD_TELEMETRY_BLUETOOTH_EVENT_SERVICE_H_ |
| #define DIAGNOSTICS_WILCO_DTC_SUPPORTD_TELEMETRY_BLUETOOTH_EVENT_SERVICE_H_ |
| |
| #include <cstdint> |
| #include <string> |
| #include <vector> |
| |
| #include <base/observer_list.h> |
| #include <base/observer_list_types.h> |
| #include <base/macros.h> |
| |
| namespace diagnostics { |
| |
| // BluetoothEventService is used for monitoring objects representing Bluetooth |
| // Adapters and Devices. |
| class BluetoothEventService { |
| public: |
| struct AdapterData { |
| AdapterData(); |
| ~AdapterData(); |
| |
| std::string name; |
| std::string address; |
| bool powered = false; |
| uint32_t connected_devices_count = 0; |
| |
| bool operator==(const AdapterData& data) const; |
| }; |
| |
| // Interface for observing bluetooth adapters and devices changes. |
| class Observer : public base::CheckedObserver { |
| public: |
| virtual ~Observer() = default; |
| |
| virtual void BluetoothAdapterDataChanged( |
| const std::vector<AdapterData>& adapters) = 0; |
| }; |
| |
| BluetoothEventService(); |
| virtual ~BluetoothEventService(); |
| |
| virtual const std::vector<AdapterData>& GetLatestEvent() = 0; |
| |
| void AddObserver(Observer* observer); |
| void RemoveObserver(Observer* observer); |
| |
| protected: |
| base::ObserverList<Observer> observers_; |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(BluetoothEventService); |
| }; |
| |
| } // namespace diagnostics |
| |
| #endif // DIAGNOSTICS_WILCO_DTC_SUPPORTD_TELEMETRY_BLUETOOTH_EVENT_SERVICE_H_ |