Cấu hình tài sản

Mỗi thuộc tính được hỗ trợ được chỉ định bằng một cấu hình thuộc tính được xác định thông qua cấu trúc VehiclePropConfig và có các trường sau.

Trường Mô tả
prop

Mã cơ sở lưu trú. Đây phải là một trong các thuộc tính hệ thống được xác định trong Thuộc tính hệ thống được hỗ trợ hoặc thuộc tính của nhà cung cấp. Mã tài sản được tạo bằng cách sử dụng bit-or của các trường sau (từ phải sang trái):

  • (0x00000000) 16 bit: mã nhận dạng duy nhất trong phạm vi 0x0100 – 0xffff.
  • (0x00000000) 8 bit: Loại thuộc tính xác định loại cho thuộc tính.
  • (0x00000000) 4 bit: Loại khu vực.
  • (0x00000000) 4 bit: VehiclePropertyGroup> Đây là SYSTEM (0x10000000) hoặc VENDOR (0x20000000). Xem phần Thuộc tính của nhà cung cấp để biết các thuộc tính mà bạn có thể tuỳ chỉnh.

Ví dụ:
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access Chế độ truy cập cho tài sản. Phải là một trong các giá trị READ, WRITE hoặc READ_WRITE. Giá trị này phải bằng chế độ truy cập được xác định trong Tính năng hệ thống được hỗ trợ.
changeMode
  • Thay đổi chế độ cho thuộc tính. Phải là một trong các giá trị STATIC, ON_CHANGE hoặc CONTINUOUS. STATIC có nghĩa là giá trị thuộc tính không bao giờ thay đổi sau khi khởi động hệ thống. ON_CHANGE có nghĩa là VHAL phải báo cáo khi giá trị thay đổi. CONTINUOUS có nghĩa là giá trị thuộc tính thay đổi liên tục và VHAL phải báo cáo dựa trên tốc độ lấy mẫu của gói thuê bao.
  • Chế độ thay đổi phải bằng với chế độ thay đổi được xác định trong phần Thuộc tính hệ thống được hỗ trợ.
configArray Một mảng không bắt buộc để chứa cấu hình dành riêng cho thuộc tính. Có thể để trống.
configString Chuỗi tuỳ chọn để chứa cấu hình dành riêng cho thuộc tính. Có thể để trống.
minSampleRatemaxSampleRate

Tốc độ lấy mẫu tối thiểu và tối đa được hỗ trợ cho thuộc tính liên tục. Không được sử dụng nếu thuộc tính không liên tục.

Loại cơ sở lưu trú

Được xác định là enum trong VehiclePropertyType.aidl. Các loại thuộc tính được hỗ trợ được liệt kê trong bảng sau.

Loại tài sản Giá trị Mô tả
STRING 0x00100000 Thuộc tính chuỗi sử dụng trường stringValue trong Giá trị thuộc tính xe.
BOOLEAN 0x00200000 Thuộc tính Boolean, sử dụng phần tử đầu tiên trong trường int32Values trong Giá trị thuộc tính xe. 0 có nghĩa là false, None 0 có nghĩa là true.
INT32 0x00400000 Thuộc tính số nguyên, sử dụng phần tử đầu tiên trong trường int32Values trong Giá trị thuộc tính xe.
INT32_VEC 0x00410000 Thuộc tính Integer[], sử dụng các phần tử trong trường int32Values trong Giá trị thuộc tính xe.
INT64 0x00500000 Thuộc tính dài, sử dụng phần tử đầu tiên trong trường int64Values trong Giá trị thuộc tính xe.
INT64_VEC 0x00510000 Tài sản Long[], sử dụng các phần tử trong trường int64Values trong Giá trị của tài sản xe.
FLOAT 0x00600000 Thuộc tính Float, sử dụng phần tử đầu tiên trong trường floatValues trong Giá trị thuộc tính xe.
FLOAT_VEC 0x00610000 Thuộc tính Float[], sử dụng các phần tử trong trường floatValues trong Giá trị thuộc tính xe.
BYTES 0x00700000 Thuộc tính byte[], sử dụng các phần tử trong trường byteValues trong Giá trị thuộc tính xe.
HỖN HỢP 0x00e00000 Thuộc tính kiểu hỗn hợp. Bất kỳ tổ hợp kiểu vectơ hoặc đại lượng vô hướng nào. Bạn phải cung cấp định dạng chính xác trong mảng cấu hình trong cấu hình tài sản.

Đối với các thuộc tính loại MIXED của nhà cung cấp, bạn cần định dạng configArray theo cấu trúc sau:

  • configArray[0], 1 cho biết thuộc tính có giá trị Chuỗi
  • configArray[1], 1 cho biết thuộc tính có giá trị Boolean
  • configArray[2], 1 cho biết thuộc tính có giá trị Số nguyên
  • configArray[3], con số này cho biết kích thước của Integer[] trong thuộc tính
  • configArray[4], 1 cho biết thuộc tính có giá trị Dài
  • configArray[5], con số này cho biết kích thước của Long[] trong thuộc tính
  • configArray[6], 1 cho biết thuộc tính có giá trị Float
  • configArray[7], con số này cho biết kích thước của Float[] trong thuộc tính
  • configArray[8], con số này cho biết kích thước của byte[] trong thuộc tính.

Ví dụ: configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} cho biết thuộc tính có giá trị Chuỗi, giá trị Boolean, giá trị Số nguyên và một mảng có ba số nguyên.

Định cấu hình mã khu vực

Mỗi cấu hình tài sản cũng có thể chứa danh sách cấu hình mã khu vực. Danh sách này là không bắt buộc đối với tài sản chung và bắt buộc đối với tài sản theo khu vực (tài sản có nhiều khu vực được hỗ trợ). Mỗi cấu hình mã khu vực có các trường sau.

Trường Mô tả
areaId Mã nhận dạng cho khu vực này. Xem Mã khu vực.
minInt32ValuemaxInt32Value
  • Giá trị tối thiểu và tối đa không bắt buộc cho các thuộc tính loại INT32. Bị bỏ qua đối với tất cả các loại khác. Sẽ bỏ qua nếu cả hai đều bằng 0.
  • Đối với tài sản chung, nếu cần xác định giá trị tối thiểu và tối đa, bạn phải sử dụng một cấu hình khu vực có mã khu vực là 0.
minInt64ValuemaxInt64Value
  • Giá trị tối thiểu và tối đa không bắt buộc cho các thuộc tính loại INT64. Bị bỏ qua đối với tất cả các loại khác. Bỏ qua nếu cả hai đều bằng 0.
  • Đối với tài sản toàn cầu, nếu cần xác định giá trị tối thiểu và tối đa, bạn phải sử dụng một cấu hình vùng có mã khu vực là 0.
minFloatValuemaxFloatValue
  • Giá trị tối thiểu và tối đa không bắt buộc cho các thuộc tính loại Float. Bị bỏ qua đối với tất cả các loại khác. Bỏ qua nếu cả hai đều bằng 0.0.
  • Đối với tài sản chung, nếu cần xác định giá trị tối thiểu và tối đa, bạn phải sử dụng một cấu hình khu vực có mã khu vực là 0.
(Tính năng mới trong Android 14)
supportedEnumValues
  • Danh sách giá trị được hỗ trợ (không bắt buộc) nếu thuộc tính được xác định là một thuộc tính loại enum. Nếu không được chỉ định (trống) hoặc trước Android 14, thì tất cả các giá trị enum đều được giả định là được hỗ trợ.
  • Đối với thuộc tính chung, nếu cần xác định các giá trị enum được hỗ trợ, bạn phải sử dụng một cấu hình khu vực có mã khu vực là 0.

Loại khu vực

Được xác định là enum trong VehicleArea.aidl. Dưới đây là danh sách các loại khu vực được hỗ trợ.

Loại khu vực Giá trị Mô tả
TOÀN CẦU 0x01000000 Cơ sở lưu trú này là một cơ sở lưu trú toàn cầu và không có nhiều khu vực.
CỬA SỔ 0x03000000 Khu vực dựa trên cửa sổ, sử dụng enum VehicleAreaWindow.
MIRROR 0x04000000 Khu vực dựa trên gương, sử dụng enum VehicleAreaMirror.
CHỖ NGỒI 0x05000000 Khu vực dựa trên số ghế, sử dụng enum VehicleAreaSeat.
CỬA 0x06000000 Khu vực dựa trên cửa, dùng enum VehicleAreaDoor.
VÒNG ĐU QUAY 0x07000000 Khu vực dựa trên bánh xe, sử dụng enum VehicleAreaWheel.

Mỗi cơ sở lưu trú được phân vùng phải sử dụng một loại khu vực được xác định trước. Mỗi loại khu vực có một tập hợp các cờ bit được xác định trong một enum cho loại khu vực đó. Ví dụ: khu vực Ghế xác định các enum 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
  • ...

Mã khu vực

Các tài sản được phân vùng được xác định thông qua Mã khu vực. Mỗi cơ sở lưu trú được phân vùng có thể hỗ trợ một hoặc nhiều mã khu vực. Mã khu vực bao gồm một hoặc nhiều cờ từ enum tương ứng. Ví dụ: một tài sản sử dụng VehicleAreaSeat có thể sử dụng các Mã khu vực sau:

Mục Mô tả
ROW_1_LEFT | ROW_1_RIGHT Mã khu vực áp dụng cho cả hai ghế trước.
ROW_2_LEFT Chỉ áp dụng cho ghế sau bên trái.
ROW_2_RIGHT Chỉ áp dụng cho ghế sau bên phải.

Để tìm hiểu thêm, hãy xem bài viết HVAC.