Properti vendor
Untuk mendukung kebutuhan khusus partner, VHAL mengizinkan properti vendor yang diakses hanya melalui API sistem. Gunakan panduan berikut saat menggunakan properti vendor:
- Selalu coba gunakan properti sistem terlebih dahulu, properti vendor harus digunakan sebagai upaya terakhir jika tidak ada properti sistem yang memenuhi kebutuhan Anda.
- Untuk mencegah fragmentasi ekosistem, properti vendor tidak boleh digunakan untuk mereplikasi properti kendaraan yang sudah ada di SDK VehiclePropertyIds. Untuk mempelajari lebih lanjut, lihat Bagian 2.5, Persyaratan Otomotif dalam CDD.
- Gunakan kolom berikut untuk membuat ID Properti:
- Grup
VehiclePropertyGroup:VENDORVENDOR hanya digunakan untuk properti vendor. VehicleAreaPilih Jenis Area yang sesuai.VehiclePropertyTypePilih jenis data yang tepat. Jenis BYTES memungkinkan penerusan data mentah, yang cukup dalam sebagian besar kasus. Mengirim big data secara sering melalui properti vendor dapat memperlambat akses jaringan kendaraan secara keseluruhan. Berhati-hatilah saat menambahkan payload besar.Property IDPilih ID dua byte unik untuk properti vendor. Misalnya, 0x1234.
- Grup
- Isi
VehiclePropConfig.configStringdengan deskripsi singkat properti vendor. Hal ini memungkinkan alat pemeriksaan validitas menandai replikasi properti kendaraan yang ada secara tidak sengaja. Misalnya, "Properti kustom saya untuk XYZ". - Akses melalui
CarPropertyManager
(untuk komponen Java) atau melalui
libvhalclient(untuk native). Jangan mengubah API mobil lainnya karena dapat menyebabkan masalah kompatibilitas di masa mendatang.
Izin properti vendor
Izin default untuk properti vendor yang ditentukan adalah
android.car.Car.PERMISSION_VENDOR_EXTENSION. Untuk kontrol izin yang lebih terperinci, dukung properti SUPPORT_CUSTOMIZE_VENDOR_PERMISSION. Properti STATIC
ini bersifat hanya baca, yang array konfigurasinya menentukan izin untuk properti vendor.
configArray ditetapkan 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.aidluntuk menunjukkan izin untuk membaca nilai properti.configArray[3 * i + 2]Enum diVehicleVendorPermission.aidluntuk menunjukkan izin untuk menulis nilai properti.
Misalnya, array config berikut mengonfigurasi dua properti vendor,
vendor_prop_1 dan vendor_prop_2, agar memiliki izin:
vendor_prop_1memerlukanandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEATuntuk membaca,android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEATuntuk menulis.vendor_prop-2memerlukanandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFOuntuk 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 akan mengambil 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 klien VHAL
asli yang dapat menulis ke properti ini.
Sistem bantuan pengemudi canggih (ADAS)
Lihat Properti Kendaraan ADAS.TEMPAT DUDUK dan KEMUDI
Lihat Properti Kursi dan Roda Kemudi.
HVAC
Anda dapat menggunakan VHAL untuk mengontrol HVAC dengan menyetel properti terkait HVAC. Sebagian besar properti HVAC dikaitkan dengan area tertentu di dalam kendaraan, meskipun beberapa di antaranya adalah properti global. Contoh properti yang ditentukan meliputi:
| Properti | Tujuan |
|---|---|
HVAC_TEMPERATURE_SET |
Menyetel 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
dicantumkan dalam array config 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
kursi yang "paling dipengaruhi", tetapi setiap kursi yang terpengaruh harus disertakan tepat satu kali.
Penetapan kursi belakang tengah ke AreaID kiri atau kanan mungkin tampak sewenang-wenang,
tetapi penyertaan setiap kursi yang terpengaruh dalam tepat satu AreaID memastikan bahwa semua kursi
di dalam mobil dinyatakan dan 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, masing-masing untuk sisi pengemudi dan sisi penumpang. Set 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
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 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_LEFT
- ROW_1_RIGHT
- ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT
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. Set pemetaan AreaID yang valid untuk HVAC_AUTO_ON adalah array elemen tunggal:
- ROW_1_LEFT | ROW_1_RIGHT
Jika HVAC_AUTO_ON memiliki dua unit kontrol terpisah untuk sisi pengemudi dan sisi penumpang, pemetaan alternatifnya adalah array dua elemen:
- ROW_1_LEFT
- ROW_1_RIGHT
INFO_EXTERIOR_DIMENSIONS
Dimensi eksterior kendaraan diukur dalam milimeter, seperti yang diilustrasikan dalam Gambar 1.
Gunakan properti yang dijelaskan dalam tabel ini untuk menentukan dimensi eksterior kendaraan.
| Properti kendaraan | Kolom VHAL | Deskripsi |
|---|---|---|
| Tinggi | int32Values[0] |
Jarak vertikal antara tanah dan titik tertinggi pada kendaraan. Hal ini mengasumsikan roda pabrikan yang biasanya dipompa. |
| Panjang | int32Values[1] |
Jarak horizontal antara titik terluar bagian depan dan belakang kendaraan. |
| Lebar, tidak termasuk spion | int32Values[2] |
Jarak horizontal antara dua titik terluar di setiap sisi kendaraan, tidak termasuk spion samping. |
| Lebar, termasuk kaca spion | int32Values[3] |
Jarak horizontal antara dua titik terluar di setiap sisi kendaraan, termasuk kaca spion samping. |
| Jarak sumbu roda | int32Values[4] |
Jarak antara pusat roda depan dan belakang kendaraan. |
| Lebar jalur, depan | int32Values[5] |
Jarak antara roda depan, diukur dari garis tengah kembangan ban yang satu ke garis tengah kembangan ban yang berlawanan. |
| Lebar roda, belakang | int32Values[6] |
Jarak antara roda belakang, diukur dari garis tengah kembangan satu ban ke garis tengah kembangan ban yang berlawanan. |
| Diameter putar 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
Jika 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) sebagaimana didefinisikan dalam Peraturan Uni Eropa 2019/2144. Properti ini ditambahkan di AIDL VHAL dari Android 13, tetapi didukung di Layanan Mobil 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 diperlukan |
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 meng-hardcode ID properti.
Misalnya, cuplikan berikut menunjukkan cara dukungan ini diberikan dalam DefaultConfig.h VHAL HIDL
referensi:
{
.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. Misalnya, seperti dalam referensi AIDL VHAL
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 tinggi, gunakan
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCEsebagai ID properti. - Di Android 12, gunakan nilai yang di-hardcode 0x11400F47 sebagai ID properti. Properti
ini memerlukan izin
Car#PERMISSION_CAR_INFO.