// 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.

library fuchsia.castremotecontrol;

// LaunchError enumerates the various ways in which launching a
// remote control app may fail.
enum LaunchError {
    // The media session to control for the provided device could not be found.
    NOT_FOUND = 1;

    // A non-recoverable internal error occurred.
    INTERNAL = 2;
};

[Discoverable]
protocol Launcher {
    /// Launches the Cast remote control application for the device
    /// identified by |device_id|.
    Launch(string:MAX device_id) -> () error LaunchError;
};
