cd429e8c74
Two defects from the 5-lane review of commit b6ac916a2c:
1. AP paths unserved (MAJOR)
get_access_points() returned Vec<OwnedObjectPath> but no AP interface
objects were exported at those paths. Qt and other NM clients would
see the device but no APs at all.
Fix: add AccessPointInterface (#[interface(name =
"org.freedesktop.NetworkManager.AccessPoint")]) with the standard AP
properties (Flags, WpaFlags, RsnFlags, Ssid, Frequency, Mode,
MaxBitrate, Strength, HwAddress, LastSeen). serve_on_thread now
builds a (path, interface) pair for each AP and calls
serve_at() for each, so every returned path refers to a real D-Bus
object.
2. ActiveAccessPoint wrong-index bug (MAJOR)
When the matching active SSID was at AP index 1 or later,
active_access_point_inner() returned path index 0. Now iterates
over access_points to find the index where ap.ssid == active_ssid
and returns that path. No-match returns '/' sentinel.
Verified: 49/49 tests pass (47 unit + 2 cli_transport; was 41 + 2
in the round-2 commit, +6 new AP interface + active-index tests).