// SPDX-License-Identifier: MIT // // ES-DE Frontend // SystemStatus.h // // Queries system status information from the operating system. // This includes Bluetooth, Wi-Fi, cellular and battery. // #ifndef ES_CORE_SYSTEM_STATUS_H #define ES_CORE_SYSTEM_STATUS_H #include #include #include class SystemStatus { public: ~SystemStatus(); static SystemStatus& getInstance(); void setCheckFlags(); void setPolling(const bool state); void pollImmediately() { mPollImmediately = true; } struct Status { bool hasBluetooth; bool hasWifi; bool hasCellular; bool hasBattery; bool batteryCharging; int batteryCapacity; Status() : hasBluetooth {false} , hasWifi {false} , hasCellular {false} , hasBattery {false} , batteryCharging {false} , batteryCapacity {0} { } }; Status getStatus(); private: SystemStatus() noexcept; void pollStatus(); void getStatusBluetooth(); void getStatusWifi(); void getStatusCellular(); void getStatusBattery(); bool mCheckBluetooth; bool mCheckWifi; bool mCheckCellular; bool mCheckBattery; std::unique_ptr mPollThread; Status mStatus; std::mutex mStatusMutex; std::atomic mExitPolling; std::atomic mPollImmediately; std::atomic mHasBluetooth; std::atomic mHasWifi; std::atomic mHasCellular; std::atomic mHasBattery; std::atomic mBatteryCharging; std::atomic mBatteryCapacity; }; #endif // ES_CORE_SYSTEM_STATUS_H