#!/bin/bash
set -euo pipefail
IFACE="${1:?interface}"

if command -v iw >/dev/null 2>&1; then
  /usr/sbin/iw dev "$IFACE" scan ap-force 2>/dev/null | awk '
    function emit() {
      if (ssid == "") return
      signal_pct = int((signal_dbm + 100) * 2)
      if (signal_pct < 0) signal_pct = 0
      if (signal_pct > 100) signal_pct = 100
      gsub(/\t/, " ", ssid)
      print ssid "\t" signal_pct "\t" (secure ? "Secured" : "Open")
    }
    /^BSS / {
      emit()
      ssid = ""
      signal_dbm = -100
      secure = 0
      next
    }
    /^[ \t]*SSID: / {
      ssid = substr($0, index($0, "SSID: ") + 6)
      next
    }
    /^[ \t]*signal: / {
      signal_dbm = $2 + 0
      next
    }
    /^[ \t]*(RSN:|WPA:)/ {
      secure = 1
      next
    }
    END {
      emit()
    }
  '
  exit 0
fi

/usr/bin/nmcli dev wifi rescan ifname "$IFACE" 2>/dev/null || true
sleep 4
/usr/bin/nmcli -t -f SSID,SIGNAL,SECURITY dev wifi list ifname "$IFACE" --rescan no
