專家
ClientConfigurator
定義於 fuchsia.power.systemmode/systemmode.fidl
可用於更新特定 ClientType 電源設定的通訊協定。
安裝
取得指定 ClientType 的電源設定。
如果 client_type 沒有電源設定,則不會顯示傳回的值。
- client_type指定要取得哪個 ClientType ClientConfig
- config是傳回的用戶端專屬設定;如果- client_type沒有現有設定,則傳回缺少值
要求
| 名稱 | 類型 | 
|---|---|
| client_type | fuchsia.power.clientlevel/ClientType | 
回應
| 名稱 | 類型 | 
|---|---|
| config | ClientConfig? | 
設定
設定指定的 ClientType 電源設定。
這個方法應搭配 GetConfig 使用,以便更新特定 ClientType 的現有電源設定,而不完全覆寫。
當特定 ClientType 的電源設定變更時,電源管理工具會根據新的設定重新評估該 ClientType 的當前功率設定。這項重新評估作業可能會將新的功率等級傳送至已連線的用戶端。
接收並驗證新設定後,呼叫會立即傳回。呼叫傳回後,系統才會套用因變更用戶端設定而套用的實際系統變更。因此,根據新系統電源模式更新用戶端時,如果發生任何錯誤,都不會傳回給呼叫端。而是「盡可能」套用用戶端更新。
如果提供的 config 無效,系統不會套用任何變更,並關閉管道。如果 ClientConfig 內含的多個 mode_match 項目重複指定 SystemMode,驗證就會失敗。
- client_type會指定要設定哪個 ClientType 的 ClientConfig
- config是要為 client_type 設定的 ClientConfig
要求
| 名稱 | 類型 | 
|---|---|
| client_type | fuchsia.power.clientlevel/ClientType | 
| config | ClientConfig | 
回應
<空白>
要求者
定義於 fuchsia.power.systemmode/systemmode.fidl
一種通訊協定,可用來要求變更目前使用中的系統電源模式。
要求
設定或清除系統電源模式的要求。
系統會在收到、驗證及接受要求後,立即傳回呼叫。呼叫傳回後,系統才會套用因這項要求而套用的實際系統變更。因此,根據新的系統電源模式更新用戶端時,如果發生任何錯誤,都不會傳回至呼叫端。而會「盡可能」套用用戶端更新。
這個方法傳回的錯誤代表要求本身無效,並遭到拒絕。具體拒絕原因的詳細資料會顯示在錯誤值中。如果發生錯誤,管道會保持開啟狀態。
用戶端可以使用這個方法單獨設定或清除系統電源模式變化版本。例如:
// 電池低於「低」門檻 Request(LOW_BATTERY, true);
// 裝置現已插入牆上 要求(ON_AC_POWER, true);
// 電池目前超過「低」門檻 Request(LOW_BATTERY, false);
- mode是要設定或清除的- SystemMode
- set應為 true 才能要求設定- mode,設為 false 即可清除
- ModeRequestError 值,表示要求遭拒的原因。
要求
| 名稱 | 類型 | 
|---|---|
| mode | SystemMode | 
| set | bool | 
回應
| 名稱 | 類型 | 
|---|---|
| payload | Requester_Request_Result | 
結構
ClientConfig
定義於 fuchsia.power.systemmode/systemmode.fidl
定義 ClientType 的電源設定。
如果用戶端已連線到指定 ClientType,PowerManager 就會使用針對該 ClientType 設定的 ClientConfig,根據目前啟用的系統電源模式選擇適當的電源等級。 電源層級選取程序如下特定 ClientType:
- 透過 ClientConfig.mode_matches 項目進行疊代。如果項目指定的 mode值包含在目前啟用的系統電源模式下,系統會選取該項目中的對應power_level,做為該用戶端目前的電源等級,並停止此用戶端的疊代。
- 如果 mode_matches中沒有相符的項目,則系統會選取default_level做為用戶端目前的電量等級。
| 欄位 | 類型 | 說明 | 預設 | 
|---|---|---|---|
| mode_matches | vector<ModeMatch> | 無預設 | |
| default_level | uint64 | 無預設 | 
模式比對
定義於 fuchsia.power.systemmode/systemmode.fidl
定義用於選取功率等級的模式比對條件。
特定 ClientType 的電源設定是由這些 ModeMatch 項目的集合組成。如果項目指定的 mode 含有目前啟用的系統電源模式,則會選取其 power_level 做為用戶端的電量。
| 欄位 | 類型 | 說明 | 預設 | 
|---|---|---|---|
| mode | SystemMode | 無預設 | |
| power_level | uint64 | 無預設 | 
要求者_要求回應
定義於 fuchsia.power.systemmode/systemmode.fidl
<空白>
表情符號
ModeRequestError 彈性
類型:uint32
定義於 fuchsia.power.systemmode/systemmode.fidl
Requester.Request 傳回的可能錯誤值。
| 名稱 | 值 | 說明 | 
|---|---|---|
| 一般 | 1 | 發生一般錯誤。 | 
SystemMode 彈性
類型:uint32
定義於 fuchsia.power.systemmode/systemmode.fidl
列舉支援的系統電源模式。
系統中的電源模式並非專屬模式,在任何特定時間可能會同時啟用多個電源模式。通常可定義整個系統的低耗電狀態或電源目標,例如「省電模式」。詳情請參閱 README.md。
請注意,新增變數時:請將 MAX_MODE_MATCHES_PER_CLIENT 更新為等於 SystemMode 變體的數量,以支援「最糟情況」的用戶端設定。
| 名稱 | 值 | 說明 | 
|---|
聯合國
Requester_Request_Result 嚴格
定義於 fuchsia.power.systemmode/systemmode.fidl
| 序數 | Variant | 類型 | 說明 | 
|---|---|---|---|
| 1 | response | Requester_Request_Response | |
| 2 | err | ModeRequestError | 
場景
| 名稱 | 值 | 類型 | 說明 | 
|---|---|---|---|
| MAX_MODE_MATCHES_PER_CLIENT | 0 | uint32 | ClientConfig 可包含的 ModeMatch 項目數量上限。 這個值應設為支援「SystemMode」變體數量,因為支援「最糟情況」用戶端設定所需的項目數量 (「最糟情況」是指設定時,每個支援的電源模式都需要模式比對項目)。 |