Skip to content

Commit 381d027

Browse files
committed
Map LittleFS errors to LVFS errors
1 parent 30138f2 commit 381d027

1 file changed

Lines changed: 54 additions & 16 deletions

File tree

src/displayapp/LittleVgl.cpp

Lines changed: 54 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,41 +15,79 @@ namespace {
1515
lv_theme_set_act(theme);
1616
}
1717

18+
constexpr lv_fs_res_t MapError(int err) {
19+
switch (err) {
20+
case LFS_ERR_OK:
21+
return LV_FS_RES_OK;
22+
case LFS_ERR_IO:
23+
return LV_FS_RES_HW_ERR;
24+
case LFS_ERR_CORRUPT:
25+
return LV_FS_RES_FS_ERR;
26+
case LFS_ERR_NOENT:
27+
return LV_FS_RES_NOT_EX;
28+
case LFS_ERR_EXIST:
29+
return LV_FS_RES_FS_ERR;
30+
case LFS_ERR_NOTDIR:
31+
return LV_FS_RES_FS_ERR;
32+
case LFS_ERR_ISDIR:
33+
return LV_FS_RES_FS_ERR;
34+
case LFS_ERR_NOTEMPTY:
35+
return LV_FS_RES_FS_ERR;
36+
case LFS_ERR_BADF:
37+
return LV_FS_RES_INV_PARAM;
38+
case LFS_ERR_FBIG:
39+
return LV_FS_RES_FULL;
40+
case LFS_ERR_INVAL:
41+
return LV_FS_RES_INV_PARAM;
42+
case LFS_ERR_NOSPC:
43+
return LV_FS_RES_FULL;
44+
case LFS_ERR_NOMEM:
45+
return LV_FS_RES_OUT_OF_MEM;
46+
case LFS_ERR_NOATTR:
47+
return LV_FS_RES_UNKNOWN;
48+
case LFS_ERR_NAMETOOLONG:
49+
return LV_FS_RES_INV_PARAM;
50+
default:
51+
return LV_FS_RES_UNKNOWN;
52+
}
53+
}
54+
1855
lv_fs_res_t lvglOpen(lv_fs_drv_t* drv, void* file_p, const char* path, lv_fs_mode_t /*mode*/) {
1956
lfs_file_t* file = static_cast<lfs_file_t*>(file_p);
2057
Pinetime::Controllers::FS* filesys = static_cast<Pinetime::Controllers::FS*>(drv->user_data);
2158
int res = filesys->FileOpen(file, path, LFS_O_RDONLY);
22-
if (res == 0) {
23-
if (file->type == 0) {
24-
return LV_FS_RES_FS_ERR;
25-
} else {
26-
return LV_FS_RES_OK;
27-
}
28-
}
29-
return LV_FS_RES_NOT_EX;
59+
return MapError(res);
3060
}
3161

3262
lv_fs_res_t lvglClose(lv_fs_drv_t* drv, void* file_p) {
3363
Pinetime::Controllers::FS* filesys = static_cast<Pinetime::Controllers::FS*>(drv->user_data);
3464
lfs_file_t* file = static_cast<lfs_file_t*>(file_p);
35-
filesys->FileClose(file);
36-
37-
return LV_FS_RES_OK;
65+
int res = filesys->FileClose(file);
66+
return MapError(res);
3867
}
3968

4069
lv_fs_res_t lvglRead(lv_fs_drv_t* drv, void* file_p, void* buf, uint32_t btr, uint32_t* br) {
4170
Pinetime::Controllers::FS* filesys = static_cast<Pinetime::Controllers::FS*>(drv->user_data);
4271
lfs_file_t* file = static_cast<lfs_file_t*>(file_p);
43-
filesys->FileRead(file, static_cast<uint8_t*>(buf), btr);
44-
*br = btr;
45-
return LV_FS_RES_OK;
72+
int res = filesys->FileRead(file, static_cast<uint8_t*>(buf), btr);
73+
if (res >= 0) {
74+
// br (bytes read) is allowed to be null
75+
if (br != nullptr) {
76+
*br = res;
77+
}
78+
return LV_FS_RES_OK;
79+
}
80+
return MapError(res);
4681
}
4782

4883
lv_fs_res_t lvglSeek(lv_fs_drv_t* drv, void* file_p, uint32_t pos) {
4984
Pinetime::Controllers::FS* filesys = static_cast<Pinetime::Controllers::FS*>(drv->user_data);
5085
lfs_file_t* file = static_cast<lfs_file_t*>(file_p);
51-
filesys->FileSeek(file, pos);
52-
return LV_FS_RES_OK;
86+
int res = filesys->FileSeek(file, pos);
87+
if (res >= 0) {
88+
return LV_FS_RES_OK;
89+
}
90+
return MapError(res);
5391
}
5492
}
5593

0 commit comments

Comments
 (0)