Properti vendor
Untuk mendukung kebutuhan khusus mitra, VHAL memungkinkan properti vendor yang diakses hanya melalui API sistem. Gunakan panduan berikut saat menangani properti vendor:
- Selalu coba gunakan properti sistem terlebih dahulu, properti vendor harus digunakan sebagai upaya terakhir jika tidak ada properti sistem yang memenuhi persyaratan Anda.
- Untuk mencegah fragmentasi ekosistem, properti vendor tidak boleh digunakan untuk mereplikasi kendaraan properti yang sudah ada di SDK KendaraanPropertyIds. Untuk mempelajari lebih lanjut, lihat Bagian 2.5, Persyaratan Otomotif dalam CDD.
- Gunakan kolom berikut untuk membuat ID Properti:
- Grup VENDOR
VehiclePropertyGroup:VENDOR
hanya digunakan untuk properti vendor. VehicleArea
Pilih Jenis Area yang sesuai.VehiclePropertyType
Pilih jenis data yang tepat. Tipe BYTES memungkinkan pengiriman data mentah, yang dalam kebanyakan kasus mencukupi. Sering mengirimkan big data melalui properti vendor dapat memperlambat seluruh akses jaringan kendaraan. Hati-hati saat menambahkan payload besar.Property ID
Pilih ID dua byte yang unik untuk properti vendor. Misalnya, 0x1234.
- Grup VENDOR
- Isi
VehiclePropConfig.configString
dengan deskripsi singkat properti vendor. Hal ini memungkinkan alat pemeriksaan validitas menandai replikasi properti kendaraan yang ada secara tidak sengaja. Misalnya, "Properti khusus saya untuk XYZ". - Akses melalui
CarPropertyManager
(untuk komponen Java) atau melalui
libvhalclient
(untuk native). Anjuran tidak memodifikasi API mobil lain karena hal itu dapat menyebabkan masalah kompatibilitas di masa mendatang.
Izin properti vendor
Izin {i>default<i} untuk properti vendor
apa pun yang ditentukan adalah
android.car.Car.PERMISSION_VENDOR_EXTENSION
. Untuk perincian izin yang lebih baik
mendukung properti SUPPORT_CUSTOMIZE_VENDOR_PERMISSION
. STATIS
bersifat hanya-baca, yang array konfigurasinya menetapkan izin untuk properti vendor.
configArray
diatur sebagai berikut (i adalah bilangan bulat yang dimulai dari 0):
configArray[3 * i]
propId, ID properti untuk properti vendor.configArray[3 * i + 1]
Enum diVehicleVendorPermission.aidl
untuk menunjukkan izin membaca nilai properti.configArray[3 * i + 2]
Enum diVehicleVendorPermission.aidl
untuk menunjukkan izin menulis nilai properti.
Misalnya, {i>array konfigurasi<i} berikut
mengonfigurasi dua properti vendor,
vendor_prop_1
dan vendor_prop_2
, untuk memiliki izin:
vendor_prop_1
memerlukanandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT
untuk membaca,android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT
untuk menulis.vendor_prop-2
memerlukanandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO
untuk dibaca, dan tidak dapat ditulis untuk aplikasi Android.
configArray = { PERMISSION_SET_VENDOR_CATEGORY_SEAT vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE }
Properti vendor yang tidak ada dalam array ini menggunakan izin vendor default. Jika
PERMISSION_NOT_ACCESSIBLE
dipilih, aplikasi Android tidak dapat mengakses properti.
Dalam contoh, aplikasi Android tidak dapat menulis nilai untuk vendor_prop_2
. Hanya native
Klien VHAL dapat menulis ke properti ini.
Advanced Driver Assistance System (ADAS)
Lihat Properti Kendaraan ADAS.KURSI dan STIR
Lihat Properti Kursi dan Setir.
HVAC
Anda dapat menggunakan VHAL untuk mengontrol HVAC dengan menetapkan properti terkait HVAC. Sebagian besar properti HVAC dikaitkan dengan area tertentu di kendaraan, meskipun beberapa properti bersifat global. Contoh properti yang ditentukan mencakup:
Properti | Tujuan |
---|---|
HVAC_TEMPERATURE_SET |
Setel suhu per ID area. |
HVAC_POWER_ON |
Status daya sistem HVAC per ID area. |
Untuk properti HVAC yang bergantung pada status daya sistem HVAC, properti tersebut harus
yang tercantum dalam array konfigurasi HVAC_POWER_ON
. Untuk melihat daftar lengkap properti HVAC,
telusuri HVAC_*
di VehicleProperty.aidl
, lihat
Properti Sistem yang Didukung.
properti.
Aturan untuk memetakan properti HVAC jenis VehicleArea non-GLOBAL ke AreaID:
Setiap “area” untuk jenis VehicleArea
tertentu yang terpengaruh oleh properti, harus
disertakan dalam ID area untuk properti tersebut. Pengontrol suhu ditetapkan ke
yang paling mereka "pengaruhi", tetapi setiap kursi yang terpengaruh
harus dicantumkan tepat satu kali.
Penetapan kursi belakang tengah ke AreaID kiri atau kanan mungkin tampak acak,
tetapi penyertaan setiap kursi yang terpengaruh dalam tepat satu AreaID memastikan bahwa kursi
di mobil semuanya ditampilkan dan bahwa cara yang wajar untuk memengaruhi setiap kursi tersedia.
Contoh 1
Mobil memiliki dua kursi depan (ROW_1_LEFT, ROW_1_RIGHT) dan tiga kursi belakang
(ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Ada dua unit kontrol suhu, satu untuk
sisi pengemudi dan sisi penumpang. Kumpulan pemetaan AreaID yang valid untuk
HVAC_TEMPERATURE_SET
akan berupa array dua elemen:
- ROW_1_LEFT | ROW_2_LEFT
- ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
Pemetaan alternatif untuk konfigurasi hardware yang sama adalah:
- ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
- ROW_1_RIGHT | ROW_2_RIGHT
Contoh 2
Sebuah mobil memiliki tiga baris kursi dengan dua kursi di baris depan (ROW_1_LEFT, ROW_1_RIGHT)
dan tiga kursi di baris kedua (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) dan baris ketiga
(ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). Ada tiga unit kontrol suhu, masing-masing untuk
sisi pengemudi, sisi penumpang, dan bagian belakang. Cara yang wajar untuk memetakan
HVAC_TEMPERATURE_SET
ke AreaID adalah array tiga elemen:
- ROW_1_KIRI
- ROW_1_KANAN
- ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_KANAN
Contoh 3
Mobil memiliki dua kursi depan (ROW_1_LEFT, ROW_1_RIGHT) dan tiga kursi belakang (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). Misalkan mobil mendukung HVAC_AUTO_ON hanya untuk dua kursi depan. Kumpulan pemetaan AreaID yang valid untuk HVAC_AUTO_ON akan berupa array elemen tunggal:
- ROW_1_LEFT | ROW_1_KANAN
Jika HVAC_AUTO_ON
memiliki dua unit kontrol terpisah untuk sisi pengemudi dan penumpang
, pemetaan alternatifnya adalah array dua elemen:
- ROW_1_LEFT
- ROW_1_RIGHT
INFO_EXTERIOR_DIMENSION
Dimensi eksterior kendaraan diukur dalam milimeter, seperti yang diilustrasikan pada Gambar 1.


Gunakan properti yang dijelaskan dalam tabel ini untuk menentukan eksterior kendaraan dimensi kustom.
Properti kendaraan | Kolom VHAL | Deskripsi |
---|---|---|
Tinggi badan | int32Values[0] |
Jarak vertikal antara tanah dan titik tertinggi pada kendaraan. Hal ini mengasumsikan roda pabrik yang biasanya menggembungkan roda pabrik. |
Panjang | int32Values[1] |
Jarak horizontal antara titik terluar bagian depan dan belakang kendaraan. |
Lebar, tidak termasuk cermin | int32Values[2] |
Jarak horizontal antara dua titik terluar di setiap sisi kendaraan, tidak termasuk cermin samping. |
Lebar, termasuk cermin | int32Values[3] |
Jarak horizontal antara dua titik terluar di setiap sisi kendaraan, termasuk kaca spion samping. |
Dudukan roda | int32Values[4] |
Jarak antara bagian tengah kendaraan dari roda depan dan belakang. |
Lebar jalur, depan | int32Values[5] |
Jarak antara roda depan, diukur dari garis tengah satu tapak ban ke garis tengah tapak ban yang berlawanan. |
Lebar jalur, belakang | int32Values[6] |
Jarak antara roda belakang, diukur dari garis tengah satu tapak ban ke garis tengah tapak ban yang berlawanan. |
Diameter belok dari tepi jalan ke tepi jalan | int32Values[7] |
Diameter lingkaran yang dibuat oleh roda luar kendaraan saat melakukan belokan penuh dengan roda kemudi yang terkunci sepenuhnya. |
Kepatuhan terhadap peraturan keselamatan umum Uni Eropa
Apakah kendaraan harus mematuhi persyaratan General Safety Regulation (GSR) Uni Eropa
melalui Android, properti GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
harus
didukung. Contoh kasus penggunaan adalah GSR-ISA (Intelligent Speed Assist) seperti yang ditentukan dalam Peraturan
Uni Eropa 2019/2144. Properti ini ditambahkan di AIDL VHAL dari Android 13, tetapi
didukung di Car Service sejak rilis Android 12. Properti ini ditentukan sebagai properti bilangan bulat global statis
hanya baca, dengan kemungkinan nilai yang ditentukan oleh
enum GsrComplianceRequirementType
:
Nama | Nilai | Deskripsi |
---|---|---|
GSR_COMPLIANCE_NOT_REQUIRED |
0 | Kepatuhan GSR tidak diwajibkan |
GSR_COMPLIANCE_REQUIRED_V1 |
1 | Kepatuhan GSR diperlukan dan versi solusi persyaratan adalah 1. |
Untuk mendukung properti ini di HIDL VHAL (di Android 12), vendor harus melakukan hard code ID properti.
Misalnya, cuplikan berikut menunjukkan bagaimana hal ini didukung dalam HIDL referensi
VHAL
DefaultConfig.h
:
{ .config = { // GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT .prop = 0x11400F47, .access = VehiclePropertyAccess::READ, .changeMode = VehiclePropertyChangeMode::STATIC, }, // GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1 .initialValue = {.int32Values = {1}}, }
Untuk mendukung properti ini di AIDL VHAL (dari Android 13), vendor dapat menggunakan ID properti dari
VehicleProperty.h
dan enum dari GsrComplianceRequirementType.h
. Sebagai
seperti dalam referensi VHAL AIDL
DefaultProperties.json
:
{ "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT", "defaultValue": { "int32Values": [ "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1" ] } }
Untuk membaca properti ini dari aplikasi Android, gunakan
CarPropertyManager.getIntProperty
- Di Android 13 dan yang lebih baru, gunakan
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
sebagai ID properti. - Di Android 12, gunakan nilai hardcode 0x11400F47 sebagai ID properti. Ini
properti memerlukan izin,
Car#PERMISSION_CAR_INFO
.