指標設定產生器 (MCG) 會檢查信號名稱、對運算式執行類型檢查,以及推論輸出類型,藉此驗證指標設定。MCG 需要存取車輛信號的通訊協定緩衝區 (protobuf) 訊息定義,才能執行這些工作。
在 SDV 中,車輛信號和服務是使用車輛服務介面定義語言 (VSIDL) 定義。VSIDL 使用 protobuf 檔案指定訊息,這些 protobuf 檔案會構成信號目錄的基礎。
如要將信號定義提供給 MCG,您必須將這些 VSIDL protobuf 檔案封裝成 protobuf FileDescriptorSet,並上傳至 MCG 服務。MCG 使用「車輛信號目錄」一詞,代表這些已上傳且有版本的定義集 (基本上,車輛信號目錄是 VSIDL 目錄中 proto 訊息定義的編譯上傳形式)。
什麼是車輛信號目錄?
車輛信號目錄會提供 MCG 信號定義,用於驗證,並封裝為 protobuf FileDescriptorSet。
在 MCG 中,目錄會以您在上傳時指派的版本字串識別,方便您管理多組不同的信號定義。舉例來說,您可能會針對軟體版本 (v1.0、v1.1、v2.0) 或不同的車輛型號或硬體設定 (suv-my2025、sedan-my2025) 維護不同的目錄版本。每個指標設定都會使用 vs_version 欄位參照特定目錄,該目錄會定義可用作資料來源的信號,並提供類型推論和驗證的信號定義。
建立 FileDescriptorSet 的執行個體
如「定義訊息和 RPC 服務」一節所述,車輛信號在 protobuf 檔案中定義為 protobuf 訊息。如果您參與 SDV 專案,請使用專案 VSIDL 目錄中的 protobuf 檔案,建立 FileDescriptorSet 的例項。
如要為 MCG 建立目錄,請使用 protoc 將 protobuf 檔案彙整成 FileDescriptorSet 二進位檔案。如果所有 protobuf 檔案都在同一個資料夾中,請執行下列指令來產生 vehicle_signals.pb:
protoc --include_imports --descriptor_set_out=vehicle_signals.pb path/to/your/protos/*.proto
上傳及管理目錄
將信號定義集上傳為目錄後,您就能在指標設定要求中,依版本名稱參照該定義集。
新增或更新目錄版本
產生 vehicle_signals.pb 目錄檔案後,您可以使用 /api/v2/vs/ 下的 MCG API 端點上傳及管理該檔案。如要新增或更新目錄,請使用 POST /api/v2/vs/ 端點,並在 JSON 酬載中以 base64 編碼字串的形式傳遞 FileDescriptorSet。
如要對 vehicle_signals.pb 進行編碼以用於 API,請使用 base64 指令。-w 0 旗標會停用換行功能,因此編碼字串會顯示在同一行:
VEHICLE_SIGNALS_BASE64=$(base64 -w 0 vehicle_signals.pb)
如要將 vehicle_signals.pb 上傳為新版本 (例如 v1.0) 或更新現有版本,請將含有 Base64 編碼內容的 POST 要求傳送至 /api/v2/vs/ 端點,並附上不重複的版本名稱。
要求主體必須是 JSON 物件,其中包含 version 字串和以 Base64 編碼的 vehicle_signals 字串:
{
"version": "v1.0",
"vehicle_signals": "Q2lSb1pYB3jCRkRt..."
}
以下範例說明如何使用 curl 將 vehicle_signals.pb 上傳為 v1.0 版本。範例使用 printf 建構 JSON 酬載,並透過管道傳送至 curl,這樣就不必建立包含超長單行 Base64 字串的 JSON 檔案:
# 1. Encode the FileDescriptorSet to a Base64 string VEHICLE_SIGNALS_BASE64=$(base64 -w 0 vehicle_signals.pb) # 2. Define catalog version and build JSON payload VERSION="v1.0" JSON_PAYLOAD=$(jq -n --arg v "$VERSION" --arg d "$VEHICLE_SIGNALS_BASE64" \ '{version: $v, vehicle_signals: $d}') # 3. POST the data to the API endpoint echo "$JSON_PAYLOAD" | curl -H "Content-Type: application/json" --data-binary @- "$SERVICE_URL/api/v2/vs/"
列出及刪除版本
您可以列出所有可用的目錄版本,或刪除特定版本:
列出版本:如要查看所有已上傳目錄版本的 ID 清單,請傳送
GET要求至/api/v2/vs/。請參閱 GET /api/v2/vs/。刪除版本:如要移除目錄,請傳送
DELETE要求至/api/v2/vs/{version},其中{version}是上傳目錄時提供的 ID (例如v1.0)。請參閱 DELETE /api/v2/vs/{version}。
如要進一步瞭解所有端點,請參閱 API 參考資料。
在指標設定中使用目錄
上傳後,請使用 vs_version 欄位,在指標設定中參照目錄版本:
{ "vs_version": "v1.0", ... }
將這個 JSON 物件傳送至 /api/v2/generate_metrics_config 或 /api/v2/validate_metrics_config 端點時,MCG 會使用 v1.0 目錄中的信號定義,執行驗證和類型推論。