การกำหนดค่าคุณสมบัติ

คุณสมบัติที่รองรับแต่ละรายการระบุโดยการกำหนดค่าคุณสมบัติที่กำหนดผ่านโครงสร้าง 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

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

ประเภททรัพย์สิน

กำหนดเป็น enums ใน VehiclePropertyType.aidl ประเภทคุณสมบัติที่รองรับแสดงอยู่ในตารางต่อไปนี้

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

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

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

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

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

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

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

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

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

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

คุณสมบัติแต่ละโซนต้องใช้ประเภทพื้นที่ที่กำหนดไว้ล่วงหน้า พื้นที่แต่ละประเภทมีชุดของแฟล็กบิตที่กำหนดไว้ในแจงนับสำหรับประเภทพื้นที่ ตัวอย่างเช่น พื้นที่ SEAT กำหนด enums VehicleAreaSeat :

  • 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
  • ...

รหัสพื้นที่

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

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

หากต้องการเรียนรู้เพิ่มเติม โปรดดู HVAC