123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // Copyright 2016 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- module midi.mojom;
- import "mojo/public/mojom/base/time.mojom";
- enum Result {
- NOT_INITIALIZED,
- OK,
- NOT_SUPPORTED,
- INITIALIZATION_ERROR,
- };
- enum PortState {
- DISCONNECTED,
- CONNECTED,
- OPENED,
- };
- struct PortInfo {
- string id;
- string manufacturer;
- string name;
- string version;
- PortState state;
- };
- // Interface for MIDI related browser to renderer messages.
- interface MidiSessionClient {
- // These functions are called in 2 cases:
- // (1) Just before calling |SessionStarted|, to notify the recipient about
- // existing ports.
- // (2) To notify the recipient that a new device was connected and that new
- // ports have been created.
- AddInputPort(PortInfo info);
- AddOutputPort(PortInfo info);
- // Used to notify clients when a device is disconnected or reconnected. The
- // ports correspond to ports already sent to the client using AddInputPort/
- // AddOutputPort.
- SetInputPortState(uint32 port, PortState state);
- SetOutputPortState(uint32 port, PortState state);
- // Called in response to StartSession and indicates if a connection with
- // MIDI hardware was successfully made.
- SessionStarted(Result result);
- // Used to inform the client incrementally of how many bytes have been
- // successfully sent. This is only called after the client calls SendData().
- AcknowledgeSentData(uint32 bytes);
- // Called to send MIDI data to the client.
- DataReceived(uint32 port,
- array<uint8> data,
- mojo_base.mojom.TimeTicks timestamp);
- };
- // Interface used by the renderer to start a MIDI session in the browser.
- interface MidiSessionProvider {
- // Start session to access MIDI hardware.
- StartSession(pending_receiver<MidiSession> receiver,
- pending_remote<MidiSessionClient> client);
- };
- // Represents an active MIDI session.
- interface MidiSession {
- // Send data to a MIDI output port. The output port should be a port already
- // sent to the client (via AddOutputPort).
- SendData(uint32 port, array<uint8> data, mojo_base.mojom.TimeTicks timestamp);
- };
|