blob: a6df833d5f1a87d71f7b4d680b017e1b6da5ef6a [file] [log] [blame]
// 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.hardware.midi;
using zx;
/// Describes what type of MIDI device an implementation of Device represents
type Info = struct {
/// Whether or not this device is a MIDI sink
is_sink bool;
/// Whether or not this device is a MIDI source
is_source bool;
};
const READ_SIZE uint32 = 3;
protocol Device {
/// Get information about the type of MIDI device
GetInfo() -> (struct {
info Info;
});
/// Reads data from the midi device. Only applicable if GetInfo returns
/// is_source.
Read() -> (struct {
event vector<uint8>:READ_SIZE;
}) error zx.status;
/// Writes data to the midi device. Only applicable if GetInfo returns
/// is_sink.
Write(struct {
data vector<uint8>:MAX;
}) -> (struct {}) error zx.status;
};