module Pythia.Services.Battery
(
queryBattery,
Battery (..),
Percentage (..),
BatteryStatus (..),
BatteryApp (..),
)
where
import Pythia.Data.Percentage (Percentage (MkPercentage))
import Pythia.Prelude
import Pythia.Services.Battery.Acpi qualified as Acpi
import Pythia.Services.Battery.SysFs qualified as SysFs
import Pythia.Services.Battery.Types
( Battery (MkBattery, percentage, status),
BatteryApp (BatteryAppAcpi, BatteryAppSysFs, BatteryAppUPower),
BatteryStatus (Charging, Discharging, Full, Pending),
)
import Pythia.Services.Battery.UPower qualified as UPower
queryBattery ::
( MonadCatch m,
MonadFileReader m,
MonadPathReader m,
MonadTypedProcess m
) =>
BatteryApp ->
m Battery
queryBattery :: forall (m :: Type -> Type).
(MonadCatch m, MonadFileReader m, MonadPathReader m,
MonadTypedProcess m) =>
BatteryApp -> m Battery
queryBattery BatteryApp
BatteryAppAcpi = m Battery
forall (m :: Type -> Type).
(MonadPathReader m, MonadThrow m, MonadTypedProcess m) =>
m Battery
Acpi.batteryShellApp
queryBattery BatteryApp
BatteryAppSysFs = m Battery
forall (m :: Type -> Type).
(MonadFileReader m, MonadPathReader m, MonadThrow m) =>
m Battery
SysFs.batteryQuery
queryBattery BatteryApp
BatteryAppUPower = m Battery
forall (m :: Type -> Type).
(MonadPathReader m, MonadThrow m, MonadTypedProcess m) =>
m Battery
UPower.batteryShellApp