แคตตาล็อกสัญญาณยานพาหนะ

เครื่องมือสร้างการกำหนดค่าเมตริก (MCG) จะตรวจสอบการกำหนดค่าเมตริกโดย ตรวจสอบชื่อสัญญาณ ทำการตรวจสอบประเภทในนิพจน์ และอนุมาน ประเภทเอาต์พุต MCG ต้องมีสิทธิ์เข้าถึงคำจำกัดความของข้อความบัฟเฟอร์โปรโตคอล (protobuf) สำหรับสัญญาณยานพาหนะเพื่อทำงานเหล่านี้

ใน SDV สัญญาณและบริการของยานพาหนะจะกำหนดโดยใช้ภาษาที่ใช้นิยามอินเทอร์เฟซบริการยานพาหนะ (VSIDL) VSIDL ใช้ไฟล์ protobuf เพื่อระบุข้อความ และไฟล์ protobuf เหล่านี้เป็นพื้นฐานของแคตตาล็อกสัญญาณ

หากต้องการให้คำจำกัดความของสัญญาณพร้อมใช้งานใน MCG คุณต้องแพ็กเกจไฟล์ VSIDL protobuf เหล่านี้ลงใน protobuf FileDescriptorSet แล้วอัปโหลดไปยังบริการ MCG MCG ใช้คำว่าแคตตาล็อกสัญญาณยานพาหนะสำหรับชุดคำจำกัดความที่อัปโหลดและ มีการควบคุมเวอร์ชันเหล่านี้ (ซึ่งทำให้แคตตาล็อกสัญญาณยานพาหนะเป็น รูปแบบที่คอมไพล์และอัปโหลดของคำจำกัดความข้อความ Proto ในแคตตาล็อก VSIDL)

แคตตาล็อกสัญญาณยานพาหนะคืออะไร

แคตตาล็อกสัญญาณยานพาหนะจะให้คำจำกัดความของสัญญาณแก่ MCG เพื่อการตรวจสอบความถูกต้อง ซึ่งจัดแพ็กเกจเป็น protobuf FileDescriptorSet

ใน MCG แคตตาล็อกจะระบุด้วยสตริงเวอร์ชันที่คุณกำหนดในระหว่างการอัปโหลด ซึ่งช่วยให้คุณจัดการชุดคำจำกัดความของสัญญาณที่แตกต่างกันหลายชุดได้ ตัวอย่างเช่น คุณอาจดูแลแคตตาล็อกเวอร์ชันต่างๆ สำหรับการเปิดตัวซอฟต์แวร์ (v1.0, v1.1, v2.0) หรือสำหรับรุ่นรถยนต์หรือการกำหนดค่าฮาร์ดแวร์ที่แตกต่างกัน (suv-my2025, sedan-my2025) การกำหนดค่าเมตริกแต่ละรายการจะใช้ฟิลด์ vs_version เพื่ออ้างอิงแคตตาล็อกที่เฉพาะเจาะจง ซึ่งกำหนดสัญญาณที่พร้อมใช้งานเป็นแหล่งข้อมูล และให้คำจำกัดความสัญญาณสำหรับการอนุมานและการตรวจสอบประเภท

สร้างอินสแตนซ์ของ FileDescriptorSet

ดังที่อธิบายไว้ในกำหนดข้อความและบริการ RPC สัญญาณยานพาหนะ จะกำหนดเป็นข้อความ protobuf ในไฟล์ protobuf หากคุณเป็นส่วนหนึ่งของโปรเจ็กต์ SDV ให้ใช้ไฟล์ protobuf จากแคตตาล็อก VSIDL ของโปรเจ็กต์เพื่อสร้างอินสแตนซ์ของ FileDescriptorSet

หากต้องการสร้างแคตตาล็อกสำหรับ MCG ให้รวมไฟล์ Protobuf เป็นFileDescriptorSetไฟล์ไบนารีโดยใช้ protoc หากไฟล์ Protobuf ทั้งหมดอยู่ในโฟลเดอร์เดียว ให้เรียกใช้คำสั่งต่อไปนี้เพื่อสร้าง 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

อัปโหลดและจัดการแคตตาล็อก

การอัปโหลดชุดคำจำกัดความของสัญญาณเป็นแคตตาล็อกจะช่วยให้คุณอ้างอิงชุดคำจำกัดความดังกล่าวตาม ชื่อเวอร์ชันในคำขอกำหนดค่าเมตริกได้

เพิ่มหรืออัปเดตเวอร์ชันแคตตาล็อก

หลังจากสร้างvehicle_signals.pbไฟล์แคตตาล็อกแล้ว คุณจะอัปโหลดและ จัดการไฟล์ดังกล่าวได้โดยใช้ปลายทาง MCG API ในส่วน/api/v1/vs/ ปลายทางสำหรับ การเพิ่มหรืออัปเดตแคตตาล็อก POST /api/v1/vs/ ต้องส่งFileDescriptorSetเป็นสตริงที่เข้ารหัส Base64 ในเพย์โหลด JSON

หากต้องการเข้ารหัส vehicle_signals.pb เพื่อใช้กับ API ให้ใช้คำสั่ง base64 โดยแฟล็ก -w 0 จะปิดใช้การตัดข้อความเพื่อให้สตริงที่เข้ารหัสปรากฏในบรรทัดเดียว

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

หากต้องการอัปโหลด vehicle_signals.pb เป็นเวอร์ชันใหม่ (เช่น v1.0) หรืออัปเดตเวอร์ชันที่มีอยู่ ให้ส่งคำขอ POST พร้อมเนื้อหาที่เข้ารหัส base64 ไปยังปลายทาง /api/v1/vs/ โดยใช้ชื่อเวอร์ชันที่ไม่ซ้ำกัน

เนื้อหาของคำขอต้องเป็นออบเจ็กต์ JSON ที่มีสตริง version และสตริง vehicle_signals ที่เข้ารหัสแบบ Base64 ดังนี้

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

ตัวอย่างต่อไปนี้แสดงวิธีอัปโหลด vehicle_signals.pb เป็นเวอร์ชัน v1.0 โดยใช้ curl ตัวอย่างนี้ใช้ printf เพื่อสร้างเพย์โหลด JSON และส่งไปยัง curl ซึ่งช่วยให้ไม่ต้องสร้างไฟล์ JSON ที่มีสตริง base64 แบบบรรทัดเดียวที่ยาวมาก

# 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/"

แสดงรายการและลบเวอร์ชัน

คุณแสดงเวอร์ชันแคตตาล็อกที่มีอยู่ทั้งหมดหรือลบเวอร์ชันที่เฉพาะเจาะจงได้โดยทำดังนี้

  • รายการเวอร์ชัน: หากต้องการดูรายการตัวระบุสำหรับแคตตาล็อกที่อัปโหลดทั้งหมด ให้ส่งคำขอ GET ไปที่ /api/v1/vs/ ดู GET /api/v1/vs/

  • ลบเวอร์ชัน: หากต้องการนำแคตตาล็อกออก ให้ส่งคำขอ DELETE ไปยัง /api/v1/vs/{version} โดยที่ {version} คือตัวระบุที่ได้รับเมื่อ อัปโหลดแคตตาล็อก (เช่น v1.0) ดู DELETE /api/v1/vs/{version}

ดูรายละเอียดทั้งหมดเกี่ยวกับปลายทางทั้งหมดได้ที่ข้อมูลอ้างอิงของ API

ใช้แคตตาล็อกในการกำหนดค่าเมตริก

เมื่ออัปโหลดแล้ว ให้อ้างอิงเวอร์ชันแคตตาล็อกในการกำหนดค่าเมตริกโดยใช้ฟิลด์ vs_version

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

เมื่อส่งออบเจ็กต์ JSON นี้ไปยังปลายทาง /api/v1/generate_metrics_config หรือ /api/v1/validate_metrics_config MCG จะใช้คำจำกัดความสัญญาณจากแคตตาล็อก v1.0 เพื่อทำการตรวจสอบและอนุมานประเภท