เพื่อให้แน่ใจว่าคอมโพเนนต์ฮาร์ดแวร์และซอฟต์แวร์ (เช่น จอแสดงผล เสียง และการโต้ตอบด้วยเสียง) เลือกเปิดและปิดได้ตามต้องการ โดย AAOS ให้นโยบายการใช้พลังงานซึ่งประกอบด้วย ชุดสถานะเปิดและปิดที่คาดไว้สำหรับส่วนประกอบฮาร์ดแวร์และซอฟต์แวร์ VHAL หรือ บริการของผู้ให้บริการที่ได้รับสิทธิ์ของระบบ สามารถใช้นโยบายพลังงานใหม่เมื่อพลังงานของ Android มีสถานะ การเปลี่ยน หรือเมื่อตรงตามเงื่อนไขที่รออยู่
อนุญาตให้ใช้นโยบายการใช้พลังงานในรัฐรอ VHAL และ เปิด (บางครั้งมีข้อจำกัดบางอย่าง) ในการเตรียมปิดระบบ โหมดโรงรถกำลังทำงานและ จะไม่ถูกรบกวนจากการเปลี่ยนแปลงสถานะพลังงาน แม้ว่าไม่สามารถใช้นโยบายพลังงานปกติได้ แต่ นโยบายอำนาจพิเศษ ซึ่งเป็นนโยบายพลังงานของระบบที่ชื่อว่า "ไม่มีการโต้ตอบของผู้ใช้" นำไปใช้ใน เตรียมพร้อมสำหรับการปิดเครื่อง
สถานะพลังงานของ AAOS
อุปกรณ์ AAOS จะทำตามแผนภาพสถานะพลังงานต่อไปนี้
รูปที่ 1 แผนภาพสถานะพลังงาน AAOS
โปรดดูคำอธิบายสถานะกำลังไฟฟ้าแต่ละแบบด้านล่างนี้
ค่า | คำอธิบาย |
---|---|
ปิด |
|
รอ VHAL |
|
เปิด |
|
เตรียมปิดระบบ |
|
รอให้ VHAL เสร็จสิ้น |
|
ระงับถึง RAM (STR) |
|
ระงับสู่ดิสก์ (STD) |
|
มีการกำหนดนโยบายการใช้พลังงานอย่างไร
ผู้ติดตั้งใช้งานกำหนดนโยบายด้านกำลังไฟฟ้าใน/vendor/etc/automotive/power_policy.xml
ซึ่ง:
- กำหนดนโยบายไฟฟ้า
- กำหนดกลุ่มนโยบายพลังงาน ซึ่งประกอบด้วยนโยบายกำลังไฟฟ้าเริ่มต้นและ ใช้เมื่อมีการเปลี่ยนสถานะพลังงาน
- ลบล้างนโยบายพลังงานของระบบ
นโยบายพลังงาน
นโยบายพลังงานประกอบด้วยชุดสถานะพลังงานที่คาดหวังของส่วนประกอบฮาร์ดแวร์และซอฟต์แวร์ AAOS รองรับคอมโพเนนต์เหล่านี้ในนโยบายพลังงาน
เสียง สื่อ ดิสเพลย์ บลูทูธ |
Wi-Fi เครือข่ายมือถือ อีเทอร์เน็ต การคาดการณ์ |
NFC อินพุต การโต้ตอบด้วยเสียง การโต้ตอบด้วยภาพ |
TRUSTED_DEVICE_DETECTION สถานที่ตั้ง ไมโครโฟน CPU |
นอกจากนี้ ผู้ให้บริการยังสามารถกำหนดองค์ประกอบพลังงานที่กำหนดเองของตนเพื่อใช้กับนโยบายการใช้พลังงานได้อีกด้วย นิยาม คอมโพเนนต์พลังงานที่กำหนดเองในไฟล์ XML เดียวกับนโยบายพลังงาน ดังในตัวอย่างนี้
<customComponents>CUSTOM_COMPONENT_1000 CUSTOM_COMPONENT_SPECIAL_SENSOR CUSTOM_COMPONENT_AUX_INPUT </customComponents>
กลุ่มนโยบายพลังงาน
ระบบจะใช้นโยบายพลังงานเริ่มต้นโดยอัตโนมัติเมื่อเปลี่ยนสถานะพลังงานคือ ที่ระบุในกลุ่มนโยบายพลังงาน ผู้ให้บริการสามารถกําหนดนโยบายพลังงานเริ่มต้นสําหรับ รอ VHAL, เปิด และรอจน VHAL เสร็จสิ้น (Deep Entry หรือ Shutdown Start)
นโยบายพลังงานของระบบ
AAOS รองรับนโยบายพลังงานของระบบ 2 นโยบาย ซึ่งไม่มีการโต้ตอบของผู้ใช้ และ ระงับการเตรียมการ ระบบจะใช้นโยบายพลังงานของระบบเมื่ออุปกรณ์เข้าสู่ โหมดปิดเสียง, โหมดโรงรถ, ระงับไปยัง RAM หรือระงับไปยังดิสก์
ตารางต่อไปนี้แสดงลักษณะการทำงานของแต่ละคอมโพเนนต์ในนโยบายพลังงานของระบบ
ผู้ปฏิบัติงานสามารถลบล้างการตรวจจับบลูทูธ, NFC และอุปกรณ์ที่เชื่อถือได้ใน
นโยบายพลังงานของระบบที่ไม่มีการโต้ตอบกับผู้ใช้ ระบบจะใช้การลบล้างใน
/vendor/etc/power_policy.xml
ไม่มีการโต้ตอบของผู้ใช้
ลักษณะการทำงานของนโยบายพลังงานของระบบไม่มีการโต้ตอบของผู้ใช้ได้รับการกำหนดไว้ใน ตาราง:
คอมโพเนนต์ | สถานะพลังงาน | กำหนดค่าได้ |
---|---|---|
เสียง | ปิด | ไม่ |
สื่อ | ปิด | ไม่ |
จอแสดงผล | ปิด | ไม่ |
บลูทูธ | ปิด | ใช่ |
Wi-Fi | เปิด | ไม่ |
เครือข่ายมือถือ | เปิด | ไม่ |
อีเทอร์เน็ต | เปิด | ไม่ |
การคาดคะเน | ปิด | ไม่ |
NFC | ปิด | ใช่ |
อินพุต | ปิด | ไม่ |
Assistant | ปิด | ไม่ |
การโต้ตอบของผู้ใช้ | ปิด | ไม่ |
การตรวจหาอุปกรณ์ที่เชื่อถือสำหรับการเข้าสู่ระบบของผู้ใช้ | เปิด | ใช่ |
ตำแหน่ง | ปิด | ไม่ |
ไมโครโฟน | ปิด | ไม่ |
CPU | เปิด | ไม่ |
การระงับการเตรียมพร้อม
ลักษณะการทำงานของนโยบายกำลังของระบบการเตรียมระงับมีคำจำกัดความในตารางนี้
ส่วนประกอบ | สถานะพลังงาน | กำหนดค่าจาก OEM ได้ |
---|---|---|
เสียง | ปิด | ไม่ |
สื่อ | ไม่มี | ไม่ |
จอแสดงผล | ไม่มี | ไม่ |
บลูทูธ | ปิด | ไม่ |
Wi-Fi | ปิด | ไม่ |
เครือข่ายมือถือ | ไม่มี | ไม่ |
อีเทอร์เน็ต | ไม่มี | ไม่ |
การคาดคะเน | ไม่มี | ไม่ |
NFC | ไม่มี | ไม่ |
อินพุต | ไม่มี | ไม่ |
Assistant | ไม่มี | ไม่ |
การโต้ตอบของผู้ใช้ | ไม่มี | ไม่ |
การตรวจหาอุปกรณ์ที่เชื่อถือสำหรับการเข้าสู่ระบบของผู้ใช้ | ไม่มี | ไม่ |
ตำแหน่ง | ปิด | ไม่ |
ไมโครโฟน | ปิด | ไม่ |
CPU | ปิด | ไม่ |
การโต้ตอบกับ VHAL
Daemon ของนโยบายพลังงานในรถยนต์ที่ทำงานอยู่ในเลเยอร์ระบบสมัครใช้บริการพร็อพเพอร์ตี้ 2 รายการเพื่อฟัง คำขอจาก VHAL:
POWER_POLICY_REQ
VHAL จะเขียนรหัสนโยบายพลังงานไปยังพร็อพเพอร์ตี้นี้POWER_POLICY_GROUP_REQ
VHAL เขียนรหัสกลุ่มนโยบายพลังงาน มาที่พร็อพเพอร์ตี้นี้
นโยบายกำลังไฟฟ้าปัจจุบันในระบบสามารถเปลี่ยนได้โดยโมดูลนอกเหนือจาก VHAL ในกรณีดังกล่าว
Daemon ของนโยบายพลังงานในรถยนต์จะอัปเดตพร็อพเพอร์ตี้ CURRENT_POWER_POLICY
เพื่อแจ้ง
เปลี่ยนเป็น VHAL
การโต้ตอบกับกระบวนการดั้งเดิม
ดังที่กล่าวไว้ข้างต้น Daemon ของนโยบายพลังงานของรถยนต์จะทำงานในเลเยอร์ของระบบและในแง่ของกำลังไฟฟ้า การจัดการนโยบายมีฟังก์ชันการทำงานแทบจะเหมือนกับ CPMS ที่ทำงานในเลเยอร์ของเฟรมเวิร์ก และสมมติว่า Daemon ของนโยบายพลังงานของรถยนต์และ CPMS ซิงค์กันเรียบร้อยแล้ว
Daemon ในนโยบายพลังงานของรถยนต์จะส่งออกอินเทอร์เฟซ AIDL เพื่อใช้งานโดย HAL และกระบวนการดั้งเดิมอื่นๆ และจะได้รับการแจ้งเตือนเมื่อมีการเปลี่ยนแปลงนโยบายการใช้พลังงานใหม่ กล่าวคือ เมื่อใดที่คุณต้องเปลี่ยน สถานะพลังงาน
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. * @throws IllegalStateException if the current policy is not set. */ 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. * @throws IllegalArgumentException if the componentId is invalid. */ 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. * @throws IllegalArgumentException if the callback is already registered. * @throws IllegalStateException if the callback is dead. */ 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. * @throws IllegalArgumentException if the callback is not registered. */ void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback); /** * Applies the power policy. * *{@code policyId} should be one of power policy IDs defined in * {@code /vendor/etc/automotive/power_policy.xml} or predefined system power policies. * * @param policyId ID of power policy. * @throws IllegalArgumentException if {@code policyId} is invalid. */ void applyPowerPolicy(in @utf8InCpp String policyId); /** * Sets the current power policy group. * *
{@code policyGroupId} should be one of power policy group IDs defined in * {@code /vendor/etc/automotive/power_policy.xml}. * * @param policyGroupId ID of power policy group. * @throws IllegalArgumentException if {@code policyGroupId} is invalid. */ void setPowerPolicyGroup(in @utf8InCpp String policyGroupId); }
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
CarPowerManager
มีวิธีเปิดใช้การจัดการนโยบายพลังงาน ดังนี้
- รับนโยบายการใช้พลังงานปัจจุบัน
- ใช้นโยบายด้านพลังงานใหม่
- ตั้งกลุ่มนโยบายพลังงานใหม่
มีเพียงโมดูลที่ได้รับสิทธิ์ของระบบเท่านั้นที่ใช้เมธอดได้ โมดูลที่ต้องการเป็น
ทราบเมื่อมีการนำนโยบายพลังงานไปใช้ จะสามารถลงทะเบียน Listener การเปลี่ยนนโยบายพลังงาน
CarPowerManager