// Copyright 2019 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.io2;

using zx;

[Deprecated = "devices will be services in the future"]
bits DeviceSignal : uint32 {
    /// Indicates the device is ready for reading.
    READABLE = 0x01000000; // ZX_USER_SIGNAL_0
    /// Indicates the device is ready for writing.
    WRITABLE = 0x02000000; // ZX_USER_SIGNAL_1
    /// Indicates the device has encountered an error state.
    ERROR = 0x04000000; // ZX_USER_SIGNAL_2
    /// Indicates the device has hung up on the current connection.
    HANGUP = 0x08000000; // ZX_USER_SIGNAL_3
    /// Indicates an out-of-band state transition has occurred.
    OOB = 0x10000000; // ZX_USER_SIGNAL_4
};

/// The object may be cast to the shared interface of devices.
[Deprecated = "devices will be services in the future"]
resource table DeviceInfo {
    /// An optional event which transmits information about a device's state.
    ///
    /// The [`DeviceSignal`] values may be observed on this event.
    1: zx.handle:EVENTPAIR event;
};

/// The object may be cast to a Tty interface.
[Deprecated = "tty functionalities may be covered by a tty service"]
resource table TtyInfo {
    /// An optional event which transmits information about a device's state.
    ///
    /// The [`DeviceSignal`] values may be observed on this event.
    1: zx.handle:EVENTPAIR event;
};
