Sync library with live findings: raw socket docs, wire reply parsing, pack-id BMS, empty-slot guard
This commit is contained in:
1 parent
3d59a75f14
commit
c11188dd0b
6 files changed
+83
-31
No files matched your search
@@ -1,15 +1,20 @@
|
||||
"""Local (direct-connect) device client.
|
||||
|
||||
Talks to the aGate **on its own network** after joining the device hotspot —
|
||||
the ``mode == local`` path of the app (see ``docs/RE_DART_FINDINGS.md`` §8,
|
||||
§11). Two channels:
|
||||
the direct-connect path of the app (see ``docs/RE_DART_FINDINGS.md`` §8,
|
||||
§11, §14). Two channels:
|
||||
|
||||
* **HTTP** to ``https://IP:PORT/terminal/...`` — the ``/terminal/*`` local
|
||||
endpoint family (hotspot info, aGate info, overall info, MQTT relay, ...).
|
||||
Scheme/port are *not* confirmed (Open item #3); defaults are candidates.
|
||||
* **TCP socket** to ``10.100.1.1:18000`` (candidate port — Open item #4)
|
||||
carrying the encrypted :class:`~franklinwh_agate_client.protocol.CommunicationObject`
|
||||
envelope with little-endian int16 length framing.
|
||||
Scheme/port are *not* confirmed live (Open item #3); defaults follow the
|
||||
app's ``RemoteService`` shape.
|
||||
* **TCP socket** to ``10.100.1.1:9000`` — verified live 2026-10-16. The
|
||||
app dials the gateway IP port ``18000`` (``0x4650``), which is closed on
|
||||
the tested unit; ``9000`` answers the same encrypted
|
||||
:class:`~franklinwh_agate_client.protocol.CommunicationObject` envelope
|
||||
sent **raw** (``dart:io _Socket.add``, no length prefix), with socket-id
|
||||
``cmdType`` values (``SOCKET_CMD_TYPE``) and ``opt``-seeded payloads.
|
||||
Replies use the identical framing with id ``request + 1``.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -27,8 +32,6 @@ from .protocol import (
|
||||
CommunicationOperate,
|
||||
SequenceNumber,
|
||||
SocketFrameDecoder,
|
||||
decrypt_data,
|
||||
decrypt_request,
|
||||
decrypt_wire,
|
||||
direct_connect_request,
|
||||
encrypt_object,
|
||||
@@ -182,7 +185,8 @@ class LocalDeviceClient:
|
||||
``increaseSN`` counter, serialised to compact JSON,
|
||||
``encrypt_object``-ed, and sent **raw** (``_Socket.add``, no length
|
||||
prefix). The reply is accumulated chunk by chunk and run through
|
||||
``decrypt_data`` until it yields a JSON object.
|
||||
``decrypt_wire`` (2nd-comma split, equipNo-derived key) until it
|
||||
yields a JSON object.
|
||||
"""
|
||||
if envelope is None:
|
||||
envelope = direct_connect_request(
|
||||
|
||||
Reference in new issue
Block a user