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:
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 |
|
Pada |
|
Persiapan Shutdown |
|
Tunggu hingga VHAL Selesai |
|
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
.