Fuchsia.power.systemmode

添加数量:7

协议

ClientConfigurator

fuchsia.power.systemmode/systemmode.fidl 中定义

可用于更新给定 ClientType 的电源配置的协议。

获取

获取指定 ClientType 的电源配置。

如果没有针对 client_type 的电源配置,则返回的值将不存在。

  • config 会返回特定于客户端的配置;如果 client_type 没有现有配置,则返回不存在的值

请求

名称类型
client_type fuchsia.power.clientlevel/ClientType

回复

名称类型
config ClientConfig?

设置

设置给定 ClientType 的电源配置。

此方法应与 GetConfig 结合使用,以便更新给定 ClientType 的现有电源配置,而不完全覆盖它。

当给定 ClientType 的电源配置发生更改时,电源管理器将根据新配置重新评估该 ClientType 的当前电源级别。此重新评估可能会导致向连接的客户端发送新的功率水平。

收到并验证新配置后,调用会立即返回。因更改客户端配置而要应用的实际系统更改将在调用返回后发生。因此,根据新的系统电源模式更新客户端时发生的任何错误都不会传播回调用方。而是会“尽力而为”地应用客户端更新。

如果提供的 config 无效,则不会应用任何更改,并且渠道将关闭。如果在 ClientConfig 包含的多个 mode_match 条目之间重复给定 SystemMode,则验证将失败。

请求

名称类型
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 以清除该设置

请求

名称类型
mode SystemMode
set bool

回复

名称类型
payload Requester_Request_Result

结构

客户端配置

fuchsia.power.systemmode/systemmode.fidl 中定义

定义 ClientType 的电源配置。

对于与给定 ClientType 连接的客户端,PowerManager 将使用为该 ClientType 配置的 ClientConfig,根据当前处于活动状态的系统电源模式选择适当的功率水平。对于给定的 ClientType,权能级别选择过程如下:

  1. 遍历 ClientConfig.mode_matches 条目。如果某个条目指定的 mode 值包含在当前处于活动状态的系统电源模式中,则该条目中相应的 power_level 将被选为此客户端的当前电源等级,并且此客户端的迭代将停止。
  2. 如果 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 中定义

序数变体类型说明
response Requester_Request_Response
err ModeRequestError

常量

名称类型说明
MAX_MODE_MATCHES_PER_CLIENT 0 uint32

ClientConfig 可以包含的 ModeMatch 条目的数量上限。

此值应设置为与 SystemMode 变体的数量相等,因为这是支持“最差”客户端配置所需的条目数(“最差”表示每个受支持的电源模式都需要模式匹配条目的配置)。