summaryrefslogtreecommitdiffstats
path: root/darwin
diff options
context:
space:
mode:
authorNathan Scott <nathans@redhat.com>2020-11-17 18:12:38 +1100
committerNathan Scott <nathans@redhat.com>2020-11-18 10:17:33 +1100
commitea9622b8c9444d92007f24fc54597f83c498f11d (patch)
tree13cb45909d2c873b7b09ec59580d6a8db4676b0b /darwin
parente3af8d0d0851dd6ce25446a7f9a99e2127795a78 (diff)
Merge individual Battery.[ch] files into Platform.[ch]
Consistent with everything else involving platform-specific calls from core htop code.
Diffstat (limited to 'darwin')
-rw-r--r--darwin/Battery.c73
-rw-r--r--darwin/Battery.h8
-rw-r--r--darwin/Platform.c68
-rw-r--r--darwin/Platform.h2
4 files changed, 70 insertions, 81 deletions
diff --git a/darwin/Battery.c b/darwin/Battery.c
deleted file mode 100644
index c89f5b30..00000000
--- a/darwin/Battery.c
+++ /dev/null
@@ -1,73 +0,0 @@
-#include "Battery.h"
-
-#include <math.h>
-
-#include <CoreFoundation/CoreFoundation.h>
-#include <CoreFoundation/CFString.h>
-#include <IOKit/ps/IOPowerSources.h>
-#include <IOKit/ps/IOPSKeys.h>
-
-void Battery_getData(double* level, ACPresence* isOnAC) {
- CFTypeRef power_sources = IOPSCopyPowerSourcesInfo();
-
- *level = NAN;
- *isOnAC = AC_ERROR;
-
- if (NULL == power_sources) {
- return;
- }
-
- CFArrayRef list = IOPSCopyPowerSourcesList(power_sources);
- CFDictionaryRef battery = NULL;
- int len;
-
- if (NULL == list) {
- CFRelease(power_sources);
-
- return;
- }
-
- len = CFArrayGetCount(list);
-
- /* Get the battery */
- for (int i = 0; i < len && battery == NULL; ++i) {
- CFDictionaryRef candidate = IOPSGetPowerSourceDescription(power_sources,
- CFArrayGetValueAtIndex(list, i)); /* GET rule */
- CFStringRef type;
-
- if (NULL != candidate) {
- type = (CFStringRef) CFDictionaryGetValue(candidate,
- CFSTR(kIOPSTransportTypeKey)); /* GET rule */
-
- if (kCFCompareEqualTo == CFStringCompare(type, CFSTR(kIOPSInternalType), 0)) {
- CFRetain(candidate);
- battery = candidate;
- }
- }
- }
-
- if (NULL != battery) {
- /* Determine the AC state */
- CFStringRef power_state = CFDictionaryGetValue(battery, CFSTR(kIOPSPowerSourceStateKey));
-
- *isOnAC = (kCFCompareEqualTo == CFStringCompare(power_state, CFSTR(kIOPSACPowerValue), 0))
- ? AC_PRESENT
- : AC_ABSENT;
-
- /* Get the percentage remaining */
- double current;
- double max;
-
- CFNumberGetValue(CFDictionaryGetValue(battery, CFSTR(kIOPSCurrentCapacityKey)),
- kCFNumberDoubleType, &current);
- CFNumberGetValue(CFDictionaryGetValue(battery, CFSTR(kIOPSMaxCapacityKey)),
- kCFNumberDoubleType, &max);
-
- *level = (current * 100.0) / max;
-
- CFRelease(battery);
- }
-
- CFRelease(list);
- CFRelease(power_sources);
-}
diff --git a/darwin/Battery.h b/darwin/Battery.h
deleted file mode 100644
index 74a27fc5..00000000
--- a/darwin/Battery.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef HEADER_Battery
-#define HEADER_Battery
-
-#include "BatteryMeter.h"
-
-void Battery_getData(double* level, ACPresence* isOnAC);
-
-#endif
diff --git a/darwin/Platform.c b/darwin/Platform.c
index be71360c..bf9645b3 100644
--- a/darwin/Platform.c
+++ b/darwin/Platform.c
@@ -26,6 +26,10 @@ in the source distribution for its full text.
#include <math.h>
#include <stdlib.h>
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreFoundation/CFString.h>
+#include <IOKit/ps/IOPowerSources.h>
+#include <IOKit/ps/IOPSKeys.h>
ProcessField Platform_defaultFields[] = { PID, USER, PRIORITY, NICE, M_SIZE, M_RESIDENT, STATE, PERCENT_CPU, PERCENT_MEM, TIME, COMM, 0 };
@@ -341,3 +345,67 @@ bool Platform_getNetworkIO(unsigned long int* bytesReceived,
*packetsTransmitted = 0;
return false;
}
+
+void Platform_getBattery(double* level, ACPresence* isOnAC) {
+ CFTypeRef power_sources = IOPSCopyPowerSourcesInfo();
+
+ *level = NAN;
+ *isOnAC = AC_ERROR;
+
+ if (NULL == power_sources)
+ return;
+
+ CFArrayRef list = IOPSCopyPowerSourcesList(power_sources);
+ CFDictionaryRef battery = NULL;
+ int len;
+
+ if (NULL == list) {
+ CFRelease(power_sources);
+
+ return;
+ }
+
+ len = CFArrayGetCount(list);
+
+ /* Get the battery */
+ for (int i = 0; i < len && battery == NULL; ++i) {
+ CFDictionaryRef candidate = IOPSGetPowerSourceDescription(power_sources,
+ CFArrayGetValueAtIndex(list, i)); /* GET rule */
+ CFStringRef type;
+
+ if (NULL != candidate) {
+ type = (CFStringRef) CFDictionaryGetValue(candidate,
+ CFSTR(kIOPSTransportTypeKey)); /* GET rule */
+
+ if (kCFCompareEqualTo == CFStringCompare(type, CFSTR(kIOPSInternalType), 0)) {
+ CFRetain(candidate);
+ battery = candidate;
+ }
+ }
+ }
+
+ if (NULL != battery) {
+ /* Determine the AC state */
+ CFStringRef power_state = CFDictionaryGetValue(battery, CFSTR(kIOPSPowerSourceStateKey));
+
+ *isOnAC = (kCFCompareEqualTo == CFStringCompare(power_state, CFSTR(kIOPSACPowerValue), 0))
+ ? AC_PRESENT
+ : AC_ABSENT;
+
+ /* Get the percentage remaining */
+ double current;
+ double max;
+
+ CFNumberGetValue(CFDictionaryGetValue(battery, CFSTR(kIOPSCurrentCapacityKey)),
+ kCFNumberDoubleType, &current);
+ CFNumberGetValue(CFDictionaryGetValue(battery, CFSTR(kIOPSMaxCapacityKey)),
+ kCFNumberDoubleType, &max);
+
+ *level = (current * 100.0) / max;
+
+ CFRelease(battery);
+ }
+
+ CFRelease(list);
+ CFRelease(power_sources);
+}
diff --git a/darwin/Platform.h b/darwin/Platform.h
index f42b7209..40b7d730 100644
--- a/darwin/Platform.h
+++ b/darwin/Platform.h
@@ -65,4 +65,6 @@ bool Platform_getNetworkIO(unsigned long int* bytesReceived,
unsigned long int* bytesTransmitted,
unsigned long int* packetsTransmitted);
+void Platform_getBattery(double *percent, ACPresence *isOnAC);
+
#endif

© 2014-2024 Faster IT GmbH | imprint | privacy policy