diff --git a/provision/adb-wireless.sh b/provision/adb-wireless.sh index 504bf55..ed24f5a 100755 --- a/provision/adb-wireless.sh +++ b/provision/adb-wireless.sh @@ -38,16 +38,59 @@ suche_dienst() { return 1 } +ist_verbunden() { adb devices | grep -qw 'device$'; } + +weiter_mit_provision() { + adb devices | grep -w 'device$' | sed 's/^/ /' + kopf "Fertig" + cat <<'TEXT' + Weiter mit: + + ./provision/provision.sh + + Gut zu wissen: ADB wird in diesem Projekt nur für die Ersteinrichtung + gebraucht. Im Dauerbetrieb kommt HPOS ohne Privilegienkanal aus. + Trennen mit: adb disconnect +TEXT +} + +# Versucht zu verbinden und meldet Erfolg. Die Adresse kommt per mDNS oder, +# wenn das Netz kein Multicast durchlässt, von Hand. +verbinden_versuchen() { + local wartezeit="${1:-8}" ziel + printf ' Suche Verbindungsdienst ' >&2 + if ziel=$(suche_dienst _adb-tls-connect._tcp "$wartezeit"); then + printf '\n' >&2 + ok "gefunden: $ziel" + else + printf '\n' >&2 + return 1 + fi + adb connect "$ziel" >/dev/null 2>&1 + sleep 2 + ist_verbunden +} + # ── Schon verbunden? ───────────────────────────────────────────────────────── kopf "Aktueller Stand" -VERBUNDEN=$(adb devices | grep -w 'device$' | wc -l) -if [ "$VERBUNDEN" -gt 0 ]; then - adb devices | grep -w 'device$' | sed 's/^/ /' +if ist_verbunden; then ok "Es ist bereits ein Gerät verbunden." - hinweis "Weiter mit: ./provision/provision.sh" + weiter_mit_provision exit 0 fi -hinweis "Kein Gerät verbunden — Kopplung wird eingerichtet." + +# ── Erst verbinden, dann erst koppeln ──────────────────────────────────────── +# Die Kopplung bleibt dauerhaft bestehen — nur die Verbindung geht verloren, und +# der Port ändert sich bei jedem Einschalten. Wer schon einmal gekoppelt hat, +# braucht deshalb keinen neuen Code, sondern nur ein neues connect. Ohne diesen +# Schritt landet man bei jedem Aufruf wieder im Kopplungsdialog. +hinweis "Kein Gerät verbunden. Prüfe zuerst, ob schon eine Kopplung besteht …" +if verbinden_versuchen 8; then + ok "Bereits gekoppelt — es war nur die Verbindung weg." + weiter_mit_provision + exit 0 +fi +hinweis "Keine bestehende Kopplung nutzbar — richte eine neue ein." # ── Anleitung ──────────────────────────────────────────────────────────────── kopf "Auf dem Telefon" @@ -97,22 +140,35 @@ fi # Hauptseite von "Drahtloses Debugging" unter "IP-Adresse und Port". kopf "Verbinden" hinweis "Das Kopplungsfenster kann jetzt geschlossen werden." -printf ' Suche Verbindungsdienst ' -if CONNECT_ZIEL=$(suche_dienst _adb-tls-connect._tcp 20); then - printf '\n'; ok "gefunden: $CONNECT_ZIEL" -else - printf '\n'; warn "Nichts per mDNS gefunden." - hinweis "Adresse steht auf der Hauptseite von 'Drahtloses Debugging'." - printf ' Adresse eintippen (IP:PORT) > ' - read -r CONNECT_ZIEL ' +read -r CONNECT_ZIEL