@@ -66,7 +66,7 @@ enum Status {
66
66
67
67
USBMSD::USBMSD (BlockDevice *bd, bool connect_blocking, uint16_t vendor_id, uint16_t product_id, uint16_t product_release)
68
68
: USBDevice(get_usb_phy(), vendor_id, product_id, product_release),
69
- _initialized(false ), _in_task(&_queue), _out_task(&_queue), _reset_task(&_queue), _control_task(&_queue), _configure_task(&_queue), _bd(bd)
69
+ _initialized(false ), _media_removed( false ), _in_task(&_queue), _out_task(&_queue), _reset_task(&_queue), _control_task(&_queue), _configure_task(&_queue), _bd(bd)
70
70
{
71
71
_init ();
72
72
if (connect_blocking) {
@@ -78,7 +78,7 @@ USBMSD::USBMSD(BlockDevice *bd, bool connect_blocking, uint16_t vendor_id, uint1
78
78
79
79
USBMSD::USBMSD (USBPhy *phy, BlockDevice *bd, uint16_t vendor_id, uint16_t product_id, uint16_t product_release)
80
80
: USBDevice(phy, vendor_id, product_id, product_release),
81
- _initialized(false ), _in_task(&_queue), _out_task(&_queue), _reset_task(&_queue), _control_task(&_queue), _configure_task(&_queue), _bd(bd)
81
+ _initialized(false ), _media_removed( false ), _in_task(&_queue), _out_task(&_queue), _reset_task(&_queue), _control_task(&_queue), _configure_task(&_queue), _bd(bd)
82
82
{
83
83
_init ();
84
84
}
@@ -161,6 +161,7 @@ bool USBMSD::connect()
161
161
// connect the device
162
162
USBDevice::connect ();
163
163
_initialized = true ;
164
+ _media_removed = false ;
164
165
_mutex.unlock ();
165
166
_mutex_init.unlock ();
166
167
return true ;
@@ -213,7 +214,12 @@ void USBMSD::attach(mbed::Callback<void()> cb)
213
214
unlock ();
214
215
}
215
216
216
- int USBMSD::disk_read (uint8_t *data, uint64_t block, uint8_t count)
217
+ bool USBMSD::media_removed ()
218
+ {
219
+ return _media_removed;
220
+ }
221
+
222
+ int USBMSD::disk_read (uint8_t * data, uint64_t block, uint8_t count)
217
223
{
218
224
bd_addr_t addr = block * _bd->get_erase_size ();
219
225
bd_size_t size = count * _bd->get_erase_size ();
@@ -816,6 +822,7 @@ void USBMSD::CBWDecode(uint8_t *buf, uint16_t size)
816
822
case MEDIA_REMOVAL:
817
823
_csw.Status = CSW_PASSED;
818
824
sendCSW ();
825
+ _media_removed = true ;
819
826
break ;
820
827
default :
821
828
fail ();
0 commit comments