// Copyright 2020 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.
@available(added=7)
library fuchsia.wlan.product.deprecatedclient;

using fuchsia.wlan.ieee80211 as ieee80211;

/// Represents the current association state of a client interface if one exists.
type State = strict enum {
    NO_CLIENT = 0;
    DISASSOCIATED = 1;
    ASSOCIATING = 2;
    ASSOCIATED = 3;
};

/// Encapsulates information associated with the access point to which a WLAN client is associated.
type Ap = struct {
    ssid string:ieee80211.MAX_SSID_BYTE_LEN;
    rssi_dbm int8;
};

/// Represents the current state of a WLAN client interface.
type WlanStatus = struct {
    state State;
    current_ap box<Ap>;
};

// NOTE: This FIDL protocol is deprecated.  Please do not add new uses that depend on it.
/// Allows legacy interactions with a WLAN client interface.
@discoverable
closed protocol DeprecatedClient {
    /// Queries the status of the most recently discovered WLAN client interface.
    strict Status() -> (struct {
        status WlanStatus;
    });
};
