blob: c41faa03e7ca81083291d7869e4a5fc36006586f [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.power.clientlevel
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div>
## **PROTOCOLS**
## Connector {#Connector}
*Defined in [fuchsia.power.clientlevel/clientlevel.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.power.clientlevel/clientlevel.fidl;l=22)*
<p>Allows a client to connect a <a class='link' href='#Watcher'>Watcher</a> to the power level of a given
<a class='link' href='#ClientType'>ClientType</a>.</p>
### Connect {#Connector.Connect}
<p>Connects a <a class='link' href='#Watcher'>Watcher</a> to the power level of the specified
<a class='link' href='#ClientType'>ClientType</a>.</p>
<p>A client may call this method and begin using the <a class='link' href='#Watcher'>Watcher</a> client
endpoint immediately.</p>
<p>If a power configuration does not exist for the provided <code>client_type</code>,
then the request will fail. On failure, both the <code>watcher</code> server
endpoint as well as the current <code>Connector</code> connection will be
terminated.</p>
<ul>
<li>
<p><code>client_type</code> specifies to which <a class='link' href='#ClientType'>ClientType</a> power level that
<code>watcher</code> should be connected. The value is valid iff a power
configuration exists for the provided <code>client_type</code>.</p>
</li>
<li>
<p><code>watcher</code> is the server endpoint of a <a class='link' href='#Watcher'>Watcher</a> channel that will be
connected to the <a class='link' href='#ClientType'>ClientType</a> power level.</p>
</li>
</ul>
#### Request {#Connector.Connect_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>client_type</code></td>
<td>
<code><a class='link' href='#ClientType'>ClientType</a></code>
</td>
</tr>
<tr>
<td><code>watcher</code></td>
<td>
<code>server_end&lt;<a class='link' href='#Watcher'>Watcher</a>&gt;</code>
</td>
</tr>
</table>
## Watcher {#Watcher}
*Defined in [fuchsia.power.clientlevel/clientlevel.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.power.clientlevel/clientlevel.fidl;l=54)*
<p>Allows a client to watch for changes to the power level of a given
<a class='link' href='#ClientType'>ClientType</a>.</p>
<p>This protocol cannot be connected to the service directly. Instead, the
server endpoint of a <code>Watcher</code> channel must first be connected to the power
level of the desired <a class='link' href='#ClientType'>ClientType</a> using the <a class='link' href='#Connector.Connect'>Connector.Connect</a> method.
The client endpoint of a <code>Watcher</code> channel is only useful after it has been
connected in this way.</p>
### Watch {#Watcher.Watch}
<p>Watches for changes to the power level of the connected <a class='link' href='#ClientType'>ClientType</a>.</p>
<p>The power level for a given <a class='link' href='#ClientType'>ClientType</a> is determined according to
the power configuration for that <a class='link' href='#ClientType'>ClientType</a>. See the
<a href="/src/power/power-manager/system_power_mode_config/README.md">README.md</a>
for more details.</p>
<p>On a given connection, the first call will return immediately with the
current power level for the connected <a class='link' href='#ClientType'>ClientType</a>. Subsequent <code>Watch</code>
requests will only return a new <code>level</code> if the power level of the
connected <a class='link' href='#ClientType'>ClientType</a> has changed. This follows the <a href="https://fuchsia.dev/fuchsia-src/concepts/api/fidl#hanging-get">hanging
get</a>
pattern.</p>
<ul>
<li><code>level</code> is an unsigned integer representing the power level of the
connected <a class='link' href='#ClientType'>ClientType</a>.</li>
</ul>
#### Request {#Watcher.Watch_Request}
&lt;EMPTY&gt;
#### Response {#Watcher.Watch_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>level</code></td>
<td>
<code>uint64</code>
</td>
</tr>
</table>
## **ENUMS**
### ClientType [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ClientType data-text="ClientType"}
Type: <code>uint32</code>
*Defined in [fuchsia.power.clientlevel/clientlevel.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.power.clientlevel/clientlevel.fidl;l=15)*
<p>A value that represents the type of client using the protocol.</p>
<p><code>ClientType</code> is used as a parameter for:</p>
<ol>
<li><a class='link' href='#Connector.Connect'>Connector.Connect</a> to connect a <a class='link' href='#Watcher'>Watcher</a> to the power level of
the specified client type</li>
<li><a class='link' href='../fuchsia.power.systemmode/'>fuchsia.power.systemmode</a>/<a class='link' href='../fuchsia.power.systemmode/#ClientConfigurator.Get'>ClientConfigurator.Get</a> and
<a class='link' href='../fuchsia.power.systemmode/'>fuchsia.power.systemmode</a>/<a class='link' href='../fuchsia.power.systemmode/#ClientConfigurator.Set'>ClientConfigurator.Set</a> to update the power
configuration of the specified client type</li>
</ol>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ClientType.WLAN">
<td><h3 id="ClientType.WLAN" class="add-link hide-from-toc">WLAN</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
</table>