Güç politikası

Donanım ve yazılım bileşenlerinin (ekran, ses ve sesli etkileşim gibi) gerektiği şekilde seçilerek açılıp kapatılırsa AAOS bir güç politikası sağlar. Bu politika şunları içerir: donanım ve yazılım bileşenleri için beklenen açık ve kapalı durumları içerir. VHAL veya Android güç durumu devre dışıyken yeni bir güç politikası uygulayabilir. ne zaman olduğunu bilebilir.

VHAL'yi bekle ve Açık (Bazen bazı kısıtlamalar söz konusu olabilir). Kapatma Programı'nda Garaj Modu çalışıyor ve güç durumu değişikliğinden etkilenmeyecektir. Normal bir güç politikası uygulanamasa da Kullanıcı etkileşimi yok adlı sistem güç politikası olan özel güç politikasının Kapatmaya Hazırla'yı tıklayın.

AAOS güç durumu

AAOS cihazları şu güç durumu şemasını izler:

AAOS güç durumu şeması

Şekil 1. AAOS güç durumu şeması.

Her güç durumu aşağıda açıklanmıştır:

Değer Açıklama
Kapalı
  • Uygulama işlemcisine (AP), belleğe ve belleğe (AP) fiziksel olarak çevre birimleri
VHAL'yi bekle
  • Sürücü araçla etkileşime geçtiğinde (ör. kapı açarak) VMCU geçerli olur. AP'ye, belleğe, hafızaya. hakkında bilgi edindiniz.
  • Üç durumdan birinden AAOS geçişleri (Kapalı, RAM'e askıya al (STR, VHAL'in tamamlanmasını bekle)) ve ardından VHAL ile koordinasyon kurmak üzere VHAL'ı Bekleme moduna girer.
Açık
  • VHAL, AAOS'ye Açık durumuna girmesini söyler. Bu durumda, AAOS tam olarak çalışır ve şoförle etkileşimde bulunuyor.
  • Ekran, güç politikası tarafından kontrol edilir, diğer olabilir.
Kapatma hazırlığı
  • Sürücü sürüşü durdurduğunda VHAL, AAOS'ye "Kapatma hazırlığı"na girmesini söyler. Bu durumda ekran ve ses kapalıdır ve AAOS, gerekir. Android sistemi hâlâ çalışıyor ve uygulamaları ve Android sistemini güncelleyebilir. Güncellemeler (varsa) tamamlandığında Android sistemi, VHAL'nin Tamamlanmasını Bekleyin'e girer.
VHAL'nin tamamlanmasını bekleyin
  • AAOS, VHAL'a kapatılabileceğini bildirir. Araç Mikrodenetleyici Birimi (VMCU) System-on-Chip'ı (SoC) Derin Uyku'ya alması ve AP'nin gücünü kesmesi beklenir. Bu durumda AAOS, hiçbir kod yürütülmese de STR durumundadır.
  • VHAL tamamlanmazsa ve sürücü geri dönerse ana birim (HU) doğrudan geçiş yapmalıdır. tuşuna basarak VHAL'ı bekleyin.
RAM'e askıya alma (STR)
  • Araç ve erişim noktası kapalı, kod yürütülmüyor ve güç korunuyor AP RAM'e aktarır.
Diske askıya alma (STD)
  • Araç ve erişim noktası kapalı, kod yürütülmüyor ve güç sağlanmıyor işlem birimine ve AP RAM'ine aktarılır.

Güç politikası nasıl tanımlanır?

Uygulayıcılar güç politikalarını /vendor/etc/automotive/power_policy.xml, Burada:

  • Güç politikasını tanımlar.
  • Varsayılan güç politikasını içeren ve otomatik olarak ayarlanan güç politikası gruplarını tanımlar , güç durumu geçişleri gerçekleştiğinde uygulanır.
  • Sistem güç politikasını geçersiz kılar.

Güç politikası

Güç politikası, donanım ve yazılım bileşenlerinin bir dizi beklenen güç durumundan oluşur. AAOS, güç politikasında şu bileşenleri destekler:

SES
MEDYA
GÖRÜNTÜLÜ
BLUETOOT
Kablosuz
HÜCRESEL
ETHERNET
PROJE
NFC
INPUT
SESLE_ETKİLEŞİM
GÖRSEL_INTERACTION
TRUSTED_DEVICE_DETECTION
YER
MİKRON
CPU

Tedarikçiler kendi özel güç bileşenlerini de güç politikalarıyla birlikte kullanmak üzere tanımlayabilirler. Tanımla aşağıdaki örnekte gösterildiği gibi, güç politikalarıyla aynı XML dosyasında özel güç bileşenleri:

<customComponents>
  CUSTOM_COMPONENT_1000
  CUSTOM_COMPONENT_SPECIAL_SENSOR
  CUSTOM_COMPONENT_AUX_INPUT
</customComponents>

Güç politikası grubu

Güç durumu geçişinde varsayılan güç politikası otomatik olarak uygulanır: güç politikası grubunda belirtilir. Tedarikçi firmalar, bu özellik için varsayılan güç politikasını tanımlayabilir. VHAL'in, Açık'ın ve VHAL'nin Sonlandırılmasını Bekleyin (Derin Uyku Girişi veya Kapatmanın Başlangıcı).

Sistem güç politikaları

AAOS, kullanıcı etkileşimi olmayan ve askıya alma hazırlığı Cihaz, Sessiz Mod, Garaj Modu, RAM'e askıya alma veya diske askıya alma.

Aşağıdaki tablolarda, sistem güç politikasındaki her bileşenin davranışı listelenmektedir. Uygulayıcılar, kullanıcı etkileşimi yok sistem güç politikası. Geçersiz kılmaların uygulandığı yer: /vendor/etc/power_policy.xml

kullanıcı etkileşimi yok

Kullanıcı etkileşimi yok sistem güç politikasının davranışı bu belgede tanımlanmıştır: tablo:

Bileşenler Güç durumu Yapılandırılabilir
Ses Kapalı Hayır
Medya Kapalı Hayır
Ekran Kapalı Hayır
Bluetooth Kapalı Evet
Kablosuz Açık Hayır
Hücresel Açık Hayır
Ethernet Açık Hayır
Projeksiyon Kapalı Hayır
NFC Kapalı Evet
Giriş Kapalı Hayır
Asistan Kapalı Hayır
Kullanıcı etkileşimi Kapalı Hayır
Kullanıcı girişi için güvenilir cihaz algılama Açık Evet
Konum Kapalı Hayır
Mikrofon Kapalı Hayır
CPU Açık Hayır

hazırlığı askıya al

Askıya alma sistemi güç politikasının davranışı aşağıdaki tabloda tanımlanmıştır:

Bileşenler Güç durumu OEM tarafından yapılandırılabilir
Ses Kapalı Hayır
Medya Yok Hayır
Ekran Yok Hayır
Bluetooth Kapalı Hayır
Kablosuz Kapalı Hayır
Hücresel Yok Hayır
Ethernet Yok Hayır
Projeksiyon Yok Hayır
NFC Yok Hayır
Giriş Yok Hayır
Asistan Yok Hayır
Kullanıcı etkileşimi Yok Hayır
Kullanıcı girişi için güvenilir cihaz algılama Yok Hayır
Konum Kapalı Hayır
Mikrofon Kapalı Hayır
CPU Kapalı Hayır

VHAL ile etkileşim

Sistem katmanında çalışan araba gücü politikası arka plan programı, iki özelliğin dinlenmesi için abone olmasını sağlar VHAL'den gelen istekler:

  • POWER_POLICY_REQ VHAL, bu mülke güç politikası kimliği yazar.
  • POWER_POLICY_GROUP_REQ VHAL, güç politikası grup kimliğini yazar ekleyebilirsiniz.

Sistemdeki geçerli güç politikası, VHAL dışındaki modüller tarafından değiştirilebilir. Böyle bir durumda, araba gücü politikası arka plan programı, CURRENT_POWER_POLICY özelliğini VHAL olarak değiştirin.

Yerel işlemlerle etkileşim

Yukarıda belirtildiği gibi, araba gücü politikası arka plan programı sistem katmanında çalışır ve çerçeve katmanında çalışan CPMS ile hemen hemen aynı işlevleri sunar. Ayrıca, araba gücü politikası arka plan programının ve BGBM'lerin tamamen senkronize edildiğini varsayın.

Araba gücü politikası arka plan programı, HAL'ler ve diğer yerel işlemler tarafından kullanılmak üzere AIDL arayüzlerini dışa aktarır. Yeni bir güç politikası değiştirildiğinde bu kişi bilgilendirilebilir. Başka bir deyişle, her birinin güç durumuna göre değişir.

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.
     * @throws IllegalStateException if the current policy is not set.
     */
    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.
     * @throws IllegalArgumentException if the componentId is invalid.
     */
    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.
     * @throws IllegalArgumentException if the callback is already registered.
     * @throws IllegalStateException if the callback is dead.
     */
    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.
     * @throws IllegalArgumentException if the callback is not registered.
     */
    void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback);

    /**
     * Applies the power policy.
     *
     * 

{@code policyId} should be one of power policy IDs defined in * {@code /vendor/etc/automotive/power_policy.xml} or predefined system power policies. * * @param policyId ID of power policy. * @throws IllegalArgumentException if {@code policyId} is invalid. */ void applyPowerPolicy(in @utf8InCpp String policyId); /** * Sets the current power policy group. * *

{@code policyGroupId} should be one of power policy group IDs defined in * {@code /vendor/etc/automotive/power_policy.xml}. * * @param policyGroupId ID of power policy group. * @throws IllegalArgumentException if {@code policyGroupId} is invalid. */ void setPowerPolicyGroup(in @utf8InCpp String policyGroupId); }

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);
  }

Java modülleriyle etkileşim

CarPowerManager, güç politikası yönetimini etkinleştirme yöntemleri sunar:

  • Geçerli güç politikasını al
  • Yeni bir güç politikası uygulama
  • Yeni bir güç politikası grubu ayarlayın

Bu yöntemleri yalnızca sisteme özel modüller kullanabilir. Modüller, bir güç politikası uygulandığında bilgilendirilmek üzere güç politikası değişikliği dinleyicisi CarPowerManager.