// 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.telephony.manager;

using fuchsia.telephony.ril;

/// Primary Telephony management interface
@discoverable
closed protocol Manager {
    /// Returns whether or not a modem is currently available on the system.
    strict IsAvailable() -> (struct {
        available bool;
    });

    /// Get access to a RIL
    // TODO(bwb): get per modem, not just first one on the system
    strict GetRilHandle(resource struct {
        ril_iface server_end:fuchsia.telephony.ril.RadioInterfaceLayer;
    }) -> (struct {
        status bool;
    });
};
