#!/usr/bin/env bash
# simulasi-pairing.sh -- simulasi state machine pairing ala bluetoothctl
# Pemakaian: BT_STATE=<direktori> bash simulasi-pairing.sh <perintah> [MAC]
# Perintah : pair | trust | connect | disconnect | status
# Tanpa argumen: menjalankan demo singkat di direktori sementara.

state=${BT_STATE:-$(mktemp -d)}
mkdir -p "$state"

nama_perangkat() {
    case "$1" in
        00:1A:7D:DA:71:13) echo "Logitech G435" ;;
        88:C9:D0:F5:12:34) echo "Keyboard Kantor" ;;
        *)                 echo "Perangkat Tanpa Nama" ;;
    esac
}

berkas_perangkat() {
    echo "$state/$(echo "$1" | tr ':' '_')"
}

set_flag() {  # $1=MAC $2=Paired|Trusted|Connected $3=yes|no
    sed -i "s/^$2: .*/$2: $3/" "$(berkas_perangkat "$1")"
}

perintah=${1:-demo}
mac=${2:-00:1A:7D:DA:71:13}
f=$(berkas_perangkat "$mac")

case "$perintah" in
    pair)
        cat > "$f" <<EOF2
Name: $(nama_perangkat "$mac")
Paired: yes
Trusted: no
Connected: no
EOF2
        echo "[CHG] Device $mac Paired: yes"
        echo "Pairing successful"
        ;;
    trust)
        if [ ! -f "$f" ]; then
            echo "Device $mac not available"
        else
            set_flag "$mac" Trusted yes
            echo "[CHG] Device $mac Trusted: yes"
        fi
        ;;
    connect)
        if [ ! -f "$f" ]; then
            echo "Failed to connect: device $mac belum di-pair"
        elif grep -q '^Connected: yes' "$f"; then
            echo "Failed to connect: perangkat sudah tersambung"
        else
            set_flag "$mac" Connected yes
            echo "[CHG] Device $mac Connected: yes"
            echo "Connection successful"
        fi
        ;;
    disconnect)
        if [ ! -f "$f" ] || ! grep -q '^Connected: yes' "$f"; then
            echo "Device $mac not connected"
        else
            set_flag "$mac" Connected no
            echo "[CHG] Device $mac Connected: no"
        fi
        ;;
    status)
        if [ ! -f "$f" ]; then
            echo "Device $mac not available"
        else
            echo "Device $mac ($(nama_perangkat "$mac"))"
            sed 's/^/  /' "$f"
        fi
        ;;
    demo)
        echo "== demo di direktori sementara =="
        BT_STATE=$state bash "$0" pair "$mac"
        BT_STATE=$state bash "$0" trust "$mac"
        BT_STATE=$state bash "$0" connect "$mac"
        BT_STATE=$state bash "$0" status "$mac"
        ;;
    *)
        echo "Perintah tidak dikenal: $perintah"
        echo "Pilihan: pair | trust | connect | disconnect | status"
        ;;
esac
