summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-mod-battstatus/root/usr
diff options
context:
space:
mode:
Diffstat (limited to 'modules/luci-mod-battstatus/root/usr')
-rwxr-xr-xmodules/luci-mod-battstatus/root/usr/libexec/rpcd/luci.battstatus39
-rwxr-xr-xmodules/luci-mod-battstatus/root/usr/share/rpcd/acl.d/luci-mod-battstatus.json10
2 files changed, 49 insertions, 0 deletions
diff --git a/modules/luci-mod-battstatus/root/usr/libexec/rpcd/luci.battstatus b/modules/luci-mod-battstatus/root/usr/libexec/rpcd/luci.battstatus
new file mode 100755
index 0000000000..d3534b4f35
--- /dev/null
+++ b/modules/luci-mod-battstatus/root/usr/libexec/rpcd/luci.battstatus
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+. /usr/share/libubox/jshn.sh
+
+case "$1" in
+ list)
+ printf '{ "getBatteryStatus": {} }'
+ ;;
+ call)
+ case "$2" in
+ getBatteryStatus)
+ json_init
+
+ eval $(/bin/ubus call system board 2>/dev/null | /usr/bin/jsonfilter -e 'MODEL=@.model')
+ json_add_object "$MODEL"
+
+ if [ -f /usr/sbin/i2cset ] && [ -f /usr/sbin/i2cget ]; then
+ json_add_boolean valid 1
+ if [ $(i2cset -y 0 0x0a 0x0a 0x01 && i2cget -y 0 0x0a 0x0a) = 0x40 ]; then
+ json_add_boolean charging 1
+ else
+ json_add_boolean charging 0
+ fi
+ json_add_int percentage $(i2cset -y 0 0x0a 0x0a 0x10 && i2cget -y 0 0x0a 0x0a | xargs printf %d)
+ else
+ json_add_boolean valid 0
+ if [ ! -f /usr/sbin/i2cset ]; then
+ json_add_string message "Need i2cset"
+ else
+ json_add_string message "Need i2cget"
+ fi
+ fi
+
+ json_close_object
+ json_dump
+ ;;
+ esac
+ ;;
+esac
diff --git a/modules/luci-mod-battstatus/root/usr/share/rpcd/acl.d/luci-mod-battstatus.json b/modules/luci-mod-battstatus/root/usr/share/rpcd/acl.d/luci-mod-battstatus.json
new file mode 100755
index 0000000000..4babc31b94
--- /dev/null
+++ b/modules/luci-mod-battstatus/root/usr/share/rpcd/acl.d/luci-mod-battstatus.json
@@ -0,0 +1,10 @@
+{
+ "luci-mod-battstatus": {
+ "description": "Grant access to battery status",
+ "read": {
+ "ubus": {
+ "luci.battstatus": [ "getBatteryStatus" ]
+ }
+ }
+ }
+}