Güç politikası

AAOS, donanım ve yazılım bileşenlerinin (ekran, ses ve ses etkileşimi gibi) gerektiği gibi seçilerek açılıp kapatılmasını sağlamak için, donanım ve yazılım bileşenleri için beklenen bir dizi açık ve kapalı durumdan oluşan bir güç politikası sağlar. . VHAL veya sistem ayrıcalıklı satıcı hizmetleri, Android güç durumu geçişinde veya bekledikleri koşullar karşılandığında yeni bir güç politikası uygulayabilir.

VHAL'i Bekle ve Açık durumlarında güç politikası uygulanmasına izin verilir. Kapatma Hazırlığında, Garaj Modu çalışıyor ve güç durumu değişikliğinden etkilenmemelidir. Normal bir güç politikası uygulanamasa da Kapatma Hazırlığında "kullanıcı etkileşimi yok" olarak adlandırılan sistem güç politikası olan özel bir güç politikası uygulanır.

AAOS güç durumu

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

AAOS güç durumu diyagramı

Şekil 1. AAOS güç durumu diyagramı

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

Değer Tanım
Kapalı Uygulama işlemcisine (AP), belleğe ve çevre birimlerine fiziksel olarak güç sağlanmaz.
VHAL'ı bekleyin
  • Sürücü araçla etkileşime girdiğinde (örneğin bir kapıyı açarak), VMCU AP belleğine güç uygular. ve çevre birimleri.
  • AAOS, üç durumdan birinden geçiş yapar (Kapalı, RAM'e Askıya Alma (STR, VHAL Sonunu Bekleyin) ve ardından VHAL ile koordinasyonu beklediği VHAL'ı Bekle durumuna girer.
Açık
  • VHAL, AAOS'a Açık durumuna girmesi talimatını verir. Bu durumda, AAOS tamamen çalışıyor ve sürücüyle etkileşimde bulunuyor.
  • Ekran, diğer form faktörleri için Android ekran Açma/Kapama çağrıları tarafından değil, güç politikası tarafından kontrol edilir.
Kapatma Hazırlığı
  • Sürücü sürüşü durdurduğunda VHAL, AAOS'a Kapatma Hazırlığına girmesi talimatını verir. Bu durumda ekran ve ses kapalıdır ve AAOS sürücüyle etkileşime girmez. Android sistemi hala çalışıyor ve uygulamaları ve Android sistemini güncelleyebilir. Güncellemeler (varsa) tamamlandığında, Android sistemi VHAL Sonunu Bekle durumuna girer.
VHAL'in Bitirmesini Bekleyin
  • AAOS, VHAL'e kapatılabileceğini bildirir. Araç Mikrodenetleyici Biriminin (VMCU), Çip Üzerindeki Sistemi (SoC) Derin Uykuya yerleştirmesi ve AP'den gelen gücü kesmesi bekleniyor. AAOS, herhangi bir kod yürütülmemesine rağmen STR durumundadır.
  • VHAL bitmezse ve sürücü geri dönerse ana ünitenin (HU) doğrudan VHAL'i Bekle moduna geçmesi gerekir.
RAM'e Askıya Alma (STR) Araç ve AP kapalı, hiçbir kod yürütülmüyor ve AP RAM'e güç sağlanıyor.

Yazılım mimarisi

Güç politikası mimarisi aşağıda gösterilmiş ve aşağıdaki bölümde tanımlanmıştır:

Şekil 2. Güç politikası mimarisi

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

Uygulayıcılar güç politikalarını /vendor/etc/automotive/power_policy.xml dosyasında tanımlarlar; bunlar:

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

Güç politikası

Güç politikası, donanım ve yazılım bileşenlerinin beklenen güç durumlarının bir kümesidir. AAOS, güç politikasında aşağıdaki bileşenleri destekler:

  • 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

Güç politikası grubu

Varsayılan güç politikası, güç politikası grubunda güç durumu geçişi belirtildiğinde otomatik olarak uygulanır. Satıcılar, VHAL İçin Bekle, Açık ve VHAL Sonunu Bekle (Derin Uyku Girişi veya Kapatma Başlangıcı) için varsayılan güç politikasını tanımlayabilir.

Sistem güç politikası

AAOS yalnızca tek bir sistem güç politikasını destekler; o da "kullanıcı etkileşimi yok". Cihaz Garaj Moduna girdiğinde sistem güç politikası uygulanır.

Sistem güç politikasındaki her bileşenin davranışı aşağıdaki tabloda listelenmiştir. Uygulayıcılar, sistem güç politikasında Bluetooth, NFC ve Güvenilir cihaz algılamayı geçersiz kılabilir. Geçersiz kılmalar /vendor/etc/power_policy.xml dosyasında uygulanır.

Bileşenler Güç durumu Yapılandırılabilir
Ses Kapalı HAYIR
Medya Kapalı HAYIR
Ana ekranı göster Kapalı HAYIR
Görüntü kümesi Kapalı HAYIR
Ön yolcuyu göster Kapalı HAYIR
Arka yolcuyu göster Kapalı HAYIR
Bluetooth Kapalı EVET
Wifi AÇIK HAYIR
Hücresel AÇIK HAYIR
ethernet AÇIK HAYIR
Projeksiyon Kapalı HAYIR
NFC Kapalı EVET
Giriş Kapalı HAYIR
Ses etkileşimi Kapalı HAYIR
Görsel etkileşim Kapalı HAYIR
Güvenilir cihaz tespiti AÇIK EVET
Konum Kapalı HAYIR
Mikrofon Kapalı HAYIR
İşlemci Açık HAYIR

VHAL ile etkileşim

Sistem katmanında çalışan araba güç politikası arka plan programı, VHAL'den gelen istekleri dinlemek için iki özelliğe abone olur:

  • POWER_POLICY_REQ , VHAL bu özelliğe güç politikası kimliğini yazar.
  • POWER_POLICY_GROUP_REQ , VHAL, güç politikası grup kimliğini bu özelliğe yazar.

Sistemdeki mevcut güç politikası VHAL dışındaki modüller tarafından değiştirilebilir. Bu durumda, araba güç politikası arka plan programı, değişikliği VHAL'e bildirmek için CURRENT_POWER_POLICY özelliğini günceller.

Yerel süreçlerle etkileşim

Yukarıda belirtildiği gibi, araba güç politikası arka plan programı sistem katmanında çalışır ve güç politikası yönetimi açısından çerçeve katmanında çalışan CPMS ile neredeyse aynı işlevselliği sağlar. Ayrıca, araç güç politikası arka plan programının ve CPMS'nin tamamen senkronize edildiğini varsayalım.

Araba güç politikası arka plan programı, HAL'ler ve diğer yerel süreçler tarafından kullanılmak üzere AIDL arayüzlerini dışa aktarır. Yeni bir güç politikası değiştiğinde bilgilendirilebilirler. Başka bir deyişle, her birinin güç durumunu değiştirmesi gerektiğinde.

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

Java modülleriyle etkileşim

CarPowerManager güç politikası yönetimini etkinleştirmek için yöntemler sağlar:

  • Mevcut güç politikasını alın.
  • Geçerli güç ilkesi grubunu alın
  • Yeni bir güç politikası uygulayın
  • Yeni bir güç politikası grubu ayarlayın

Yalnızca sistem ayrıcalıklı modüller yöntemleri kullanabilir. Bir güç politikası uygulandığında bilgilendirilmek isteyen modüller, CarPowerManager bir güç politikası değişikliği dinleyicisini kaydedebilir.