Polityka zasilania

Aby zapewnić, że komponenty sprzętowe i programowe (takie jak wyświetlacz, dźwięk i interakcja głosowa) są selektywnie włączane i wyłączane w razie potrzeby, AAOS zapewnia politykę zasilania, która składa się z zestawu oczekiwanych stanów włączania i wyłączania zasilania dla komponentów sprzętowych i programowych . VHAL lub usługi dostawców uprzywilejowanych systemowo mogą zastosować nowe zasady zasilania, gdy nastąpi zmiana stanu zasilania Androida lub gdy zostaną spełnione warunki, na które czekają.

Stosowanie polityki zasilania jest dozwolone w stanach Wait for VHAL i On. W trybie przygotowania do zamknięcia działa tryb garażowy i nie powinna mu przeszkadzać zmiana stanu zasilania. Chociaż nie można zastosować zwykłej zasady zasilania, w ramach przygotowania do zamknięcia systemu stosowana jest specjalna zasada zasilania, czyli zasada zasilania systemu o nazwie „brak interakcji z użytkownikiem”.

Stan zasilania AAOS

Urządzenia AAOS postępują zgodnie z następującym schematem stanu zasilania:

Schemat stanu zasilania AAOS

Rysunek 1. Schemat stanu zasilania AAOS

Każdy stan zasilania jest opisany poniżej:

Wartość Opis
Wyłączony Procesor aplikacji (AP), pamięć i urządzenia peryferyjne nie są fizycznie zasilane.
Poczekaj na VHAL
  • Kiedy kierowca wchodzi w interakcję z pojazdem (na przykład otwierając drzwi), VMCU włącza zasilanie do AP, pamięci. i urządzenia peryferyjne.
  • AAOS przechodzi z jednego z trzech stanów (Off, Suspend-to-RAM (STR, Wait for VHAL Finish), a następnie przechodzi do Wait for VHAL, gdzie oczekuje na koordynację z VHAL.
Na
  • VHAL instruuje system AAOS, aby przeszedł w stan włączenia. W tym stanie AAOS jest w pełni uruchomiony i współdziała ze sterownikiem.
  • Wyświetlacz jest kontrolowany przez zasady zasilania, a nie przez wywołania włączania/wyłączania wyświetlacza systemu Android dla innych czynników kształtu.
Przygotowanie do wyłączenia
  • Gdy kierowca przestanie prowadzić, VHAL instruuje AAOS, aby wszedł w tryb przygotowania do wyłączenia. W tym stanie wyświetlacz i dźwięk są wyłączone, a AAOS nie wchodzi w interakcję ze sterownikiem. System Android nadal działa i może aktualizować aplikacje oraz system Android. Po zakończeniu aktualizacji (jeśli są) system Android przechodzi w opcję Czekaj na zakończenie VHAL.
Poczekaj na zakończenie VHAL
  • AAOS informuje VHAL, że można go wyłączyć. Oczekuje się, że jednostka mikrokontrolera pojazdu (VMCU) przestawi układ System-on-Chip (SoC) w stan głębokiego uśpienia i odłączy zasilanie od punktu dostępowego. AAOS jest wtedy w stanie STR, chociaż żaden kod nie jest wykonywany.
  • Jeśli VHAL nie zakończy się i sterownik powróci, jednostka główna (HU) powinna przejść bezpośrednio do opcji Czekaj na VHAL.
Zawieszenie do pamięci RAM (STR) Pojazd i AP są wyłączone, żaden kod nie jest wykonywany, a zasilanie jest utrzymywane w AP RAM.

Architektura oprogramowania

Architektura polityki zasilania została zilustrowana poniżej i zdefiniowana w poniższej sekcji:

Rysunek 2. Architektura polityki zasilania

Jak definiuje się politykę energetyczną?

Realizatorzy definiują polityki zasilania w /vendor/etc/automotive/power_policy.xml , które:

  • Definiuje politykę zasilania.
  • Definiuje grupy zasad zasilania, które obejmują domyślną zasadę zasilania i są automatycznie stosowane po wystąpieniu zmian stanu zasilania.
  • Zastąp zasady zasilania systemu.

Polityka zasilania

Zasady zasilania to zestaw oczekiwanych stanów zasilania składników sprzętu i oprogramowania. AAOS obsługuje następujące elementy polityki zasilania:

  • 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

Grupa polityki energetycznej

Domyślna zasada zasilania jest automatycznie stosowana w momencie zmiany stanu zasilania, który jest określony w grupie zasad zasilania. Dostawcy mogą zdefiniować domyślną zasadę zasilania dla opcji Oczekiwanie na VHAL, Włączenie i Oczekiwanie na zakończenie VHAL (wejście w stan głębokiego uśpienia lub rozpoczęcie zamykania).

Polityka zasilania systemu

AAOS obsługuje tylko jedną zasadę zasilania systemu, czyli „brak interakcji z użytkownikiem”. Zasady zasilania systemu są stosowane, gdy urządzenie przechodzi w tryb cichy lub tryb garażowy.

Zachowanie każdego komponentu w zasadach zasilania systemu przedstawiono w poniższej tabeli. Realizatorzy mogą pominąć wykrywanie Bluetooth, NFC i zaufanych urządzeń w zasadach zasilania systemu. Zastąpienia są stosowane w /vendor/etc/power_policy.xml .

składniki Stan zasilania Konfigurowalny
Audio Wyłączony Nie
Głoska bezdźwięczna Wyłączony Nie
Główny wyświetlacz Wyłączony Nie
Klaster wyświetlacza Wyłączony Nie
Wyświetlacz pasażera z przodu Wyłączony Nie
Wyświetlacz pasażera z tyłu Wyłączony Nie
Bluetooth Wyłączony TAK
Wi-Fi NA Nie
Komórkowy NA Nie
Ethernet NA Nie
Występ Wyłączony Nie
NFC Wyłączony TAK
Wejście Wyłączony Nie
Interakcja głosowa Wyłączony Nie
Interakcja wizualna Wyłączony Nie
Wykrywanie zaufanych urządzeń NA TAK
Lokalizacja Wyłączony Nie
Mikrofon Wyłączony Nie
procesor Na Nie

Interakcja z VHAL

Demon zasad zasilania samochodu działający w warstwie systemowej subskrybuje dwie właściwości, aby nasłuchiwać żądań z VHAL:

  • POWER_POLICY_REQ , VHAL zapisuje identyfikator strategii zasilania do tej właściwości.
  • POWER_POLICY_GROUP_REQ , VHAL zapisuje identyfikator grupy zasad zasilania do tej właściwości.

Aktualną politykę zasilania w systemie można zmienić za pomocą modułów innych niż VHAL. W takim przypadku demon zasad zasilania samochodu aktualizuje właściwość CURRENT_POWER_POLICY , aby powiadomić o zmianie VHAL.

Interakcja z procesami natywnymi

Jak wspomniano powyżej, demon polityki zasilania samochodu działa w warstwie systemu i, pod względem zarządzania polityką zasilania, zapewnia prawie taką samą funkcjonalność, jak CPMS działający w warstwie frameworka. Załóż również, że demon zasad zasilania samochodu i CPMS są w pełni zsynchronizowane.

Demon zasad zasilania samochodu eksportuje interfejsy AIDL do użytku przez warstwy HAL i inne procesy natywne. Mogą być powiadamiani o zmianie nowej polityki zasilania. Innymi słowy, kiedy każdy musi zmienić swój stan mocy.

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

Interakcja z modułami Java

CarPowerManager udostępnia metody umożliwiające zarządzanie polityką zasilania:

  • Pobierz aktualną politykę zasilania.
  • Pobierz aktualną grupę polityki zasilania
  • Zastosuj nową politykę zasilania
  • Ustaw nową grupę zasad zasilania

Tylko moduły z uprawnieniami systemowymi mogą używać tych metod. Moduły, które chcą być informowane o zastosowaniu polityki zasilania, mogą zarejestrować detektor zmian polityki zasilania w CarPowerManager .