// 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.
type LaunchError = strict enum {
    // 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(struct {
        device_id string:MAX;
    }) -> (struct {}) error LaunchError;
};
