From 5c54624c6ade66c7cd9c0fb1ff60cb2283253e76 Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Thu, 18 Jan 2024 13:41:06 +0000 Subject: [PATCH 1/2] extmod/vfs_fat.c: Add method for setting filesystem label. Signed-off-by: Phil Howard --- extmod/vfs_fat.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/extmod/vfs_fat.c b/extmod/vfs_fat.c index efb6bf7e9815d..e96018d3af8f9 100644 --- a/extmod/vfs_fat.c +++ b/extmod/vfs_fat.c @@ -39,6 +39,7 @@ #include #include "py/runtime.h" #include "py/mperrno.h" +#include "py/objstr.h" #include "lib/oofatfs/ff.h" #include "extmod/vfs_fat.h" #include "shared/timeutils/timeutils.h" @@ -374,6 +375,22 @@ STATIC mp_obj_t fat_vfs_statvfs(mp_obj_t vfs_in, mp_obj_t path_in) { } STATIC MP_DEFINE_CONST_FUN_OBJ_2(fat_vfs_statvfs_obj, fat_vfs_statvfs); +STATIC mp_obj_t fat_vfs_label(mp_obj_t vfs_in, mp_obj_t label_in) { + #ifdef MICROPY_FATFS_USE_LABEL + mp_obj_fat_vfs_t *self = MP_OBJ_TO_PTR(vfs_in); + const char *label = mp_obj_str_get_str(label_in); + + FRESULT res = f_setlabel(&self->fatfs, label); + + if (FR_OK != res) { + mp_raise_OSError(fresult_to_errno_table[res]); + } + + #endif + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_2(fat_vfs_label_obj, fat_vfs_label); + STATIC mp_obj_t vfs_fat_mount(mp_obj_t self_in, mp_obj_t readonly, mp_obj_t mkfs) { fs_user_mount_t *self = MP_OBJ_TO_PTR(self_in); @@ -422,6 +439,7 @@ STATIC const mp_rom_map_elem_t fat_vfs_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_rename), MP_ROM_PTR(&fat_vfs_rename_obj) }, { MP_ROM_QSTR(MP_QSTR_stat), MP_ROM_PTR(&fat_vfs_stat_obj) }, { MP_ROM_QSTR(MP_QSTR_statvfs), MP_ROM_PTR(&fat_vfs_statvfs_obj) }, + { MP_ROM_QSTR(MP_QSTR_label), MP_ROM_PTR(&fat_vfs_label_obj) }, { MP_ROM_QSTR(MP_QSTR_mount), MP_ROM_PTR(&vfs_fat_mount_obj) }, { MP_ROM_QSTR(MP_QSTR_umount), MP_ROM_PTR(&fat_vfs_umount_obj) }, }; From 5131dbde591c10fa1ba4f6d9471c1a66893dfca1 Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Thu, 18 Jan 2024 13:47:20 +0000 Subject: [PATCH 2/2] ports/rp2: Set MSC label. Set the USB mass storage label when the filesystem is created. Signed-off-by: Phil Howard --- ports/rp2/modules/_boot_fat.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/rp2/modules/_boot_fat.py b/ports/rp2/modules/_boot_fat.py index 02a2df9babee5..36890ee9b2b99 100644 --- a/ports/rp2/modules/_boot_fat.py +++ b/ports/rp2/modules/_boot_fat.py @@ -10,6 +10,7 @@ except: os.VfsFat.mkfs(bdev) vfs = os.VfsFat(bdev) + vfs.label("RP2_MSC") os.mount(vfs, "/") del os, bdev, vfs