diff options
| author | sumuel <samuel@yakubos.org> | 2026-08-17 20:44:55 +0000 |
|---|---|---|
| committer | sumuel <samuel@yakubos.org> | 2026-08-17 20:44:55 +0000 |
| commit | 76424950e373d3b04ac3dd13019151bfba3e8423 (patch) | |
| tree | 4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /src/detection/poweradapter/poweradapter_apple.c | |
Add the files
Diffstat (limited to 'src/detection/poweradapter/poweradapter_apple.c')
| -rw-r--r-- | src/detection/poweradapter/poweradapter_apple.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/detection/poweradapter/poweradapter_apple.c b/src/detection/poweradapter/poweradapter_apple.c new file mode 100644 index 0000000..9a5008a --- /dev/null +++ b/src/detection/poweradapter/poweradapter_apple.c @@ -0,0 +1,39 @@ +#include "fastfetch.h" +#include "poweradapter.h" +#include "common/apple/cf_helpers.h" + +#include <IOKit/ps/IOPowerSources.h> +#include <IOKit/ps/IOPSKeys.h> + +const char* ffDetectPowerAdapter(FFlist* results) { + FF_CFTYPE_AUTO_RELEASE CFDictionaryRef details = IOPSCopyExternalPowerAdapterDetails(); + if (details && CFDictionaryContainsKey(details, CFSTR(kIOPSPowerAdapterWattsKey))) { + FFPowerAdapterResult* adapter = FF_LIST_ADD(FFPowerAdapterResult, *results); + + ffStrbufInit(&adapter->name); + ffStrbufInit(&adapter->description); + ffStrbufInit(&adapter->manufacturer); + ffStrbufInit(&adapter->modelName); + ffStrbufInit(&adapter->serial); + adapter->watts = 0; + + ffCfDictGetString(details, CFSTR(kIOPSNameKey), &adapter->name); + if (ffCfDictGetString(details, CFSTR("Model"), &adapter->modelName) != NULL) { + int adapterId; + if (ffCfDictGetInt(details, CFSTR(kIOPSPowerAdapterIDKey), &adapterId) == 0) { + ffStrbufSetF(&adapter->modelName, "%d", adapterId); + } + } + ffCfDictGetString(details, CFSTR("Manufacturer"), &adapter->manufacturer); + ffCfDictGetString(details, CFSTR("Description"), &adapter->description); + if (ffCfDictGetString(details, CFSTR("SerialString"), &adapter->serial) != NULL) { + int serialNumber; + if (ffCfDictGetInt(details, CFSTR(kIOPSPowerAdapterSerialNumberKey), &serialNumber) == 0) { + ffStrbufSetF(&adapter->serial, "%X", serialNumber); + } + } + ffCfDictGetInt(details, CFSTR(kIOPSPowerAdapterWattsKey), &adapter->watts); + } + + return NULL; +} |