|  | // Copyright 2018 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.ap.policy; | 
|  |  | 
|  | using fuchsia.net; | 
|  | using fuchsia.wlan.common; | 
|  |  | 
|  | [Discoverable] | 
|  | protocol ApPolicy { | 
|  | OpenControlChannels(Requests requests, request<StateUpdates> updates); | 
|  | }; | 
|  |  | 
|  |  | 
|  | protocol Requests { | 
|  | StartAccessPoint(AccessPointParams params) -> (Status request_status); | 
|  | StopAccessPoint(bytes ssid) -> (Status request_status); | 
|  | }; | 
|  |  | 
|  |  | 
|  | protocol StateUpdates { | 
|  | -> OnAccessPointStatusChange(ApState ap_state, ApState previous_ap_state); | 
|  | -> OnAccessPointClientUpdate(ApBand ap_band, int32 frequency, vector<ApClient> clients); | 
|  | }; | 
|  |  | 
|  | struct Status { | 
|  | fuchsia.wlan.common.RequestStatus status; | 
|  | string message; | 
|  | }; | 
|  |  | 
|  |  | 
|  | struct AccessPointParams { | 
|  | bytes ssid; // 0 - 32 bytes | 
|  | bytes passphrase; // 8 - 63 char | 
|  | ApBand band; | 
|  | }; | 
|  |  | 
|  |  | 
|  | enum ApBand { | 
|  | /// allows the band to switch depending on device | 
|  | /// operating mode and environment | 
|  | BAND_ANY = 0; | 
|  | /// restricted to 2.4ghz bands only | 
|  | BAND_2_4GHZ = 1; | 
|  | /// restricted to 5ghz bands only | 
|  | BAND_5GHZ = 2; | 
|  | }; | 
|  |  | 
|  |  | 
|  | enum ApState { | 
|  | /// confirmation that the softap interface will attempt to be | 
|  | /// created (this can take seconds on some devices) | 
|  | STARTING = 0; | 
|  | UP = 1; | 
|  | DOWN = 2; | 
|  | }; | 
|  |  | 
|  |  | 
|  | struct ApClient { | 
|  | fuchsia.net.MacAddress mac; | 
|  | }; |