PROTOCOLS
ClientConfigurator
Defined in fuchsia.power.systemmode/systemmode.fidl
A protocol that can be used to update the power configuration for a given ClientType.
Get
Gets the power configuration for the given ClientType.
If there is no power configuration for client_type
then the returned
value will be absent.
client_type
specifies which ClientType ClientConfig to get
config
is the returned client-specific configuration, or an absent value ifclient_type
does not have an existing configuration
Request
Name | Type |
---|---|
client_type |
fuchsia.power.clientlevel/ClientType
|
Response
Name | Type |
---|---|
config |
ClientConfig?
|
Set
Sets the power configuration for the given ClientType.
This method should be used in tandem with GetConfig in order to update the existing power configuration for a given ClientType without fully overwriting it.
When the power configuration for a given ClientType is changed, the Power Manager will reevaluate current power level of that ClientType according to the new configuration. This reevaluation may result in a new power level being sent to the connected client.
The call returns immediately after the new config has been received and validated. Actual system changes to be applied as a result of changing a client's configuration will occur after the call has returned. Therefore, any errors that occur while updating clients according to the new system power mode are not propagated back to the caller. Instead, client updates are applied on a "best effort" basis.
If the provided config
is not valid, then no changes will be applied
and the channel will be closed. Validation will fail if a given
SystemMode
is repeated across multiple mode_match
entries contained
by the ClientConfig
.
client_type
specifies which ClientType's ClientConfig to setconfig
is the ClientConfig that will be set for client_type
Request
Name | Type |
---|---|
client_type |
fuchsia.power.clientlevel/ClientType
|
config |
ClientConfig
|
Response
<EMPTY>
Requester
Defined in fuchsia.power.systemmode/systemmode.fidl
A protocol that can be used to request a change to the currently active system power modes.
Request
Requests to set or clear a system power mode.
The call returns immediately after the request has been received, validated, and accepted. Actual system changes to be applied as a result of this request will occur after the call has returned. Therefore, any errors that occur while updating clients according to the new system power mode are not propagated back to the caller. Instead, client updates are applied on a "best effort" basis.
An error returned by this method means the request itself is not valid and was rejected. Details of the specific rejection reason are reflected by the error value. In the event of an error, the channel will remain open.
A client can use this method to set or clear system power mode variants independently. For example:
// battery is below the "low" threshold Request(LOW_BATTERY, true);
// device is now plugged into the wall Request(ON_AC_POWER, true);
// battery is now above the "low" threshold Request(LOW_BATTERY, false);
mode
is theSystemMode
to request to be set or clearedset
should be true to request to setmode
, or false to clear it
- error a ModeRequestError value indicating why the request was rejected.
Request
Name | Type |
---|---|
mode |
SystemMode
|
set |
bool
|
Response
Name | Type |
---|---|
payload |
Requester_Request_Result
|
STRUCTS
ClientConfig
Defined in fuchsia.power.systemmode/systemmode.fidl
Defines the power configuration for a ClientType.
For a client connected with a given ClientType, the PowerManager will use the configured ClientConfig for that ClientType to choose the appropriate power level based on the currently active system power modes. The power level selection process is as follows for a given ClientType:
- Iterate through the ClientConfig.mode_matches entries. If the
mode
value specified by an entry is contained in the currently active system power modes, then the correspondingpower_level
from that entry will be selected as this client’s current power level, and iteration for this client will stop. - If no entry in
mode_matches
was matched, thendefault_level
will be selected as the client's current power level.
Field | Type | Description | Default |
---|---|---|---|
mode_matches |
vector<ModeMatch>
|
No default | |
default_level |
uint64
|
No default |
ModeMatch
Defined in fuchsia.power.systemmode/systemmode.fidl
Defines the mode-based match criterion for selecting a power level.
The power configuration for a given ClientType is made up of a
collection of these ModeMatch
entries. If an entry's specified mode
is
contained in the currently active system power modes, then its power_level
will be selected as the client's power level.
Field | Type | Description | Default |
---|---|---|---|
mode |
SystemMode
|
No default | |
power_level |
uint64
|
No default |
Requester_Request_Response
Defined in fuchsia.power.systemmode/systemmode.fidl
<EMPTY>
ENUMS
ModeRequestError flexible
Type: uint32
Defined in fuchsia.power.systemmode/systemmode.fidl
Possible error values returned by Requester.Request.
Name | Value | Description |
---|---|---|
GENERIC |
1 |
A generic error has occurred. |
SystemMode flexible
Type: uint32
Defined in fuchsia.power.systemmode/systemmode.fidl
Enumerates the supported system power modes.
Power modes in the system are non-exclusive -- more than one could be active at any given time. They typically define a system-wide low-power state or power goal, like "battery-saver mode". See the README.md for more details.
Note when adding a new variant: update MAX_MODE_MATCHES_PER_CLIENT to be
equal to the number of SystemMode
variants to support the "worst case"
client configuration.
Name | Value | Description |
---|
UNIONS
Requester_Request_Result strict
Defined in fuchsia.power.systemmode/systemmode.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
Requester_Request_Response
|
|
2 |
err |
ModeRequestError
|
CONSTANTS
Name | Value | Type | Description |
---|---|---|---|
MAX_MODE_MATCHES_PER_CLIENT |
0
|
uint32 |
Maximum number of ModeMatch entries that a ClientConfig may contain. This value should be set equal to the number of SystemMode variants, as that is the number of entries required to support the "worst case" client configuration ("worst case" means a configuration where a mode match entry is needed for each of the supported power modes). |