Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

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ư hiển thị, âm thanh và tương tác bằng 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à chúng đang chờ được đáp ứng.

Việc áp dụng chính sách nguồn được cho phép ở các trạng thái Chờ VHAL và Bật. Trong Chuẩn bị tắt máy, Chế độ ga-ra đ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 nguồn thông thường, nhưng một chính sách nguồn đặc biệt , là chính sách nguồn hệ thống có tên là “không có sự tương tác của người dùng”, đượ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 nguồn được mô tả dưới đây:

Giá trị Sự mô tả
Tắt Không có nguồn nào được cung cấp vật lý cho bộ xử lý ứng dụng (AP), bộ nhớ và thiết bị ngoại vi.
Chờ VHAL
  • Khi người lái xe 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à 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 vào RAM (STR, Chờ kết thúc VHAL) và sau đó vào 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 hoàn toàn đang chạy và tương tác 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 Android đối với các hệ số dạng khác.
Chuẩn bị tắt máy
  • Khi tài xế dừng lái, VHAL hướng dẫn AAOS vào chế độ 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 các ứng dụng và hệ thống Android. Khi quá trình cập nhật (nếu có) được hoàn tất, hệ thống Android sẽ chuyển sang chế độ Chờ kết thúc VHAL.
Chờ VHAL kết thúc
  • AAOS thông báo cho VHAL rằng nó có thể bị tắt. Bộ vi điều khiển xe (VMCU) dự kiến ​​sẽ đặt Hệ thống trên chip (SoC) vào chế độ Ngủ sâu và loại bỏ nguồn điện khỏi AP. AAOS sau đó ở 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à trình điều khiển quay trở lại, thiết bị đầu (HU) sẽ chuyển trực tiếp sang Chờ VHAL.
Tạm ngưng vào RAM (STR) Phương tiện và AP đang tắt, không có mã nào đang được thực thi và nguồn điện được duy trì cho AP RAM.

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 định nghĩa 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 định nghĩa như thế nào?

Người triển khai xác định các 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 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 nguồn hệ thống.

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

Chính sách nguồn là một 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 chế độ ngủ sâu hoặc Khởi động 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 cấp nguồn của hệ thống, đó là “không có sự tương tác của 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ế độ im lặng hoặc Chế độ ga ra.

Hoạt động của từng thành phần trong chính sách nguồn hệ thống được liệt kê trong bảng dưới đây. 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 hệ thống. Ghi đè được áp dụng trong /vendor/etc/power_policy.xml .

Các thành phần Trạng thái quyền lực 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 VÂNG
Wifi TRÊN Không
Di động TRÊN Không
Ethernet TRÊN Không
Phép chiếu Tắt Không
NFC Tắt VÂ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 VÂNG
Địa điểm Tắt Không
Cái mic cờ rô Tắt Không
CPU Trên Không

Tương tác với VHAL

Daemon chính sách nguồn ô tô chạy trong lớp hệ thống đăng ký hai thuộc tính để lắng nghe các 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 nguồn 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 nguồn ô tô 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 nguồn xe chạy trong lớp hệ thống và về mặt quản lý chính sách nguồn, cung cấp chức năng gần giống như CPMS chạy trong lớp khung. Ngoài ra, giả sử rằng daemon chính sách điện trên ô tô và CPMS đã được đồng bộ hóa hoàn toàn.

Daemon chính sách nguồn xe hơi 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 bên phải thay đổi trạng thái quyền lực 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 điện 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 một nhóm chính sách quyền lực mới

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