// 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.
/// Protocols and types related to sensors.
@available(added=7)
library fuchsia.location.sensor;

using fuchsia.wlan.policy;

/// Passively accepts WLAN scan results.
@discoverable
protocol WlanBaseStationWatcher {
    /// Provides a handle with which to enumerate the stations currently visible
    /// to the device.
    ReportCurrentStations(resource struct {
        stations client_end:fuchsia.wlan.policy.ScanResultIterator;
    });
};
