implemented microSD mount/unmount functions

This commit is contained in:
Luxferre
2025-12-22 23:54:41 +02:00
parent 7c6a4823df
commit ebbf0fbbe6
3 changed files with 28 additions and 3 deletions
+2
View File
@@ -77,6 +77,8 @@ Exports the following functions:
- `lock_rootfs()`: make the device root filesystem read-only (does nothing on desktop)
- `stat(path)` (aka `du(path)`): alias to `os.stat` but returning the stats as a dictionary
- `statvfs(path)` (aka `df(path)`): alias to `os.statvfs` but returning the stats as a dictionary
- `mount_sd(path='/sd', readonly=False)`: mount the inserted microSD card (T-Deck only, must be FAT32)
- `umount_sd(path='/sd')`: unmount the inserted microSD card (T-Deck only)
The following `deck.fs` functions are direct aliases to the corresponding `os` call counterparts:
+23 -1
View File
@@ -5,7 +5,7 @@ import os
MCU_STORAGE = False
try:
import storage
import storage, sdcardio, board
MCU_STORAGE = True
except:
pass
@@ -18,6 +18,28 @@ def lock_rootfs():
if MCU_STORAGE:
storage.remount("/", readonly=True)
def mount_sd(path='/sd', readonly=False):
sd_ok = True
if MCU_STORAGE:
try:
sdcard = sdcardio.SDCard(board.SPI(), board.SDCARD_CS)
vfs = storage.VfsFat(sdcard)
storage.mount(vfs, path, readonly=readonly)
sd_ok = True
except:
sd_ok = False
return sd_ok
def umount_sd(path='/sd'):
sd_ok = True
if MCU_STORAGE:
try:
storage.umount(path)
sd_ok = True
except:
sd_ok = False
return sd_ok
# TODO: switch to buffered copying to avoid RAM overflow
def copy(p1, p2):
with open(p1, 'rb') as f1:
+3 -2
View File
@@ -3,10 +3,11 @@
# Usage: from tdeckboot import *
# Created by Luxferre in 2025, released into public domain
from deck.fs import unlock_rootfs, lock_rootfs, env, rnd, sync
from deck.fs import du, df, sep, pwd, ls, md, cd, rd, rm, mv, cp
from deck.fs import unlock_rootfs, lock_rootfs, mount_sd, umount_sd, env, rnd
from deck.fs import du, df, sep, pwd, ls, md, cd, rd, rm, mv, cp, sync
from deck.input import input, input_multi
from deck.pager import print_paged, term_size
# from deck.hwinfo import
from app.ed import edit, view
try:
from deck import net