@@ -36,6 +36,8 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
3636 typedef void (*flush_callback_t )(void );
3737 typedef bool (*ready_callback_t )(void );
3838 typedef bool (*writable_callback_t )(void );
39+ typedef bool (*start_stop_callback_t )(uint8_t power_condition, bool start,
40+ bool load_eject);
3941
4042 Adafruit_USBD_MSC (void );
4143
@@ -53,6 +55,7 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
5355 write_callback_t wr_cb, flush_callback_t fl_cb);
5456 void setReadyCallback (uint8_t lun, ready_callback_t cb);
5557 void setWritableCallback (uint8_t lun, writable_callback_t cb);
58+ void setStartStopCallback (uint8_t lun, start_stop_callback_t cb);
5659
5760 // ------------- Single LUN API -------------//
5861 void setID (const char *vendor_id, const char *product_id,
@@ -75,6 +78,9 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
7578 void setWritableCallback (writable_callback_t cb) {
7679 setWritableCallback (0 , cb);
7780 }
81+ void setStartStopCallback (start_stop_callback_t cb) {
82+ setStartStopCallback (0 , cb);
83+ }
7884
7985 // from Adafruit_USBD_Interface
8086 virtual uint16_t getInterfaceDescriptor (uint8_t itfnum, uint8_t *buf,
@@ -88,6 +94,7 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
8894 flush_callback_t fl_cb;
8995 ready_callback_t ready_cb;
9096 writable_callback_t writable_cb;
97+ start_stop_callback_t start_stop_cb;
9198
9299 const char *_inquiry_vid;
93100 const char *_inquiry_pid;
@@ -114,6 +121,8 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
114121 uint8_t *buffer, uint32_t bufsize);
115122 friend void tud_msc_write10_complete_cb (uint8_t lun);
116123 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);
117126};
118127
119128#endif /* ADAFRUIT_USBD_MSC_H_ */
0 commit comments