เพื่อรองรับการจัดการพลังงานเฉพาะยานพาหนะ Android ให้บริการ CarPowerManagementService
และอินเทอร์เฟซ CarPowerManager
การเปลี่ยนสถานะจะถูกกระตุ้นโดยหน่วยควบคุมหลักยานพาหนะ (VMCU) ในการสื่อสารกับ VMCU ผู้รวมระบบต้องใช้องค์ประกอบหลายอย่าง ผู้ประกอบมีหน้าที่รับผิดชอบในการบูรณาการกับ Vehicle hardware abstraction layer (VHAL) และการใช้งานเคอร์เนล ผู้รวมระบบยังรับผิดชอบในการปิดใช้งานแหล่งที่มาของการปลุกและทำให้มั่นใจว่าการปิดระบบจะไม่เลื่อนออกไปอย่างไม่มีกำหนด
คำศัพท์เฉพาะทาง
มีการใช้ข้อกำหนดเหล่านี้ตลอดทั้งเอกสารนี้:
suspend()
และ shutdown()
การออกแบบระบบ
ส่วนนี้อธิบายว่า AAOS แสดงถึงสถานะพลังงานของโปรเซสเซอร์แอปอย่างไร และโมดูลใดบ้างที่ใช้ระบบการจัดการพลังงาน เอกสารนี้ยังอธิบายถึงวิธีที่โมดูลเหล่านี้ทำงานร่วมกัน และการเปลี่ยนแปลงสถานะโดยทั่วไปเกิดขึ้นได้อย่างไร
เครื่องสถานะกำลังรถยนต์
AAOS ใช้ เครื่องสถานะ เพื่อแสดงสถานะพลังงานของ AP เครื่องสถานะจะแสดงสถานะที่แสดงด้านล่าง:
รูปที่ 1 เครื่องสถานะกำลังไฟรถยนต์
การเปลี่ยนภาพที่พบบ่อยที่สุดจะถูกเน้นด้วยสีน้ำเงิน เหล่านี้คือสถานะและการเปลี่ยนแปลงทั่วไป:
- ระงับการ RAM ยานพาหนะและ SoC ปิดอยู่ ไม่มีการดำเนินการโค้ด พลังงานยังคงอยู่ที่ SoC RAM
- รอ VHAL ครับ เมื่อคนขับโต้ตอบกับยานพาหนะ เช่น โดยการเปิดประตู VMCU จะจ่ายไฟให้กับ SoC AAOS ดำเนินการต่อจาก Suspend-to-RAM และเข้าสู่ Wait for VHAL โดยที่รอการประสานงานกับ VHAL
- บน. VHAL บอกให้ AAOS เข้าสู่สถานะเปิด ในสถานะนี้ AAOS กำลังทำงานและโต้ตอบกับไดรเวอร์โดยสมบูรณ์
- เตรียมปิดเครื่อง. เมื่อผู้ขับขี่ขับรถเสร็จแล้ว VHAL จะบอก AAOS ให้เข้าสู่ Shutdown Preparation ในสถานะนี้ จอแสดงผลและเสียงจะปิดอยู่ และ AAOS จะไม่โต้ตอบกับไดรเวอร์ ระบบ Android ยังคงทำงานอยู่และสามารถอัปเดตแอปและระบบ Android ได้ฟรี เมื่อการอัปเดตเสร็จสิ้น (ถ้ามี) ระบบ Android จะเข้าสู่ Wait for VHAL Finish
- รอจนเสร็จสิ้น VHAL ณ จุดนี้ AAOS แจ้งให้ VHAL ทราบว่าพร้อมที่จะปิดระบบแล้ว VMCU คาดว่าจะวาง SoC ไว้ใน Deep Sleep และจะถอดพลังงานออกจากโปรเซสเซอร์แอป AAOS จะอยู่ในสถานะ Suspend-to-RAM แม้ว่าจะไม่มีการเรียกใช้โค้ดก็ตาม
โมดูลการจัดการพลังงาน
ระบบการจัดการพลังงานประกอบด้วยโมดูลเหล่านี้:
ชื่อโมดูล | คำอธิบาย |
---|---|
คาร์พาวเวอร์เมเนเจอร์ | Java หรือ C++ API |
บริการการจัดการพลังงานรถยนต์ | ประสานการเปลี่ยนสถานะพลังงาน |
CarPowerPolicyDaemon | สื่อสารกับไคลเอนต์นโยบายพลังงานดั้งเดิม |
ยานพาหนะ HAL | การเชื่อมต่อกับ VMCU |
เคอร์เนล | ระงับการใช้งาน RAM หรือดิสก์ |
คุณลักษณะการนอนหลับลึก/ไฮเบอร์เนต (การระงับ Android เป็น RAM/ดิสก์) ถูกนำมาใช้ในเคอร์เนล คุณลักษณะนี้ปรากฏต่อพื้นที่ผู้ใช้เป็นไฟล์พิเศษซึ่งอยู่ที่ /sys/power/state
AAOS ถูกระงับโดยการเขียน mem
หรือ disk
ลงในไฟล์นี้
CPMS ประสานงานสถานะพลังงานกับบริการอื่นๆ และ HAL CPMS ใช้งานเครื่องสถานะตามที่อธิบายไว้ข้างต้น และส่งการแจ้งเตือนไปยังผู้สังเกตการณ์ทุกคนเมื่อเกิดการเปลี่ยนแปลงสถานะพลังงาน บริการนี้ยังใช้ VHAL เพื่อส่งข้อความไปยังฮาร์ดแวร์
กปปส. จะจัดการนโยบายด้านพลังงานจนกว่า กปปส. จะเข้าควบคุม นอกจากนี้ยังส่งการแจ้งเตือนการเปลี่ยนแปลงนโยบายพลังงานไปยังผู้ฟังที่เป็นเจ้าของภาษาด้วย
คุณสมบัติบางอย่างถูกกำหนดไว้ใน VHAL ในการสื่อสารกับ VMCU นั้น CPMS จะอ่านและเขียนคุณสมบัติเหล่านี้ แอพสามารถใช้อินเทอร์เฟซที่กำหนดไว้ใน CPM เพื่อตรวจสอบการเปลี่ยนแปลงสถานะพลังงาน อินเทอร์เฟซนี้ยังช่วยให้แอปสามารถลงทะเบียน Listener นโยบายด้านพลังงาน ได้ด้วย API นี้สามารถเรียกได้จาก Java และมีคำอธิบายประกอบด้วย @hide / @System API ซึ่งหมายความว่าสามารถใช้งานได้กับแอปที่มีสิทธิ์ เท่านั้น ความสัมพันธ์ระหว่างโมดูล แอป และบริการเหล่านี้แสดงไว้ด้านล่าง:
รูปที่ 2 แผนภาพอ้างอิงส่วนประกอบกำลัง
ลำดับข้อความ
ส่วนก่อนหน้านี้อธิบายโมดูลที่ประกอบด้วยระบบการจัดการพลังงาน ส่วนนี้ใช้ตัวอย่าง เข้าสู่การนอนหลับลึก และ ออกจากการนอนหลับลึก เพื่ออธิบายว่าโมดูลและแอปสื่อสารกันอย่างไร:
เข้าสู่การนอนหลับลึก
มีเพียง VMCU เท่านั้นที่สามารถเริ่มการนอนหลับลึกได้ เมื่อเริ่มต้นการนอนหลับลึก VMCU จะส่งการแจ้งเตือนไปยัง CPMS ผ่านทาง VHAL CPMS เปลี่ยนสถานะเป็น SHUTDOWN PREPARE และเผยแพร่การเปลี่ยนแปลงสถานะนี้ไปยังผู้สังเกตการณ์ทั้งหมด (แอปและบริการที่ตรวจสอบ CPMS) โดยการเรียกเมธอด onStateChanged()
ด้วยรหัสสถานะใหม่ที่ CPM มอบให้
CPM เป็นสื่อกลางระหว่างแอป/บริการและ CPMS เมธอด onStateChanged()
สำหรับแอป/บริการถูกเรียกใช้พร้อมกันในเมธอด onStateChanged()
ของ CPM แอปและบริการส่วนใหญ่จำเป็นต้องจัดเตรียมให้เสร็จสิ้นก่อนกลับจากสายนี้ บริการที่มีสิทธิพิเศษได้รับอนุญาตให้ดำเนินการเตรียมการต่อไปแบบอะซิงโครนัสหลังจากส่งคืน PRE_SHUTDOWN_PREPARE
, SUSPEND_ENTER
, POST_SUSPEND_ENTER
ในกรณีนี้ บริการสิทธิพิเศษควรจะเรียก complete() บนออบเจ็กต์ CompletablePowerStateChangeFuture
ที่ให้ไว้เมื่อเสร็จสิ้นการเตรียมการ โปรดทราบว่าไม่อนุญาตให้มีการเตรียมแบบอะซิงโครนัสสำหรับ SHUTDOWN_PREPARE
ก่อนที่จะส่ง DEEP_SLEEP_ENTRY
ไปยัง VHAL นั้น CPMS จะส่งคำขอเลื่อนการปิดระบบไปยัง VHAL เป็นระยะ
เมื่อออบเจ็กต์ CPM ทั้งหมดเสร็จสิ้นการเตรียมการปิดระบบแล้ว CPMS จะส่ง AP_POWER_STATE_REPORT
ไปยัง VHAL ซึ่งจะแจ้งให้ VMCU ทราบว่า AP พร้อมที่จะระงับแล้ว CPMS ยังเรียกวิธีการระงับซึ่งระงับเคอร์เนล
ลำดับที่อธิบายไว้ข้างต้นแสดงไว้ด้านล่าง:
รูปที่ 3 เข้าสู่การนอนหลับลึก
อินเทอร์เฟซการเขียนโปรแกรมจัดทำโดย CPM
ส่วนนี้อธิบาย Java API ที่ได้รับจาก CPM สำหรับแอปและบริการระบบ API นี้ช่วยให้ซอฟต์แวร์ระบบสามารถ:
- ตรวจสอบการเปลี่ยนแปลงสถานะพลังงานใน AP
- ใช้นโยบายด้านพลังงาน
ใช้ขั้นตอนเหล่านี้เพื่อเรียก API ที่ได้รับจาก CPM:
- หากต้องการรับอินสแตนซ์ CPM ให้เรียก Car API
- เรียกวิธีการที่เหมาะสมบนวัตถุที่สร้างขึ้นในขั้นตอนที่ 1
สร้างวัตถุ CarPowerManager
หากต้องการสร้างออบเจ็กต์ CPM ให้เรียกใช้เมธอด getCarManager()
ของออบเจ็กต์ Car วิธีนี้เป็นส่วนหน้าที่ใช้ในการสร้างวัตถุ CPM ระบุ android.car.Car.POWER_SERVICE
เป็นอาร์กิวเมนต์เพื่อสร้างออบเจ็กต์ CPM
Car car = Car.createCar(this); CarPowerManager powerManager = (CarPowerManager) car.getCarManager(android.car.Car.POWER_SERVICE);
CarPowerStateListener และการลงทะเบียน
แอพและบริการของระบบสามารถรับการแจ้งเตือนการเปลี่ยนแปลงสถานะพลังงานได้โดยการใช้ CarPowerManager.CarPowerStateListener
อินเทอร์เฟซนี้กำหนดวิธีการหนึ่ง onStateChanged()
ซึ่งเป็นฟังก์ชันเรียกกลับที่เรียกใช้เมื่อสถานะพลังงานของ CPMS มีการเปลี่ยนแปลง ตัวอย่างต่อไปนี้กำหนดคลาสที่ไม่ระบุชื่อใหม่ที่ใช้อินเทอร์เฟซ:
private final CarPowerManager.CarPowerStateListener powerListener = new CarPowerManager.CarPowerStateListener () { @Override public void onStateChanged(int state) { Log.i(TAG, "onStateChanged() state = " + state); } };
หากต้องการสั่งให้ออบเจ็กต์ Listener นี้ตรวจสอบการเปลี่ยนแปลงสถานะพลังงาน ให้สร้างเธรดการดำเนินการใหม่และลงทะเบียน Listener และเธรดนี้กับออบเจ็กต์ CPM:
executor = new ThreadPerTaskExecutor(); powerManager.setListener(powerListener, executor);
เมื่อสถานะพลังงานมีการเปลี่ยนแปลง เมธอด onStateChanged()
ของอ็อบเจ็กต์ Listener จะถูกเรียกใช้พร้อมกับค่าที่แสดงถึงสถานะพลังงานใหม่ การเชื่อมโยงระหว่างค่าจริงและสถานะพลังงานถูกกำหนดไว้ใน CarPowerManager
และแสดงอยู่ในตารางต่อไปนี้:
ชื่อ | คำอธิบาย |
---|---|
สถานะ_ON | เข้าสู่สถานะเปิด ระบบทำงานได้อย่างสมบูรณ์ |
STATE_SHUTDOWN_CANCELLED | การปิดเครื่องถูกยกเลิกและสถานะพลังงานกลับคืนสู่สถานะปกติ |
STATE_SHUTDOWN_ENTER | คาดว่าแอปจะล้างข้อมูลและพร้อมสำหรับการปิดระบบ |
STATE_POST_SHUTDOWN_ENTER | การเตรียมการปิดระบบเสร็จสิ้นแล้ว และ VMCU ก็พร้อมที่จะปิดระบบแล้ว เข้าสู่สถานะปิดเครื่อง |
STATE_PRE_SHUTDOWN_PREPARE | มีการร้องขอกระบวนการปิดเครื่อง แต่ CPMS ยังไม่เริ่มกระบวนการ จอแสดงผลและเสียงยังคงเปิดอยู่ |
STATE_SHUTDOWN_เตรียมตัว | โหมดโรงรถอาจทำงานในช่วงเวลาดังกล่าว |
STATE_SUSPEND_ENTER | แอปต่างๆ คาดว่าจะล้างข้อมูลและพร้อมสำหรับการระงับไปยัง RAM |
STATE_POST_SUSPEND_ENTER | การเตรียมการสำหรับ Suspend-to-RAM เสร็จสมบูรณ์แล้ว และ VMCU ก็พร้อมสำหรับ Suspend-to-RAM แล้ว เข้าสู่สถานะระงับ |
STATE_SUSPEND_EXIT | ตื่นจากการระงับหรือดำเนินการต่อจากการระงับที่ถูกยกเลิก |
STATE_HIBERNATION_ENTER | คาดว่าแอพจะล้างข้อมูลและพร้อมสำหรับการไฮเบอร์เนต |
STATE_POST_HIBERNATION_ENTER | การเตรียมการสำหรับการไฮเบอร์เนตเสร็จสิ้นแล้ว และ VMCU พร้อมสำหรับการไฮเบอร์เนต เข้าสู่สถานะไฮเบอร์เนต |
STATE_HIBERNATION_EXIT | ตื่นจากการไฮเบอร์เนตหรือดำเนินการต่อจากการไฮเบอร์เนตที่ถูกยกเลิก |
STATE_WAIT_FOR_VHAL | ระบบกำลังเริ่มต้น แต่กำลังรอสร้างการสื่อสารกับ VHAL ก่อนที่จะเข้าสู่สถานะ ON |
การยกเลิกการลงทะเบียน CarPowerStateListener
หากต้องการยกเลิกการลงทะเบียนออบเจ็กต์ Listener ทั้งหมดที่ลงทะเบียนกับ CPM ให้เรียกใช้เมธอด clearListener
:
powerManager.clearListener();
การรวมระบบในการใช้งาน Android ของคุณ
ผู้ประกอบมีหน้าที่รับผิดชอบในรายการต่อไปนี้:
- การใช้อินเทอร์เฟซเคอร์เนลเพื่อระงับ Android
- การใช้ฟังก์ชัน VHAL เพื่อ:
- เผยแพร่การเริ่มต้นการระงับหรือปิดเครื่องจากรถยนต์ไปยัง Android
- ส่งข้อความแจ้งการปิดระบบจาก Android ไปยังรถยนต์
- เริ่มต้นการปิดระบบหรือระงับ Android ผ่านทางอินเทอร์เฟซเคอร์เนล Linux
- ตรวจสอบให้แน่ใจว่า Wakesources ทั้งหมดถูกปิดใช้งานเมื่ออุปกรณ์ถูกระงับ
- ตรวจสอบให้แน่ใจว่าแอปปิดตัวลงเร็วเพียงพอเพื่อไม่ให้กระบวนการปิดระบบเลื่อนออกไปอย่างไม่มีกำหนด
- ตรวจสอบให้แน่ใจว่า BSP เปิด (หรือปิด) ส่วนประกอบของอุปกรณ์ตามนโยบายพลังงาน เพื่อไม่ให้บล็อกการหยุดชั่วคราวหรือไฮเบอร์เนต
ส่วนต่อประสานเคอร์เนล: /sys/power/state
AAOS วางอุปกรณ์เข้าสู่โหมด Suspend เมื่อแอพหรือบริการเขียน mem
สำหรับ Suspend-to-RAM หรือ disk
สำหรับ Suspend-to-Disk ลงในไฟล์ที่อยู่ที่ /sys/power/state
ผู้ประกอบระบบจะต้องจัดเตรียมฟังก์ชันที่ตรวจสอบไฟล์นี้ และทำให้ Linux เข้าสู่สถานะพลังงานที่ถูกระงับ ฟังก์ชั่นนี้อาจส่ง GPIO ไปยัง VMCU เพื่อแจ้งให้ VMCU ทราบว่าอุปกรณ์ปิดตัวลงอย่างสมบูรณ์ ผู้รวมระบบยังรับผิดชอบในการลบสภาพการแข่งขันระหว่าง VHAL ที่ส่งข้อความสุดท้ายไปยัง VMCU และระบบจะเข้าสู่โหมด Suspend หรือปิดเครื่อง
ความรับผิดชอบของวีเอชแอล
VHAL จัดให้มีอินเทอร์เฟซระหว่างเครือข่ายรถยนต์และ Android วีเอชแอล:
- เผยแพร่การเริ่มต้นการระงับหรือปิดเครื่องจากรถยนต์ไปยัง Android
- ส่งข้อความพร้อมปิดระบบจาก Android ไปยังรถยนต์
- เริ่มต้นการปิดระบบหรือระงับ Android ผ่านทางอินเทอร์เฟซเคอร์เนล Linux
เมื่อ CPMS แจ้ง VHAL ว่าพร้อมที่จะปิดระบบ VHAL จะส่งข้อความพร้อมปิดระบบไปยัง VMCU โดยทั่วไปแล้ว อุปกรณ์ต่อพ่วงบนชิป เช่น UART, SPI และ USB จะส่งข้อความ เมื่อส่งข้อความแล้ว CPMS จะเรียกคำสั่งเคอร์เนลเพื่อระงับหรือปิดอุปกรณ์ ก่อนที่จะดำเนินการดังกล่าว VHAL หรือ BSP อาจสลับ GPIO เพื่อสั่ง VMCU ว่าสามารถถอดพลังงานออกจากอุปกรณ์ได้อย่างปลอดภัย
VHAL ต้องรองรับคุณสมบัติต่อไปนี้ ซึ่งควบคุมการจัดการพลังงานผ่าน VHAL:
ชื่อ | คำอธิบาย |
---|---|
AP_POWER_STATE_REPORT | Android รายงานสถานะการเปลี่ยนไปใช้ VMCU ด้วยคุณสมบัตินี้ โดยใช้ค่า enum ของ VehicleApPowerStateReport |
AP_POWER_STATE_REQ | VMCU ใช้คุณสมบัตินี้เพื่อสั่งให้ Android เปลี่ยนไปใช้สถานะพลังงานที่แตกต่างกัน โดยใช้ค่า enum ของ VehicleApPowerStateReq |
AP_POWER_STATE_REPORT
ใช้คุณสมบัตินี้เพื่อรายงานสถานะการจัดการพลังงานปัจจุบันของ Android คุณสมบัตินี้ประกอบด้วยจำนวนเต็ม 2 ตัว:
-
int32Values[0]
: VehicleApPowerStateReport enum ของสถานะปัจจุบัน -
int32Values[1]
: เวลาเป็นมิลลิวินาทีที่จะเลื่อน เข้าสู่โหมดสลีป หรือปิดเครื่อง ความหมายของค่านี้ขึ้นอยู่กับค่าแรก
ค่าแรกสามารถรับค่าใดค่าหนึ่งต่อไปนี้ได้ VehicleApPowerStateReport.aidl
มีคำอธิบายที่เฉพาะเจาะจงมากขึ้น ซึ่งจัดเก็บไว้ใน hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle
ชื่อค่า | คำอธิบาย | ค่าที่สอง |
---|---|---|
WAIT_FOR_VHAL | AP กำลังเริ่มต้นและจำเป็นต้องสร้างการสื่อสารกับ VHAL | |
DEEP_SLEEP_ENTRY | AP กำลังเข้าสู่สภาวะหลับลึก VMCU ควรเปิด AP อีกครั้งหลังจากเวลาที่ระบุไว้ในค่าที่สอง | จะต้องตั้งค่า |
DEEP_SLEEP_ออก | AP กำลังออกจากสถานะดีพสลีป | |
HIBERNATION_ENTRY | AP กำลังเข้าสู่สถานะไฮเบอร์เนต VMCU ควรเปิด AP อีกครั้งหลังจากเวลาที่ระบุไว้ในค่าที่สอง | จะต้องตั้งค่า |
ไฮเบอร์เนต_ออก | AP กำลังออกจากสถานะไฮเบอร์เนต | |
SHUTDOWN_POSTPONE | Android ยังไม่พร้อมที่จะปิดตัวลง VMCU ควรรอเวลาที่ระบุในค่าที่สองก่อนที่จะปิด AP Android อาจขอเลื่อนเพิ่มเติมโดยการออกรายงาน SHUTDOWN_POSTPONE เพิ่มเติม | จะต้องตั้งค่า |
ปิด_เตรียมการ | Android กำลังเตรียมที่จะปิดตัวลง | จะต้องตั้งค่า |
SHUTDOWN_START | เอพีพร้อมปิดตัวแล้ว VMCU ควรเปิด AP อีกครั้งหลังจากเวลาที่ระบุไว้ในค่าที่สอง (ไม่จำเป็นต้องใช้ VMCU เพื่อรองรับคุณสมบัติการเปิดเครื่องตามกำหนดเวลา) | จะต้องตั้งค่า |
SHUTDOWN_CANCELLED | Android กำลังหยุดเตรียมการปิดระบบและจะดำเนินการไปที่ WAIT_FOR_VHAL | |
บน | แอนดรอยใช้งานได้ปกติ |
สามารถตั้งค่าสถานะได้โดยอัตโนมัติหรือตอบสนองต่อคำขอผ่าน VMCU
AP_POWER_STATE_REQ
VMCU ส่งคุณสมบัตินี้เพื่อเปลี่ยน Android ให้เป็นสถานะพลังงานอื่นและประกอบด้วยจำนวนเต็ม 2 ตัว:
-
int32Values[0]
: ค่า enum ของVehicleApPowerStateReq
ซึ่งแสดงถึงสถานะใหม่ที่จะเปลี่ยน -
int32Values[1]
: ค่า enumVehicleApPowerStateShutdownParam
ค่านี้จะถูกส่งสำหรับข้อความSHUTDOWN_PREPARE
เท่านั้น และส่งไปยัง Android ตามตัวเลือกที่มีอยู่
ค่าจำนวนเต็มแรกแสดงถึงสถานะใหม่ที่ Android จะต้องผ่าน ความหมายถูกกำหนดไว้ใน VehicleApPowerStateReq.aidl
และมีให้ด้านล่าง:
ชื่อค่า | คำอธิบาย |
---|---|
บน | AP ควรเริ่มดำเนินการเต็มรูปแบบ |
ปิด_เตรียมการ | AP ควรเตรียมการปิดตัวลง ค่าที่สองบ่งชี้ว่า AP ได้รับอนุญาตให้เลื่อนการปิดระบบได้หรือไม่ และ AP ควรคาดหวังที่จะปิดเครื่องหรือเข้าสู่โหมดสลีปลึกหรือไม่ |
ยกเลิก_ปิดเครื่อง | AP ควรหยุดเตรียมปิดตัวและเตรียมเดินหน้าต่อไป |
ที่เสร็จเรียบร้อย | AP จะถูกปิดหรือระงับในขณะนี้ |
VehicleApPowerStateShutdownParam
ถูกกำหนดไว้ใน VehicleApPowerStateShutdownParam.aidl
enum นี้มีองค์ประกอบเหล่านี้:
ชื่อค่า | คำอธิบาย |
---|---|
สามารถ_นอนหลับได้ | AP สามารถเข้าสู่โหมดสลีปลึกแทนที่จะปิดเครื่องโดยสิ้นเชิง อนุญาตให้เลื่อนออกไปได้ |
CAN_HIBERNATE | AP สามารถเข้าสู่โหมดไฮเบอร์เนตแทนที่จะปิดเครื่องโดยสมบูรณ์ อนุญาตให้เลื่อนออกไปได้ |
ปิด_เท่านั้น | AP ควรปิดตัวลง อนุญาตให้เลื่อนออกไปได้ ไม่อนุญาตให้นอนหลับลึก |
SLEEP_ทันที | AP อาจเข้าสู่โหมดหลับลึก แต่ต้องเข้าสู่โหมดสลีปหรือปิดเครื่องทันที ไม่อนุญาตให้เลื่อนออกไป |
ไฮเบอร์เนต_ทันที | AP อาจเข้าสู่โหมด Suspend-to-Disk แต่ต้องไฮเบอร์เนตหรือปิดระบบทันที ไม่อนุญาตให้เลื่อนออกไป |
SHUTDOWN_ทันที | AP ต้องปิดตัวลงทันที ไม่อนุญาตให้เลื่อนออกไป ไม่อนุญาตให้นอนหลับลึก |
แหล่งปลุก
ผู้ประกอบจะต้องปิดใช้งานแหล่งการปลุกที่เหมาะสมเมื่ออุปกรณ์อยู่ในโหมด Suspend แหล่งที่มาของการปลุกที่พบบ่อย ได้แก่ ฮาร์ตบีต โมเด็ม Wi-Fi และบลูทูธ แหล่งที่มาของการปลุกที่ถูกต้องเพียงแหล่งเดียวจะต้องเป็นการขัดจังหวะจาก VMCU เพื่อปลุก SoC นี่ถือว่า VMCU สามารถฟังโมเด็มสำหรับเหตุการณ์การปลุกระยะไกล (เช่นการสตาร์ทเครื่องยนต์ระยะไกล) หากฟังก์ชันนี้ถูกส่งไปยัง AP จะต้องเพิ่มแหล่งปลุกอื่นเพื่อให้บริการโมเด็ม
แอพ
OEM จะต้องระมัดระวังในการเขียนแอปเพื่อให้สามารถปิดตัวลงได้อย่างรวดเร็วและไม่เลื่อนกระบวนการออกไปอย่างไม่มีกำหนด
ภาคผนวก
ไดเร็กทอรีในแผนผังซอร์สโค้ด
เนื้อหา | ไดเรกทอรี |
---|---|
รหัสที่เกี่ยวข้องกับ CarPowerManager | packages/services/Car/car-lib/src/android/car/hardware/power |
CarPowerManagementService และอื่นๆ | packages/services/Car/service/src/com/android/car/power |
บริการที่เกี่ยวข้องกับ VHAL เช่น VehicleHal และ HAlClient | packages/services/Car/service/src/com/android/car/hal |
อินเทอร์เฟซ VHAL และคำจำกัดความคุณสมบัติ | hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle/ |
แอปตัวอย่างเพื่อให้แนวคิดเกี่ยวกับ CarPowerManager | packages/services/Car/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink |
แผนภาพชั้นเรียน
ไดอะแกรมคลาสนี้แสดงคลาส Java และอินเตอร์เฟสในระบบการจัดการพลังงาน:
รูปที่ 4 แผนภาพคลาสกำลัง
ความสัมพันธ์ของวัตถุ
รูปที่ 5 แสดงให้เห็นว่าวัตถุใดมีการอ้างอิงถึงวัตถุอื่น ขอบหมายความว่าวัตถุต้นทางเก็บการอ้างอิงไปยังวัตถุเป้าหมาย ตัวอย่างเช่น VehicleHAL มีการอ้างอิงถึงวัตถุ PropertyHalService
รูปที่ 5 แผนภาพอ้างอิงวัตถุ