Parse a single nmcli terse-mode line, handling escaped colons (\\:) in field values.
(line)
| 182 | def _resolve_scan_interface(self, interface=None): |
| 183 | """Return a safe interface name for scanning commands.""" |
| 184 | if isinstance(interface, str): |
| 185 | candidate = interface.strip() |
| 186 | if candidate: |
| 187 | return candidate |
| 188 | return self.default_wifi_interface |
| 189 | |
| 190 | def _client_wifi_interface(self): |
| 191 | """The radio that should carry the Wi-Fi *client* connection. |
| 192 | |
| 193 | With a USB dongle present the two jobs split across radios, and the |
| 194 | assignment is deliberate: |
| 195 | |
| 196 | - the **AP stays on the built-in** radio. Not every USB dongle's |
| 197 | driver supports AP mode at all, while the Pi's on-board chip |
| 198 | reliably does, and 2.4 GHz is the band every phone can find. |
| 199 | - the **client connection moves to the dongle**, which on a Pi Zero |
| 200 | 2 W is the only way to reach a 5 GHz network — the built-in radio |
| 201 | is 2.4 GHz only. |
| 202 | |
| 203 | The payoff is that the AP never has to come down: hostapd keeps the |
| 204 | built-in radio while the dongle joins, scans and roams independently. |
no test coverage detected