2022-08-14 17:06:22 +00:00
|
|
|
import Foundation
|
|
|
|
|
2024-02-01 22:51:41 +00:00
|
|
|
enum Power {
|
2022-08-14 17:06:22 +00:00
|
|
|
static var hasInternalBattery: Bool {
|
|
|
|
let psInfo = IOPSCopyPowerSourcesInfo().takeRetainedValue()
|
|
|
|
let psList = IOPSCopyPowerSourcesList(psInfo).takeRetainedValue() as [CFTypeRef]
|
|
|
|
|
|
|
|
for ps in psList {
|
|
|
|
if let psDesc = IOPSGetPowerSourceDescription(psInfo, ps).takeUnretainedValue() as? [String: Any] {
|
2022-08-14 22:20:27 +00:00
|
|
|
if let type = psDesc[kIOPSTypeKey] as? String,
|
|
|
|
type == kIOPSInternalBatteryType
|
|
|
|
{
|
|
|
|
return true
|
2022-08-14 17:06:22 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
static var isConnectedToPower: Bool {
|
|
|
|
let psInfo = IOPSCopyPowerSourcesInfo().takeRetainedValue()
|
|
|
|
let psList = IOPSCopyPowerSourcesList(psInfo).takeRetainedValue() as [CFTypeRef]
|
|
|
|
|
|
|
|
for ps in psList {
|
|
|
|
if let psDesc = IOPSGetPowerSourceDescription(psInfo, ps).takeUnretainedValue() as? [String: Any] {
|
|
|
|
if let type = psDesc[kIOPSTypeKey] as? String,
|
2022-08-14 22:20:27 +00:00
|
|
|
type == kIOPSInternalBatteryType,
|
2022-08-14 17:06:22 +00:00
|
|
|
let powerSourceState = (psDesc[kIOPSPowerSourceStateKey] as? String)
|
|
|
|
{
|
|
|
|
return powerSourceState == kIOPSACPowerValue
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|