| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| library fuchsia.wlan.policy; |
| |
| using fuchsia.wlan.common; |
| |
| /// 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. |
| /// |
| /// The second aim of this API design is to eliminate the "last-caller wins" |
| /// paradigm by limiting the number of controlling applications. A single caller |
| /// at a time is permitted to make API calls that impact wlan state. |
| @discoverable |
| protocol AccessPointProvider { |
| /// 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. |
| GetController(resource struct { |
| requests server_end:AccessPointController; |
| updates client_end:AccessPointStateUpdates; |
| }); |
| }; |
| |
| /// The AccessPointListener API provides a mechanism for callers to receive state change |
| /// updates about wlan access point operation. |
| @discoverable |
| protocol AccessPointListener { |
| /// Registration for callers to receive wlan access point (ap) mode state updates. |
| GetListener(resource struct { |
| updates client_end:AccessPointStateUpdates; |
| }); |
| }; |
| |
| /// 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. |
| protocol AccessPointController { |
| /// Enables wlan to initiate AccessPoint operation using the provided network |
| /// configuration, connectivity mode and band. |
| StartAccessPoint(struct { |
| config NetworkConfig; |
| mode ConnectivityMode; |
| band OperatingBand; |
| }) -> (struct { |
| status fuchsia.wlan.common.RequestStatus; |
| }); |
| |
| /// Deactivate AccessPoint operation for a specified network configuration. |
| StopAccessPoint(struct { |
| config NetworkConfig; |
| }) -> (struct { |
| status fuchsia.wlan.common.RequestStatus; |
| }); |
| |
| /// Deactivates all AccessPoints currently operating on the device. |
| StopAllAccessPoints(); |
| }; |
| |
| /// AccessPoint operation status changes along with associated connection status. |
| protocol AccessPointStateUpdates { |
| /// 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). |
| // NOLINTNEXTLINE vector-bounds-not-specified |
| OnAccessPointStateUpdate(struct { |
| access_points vector<AccessPointState>; |
| }) -> (); |
| }; |
| |
| /// Information about the individual operating access points. This includes limited |
| /// information about any connected clients. |
| type AccessPointState = table { |
| /// Current access point operating state |
| 1: state OperatingState; |
| |
| /// Requested operating connectivity mode |
| 2: mode ConnectivityMode; |
| |
| /// Access point operating band. |
| 3: band OperatingBand; |
| |
| /// Access point operating frequency (in MHz). |
| 4: frequency uint32; |
| |
| /// Information about connected clients |
| 5: clients ConnectedClientInformation; |
| |
| /// Identifying information of the access point whose state has changed. |
| 6: id NetworkIdentifier; |
| }; |
| |
| /// Connectivity operating mode for the access point. |
| type ConnectivityMode = strict enum { |
| /// Allows for connectivity between co-located devices. Local only access points do not |
| /// forward traffic to other network connections. |
| LOCAL_ONLY = 1; |
| |
| /// Allows for full connectivity with traffic potentially being forwarded |
| /// to other network connections (ex., tethering mode). |
| UNRESTRICTED = 2; |
| }; |
| |
| /// Current detailed operating state for an access point. |
| type OperatingState = strict enum { |
| /// 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. |
| FAILED = 1; |
| |
| /// Access point operation is starting up. |
| STARTING = 2; |
| |
| /// Access point operation is active. |
| ACTIVE = 3; |
| }; |
| |
| /// Connected client information. This is initially limited to the number of |
| /// connected clients. |
| type ConnectedClientInformation = table { |
| /// Number of connected clients |
| 1: count uint8; |
| }; |