Kebijakan Daya

Untuk memastikan bahwa komponen perangkat keras dan perangkat lunak (seperti tampilan, audio, dan interaksi suara) diaktifkan dan dinonaktifkan secara selektif sesuai kebutuhan, AAOS menyediakan kebijakan daya, yang terdiri dari serangkaian status daya hidup dan mati yang diharapkan untuk komponen perangkat keras dan perangkat lunak. . VHAL, atau layanan vendor dengan hak istimewa sistem, dapat menerapkan kebijakan daya baru saat transisi status daya Android atau saat kondisi yang mereka tunggu terpenuhi.

Menerapkan kebijakan daya diperbolehkan di status Tunggu VHAL dan Aktif. Dalam Shutdown Prepare, Garage Mode sedang berjalan dan tidak boleh diganggu oleh perubahan status daya. Meskipun kebijakan daya biasa tidak dapat diterapkan, kebijakan daya khusus , yang merupakan kebijakan daya sistem bernama "tidak ada interaksi pengguna", diterapkan di Persiapan Shutdown.

Status daya AAOS

Perangkat AAOS mengikuti diagram status daya ini:

Diagram status daya AAOS

Gambar 1. Diagram status daya AAOS

Setiap status daya dijelaskan di bawah ini:

Nilai Keterangan
Mati Tidak ada daya yang secara fisik diberikan ke prosesor aplikasi (AP), memori, dan periferal.
Tunggu VHAL
  • Ketika pengemudi berinteraksi dengan kendaraan (misalnya, dengan membuka pintu), VMCU menerapkan daya ke AP, memori. dan periferal.
  • Transisi AAOS dari salah satu dari tiga status (Mati, Suspend-ke-RAM (STR, Tunggu VHAL Selesai) dan kemudian masuk Tunggu VHAL, di mana ia menunggu koordinasi dengan VHAL.
Pada
  • VHAL menginstruksikan AAOS untuk masuk ke status On. Dalam keadaan ini, AAOS sepenuhnya berjalan dan berinteraksi dengan driver.
  • Tampilan dikendalikan oleh kebijakan daya dan bukan oleh panggilan Nyala/Mati Tampilan Android untuk faktor bentuk lainnya.
Persiapan Shutdown
  • Ketika pengemudi telah berhenti mengemudi, VHAL menginstruksikan AAOS untuk memasuki Shutdown Prepare. Dalam keadaan ini, tampilan dan audio mati dan AAOS tidak berinteraksi dengan driver. Sistem Android masih berjalan dan dapat memperbarui aplikasi dan sistem Android. Ketika pembaruan (jika ada) selesai, sistem Android masuk ke Tunggu VHAL Selesai.
Tunggu hingga VHAL Selesai
  • AAOS memberi tahu VHAL bahwa itu dapat dimatikan. Vehicle Microcontroller Unit (VMCU) diharapkan untuk menempatkan System-on-Chip (SoC) ke dalam Deep Sleep dan untuk menghapus daya dari AP. AAOS kemudian dalam status STR, meskipun tidak ada kode yang dieksekusi.
  • Jika VHAL tidak selesai dan driver kembali, head unit (HU) harus langsung beralih ke Wait for VHAL.
Suspend-to-RAM (STR) Kendaraan dan AP dimatikan, tidak ada kode yang dieksekusi, dan daya dipertahankan ke RAM AP.

Arsitektur perangkat lunak

Arsitektur kebijakan daya diilustrasikan di bawah ini dan didefinisikan di bagian berikut:

Gambar 2. Arsitektur kebijakan daya

Bagaimana kebijakan kekuasaan didefinisikan?

Pelaksana menentukan kebijakan daya di /vendor/etc/automotive/power_policy.xml , yang:

  • Mendefinisikan kebijakan kekuasaan.
  • Menentukan grup kebijakan daya, yang mencakup kebijakan daya default dan diterapkan secara otomatis saat transisi status daya terjadi.
  • Ganti kebijakan daya sistem.

Kebijakan daya

Kebijakan daya adalah serangkaian status daya yang diharapkan dari komponen perangkat keras dan perangkat lunak. AAOS mendukung komponen berikut dalam kebijakan daya:

  • AUDIO
  • MEDIA
  • DISPLAY_MAIN
  • DISPLAY_CLUSTER
  • DISPLAY_FRONT_PASSENGER
  • DISPLAY_REAR_PASSENGER
  • BLUETOOTH
  • WIFI
  • CELLULAR
  • ETHERNET
  • PROJECTION
  • NFC
  • INPUT
  • VOICE_INTERACTION
  • VISUAL_INTERACTION
  • TRUSTED_DEVICE_DETECTION
  • LOCATION
  • MICROPHONE
  • CPU

Grup kebijakan kekuatan

Kebijakan daya default diterapkan secara otomatis saat transisi status daya ditentukan dalam grup kebijakan daya. Vendor dapat menentukan kebijakan daya default untuk Wait For VHAL, On, dan Wait for VHAL Finish (Deep Sleep Entry atau Shutdown Start).

Kebijakan daya sistem

AAOS hanya mendukung satu kebijakan daya sistem, yaitu "tidak ada interaksi pengguna". Kebijakan daya sistem diterapkan saat perangkat masuk ke Mode Senyap atau Mode Garasi.

Perilaku setiap komponen dalam kebijakan daya sistem tercantum dalam tabel di bawah ini. Pelaksana dapat mengganti deteksi perangkat Bluetooth, NFC, dan Tepercaya dalam kebijakan daya sistem. Penimpaan diterapkan di /vendor/etc/power_policy.xml .

Komponen Status daya Dapat dikonfigurasi
audio Mati Tidak
Media Mati Tidak
Tampilan utama Mati Tidak
Tampilan cluster Mati Tidak
Tampilan penumpang depan Mati Tidak
Tampilan penumpang belakang Mati Tidak
Bluetooth Mati YA
Wifi PADA Tidak
seluler PADA Tidak
Ethernet PADA Tidak
Proyeksi Mati Tidak
NFC Mati YA
Memasukkan Mati Tidak
Interaksi suara Mati Tidak
Interaksi visual Mati Tidak
Deteksi perangkat tepercaya PADA YA
Lokasi Mati Tidak
Mikropon Mati Tidak
CPU Pada Tidak

Interaksi dengan VHAL

Daemon kebijakan daya mobil yang berjalan di lapisan sistem berlangganan dua properti untuk mendengarkan permintaan dari VHAL:

  • POWER_POLICY_REQ , VHAL menulis ID kebijakan daya ke properti ini.
  • POWER_POLICY_GROUP_REQ , VHAL menulis ID grup kebijakan daya ke properti ini.

Kebijakan daya saat ini dalam sistem dapat diubah oleh modul selain VHAL. Dalam hal ini, daemon kebijakan daya mobil memperbarui properti CURRENT_POWER_POLICY untuk memberi tahu perubahan ke VHAL.

Interaksi dengan proses asli

Seperti disebutkan di atas, daemon kebijakan daya mobil berjalan di lapisan sistem dan, dalam hal manajemen kebijakan daya, menyediakan fungsionalitas yang hampir sama dengan CPMS yang berjalan di lapisan kerangka kerja. Juga, asumsikan bahwa daemon kebijakan daya mobil dan CPMS disinkronkan sepenuhnya.

Daemon kebijakan daya mobil mengekspor antarmuka AIDL untuk digunakan oleh HAL dan proses asli lainnya. Mereka dapat diberi tahu ketika kebijakan daya baru diubah. Dengan kata lain, ketika masing-masing harus mengubah status kekuatannya.

ICarPowerPolicyServer.aidl

package android.frameworks.automotive.powerpolicy;

import android.frameworks.automotive.powerpolicy.CarPowerPolicy;
import android.frameworks.automotive.powerpolicy.CarPowerPolicyFilter;
import android.frameworks.automotive.powerpolicy.ICarPowerPolicyChangeCallback;
import android.frameworks.automotive.powerpolicy.PowerComponent;

/**
 * ICarPowerPolicyServer is an interface implemented by the power policy daemon.
 * VHAL changes the power policy and the power policy daemon notifies the change to registered
 * subscribers. When subscribing to policy changes, a filter can be specified so that the registered
 * callbacks can listen only to a specific power component's change.
 */

@VintfStability
interface ICarPowerPolicyServer {
  /**
   * Gets the current power policy.
   */
  CarPowerPolicy getCurrentPowerPolicy();

  /**
   * Gets whether the power component is turned on or off.
   *
   * @param componentId Power component ID defined in PowerComponent.aidl to check power state.
   * @return True if the component's power state is on.
   */
  boolean getPowerComponentState(in PowerComponent componentId);

  /**
   * Subscribes to power policy change.
   * Notification is sent to the registered callback when the power policy changes and the power
   * state of the components which the callback is interested in changes.
   *
   * @param callback Callback that is invoked when the power policy changes.
   * @param filter The list of components which the callback is interested in.
   */
  void registerPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback,
      in CarPowerPolicyFilter filter);

  /**
   * Unsubscribes from power policy change.
   *
   * @param callback Callback that doesn't want to receive power policy change.
   */
  void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback);
}

ICarPowerPolicyChangeCallback.aidl

package android.frameworks.automotive.powerpolicy;

import android.frameworks.automotive.powerpolicy.CarPowerPolicy;

/**
 * ICarPowerPolicyChangeCallback is notified when a power policy changes.
 */

@VintfStability
oneway interface ICarPowerPolicyChangeCallback {
  /**
   * Called when a power policy is fully changed.
   *
   * @param policy The current policy.
   */
  void onPolicyChanged(in CarPowerPolicy policy);
}

Interaksi dengan modul Java

CarPowerManager menyediakan metode untuk mengaktifkan manajemen kebijakan daya:

  • Dapatkan kebijakan daya saat ini.
  • Dapatkan grup kebijakan daya saat ini
  • Terapkan kebijakan kekuatan baru
  • Tetapkan grup kebijakan kekuatan baru

Hanya modul dengan hak istimewa sistem yang dapat menggunakan metode tersebut. Modul yang ingin diinformasikan saat kebijakan daya diterapkan, dapat mendaftarkan pendengar perubahan kebijakan daya ke CarPowerManager .