NoPaste

Skript zum Starten und Beenden von ecasound

von smutbert
Beschreibung:
zweiter Versuch
Snippet erstellt:
21.06.2020 15:48:18
Snippet wird automatisch gelöscht:
Niemals

Dein Code:
  1. #!/bin/bash
  2.  
  3. echo -n "setzen der konstanten Variablen: "
  4.  
  5. BT_MAC[1]="88:00:00:00:31:F0"
  6. BT_MAC[2]="12:51:02:20:0F:E8"
  7. INTERVAL=10
  8. BUFFER=4096
  9.  
  10. echo "erledigt."
  11. echo -n "definiere Funktion zum Starten von ecasound: "
  12.  
  13. # Funktion zum Starten von ecasound mit einem Argument
  14. # 0 -> Ausgabe über die eingebauten Lautsprecher
  15. # 1 -> Ausgabe über plugbtL1
  16. # 2 -> Ausgabe über plugbtL2
  17. # 3 -> Ausgabe über plugbtL1 und plugbtL2
  18. start_ecasound() {
  19.         if test "${1}" = 0 ; then
  20.                 ecasound -b:${BUFFER} -i alsaplugin,1,1 -o alsaplugin,0 &> /dev/null &
  21.         elif test "${1}" = 1 ; then
  22.                 ecasound -b:${BUFFER} -i alsaplugin,1,1 -o alsa,plugbtL1 &> /dev/null &
  23.         elif test "${1}" = 2 ; then
  24.                 ecasound -b:${BUFFER} -i alsaplugin,1,1 -o alsa,plugbtL2 &> /dev/null &
  25.         elif test "${1}" = 3 ; then
  26.                 ecasound -b:${BUFFER} -a:1,2 -i alsaplugin,1,1 -a:1 -o alsa,plugbtL1 -a:2 -o alsa,plugbtL2 &> /dev/null &
  27.         fi
  28.         echo ${!}
  29. }
  30.  
  31. echo "erledigt."
  32. echo -n "definiere Funktion zum Prüfen der Bluetooth-Verbindung: "
  33.  
  34. # Funktion, die prüft welche Bluetoothgeräte verbunden sind
  35. # 0: keines
  36. # 1: plugbtL1
  37. # 2: plugbtL2
  38. # 3: plugbtL1 und plugbtL2
  39. check_device() {
  40.         bt_count=0
  41.         for i in ${!BT_MAC[@]} ; do
  42.                 bluetoothctl info "${BT_MAC[${i}]}" | grep "Connected: yes$" &> /dev/null && bt_count=$((${bt_count}+${i}))
  43.         done
  44.         echo ${bt_count}
  45. }
  46.  
  47. echo "erledigt."
  48.  
  49. # Hauptteil
  50. # die Variable running speichert, welcher ecasound-Befehl gerade läuft, -1 bedeutet keiner,
  51. # der Rest stimmt mit den Argumenten von von start_ecasound() überein
  52. running=-1
  53. while true ; do
  54.         echo "neuer Schleifendurchgang, connected=${connected} und running=${running}..."
  55.         echo -n "überprüfe Bluetooth-Verbindungen: "
  56.         connected=$(check_device)
  57.         echo "${connected}."
  58.         if test ${running} -eq ${connected}; then
  59.                 echo -n "prüfe ob ecasound noch läuft: "
  60.                 pgrep "ecasound" | grep ${pid} &> /dev/null || running=-1
  61.                 echo "${running}."
  62.         elif test ${running} -ne -1 ; then
  63.                 echo -n "beende laufendes ecasound: "
  64.                 pgrep "ecasound" | grep ${pid} &> /dev/null && kill ${pid} && echo "erledigt." || echo "?"
  65.                 running=-1
  66.         fi
  67.  
  68.         if test ${running} -ne ${connected} ; then
  69.                 echo -n "starte ecasound: "
  70.                 pid=$(start_ecasound ${connected}) && running=${connected} && echo "ok." || echo "nicht ok."
  71.         fi
  72.         sleep ${INTERVAL}
  73. done

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. Alternativ kannst du den gesamten Eintrag auch als Datei herunterladen.