FunKey-OS/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/brightness

129 lines
2.6 KiB
Bash
Executable File

#!/bin/sh
# Uncomment the following line to get debug info
#set -x
SELF="$(basename ${0})"
SYSTEM_BRIGHTNESS="/sys/class/backlight/backlight/brightness"
DEFAULT_BRIGHTNESS_VALUE=100
BRIGHTNESS_STEP=10
NOTIF_DURATION=2
usage() {
>&2 echo "Usage: ${SELF} get"
>&2 echo " ${SELF} set new_brightness_percentage"
exit 1
}
increase_brightness() {
# Get current value
local current_brightness=$(get_brightness)
# Compute new brightness value
local new_brightness=0
let new_brightness=${current_brightness}+${BRIGHTNESS_STEP}
if [ ${new_brightness} -gt 100 ]; then
new_brightness=100
fi
# Change brightness
if [ ${new_brightness} -ne ${current_brightness} ]; then
set_brightness ${new_brightness}
fi
# Notif
notif set ${NOTIF_DURATION} " BRIGHTNESS: ${new_brightness}%%"
}
decrease_brightness() {
# Get current value
local current_brightness=$(get_brightness)
# Compute new brightness value
local new_brightness=0
if [ ${current_brightness} -gt ${BRIGHTNESS_STEP} ]; then
let new_brightness=${current_brightness}-${BRIGHTNESS_STEP}
fi
# Change brightness
if [ ${new_brightness} -ne ${current_brightness} ]; then
set_brightness ${new_brightness}
fi
# Notif
notif set ${NOTIF_DURATION} " BRIGHTNESS: ${new_brightness}%%"
}
get_brightness() {
local brightness=$(fw_printenv -n brightness 2>/dev/null)
if ! [ ! "${brightness}" -ne "${brightness}" ] 2> /dev/null; then
brightness=${DEFAULT_BRIGHTNESS_VALUE}
fw_setenv brightness ${brightness}
fi
echo ${brightness}
}
set_brightness() {
# Set the new brightness percentage in the kernel driver
local brightness=${1}
local kernel_brightness
let kernel_brightness=${brightness}+10
let kernel_brightness/=10
echo ${kernel_brightness} > "${SYSTEM_BRIGHTNESS}"
# Set the new brightness value in a bootloader variable
if [ ${?} -eq 0 -a $(get_brightness) -ne ${brightness} ]; then
fw_setenv brightness ${brightness}
fi
}
# Check number of arguments
if [ ${#} -lt 1 -o ${#} -gt 2 ]; then
usage
fi
case "${1}" in
up)
if [ ${#} -ne 1 ]; then
usage
fi
increase_brightness
;;
down)
if [ ${#} -ne 1 ]; then
usage
fi
decrease_brightness
;;
get)
if [ ${#} -ne 1 ]; then
usage
fi
get_brightness
;;
set)
if [ ${#} -ne 2 ]; then
usage
fi
# Make sure the argument is a positive number <= 100
if [ -n "${2}" ] && [ "${2}" -eq "${2}" ] 2>/dev/null && \
[ "${2}" -ge 0 ] && [ "${2}" -le 100 ]; then
set_brightness "${2}"
else
usage
fi
;;
*)
usage
;;
esac
exit 0