22 #include "USBDescriptor.h" 23 #include "USBDevice_Types.h" 25 #include "USBDevice.h" 26 #include "MIDIMessage.h" 27 #include "EventFlags.h" 28 #include "rtos/Mutex.h" 31 #define DEFAULT_CONFIGURATION (1) 75 USBMIDI(
bool connect_blocking =
true, uint16_t vendor_id = 0x0700, uint16_t product_id = 0x0101, uint16_t product_release = 0x0001);
93 USBMIDI(
USBPhy *phy, uint16_t vendor_id, uint16_t product_id, uint16_t product_release);
155 virtual void callback_set_configuration(uint8_t configuration);
157 virtual void callback_set_interface(uint16_t interface, uint8_t alternate);
159 virtual const uint8_t *string_iproduct_desc();
161 virtual const uint8_t *string_iinterface_desc();
163 virtual const uint8_t *configuration_desc(uint8_t index);
166 static const uint32_t MaxSize = 64;
168 uint8_t _bulk_buf[MaxSize];
169 uint32_t _bulk_buf_pos;
170 uint32_t _bulk_buf_size;
173 uint8_t _data[MAX_MIDI_MESSAGE_SIZE + 1];
181 uint8_t _config_descriptor[0x65];
187 void _out_callback();
188 bool _next_message();
bool write(MIDIMessage m)
Send a MIDIMessage.
virtual void callback_request_xfer_done(const setup_packet_t *setup, bool aborted)
Called by USBDevice on data stage completion.
The EventFlags class is used to control event flags or wait for event flags other threads control...
USBMIDI(bool connect_blocking=true, uint16_t vendor_id=0x0700, uint16_t product_id=0x0101, uint16_t product_release=0x0001)
Basic constructor.
bool readable()
Check if a message can be read.
void attach(mbed::Callback< void()> callback)
Attach a callback for when a MIDIEvent is received.
bool ready()
Check if this class is ready.
bool read(MIDIMessage *m)
Read a message.
Abstract interface to physical USB hardware.
virtual ~USBMIDI()
Destroy this object.
A MIDI message container.
virtual void callback_request(const setup_packet_t *setup)
Called by USBDevice on Endpoint0 request.
virtual void callback_state_change(DeviceState new_state)
Called when USB changes state.
The Mutex class is used to synchronize the execution of threads.
void wait_ready()
Block until this device is configured.
Callback class based on template specialization.