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

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

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

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

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

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

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

ประเภทพร็อพเพอร์ตี้

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

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

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

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

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

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

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

ช่อง คำอธิบาย
areaId รหัสของพื้นที่นี้ ดูรหัสพื้นที่
minInt32Value และ maxInt32Value
  • ค่าต่ำสุดและสูงสุดที่ไม่บังคับสำหรับพร็อพเพอร์ตี้ประเภท INT32 ระบบจะละเว้นสำหรับประเภทอื่นๆ ทั้งหมด ไม่สนใจหากทั้งคู่เป็น 0
  • สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าต่ำสุดและสูงสุด ต้องใช้การกําหนดค่าพื้นที่ 1 รายการที่มีรหัสพื้นที่ 0
minInt64Value และ maxInt64Value
  • ค่าต่ำสุดและสูงสุดที่ไม่บังคับสำหรับพร็อพเพอร์ตี้ประเภท INT64 ระบบจะละเว้นสำหรับประเภทอื่นๆ ทั้งหมด ระบบจะไม่สนใจหากทั้ง 2 รายการเป็น 0
  • สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าต่ำสุดและสูงสุด ต้องใช้การกําหนดค่าพื้นที่ 1 รายการที่มีรหัสพื้นที่ 0
minFloatValue และ maxFloatValue
  • ค่าต่ำสุดและสูงสุดที่ไม่บังคับสำหรับพร็อพเพอร์ตี้ประเภท Float ระบบจะละเว้นสำหรับประเภทอื่นๆ ทั้งหมด จะไม่สนใจหากทั้งคู่เป็น 0.0
  • สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าต่ำสุดและสูงสุด ต้องใช้การกําหนดค่าพื้นที่ 1 รายการที่มีรหัสพื้นที่ 0
(ใหม่ใน Android 14)
supportedEnumValues
  • รายการค่าที่รองรับ (ไม่บังคับ) หากพร็อพเพอร์ตี้ได้รับการกําหนดเป็นพร็อพเพอร์ตี้ประเภทค่าแจกแจง หากไม่ได้ระบุ (ว่าง) หรือก่อน Android 14 ระบบจะถือว่ารองรับค่า Enum ทั้งหมด
  • สำหรับพร็อพเพอร์ตี้ส่วนกลาง หากต้องกำหนดค่า enum ที่รองรับ คุณต้องใช้การกำหนดค่าพื้นที่ 1 รายการที่มีรหัสพื้นที่ 0

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

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

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

พร็อพเพอร์ตี้ที่มีการจัดโซนแต่ละรายการต้องใช้ประเภทพื้นที่ที่กำหนดไว้ล่วงหน้า พื้นที่แต่ละประเภทมีชุดแฟล็กบิตที่กำหนดไว้ใน 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