xbmc
LogindUPowerSyscall.h
1 /*
2  * Copyright (C) 2012 Denis Yantarev
3  * Copyright (C) 2005-2018 Team Kodi
4  * This file is part of Kodi - https://kodi.tv
5  *
6  * SPDX-License-Identifier: GPL-2.0-or-later
7  * See LICENSES/README.md for more information.
8  */
9 
10 #pragma once
11 
12 #include "DBusUtil.h"
13 #include "powermanagement/IPowerSyscall.h"
14 
16 {
17 public:
19  ~CLogindUPowerSyscall() override;
20  bool Powerdown() override;
21  bool Suspend() override;
22  bool Hibernate() override;
23  bool Reboot() override;
24  bool CanPowerdown() override;
25  bool CanSuspend() override;
26  bool CanHibernate() override;
27  bool CanReboot() override;
28  int BatteryLevel() override;
29  bool PumpPowerEvents(IPowerEventsCallback *callback) override;
30  // we don't require UPower because everything except the battery level works fine without it
31  static bool HasLogind();
32 private:
33  CDBusConnection m_connection;
34  bool m_canPowerdown;
35  bool m_canSuspend;
36  bool m_canHibernate;
37  bool m_canReboot;
38  bool m_hasUPower;
39  bool m_lowBattery;
40  int m_batteryLevel;
41  int m_delayLockSleepFd = -1; // file descriptor for the logind sleep delay lock
42  int m_delayLockShutdownFd = -1; // file descriptor for the logind powerdown delay lock
43  void UpdateBatteryLevel();
44  void InhibitDelayLockSleep();
45  void InhibitDelayLockShutdown();
46  int InhibitDelayLock(const char *what);
47  void ReleaseDelayLockSleep();
48  void ReleaseDelayLockShutdown();
49  void ReleaseDelayLock(int lockFd, const char *what);
50  static bool LogindSetPowerState(const char *state);
51  static bool LogindCheckCapability(const char *capability);
52 };
Definition: DBusUtil.h:38
Definition: IPowerSyscall.h:70
Definition: IPowerSyscall.h:11
bool PumpPowerEvents(IPowerEventsCallback *callback) override
Pump power related events back to xbmc.
Definition: LogindUPowerSyscall.cpp:229
Definition: LogindUPowerSyscall.h:15