เครื่องมือสร้างการกำหนดค่าเมตริก (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 เพื่อทำการตรวจสอบและอนุมานประเภท