12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // Copyright 2014 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.
- #ifndef MEDIA_MIDI_USB_MIDI_DEVICE_H_
- #define MEDIA_MIDI_USB_MIDI_DEVICE_H_
- #include <stddef.h>
- #include <stdint.h>
- #include <memory>
- #include <vector>
- #include "base/callback.h"
- #include "base/time/time.h"
- #include "media/midi/usb_midi_export.h"
- namespace midi {
- class UsbMidiDevice;
- // Delegate class for UsbMidiDevice.
- // Each method is called when an corresponding event arrives at the device.
- class USB_MIDI_EXPORT UsbMidiDeviceDelegate {
- public:
- virtual ~UsbMidiDeviceDelegate() {}
- // Called when USB-MIDI data arrives at |device|.
- virtual void ReceiveUsbMidiData(UsbMidiDevice* device,
- int endpoint_number,
- const uint8_t* data,
- size_t size,
- base::TimeTicks time) = 0;
- // Called when a USB-MIDI device is attached.
- virtual void OnDeviceAttached(std::unique_ptr<UsbMidiDevice> device) = 0;
- // Called when a USB-MIDI device is detached.
- virtual void OnDeviceDetached(size_t index) = 0;
- };
- // UsbMidiDevice represents a USB-MIDI device.
- // This is an interface class and each platform-dependent implementation class
- // will be a derived class.
- class USB_MIDI_EXPORT UsbMidiDevice {
- public:
- typedef std::vector<std::unique_ptr<UsbMidiDevice>> Devices;
- // Factory class for USB-MIDI devices.
- // Each concrete implementation will find and create devices
- // in platform-dependent way.
- class Factory {
- public:
- typedef base::OnceCallback<void(bool result, Devices* devices)> Callback;
- virtual ~Factory() {}
- // Enumerates devices.
- // Devices that have no USB-MIDI interfaces can be omitted.
- // When the operation succeeds, |callback| will be called with |true| and
- // devices.
- // Otherwise |callback| will be called with |false| and empty devices.
- // When this factory is destroyed during the operation, the operation
- // will be canceled silently (i.e. |callback| will not be called).
- // This function can be called at most once per instance.
- virtual void EnumerateDevices(UsbMidiDeviceDelegate* delegate,
- Callback callback) = 0;
- };
- virtual ~UsbMidiDevice() {}
- // Returns the descriptors of this device.
- virtual std::vector<uint8_t> GetDescriptors() = 0;
- // Return the name of the manufacturer.
- virtual std::string GetManufacturer() = 0;
- // Retur the name of the device.
- virtual std::string GetProductName() = 0;
- // Return the device version.
- virtual std::string GetDeviceVersion() = 0;
- // Sends |data| to the given USB endpoint of this device.
- virtual void Send(int endpoint_number, const std::vector<uint8_t>& data) = 0;
- };
- } // namespace midi
- #endif // MEDIA_MIDI_USB_MIDI_DEVICE_H_
|