kopia lustrzana https://github.com/micropython/micropython
stmhal/diskio: Add provision for default returns for ioctl INIT/SEC_SIZE.
If None was returned for such requests (which likely means that user simply didn't handle them), it means successful init and default sector size of 512 bytes respectively. This makes only BP_IOCTL_SEC_COUNT a mandatory request, and thus re-establishes parity with old interface, where only .count() is mandatory().pull/1845/head
rodzic
0ee1d0f407
commit
9e0478a902
|
@ -63,7 +63,7 @@ DSTATUS disk_initialize (
|
||||||
vfs->u.ioctl[2] = MP_OBJ_NEW_SMALL_INT(BP_IOCTL_INIT);
|
vfs->u.ioctl[2] = MP_OBJ_NEW_SMALL_INT(BP_IOCTL_INIT);
|
||||||
vfs->u.ioctl[3] = MP_OBJ_NEW_SMALL_INT(0); // unused
|
vfs->u.ioctl[3] = MP_OBJ_NEW_SMALL_INT(0); // unused
|
||||||
mp_obj_t ret = mp_call_method_n_kw(2, 0, vfs->u.ioctl);
|
mp_obj_t ret = mp_call_method_n_kw(2, 0, vfs->u.ioctl);
|
||||||
if (MP_OBJ_SMALL_INT_VALUE(ret) != 0) {
|
if (ret != mp_const_none && MP_OBJ_SMALL_INT_VALUE(ret) != 0) {
|
||||||
// error initialising
|
// error initialising
|
||||||
return STA_NOINIT;
|
return STA_NOINIT;
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,12 @@ DRESULT disk_ioctl (
|
||||||
vfs->u.ioctl[2] = MP_OBJ_NEW_SMALL_INT(BP_IOCTL_SEC_SIZE);
|
vfs->u.ioctl[2] = MP_OBJ_NEW_SMALL_INT(BP_IOCTL_SEC_SIZE);
|
||||||
vfs->u.ioctl[3] = MP_OBJ_NEW_SMALL_INT(0); // unused
|
vfs->u.ioctl[3] = MP_OBJ_NEW_SMALL_INT(0); // unused
|
||||||
mp_obj_t ret = mp_call_method_n_kw(2, 0, vfs->u.ioctl);
|
mp_obj_t ret = mp_call_method_n_kw(2, 0, vfs->u.ioctl);
|
||||||
*((WORD*)buff) = mp_obj_get_int(ret);
|
if (ret == mp_const_none) {
|
||||||
|
// Default sector size
|
||||||
|
*((WORD*)buff) = 512;
|
||||||
|
} else {
|
||||||
|
*((WORD*)buff) = mp_obj_get_int(ret);
|
||||||
|
}
|
||||||
return RES_OK;
|
return RES_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue