Skip to content

Commit

Permalink
scripts: rewrite day/night mode elements controls
Browse files Browse the repository at this point in the history
  • Loading branch information
themactep committed Feb 22, 2025
1 parent 7cc417b commit c7b3088
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 46 deletions.
25 changes: 8 additions & 17 deletions overlay/lower/usr/sbin/color
Original file line number Diff line number Diff line change
@@ -1,52 +1,43 @@
#!/bin/sh

# set parameters from cli, if empty
[ -z "$mode" ] && mode=$1

MODE_FILE=/tmp/colormode.txt
MODE_FILE="/tmp/colormode.txt"
[ -f "$MODE_FILE" ] || touch "$MODE_FILE"

# NB! ISP mode is set backwards: 0 - color, 1 - monochrome

show_help() {
echo "Usage: $0 [on|off|toggle|status|read]" >&2
exit 1
}

switch_to_color() {
imp-control ispmode 0
echo "Switched to full-color mode"
echo "1" > "$MODE_FILE"
}

switch_to_monochrome() {
imp-control ispmode 1
echo "Switched to monochrome mode"
echo "0" > "$MODE_FILE"
}

case "$1" in
0 | off)
0 | off | night)
switch_to_monochrome
;;
1 | on)
1 | on | day)
switch_to_color
;;
~ | toggle)
if [ "$(cat $MODE_FILE 2> /dev/null)" -eq 1 ]; then
if [ "$(cat "$MODE_FILE")" -eq 1 ]; then
switch_to_monochrome
else
switch_to_color
fi
;;
status)
cat $MODE_FILE
cat "$MODE_FILE"
;;
\? | read)
cat $MODE_FILE | tr -d '\n'
cat "$MODE_FILE" | tr -d '\n'
;;
*)
show_help
echo "Usage: $0 [on|off|toggle|status|read]" >&2
exit 1
;;
esac

Expand Down
18 changes: 11 additions & 7 deletions overlay/lower/usr/sbin/daynight
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
#!/bin/sh

die() { printf "\e[38;5;160m%s\e[0m\n" "$1" >&2; exit 1; }
die() { echo "$1" >&2; exit 1; }

pidof -o %PPID $(basename $0) > /dev/null && die "is already running"

. /etc/web.conf
if [ -z "$day_night_color" ]; then
fw_printenv | grep ^day_night_ | sed -E 's/=(.*)$/="\1"/' >> /etc/web.conf
. /etc/web.conf
fi

STOP_FILE="/tmp/daynight.stop"

MODE_FILE="/tmp/nightmode.txt"
[ -f "$MODE_FILE" ] || echo "day" > "$MODE_FILE"

. /etc/web.conf

is_disabled() {
[ -f "$STOP_FILE" ]
}
Expand All @@ -37,24 +41,24 @@ controls_white() {

switch_to_day() {
is_disabled && return
echo "switch to day"
controls_ircut && ircut on
controls_ir850 && irled off ir850
controls_ir940 && irled off ir940
controls_white && irled off white
controls_color && color on
echo "day" > $MODE_FILE
echo "day" > "$MODE_FILE"
echo "switched to day"
}

switch_to_night() {
is_disabled && return
echo "switch to night"
controls_color && color off
controls_ircut && ircut off
controls_ir850 && irled on ir850
controls_ir940 && irled on ir940
controls_white && irled on white
echo "night" > $MODE_FILE
echo "night" > "$MODE_FILE"
echo "switched to night"
}

# determine luminance of the scene
Expand Down
41 changes: 19 additions & 22 deletions overlay/lower/usr/sbin/ircut
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
#!/bin/sh

die() { printf "\e[38;5;160m%s\e[0m\n" "$1" >&2; exit 1; }
info() { printf "\e[38;5;46m%s\e[0m\n" "$1" >&2; }
die() { echo "$1" >&2; exit 1; }

gpio_ircut=$(fw_printenv -n gpio_ircut)
. /etc/web.conf

if [ -z "$gpio_ircut" ]; then
fw_printenv gpio_ircut | sed -E 's/=(.*)$/="\1"/' >> /etc/web.conf
. /etc/web.conf
fi

pin1=$(echo $gpio_ircut | awk '{print $1}')
if [ -n "$pin1" ]; then
Expand All @@ -30,19 +34,6 @@ fi
MODE_FILE="/tmp/ircutmode.txt"
[ -f "$MODE_FILE" ] || touch "$MODE_FILE"

show_help() {
echo "Usage: $0 [on|off|toggle|status]" >&2
exit 1
}

report_ir_filter() {
case "$(cat "$MODE_FILE")" in
0) info "IRCUT filter is removed" ;;
1) info "IRCUT filter is set" ;;
*) info "IRCUT filter is in unknown state" ;;
esac
}

ir_filter_off() {
gpio set "$pin1" "$pin1_off" > /dev/null
if [ -n "$pin2" ]; then
Expand All @@ -66,24 +57,30 @@ ir_filter_on() {
case "$1" in
0 | off | night)
ir_filter_off
report_ir_filter
;;
1 | on | day)
ir_filter_on
report_ir_filter
;;
~ | toggle)
[ "$(cat "$MODE_FILE")" -eq 0 ] && ir_filter_on || ir_filter_off
report_ir_filter
if [ "$(cat "$MODE_FILE")" -eq 0 ]; then
ir_filter_on
else
ir_filter_off
fi
;;
status)
report_ir_filter
case "$(cat "$MODE_FILE")" in
0) echo "IRCUT filter is removed" ;;
1) echo "IRCUT filter is set" ;;
*) echo "IRCUT filter is in unknown state" ;;
esac
;;
\? | read)
cat "$MODE_FILE" | tr -d '\n'
;;
*)
show_help
echo "Usage: $0 [on|off|toggle|status|read]" >&2
exit 1
;;
esac

Expand Down

0 comments on commit c7b3088

Please sign in to comment.