Android มีบริการ CarPowerManagementService
และอินเทอร์เฟซ CarPowerManager
เพื่อรองรับการจัดการพลังงานเฉพาะยานพาหนะ
การเปลี่ยนสถานะจะทริกเกอร์โดยชุดควบคุมหลักของยานพาหนะ (VMCU) หากต้องการสื่อสารกับ VMCU ผู้ผสานรวมต้องติดตั้งใช้งานคอมโพเนนต์หลายรายการ ผู้ผสานรวมมีหน้าที่รับผิดชอบในการผสานรวมกับเลเยอร์การแยกแยะฮาร์ดแวร์ของยานพาหนะ (VHAL) และการใช้งานเคอร์เนล ผู้ผสานรวมมีหน้าที่ปิดใช้แหล่งที่มาของการตื่นและตรวจสอบว่าระบบไม่ได้เลื่อนการปิดไว้อย่างไม่มีกำหนด
คำศัพท์
คำศัพท์ต่อไปนี้ใช้ในเอกสารนี้
suspend()
และ shutdown()
ครั้งสุดท้ายการออกแบบระบบ
ส่วนนี้จะอธิบายวิธีที่ AAOS แสดงสถานะพลังงานของโปรเซสเซอร์แอป และข้อบังคับของข้อบังคับที่ใช้ระบบการจัดการพลังงาน เนื้อหานี้ยังอธิบายวิธีทํางานของข้อบังคับเหล่านี้ร่วมกันและลักษณะที่การเปลี่ยนสถานะเกิดขึ้นโดยทั่วไปด้วย
สถานะพลังงานของรถ
AAOS ใช้สถานะการทำงานของเครื่องจักรเพื่อแสดงสถานะพลังงานของ AP State Machine มีสถานะดังที่แสดงด้านล่าง
รูปที่ 1 สถานะพลังงานของรถ
ทรานซิชันที่พบบ่อยที่สุดจะไฮไลต์ด้วยสีน้ำเงิน สถานะและการเปลี่ยนสถานะทั่วไปมีดังนี้
- ระงับไปยัง RAM ยานพาหนะและ SoC ปิดอยู่ ไม่มีการเรียกใช้โค้ด ไฟจะยังคงจ่ายไปยัง RAM ของ SoC
- รอ VHAL เมื่อผู้ขับขี่โต้ตอบกับยานพาหนะ เช่น โดยการเปิดประตู VMCU จะจ่ายไฟให้กับ SoC จากนั้น AAOS จะกลับมาทำงานต่อจากโหมด "ระงับไปยัง RAM" และเข้าสู่โหมด "รอ VHAL" เพื่อรอประสานงานกับ VHAL
- เปิด VHAL จะบอก AAOS ให้เข้าสู่สถานะเปิด ในสถานะนี้ AAOS จะทำงานอย่างเต็มรูปแบบและโต้ตอบกับไดรเวอร์
- เตรียมปิดระบบ เมื่อคนขับขับรถเสร็จแล้ว VHAL จะบอก AAOS ให้เข้าสู่การเตรียมการปิดเครื่อง ในสถานะนี้ จอแสดงผลและเสียงจะปิดอยู่ และ AAOS ไม่ได้โต้ตอบกับผู้ขับขี่ ระบบ Android ยังทำงานอยู่และอัปเดตแอปและระบบ Android ได้ เมื่อการอัปเดต (หากมี) เสร็จสมบูรณ์แล้ว ระบบ Android จะเข้าสู่สถานะรอ VHAL Finish
- รอให้ VHAL เสร็จสิ้น เมื่อถึงจุดนี้ AAOS จะแจ้งให้ VHAL ทราบว่าพร้อมที่จะปิด VMCU คาดว่าจะตั้งค่า SoC ให้เป็นโหมดสลีปลึกและตัดไฟออกจากโปรเซสเซอร์แอป จากนั้น AAOS จะอยู่ในสถานะ "ระงับไปยัง RAM" แม้ว่าจะไม่มีโค้ดใดๆ ทำงานอยู่ก็ตาม
โมดูลการจัดการพลังงาน
ระบบการจัดการพลังงานประกอบด้วยโมดูลต่อไปนี้
ชื่อโมดูล | คำอธิบาย |
---|---|
CarPowerManager | Java หรือ C++ API |
CarPowerManagementService | ประสานการเปลี่ยนสถานะพลังงาน |
CarPowerPolicyDaemon | สื่อสารกับลูกค้านโยบายพลังงานในเครื่อง |
HAL ยานพาหนะ | อินเทอร์เฟซกับ VMCU |
ฟองสบู่แตก | ระงับเพื่อใช้งาน RAM หรือดิสก์ |
ฟีเจอร์การหยุดทำงานชั่วคราว/โหมดพัก (การระงับ Android ไว้ใน RAM/ดิสก์) จะใช้ในเคอร์เนล
ฟีเจอร์นี้จะแสดงในพื้นที่ผู้ใช้เป็นไฟล์พิเศษที่อยู่ที่
/sys/power/state
AAOS จะหยุดชั่วคราวโดยการเขียน mem
หรือ disk
ลงในไฟล์นี้
CPMS จะประสานสถานะพลังงานกับบริการและ HAL อื่นๆ CPMS ใช้สถานะแมชชีนที่อธิบายไว้ข้างต้นและส่งการแจ้งเตือนไปยังผู้สังเกตการณ์ทุกคนเมื่อมีการเปลี่ยนสถานะพลังงาน บริการนี้ยังใช้ VHAL เพื่อส่งข้อความไปยังฮาร์ดแวร์ด้วย
CPPD จะจัดการนโยบายพลังงานจนกว่า CPMS จะควบคุม รวมถึงจะส่งการแจ้งเตือนการเปลี่ยนแปลงนโยบายพลังงานไปยังผู้ฟังแบบเนทีฟด้วย
พร็อพเพอร์ตี้บางรายการจะกำหนดไว้ใน VHAL CPMS จะอ่านและเขียนพร็อพเพอร์ตี้เหล่านี้เพื่อสื่อสารกับ VMCU แอปสามารถใช้อินเทอร์เฟซที่กําหนดไว้ใน CPM เพื่อตรวจสอบการเปลี่ยนแปลงสถานะพลังงาน อินเทอร์เฟซนี้ยังช่วยให้แอปลงทะเบียนตัวฟังนโยบายพลังงานได้ด้วย API นี้สามารถเรียกใช้จาก Java และมีการกำกับเนื้อหาด้วย @hide / @System API ซึ่งหมายความว่า API นี้ใช้ได้กับแอปที่มีสิทธิ์เท่านั้น ความสัมพันธ์ระหว่างข้อบังคับ แอป และบริการเหล่านี้แสดงอยู่ด้านล่าง
รูปที่ 2 แผนภาพอ้างอิงสำหรับส่วนประกอบของกำลังไฟ
ลําดับข้อความ
ส่วนก่อนหน้านี้อธิบายเกี่ยวกับโมดูลที่ประกอบกันเป็นระบบการจัดการพลังงาน ส่วนนี้ใช้ตัวอย่างเข้าสู่โหมดสลีปลึกและออกจากโหมดสลีปลึกเพื่ออธิบายวิธีที่โมดูลและแอปสื่อสารกัน
เข้าสู่โหมดหลับลึก
มีเพียง VMCU เท่านั้นที่เริ่มโหมดสลีปได้ เมื่อเริ่มเข้าสู่โหมดสลีปลึก VMCU จะส่งการแจ้งเตือนไปยัง CPMS ผ่าน VHAL CPMS จะเปลี่ยนสถานะเป็น "เตรียมปิดระบบ" และประกาศการเปลี่ยนสถานะนี้ไปยังผู้สังเกตการณ์ทั้งหมด (แอปและบริการที่ตรวจสอบ CPMS) โดยการเรียกใช้เมธอด onStateChanged()
ด้วยรหัสสถานะใหม่ที่ CPM ระบุ
CPM จะทำหน้าที่เป็นสื่อกลางระหว่างแอป/บริการกับ CPMS ระบบจะเรียกใช้เมธอด onStateChanged()
สําหรับแอป/บริการแบบซิงค์กันในเมธอด onStateChanged()
ของ CPM แอปและบริการส่วนใหญ่ต้องเตรียมความพร้อมให้เสร็จสมบูรณ์ก่อนจึงจะกลับมาจากสายนี้ได้ บริการที่มีสิทธิ์จะเตรียมการต่อไปแบบไม่พร้อมกันได้หลังจากกลับมาสำหรับ PRE_SHUTDOWN_PREPARE
,
SUSPEND_ENTER
, POST_SUSPEND_ENTER
ในกรณีนี้ บริการที่มีสิทธิ์ควรเรียกใช้ complete() ในออบเจ็กต์ CompletablePowerStateChangeFuture
ที่ระบุเมื่อเตรียมเสร็จแล้ว โปรดทราบว่าเราไม่อนุญาตให้ใช้การเตรียมแบบไม่พร้อมกันสำหรับ
SHUTDOWN_PREPARE
CPMS จะส่งคำขอเลื่อนการปิดเครื่องไปยัง VHAL เป็นระยะๆ ก่อนที่จะส่ง DEEP_SLEEP_ENTRY
ไปยัง 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); } };
หากต้องการสั่งให้ออบเจ็กต์ตัวฟังนี้ตรวจสอบการเปลี่ยนสถานะพลังงาน ให้สร้างเธรดการดําเนินการใหม่และลงทะเบียนตัวฟังและเธรดนี้กับออบเจ็กต์ CPM ดังนี้
executor = new ThreadPerTaskExecutor(); powerManager.setListener(powerListener, executor);
เมื่อสถานะพลังงานมีการเปลี่ยนแปลง ระบบจะเรียกใช้เมธอด onStateChanged()
ของออบเจ็กต์ Listener ด้วยค่าเพื่อแสดงสถานะพลังงานใหม่ การเชื่อมโยงระหว่างค่าจริงกับสถานะพลังงานจะกำหนดไว้ใน CarPowerManager
และแสดงในตารางต่อไปนี้
ชื่อ | คำอธิบาย |
---|---|
STATE_ON | ป้อนสถานะเปิด ระบบทํางานได้เต็มรูปแบบ |
STATE_SHUTDOWN_CANCELLED | ระบบจะยกเลิกการปิดเครื่องและสถานะพลังงานจะกลับสู่สถานะปกติ |
STATE_SHUTDOWN_ENTER | แอปควรล้างข้อมูลและพร้อมที่จะปิด |
STATE_POST_SHUTDOWN_ENTER | การเตรียมการปิดระบบเสร็จสมบูรณ์แล้ว และ VMCU พร้อมที่จะปิดระบบ เข้าสู่สถานะการปิดเครื่อง |
STATE_PRE_SHUTDOWN_PREPARE | มีคำขอกระบวนการปิดระบบ แต่ CPMS ยังไม่ได้เริ่มกระบวนการ จอแสดงผลและเสียงยังเปิดอยู่ |
STATE_SHUTDOWN_PREPARE | โหมดโรงรถอาจทำงานในระหว่างนี้ |
STATE_SUSPEND_ENTER | แอปควรล้างข้อมูลและพร้อมสำหรับการระงับใน RAM |
STATE_POST_SUSPEND_ENTER | การเตรียมการสำหรับโหมดพักแรมใน RAM เสร็จสมบูรณ์แล้ว และ VMCU พร้อมสำหรับโหมดพักแรมใน RAM ป้อนสถานะการระงับ |
STATE_SUSPEND_EXIT | ตื่นจากโหมดสลีปหรือกลับมาทํางานต่อจากโหมดสลีปที่ยกเลิกแล้ว |
STATE_HIBERNATION_ENTER | แอปควรล้างข้อมูลและพร้อมสำหรับการพักแรม |
STATE_POST_HIBERNATION_ENTER | การเตรียมการสำหรับโหมดไฮเบอร์เนตเสร็จสมบูรณ์แล้ว และ VMCU พร้อมสำหรับโหมดไฮเบอร์เนต เข้าสู่สถานะไฮเบอร์เนต |
STATE_HIBERNATION_EXIT | ปลุกจากโหมดไฮเบอร์เนตหรือกลับมาทำงานต่อจากโหมดไฮเบอร์เนตที่ยกเลิก |
STATE_WAIT_FOR_VHAL | ระบบกำลังเริ่มต้น แต่รอสร้างการสื่อสารกับ VHAL ก่อนเปลี่ยนเป็นสถานะเปิด |
การยกเลิกการลงทะเบียน CarPowerStateListener
หากต้องการยกเลิกการลงทะเบียนออบเจ็กต์ Listener ทั้งหมดที่ลงทะเบียนกับ CPM ให้เรียกใช้clearListener
วิธีต่อไปนี้
powerManager.clearListener();
การผสานรวมระบบในการใช้งาน Android
ผู้ผสานรวมมีหน้าที่รับผิดชอบต่อรายการต่อไปนี้
- การใช้อินเทอร์เฟซเคอร์เนลเพื่อระงับ Android
- การใช้ฟังก์ชัน VHAL เพื่อดำเนินการต่อไปนี้
- เผยแพร่การเริ่มต้นการระงับหรือปิดเครื่องจากรถยนต์ไปยัง Android
- ส่งข้อความ "พร้อมปิดเครื่อง" จาก Android ไปยังรถยนต์
- เริ่มการปิดหรือระงับ Android ผ่านอินเทอร์เฟซเคอร์เนล Linux
- ตรวจสอบว่าปิดใช้แหล่งที่มาของการตื่นทั้งหมดเมื่ออุปกรณ์อยู่ในโหมดสลีป
- ตรวจสอบว่าแอปปิดอย่างรวดเร็วพอที่จะไม่เลื่อนกระบวนการปิดระบบออกไปอย่างไม่มีกำหนด
- ตรวจสอบว่า BSP เปิด (หรือปิด) คอมโพเนนต์ของอุปกรณ์ตามนโยบายพลังงานเพื่อไม่ให้บล็อกการระงับหรือโหมดพักเครื่อง
อินเทอร์เฟซเคอร์เนล: /sys/power/state
AAOS จะตั้งค่าอุปกรณ์ให้อยู่ในโหมด "หยุดชั่วคราว" เมื่อแอปหรือบริการเขียน mem
สำหรับ "หยุดชั่วคราวใน RAM" หรือ disk
สำหรับ "หยุดชั่วคราวในดิสก์" ลงในไฟล์ที่อยู่ใน /sys/power/state
ผู้ผสานรวมต้องระบุฟังก์ชันที่ตรวจสอบไฟล์นี้และทำให้ Linux เข้าสู่สถานะพลังงานที่ระงับ ฟังก์ชันนี้อาจส่ง GPIO ไปยัง VMCU เพื่อแจ้งให้ VMCU ทราบว่าอุปกรณ์ปิดลงอย่างสมบูรณ์แล้ว นอกจากนี้ ผู้ผสานรวมยังมีหน้าที่นำเงื่อนไขการแข่งขันระหว่าง VHAL ที่ส่งข้อความสุดท้ายไปยัง VMCU และระบบเข้าสู่โหมดระงับหรือปิดเครื่องออกด้วย
ความรับผิดชอบของ VHAL
VHAL เป็นอินเทอร์เฟซระหว่างเครือข่ายของยานพาหนะกับ Android VHAL
- เผยแพร่การเริ่มต้นการระงับหรือปิดเครื่องจากรถยนต์ไปยัง Android
- ส่งข้อความ "พร้อมปิดเครื่อง" จาก Android ไปยังรถยนต์
- เริ่มการปิดหรือระงับ Android ผ่านอินเทอร์เฟซเคอร์เนล Linux
เมื่อ CPMS แจ้งให้ VHAL ทราบว่าพร้อมที่จะปิดเครื่อง VHAL จะส่งข้อความ "พร้อมที่จะปิดเครื่อง" ไปยัง VMCU โดยปกติแล้ว อุปกรณ์ต่อพ่วงในชิป เช่น UART, SPI และ USB จะส่งข้อความ เมื่อส่งข้อความแล้ว CPMS จะเรียกใช้คําสั่งเคอร์เนลเพื่อระงับหรือปิดอุปกรณ์ ก่อนดำเนินการดังกล่าว VHAL หรือ BSP อาจสลับ GPIO เพื่อสั่งให้ VMCU ทราบว่าสามารถถอดพลังงานออกจากอุปกรณ์ได้
VHAL ต้องรองรับพร็อพเพอร์ตี้ต่อไปนี้ ซึ่งควบคุมการจัดการพลังงานผ่าน VHAL
ชื่อ | คำอธิบาย |
---|---|
AP_POWER_STATE_REPORT | Android จะรายงานการเปลี่ยนสถานะไปยัง VMCU ด้วยพร็อพเพอร์ตี้นี้โดยใช้ค่าแจกแจงของ VehicleApPowerStateReport |
AP_POWER_STATE_REQ | VMCU ใช้พร็อพเพอร์ตี้นี้เพื่อสั่งให้ Android เปลี่ยนเป็นสถานะพลังงานต่างๆ โดยใช้ค่าแจกแจงของ VehicleApPowerStateReq |
AP_POWER_STATE_REPORT
ใช้พร็อพเพอร์ตี้นี้เพื่อรายงานสถานะการจัดการพลังงานปัจจุบันของ Android พร็อพเพอร์ตี้นี้มีจำนวนเต็ม 2 รายการ ดังนี้
int32Values[0]
: อาร์เรย์แบบจำกัดของ VehicleApPowerStateReport สำหรับสถานะปัจจุบันint32Values[1]
: เวลาเป็นมิลลิวินาทีในการเลื่อนเวลา ปิดเครื่อง หรือเข้าสู่โหมดสลีป ความหมายของค่านี้ขึ้นอยู่กับค่าแรก
ค่าแรกอาจเป็นค่าใดค่าหนึ่งต่อไปนี้ VehicleApPowerStateReport.aidl
มีคำอธิบายที่เฉพาะเจาะจงมากขึ้น ซึ่งจัดเก็บไว้ใน
hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle
ชื่อค่า | คำอธิบาย | ค่าที่ 2 |
---|---|---|
WAIT_FOR_VHAL | AP กำลังเริ่มต้นและจำเป็นต้องสร้างการสื่อสารกับ VHAL | |
DEEP_SLEEP_ENTRY | AP กำลังเข้าสู่สถานะหลับลึก VMCU ควรเปิด AP อีกครั้งหลังจากเวลาที่กำหนดไว้ในค่าที่ 2 | ต้องตั้งค่า |
DEEP_SLEEP_EXIT | AP กำลังออกจากสถานะหลับลึก | |
HIBERNATION_ENTRY | AP กำลังเข้าสู่สถานะไฮเบอร์เนต VMCU ควรเปิด AP อีกครั้งหลังจากเวลาที่กำหนดไว้ในค่าที่ 2 | ต้องตั้งค่า |
HIBERNATION_EXIT | AP กำลังออกจากสถานะไฮเบอร์เนต | |
SHUTDOWN_POSTPONE | Android ยังไม่พร้อมที่จะปิด VMCU ควรรอตามเวลาที่ระบุไว้ในค่าที่ 2 ก่อนปิด AP Android อาจขอเลื่อนเวลาเพิ่มเติมโดยการออกรายงาน SHUTDOWN_POSTPONE เพิ่มเติม | ต้องตั้งค่า |
SHUTDOWN_PREPARE | Android กำลังเตรียมปิดเครื่อง | ต้องตั้งค่า |
SHUTDOWN_START | AP พร้อมที่จะปิด VMCU ควรเปิด AP อีกครั้งหลังจากเวลาที่กำหนดไว้ในค่าที่ 2 (VMCU ไม่จำเป็นต้องรองรับฟีเจอร์เปิดตามเวลา) | ต้องตั้งค่า |
SHUTDOWN_CANCELLED | Android หยุดเตรียมการปิดเครื่องและจะดำเนินการต่อใน WAIT_FOR_VHAL | |
เปิด | Android ทำงานได้ตามปกติ |
สถานะสามารถตั้งค่าแบบอิสระหรือเพื่อตอบสนองต่อคำขอผ่าน VMCU
AP_POWER_STATE_REQ
VMCU จะส่งพร็อพเพอร์ตี้นี้เพื่อเปลี่ยน Android ไปยังสถานะพลังงานอื่น โดยมีจำนวนเต็ม 2 รายการดังนี้
int32Values[0]
: ค่า enumVehicleApPowerStateReq
ซึ่งแสดงถึงสถานะใหม่ที่จะเปลี่ยนไปint32Values[1]
: ค่า enumVehicleApPowerStateShutdownParam
ระบบจะส่งค่านี้สำหรับข้อความSHUTDOWN_PREPARE
เท่านั้น และจะส่งตัวเลือกที่มีไปยัง Android
ค่าจำนวนเต็มแรกแสดงสถานะใหม่ที่ Android กำลังจะเปลี่ยนไป ความหมายของคำอธิบายประกอบจะระบุไว้ใน VehicleApPowerStateReq.aidl
และแสดงอยู่ด้านล่าง
ชื่อค่า | คำอธิบาย |
---|---|
เปิด | AP ควรเริ่มทํางานอย่างเต็มรูปแบบ |
SHUTDOWN_PREPARE | AP ควรเตรียมปิด ค่าที่ 2 ระบุว่า AP ได้รับอนุญาตให้เลื่อนการปิดระบบหรือไม่ และ AP ควรปิดเครื่องหรือเข้าสู่โหมดสลีปลึกหรือไม่ |
CANCEL_SHUTDOWN | AP ควรหยุดเตรียมการปิดและเตรียมเปิด |
จบแล้ว | ตอนนี้ AP จะปิดหรือถูกระงับ |
VehicleApPowerStateShutdownParam
ได้รับการกําหนดไว้ใน
VehicleApPowerStateShutdownParam.aidl
รายการนี้ประกอบด้วยองค์ประกอบต่อไปนี้
ชื่อค่า | คำอธิบาย |
---|---|
CAN_SLEEP | AP สามารถเข้าสู่โหมดสลีปลึกแทนการปิดเครื่องโดยสมบูรณ์ อนุญาตให้เลื่อนเวลา |
CAN_HIBERNATE | AP สามารถเข้าสู่โหมดพักแทนการปิดเครื่องไปเลย อนุญาตให้เลื่อนเวลา |
SHUTDOWN_ONLY | AP ควรปิด อนุญาตให้เลื่อนเวลา ไม่อนุญาตให้ใช้โหมดสลีป |
SLEEP_IMMEDIATELY | AP อาจเข้าสู่โหมดหลับลึก แต่ต้องเข้าสู่โหมดสลีปหรือปิดเครื่องทันที ไม่อนุญาตให้เลื่อนเวลา |
HIBERNATE_IMMEDIATELY | AP อาจเข้าสู่โหมดระงับไปยังดิสก์ แต่ต้องเข้าสู่โหมดไฮเบอร์เนตหรือปิดทันที ไม่อนุญาตให้เลื่อนเวลา |
SHUTDOWN_IMMEDIATELY | AP ต้องปิดลงทันที ไม่อนุญาตให้เลื่อนเวลา ไม่อนุญาตให้ใช้โหมดสลีป |
แหล่งที่มาของการปลุก
ผู้ผสานรวมต้องปิดใช้แหล่งที่มาของการตื่นที่เหมาะสมเมื่ออุปกรณ์อยู่ในโหมดระงับ แหล่งที่มาของการตื่นที่พบบ่อย ได้แก่ Heartbeat, โมเด็ม, 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 แผนภาพการอ้างอิงออบเจ็กต์