@@ -36,6 +36,7 @@ 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, bool load_eject);
3940
4041 Adafruit_USBD_MSC (void );
4142
@@ -53,6 +54,7 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
5354 write_callback_t wr_cb, flush_callback_t fl_cb);
5455 void setReadyCallback (uint8_t lun, ready_callback_t cb);
5556 void setWritableCallback (uint8_t lun, writable_callback_t cb);
57+ void setStartStopCallback (uint8_t lun, start_stop_callback_t cb);
5658
5759 // ------------- Single LUN API -------------//
5860 void setID (const char *vendor_id, const char *product_id,
@@ -75,6 +77,9 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
7577 void setWritableCallback (writable_callback_t cb) {
7678 setWritableCallback (0 , cb);
7779 }
80+ void setStartStopCallback (start_stop_callback_t cb) {
81+ setStartStopCallback (0 , cb);
82+ }
7883
7984 // from Adafruit_USBD_Interface
8085 virtual uint16_t getInterfaceDescriptor (uint8_t itfnum, uint8_t *buf,
@@ -88,6 +93,7 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
8893 flush_callback_t fl_cb;
8994 ready_callback_t ready_cb;
9095 writable_callback_t writable_cb;
96+ start_stop_callback_t start_stop_cb;
9197
9298 const char *_inquiry_vid;
9399 const char *_inquiry_pid;
@@ -114,6 +120,7 @@ class Adafruit_USBD_MSC : public Adafruit_USBD_Interface {
114120 uint8_t *buffer, uint32_t bufsize);
115121 friend void tud_msc_write10_complete_cb (uint8_t lun);
116122 friend bool tud_msc_is_writable_cb (uint8_t lun);
123+ friend bool tud_msc_start_stop_cb (uint8_t lun, uint8_t power_condition, bool start, bool load_eject);
117124};
118125
119126#endif /* ADAFRUIT_USBD_MSC_H_ */
0 commit comments