blob: 107594807477c93627c89c1cd8effdc097e1e0b0 [file] [log] [blame]
// Copyright 2016 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.
#pragma once
#include <ddk/device.h>
#include <ddk/usb/usb.h>
#include <zircon/compiler.h>
#include <zircon/hw/usb.h>
#include <zircon/hw/usb/audio.h>
#if __cplusplus
#include <fbl/array.h>
#endif // __cplusplus
__BEGIN_CDECLS
zx_status_t usb_midi_sink_create(zx_device_t* device, usb_protocol_t* usb, int index,
const usb_interface_descriptor_t* intf,
const usb_endpoint_descriptor_t* ep,
const size_t req_size);
zx_status_t usb_midi_source_create(zx_device_t* device, usb_protocol_t* usb, int index,
const usb_interface_descriptor_t* intf,
const usb_endpoint_descriptor_t* ep,
const size_t req_size);
__END_CDECLS
#if __cplusplus
namespace audio {
namespace usb {
enum class Direction { Unknown, Input, Output };
enum class EndpointSyncType : uint8_t {
None = USB_ENDPOINT_NO_SYNCHRONIZATION,
Async = USB_ENDPOINT_ASYNCHRONOUS,
Adaptive = USB_ENDPOINT_ADAPTIVE,
Sync = USB_ENDPOINT_SYNCHRONOUS,
};
fbl::Array<uint8_t> FetchStringDescriptor(const usb_protocol_t& usb,
uint8_t desc_id,
uint16_t lang_id = 0,
uint16_t* out_lang_id = nullptr);
} // namespace usb
} // namespace audio
#endif // __cplusplus