Katalog Sinyal Kendaraan

Generator Konfigurasi Metrik (MCG) memvalidasi konfigurasi metrik dengan memeriksa nama sinyal, melakukan pemeriksaan jenis pada ekspresi, dan menyimpulkan jenis output. MCG memerlukan akses ke definisi pesan buffer protokol (protobuf) untuk sinyal kendaraan guna melakukan tugas ini.

Di SDV, sinyal dan layanan kendaraan ditentukan menggunakan Vehicle Service Interface Definition Language (VSIDL). VSIDL menggunakan file protobuf untuk menentukan pesan, dan file protobuf ini membentuk dasar katalog sinyal.

Agar definisi sinyal tersedia untuk MCG, Anda harus mengemas file protobuf VSIDL ini ke dalam protobuf FileDescriptorSet dan menguploadnya ke layanan MCG. MCG menggunakan istilah Vehicle Signal Catalog untuk kumpulan definisi yang diupload dan diberi versi ini (pada dasarnya menjadikan Vehicle Signal Catalog sebagai bentuk terkompilasi dan terupload dari definisi pesan proto dalam katalog VSIDL Anda).

Apa yang dimaksud dengan Katalog Sinyal Kendaraan?

Vehicle Signal Catalog menyediakan definisi sinyal untuk validasi MCG, yang dikemas sebagai protobuf FileDescriptorSet.

Di MCG, katalog diidentifikasi oleh string versi yang Anda tetapkan selama proses upload, yang memungkinkan Anda mengelola beberapa set definisi sinyal yang berbeda. Misalnya, Anda dapat mempertahankan berbagai versi katalog untuk rilis software (v1.0, v1.1, v2.0), atau untuk berbagai model kendaraan atau konfigurasi hardware (suv-my2025, sedan-my2025). Setiap konfigurasi metrik menggunakan kolom vs_version untuk mereferensikan katalog tertentu, yang menentukan sinyal yang tersedia sebagai sumber data dan memberikan definisi sinyal untuk inferensi dan validasi jenis.

Buat instance FileDescriptorSet

Seperti yang dijelaskan dalam Menentukan pesan dan layanan RPC, sinyal kendaraan ditentukan sebagai pesan protobuf dalam file protobuf. Jika Anda adalah bagian dari project SDV, gunakan file protobuf dari katalog VSIDL project Anda untuk membuat instance FileDescriptorSet.

Untuk membuat katalog untuk MCG, gabungkan file protobuf Anda ke dalam file biner FileDescriptorSet menggunakan protoc. Jika semua file protobuf Anda berada dalam satu folder, jalankan perintah berikut untuk membuat vehicle_signals.pb:

protoc --include_imports --descriptor_set_out=vehicle_signals.pb <var label="path to folder with .proto files">path/to/your/protos</var>/*.proto

Mengupload dan mengelola katalog

Mengupload set definisi sinyal sebagai katalog memungkinkan Anda mereferensikannya berdasarkan nama versi dalam permintaan konfigurasi metrik.

Menambahkan atau memperbarui versi katalog

Setelah membuat file katalog vehicle_signals.pb, Anda dapat mengupload dan mengelolanya menggunakan endpoint MCG API di bagian /api/v1/vs/. Endpoint untuk menambahkan atau memperbarui katalog, POST /api/v1/vs/, memerlukan FileDescriptorSet untuk diteruskan sebagai string berenkode base64 dalam payload JSON.

Untuk mengenkode vehicle_signals.pb agar dapat digunakan API, gunakan perintah base64. Flag -w 0 menonaktifkan pelipatan baris sehingga string yang dienkode muncul dalam satu baris:

VEHICLE_SIGNALS_BASE64=$(base64 -w 0 vehicle_signals.pb)

Untuk mengupload vehicle_signals.pb sebagai versi baru (misalnya, v1.0) atau untuk mengupdate versi yang ada, kirim permintaan POST dengan konten berenkode base64 ke endpoint /api/v1/vs/ dengan nama versi yang unik.

Isi permintaan harus berupa objek JSON yang berisi string version dan string vehicle_signals berenkode base64:

{
  "version": "v1.0",
  "vehicle_signals": "Q2lSb1pYB3jCRkRt..."
}

Contoh berikut menunjukkan cara mengupload vehicle_signals.pb sebagai versi v1.0 menggunakan curl. Contoh ini menggunakan printf untuk membuat payload JSON dan menyalurkannya ke curl, sehingga tidak perlu membuat file JSON yang berisi string base64 satu baris yang sangat panjang:

# 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="<var label="catalog version">v1.0</var>"
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/v1/vs/"

Mencantumkan dan menghapus versi

Anda dapat mencantumkan semua versi katalog yang tersedia atau menghapus versi tertentu:

  • Versi daftar: Untuk melihat daftar ID semua versi katalog yang diupload, kirim permintaan GET ke /api/v1/vs/. Lihat GET /api/v1/vs/.

  • Menghapus versi: Untuk menghapus katalog, kirim permintaan DELETE ke /api/v1/vs/{version}, dengan {version} adalah ID yang diberikan saat katalog diupload (misalnya, v1.0). Lihat DELETE /api/v1/vs/{version}.

Untuk mengetahui detail selengkapnya tentang semua endpoint, lihat Referensi API.

Menggunakan katalog dalam konfigurasi metrik

Saat diupload, referensikan versi katalog dalam konfigurasi metrik menggunakan kolom vs_version:

{ "vs_version": "v1.0", ... }

Saat objek JSON ini dikirim ke endpoint /api/v1/generate_metrics_config atau /api/v1/validate_metrics_config, MCG menggunakan definisi sinyal dari katalog v1.0 untuk melakukan validasi dan inferensi jenis.