#ifndef _privatelib_h_
#define _privatelib_h_
#include <TargetConditionals.h>
#if !TARGET_OS_EMBEDDED
#define HAVE_CF_USER_NOTIFICATION 1
#define HAVE_HID_SYSTEM 1
#define HAVE_SMART_BATTERY 1
#endif
#ifndef kIOPMPSBatteryChargeStatusKey
#define kIOPMPSBatteryChargeStatusKey "ChargeStatus"
#endif
enum {
kSmartBattPFExternalInput = (1<<0),
kSmartBattPFSafetyOverVoltage = (1<<1),
kSmartBattPFChargeSafeOverTemp = (1<<2),
kSmartBattPFDischargeSafeOverTemp = (1<<3),
kSmartBattPFCellImbalance = (1<<4),
kSmartBattPFChargeFETFailure = (1<<5),
kSmartBattPFDischargeFETFailure = (1<<6),
kSmartBattPFDataFlushFault = (1<<7),
kSmartBattPFPermanentAFECommFailure = (1<<8),
kSmartBattPFPeriodicAFECommFailure = (1<<9),
kSmartBattPFChargeSafetyOverCurrent = (1<<10),
kSmartBattPFDischargeSafetyOverCurrent = (1<<11),
kSmartBattPFOpenThermistor = (1<<12),
kSmartBattPFFuseBlown = (1<<15)
};
struct IOPMBattery {
io_registry_entry_t me;
io_object_t msg_port;
CFMutableDictionaryRef properties;
bool externalConnected:1;
bool externalChargeCapable:1;
bool isCharging:1;
bool isPresent:1;
bool markedDeclining:1;
uint32_t pfStatus;
int currentCap;
int maxCap;
int designCap;
int voltage;
int avgAmperage;
int instantAmperage;
int maxerr;
int cycleCount;
int location;
int hwAverageTR;
int hwInstantTR;
int swCalculatedTR;
int invalidWakeSecs;
CFStringRef health;
CFStringRef failureDetected;
CFStringRef name;
CFStringRef dynamicStoreKey;
CFStringRef chargeStatus;
};
typedef struct IOPMBattery IOPMBattery;
__private_extern__ IOPMBattery **_batteries(void);
__private_extern__ IOPMBattery *_newBatteryFound(io_registry_entry_t);
__private_extern__ void _batteryChanged(IOPMBattery *);
__private_extern__ bool _batteryHas(IOPMBattery *, CFStringRef);
__private_extern__ int _batteryCount(void);
__private_extern__ void _removeBattery(io_registry_entry_t);
__private_extern__ CFArrayRef _copyLegacyBatteryInfo(void);
__private_extern__ void _askNicelyThenShutdownSystem(void);
__private_extern__ void _askNicelyThenRestartSystem(void);
__private_extern__ void _askNicelyThenSleepSystem(void);
__private_extern__ IOReturn getSystemManagementKeyInt32(uint32_t key, uint32_t *val);
#if !TARGET_OS_EMBEDDED
__private_extern__ CFUserNotificationRef _showUPSWarning(void);
#endif
__private_extern__ SCDynamicStoreRef _getSharedPMDynamicStore(void);
__private_extern__ IOReturn _setRootDomainProperty(
CFStringRef key,
CFTypeRef val);
__private_extern__ int callerIsRoot(int uid, int gid);
__private_extern__ int callerIsAdmin(int uid, int gid);
__private_extern__ int callerIsConsole(int uid, int gid);
__private_extern__ void _oneOffHacksSetup(void);
#endif