Be a bit more-consistent with while loops
[khatus.git] / bin / khatus_controller
index fd60153..49195a8 100755 (executable)
@@ -9,6 +9,7 @@
     db["energy_state_prev"] = db["energy_state_curr"]
     db["energy_state_curr"] = $3
     db["energy_percentage"] = ensure_numeric($4)
+    alert_check_energy_battery()
 }
 
 /^in:ENERGY line_power/\
     debug("ENERGY line_power", $0)
     db["energy_line_power_prev"] = db["energy_line_power_curr"]
     db["energy_line_power_curr"] = $3
-}
-
-/^in:ENERGY/\
-{
-    debug("ENERGY ALL", $0)
-    alert_check_energy()
+    alert_check_energy_line_power()
 }
 
 /^in:MEMORY/\
@@ -99,8 +95,7 @@
 
 /^in:VOLUME/\
 {
-    shift()
-    db["volume"] = $0
+    set_volume()
 }
 
 /^in:MPD_SONG OK +MPD/ { delete db_mpd_song; next }
     output_msg_status_bar(make_status_bar())
 }
 
+function set_volume(    mute, left, right) {
+    # 0 RUNNING no 75% 75%
+    #msg_head = $1
+    #sink     = $2
+    #state    = $3
+    mute      = $4
+    left      = $5
+    right     = $6
+
+    if (mute == "no") {
+        db["volume"] = sprintf("%s %s", left, right)
+    } else if (mute == "yes") {
+        db["volume"] = "X"
+    } else {
+        error("Unexpected value for 'mute' field: " mute)
+    }
+}
+
 function set_mpd_song(    key, val) {
     key = $2
     shift()
@@ -184,11 +197,10 @@ function alert_check_mpd(    curr, prev, name, body) {
 #       - priority
 #       - snooze time (if already alerted, when to re-alert?)
 #       - text: subject/body
-function alert_check_energy(    \
-    from, dbg, state_curr, state_prev, line_power_curr, line_power_prev, \
-    remaining, subj, body\
+function alert_check_energy_battery(    \
+    from, dbg, state_curr, state_prev, remaining, subj, body\
 ) {
-    from = "alert_check_energy"
+    from = "alert_check_energy_battery"
 
     state_curr = db["energy_state_curr"]
     state_prev = db["energy_state_prev"]
@@ -196,17 +208,8 @@ function alert_check_energy(    \
 
     dbg["state_curr"] = state_curr
     dbg["remaining"] = remaining
-    dbg["energy_line_power_prev"] = db["energy_line_power_prev"]
-    dbg["energy_line_power_curr"] = db["energy_line_power_curr"]
     debug(from, "", dbg)
 
-    line_power_curr = db["energy_line_power_curr"]
-    line_power_prev = db["energy_line_power_prev"]
-
-    if (line_power_curr == "no" && line_power_prev != "no") {
-        alert_trigger_low(from, "PowerUnplugged", "")
-    }
-
     if (state_curr == "discharging") {
         if (remaining < 5) {
             subj = "Energy_CRITICALLY_Low"
@@ -238,6 +241,23 @@ function alert_check_energy(    \
     }
 }
 
+function alert_check_energy_line_power(    \
+    from, dbg, line_power_curr, line_power_prev, subj, body \
+) {
+    from = "alert_check_energy_line_power"
+
+    dbg["energy_line_power_prev"] = db["energy_line_power_prev"]
+    dbg["energy_line_power_curr"] = db["energy_line_power_curr"]
+    debug(from, "", dbg)
+
+    line_power_curr = db["energy_line_power_curr"]
+    line_power_prev = db["energy_line_power_prev"]
+
+    if (line_power_curr == "no" && line_power_prev != "no") {
+        alert_trigger_low(from, "PowerUnplugged", "")
+    }
+}
+
 function alert_trigger_low(from, subject, body) {
     alert_trigger("low", from, subject, body)
 }
@@ -491,6 +511,10 @@ function debug(location, msg, values,    sep, vals, key, payload) {
     }
 }
 
+function error(msg) {
+    output_msg("ERROR", msg, "/dev/stderr")
+}
+
 function ensure_numeric(n) {
     return n + 0
 }
This page took 0.042369 seconds and 4 git commands to generate.