專家
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 的 ClientConfigconfig
是要為 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」變體數量,因為支援「最糟情況」用戶端設定所需的項目數量 (「最糟情況」是指設定時,每個支援的電源模式都需要模式比對項目)。 |