Files
trail-mate/docs/models/hostlink-integration/model.md
T

2.2 KiB
Raw Blame History

HostLink 会话状态与帧路由

模型状态:integration · confirmed;属于跨处理器集成模型

会话的真实表示

这里没有 HostlinkSession 类。会话由三个明确结构组成:

  • LinkStateStopped / Waiting / Connected / Handshaking / Ready / Error
  • Statusstate、RX/TX count、last error
  • SessionRuntimeStatus、TX sequence、handshake deadline、status/GPS emit timestamps

行为由 reset_sessionstop_sessionset_link_statemark_handshake_startedmark_handshake_completemark_disconnectedhandshake_expired 等函数操作。

握手与恢复

stateDiagram-v2
  [*] --> Stopped
  Stopped --> Waiting: reset_session
  Waiting --> Connected: transport connected
  Connected --> Handshaking: mark_handshake_started
  Handshaking --> Ready: mark_handshake_complete
  Handshaking --> Error: handshake_expired
  Ready --> Waiting: mark_disconnected
  Error --> Waiting: reset/retry
  Waiting --> Stopped: stop_session

ConnectedHandshaking 的外部触发由调用方负责;图中对这些调用关系的描述属于 Inferred,应通过 execution flow 验证。

帧进入业务前的决定

hostlink_frame_router.h 定义:

  • HostlinkCommandId
  • HostlinkFrameDecisionType
  • HostlinkFrameDecision

Frame router 先产生 decision,再由 service/config/event/app-data codec 翻译 payload。Transport 的职责是字节搬运;Session 的职责是链接状态和序号;Router 的职责是 frame 分类。这三者不能合成“C6 service”。

周期性输出

should_emit_status / mark_status_emittedshould_emit_gps / mark_gps_emitted 表示 status 和 GPS push 各自具有节流状态;它们是 SessionRuntime 的组成部分,而不是 UI timer。

仍需验证

  • sequence wrap-around 和旧 session response 的处理规则。
  • version/capability negotiation 是否在 codec 或上层 service 完成。
  • Error 后的 retry ownership。

下钻与证据

  • LinkState 与 handshake 生命周期
  • modules/core_hostlink/include/hostlink/hostlink_session.h
  • modules/core_hostlink/src/hostlink_session.cpp
  • modules/core_hostlink/include/hostlink/hostlink_frame_router.h