Control Surface
main
MIDI Control Surface library for Arduino
Toggle main menu visibility
Loading...
Searching...
No Matches
src
MIDI_Interfaces
USBMIDI
mbed
PluggableUSBMIDI.cpp
Go to the documentation of this file.
1
#if defined(ARDUINO_ARCH_MBED)
2
3
#include "
PluggableUSBMIDI.hpp
"
4
#include <
AH/Debug/Debug.hpp
>
5
6
#include <cstring>
// memcpy
7
8
BEGIN_CS_NAMESPACE
9
10
// ------------------------- CONSTRUCTOR/DESTRUCTOR ------------------------- //
11
12
PluggableUSBMIDI::PluggableUSBMIDI
() : PluggableUSBModule(2) {
13
PluggableUSBD().plug(
this
);
14
}
15
16
PluggableUSBMIDI::~PluggableUSBMIDI
() { PluggableUSBD().deinit(); }
17
18
// ----------------------------- INITIALIZATION ----------------------------- //
19
20
void
PluggableUSBMIDI::init
(EndpointResolver &resolver) {
21
bulk_in_ep
= resolver.endpoint_in(USB_EP_TYPE_BULK,
get_packet_size
());
22
bulk_out_ep
= resolver.endpoint_out(USB_EP_TYPE_BULK,
get_packet_size
());
23
assert(resolver.valid());
24
}
25
26
bool
PluggableUSBMIDI::connected
()
const
{
27
return
usb_connected
.load(std::memory_order_relaxed);
28
}
29
30
// --------------------------------- USB API -------------------------------- //
31
32
void
PluggableUSBMIDI::callback_state_change
(DeviceState new_state) {
33
assert_locked();
34
usb_connected
.store(new_state == USBDevice::Configured,
35
std::memory_order_relaxed);
36
}
37
38
uint32_t
PluggableUSBMIDI::callback_request
(
const
setup_packet_t *setup,
39
USBDevice::RequestResult *result,
40
uint8_t **data) {
41
assert_locked();
42
*result = USBDevice::PassThrough;
43
*data =
nullptr
;
44
return
0;
45
}
46
47
bool
PluggableUSBMIDI::callback_request_xfer_done
(
const
setup_packet_t *setup,
48
bool
aborted) {
49
assert_locked();
50
return
false
;
51
}
52
53
bool
PluggableUSBMIDI::callback_set_configuration
(uint8_t configuration) {
54
assert_locked();
55
56
PluggableUSBD().endpoint_add(
57
bulk_in_ep
,
get_packet_size
(), USB_EP_TYPE_BULK,
58
mbed::callback(
this
, &
PluggableUSBMIDI::in_callback
));
59
PluggableUSBD().endpoint_add(
60
bulk_out_ep
,
get_packet_size
(), USB_EP_TYPE_BULK,
61
mbed::callback(
this
, &
PluggableUSBMIDI::out_callback
));
62
63
timeout
.detach();
64
BulkTX::reset
();
65
BulkRX::reset
();
66
67
return
true
;
68
}
69
70
void
PluggableUSBMIDI::callback_set_interface
(uint16_t interface,
71
uint8_t alternate) {
72
assert_locked();
73
}
74
75
END_CS_NAMESPACE
76
77
#endif
Debug.hpp
PluggableUSBMIDI.hpp
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:14
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:11
PluggableUSBMIDI::PluggableUSBMIDI
PluggableUSBMIDI()
PluggableUSBMIDI::out_callback
void out_callback()
Definition
PluggableUSBMIDI.hpp:118
PluggableUSBMIDI::bulk_in_ep
usb_ep_t bulk_in_ep
Definition
PluggableUSBMIDI.hpp:105
PluggableUSBMIDI::callback_state_change
void callback_state_change(DeviceState new_state) override
PluggableUSBMIDI::timeout
mbed::Timeout timeout
Definition
PluggableUSBMIDI.hpp:103
PluggableUSBMIDI::callback_set_interface
void callback_set_interface(uint16_t interface, uint8_t alternate) override
PluggableUSBMIDI::usb_connected
interrupt_atomic< bool > usb_connected
Definition
PluggableUSBMIDI.hpp:100
PluggableUSBMIDI::callback_set_configuration
bool callback_set_configuration(uint8_t configuration) override
PluggableUSBMIDI::connected
bool connected() const
Check if this class is connected and ready.
PluggableUSBMIDI::init
void init(EndpointResolver &resolver) override
PluggableUSBMIDI::callback_request
uint32_t callback_request(const setup_packet_t *setup, USBDevice::RequestResult *result, uint8_t **data) override
PluggableUSBMIDI::in_callback
void in_callback()
Definition
PluggableUSBMIDI.hpp:113
PluggableUSBMIDI::callback_request_xfer_done
bool callback_request_xfer_done(const setup_packet_t *setup, bool aborted) override
PluggableUSBMIDI::bulk_out_ep
usb_ep_t bulk_out_ep
Definition
PluggableUSBMIDI.hpp:106
PluggableUSBMIDI::~PluggableUSBMIDI
~PluggableUSBMIDI()
PluggableUSBMIDI::get_packet_size
static constexpr uint32_t get_packet_size()
Definition
PluggableUSBMIDI.hpp:34
BulkRX::reset
void reset(uint16_t packet_size=MaxPacketSize)
BulkTX::reset
void reset(uint16_t packet_size=MaxPacketSize)
Generated by
1.17.0