(self, mode: Optional[str] = None, focus_interface: Optional[str] = None)
| 448 | 'interfaces': all_interfaces, |
| 449 | 'scan_mode': self.get_scan_mode(), |
| 450 | 'focus_interface': focus_name, |
| 451 | 'focus_interface_connected': bool(focus_entry and focus_entry.get('connected')), |
| 452 | 'focus_interface_ssid': focus_entry.get('connected_ssid') if focus_entry else None, |
| 453 | } |
| 454 | return payload |
| 455 | |
| 456 | def set_scan_enabled(self, interface_name: str, enabled: bool) -> Dict: |
| 457 | """Override scan enable flag for a specific interface.""" |
| 458 | with self._lock: |
| 459 | self.scan_overrides[interface_name] = bool(enabled) |
| 460 | self.shared_data.config['wifi_scan_interface_overrides'] = self.scan_overrides |
| 461 | self.shared_data.save_config() |
| 462 | if interface_name in self.interfaces: |
| 463 | self.interfaces[interface_name]['scan_enabled'] = bool(enabled) |
| 464 | if not enabled: |
| 465 | self.interfaces[interface_name]['reason'] = 'user_disabled' |
| 466 | else: |
| 467 | self.interfaces[interface_name]['reason'] = None |
| 468 | return self.interfaces[interface_name] |
| 469 | return {} |
| 470 | |
| 471 | def get_scan_mode(self) -> str: |
| 472 | raw_mode = str(self.shared_data.config.get('wifi_multi_scan_mode', '') or '').strip().lower() |
| 473 | if raw_mode in (self.MODE_SINGLE, self.MODE_MULTI): |
| 474 | return raw_mode |
| 475 | legacy_enabled = bool(self.shared_data.config.get('wifi_multi_network_scans_enabled', False)) |
| 476 | return self.MODE_MULTI if legacy_enabled else self.MODE_SINGLE |
| 477 | |
| 478 | def is_multi_mode_enabled(self) -> bool: |
| 479 | return self.get_scan_mode() == self.MODE_MULTI |
| 480 | |
| 481 | def get_focus_interface(self) -> Optional[str]: |
| 482 | focus = self.shared_data.config.get('wifi_multi_scan_focus_interface') or '' |
| 483 | focus = str(focus).strip() |
| 484 | return focus or None |
| 485 | |
| 486 | def get_focus_job(self) -> Optional[ScanJob]: |
| 487 | focus_name = self.get_focus_interface() |
| 488 | if not focus_name: |
| 489 | return None |
| 490 | with self._lock: |
| 491 | entry = self.interfaces.get(focus_name) |
no test coverage detected