aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile8
-rwxr-xr-xbin/4a-api53
-rwxr-xr-xbin/4a-play18
-rwxr-xr-xbin/4a-status53
-rw-r--r--bin/lib4a-tools.sh35
5 files changed, 133 insertions, 34 deletions
diff --git a/Makefile b/Makefile
index 65393e0..906432b 100644
--- a/Makefile
+++ b/Makefile
@@ -14,13 +14,13 @@ help:
@echo "* make install DESTDIR=/usr"
@echo " changes the destination dir (in this example, the scripts will be installed in /usr/bin)"
-install: $(MEDIA)
+install: $(SCRIPTS) $(MEDIA)
@echo "Installing audio scripts $(notdir $(SCRIPTS)) into $(DESTDIR)/bin"
mkdir -p $(DESTDIR)/bin
install $(SCRIPTS) -m 750 $(DESTDIR)/bin
- @echo "Installing audio test files $(notdir $(MEDIA)) into $(DESTDIR)/media"
- mkdir -p $(DESTDIR)/media
- install $(MEDIA) -m 640 $(DESTDIR)/media
+ @echo "Installing audio test files $(notdir $(MEDIA)) into $(DESTDIR)/4a/media"
+ mkdir -p $(DESTDIR)/4a/media
+ install $(MEDIA) -m 640 $(DESTDIR)/4a/media
clean:
@echo "Cleanup done."
diff --git a/bin/4a-api b/bin/4a-api
index 4a26121..1e1bb39 100755
--- a/bin/4a-api
+++ b/bin/4a-api
@@ -1,8 +1,57 @@
#!/bin/bash
-WS4A=unix:/run/user/0/apis/ws/ahl-4a
+# load shell lib
+. $(dirname $BASH_SOURCE)/lib4a-tools.sh
-afb-client-demo -H -d $WS4A get_roles ""
+cmd=$1
+shift
+
+function usage() {
+ log "Usage: $0 <cmd> [opts]"
+ log "Commands:"
+ log " help: show this help"
+ log " api <verb> [args]: send direct request to API verb with args"
+ log " roles: get AHL roles"
+ log " hals [-a|--all] [-v|--verbose]: get HALs status"
+ log " mediaplayer ... : interact with mediaplayer service"
+ log " radio ... : interact with radio service"
+ exit 1
+}
+
+case $cmd in
+ roles)
+ 4a-client ahl-4a get_roles ""
+ ;;
+ api)
+ 4a-client "$@"
+ ;;
+ hals)
+ verbose=false
+ all=false
+ while [[ -n "$1" ]]; do
+ case $1 in
+ -a|--all) all=true;;
+ -v|--verbose) verbose=true;;
+ -av) all=true; verbose=true;;
+ esac
+ shift
+ done
+ 4a-client 4a-hal-manager loaded "{'verbose':$verbose,'all':$all}"
+ ;;
+ mediaplayer)
+ echo "TODO"
+ ;;
+ radio)
+ echo "TODO"
+ ;;
+ help|-h|--help)
+ usage
+ ;;
+ *)
+ error "Invalid command"
+ usage
+ ;;
+esac
# commandes HAL manager:
# 4a-hal-manager loaded
diff --git a/bin/4a-play b/bin/4a-play
index 894ab7f..483b892 100755
--- a/bin/4a-play
+++ b/bin/4a-play
@@ -1 +1,17 @@
-# TODO: play using aplay
+#!/bin/bash
+
+# load shell lib
+. $(dirname $BASH_SOURCE)/lib4a-tools.sh
+
+function usage() {
+ log "Usage: $0 <role:file1> [role:file2 ...]"
+ log "Available roles:"
+ exit 1
+}
+
+[[ $# == 0 ]] && usage
+
+for x in "$@"; do
+ log "Playing $x ..."
+ aplay -D Loopback,0,2 $x
+done
diff --git a/bin/4a-status b/bin/4a-status
index 519f470..c3e361e 100755
--- a/bin/4a-status
+++ b/bin/4a-status
@@ -1,51 +1,50 @@
#!/bin/bash
-set -o pipefail
+# load shell lib
+. $(dirname $BASH_SOURCE)/lib4a-tools.sh
-ERR="\\e[31mERROR\\e[0m"
-WRN="\\e[33mWARNING\\e[0m"
-SUC="\\e[32mSUCCESS\\e[0m"
+set -o pipefail
-function cout {
- echo -e "$*"
-}
+ERR="${color_red}ERROR${color_none}"
+WRN="${color_yellow}WARNING${color_none}"
+SUC="${color_green}SUCCESS${color_none}"
EXIT_CODE=0
-SOUND_CARDS=$( LANG="C" aplay -l | grep -oEe "^card\\s+[^\\[]+" | cut -d':' -f2 | uniq )
+# ------------------- enumerate sound cards ------------------------
+
+log "---- Audio cards detected ----"
+LANG="C" aplay -l | grep -oEe "^card\\s+[^\\[]+" | sort -u
+
+# -------------------- snd-aloop ------------------------
-cout " -- Is snd-aloop is available?"
+log ""
+log "---- snd-aloop driver availability ----"
if zcat /proc/config.gz | grep "CONFIG_SND_ALOOP=y" > /dev/null; then
- cout " -- $SUC: Built into the kernel"
+ log "$SUC: Built into the kernel"
else
- cout " -- $WRN: Not built into the kernel, devices order can randomly change!"
+ log "$WRN: Not built into the kernel, devices order can randomly change!"
if zcat /proc/config.gz | grep "CONFIG_SND_ALOOP=m" > /dev/null; then
- cout " -- $SUC: snd-aloop is provided!"
+ log "$SUC: snd-aloop is provided!"
if lsmod | grep "snd_aloop" > /dev/null; then
- cout " -- $SUC: snd-aloop is loaded!"
+ log "$SUC: snd-aloop is loaded!"
else
- cout " -- $ERR: snd-aloop is not loaded! 4a-softmixer can't work, please load it using: modprobe snd-aloop"
+ log "$ERR: snd-aloop is not loaded! 4a-softmixer can't work, please load it using: modprobe snd-aloop"
fi
else
- cout " -- $ERR: snd-aloop is not provided at all, 4a-softmixer can't work!"
+ log "$ERR: snd-aloop is not provided at all, 4a-softmixer can't work!"
EXIT_CODE=1
fi
fi
-cout " -- Is 4a running?"
+log ""
+log "---- 4a service status ----"
if ps x | grep "service-audio-4a" | grep -v "grep" > /dev/null; then
- cout " -- $SUC: Service is currently running!"
+ log "$SUC: Service is currently running!"
else
- cout " -- $WRN: Service is not currently running!"
+ log "$WRN: Service is not currently running!"
+ log "It can be started using the following command:"
+ log "systemctl restart *agl-service-audio-4a*.service"
fi
-
-#SERVICE_FILE=$( basename "$( ls "/var/local/lib/systemd/system/afm-service-agl-service-audio-4a--"* )" )
-
-cout
-cout "Found audio cards:"
-for card in $SOUND_CARDS; do
- cout " - $card"
-done
-
exit $EXIT_CODE
diff --git a/bin/lib4a-tools.sh b/bin/lib4a-tools.sh
new file mode 100644
index 0000000..4029046
--- /dev/null
+++ b/bin/lib4a-tools.sh
@@ -0,0 +1,35 @@
+stdout_in_terminal=0
+[[ -t 1 ]] && stdout_in_terminal=1
+function color {
+ [[ $stdout_in_terminal == 0 ]] && return
+ for k in $*; do
+ case $k in
+ bold) tput bold 2>/dev/null;;
+ none) tput sgr0 2>/dev/null;;
+ *) tput setaf $k 2>/dev/null;;
+ esac
+ done
+}
+color_green=$(color bold 2)
+color_yellow=$(color bold 3)
+color_red=$(color bold 1)
+color_blue=$(color bold 4)
+color_none=$(color none)
+
+function error() { echo "${color_red}$@${color_none}" >&2; }
+function warning() { echo "${color_yellow}$@${color_none}" >&2; }
+function info() { echo "${color_green}$@${color_none}" >&2; }
+function log() { echo "$@" >&2; }
+function debug() { [[ "$DEBUG" == 1 ]] && echo "${color_blue}DEBUG:" "$@" "${color_none}" >&2; }
+
+function 4a-client() {
+ # get port for audio service
+ local port=$(grep -sr X-AFM-http /var/local/lib/systemd/system/afm-service-agl-service-audio-4a*.service | cut -f2 -d'=')
+
+ debug "Detected 4A service on port $port"
+ afb-client-demo -H "localhost:$port/api?token=HELLO&uuid=magic" "$@"
+}
+
+function 4a-roles() {
+ 4a-client ahl-4a get_roles "" | tail -n +2 | jq '.response|.[]'
+}