--- /dev/null
+#!/bin/bash
+
+. /usr/bin/hvutils-lcd.sh
+
+fill=" "
+
+l1="HVMPD"
+l2=""
+l3=""
+l4=""
+
+# Previous line variables:
+l1p=""
+l2p=""
+l3p=""
+l4p=""
+
+led_on() {
+ cat /sys/class/leds/status/max_brightness > /sys/class/leds/status/brightness
+}
+
+led_off() {
+ echo 0 > /sys/class/leds/status/brightness
+}
+
+is_mpc_playing() {
+ if mpc | grep -q "\[playing\]"; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+declare -a key_prev=(
+[0]=0
+[1]=0
+[2]=0
+[3]=0
+[4]=0
+[5]=0
+)
+
+# Arg1: key code
+#
+# Return value:
+# 0 -> key pressed
+# 1 -> key NOT pressed
+key_pressed() {
+ local key_code=${1}
+ local dev
+ local evdev
+ local prev
+ local key
+ local id
+ local rc
+
+ case ${key_code} in
+ KEY_UP)
+ id=0
+ dev="0"
+ ;;
+ KEY_DOWN)
+ id=1
+ dev="3"
+ ;;
+ KEY_LEFT)
+ id=2
+ dev="4"
+ ;;
+ KEY_RIGHT)
+ id=3
+ dev="1"
+ ;;
+ KEY_ENTER)
+ id=4
+ dev="2"
+ ;;
+ KEY_PLAYPAUSE)
+ id=5
+ dev="5"
+ ;;
+ *)
+ log_err "Unsupported key: ${key_code}"
+ ;;
+ esac
+
+ evdev="/dev/input/event${dev}"
+
+ # 0 -> key pressed
+ # 10 -> key NOT pressed
+ evtest --query ${evdev} EV_KEY ${key_code}
+ if [ $? -eq 0 ]; then
+ key="1"
+ else
+ key="0"
+ fi
+
+ log_dbg "keycode: ${key_code}"
+ log_dbg " evdev=$evdev"
+ log_dbg " id=$id"
+ log_dbg " key =$key"
+ log_dbg " prev=$key"
+
+ if [ ${key_prev[${id}]} != "${key}" -a ${key} = "1" ]; then
+ rc=0
+ log_info "key pressed: ${key_code}"
+ else
+ rc=1
+ fi
+
+ key_prev[${id}]=${key}
+
+ return ${rc}
+}
+
+keys_manager() {
+ while true; do
+ if key_pressed KEY_PLAYPAUSE ; then
+ log_info "mpc toggle"
+
+ if is_mpc_playing ; then
+ mpc stop 1> /dev/null
+ else
+ mpc play 1> /dev/null
+ fi
+ fi
+
+ if is_mpc_playing ; then
+ led_on
+ log_dbg "[playing]"
+ else
+ led_off
+ log_dbg "[paused]"
+ fi
+
+ sleep 0.01
+ done
+}
+
+lcd_init
+
+# Start function in the background
+keys_manager &
+
+# Save PID
+pid=$!
+
+while true; do
+ # mpc -f "<%name%> <%title%> <%album%>" current
+ current="$(mpc current)"
+ log_dbg "current = ${current}"
+
+ if is_mpc_playing ; then
+ # | awk '{$1=$1};1' --> trim spaces before and after
+
+ station="${current}"
+
+ if echo "${current}" | grep -q -e "http" ; then
+ station="${current}"
+ elif echo "${current}" | grep -q -e ":" ; then
+ station="$(echo ${current} | awk -F: '{print $1}' | awk '{$1=$1};1')"
+ fi
+
+ song="$(echo ${current} | awk -F: '{print $2}' | awk '{$1=$1};1')"
+
+ if [ "${station}" != "${station_prev}" -o \
+ "${song}" != "${song_prev}" ]; then
+
+ log_dbg "station = ${station}"
+
+ l1="${station}"
+
+ if [ "${song}" != "${station}" ]; then
+ log_dbg "song = ${song}"
+
+ if echo "${song}" | grep -q -e "---" ; then
+ artist="$(echo ${song} | sed "s@\(^.*\)---.*@\1@")"
+ song="$(echo ${song} | sed "s@^.*---\(.*\)@\1@")"
+ elif echo "${song}" | grep -q -e " - " ; then
+ artist="$(echo ${song} | sed "s@\(^.*\) - .*@\1@")"
+ song="$(echo ${song} | sed "s@^.* - \(.*\)@\1@")"
+ else
+ artist=""
+ fi
+
+ log_dbg "artist = ${artist}"
+ fi
+ fi
+ else
+ song=""
+ artist=""
+
+ if [ "${station}" = "" ]; then
+ station="HVMPD"
+ fi
+ fi
+
+ station_prev="${station}"
+ song_prev="${song}"
+ artist_prev="${artist}"
+
+ l1="${station}"
+
+ if [ "${artist}" != "" ]; then
+ l2="${artist}"
+ l4="${song}"
+ else
+ l2="${song}${fill}"
+ l4="$(printf "%.20s\n" "${l2:20}")"
+ fi
+
+ # Bug, écran défectueux ligne 3...
+ l3=""
+
+ lcd_update
+
+ sleep 1
+done
+
+# Kill keys_manager
+kill ${pid} >/dev/null 2>&1
--- /dev/null
+DESCRIPTION = "hvmpd daemon"
+SECTION = "multimedia"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-or-later;md5=fed54355545ffd980b814dab4a3b312c"
+
+PV = "0.0.1"
+
+SRC_URI = "\
+ file://hvmpd.service \
+ file://hvmpd.sh \
+"
+
+inherit systemd
+
+do_install() {
+ install -d ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/hvmpd.sh ${D}${sbindir}
+
+ install -d ${D}${systemd_unitdir}/system
+ install -m 0644 ${WORKDIR}/hvmpd.service ${D}${systemd_unitdir}/system
+}
+
+FILES:${PN} = " \
+ ${systemd_unitdir}/system/hvmpd.service \
+ ${sbindir}/hvmpd.sh \
+"
+
+SYSTEMD_AUTO_ENABLE = "enable"
+SYSTEMD_SERVICE:${PN} = "hvmpd.service"
+
+RDEPENDS:${PN} += "bash hvutils-lcd"