Properti khusus

Properti vendor

Untuk mendukung kebutuhan khusus mitra, VHAL memungkinkan properti vendor yang diakses hanya melalui API sistem. Gunakan panduan berikut saat bekerja dengan properti vendor:

  • Selalu cobalah untuk menggunakan properti sistem terlebih dahulu, properti vendor harus digunakan sebagai upaya terakhir saat 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 di CDD.
  • Gunakan kolom berikut untuk membuat ID Properti:
    • VehiclePropertyGroup:VENDOR Grup 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.
  • Isi VehiclePropConfig.configString dengan deskripsi singkat tentang vendor saat ini. Hal ini memungkinkan alat pemeriksaan validitas menandai replikasi tidak disengaja dari properti kendaraan bermotor. 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 di VehicleVendorPermission.aidl untuk yang menunjukkan izin untuk membaca nilai properti.
  • configArray[3 * i + 2] Enum di VehicleVendorPermission.aidl untuk menunjukkan izin untuk 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 memerlukan android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT untuk dibaca, android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT untuk menulis.
  • vendor_prop-2 memerlukan android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO 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. Kapan PERMISSION_NOT_ACCESSIBLE dipilih, aplikasi Android tidak dapat mengakses properti. Dalam contoh tersebut, aplikasi Android tidak dapat menulis nilai untuk vendor_prop_2. Hanya native Klien VHAL dapat menulis ke properti ini.

Advanced Driver Assistance Systems (ADAS)

Lihat Properti Kendaraan ADAS.

KURSI dan KEKUATAN

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 merupakan properti 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 baru.

Aturan untuk memetakan properti HVAC jenis VehicleArea non-GLOBAL ke AreaID: Setiap “area” untuk jenis VehicleArea tertentu yang dipengaruhi 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 sewenang-wenang, tetapi penyertaan setiap kursi yang terpengaruh di tepat satu AreaID memastikan bahwa kursi di dalam mobil semuanya dinyatakan dan bahwa tersedia cara yang masuk akal untuk memengaruhi setiap kursi.

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 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_KANAN

Pemetaan alternatif untuk konfigurasi perangkat keras yang sama adalah:

  • ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_KANAN

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 satu :

  • 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_KIRI
  • ROW_1_KANAN

INFO_EXTERIOR_DIMENSION

Dimensi eksterior kendaraan diukur dalam milimeter, seperti yang diilustrasikan pada Gambar 1.

Gambar 1. Dimensi eksterior kendaraan, tampilan depan.
Gambar 2. Dimensi eksterior kendaraan, tampilan samping.

Gunakan properti yang dijelaskan dalam tabel ini untuk menentukan eksterior kendaraan dimensi kustom.

Properti kendaraan bidang 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 spion samping.
Dudukan roda int32Values[4] Jarak antara bagian tengah kendaraan dari roda depan dan belakang.
Lebar lintasan, depan int32Values[5] Jarak antara roda depan, diukur dari garis tengah satu tapak ban ke garis tengah tapak ban yang berlawanan.
Lebar lintasan, bagian belakang int32Values[6] Jarak antara roda belakang, diukur dari garis tengah satu tapak ban ke garis tengah tapak ban yang berlawanan.
Diameter trotoar 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 di Uni Eropa Peraturan 2019/2144. Properti ini ditambahkan di AIDL VHAL dari Android 13, tetapi didukung di Car Service sejak rilis Android 12. Properti ini didefinisikan sebagai hanya-baca properti bilangan bulat global statis, dengan nilai yang mungkin 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 persyaratannya 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