feat: truth-first get_ap (dual radio + enterprise) and derived pineap mode

get_ap now reports radio0, radio1 and enterprise APs separately from UCI
(never a stored/cached branch), with radio channel fallback. Mode is
derived from live enabled/collect state instead of showing 'unknown';
device truth wins over stale stored presets.
This commit is contained in:
2026-08-18 19:25:06 -05:00
parent 740348067a
commit 38ef4e8d0a
4 changed files with 123 additions and 81 deletions
+12 -8
View File
@@ -111,22 +111,26 @@ class GetApRadio1Test(unittest.TestCase):
def test_open_reports_radio1_when_present(self):
status, payload = server.h_pineap_wifi_get_ap(ctx())
self.assertEqual(status, 200)
self.assertEqual(payload['open']['ssid'], 'CorpGuest')
self.assertEqual(payload['open']['channel'], 36)
self.assertEqual(payload['open']['country'], 'US')
self.assertEqual(payload['radio1_open']['ssid'], 'CorpGuest')
self.assertEqual(payload['radio1_open']['channel'], 36)
self.assertEqual(payload['radio1_open']['country'], 'US')
# radio0 cards keep reporting radio0 truth
self.assertEqual(payload['open']['ssid'], 'pager-open')
def test_wpa_reports_radio1_when_present(self):
status, payload = server.h_pineap_wifi_get_ap(ctx())
self.assertEqual(status, 200)
self.assertEqual(payload['wpa']['ssid'], 'Corp')
self.assertEqual(payload['wpa']['enctype'], 'sae')
self.assertEqual(payload['wpa']['channel'], 1)
self.assertEqual(payload['radio1_wpa']['ssid'], 'Corp')
self.assertEqual(payload['radio1_wpa']['enctype'], 'sae')
self.assertEqual(payload['radio1_wpa']['channel'], 1)
self.assertEqual(payload['wpa']['ssid'], 'Service')
def test_radio1_info(self):
status, payload = server.h_pineap_wifi_get_ap(ctx())
self.assertEqual(status, 200)
self.assertEqual(payload['radio1']['band'], server.BAND_5G)
self.assertEqual(payload['radio1']['channel'], 'auto')
self.assertEqual(payload['radios']['radio1']['band'], server.BAND_5G)
self.assertEqual(payload['radios']['radio1']['channel'], 'auto')
self.assertEqual(payload['radios']['radio0']['band'], server.BAND_2G)
class GetApRadio1AbsentTest(unittest.TestCase):