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