Document direct-connect return flow (§14): manual join to socketQueryDeviceInfo
This commit is contained in:
1 parent
186f58da7d
commit
58227608a7
1 file changed
+31
@@ -285,6 +285,37 @@ the meaning of `1102` (no pool cmd maps to `0x44E`), and the 17-char
|
|||||||
`equipNo` (sub-device? battery unit? reply convention?). Current probes
|
`equipNo` (sub-device? battery unit? reply convention?). Current probes
|
||||||
use socket-space ids (`1101/1307/1705/1707`) via `scripts/host_probe3.py`.
|
use socket-space ids (`1101/1307/1705/1707`) via `scripts/host_probe3.py`.
|
||||||
|
|
||||||
|
## 14. Direct-connect flow (manual AP join → return to app)
|
||||||
|
|
||||||
|
`sections/menus/direct_connect/` owns the SoftAP onboarding path:
|
||||||
|
|
||||||
|
- The *manual connect* button (`hotspot_guide_widget.dart`) calls
|
||||||
|
`goToSystemWifiSettings()` → `OpenSystemWifiSetting` method channel →
|
||||||
|
OS Wi-Fi picker. The app goes to background.
|
||||||
|
- On return, the page (`viewDidLoad`, plus the provider-state listener in
|
||||||
|
`direct_connect.dart`) re-evaluates: with a device SN selected it calls
|
||||||
|
`DirectConnectProvider.socketQueryDeviceInfo()` (also fired from
|
||||||
|
`onSelectHotspot` once wifi state settles).
|
||||||
|
- `socketQueryDeviceInfo` first awaits `CommunicationService.directConnect()`,
|
||||||
|
which is true when `connectedFhpAp()` (current SSID is the FHP AP) **or** a
|
||||||
|
BLE device is connected — otherwise it aborts silently.
|
||||||
|
- It then issues `queryDeviceInfo` in the *current* transport mode
|
||||||
|
(`_queryDeviceInfoFuture`, args `{"minProtocolVer": "V1.00.00"}`, or
|
||||||
|
`{"installInfo": 2}` for mqtt mode which is HTTP-forwarded instead).
|
||||||
|
In socket mode `_connectBeforeRequest` dials
|
||||||
|
`getWifiGatewayIP():18000` (`"10.100.1.1"` fallback) with ~2 retries.
|
||||||
|
- On the reply it updates the device model
|
||||||
|
(`updateFromDeviceInfoInitDataEntity`) and continues with
|
||||||
|
`_queryTrustedDeviceModel` → `_checkConnectedNotTrustedAp`.
|
||||||
|
- The `communicate` factory always seeds socket payloads with `"opt"`
|
||||||
|
(operation type, `0` for query), so the on-air discovery frame is shaped
|
||||||
|
`{"opt": 0, "minProtocolVer": "V1.00.00"}` (§3).
|
||||||
|
|
||||||
|
Implication: on the SoftAP the app speaks **only** to the gateway IP,
|
||||||
|
port **18000**. Port `9000` appears nowhere in the app; `18000` is closed
|
||||||
|
on the tested unit, so even the app's own socket path cannot work there —
|
||||||
|
consistent with all-silent probes.
|
||||||
|
|
||||||
## 9. Bluetooth (BLE) transport — `communication_center/bluetooth`
|
## 9. Bluetooth (BLE) transport — `communication_center/bluetooth`
|
||||||
|
|
||||||
- `BluetoothManager` (singleton), `BluetoothStatus`: `closed / connected / connecting / interrupted`.
|
- `BluetoothManager` (singleton), `BluetoothStatus`: `closed / connected / connecting / interrupted`.
|
||||||
|
|||||||
Reference in new issue
Block a user