// 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]
protocol Manager {
  /// Returns whether or not a modem is currently available on the system.
  IsAvailable() -> (bool available);

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