@@ -36,6 +36,8 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
36
36
typedef void (*flush_callback_t )(void );
37
37
typedef bool (*ready_callback_t )(void );
38
38
typedef bool (*writable_callback_t )(void );
39
+ typedef bool (*start_stop_callback_t )(uint8_t power_condition, bool start,
40
+ bool load_eject);
39
41
40
42
Adafruit_USBD_MSC (void );
41
43
@@ -53,6 +55,7 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
53
55
write_callback_t wr_cb, flush_callback_t fl_cb);
54
56
void setReadyCallback (uint8_t lun, ready_callback_t cb);
55
57
void setWritableCallback (uint8_t lun, writable_callback_t cb);
58
+ void setStartStopCallback (uint8_t lun, start_stop_callback_t cb);
56
59
57
60
// ------------- Single LUN API -------------//
58
61
void setID (const char *vendor_id, const char *product_id,
@@ -75,6 +78,9 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
75
78
void setWritableCallback (writable_callback_t cb) {
76
79
setWritableCallback (0 , cb);
77
80
}
81
+ void setStartStopCallback (start_stop_callback_t cb) {
82
+ setStartStopCallback (0 , cb);
83
+ }
78
84
79
85
// from Adafruit_USBD_Interface
80
86
virtual uint16_t getInterfaceDescriptor (uint8_t itfnum, uint8_t *buf,
@@ -88,6 +94,7 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
88
94
flush_callback_t fl_cb;
89
95
ready_callback_t ready_cb;
90
96
writable_callback_t writable_cb;
97
+ start_stop_callback_t start_stop_cb;
91
98
92
99
const char *_inquiry_vid;
93
100
const char *_inquiry_pid;
@@ -114,6 +121,8 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
114
121
uint8_t *buffer, uint32_t bufsize);
115
122
friend void tud_msc_write10_complete_cb (uint8_t lun);
116
123
friend bool tud_msc_is_writable_cb (uint8_t lun);
124
+ friend bool tud_msc_start_stop_cb (uint8_t lun, uint8_t power_condition,
125
+ bool start, bool load_eject);
117
126
};
118
127
119
128
#endif /* ADAFRUIT_USBD_MSC_H_ */
0 commit comments