車輛模式和電源管理 (VPM) 代理程式可協助車輛控制軟體定義車輛 (SDV) 生態系統電源系統。
VPM 代理程式可促進車輛和電源模式與各種軟體元件之間的通訊,包括 SDV 代理程式和 SDV 內的服務套件。
VPM 代理程式可讓 SDV 元件追蹤車輛的目前狀態,例如運作模式 (例如停車或行駛) 和電源狀態 (例如開啟、暫停或關閉)。所有車輛軟體的車輛狀態都相同,但車輛中每個 SDV VM 的電源狀態都不一樣。
VPM 代理程式會向 SDV 系統平台發出信號,啟動特定電源模式。 這項功能可最佳化耗電量、縮短恢復時的啟動時間,並確保 SDV 各種軟體元件有效運作。
本頁面說明與 VPM 代理程式相關的主要需求、限制和依附元件。這份文件說明 VPM 代理程式的預期功能,並提供原始設備製造商 (OEM) 和其他 SDV 開發人員的整合指南。
建築
圖 1 說明電源管理架構:
圖 1. 電源管理架構。
VPM 代理程式會接收 OEM 電源管理服務的電源模式指令 (例如關機和暫停)。
VPM 代理程式會將這些指令轉送至適當的 SDV 代理程式,並等待代理程式執行指令。這種協調式方法可確保電源模式之間的轉換順暢安全,將資料遺失或系統不穩定的風險降到最低。
所有 SDV 代理程式完成電源轉換後,VPM 代理程式會通知 OEM,讓 OEM 系統繼續執行任何必要動作 (例如移至下一個狀態或關機)。電源轉換會造成阻斷;只有在所有 SDV 代理程式都在 OEM 定義的逾時時間內執行轉換時,才會發生轉換。
電源管理的狀態機器如下圖所示:
圖 2. 電源管理狀態機器。
VPM 代理程式會與自動化調度管理和生命週期管理系統搭配運作,將任何電源模式更新通知 SDV 服務套件。這樣一來,服務套件就能處理電源轉換,避免運作中斷。如要瞭解如何搭配服務套件使用電源管理狀態,以及處理 SDV 通訊,請參閱「處理暫停和繼續」。
電源狀態
SDV 允許的電源管理狀態如下:
| 狀態 | 說明 |
|---|---|
REPORT_UNSPECIFIED |
如果未指定任何報表,則為預設值。 |
POWER_OFF_EXIT |
VM 是從冷啟動開機。SDV 代理商以 init.rc 開頭。 |
SUSPEND_TO_RAM_EXIT |
VM 正在從暫停狀態恢復到 RAM。SDV 代理程式會從 RAM 繼續執行,並在訂閱電源狀態通知後收到電源更新通知。 |
ON |
VM 正常運作。 |
POWER_OFF_ENTER |
VM 正在準備關機。在此狀態下,應清除可提早清除的 OEM 應用程式。OEM 應用程式仍可依賴此階段執行的 SDV 代理程式。SDV 代理程式在這個階段不應暫停或關機,因為 OEM 應用程式可能仍需與其通訊。 |
SUSPEND_TO_RAM_ENTER |
VM 正在準備暫停至 RAM。應在這個狀態下清除可提早清除的 OEM 應用程式。OEM 應用程式仍可依賴此階段執行的 SDV 代理程式。SDV 代理程式在這個階段不應暫停或關機,因為 OEM 應用程式可能仍需與其通訊。 |
WAIT_FOR_FINISH |
VM 已完成初始清理作業,正在等待 OEM 的訊號,以完成或取消關機或暫停作業。 |
SHUTDOWN_CANCELLED |
原始設備製造商 (OEM) 已要求取消,準備關閉裝置。這項要求最晚須於 WAIT_FOR_FINISH提出。生命週期管理員要求 OEM 應用程式還原暫停或關機準備作業。 |
POWER_OFF_POST_FINISH |
OEM 提出 FINISH_SHUTDOWN 要求後,VM 會完成最終清理作業,並關閉基礎平台。SDV 代理程式應先清理資料,再關機。 |
SUSPEND_TO_RAM_POST_FINISH |
VM 即將暫停至 RAM,並將基礎平台暫停至 RAM。由於 SDV 代理程式也已停用,因此 OEM 應用程式目前不應依賴這類代理程式。SDV 代理商應在停權前執行清理作業。 |
接收車輛狀態的最新資訊
VPM 代理程式會從 OEM 的車輛控制服務套裝組合接收目前車輛模式的更新。
接著,代理程式會透過標準化 SDV 通訊堆疊,將這項資訊轉送至相關 SDV 元件。這項資訊會告知所有 SDV 元件車輛的運作狀態,以便相應調整行為。
如要接收車輛狀態的更新資訊,請在服務套件中使用下列 VSIDL 設定:
package: "com.sdv.google.vpm.vehicle.client.subscriber"
service_bundle {
name: "VehicleStateSubscriber"
//Subscriber to the vehicle state updates.
subscriber {
message: "com.sdv.google.vpm.vehicle.VehicleStateChange"
}
}
車輛模式和轉換作業為非阻塞性質,且屬於非同步作業。與電源轉換不同,系統不會強制執行任何狀態機器。
SDV 中車輛的允許狀態如下:
| 狀態 | 說明 |
|---|---|
VEHICLE_STATE_UNSPECIFIED |
如未指定狀態,車輛狀態的預設值。 |
LOW_POWER |
從使用者的角度來看,車輛已關閉,但 PCU 仍可偵測到車輛處於開啟狀態。 |
SOFTWARE_UPDATE |
車輛的部分或所有零件正在進行軟體更新。這些是與 SDV 無關的軟體更新。 |
PARK |
這項特定活動供應的 ECU 數量很少,且沒有顧客在場。 |
LIFE_ON_BOARD |
供應並使用舒適 ECU (例如座椅加熱器、叢集和中央面板),或偵測到顧客活動 (例如開門或解鎖車輛)。 |
VEHICLE_ON |
引擎 ECU 供電正常,引擎可運作,但車輛無法行駛。 |
TRACTION_ON |
引擎 ECU 已供應、引擎可運作,且車輛可駕駛。 |
使用 VPM 代理程式控制車輛和電源管理
請使用下列 VSIDL 定義,實作可控制 SDV 中電源狀態機器的服務套件:
package: "com.sdv.google.vpm.client"
service_bundle {
name: "VpmSystemClient"
//Client for VPM system interface.
client {
service: "com.sdv.google.vpm.VpmSystemService"
}
//Server to VPM notification interface.
server {
service: "com.sdv.google.vpm.client.PowerNotificationService"
}
}
實作套件並將 ACL 新增至 VPM 代理程式後,套件即可將 RPC 要求傳送至 VPM 代理程式,並在定義的伺服器上接收電源狀態通知。