协议
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);
// 设备现在已插入墙壁中 Request(ON_AC_POWER, true);
// 电量现在高于“低”阈值 Request(LOW_BATTERY, false);
mode
是请求设置或清除的SystemMode
- 若要请求设置
mode
,应将set
设为 true,或设为 false 以清除该设置
- 错误:一个 ModeRequestError 值,指示请求被拒绝的原因。
请求
名称 | 类型 |
---|---|
mode |
SystemMode
|
set |
bool
|
回复
名称 | 类型 |
---|---|
payload |
Requester_Request_Result
|
结构
客户端配置
在 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 返回的可能错误值。
名称 | 值 | 说明 |
---|---|---|
GENERIC |
1 |
发生一般性错误。 |
SystemMode 柔性
类型:uint32
在 fuchsia.power.systemmode/systemmode.fidl 中定义
枚举支持的系统电源模式。
系统中的电源模式并不完全相同,也就是说,在任何给定时间都可能有多个电源模式处于活跃状态。它们通常定义系统级低功耗状态或功耗目标,例如“省电模式”。如需了解详情,请参阅 README.md。
添加新变体时请注意:请更新 MAX_MODE_MATCHES_PER_CLIENT 以使其等于 SystemMode
变体的数量,以支持“最差”客户端配置。
名称 | 值 | 说明 |
---|
联合
Requester_Request_Result 严格
在 fuchsia.power.systemmode/systemmode.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Requester_Request_Response
|
|
2 |
err |
ModeRequestError
|
常量
名称 | 值 | 类型 | 说明 |
---|---|---|---|
MAX_MODE_MATCHES_PER_CLIENT |
0
|
uint32 |
ClientConfig 可以包含的 ModeMatch 条目的数量上限。 此值应设置为与 SystemMode 变体的数量相等,因为这是支持“最差”客户端配置所需的条目数(“最差”表示每个受支持的电源模式都需要模式匹配条目的配置)。 |