การกําหนดค่าพร็อพเพอร์ตี้

พร็อพเพอร์ตี้ที่รองรับแต่ละรายการจะระบุด้วยการกําหนดค่าพร็อพเพอร์ตี้ที่กําหนดผ่านโครงสร้าง VehiclePropConfig และจะมีช่องต่อไปนี้

ช่อง คำอธิบาย
prop

รหัสพร็อพเพอร์ตี้ ซึ่งต้องเป็นพร็อพเพอร์ตี้ระบบที่กําหนดไว้อย่างใดอย่างหนึ่งจาก VehicleProperty.aidl หรือพร็อพเพอร์ตี้ของผู้ให้บริการ รหัสพร็อพเพอร์ตี้สร้างขึ้นโดยใช้การรวมบิตของช่องต่อไปนี้ (จากขวาไปซ้าย)

เช่น
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access
  • โหมดการเข้าถึงพร็อพเพอร์ตี้ ต้องเป็นหนึ่งใน READ, WRITE หรือ READ_WRITE
  • สำหรับพร็อพเพอร์ตี้ของระบบ ต้องเป็นโหมดการเข้าถึงที่กําหนดไว้อย่างใดอย่างหนึ่งที่ระบุไว้ใน VehicleProperty.aidl
  • สำหรับพร็อพเพอร์ตี้ที่มีสิทธิ์เข้าถึงต่อพื้นที่ พร็อพเพอร์ตี้นี้จะเป็นชุดย่อยสูงสุดของสิทธิ์เข้าถึงต่อพื้นที่ เช่น หากพร็อพเพอร์ตี้มี 2 พื้นที่ที่มีสิทธิ์เข้าถึงเป็น READ และ READ_WRITE ก็ควรตั้งค่าเป็น READ
changeMode
  • เปลี่ยนโหมดของพร็อพเพอร์ตี้ ต้องเป็นหนึ่งใน STATIC, ON_CHANGE หรือ CONTINUOUS STATIC หมายความว่าค่าพร็อพเพอร์ตี้จะไม่เปลี่ยนแปลงหลังจากการบูตระบบ ON_CHANGE หมายความว่า VHAL ต้องรายงานเมื่อค่ามีการเปลี่ยนแปลง CONTINUOUS หมายความว่าค่าพร็อพเพอร์ตี้จะเปลี่ยนแปลงอย่างต่อเนื่อง และ VHAL ต้องรายงานตามอัตราการสุ่มตัวอย่างการสมัครใช้บริการ
  • สำหรับพร็อพเพอร์ตี้ของระบบ ค่านี้ต้องเท่ากับโหมดการเปลี่ยนแปลงที่ระบุไว้ใน VehicleProperty.aidl
configArray อาร์เรย์ที่ไม่บังคับซึ่งมีการกำหนดค่าเฉพาะพร็อพเพอร์ตี้ เว้นว่างไว้ได้ สําหรับพร็อพเพอร์ตี้ของระบบบางรายการ เช่น GEAR_SELECTION อาร์เรย์ config จะมีความหมายพิเศษและต้องระบุ
configString สตริงที่ไม่บังคับซึ่งมีการกำหนดค่าเฉพาะพร็อพเพอร์ตี้ เว้นว่างไว้ได้
minSampleRate และ maxSampleRate อัตราตัวอย่างขั้นต่ำและสูงสุดที่รองรับสำหรับพร็อพเพอร์ตี้แบบต่อเนื่อง (เป็น Hertz) จะไม่ได้ใช้หากพร็อพเพอร์ตี้ไม่ต่อเนื่อง minSampleRate และ maxSampleRate ต้องบรรลุได้ด้วยการติดตั้งใช้งาน VHAL ระบบไม่จําเป็นต้องรองรับอัตราการสุ่มตัวอย่างทั้งหมดระหว่างขั้นต่ำและสูงสุด

ประเภทที่พัก

กำหนดเป็น enum ใน VehiclePropertyType.aidl ประเภทพร็อพเพอร์ตี้ที่รองรับแสดงอยู่ในตารางต่อไปนี้

ประเภทพร็อพเพอร์ตี้ ค่านิยม คำอธิบาย
STRING 0x00100000 พร็อพเพอร์ตี้สตริง ใช้ช่อง stringValue ในค่าพร็อพเพอร์ตี้ยานพาหนะ
BOOLEAN 0x00200000 พร็อพเพอร์ตี้ Boolean ใช้องค์ประกอบแรกในช่อง int32Values ในค่าพร็อพเพอร์ตี้ยานพาหนะ 0 หมายถึง false, None 0 หมายถึง true
INT32 0x00400000 พร็อพเพอร์ตี้ Integer ใช้องค์ประกอบแรกในช่อง int32Values ในค่าพร็อพเพอร์ตี้ยานพาหนะ
INT32_VEC 0x00410000 พร็อพเพอร์ตี้ Integer[] ใช้องค์ประกอบในช่อง int32Values ในค่าพร็อพเพอร์ตี้ยานพาหนะ
INT64 0x00500000 พร็อพเพอร์ตี้แบบยาว ใช้องค์ประกอบแรกในช่อง int64Values ในค่าพร็อพเพอร์ตี้ยานพาหนะ
INT64_VEC 0x00510000 พร็อพเพอร์ตี้ Long[] ใช้องค์ประกอบในช่อง int64Values ในค่าพร็อพเพอร์ตี้ยานพาหนะ
FLOAT 0x00600000 พร็อพเพอร์ตี้ Float ใช้องค์ประกอบแรกในช่อง floatValues ในค่าพร็อพเพอร์ตี้ยานพาหนะ
FLOAT_VEC 0x00610000 พร็อพเพอร์ตี้ Float[] ใช้องค์ประกอบในช่อง floatValues ในค่าพร็อพเพอร์ตี้ยานพาหนะ
BYTES 0x00700000 พร็อพเพอร์ตี้ byte[] ใช้องค์ประกอบในช่อง byteValues ในค่าพร็อพเพอร์ตี้ยานพาหนะ
MIXED 0x00e00000 ที่พักประเภทผสม ชุดค่าผสมของประเภทสเกลาร์หรือเวกเตอร์ คุณต้องระบุรูปแบบที่แน่นอนในอาร์เรย์ config ในการกําหนดค่าพร็อพเพอร์ตี้

สำหรับพร็อพเพอร์ตี้ประเภท MIXED ของผู้ให้บริการ configArray ต้องอยู่ในรูปแบบโครงสร้างนี้

  • configArray[0], 1 ระบุว่าพร็อพเพอร์ตี้มีค่า String
  • configArray[1], 1 บ่งบอกว่าพร็อพเพอร์ตี้มีค่า Boolean
  • configArray[2], 1 ระบุว่าพร็อพเพอร์ตี้มีค่า Integer
  • configArray[3] โดยตัวเลขแสดงขนาดของ Integer[] ในที่พัก
  • configArray[4], 1 ระบุว่าพร็อพเพอร์ตี้มีค่า Long
  • configArray[5] โดยตัวเลขแสดงขนาดของ Long[] ในที่พัก
  • configArray[6], 1 ระบุว่าพร็อพเพอร์ตี้มีค่า Float
  • configArray[7] โดยตัวเลขแสดงขนาดของ Float[] ในที่พัก
  • configArray[8] ซึ่งเป็นตัวเลขที่ระบุขนาดของ byte[] ในพร็อพเพอร์ตี้

ตัวอย่างเช่น configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} บ่งบอกว่าพร็อพเพอร์ตี้มีค่า String, Boolean, Integer และอาร์เรย์ที่มีจำนวนเต็ม 3 รายการ

การกําหนดค่ารหัสพื้นที่

การกําหนดค่าพร็อพเพอร์ตี้แต่ละรายการอาจมีรายการการกําหนดค่ารหัสพื้นที่ด้วย รายการนี้ไม่บังคับสำหรับพร็อพเพอร์ตี้ทั่วโลก แต่จำเป็นสำหรับพร็อพเพอร์ตี้ที่มีการแบ่งโซน (พร็อพเพอร์ตี้ที่มีพื้นที่ที่รองรับหลายแห่ง) การกําหนดค่ารหัสพื้นที่แต่ละรายการจะมีช่องต่อไปนี้

ช่อง คำอธิบาย
areaId รหัสของพื้นที่นี้ ดูรหัสพื้นที่
minInt32Value และ maxInt32Value
  • ค่าต่ำสุดและสูงสุดที่ไม่บังคับสำหรับพร็อพเพอร์ตี้ประเภท INT32 ในเวลาบูต ต้องเท่ากับ 0 สำหรับประเภทอื่นๆ ทั้งหมด ระบบจะไม่สนใจหากทั้ง 2 รายการเป็น 0
  • สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าขั้นต่ำและสูงสุด ต้องใช้การกําหนดค่าพื้นที่ 1 รายการที่มีรหัสพื้นที่ 0
  • ค่านี้เป็นค่าคงที่และจะไม่เปลี่ยนแปลงแม้ว่าค่าต่ำสุดหรือสูงสุดจะเปลี่ยนแปลงขณะรันไทม์ ใช้ IVehicle#getMinMaxSupportedValue สำหรับค่าต่ำสุดหรือสูงสุดแบบไดนามิก
minInt64Value และ maxInt64Value
  • ค่าต่ำสุดและสูงสุดที่ไม่บังคับสำหรับพร็อพเพอร์ตี้ประเภท INT64 ในเวลาบูต ต้องเท่ากับ 0 สำหรับประเภทอื่นๆ ทั้งหมด ระบบจะไม่สนใจหากทั้ง 2 รายการเป็น 0
  • สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าขั้นต่ำและสูงสุด ต้องใช้การกําหนดค่าพื้นที่ 1 รายการที่มีรหัสพื้นที่ 0
  • ค่านี้เป็นค่าคงที่และจะไม่เปลี่ยนแปลงแม้ว่าค่าต่ำสุดหรือสูงสุดจะเปลี่ยนแปลงขณะรันไทม์ ใช้ IVehicle#getMinMaxSupportedValue สำหรับค่าต่ำสุดหรือสูงสุดแบบไดนามิก
minFloatValue และ maxFloatValue
  • ค่าต่ำสุดและสูงสุดที่ไม่บังคับสำหรับพร็อพเพอร์ตี้ประเภท Float ในเวลาบูต ต้องเท่ากับ 0 สำหรับประเภทอื่นๆ ทั้งหมด ระบบจะไม่สนใจหากทั้ง 2 รายการเป็น 0.0
  • สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าขั้นต่ำและสูงสุด ต้องใช้การกําหนดค่าพื้นที่ 1 รายการที่มีรหัสพื้นที่ 0
  • ค่านี้เป็นค่าคงที่และจะไม่เปลี่ยนแปลงแม้ว่าค่าต่ำสุดหรือสูงสุดจะเปลี่ยนแปลงขณะรันไทม์ ใช้ IVehicle#getMinMaxSupportedValue สำหรับค่าต่ำสุดหรือสูงสุดแบบไดนามิก
(ใหม่ใน Android 14)
supportedEnumValues
  • รายการค่าที่รองรับ (ไม่บังคับ) ในเวลาบูต หากมีการกําหนดพร็อพเพอร์ตี้เป็นพร็อพเพอร์ตี้ประเภท enum หากไม่ได้ระบุ (ว่าง) หรือก่อน Android 14 ระบบจะถือว่ารองรับค่า Enum ทั้งหมด
  • สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าแจกแจงที่รองรับ ต้องใช้การกําหนดค่าพื้นที่ 1 รายการที่มีรหัสพื้นที่ 0
  • ค่านี้เป็นค่าคงที่และจะไม่เปลี่ยนแปลงแม้ว่าค่าที่รองรับจะเปลี่ยนแปลงขณะรันไทม์ ใช้ IVehicle#getSupportedValuesLists สำหรับค่าแบบไดนามิกที่รองรับ
  • การดำเนินการนี้ใช้ได้กับพร็อพเพอร์ตี้ประเภท Enum เท่านั้น สำหรับประเภทอื่นๆ ช่องนี้ต้องว่างเปล่า หากต้องการแสดงค่าที่รองรับสำหรับประเภทอื่นๆ ที่ไม่ใช่ Enum ให้ใช้ IVehicle#getSupportedValuesLists
(ใหม่ใน Android 15)
supportVariableUpdateRate
  • รองรับอัตราการอัปเดตตัวแปรหรือไม่ ตัวเลือกนี้ใช้ได้กับพร็อพเพอร์ตี้แบบต่อเนื่องเท่านั้น
  • หากเป็น true แอปจะเปิดใช้อัตราการอัปเดตแบบผันแปรสำหรับการติดตามเพื่อรับเหตุการณ์การอัปเดตพร็อพเพอร์ตี้เฉพาะในกรณีที่ค่าพร็อพเพอร์ตี้มีการเปลี่ยนแปลงเท่านั้น (ซึ่งจะถือว่าพร็อพเพอร์ตี้แบบต่อเนื่องเป็นพร็อพเพอร์ตี้แบบมีการเปลี่ยนแปลง)
  • หากผู้สมัครใช้บริการทั้งหมดของพร็อพเพอร์ตี้เปิดใช้อัตราการอัปเดตแบบผันแปร คําขอการสมัครใช้บริการ VHAL จะเปิดใช้อัตราการอัปเดตแบบผันแปรสําหรับพร็อพเพอร์ตี้ และ VHAL ต้องส่งเหตุการณ์การอัปเดตพร็อพเพอร์ตี้เฉพาะเมื่อค่าพร็อพเพอร์ตี้มีการเปลี่ยนแปลงเท่านั้น
  • หากผู้สมัครใช้บริการรายใดขออัตราการอัปเดตแบบคงที่ คำขอการสมัครใช้บริการ VHAL จะปิดใช้อัตราการอัปเดตแบบผันผวนสำหรับพร็อพเพอร์ตี้ และ AAOS จะกรองเหตุการณ์ที่ซ้ำกันออกสำหรับลูกค้าที่ขออัตราการอัปเดตแบบผันผวน
  • ขอแนะนําอย่างยิ่งให้รองรับอัตราการอัปเดตแบบผันแปรสําหรับพร็อพเพอร์ตี้ต่อเนื่องที่ไม่ใช่การเต้นของหัวใจทั้งหมดเพื่อให้ประสิทธิภาพดีขึ้น เว้นแต่ว่าข้อมูลพร็อพเพอร์ตี้จะมีขนาดใหญ่ (เช่น อาร์เรย์ไบต์ขนาด 1, 000) และอาจใช้หน่วยความจําจํานวนมากในการแคช
(ใหม่ใน Android 16)
hasSupportedValueInfo
  • หากไม่ใช่ null จะแสดงว่าพร็อพเพอร์ตี้นี้ระบุค่าต่ำสุดหรือสูงสุดที่รองรับ หรือรายการค่าที่รองรับ
  • ฟิลด์นี้ควบคุมว่าระบบรองรับ API มูลค่าที่รองรับแบบไดนามิก getMinMaxSupportedValue, getSupportedValuesLists, subscribeSupportedValueChange และ unsubscribeSupportedValueChange สำหรับรหัสพร็อพเพอร์ตี้และรหัสพื้นที่นี้หรือไม่
  • หากไม่ใช่ null ทาง VHAL ต้องใช้ API เหล่านี้สำหรับรหัสพร็อพเพอร์ตี้และรหัสพื้นที่นี้
  • หากเป็น null หรือใน Android 15 หรือต่ำกว่า ระบบจะไม่รองรับค่าที่รองรับแบบไดนามิกสำหรับรหัสพร็อพเพอร์ตี้และรหัสพื้นที่นี้ ลูกค้าต้องใช้ข้อมูลค่าที่รองรับแบบคงที่ที่ระบุในการกําหนดค่าที่พัก

ประเภทพื้นที่

กำหนดเป็น enum ใน VehicleArea.aidl ประเภทพื้นที่ที่รองรับมีดังนี้

ประเภทพื้นที่ ค่านิยม คำอธิบาย
ทั่วโลก 0x01000000 พร็อพเพอร์ตี้นี้เป็นพร็อพเพอร์ตี้ทั่วโลกและไม่มีหลายพื้นที่
กรอบเวลา 0x03000000 พื้นที่ตามกรอบเวลา ใช้ VehicleAreaWindow enum
Mirror 0x04000000 พื้นที่ตามมิเรอร์ ใช้ VehicleAreaMirror enum
SEAT 0x05000000 พื้นที่ตามที่นั่ง ใช้ VehicleAreaSeat enum
DOOR 0x06000000 พื้นที่ตามประตู ใช้ VehicleAreaDoor enum
WHEEL 0x07000000 พื้นที่ตามล้อ ใช้ VehicleAreaWheel enum

พร็อพเพอร์ตี้ที่มีการแบ่งเขตแต่ละรายการต้องใช้ประเภทพื้นที่ที่กำหนดไว้ล่วงหน้า พื้นที่แต่ละประเภทจะมีชุด Flag แบบบิตที่กําหนดไว้ใน Enum สําหรับประเภทพื้นที่ ตัวอย่างเช่น พื้นที่ SEAT จะกำหนด VehicleAreaSeat enum ต่อไปนี้

  • ROW_1_LEFT = 0x0001
  • ROW_1_CENTER = 0x0002
  • ROW_1_RIGHT = 0x0004
  • ROW_2_LEFT = 0x0010
  • ROW_2_CENTER = 0x0020
  • ROW_2_RIGHT = 0x0040
  • ROW_3_LEFT = 0x0100
  • ...

รหัสพื้นที่

พร็อพเพอร์ตี้ที่มีการแบ่งโซนจะระบุผ่านรหัสพื้นที่ พร็อพเพอร์ตี้ที่มีการแบ่งโซนแต่ละรายการอาจรองรับรหัสพื้นที่ได้อย่างน้อย 1 รหัส รหัสพื้นที่ประกอบด้วย Flag อย่างน้อย 1 รายการจาก Enum ที่เกี่ยวข้อง ตัวอย่างเช่น พร็อพเพอร์ตี้ที่ใช้ VehicleAreaSeat อาจใช้รหัสพื้นที่ต่อไปนี้

รายการ คำอธิบาย
ROW_1_LEFT | ROW_1_RIGHT รหัสพื้นที่มีผลกับทั้ง 2 ที่นั่งด้านหน้า
ROW_2_LEFT มีผลกับที่นั่งด้านซ้ายด้านหลังเท่านั้น
ROW_2_RIGHT ใช้กับที่นั่งด้านหลังขวาเท่านั้น

ดูข้อมูลเพิ่มเติมได้ที่ HVAC