Quản lý nguồn

Để hỗ trợ quản lý năng lượng dành riêng cho xe, Android cung cấp dịch vụ CarPowerManagementService và giao diện CarPowerManager .

Việc chuyển đổi trạng thái được kích hoạt bởi Bộ điều khiển chính phương tiện (VMCU). Để giao tiếp với VMCU, các nhà tích hợp phải triển khai một số thành phần. Các nhà tích hợp chịu trách nhiệm tích hợp với lớp trừu tượng phần cứng Xe (VHAL) và triển khai kernel. Các nhà tích hợp cũng chịu trách nhiệm vô hiệu hóa các nguồn đánh thức và đảm bảo rằng việc tắt máy không bị trì hoãn vô thời hạn.

Thuật ngữ

Các thuật ngữ này được sử dụng xuyên suốt tài liệu này:

bộ xử lý ứng dụng (AP)
Một phần của hệ thống trên chip (SoC) .
Gói hỗ trợ bo mạch (BSP)
Lớp phần mềm chứa chương trình cơ sở khởi động dành riêng cho phần cứng và trình điều khiển thiết bị cho phép hệ điều hành nhúng hoạt động trong môi trường phần cứng nhất định (bo mạch chủ), được tích hợp với hệ điều hành nhúng.
Trình quản lý CarPower (CPM)
Hiển thị API để ứng dụng đăng ký thay đổi trạng thái nguồn.
Dịch vụ quản lý năng lượng ô tô (CPMS)
Triển khai máy trạng thái nguồn điện ô tô, giao tiếp với VHAL và thực hiện các lệnh gọi cuối cùng tới suspend()shutdown() .
CarPowerPolicyDaemon (CPPD)
Hiển thị giao diện AIDL cho các quy trình gốc để đăng ký trình nghe chính sách nguồn.
đầu vào hoặc đầu ra cho mục đích chung (GPIO)
Một chân tín hiệu kỹ thuật số để sử dụng cho mục đích chung.
lớp trừu tượng phần cứng (HAL)
Một lớp phần mềm mà tất cả các mô-đun cấp cao hơn khác phải tương tác để truy cập chức năng phần cứng.
ngủ đông
Còn được gọi là Tạm dừng vào đĩa (S2D/S4). SoC được đặt ở chế độ nguồn S4 (ngủ đông) và nội dung RAM được ghi vào phương tiện không ổn định (như flash hoặc đĩa) và toàn bộ hệ thống sẽ tắt nguồn.
bộ xử lý đa phương tiện (MP)
Xem hệ thống trên chip (SoC) .
mạch tích hợp quản lý năng lượng (PMIC)
Chip dùng để quản lý các yêu cầu về điện năng cho hệ thống máy chủ.
hệ thống trên chip (SoC)
Bộ xử lý chính chạy AAOS, thường được cung cấp bởi các nhà sản xuất như Intel, MediaTek, Nvidia, Qualcomm, Renesas và Texas Instruments.
đình chỉ
Còn được gọi là Tạm dừng vào RAM (S2R hoặc STR). SoC được đặt ở chế độ nguồn S3 và CPU tắt trong khi RAM vẫn bật.
Xe HAL (VHAL)
API Android được sử dụng để giao tiếp với mạng xe. Đối tác Cấp 1 hoặc OEM chịu trách nhiệm viết mô-đun này. Mạng phương tiện có thể sử dụng bất kỳ lớp vật lý nào (chẳng hạn như CAN, LIN, MOST và Ethernet). VHAL tóm tắt mạng phương tiện này để cho phép AAOS tương tác với phương tiện.
Bộ xử lý giao diện xe (VIP)
Xem MCU xe.
Bộ điều khiển chính phương tiện (VMCU)
Bộ vi điều khiển cung cấp giao diện giữa mạng xe và SoC. SoC giao tiếp với VMCU thông qua tín hiệu USB, UART, SPI và GPIO.

Thiết kế hệ thống

Phần này mô tả cách AAOS thể hiện trạng thái nguồn của bộ xử lý ứng dụng và mô-đun nào triển khai hệ thống quản lý nguồn. Tài liệu này cũng mô tả cách các mô-đun này hoạt động cùng nhau và cách chuyển đổi trạng thái thường xảy ra.

Máy trạng thái điện ô tô

AAOS sử dụng máy trạng thái để thể hiện trạng thái nguồn của AP. Máy trạng thái cung cấp các trạng thái được minh họa dưới đây:

Máy trạng thái điện ô tô

Hình 1. Máy trạng thái điện ô tô.

Các hiệu ứng chuyển tiếp phổ biến nhất được đánh dấu bằng màu xanh lam. Đây là các trạng thái và chuyển tiếp phổ biến:

  • Tạm dừng RAM. Chiếc xe và SoC đã tắt. Không có mã nào đang được thực thi. Nguồn được duy trì cho RAM SoC.
  • Đợi VHAL. Ví dụ: khi người lái tương tác với phương tiện bằng cách mở cửa, VMCU sẽ cấp nguồn cho SoC. AAOS tiếp tục hoạt động từ Tạm dừng RAM và chuyển sang Chờ VHAL, nơi nó chờ phối hợp với VHAL.
  • TRÊN. VHAL yêu cầu 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.
  • Tắt máy Chuẩn bị. Khi người lái xe lái xe xong, VHAL yêu cầu 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 cập nhật ứng dụng cũng như hệ thống Android miễn phí. 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. Tại thời điểm này, AAOS thông báo cho VHAL rằng nó đã sẵn sàng ngừng hoạt động. VMCU dự kiến ​​sẽ đặt SoC ở chế độ Ngủ sâu và ngắt nguồn điện khỏi bộ xử lý ứng dụng. Khi đó AAOS ở trạng thái Tạm dừng vào RAM, mặc dù không có mã nào được thực thi.

Mô-đun quản lý nguồn

Hệ thống quản lý năng lượng bao gồm các mô-đun sau:

Tên mô-đun Sự miêu tả
Trình quản lý năng lượng xe hơi API Java hoặc C++.
XePowerQuản lýDịch vụ Phối hợp các chuyển đổi trạng thái năng lượng.
CarPowerPolicyDaemon Giao tiếp với các khách hàng chính sách năng lượng bản địa.
Xe HAL Giao diện với VMCU.
hạt nhân Tạm dừng triển khai RAM hoặc đĩa.

Tính năng ngủ sâu/ngủ đông (tạm dừng Android vào RAM/đĩa) được triển khai trong kernel. Tính năng này được hiển thị trong không gian người dùng dưới dạng một tệp đặc biệt nằm ở /sys/power/state . AAOS bị đình chỉ bằng cách ghi mem hoặc disk vào tệp này.

CPMS phối hợp trạng thái nguồn với các dịch vụ khác và HAL. CPMS triển khai máy trạng thái được mô tả ở trên và gửi thông báo đến mọi người quan sát khi xảy ra quá trình chuyển đổi trạng thái nguồn. Dịch vụ này cũng sử dụng VHAL để gửi tin nhắn đến phần cứng.

CPPD quản lý chính sách năng lượng cho đến khi CPMS nắm quyền kiểm soát. Nó cũng gửi thông báo thay đổi chính sách quyền lực tới người nghe bản địa.

Một số thuộc tính được định nghĩa trong VHAL. Để giao tiếp với VMCU, CPMS đọc và ghi các thuộc tính này. ứng dụng có thể sử dụng giao diện được xác định trong CPM để theo dõi các thay đổi trạng thái nguồn. Giao diện này cũng cho phép các ứng dụng đăng ký trình nghe chính sách nguồn . API này có thể được gọi từ Java và được chú thích bằng @hide / @System API, nghĩa là nó chỉ khả dụng cho các ứng dụng đặc quyền . Mối quan hệ giữa các mô-đun, ứng dụng và dịch vụ này được minh họa bên dưới:

Sơ đồ tham khảo các thành phần nguồn

Hình 2. Sơ đồ tham khảo các thành phần nguồn.

Chuỗi tin nhắn

Phần trước đã mô tả các mô-đun bao gồm hệ thống quản lý nguồn. Phần này sử dụng các ví dụ vào giấc ngủ sâuthoát khỏi giấc ngủ sâu để giải thích cách các mô-đun và ứng dụng giao tiếp với nhau:

Đi vào giấc ngủ sâu

Chỉ VMCU mới có thể bắt đầu giấc ngủ sâu. Khi chế độ ngủ sâu được bắt đầu, VMCU sẽ gửi thông báo đến CPMS thông qua VHAL. CPMS thay đổi trạng thái thành SHUTDOWN PREPARE và phát sóng quá trình chuyển đổi trạng thái này tới tất cả người quan sát (ứng dụng và dịch vụ giám sát CPMS) bằng cách gọi phương thức onStateChanged() với ID trạng thái mới do CPM cung cấp.

CPM làm trung gian giữa ứng dụng/dịch vụ và CPMS. Phương thức onStateChanged() cho ứng dụng/dịch vụ được gọi đồng bộ trong phương thức onStateChanged() của CPM. Hầu hết các ứng dụng và dịch vụ đều phải hoàn tất quá trình chuẩn bị trước khi quay lại sau cuộc gọi này. Các dịch vụ đặc quyền được phép tiếp tục quá trình chuẩn bị không đồng bộ sau khi quay lại PRE_SHUTDOWN_PREPARE , SUSPEND_ENTER , POST_SUSPEND_ENTER . Trong trường hợp này, dịch vụ đặc quyền có nhiệm vụ gọi Complete() trên đối tượng CompletablePowerStateChangeFuture được cung cấp khi hoàn tất quá trình chuẩn bị. Lưu ý rằng việc chuẩn bị không đồng bộ không được phép cho SHUTDOWN_PREPARE . Trước khi DEEP_SLEEP_ENTRY được gửi tới VHAL, CPMS định kỳ gửi yêu cầu hoãn tắt máy tới VHAL.

Khi tất cả các đối tượng CPM đã hoàn tất việc chuẩn bị tắt máy, CPMS sẽ gửi AP_POWER_STATE_REPORT tới VHAL, sau đó thông báo cho VMCU rằng AP đã sẵn sàng tạm dừng. CPMS cũng gọi phương thức tạm dừng của nó, phương thức này tạm dừng kernel.

Trình tự được mô tả ở trên được minh họa dưới đây:

Đi vào giấc ngủ sâu

Hình 3. Đi vào giấc ngủ sâu.

Giao diện lập trình do CPM cung cấp

Phần này mô tả API Java do CPM cung cấp cho các ứng dụng và dịch vụ hệ thống. API này cho phép phần mềm hệ thống:

  • Giám sát sự thay đổi trạng thái nguồn trong AP.
  • Áp dụng chính sách quyền lực

Hãy sử dụng các bước sau để gọi các API do CPM cung cấp:

  1. Để có được phiên bản CPM, hãy gọi API ô tô.
  2. Gọi phương thức thích hợp trên đối tượng được tạo ở Bước 1.

Tạo đối tượng CarPowerManager

Để tạo đối tượng CPM, hãy gọi phương thức getCarManager() của đối tượng Xe hơi. Phương thức này là một mặt tiền được sử dụng để tạo các đối tượng CPM. Chỉ định android.car.Car.POWER_SERVICE làm đối số để tạo đối tượng CPM.

Car car = Car.createCar(this);
CarPowerManager powerManager =
  (CarPowerManager) car.getCarManager(android.car.Car.POWER_SERVICE);

CarPowerStateListener và đăng ký

Các ứng dụng và dịch vụ hệ thống có thể nhận thông báo thay đổi trạng thái nguồn bằng cách triển khai CarPowerManager.CarPowerStateListener . Giao diện này xác định một phương thức onStateChanged() , là hàm gọi lại được gọi khi trạng thái nguồn của CPMS bị thay đổi. Ví dụ sau định nghĩa một lớp ẩn danh mới triển khai giao diện:

private final CarPowerManager.CarPowerStateListener powerListener =
  new CarPowerManager.CarPowerStateListener () {
    @Override
     public void onStateChanged(int state) {
       Log.i(TAG, "onStateChanged() state = " + state);
     }
};

Để hướng dẫn đối tượng trình nghe này giám sát quá trình chuyển đổi trạng thái nguồn, hãy tạo một luồng thực thi mới và đăng ký trình nghe và luồng này với đối tượng CPM:

executor = new ThreadPerTaskExecutor();
powerManager.setListener(powerListener, executor);

Khi trạng thái nguồn được thay đổi, phương thức onStateChanged() của đối tượng người nghe sẽ được gọi với một giá trị để biểu thị trạng thái nguồn mới. Mối liên hệ giữa giá trị thực và trạng thái nguồn được xác định trong CarPowerManager và được hiển thị trong bảng sau:

Tên Sự miêu tả
STATE_ON Nhập trạng thái bật. Hệ thống đã hoạt động đầy đủ.
STATE_SHUTDOWN_CANCELLED Việc tắt máy bị hủy và trạng thái nguồn được đưa về trạng thái bình thường.
STATE_SHUTDOWN_ENTER các ứng dụng dự kiến ​​​​sẽ dọn dẹp và sẵn sàng tắt.
STATE_POST_SHUTDOWN_ENTER Công tác chuẩn bị đóng cửa đã hoàn tất và VMCU đã sẵn sàng đóng cửa. Nhập trạng thái tắt máy.
STATE_PRE_SHUTDOWN_PREPARE Quá trình tắt máy được yêu cầu nhưng CPMS chưa bắt đầu quá trình. Màn hình và âm thanh vẫn bật
STATE_SHUTDOWN_PREPARE Chế độ Gara có thể chạy trong thời gian này.
STATE_SUSPEND_ENTER các ứng dụng dự kiến ​​​​sẽ dọn dẹp và sẵn sàng tạm dừng RAM.
STATE_POST_SUSPEND_ENTER Quá trình chuẩn bị cho việc tạm dừng RAM đã hoàn tất và VMCU đã sẵn sàng cho việc tạm dừng RAM. Nhập trạng thái tạm dừng.
STATE_SUSPEND_EXIT Thức dậy sau khi tạm dừng hoặc tiếp tục sau khi tạm dừng bị hủy.
STATE_HIBERNATION_ENTER các ứng dụng dự kiến ​​sẽ dọn dẹp và sẵn sàng cho chế độ ngủ đông.
STATE_POST_HIBERNATION_ENTER Quá trình chuẩn bị cho chế độ ngủ đông đã hoàn tất và VMCU đã sẵn sàng cho chế độ ngủ đông Chuyển sang trạng thái ngủ đông.
STATE_HIBERNATION_EXIT Thức dậy sau chế độ ngủ đông hoặc tiếp tục sau chế độ ngủ đông bị hủy.
STATE_WAIT_FOR_VHAL Hệ thống đang khởi động nhưng đang chờ thiết lập liên lạc với VHAL trước khi chuyển sang trạng thái BẬT.

Hủy đăng ký CarPowerStateListener

Để hủy đăng ký tất cả các đối tượng người nghe đã đăng ký CPM, hãy gọi phương thức clearListener :

powerManager.clearListener();

Tích hợp hệ thống khi triển khai Android của bạn

Các nhà tích hợp chịu trách nhiệm về các mục sau:

  • Triển khai giao diện kernel để tạm dừng Android.
  • Triển khai các chức năng VHAL để:
    • Tuyên truyền việc bắt đầu tạm dừng hoặc tắt máy từ ô tô sang Android.
    • Gửi tin nhắn sẵn sàng tắt máy từ Android tới ô tô.
    • Bắt đầu tắt hoặc tạm dừng Android thông qua giao diện nhân Linux.
  • Đảm bảo rằng tất cả các nguồn đánh thức đều bị tắt khi thiết bị ở trạng thái tạm dừng.
  • Đảm bảo rằng các ứng dụng tắt đủ nhanh để không trì hoãn quá trình tắt máy vô thời hạn.
  • Đảm bảo rằng BSP bật (hoặc tắt) các thành phần thiết bị theo chính sách nguồn để không chặn trạng thái tạm dừng hoặc ngủ đông

Giao diện hạt nhân: /sys/power/state

AAOS đặt thiết bị vào chế độ tạm dừng khi một ứng dụng hoặc dịch vụ ghi mem để tạm dừng vào RAM hoặc ghi nhớ vào disk để tạm dừng vào đĩa vào một tệp nằm ở /sys/power/state . Nhà tích hợp phải cung cấp chức năng giám sát tệp này và đưa Linux vào trạng thái tạm dừng. Chức năng này có thể gửi GPIO tới VMCU để thông báo cho VMCU rằng thiết bị đã tắt hoàn toàn. Nhà tích hợp cũng chịu trách nhiệm loại bỏ mọi điều kiện tương tranh giữa việc VHAL gửi thông báo cuối cùng tới VMCU và hệ thống chuyển sang chế độ tạm dừng hoặc tắt máy.

trách nhiệm VHAL

VHAL cung cấp giao diện giữa mạng xe và Android. VHL:

  • Tuyên truyền việc bắt đầu tạm dừng hoặc tắt máy từ ô tô sang Android.
  • Gửi thông báo sẵn sàng tắt máy từ Android tới ô tô.
  • Bắt đầu tắt hoặc tạm dừng Android thông qua giao diện nhân Linux.

Khi CPMS thông báo cho VHAL rằng nó đã sẵn sàng tắt, VHAL sẽ gửi thông báo sẵn sàng tắt tới VMCU. Thông thường, các thiết bị ngoại vi trên chip như UART, SPI và USB sẽ truyền tin nhắn. Sau khi tin nhắn được gửi đi, CPMS gọi lệnh kernel để tạm dừng hoặc tắt thiết bị. Trước khi làm như vậy, VHAL hoặc BSP có thể chuyển đổi GPIO để hướng dẫn VMCU rằng việc ngắt nguồn khỏi thiết bị là an toàn.

VHAL phải hỗ trợ các thuộc tính sau để kiểm soát việc quản lý nguồn thông qua VHAL:

Tên Sự miêu tả
AP_POWER_STATE_REPORT Android báo cáo các chuyển đổi trạng thái sang VMCU bằng thuộc tính này, sử dụng các giá trị enum VehicleApPowerStateReport.
AP_POWER_STATE_REQ VMCU sử dụng thuộc tính này để hướng dẫn Android chuyển sang các trạng thái nguồn khác nhau bằng cách sử dụng các giá trị enum VehicleApPowerStateReq.

AP_POWER_STATE_REPORT

Sử dụng thuộc tính này để báo cáo trạng thái quản lý nguồn hiện tại của Android. Thuộc tính này chứa hai số nguyên:

  • int32Values[0] : VehicleApPowerStateReport enum của trạng thái hiện tại.
  • int32Values[1] : Thời gian tính bằng mili giây để trì hoãn hoặc ngủ hoặc tắt máy. Ý nghĩa của giá trị này phụ thuộc vào giá trị đầu tiên.

Giá trị đầu tiên có thể nhận một trong các giá trị sau. VehicleApPowerStateReport.aidl chứa các mô tả cụ thể hơn, được lưu trữ trong hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle .

Tên giá trị Sự miêu tả Giá trị thứ hai
WAIT_FOR_VHAL AP đang bắt đầu và cần thiết lập liên lạc với VHAL.
DEEP_SLEEP_ENTRY AP đang bước vào trạng thái ngủ sâu. VMCU sẽ bật lại AP sau thời gian được chỉ định trong giá trị thứ hai. Phải được thiết lập
DEEP_SLEEP_EXIT AP đang thoát khỏi trạng thái ngủ sâu.
HIBERNATION_ENTRY AP đang bước vào trạng thái ngủ đông. VMCU sẽ bật lại AP sau thời gian được chỉ định trong giá trị thứ hai. Phải được thiết lập
HIBERNATION_EXIT AP đang thoát khỏi trạng thái ngủ đông.
SHUTDOWN_POSTPONE Android chưa sẵn sàng để tắt. VMCU phải đợi thời gian được chỉ định trong giá trị thứ hai trước khi tắt AP. Android có thể yêu cầu hoãn thêm bằng cách đưa ra báo cáo SHUTDOWN_POSTPONE bổ sung. Phải được thiết lập
SHUTDOWN_PREPARE Android đang chuẩn bị ngừng hoạt động. Phải được thiết lập
SHUTDOWN_START AP đã sẵn sàng để tắt. VMCU sẽ bật lại AP sau thời gian được chỉ định trong giá trị thứ hai. (VMCU không bắt buộc phải hỗ trợ tính năng bật theo thời gian.) Phải được thiết lập
SHUTDOWN_CANCELLED Android sắp ngừng chuẩn bị tắt và sẽ tiến tới WAIT_FOR_VHAL.
TRÊN Android đang chạy bình thường.

Trạng thái có thể được đặt tự động hoặc đáp ứng yêu cầu thông qua VMCU.

AP_POWER_STATE_REQ

Thuộc tính này được VMCU gửi để chuyển Android sang trạng thái nguồn khác và chứa hai số nguyên:

  • int32Values[0] : Giá trị enum VehicleApPowerStateReq , đại diện cho trạng thái mới cần chuyển đổi.
  • int32Values[1] : Giá trị enum VehicleApPowerStateShutdownParam . Giá trị này chỉ được gửi cho thông báo SHUTDOWN_PREPARE và truyền tới Android các tùy chọn có trong đó.

Giá trị số nguyên đầu tiên biểu thị trạng thái mới mà Android sẽ chuyển sang. Ngữ nghĩa được xác định trong VehicleApPowerStateReq.aidl và được cung cấp bên dưới:

Tên giá trị Sự miêu tả
TRÊN AP sẽ bắt đầu hoạt động đầy đủ.
SHUTDOWN_PREPARE AP nên chuẩn bị tắt máy. Giá trị thứ hai cho biết liệu AP có được phép trì hoãn việc tắt máy hay không và liệu AP sẽ tắt nguồn hay chuyển sang chế độ ngủ sâu.
CANCEL_SHUTDOWN AP nên dừng việc chuẩn bị tắt và chuẩn bị BẬT.
HOÀN THÀNH AP bây giờ sẽ bị tắt hoặc bị đình chỉ.

VehicleApPowerStateShutdownParam được định nghĩa trong VehicleApPowerStateShutdownParam.aidl . Enum này có các yếu tố sau:

Tên giá trị Sự miêu tả
CO THE NGU AP có thể chuyển sang chế độ ngủ sâu thay vì tắt hoàn toàn. Việc trì hoãn được cho phép.
CAN_HIBERNATE AP có thể chuyển sang chế độ ngủ đông thay vì tắt hoàn toàn. Việc trì hoãn được cho phép.
CHỈ TẮT_TẮT AP nên tắt. Việc trì hoãn được cho phép. Ngủ sâu không được phép.
NGỦ_ NGAY LẬP TỨC AP có thể chuyển sang trạng thái ngủ sâu nhưng phải ngủ hoặc tắt ngay lập tức. Việc trì hoãn là không được phép.
HIBERNATE_ NGAY LẬP TỨC AP có thể chuyển sang trạng thái tạm dừng vào đĩa nhưng phải ở chế độ ngủ đông hoặc tắt ngay lập tức. Việc trì hoãn là không được phép.
TẮT TẮT_ NGAY LẬP TỨC AP phải tắt ngay lập tức. Trì hoãn là không được phép. Ngủ sâu không được phép.

Nguồn đánh thức

Nhà tích hợp phải tắt các nguồn đánh thức thích hợp khi thiết bị ở chế độ treo. Các nguồn đánh thức phổ biến bao gồm nhịp tim, modem, Wi-Fi và Bluetooth. Nguồn đánh thức hợp lệ duy nhất phải là ngắt từ VMCU để đánh thức SoC. Điều này giả định rằng VMCU có thể nghe modem để biết các sự kiện đánh thức từ xa (chẳng hạn như khởi động động cơ từ xa). Nếu chức năng này được đẩy tới AP thì phải thêm một nguồn đánh thức khác để phục vụ modem.

Ứng dụng

Các OEM phải cẩn thận khi viết ứng dụng để có thể tắt chúng nhanh chóng và không trì hoãn quá trình vô thời hạn.

ruột thừa

Các thư mục trong cây mã nguồn

Nội dung Danh mục
Mã liên quan đến CarPowerManager. packages/services/Car/car-lib/src/android/car/hardware/power
Dịch vụ quản lý CarPower, v.v. packages/services/Car/service/src/com/android/car/power
Các dịch vụ liên quan đến VHAL, chẳng hạn như VehicleHalHAlClient . packages/services/Car/service/src/com/android/car/hal
Giao diện VHAL và định nghĩa thuộc tính. hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle/
Ứng dụng mẫu để cung cấp một số ý tưởng về CarPowerManager packages/services/Car/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink

Sơ đồ lớp

Sơ đồ lớp này hiển thị các lớp và giao diện Java trong hệ thống quản lý nguồn:

Sơ đồ lớp năng lượng

Hình 4. Sơ đồ lớp công suất.

Mối quan hệ đối tượng

Hình 5 minh họa những đối tượng nào có tham chiếu đến các đối tượng khác. Một cạnh có nghĩa là đối tượng nguồn giữ một tham chiếu đến đối tượng đích. Ví dụ: VehicleHAL có tham chiếu đến đối tượng PropertyHalService.

Sơ đồ tham chiếu đối tượng

Hình 5. Sơ đồ tham chiếu đối tượng.