]> git.eshelyaron.com Git - emacs.git/commitdiff
Minor adjustments to battery.el on Android
authorPo Lu <luangruo@yahoo.com>
Sun, 16 Jun 2024 07:27:43 +0000 (15:27 +0800)
committerEshel Yaron <me@eshelyaron.com>
Mon, 17 Jun 2024 10:43:52 +0000 (12:43 +0200)
* src/android.c (android_query_battery):

* java/org/gnu/emacs/EmacsService.java (queryBattery19)
(queryBattery): Reorder items in value for consistency with
Fandroid_query_battery.

* lisp/battery.el (battery-status-function): Select
battery-android only when android-query-battery is present.
(battery-android): Return temperature and correct values of
power source constants.

(cherry picked from commit a39f6480ea5b6d3f81db90808123cdeb54790787)

java/org/gnu/emacs/EmacsService.java
lisp/battery.el
src/android.c

index cfe9e42de4df891fa768374fd24e38ecbe76c2c7..77124a7d80fb959e1d72da0a8daf304f4af10b25 100644 (file)
@@ -1212,7 +1212,7 @@ public final class EmacsService extends Service
     temp = battery.getIntExtra (BatteryManager.EXTRA_TEMPERATURE, 0);
 
     return new long[] { capacity, chargeCounter, currentAvg,
-                       currentNow, remaining, status, plugged,
+                       currentNow, status, remaining, plugged,
                        temp, };
   }
 
@@ -1289,7 +1289,7 @@ public final class EmacsService extends Service
       }
 
     return new long[] { capacity, chargeCounter, currentAvg,
-                       currentNow, remaining, status, plugged,
+                       currentNow, status, remaining, plugged,
                        temp, };
   }
 
index 4aae3e0ef54ae320c2e3717e7ca54c3ed50bc2a6..4959e48317f2acb7247838a2861bf3f97b55b81c 100644 (file)
@@ -33,7 +33,7 @@
 ;; - BSD by using the `apm' program.
 ;; - Darwin (macOS) by using the `pmset' program.
 ;; - Windows via the GetSystemPowerStatus API call.
-;; - Android 5 or later via the BatteryManager APIs.
+;; - Android via the BatteryManager APIs.
 
 ;;; Code:
 
@@ -112,7 +112,7 @@ Value does not include \".\" or \"..\"."
         ;; Note that even though the Linux kernel APIs are sometimes
         ;; available on Android, they are badly implemented by Android
         ;; kernels, so avoid using those.
-        ((eq system-type 'android)
+        ((fboundp 'android-query-battery)
          #'battery-android)
        ((and (eq system-type 'berkeley-unix)
              (file-executable-p "/usr/sbin/apm"))
@@ -1107,7 +1107,8 @@ The following %-sequences are provided:
            (rate nil)
            (remaining nil)
            (hours nil)
-           (minutes nil))
+           (minutes nil)
+           (temperature nil))
       ;; Figure out the percentage.
       (setq percentage (number-to-string (car status)))
       ;; Figure out the capacity
@@ -1133,6 +1134,12 @@ The following %-sequences are provided:
           (setq remaining (format "%d:%d" hours-left mins)
                 hours (number-to-string hours-left)
                 minutes (number-to-string mins))))
+      ;; Return the temperature, so long as its value is not downright
+      ;; absurd (as when the sensor is faulty or the battery controller
+      ;; driver does not provide temperature readouts).
+      (unless (or (< (nth 7 status) -1000)
+                  (> (nth 7 status) 1000))
+        (setq temperature (/ (nth 7 status) 10.0)))
       ;; Return results.
       (list (cons ?c capacity)
             (cons ?p percentage)
@@ -1145,11 +1152,12 @@ The following %-sequences are provided:
             (cons ?L (cl-case (nth 6 status)
                        (0 "off-line")
                        (1 "on-line")
-                       (2 "on-line (dock)")
-                       (3 "on-line (USB)")
-                       (4 "on-line (wireless)")
+                       (2 "on-line (USB)")
+                       (4 "on-line (dock)")
+                       (8 "on-line (wireless)")
                        (t "unknown")))
-            (cons ?t (/ (or (nth 7 status) 0) 10.0))))))
+            (cons ?t (/ (or (nth 7 status) 0) 10.0))
+            (cons ?d temperature)))))
 
 \f
 ;;; Private functions.
index 17b5d6d411590bcc9064689de10d46033b5eb8c6..3c0e3ee155894717eafd5969656eada2d1e9c3a8 100644 (file)
@@ -6574,8 +6574,8 @@ android_query_battery (struct android_battery_state *status)
   status->charge_counter = longs[1];
   status->current_average = longs[2];
   status->current_now = longs[3];
-  status->remaining = longs[4];
-  status->status = longs[5];
+  status->status = longs[4];
+  status->remaining = longs[5];
   status->plugged = longs[6];
   status->temperature = longs[7];