HMI必须注册每一个组件, 该组件能通过以下格式与SDL进行通讯
var JSONMessage = { "jsonrpc": "2.0", "id": -1, "method": "MB.registerComponent", "params": { "componentName": "UI" } };
可能的组件名称是 UI
, Buttons
, BasicCommunication
, VR
, TTS
, Navigation
和 VehicleInfo
一旦这些组件被注册, HMI必须通知sdl, 它已经准备开始使用BasicCommunication.OnReady进行之后的通讯通知.
收到 OnReady 通知后,SDL 将开始通过响应链接请求来检查不同 HMI 组件的可用性:
UI.IsReady
- 显示屏可用性VR.IsReady
- 语音识别模块可用性TTS.IsReady
- 语音合成模块可用性Navigation.IsReady
- 导航引擎可用性VehicleInfo.IsReady
- 指示是否可以收集和提供车辆信息。HMI也必须通过以下RPC的格式注册每一条通知
var obj = { "jsonrpc": "2.0", "id": -1, "method": "MB.subscribeTo", "params": { "propertyName": notificationName } }
propertyName
是通知(notification)的名字, 好比 Buttons.OnButtonSubscription
HMI必须注册他的所有组件, 发送 OnReady
的通知, 响应每一个 IsReady
的RPCs, 并且为每一个想要收到的通知进行注册.
如果对任何组件 IsReady
请求的响应包含 {"available": false}
,SDL 将不再与该组件进行通信。
如果采用 WebSocket 连接,将在每个单独的 WebSocket 连接中发送对每个组件的 RPC。