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

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

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

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

Vehicle Signal Catalog คืออะไร

แคตตาล็อกสัญญาณยานพาหนะจะให้คำจำกัดความของสัญญาณแก่ 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 path/to/your/protos/*.proto

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

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

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

หลังจากสร้างไฟล์แคตตาล็อก vehicle_signals.pb แล้ว คุณจะอัปโหลดและจัดการไฟล์ดังกล่าวได้โดยใช้ปลายทาง MCG API ในส่วน /api/v2/vs/ ปลายทางสำหรับการเพิ่มหรืออัปเดตแคตตาล็อก POST /api/v2/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/v2/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="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/"

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

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

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

  • ลบเวอร์ชัน: หากต้องการนำแคตตาล็อกออก ให้ส่งคำขอ DELETE ไปยัง /api/v2/vs/{version} โดยที่ {version} คือตัวระบุที่ระบุไว้เมื่ออัปโหลดแคตตาล็อก (เช่น 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 เพื่อทำการตรวจสอบและอนุมานประเภท