@@ -38,6 +38,8 @@ class PluggableUSBModule {
38
38
PluggableUSBModule (uint8_t numIfs) :
39
39
numInterfaces (numIfs)
40
40
{ }
41
+ virtual ~PluggableUSBModule ()
42
+ { }
41
43
void lock ();
42
44
void unlock ();
43
45
void assert_locked ();
@@ -49,17 +51,25 @@ class PluggableUSBModule {
49
51
uint32_t write_finish (usb_ep_t endpoint);
50
52
51
53
protected:
52
- virtual const uint8_t *configuration_desc (uint8_t index);
53
- virtual void callback_reset () {};
54
- virtual void callback_state_change (USBDevice::DeviceState new_state);
55
- virtual uint32_t callback_request (const USBDevice::setup_packet_t *setup, USBDevice::RequestResult *result, uint8_t ** data);
56
- virtual bool callback_request_xfer_done (const USBDevice::setup_packet_t *setup, bool aborted);
57
- virtual bool callback_set_configuration (uint8_t configuration);
58
- virtual void callback_set_interface (uint16_t interface, uint8_t alternate);
59
- virtual void init (EndpointResolver& resolver);
60
- virtual const uint8_t *string_iinterface_desc ();
54
+ virtual const uint8_t *configuration_desc (uint8_t index) = 0;
55
+ virtual void callback_state_change (USBDevice::DeviceState new_state) = 0;
56
+ virtual uint32_t callback_request (const USBDevice::setup_packet_t *setup, USBDevice::RequestResult *result, uint8_t ** data) = 0;
57
+ virtual bool callback_request_xfer_done (const USBDevice::setup_packet_t *setup, bool aborted) = 0;
58
+ virtual bool callback_set_configuration (uint8_t configuration) = 0;
59
+ virtual void callback_set_interface (uint16_t interface, uint8_t alternate) = 0;
60
+ virtual void init (EndpointResolver& resolver) = 0;
61
+ virtual const uint8_t *string_iinterface_desc () = 0;
61
62
virtual uint8_t getProductVersion () = 0;
62
63
64
+ /* *
65
+ * Non-pure virtual method with a non-inline definition
66
+ *
67
+ * @note This satisfies all criteria necessary for the compiler to emit a
68
+ * vtable, allowing users to safely subclass any of the derived "pluggable"
69
+ * USB device classes (USBCDC, USBHID, USBMIDI, etc).
70
+ */
71
+ virtual void callback_reset ();
72
+
63
73
uint8_t pluggedInterface;
64
74
65
75
const uint8_t numInterfaces;
0 commit comments