blob: 686ca669cd54b43ff82e23c6fc91bd2d625a8cf9 [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.wlan.policy
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div>
## **PROTOCOLS**
## AccessPointController {#AccessPointController}
*Defined in [fuchsia.wlan.policy/access_point_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/access_point_provider.fidl;l=42)*
<p>AccessPointControllers allow the caller to trigger wlan state changes. This
includes whether the device will act as an access point and provide a wlan
network for other co-located devices.</p>
### StartAccessPoint {#AccessPointController.StartAccessPoint}
<p>Enables wlan to initiate AccessPoint operation using the provided network
configuration, connectivity mode and band.</p>
#### Request {#AccessPointController.StartAccessPoint_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>config</code></td>
<td>
<code><a class='link' href='#NetworkConfig'>NetworkConfig</a></code>
</td>
</tr>
<tr>
<td><code>mode</code></td>
<td>
<code><a class='link' href='#ConnectivityMode'>ConnectivityMode</a></code>
</td>
</tr>
<tr>
<td><code>band</code></td>
<td>
<code><a class='link' href='#OperatingBand'>OperatingBand</a></code>
</td>
</tr>
</table>
#### Response {#AccessPointController.StartAccessPoint_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>status</code></td>
<td>
<code><a class='link' href='../fuchsia.wlan.common/'>fuchsia.wlan.common</a>/<a class='link' href='../fuchsia.wlan.common/#RequestStatus'>RequestStatus</a></code>
</td>
</tr>
</table>
### StopAccessPoint {#AccessPointController.StopAccessPoint}
<p>Deactivate AccessPoint operation for a specified network configuration.</p>
#### Request {#AccessPointController.StopAccessPoint_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>config</code></td>
<td>
<code><a class='link' href='#NetworkConfig'>NetworkConfig</a></code>
</td>
</tr>
</table>
#### Response {#AccessPointController.StopAccessPoint_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>status</code></td>
<td>
<code><a class='link' href='../fuchsia.wlan.common/'>fuchsia.wlan.common</a>/<a class='link' href='../fuchsia.wlan.common/#RequestStatus'>RequestStatus</a></code>
</td>
</tr>
</table>
### StopAllAccessPoints {#AccessPointController.StopAllAccessPoints}
<p>Deactivates all AccessPoints currently operating on the device.</p>
#### Request {#AccessPointController.StopAllAccessPoints_Request}
&lt;EMPTY&gt;
## AccessPointListener {#AccessPointListener}
*Defined in [fuchsia.wlan.policy/access_point_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/access_point_provider.fidl;l=32)*
<p>The AccessPointListener API provides a mechanism for callers to receive state change
updates about wlan access point operation.</p>
### GetListener {#AccessPointListener.GetListener}
<p>Registration for callers to receive wlan access point (ap) mode state updates.</p>
#### Request {#AccessPointListener.GetListener_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>updates</code></td>
<td>
<code><a class='link' href='#AccessPointStateUpdates'>AccessPointStateUpdates</a></code>
</td>
</tr>
</table>
## AccessPointProvider {#AccessPointProvider}
*Defined in [fuchsia.wlan.policy/access_point_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/access_point_provider.fidl;l=17)*
<p>The AccessPointProvider API provides a mechanism for access point
control and is intended to be called by applications or entities representing
the user (ex, Settings). This API is not intended to be called by other
applications to change wlan state without explicit user control.</p>
<p>The second aim of this API design is to eliminate the &quot;last-caller wins&quot;
paradigm by limiting the number of controlling applications. A single caller
at a time is permitted to make API calls that impact wlan state.</p>
### GetController {#AccessPointProvider.GetController}
<p>Control channel used by a single caller to trigger wlan access point (ap) mode
state changes. The caller also provides a channel to receive wlan ap updates.
Only one caller can have the control channel open at a time. Attempts to
register as a controller while there is an active control registration
will result in the new caller's provided channel being closed.</p>
#### Request {#AccessPointProvider.GetController_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>requests</code></td>
<td>
<code>server_end&lt;<a class='link' href='#AccessPointController'>AccessPointController</a>&gt;</code>
</td>
</tr>
<tr>
<td><code>updates</code></td>
<td>
<code><a class='link' href='#AccessPointStateUpdates'>AccessPointStateUpdates</a></code>
</td>
</tr>
</table>
## AccessPointStateUpdates {#AccessPointStateUpdates}
*Defined in [fuchsia.wlan.policy/access_point_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/access_point_provider.fidl;l=65)*
<p>AccessPoint operation status changes along with associated connection status.</p>
### OnAccessPointStateUpdate {#AccessPointStateUpdates.OnAccessPointStateUpdate}
<p>Updates registered listeners with the current summary of wlan access point
operating states. This will be called when there are changes with active
access point networks - both the number of access points and their
individual activity. Registered listeners are responsible for deciding
what information has changed (this is dependent on when they last
acknowledged the update).</p>
#### Request {#AccessPointStateUpdates.OnAccessPointStateUpdate_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>access_points</code></td>
<td>
<code>vector&lt;<a class='link' href='#AccessPointState'>AccessPointState</a>&gt;</code>
</td>
</tr>
</table>
#### Response {#AccessPointStateUpdates.OnAccessPointStateUpdate_Response}
&lt;EMPTY&gt;
## ClientController {#ClientController}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=47)*
<p>ClientControllers allow the caller to trigger wlan state changes. This includes
whether connections will be attempted, scan triggers and saved network
configuration changes.</p>
<p>Individual calls provided by the API are triggered after registering with
the wlan ClientProvider via the OpenControlChannel call.</p>
### Connect {#ClientController.Connect}
<p>Request to attempt a connection to the specified network. The target of the
connect call must already be a saved network. This call is not a
blocking call for the duration of the connection attempt. If the call cannot
be immediately attempted, a failure status will be returned. If the connection
request will be attempted, an acknowledgment status will be returned. Updates
to the connection status are disseminated via the ClientStateUpdates protocol.
If the connect attempt fails, the service will fall back to default behavior
with scanning and connecting via network selection.</p>
#### Request {#ClientController.Connect_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>id</code></td>
<td>
<code><a class='link' href='#NetworkIdentifier'>NetworkIdentifier</a></code>
</td>
</tr>
</table>
#### Response {#ClientController.Connect_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>status</code></td>
<td>
<code><a class='link' href='../fuchsia.wlan.common/'>fuchsia.wlan.common</a>/<a class='link' href='../fuchsia.wlan.common/#RequestStatus'>RequestStatus</a></code>
</td>
</tr>
</table>
### GetSavedNetworks {#ClientController.GetSavedNetworks}
<p>Retrieve the currently saved networks using the provided iterator.</p>
#### Request {#ClientController.GetSavedNetworks_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>iterator</code></td>
<td>
<code>server_end&lt;<a class='link' href='#NetworkConfigIterator'>NetworkConfigIterator</a>&gt;</code>
</td>
</tr>
</table>
### RemoveNetwork {#ClientController.RemoveNetwork}
<p>Removes a saved network configuration, if one exists. This method will
automatically trigger a disconnection if the NetworkConfig was used to
establish the connection.</p>
#### Request {#ClientController.RemoveNetwork_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>config</code></td>
<td>
<code><a class='link' href='#NetworkConfig'>NetworkConfig</a></code>
</td>
</tr>
</table>
#### Response {#ClientController.RemoveNetwork_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#ClientController_RemoveNetwork_Result'>ClientController_RemoveNetwork_Result</a></code>
</td>
</tr>
</table>
### SaveNetwork {#ClientController.SaveNetwork}
<p>Saves a network and any credential information needed to connect. Multiple
entries for the same NetworkIdentifier can exist if the credentials are
different. If a caller attempts to save a NetworkConfig with the same
NetworkIdentifier and same Credentials as a previously saved network
the method will effectively be a no-op.</p>
#### Request {#ClientController.SaveNetwork_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>config</code></td>
<td>
<code><a class='link' href='#NetworkConfig'>NetworkConfig</a></code>
</td>
</tr>
</table>
#### Response {#ClientController.SaveNetwork_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#ClientController_SaveNetwork_Result'>ClientController_SaveNetwork_Result</a></code>
</td>
</tr>
</table>
### ScanForNetworks {#ClientController.ScanForNetworks}
<p>Triggers a network scan. Note, even in normal operation, some scan requests
may be rejected due to timing with connection establishment or other critical
connection maintenance. If the scan is cancelled or errors, the caller is
notified via a status update in the ScanResultIterator.
In the current implementation, client connections must be started for a scan
to be performed.</p>
#### Request {#ClientController.ScanForNetworks_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>iterator</code></td>
<td>
<code>server_end&lt;<a class='link' href='#ScanResultIterator'>ScanResultIterator</a>&gt;</code>
</td>
</tr>
</table>
### StartClientConnections {#ClientController.StartClientConnections}
<p>Enables wlan to initiate connections to networks (either by autoconnecting
to saved networks or acting on incoming calls triggering connections).
Depending on the underlying capabilities of the device, this call may impact
other device operation (for example, acting as an access point).
The returned status represents acknowledgement of the request. The
ClientListener protocol should be monitored to learn when client functionality
has been enabled.</p>
#### Request {#ClientController.StartClientConnections_Request}
&lt;EMPTY&gt;
#### Response {#ClientController.StartClientConnections_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>status</code></td>
<td>
<code><a class='link' href='../fuchsia.wlan.common/'>fuchsia.wlan.common</a>/<a class='link' href='../fuchsia.wlan.common/#RequestStatus'>RequestStatus</a></code>
</td>
</tr>
</table>
### StopClientConnections {#ClientController.StopClientConnections}
<p>Tears down any existing connections to wlan networks and disables initiation of
new connections.
The returned status represents acknowledgements of the request. The
ClientListener protocol should be monitored to learn when client functionality
has been disabled.</p>
#### Request {#ClientController.StopClientConnections_Request}
&lt;EMPTY&gt;
#### Response {#ClientController.StopClientConnections_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>status</code></td>
<td>
<code><a class='link' href='../fuchsia.wlan.common/'>fuchsia.wlan.common</a>/<a class='link' href='../fuchsia.wlan.common/#RequestStatus'>RequestStatus</a></code>
</td>
</tr>
</table>
## ClientListener {#ClientListener}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=34)*
<p>The ClientListener API provides a mechanism for callers to receive state change
updates about wlan operation.</p>
### GetListener {#ClientListener.GetListener}
<p>Registration for callers to receive wlan client mode state updates.</p>
#### Request {#ClientListener.GetListener_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>updates</code></td>
<td>
<code><a class='link' href='#ClientStateUpdates'>ClientStateUpdates</a></code>
</td>
</tr>
</table>
## ClientProvider {#ClientProvider}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=19)*
<p>The ClientProvider API provides a mechanism for wlan control and is intended
to be called by applications or entities representing the user (ex, Settings).
This API is not intended to be called by other applications to change wlan
state without explicit user control.</p>
<p>The second aim of this API design is to eliminate the &quot;last-caller wins&quot;
paradigm by limiting the number of controlling applications. A single caller
at a time is permitted to make API calls that impact wlan state.</p>
### GetController {#ClientProvider.GetController}
<p>Control channel used by a single caller to trigger wlan client mode state
changes. The caller also provides a channel to receive wlan updates.
Only one caller can have the control channel open at a time. Attempts to
register as a controller while there is an active control registration
will result in the new caller's provided channel being closed.</p>
#### Request {#ClientProvider.GetController_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>requests</code></td>
<td>
<code>server_end&lt;<a class='link' href='#ClientController'>ClientController</a>&gt;</code>
</td>
</tr>
<tr>
<td><code>updates</code></td>
<td>
<code><a class='link' href='#ClientStateUpdates'>ClientStateUpdates</a></code>
</td>
</tr>
</table>
## ClientStateUpdates {#ClientStateUpdates}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=184)*
<p>Wlan status changes for client connections and the associated network state.
These updates contain information about whether or not the device will attempt
to connect to networks, saved network configuration change information,
individual connection state information by NetworkIdentifier and connection
attempt information. The connection and network related calls are based on
NetworkIdentifier to allow multiple simultaneous connections on supporting
devices.</p>
### OnClientStateUpdate {#ClientStateUpdates.OnClientStateUpdate}
<p>Updates registered listeners with the current summary of wlan client state.
This will be called when there is any change to the state and the
registered listeners are responsible for deciding what information has
changed (since this is dependent on when they last acknowledged the update).</p>
#### Request {#ClientStateUpdates.OnClientStateUpdate_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>summary</code></td>
<td>
<code><a class='link' href='#ClientStateSummary'>ClientStateSummary</a></code>
</td>
</tr>
</table>
#### Response {#ClientStateUpdates.OnClientStateUpdate_Response}
&lt;EMPTY&gt;
## NetworkConfigIterator {#NetworkConfigIterator}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=169)*
<p>Iterator used by callers to retrieve saved network information.</p>
### GetNext {#NetworkConfigIterator.GetNext}
<p>Method allowing the next block of saved networks to be handled.</p>
#### Request {#NetworkConfigIterator.GetNext_Request}
&lt;EMPTY&gt;
#### Response {#NetworkConfigIterator.GetNext_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>configs</code></td>
<td>
<code>vector&lt;<a class='link' href='#NetworkConfig'>NetworkConfig</a>&gt;</code>
</td>
</tr>
</table>
## ScanResultIterator {#ScanResultIterator}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=117)*
<p>Iterator used to send back scan results to the caller. The corresponding channel
will be closed after the scan is complete and results are returned or fails due
to an error.</p>
### GetNext {#ScanResultIterator.GetNext}
<p>Allows caller to request the next set of scan results.
After all scan results have been sent, the next call to GetNext will return
an empty vector and the channel will be closed.
If an error is encountered during the scan, the error will be returned and
the channel will be closed. No scan results will be provided.</p>
#### Request {#ScanResultIterator.GetNext_Request}
&lt;EMPTY&gt;
#### Response {#ScanResultIterator.GetNext_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#ScanResultIterator_GetNext_Result'>ScanResultIterator_GetNext_Result</a></code>
</td>
</tr>
</table>
## **STRUCTS**
### ClientController_RemoveNetwork_Response {#ClientController_RemoveNetwork_Response data-text="ClientController_RemoveNetwork_Response"}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=92)*
&lt;EMPTY&gt;
### ClientController_SaveNetwork_Response {#ClientController_SaveNetwork_Response data-text="ClientController_SaveNetwork_Response"}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=85)*
&lt;EMPTY&gt;
### Empty {#Empty data-text="Empty"}
*Defined in [fuchsia.wlan.policy/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/types.fidl;l=67)*
<p>Empty struct used in place of optional values.</p>
&lt;EMPTY&gt;
### NetworkIdentifier {#NetworkIdentifier data-text="NetworkIdentifier"}
*Defined in [fuchsia.wlan.policy/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/types.fidl;l=24)*
<p>Primary means of distinguishing between available networks - the combination of
the (mostly) human recognizable name and the security type. The security type is used
to distinguish between different network protection (or lack thereof) types.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="NetworkIdentifier.ssid">
<td><code>ssid</code></td>
<td>
<code><a class='link' href='../fuchsia.wlan.ieee80211/'>fuchsia.wlan.ieee80211</a>/<a class='link' href='../fuchsia.wlan.ieee80211/#Ssid'>Ssid</a></code>
</td>
<td><p>Network name, often used by users to choose between networks in the UI.</p>
</td>
<td>No default</td>
</tr>
<tr id="NetworkIdentifier.type">
<td><code>type</code></td>
<td>
<code><a class='link' href='#SecurityType'>SecurityType</a></code>
</td>
<td><p>Protection type (or not) for the network.</p>
</td>
<td>No default</td>
</tr>
</table>
### ScanResultIterator_GetNext_Response {#ScanResultIterator_GetNext_Response data-text="ScanResultIterator_GetNext_Response"}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=123)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ScanResultIterator_GetNext_Response.scan_results">
<td><code>scan_results</code></td>
<td>
<code>vector&lt;<a class='link' href='#ScanResult'>ScanResult</a>&gt;</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
## **ENUMS**
### Compatibility [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Compatibility data-text="Compatibility"}
Type: <code>uint32</code>
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=228)*
<p>High level compatibility for the scan result. Not all network security protocols
are supported. New protocols may be detected before they are connectable
and deprecated protocols may explicitly be unsupported due to security and
privacy concerns.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="Compatibility.SUPPORTED">
<td><h3 id="Compatibility.SUPPORTED" class="add-link hide-from-toc">SUPPORTED</h3></td>
<td><code>1</code></td>
<td><p>Denotes that the network is supported and connections can be attempted (given
appropriate credentials when required).</p>
</td>
</tr>
<tr id="Compatibility.DISALLOWED_INSECURE">
<td><h3 id="Compatibility.DISALLOWED_INSECURE" class="add-link hide-from-toc">DISALLOWED_INSECURE</h3></td>
<td><code>2</code></td>
<td><p>The network uses a deprecated security protocol and is explicitly not supported.</p>
</td>
</tr>
<tr id="Compatibility.DISALLOWED_NOT_SUPPORTED">
<td><h3 id="Compatibility.DISALLOWED_NOT_SUPPORTED" class="add-link hide-from-toc">DISALLOWED_NOT_SUPPORTED</h3></td>
<td><code>3</code></td>
<td><p>The network uses a currently unsupported security protocol.</p>
</td>
</tr>
</table>
### ConnectionState [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ConnectionState data-text="ConnectionState"}
Type: <code>uint32</code>
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=264)*
<p>Connection states used to update registered wlan observers.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ConnectionState.FAILED">
<td><h3 id="ConnectionState.FAILED" class="add-link hide-from-toc">FAILED</h3></td>
<td><code>1</code></td>
<td><p>The connection attempt was terminated due to an error.</p>
</td>
</tr>
<tr id="ConnectionState.DISCONNECTED">
<td><h3 id="ConnectionState.DISCONNECTED" class="add-link hide-from-toc">DISCONNECTED</h3></td>
<td><code>2</code></td>
<td><p>The network is disconnected.</p>
</td>
</tr>
<tr id="ConnectionState.CONNECTING">
<td><h3 id="ConnectionState.CONNECTING" class="add-link hide-from-toc">CONNECTING</h3></td>
<td><code>3</code></td>
<td><p>The device is attempting a connection to a network.</p>
</td>
</tr>
<tr id="ConnectionState.CONNECTED">
<td><h3 id="ConnectionState.CONNECTED" class="add-link hide-from-toc">CONNECTED</h3></td>
<td><code>4</code></td>
<td><p>The connection is now established. Note: This does not make any guarantees
about higher level network reachability.</p>
</td>
</tr>
</table>
### ConnectivityMode [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ConnectivityMode data-text="ConnectivityMode"}
Type: <code>uint32</code>
*Defined in [fuchsia.wlan.policy/access_point_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/access_point_provider.fidl;l=100)*
<p>Connectivity operating mode for the access point.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ConnectivityMode.LOCAL_ONLY">
<td><h3 id="ConnectivityMode.LOCAL_ONLY" class="add-link hide-from-toc">LOCAL_ONLY</h3></td>
<td><code>1</code></td>
<td><p>Allows for connectivity between co-located devices. Local only access points do not
forward traffic to other network connections.</p>
</td>
</tr>
<tr id="ConnectivityMode.UNRESTRICTED">
<td><h3 id="ConnectivityMode.UNRESTRICTED" class="add-link hide-from-toc">UNRESTRICTED</h3></td>
<td><code>2</code></td>
<td><p>Allows for full connectivity with traffic potentially being forwarded
to other network connections (ex., tethering mode).</p>
</td>
</tr>
</table>
### DisconnectStatus [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#DisconnectStatus data-text="DisconnectStatus"}
Type: <code>uint32</code>
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=280)*
<p>Disconnect and connection attempt failure status codes</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="DisconnectStatus.TIMED_OUT">
<td><h3 id="DisconnectStatus.TIMED_OUT" class="add-link hide-from-toc">TIMED_OUT</h3></td>
<td><code>1</code></td>
<td><p>The requested connection attempt failed due to timeout.</p>
</td>
</tr>
<tr id="DisconnectStatus.CREDENTIALS_FAILED">
<td><h3 id="DisconnectStatus.CREDENTIALS_FAILED" class="add-link hide-from-toc">CREDENTIALS_FAILED</h3></td>
<td><code>2</code></td>
<td><p>The requested connection attempt failed due to suspected credential failure.</p>
</td>
</tr>
<tr id="DisconnectStatus.CONNECTION_STOPPED">
<td><h3 id="DisconnectStatus.CONNECTION_STOPPED" class="add-link hide-from-toc">CONNECTION_STOPPED</h3></td>
<td><code>3</code></td>
<td><p>The existing connection was explicitly disconnected by an action of wlan
service on this device. This can be the result of wlan connections being
disabled, network configuration being removed or a connection attempt to a
different network (as examples).</p>
</td>
</tr>
<tr id="DisconnectStatus.CONNECTION_FAILED">
<td><h3 id="DisconnectStatus.CONNECTION_FAILED" class="add-link hide-from-toc">CONNECTION_FAILED</h3></td>
<td><code>4</code></td>
<td><p>The existing connection failed unexpectedly in a way that is not an
explicitly triggered disconnect by the device (or user). Examples
of unexpected disconnections include: an underlying error (driver,
firmware, etc.), beacon loss, access point failure.</p>
</td>
</tr>
</table>
### NetworkConfigChangeError [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#NetworkConfigChangeError data-text="NetworkConfigChangeError"}
Type: <code>uint32</code>
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=241)*
<p>Potential error cases for saving and removing network configurations.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="NetworkConfigChangeError.GENERAL_ERROR">
<td><h3 id="NetworkConfigChangeError.GENERAL_ERROR" class="add-link hide-from-toc">GENERAL_ERROR</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
<tr id="NetworkConfigChangeError.NETWORK_CONFIG_MISSING_FIELD_ERROR">
<td><h3 id="NetworkConfigChangeError.NETWORK_CONFIG_MISSING_FIELD_ERROR" class="add-link hide-from-toc">NETWORK_CONFIG_MISSING_FIELD_ERROR</h3></td>
<td><code>2</code></td>
<td></td>
</tr>
<tr id="NetworkConfigChangeError.NETWORK_CONFIG_WRITE_ERROR">
<td><h3 id="NetworkConfigChangeError.NETWORK_CONFIG_WRITE_ERROR" class="add-link hide-from-toc">NETWORK_CONFIG_WRITE_ERROR</h3></td>
<td><code>3</code></td>
<td></td>
</tr>
<tr id="NetworkConfigChangeError.SSID_EMPTY_ERROR">
<td><h3 id="NetworkConfigChangeError.SSID_EMPTY_ERROR" class="add-link hide-from-toc">SSID_EMPTY_ERROR</h3></td>
<td><code>4</code></td>
<td></td>
</tr>
<tr id="NetworkConfigChangeError.CREDENTIAL_LEN_ERROR">
<td><h3 id="NetworkConfigChangeError.CREDENTIAL_LEN_ERROR" class="add-link hide-from-toc">CREDENTIAL_LEN_ERROR</h3></td>
<td><code>6</code></td>
<td></td>
</tr>
<tr id="NetworkConfigChangeError.INVALID_SECURITY_CREDENTIAL_ERROR">
<td><h3 id="NetworkConfigChangeError.INVALID_SECURITY_CREDENTIAL_ERROR" class="add-link hide-from-toc">INVALID_SECURITY_CREDENTIAL_ERROR</h3></td>
<td><code>7</code></td>
<td></td>
</tr>
<tr id="NetworkConfigChangeError.UNSUPPORTED_CREDENTIAL_ERROR">
<td><h3 id="NetworkConfigChangeError.UNSUPPORTED_CREDENTIAL_ERROR" class="add-link hide-from-toc">UNSUPPORTED_CREDENTIAL_ERROR</h3></td>
<td><code>8</code></td>
<td></td>
</tr>
</table>
### OperatingBand [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#OperatingBand data-text="OperatingBand"}
Type: <code>uint32</code>
*Defined in [fuchsia.wlan.policy/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/types.fidl;l=54)*
<p>Operating band for wlan control request and status updates.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="OperatingBand.ANY">
<td><h3 id="OperatingBand.ANY" class="add-link hide-from-toc">ANY</h3></td>
<td><code>1</code></td>
<td><p>Allows for band switching depending on device operating mode and environment.</p>
</td>
</tr>
<tr id="OperatingBand.ONLY_2_4GHZ">
<td><h3 id="OperatingBand.ONLY_2_4GHZ" class="add-link hide-from-toc">ONLY_2_4GHZ</h3></td>
<td><code>2</code></td>
<td><p>Restricted to 2.4 GHz bands only.</p>
</td>
</tr>
<tr id="OperatingBand.ONLY_5GHZ">
<td><h3 id="OperatingBand.ONLY_5GHZ" class="add-link hide-from-toc">ONLY_5GHZ</h3></td>
<td><code>3</code></td>
<td><p>Restricted to 5 GHz bands only.</p>
</td>
</tr>
</table>
### OperatingState [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#OperatingState data-text="OperatingState"}
Type: <code>uint32</code>
*Defined in [fuchsia.wlan.policy/access_point_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/access_point_provider.fidl;l=111)*
<p>Current detailed operating state for an access point.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="OperatingState.FAILED">
<td><h3 id="OperatingState.FAILED" class="add-link hide-from-toc">FAILED</h3></td>
<td><code>1</code></td>
<td><p>Access point operation failed. Access points that enter the failed state will
have one update informing registered listeners of the failure and then an
additional update with the access point removed from the list.</p>
</td>
</tr>
<tr id="OperatingState.STARTING">
<td><h3 id="OperatingState.STARTING" class="add-link hide-from-toc">STARTING</h3></td>
<td><code>2</code></td>
<td><p>Access point operation is starting up.</p>
</td>
</tr>
<tr id="OperatingState.ACTIVE">
<td><h3 id="OperatingState.ACTIVE" class="add-link hide-from-toc">ACTIVE</h3></td>
<td><code>3</code></td>
<td><p>Access point operation is active.</p>
</td>
</tr>
</table>
### ScanErrorCode [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ScanErrorCode data-text="ScanErrorCode"}
Type: <code>uint32</code>
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=129)*
<p>Wlan scan error codes.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ScanErrorCode.GENERAL_ERROR">
<td><h3 id="ScanErrorCode.GENERAL_ERROR" class="add-link hide-from-toc">GENERAL_ERROR</h3></td>
<td><code>1</code></td>
<td><p>Unexpected scan error without a specific cause.</p>
</td>
</tr>
<tr id="ScanErrorCode.CANCELLED">
<td><h3 id="ScanErrorCode.CANCELLED" class="add-link hide-from-toc">CANCELLED</h3></td>
<td><code>2</code></td>
<td><p>Scan was cancelled and stopped. This can happen due to operating state changes,
higher priority operations or conflicting requests.</p>
</td>
</tr>
</table>
### SecurityType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#SecurityType data-text="SecurityType"}
Type: <code>uint32</code>
*Defined in [fuchsia.wlan.policy/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/types.fidl;l=13)*
<p>High level protection type for the network. This does not convey all details needed
for the mechanism of the connection, but is primarily used to map the target network
to proper scan results.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="SecurityType.NONE">
<td><h3 id="SecurityType.NONE" class="add-link hide-from-toc">NONE</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
<tr id="SecurityType.WEP">
<td><h3 id="SecurityType.WEP" class="add-link hide-from-toc">WEP</h3></td>
<td><code>2</code></td>
<td></td>
</tr>
<tr id="SecurityType.WPA">
<td><h3 id="SecurityType.WPA" class="add-link hide-from-toc">WPA</h3></td>
<td><code>3</code></td>
<td></td>
</tr>
<tr id="SecurityType.WPA2">
<td><h3 id="SecurityType.WPA2" class="add-link hide-from-toc">WPA2</h3></td>
<td><code>4</code></td>
<td></td>
</tr>
<tr id="SecurityType.WPA3">
<td><h3 id="SecurityType.WPA3" class="add-link hide-from-toc">WPA3</h3></td>
<td><code>5</code></td>
<td></td>
</tr>
</table>
### WlanClientState [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#WlanClientState data-text="WlanClientState"}
Type: <code>uint32</code>
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=219)*
<p>Wlan operating state for client connections</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="WlanClientState.CONNECTIONS_DISABLED">
<td><h3 id="WlanClientState.CONNECTIONS_DISABLED" class="add-link hide-from-toc">CONNECTIONS_DISABLED</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
<tr id="WlanClientState.CONNECTIONS_ENABLED">
<td><h3 id="WlanClientState.CONNECTIONS_ENABLED" class="add-link hide-from-toc">CONNECTIONS_ENABLED</h3></td>
<td><code>2</code></td>
<td></td>
</tr>
</table>
## **TABLES**
### AccessPointState {#AccessPointState data-text="AccessPointState"}
*Defined in [fuchsia.wlan.policy/access_point_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/access_point_provider.fidl;l=79)*
<p>Information about the individual operating access points. This includes limited
information about any connected clients.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="AccessPointState.state">
<td><h3 id="AccessPointState.state" class="add-link hide-from-toc">1</h3></td>
<td><code>state</code></td>
<td>
<code><a class='link' href='#OperatingState'>OperatingState</a></code>
</td>
<td><p>Current access point operating state</p>
</td>
</tr>
<tr id="AccessPointState.mode">
<td><h3 id="AccessPointState.mode" class="add-link hide-from-toc">2</h3></td>
<td><code>mode</code></td>
<td>
<code><a class='link' href='#ConnectivityMode'>ConnectivityMode</a></code>
</td>
<td><p>Requested operating connectivity mode</p>
</td>
</tr>
<tr id="AccessPointState.band">
<td><h3 id="AccessPointState.band" class="add-link hide-from-toc">3</h3></td>
<td><code>band</code></td>
<td>
<code><a class='link' href='#OperatingBand'>OperatingBand</a></code>
</td>
<td><p>Access point operating band.</p>
</td>
</tr>
<tr id="AccessPointState.frequency">
<td><h3 id="AccessPointState.frequency" class="add-link hide-from-toc">4</h3></td>
<td><code>frequency</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Access point operating frequency (in MHz).</p>
</td>
</tr>
<tr id="AccessPointState.clients">
<td><h3 id="AccessPointState.clients" class="add-link hide-from-toc">5</h3></td>
<td><code>clients</code></td>
<td>
<code><a class='link' href='#ConnectedClientInformation'>ConnectedClientInformation</a></code>
</td>
<td><p>Information about connected clients</p>
</td>
</tr>
<tr id="AccessPointState.id">
<td><h3 id="AccessPointState.id" class="add-link hide-from-toc">6</h3></td>
<td><code>id</code></td>
<td>
<code><a class='link' href='#NetworkIdentifier'>NetworkIdentifier</a></code>
</td>
<td><p>Identifying information of the access point whose state has changed.</p>
</td>
</tr>
</table>
### Bss {#Bss data-text="Bss"}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=153)*
<p>Information for a particular ScanResult entry.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Bss.bssid">
<td><h3 id="Bss.bssid" class="add-link hide-from-toc">1</h3></td>
<td><code>bssid</code></td>
<td>
<code><a class='link' href='../fuchsia.wlan.ieee80211/'>fuchsia.wlan.ieee80211</a>/<a class='link' href='../fuchsia.wlan.ieee80211/#MacAddr'>MacAddr</a></code>
</td>
<td><p>MAC address for the AP interface.</p>
</td>
</tr>
<tr id="Bss.rssi">
<td><h3 id="Bss.rssi" class="add-link hide-from-toc">2</h3></td>
<td><code>rssi</code></td>
<td>
<code>int8</code>
</td>
<td><p>Calculated received signal strength for the beacon/probe response.</p>
</td>
</tr>
<tr id="Bss.frequency">
<td><h3 id="Bss.frequency" class="add-link hide-from-toc">3</h3></td>
<td><code>frequency</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Operating frequency for this network (in MHz).</p>
</td>
</tr>
<tr id="Bss.timestamp_nanos">
<td><h3 id="Bss.timestamp_nanos" class="add-link hide-from-toc">4</h3></td>
<td><code>timestamp_nanos</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#time'>time</a></code>
</td>
<td><p>Time of the scan result relative to when the system was powered on.
See https://fuchsia.dev/fuchsia-src/concepts/time/language_support#monotonic_time</p>
</td>
</tr>
</table>
### ClientStateSummary {#ClientStateSummary data-text="ClientStateSummary"}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=198)*
<p>Information about the current client state for the device. This includes if the
device will attempt to connect to access points (when applicable), any existing
connections and active connection attempts and their outcomes.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ClientStateSummary.state">
<td><h3 id="ClientStateSummary.state" class="add-link hide-from-toc">1</h3></td>
<td><code>state</code></td>
<td>
<code><a class='link' href='#WlanClientState'>WlanClientState</a></code>
</td>
<td><p>State indicating whether wlan will attempt to connect to networks or not.</p>
</td>
</tr>
<tr id="ClientStateSummary.networks">
<td><h3 id="ClientStateSummary.networks" class="add-link hide-from-toc">2</h3></td>
<td><code>networks</code></td>
<td>
<code>vector&lt;<a class='link' href='#NetworkState'>NetworkState</a>&gt;</code>
</td>
<td><p>Active connections, connection attempts or failed connections.</p>
</td>
</tr>
</table>
### ConnectedClientInformation {#ConnectedClientInformation data-text="ConnectedClientInformation"}
*Defined in [fuchsia.wlan.policy/access_point_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/access_point_provider.fidl;l=126)*
<p>Connected client information. This is initially limited to the number of
connected clients.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ConnectedClientInformation.count">
<td><h3 id="ConnectedClientInformation.count" class="add-link hide-from-toc">1</h3></td>
<td><code>count</code></td>
<td>
<code>uint8</code>
</td>
<td><p>Number of connected clients</p>
</td>
</tr>
</table>
### NetworkConfig {#NetworkConfig data-text="NetworkConfig"}
*Defined in [fuchsia.wlan.policy/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/types.fidl;l=33)*
<p>Network information used to establish a connection.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="NetworkConfig.id">
<td><h3 id="NetworkConfig.id" class="add-link hide-from-toc">1</h3></td>
<td><code>id</code></td>
<td>
<code><a class='link' href='#NetworkIdentifier'>NetworkIdentifier</a></code>
</td>
<td><p>Identifier used to represent a specific network. No guarantee for uniqueness.</p>
</td>
</tr>
<tr id="NetworkConfig.credential">
<td><h3 id="NetworkConfig.credential" class="add-link hide-from-toc">2</h3></td>
<td><code>credential</code></td>
<td>
<code><a class='link' href='#Credential'>Credential</a></code>
</td>
<td><p>Information needed to join a network.</p>
</td>
</tr>
</table>
### NetworkState {#NetworkState data-text="NetworkState"}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=207)*
<p>Information about current network connections and attempts.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="NetworkState.id">
<td><h3 id="NetworkState.id" class="add-link hide-from-toc">1</h3></td>
<td><code>id</code></td>
<td>
<code><a class='link' href='#NetworkIdentifier'>NetworkIdentifier</a></code>
</td>
<td><p>Network id for the current connection (or attempt).</p>
</td>
</tr>
<tr id="NetworkState.state">
<td><h3 id="NetworkState.state" class="add-link hide-from-toc">2</h3></td>
<td><code>state</code></td>
<td>
<code><a class='link' href='#ConnectionState'>ConnectionState</a></code>
</td>
<td><p>Current state for the connection.</p>
</td>
</tr>
<tr id="NetworkState.status">
<td><h3 id="NetworkState.status" class="add-link hide-from-toc">3</h3></td>
<td><code>status</code></td>
<td>
<code><a class='link' href='#DisconnectStatus'>DisconnectStatus</a></code>
</td>
<td><p>Extra information for debugging or Settings display</p>
</td>
</tr>
</table>
### ScanResult {#ScanResult data-text="ScanResult"}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=140)*
<p>Information from an observed wlan network. This includes the
network name, security type, detected access point information and network
compatibility information.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ScanResult.id">
<td><h3 id="ScanResult.id" class="add-link hide-from-toc">1</h3></td>
<td><code>id</code></td>
<td>
<code><a class='link' href='#NetworkIdentifier'>NetworkIdentifier</a></code>
</td>
<td><p>Network properties used to distinguish between networks and to group
individual APs.</p>
</td>
</tr>
<tr id="ScanResult.entries">
<td><h3 id="ScanResult.entries" class="add-link hide-from-toc">2</h3></td>
<td><code>entries</code></td>
<td>
<code>vector&lt;<a class='link' href='#Bss'>Bss</a>&gt;</code>
</td>
<td><p>Individual access points offering the specified network.</p>
</td>
</tr>
<tr id="ScanResult.compatibility">
<td><h3 id="ScanResult.compatibility" class="add-link hide-from-toc">3</h3></td>
<td><code>compatibility</code></td>
<td>
<code><a class='link' href='#Compatibility'>Compatibility</a></code>
</td>
<td><p>Indication if the detected network is supported by the implementation.</p>
</td>
</tr>
</table>
## **UNIONS**
### ClientController_RemoveNetwork_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ClientController_RemoveNetwork_Result data-text="ClientController_RemoveNetwork_Result"}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=92)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="ClientController_RemoveNetwork_Result.response">
<td><h3 id="ClientController_RemoveNetwork_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#ClientController_RemoveNetwork_Response'>ClientController_RemoveNetwork_Response</a></code>
</td>
<td></td>
</tr>
<tr id="ClientController_RemoveNetwork_Result.err">
<td><h3 id="ClientController_RemoveNetwork_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#NetworkConfigChangeError'>NetworkConfigChangeError</a></code>
</td>
<td></td>
</tr>
</table>
### ClientController_SaveNetwork_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ClientController_SaveNetwork_Result data-text="ClientController_SaveNetwork_Result"}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=85)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="ClientController_SaveNetwork_Result.response">
<td><h3 id="ClientController_SaveNetwork_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#ClientController_SaveNetwork_Response'>ClientController_SaveNetwork_Response</a></code>
</td>
<td></td>
</tr>
<tr id="ClientController_SaveNetwork_Result.err">
<td><h3 id="ClientController_SaveNetwork_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#NetworkConfigChangeError'>NetworkConfigChangeError</a></code>
</td>
<td></td>
</tr>
</table>
### Credential [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Credential data-text="Credential"}
*Defined in [fuchsia.wlan.policy/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/types.fidl;l=42)*
<p>Information used to verify access to a target network.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Credential.none">
<td><h3 id="Credential.none" class="add-link hide-from-toc">1</h3></td>
<td><code>none</code></td>
<td>
<code><a class='link' href='#Empty'>Empty</a></code>
</td>
<td><p>The network does not use credentials (open networks).</p>
</td>
</tr>
<tr id="Credential.password">
<td><h3 id="Credential.password" class="add-link hide-from-toc">2</h3></td>
<td><code>password</code></td>
<td>
<code>vector&lt;uint8&gt;</code>
</td>
<td><p>Plaintext password (handled as binary data).</p>
</td>
</tr>
<tr id="Credential.psk">
<td><h3 id="Credential.psk" class="add-link hide-from-toc">3</h3></td>
<td><code>psk</code></td>
<td>
<code>vector&lt;uint8&gt;</code>
</td>
<td><p>Hash representation of the network passphrase (handled as binary data).</p>
</td>
</tr>
</table>
### ScanResultIterator_GetNext_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ScanResultIterator_GetNext_Result data-text="ScanResultIterator_GetNext_Result"}
*Defined in [fuchsia.wlan.policy/client_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl;l=123)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="ScanResultIterator_GetNext_Result.response">
<td><h3 id="ScanResultIterator_GetNext_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#ScanResultIterator_GetNext_Response'>ScanResultIterator_GetNext_Response</a></code>
</td>
<td></td>
</tr>
<tr id="ScanResultIterator_GetNext_Result.err">
<td><h3 id="ScanResultIterator_GetNext_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#ScanErrorCode'>ScanErrorCode</a></code>
</td>
<td></td>
</tr>
</table>