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 status daya Android bertransisi atau saat kondisi yang ditunggu terpenuhi.
Menerapkan kebijakan daya diperbolehkan di negara bagian Tunggu VHAL dan Aktif. Dalam Persiapan Shutdown, Mode Garasi sedang berjalan dan tidak boleh diganggu oleh perubahan status daya. Meskipun kebijakan daya reguler 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 berikut:
Gambar 1. Diagram status daya AAOS
Setiap status daya dijelaskan di bawah ini:
Nilai | Keterangan |
---|---|
Mati | Tidak ada daya yang diberikan secara fisik ke prosesor aplikasi (AP), memori, dan periferal. |
Tunggu VHAL |
|
Pada |
|
Persiapan Shutdown |
|
Tunggu hingga VHAL Selesai |
|
Penangguhan-ke-RAM (STR) | Kendaraan dan AP mati, tidak ada kode yang dijalankan, dan daya dipertahankan pada AP RAM. |
Arsitektur perangkat lunak
Arsitektur kebijakan kekuasaan diilustrasikan di bawah ini dan didefinisikan pada bagian berikut:
Gambar 2. Arsitektur kebijakan kekuasaan
Bagaimana kebijakan kekuasaan didefinisikan?
Pelaksana menentukan kebijakan daya di /vendor/etc/automotive/power_policy.xml
, yang:
- Mendefinisikan kebijakan kekuasaan.
- Mendefinisikan grup kebijakan daya, yang mencakup kebijakan daya default dan diterapkan secara otomatis ketika transisi status daya terjadi.
- Mengganti kebijakan daya sistem.
Kebijakan kekuasaan
Kebijakan daya adalah serangkaian kondisi 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
Kelompok kebijakan kekuasaan
Kebijakan daya default secara otomatis diterapkan pada transisi status daya yang 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 Garasi.
Perilaku masing-masing komponen dalam kebijakan daya sistem tercantum pada tabel di bawah. Pelaksana dapat mengesampingkan deteksi perangkat Bluetooth, NFC, dan Tepercaya dalam kebijakan daya sistem. Penggantian diterapkan di /vendor/etc/power_policy.xml
.
Komponen | Status kekuatan | 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 dengan modul selain VHAL. Dalam hal ini, daemon kebijakan daya mobil memperbarui properti CURRENT_POWER_POLICY
untuk memberitahukan 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 sepenuhnya disinkronkan.
Daemon kebijakan daya mobil mengekspor antarmuka AIDL untuk digunakan oleh HAL dan proses asli lainnya. Mereka dapat diberi tahu ketika ada perubahan kebijakan listrik baru. Dengan kata lain, ketika masing-masing harus mengubah status kekuasaannya.
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 daya baru
- Tetapkan grup kebijakan daya baru
Hanya modul dengan hak istimewa sistem yang dapat menggunakan metode ini. Modul yang ingin diberi tahu ketika kebijakan daya diterapkan, dapat mendaftarkan pemroses perubahan kebijakan daya ke CarPowerManager
.