Chính sách quyền lực

Để đảm bảo rằng các thành phần phần cứng và phần mềm (chẳng hạn như màn hình, âm thanh và tương tác giọng nói) được bật và tắt có chọn lọc khi cần, AAOS cung cấp chính sách nguồn, bao gồm một tập hợp các trạng thái bật và tắt nguồn dự kiến ​​cho các thành phần phần cứng và phần mềm. . VHAL hoặc các dịch vụ của nhà cung cấp có đặc quyền của hệ thống, có thể áp dụng chính sách nguồn mới khi trạng thái nguồn của Android chuyển đổi hoặc khi các điều kiện mà họ đang chờ được đáp ứng.

Việc áp dụng chính sách quyền lực được cho phép ở các trạng thái Chờ VHAL và Bật. Trong Chuẩn bị tắt máy, Chế độ Garage đang chạy và không bị ảnh hưởng bởi sự thay đổi trạng thái nguồn. Mặc dù không thể áp dụng chính sách quyền lực thông thường, nhưng chính sách quyền lực đặc biệt , chính sách quyền lực hệ thống có tên “không tương tác với người dùng”, sẽ được áp dụng trong Chuẩn bị tắt máy.

Trạng thái nguồn AAOS

Các thiết bị AAOS tuân theo sơ đồ trạng thái nguồn sau:

Sơ đồ trạng thái nguồn AAOS

Hình 1. Sơ đồ trạng thái nguồn AAOS

Mỗi trạng thái năng lượng được mô tả dưới đây:

Giá trị Sự miêu tả
Tắt Không có nguồn điện nào được cung cấp vật lý cho bộ xử lý ứng dụng (AP), bộ nhớ và các thiết bị ngoại vi.
Đợi VHAL
  • Khi người lái tương tác với xe (ví dụ: bằng cách mở cửa), VMCU sẽ cấp nguồn cho AP, bộ nhớ. và các thiết bị ngoại vi.
  • AAOS chuyển đổi từ một trong ba trạng thái (Tắt, Tạm dừng sang RAM (STR, Đợi VHAL Kết thúc) rồi chuyển sang Chờ VHAL, nơi nó chờ phối hợp với VHAL.
TRÊN
  • VHAL hướng dẫn AAOS chuyển sang trạng thái Bật. Ở trạng thái này, AAOS đang chạy và tương tác hoàn toàn với trình điều khiển.
  • Màn hình được kiểm soát bởi chính sách nguồn chứ không phải bởi lệnh gọi Bật/Tắt màn hình của Android cho các hệ số dạng khác.
Tắt máy Chuẩn bị
  • Khi người lái xe đã dừng lái, VHAL sẽ hướng dẫn AAOS vào Chuẩn bị tắt máy. Ở trạng thái này, màn hình và âm thanh tắt và AAOS không tương tác với trình điều khiển. Hệ thống Android vẫn đang chạy và có thể cập nhật ứng dụng cũng như hệ thống Android. Khi các bản cập nhật (nếu có) hoàn tất, hệ thống Android sẽ chuyển sang Chờ VHAL Kết thúc.
Đợi VHAL kết thúc
  • AAOS thông báo cho VHAL rằng nó có thể bị đóng cửa. Bộ vi điều khiển phương tiện (VMCU) dự kiến ​​sẽ đặt Hệ thống trên chip (SoC) vào chế độ Ngủ sâu và ngắt nguồn điện khỏi AP. Khi đó AAOS ở trạng thái STR, mặc dù không có mã nào được thực thi.
  • Nếu VHAL không kết thúc và người lái xe quay lại, bộ phận đứng đầu (HU) sẽ chuyển trực tiếp sang Chờ VHAL.
Tạm dừng RAM (STR) Xe và AP đều tắt, không có mã nào được thực thi và nguồn điện được duy trì cho RAM AP.

Kiến trúc phần mềm

Kiến trúc chính sách quyền lực được minh họa bên dưới và được xác định trong phần sau:

Hình 2. Kiến trúc chính sách quyền lực

Chính sách quyền lực được xác định như thế nào?

Người triển khai xác định chính sách quyền lực trong /vendor/etc/automotive/power_policy.xml , trong đó:

  • Xác định chính sách quyền lực.
  • Xác định các nhóm chính sách nguồn, bao gồm chính sách nguồn mặc định và được áp dụng tự động khi xảy ra chuyển đổi trạng thái nguồn.
  • Ghi đè chính sách sức mạnh của hệ thống.

Chính sách quyền lực

Chính sách nguồn là tập hợp các trạng thái nguồn dự kiến ​​của các thành phần phần cứng và phần mềm. AAOS hỗ trợ các thành phần sau trong chính sách nguồn:

  • 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

Nhóm chính sách quyền lực

Chính sách nguồn mặc định được tự động áp dụng khi chuyển đổi trạng thái nguồn được chỉ định trong nhóm chính sách nguồn. Nhà cung cấp có thể xác định chính sách nguồn mặc định cho Chờ VHAL, Bật và Chờ kết thúc VHAL (Nhập trạng thái ngủ sâu hoặc Bắt đầu tắt máy).

Chính sách sức mạnh hệ thống

AAOS chỉ hỗ trợ một chính sách sức mạnh hệ thống, đó là “không tương tác với người dùng”. Chính sách nguồn hệ thống được áp dụng khi thiết bị chuyển sang Chế độ Garage.

Hành vi của từng thành phần trong chính sách sức mạnh hệ thống được liệt kê trong bảng bên dưới. Người triển khai có thể ghi đè phát hiện Bluetooth, NFC và Thiết bị đáng tin cậy trong chính sách nguồn của hệ thống. Ghi đè được áp dụng trong /vendor/etc/power_policy.xml .

Các thành phần Trạng thái nguồn Có thể cấu hình
Âm thanh Tắt KHÔNG
Phương tiện truyền thông Tắt KHÔNG
Hiển thị chính Tắt KHÔNG
Cụm hiển thị Tắt KHÔNG
Hiển thị hành khách phía trước Tắt KHÔNG
Hiển thị hành khách phía sau Tắt KHÔNG
Bluetooth Tắt ĐÚNG
Wifi TRÊN KHÔNG
Di động TRÊN KHÔNG
Ethernet TRÊN KHÔNG
Chiếu Tắt KHÔNG
NFC Tắt ĐÚNG
Đầu vào Tắt KHÔNG
Tương tác bằng giọng nói Tắt KHÔNG
Tương tác trực quan Tắt KHÔNG
Phát hiện thiết bị đáng tin cậy TRÊN ĐÚNG
Vị trí Tắt KHÔNG
Cái mic cờ rô Tắt KHÔNG
CPU TRÊN KHÔNG

Tương tác với VHL

Daemon chính sách năng lượng ô tô chạy trong lớp hệ thống đăng ký hai thuộc tính để lắng nghe yêu cầu từ VHAL:

  • POWER_POLICY_REQ , VHAL ghi ID chính sách nguồn vào thuộc tính này.
  • POWER_POLICY_GROUP_REQ , VHAL ghi ID nhóm chính sách nguồn vào thuộc tính này.

Chính sách quyền lực hiện tại trong hệ thống có thể được thay đổi bởi các mô-đun khác ngoài VHAL. Trong trường hợp đó, daemon chính sách năng lượng ô tô sẽ cập nhật thuộc tính CURRENT_POWER_POLICY để thông báo thay đổi đối với VHAL.

Tương tác với các quy trình gốc

Như đã đề cập ở trên, daemon chính sách năng lượng ô tô chạy trong lớp hệ thống và về mặt quản lý chính sách năng lượng, cung cấp chức năng gần như giống như CPMS chạy trong lớp khung. Ngoài ra, giả sử rằng daemon chính sách năng lượng ô tô và CPMS đã được đồng bộ hóa hoàn toàn.

Trình nền chính sách năng lượng ô tô xuất giao diện AIDL để HAL và các quy trình gốc khác sử dụng. Họ có thể được thông báo khi chính sách quyền lực mới được thay đổi. Nói cách khác, khi mỗi cái phải thay đổi trạng thái sức mạnh của mình.

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

Tương tác với các mô-đun Java

CarPowerManager cung cấp các phương pháp để cho phép quản lý chính sách nguồn:

  • Nhận chính sách quyền lực hiện tại.
  • Nhận nhóm chính sách quyền lực hiện tại
  • Áp dụng chính sách quyền lực mới
  • Đặt nhóm chính sách quyền lực mới

Chỉ các mô-đun có đặc quyền của hệ thống mới có thể sử dụng các phương thức. Các mô-đun muốn được thông báo khi áp dụng chính sách nguồn có thể đăng ký trình xử lý thay đổi chính sách nguồn cho CarPowerManager .