Properti khusus

Properti penjual

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

  • Selalu mencoba untuk menggunakan properti sistem terlebih dahulu, properti vendor harus digunakan sebagai pilihan terakhir ketika 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 di CDD.
  • Gunakan kolom berikut untuk menghasilkan ID Properti:
    • VehiclePropertyGroup:VENDOR Grup VENDOR hanya digunakan untuk properti vendor.
    • VehicleArea Pilih Tipe Area yang sesuai.
    • VehiclePropertyType Pilih tipe data yang tepat. Tipe BYTES memungkinkan meneruskan data mentah, yang dalam banyak kasus sudah mencukupi. Mengirimkan data besar secara sering melalui properti vendor dapat memperlambat akses seluruh jaringan kendaraan. Berhati-hatilah saat menambahkan muatan besar.
    • Property ID Pilih ID dua byte unik untuk properti vendor. Misalnya, 0x1234.
  • Isi VehiclePropConfig.configString dengan deskripsi singkat tentang properti vendor. Hal ini memungkinkan alat pemeriksaan validitas menandai replikasi properti kendaraan yang ada secara tidak disengaja. Misalnya, "Properti khusus saya untuk XYZ".
  • Akses melalui CarPropertyManager (untuk komponen Java) atau melalui libvhalclient (untuk komponen asli). Jangan memodifikasi API mobil lain karena hal itu 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 STATIS ini bersifat hanya-baca, yang mana susunan konfigurasinya menentukan izin untuk properti vendor. configArray diatur sebagai berikut (i adalah bilangan bulat dimulai dari 0):

  • configArray[3 * i] propId, ID properti untuk properti vendor.
  • configArray[3 * i + 1] Sebuah enum di VehicleVendorPermission.aidl untuk menunjukkan izin membaca nilai properti.
  • configArray[3 * i + 2] Sebuah enum di VehicleVendorPermission.aidl untuk menunjukkan izin menulis nilai properti.

Misalnya, susunan konfigurasi berikut mengonfigurasi dua properti vendor, vendor_prop_1 dan vendor_prop_2 , untuk mendapatkan izin:

  • vendor_prop_1 memerlukan android.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 memerlukan android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO untuk membaca, 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 larik ini menggunakan izin vendor default. Jika PERMISSION_NOT_ACCESSIBLE dipilih, aplikasi Android tidak dapat mengakses properti. Dalam contoh ini, aplikasi Android tidak dapat menulis nilai untuk vendor_prop_2 . Hanya klien VHAL asli yang dapat menulis ke properti ini.

Sistem bantuan pengemudi tingkat lanjut (ADAS)

Lihat Properti Kendaraan ADAS .

KURSI dan KEMUDI

Lihat Properti Kursi dan Roda Kemudi .

AC

Anda dapat menggunakan VHAL untuk mengontrol HVAC dengan mengatur 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 meliputi:

Properti Tujuan
HVAC_TEMPERATURE_SET Atur 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 konfigurasi HVAC_POWER_ON . Untuk melihat daftar lengkap properti HVAC, cari HVAC_* di VehicleProperty.aidl , lihat Properti Sistem yang Didukung . properti.

Aturan untuk memetakan properti HVAC tipe VehicleArea non-GLOBAL ke AreaID: Setiap “area” untuk tipe VehicleArea tertentu yang terpengaruh oleh properti, harus disertakan dalam ID area untuk properti tersebut. Pengontrol suhu ditetapkan ke kursi yang "paling berpengaruh", namun setiap kursi yang terkena dampak harus diaktifkan tepat satu kali. Penetapan kursi belakang tengah ke AreaID kiri atau kanan mungkin tampak sewenang-wenang, namun penyertaan setiap kursi yang terpengaruh dalam satu AreaID memastikan bahwa semua kursi di mobil terekspresikan dan tersedia cara yang masuk akal untuk memengaruhi setiap kursi.

Contoh 1

Sebuah 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 pengatur suhu, masing-masing 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_KANAN | ROW_2_CENTER | BARIS_2_KANAN

Pemetaan alternatif untuk konfigurasi perangkat keras yang sama adalah:

  • ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
  • ROW_1_KANAN | BARIS_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 ketiga (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). Terdapat tiga unit pengatur suhu, masing-masing untuk sisi pengemudi, sisi penumpang, dan belakang. Cara yang masuk akal untuk memetakan HVAC_TEMPERATURE_SET ke AreaIDs adalah dengan array tiga elemen:

  • ROW_1_LEFT
  • BARIS_1_KANAN
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_KANAN | ROW_3_LEFT | ROW_3_CENTER | BARIS_3_KANAN

Contoh 3

Sebuah 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 larik elemen tunggal:

  • ROW_1_LEFT | BARIS_1_KANAN

Jika HVAC_AUTO_ON memiliki dua unit kontrol terpisah untuk sisi pengemudi dan penumpang, pemetaan alternatif akan berupa susunan dua elemen:

  • ROW_1_LEFT
  • BARIS_1_KANAN

Kepatuhan terhadap peraturan keselamatan umum Uni Eropa

Jika kendaraan harus mematuhi persyaratan Peraturan Keselamatan Umum Uni Eropa (GSR) melalui Android, properti GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT harus didukung. Contoh kasus penggunaannya adalah GSR-ISA (Intelligent Speed ​​Assist) sebagaimana didefinisikan dalam Peraturan UE 2019/2144. Properti ini ditambahkan di AIDL VHAL dari Android 13, namun didukung di Car Service sejak rilis Android 12. Properti ini didefinisikan sebagai properti bilangan bulat global statis hanya-baca, dengan kemungkinan nilai yang ditentukan oleh GsrComplianceRequirementType enum:

Nama Nilai Keterangan
GSR_COMPLIANCE_NOT_REQUIRED 0 Kepatuhan GSR tidak diperlukan
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 hardcode pada ID properti. Misalnya, cuplikan berikut menunjukkan bagaimana hal ini didukung dalam referensi HIDL 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 (mulai Android 13), vendor dapat menggunakan ID properti dari VehicleProperty.h dan enum dari GsrComplianceRequirementType.h . Misalnya seperti pada 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 .