feat(fs driver): save only the pointer of the driver in lv_fs_drv_register

This commit is contained in:
Gabor Kiss-Vamosi
2021-03-14 13:42:32 +01:00
parent 7840f3577e
commit a431569455
5 changed files with 31 additions and 19 deletions

View File

@@ -28,7 +28,7 @@ static lv_color_t color_secondary_muted;// lv_color_indigo_lighten_5()
#define COLOR_GREY lv_color_grey_lighten_2()
#define RADIUS_DEFAULT LV_DPX(12)
#define RADIUS_DEFAULT (disp_size == DISP_LARGE ? LV_DPX(12) : LV_DPX(8))
/*SCREEN*/
#define COLOR_SCR lv_color_grey_lighten_4()
@@ -38,7 +38,7 @@ static lv_color_t color_secondary_muted;// lv_color_indigo_lighten_5()
#define BORDER_WIDTH LV_DPX(2)
#define OUTLINE_WIDTH LV_DPX(2)
#define PAD_DEF LV_DPX(24)
#define PAD_DEF (disp_size == DISP_LARGE ? LV_DPX(24) : LV_DPX(12))
#define PAD_SMALL (PAD_DEF / 2 + 2)
/**********************
@@ -139,6 +139,12 @@ typedef struct {
uint8_t light :1;
}my_theme_t;
typedef enum {
DISP_SMALL = 3,
DISP_MEDIUM = 2,
DISP_LARGE = 1,
}disp_size_t;
/**********************
* STATIC PROTOTYPES
**********************/
@@ -150,7 +156,7 @@ static void style_init_reset(lv_style_t * style);
**********************/
static my_theme_styles_t * styles;
static lv_theme_t theme;
static disp_size_t disp_size;
static bool inited;
/**********************
@@ -222,8 +228,8 @@ static void style_init(void)
lv_style_set_bg_opa(&styles->scr, LV_OPA_COVER);
lv_style_set_bg_color(&styles->scr, COLOR_SCR);
lv_style_set_text_color(&styles->scr, COLOR_SCR_TEXT);
lv_style_set_pad_row(&styles->scr, PAD_SMALL);
lv_style_set_pad_column(&styles->scr, PAD_SMALL);
lv_style_set_pad_row(&styles->scr, PAD_SMALL * disp_size);
lv_style_set_pad_column(&styles->scr, PAD_SMALL * disp_size);
style_init_reset(&styles->card);
lv_style_set_radius(&styles->card, RADIUS_DEFAULT);
@@ -250,15 +256,15 @@ static void style_init(void)
lv_style_set_outline_opa(&styles->outline_secondary, LV_OPA_50);
style_init_reset(&styles->btn);
lv_style_set_radius(&styles->btn, LV_DPX(16));
lv_style_set_radius(&styles->btn, (disp_size == DISP_LARGE ? LV_DPX(16) : LV_DPX(12)));
lv_style_set_bg_opa(&styles->btn, LV_OPA_COVER);
lv_style_set_bg_color(&styles->btn, COLOR_GREY);
lv_style_set_shadow_color(&styles->btn, lv_color_grey_lighten_3());
lv_style_set_shadow_width(&styles->btn, 1);
lv_style_set_shadow_ofs_y(&styles->btn, LV_DPX(4));
lv_style_set_text_color(&styles->btn, lv_color_grey_darken_4());
lv_style_set_pad_hor(&styles->btn, LV_DPX(40));
lv_style_set_pad_ver(&styles->btn, LV_DPX(15));
lv_style_set_pad_hor(&styles->btn, LV_DPX(40) / disp_size);
lv_style_set_pad_ver(&styles->btn, LV_DPX(15) / disp_size);
lv_style_set_pad_column(&styles->btn, LV_DPX(5));
lv_style_set_pad_row(&styles->btn, LV_DPX(5));
@@ -518,6 +524,10 @@ lv_theme_t * lv_theme_default_init(lv_disp_t * disp, lv_color_palette_t palette_
styles = (my_theme_styles_t *)LV_GC_ROOT(_lv_theme_default_styles);
}
if(LV_HOR_RES <= 240) disp_size = DISP_SMALL;
else if(LV_HOR_RES <= 800) disp_size = DISP_MEDIUM;
else disp_size = DISP_LARGE;
theme.disp = disp;
theme.palette_primary = palette_primary;
theme.palette_secondary = palette_secondary;

View File

@@ -69,7 +69,8 @@ void lv_indev_drv_init(lv_indev_drv_t * driver)
/**
* Register an initialized input device driver.
* @param driver pointer to an initialized 'lv_indev_drv_t' variable (can be local variable)
* @param driver pointer to an initialized 'lv_indev_drv_t' variable.
* Only pointer is saved, so the driver should be static or dynamically allocated.
* @return pointer to the new input device or NULL on error
*/
lv_indev_t * lv_indev_drv_register(lv_indev_drv_t * driver)

View File

@@ -48,7 +48,7 @@ static const char * lv_fs_get_real_path(const char * path);
void _lv_fs_init(void)
{
_lv_ll_init(&LV_GC_ROOT(_lv_fsdrv_ll), sizeof(lv_fs_drv_t));
_lv_ll_init(&LV_GC_ROOT(_lv_fsdrv_ll), sizeof(lv_fs_drv_t *));
}
bool lv_fs_is_ready(char letter)
@@ -261,21 +261,21 @@ void lv_fs_drv_init(lv_fs_drv_t * drv)
void lv_fs_drv_register(lv_fs_drv_t * drv_p)
{
/*Save the new driver*/
lv_fs_drv_t * new_drv;
lv_fs_drv_t ** new_drv;
new_drv = _lv_ll_ins_head(&LV_GC_ROOT(_lv_fsdrv_ll));
LV_ASSERT_MALLOC(new_drv);
if(new_drv == NULL) return;
lv_memcpy(new_drv, drv_p, sizeof(lv_fs_drv_t));
*new_drv = drv_p;
}
lv_fs_drv_t * lv_fs_get_drv(char letter)
{
lv_fs_drv_t * drv;
lv_fs_drv_t ** drv;
_LV_LL_READ(&LV_GC_ROOT(_lv_fsdrv_ll), drv) {
if(drv->letter == letter) {
return drv;
if((*drv)->letter == letter) {
return *drv;
}
}
@@ -284,11 +284,11 @@ lv_fs_drv_t * lv_fs_get_drv(char letter)
char * lv_fs_get_letters(char * buf)
{
lv_fs_drv_t * drv;
lv_fs_drv_t ** drv;
uint8_t i = 0;
_LV_LL_READ(&LV_GC_ROOT(_lv_fsdrv_ll), drv) {
buf[i] = drv->letter;
buf[i] = (*drv)->letter;
i++;
}

View File

@@ -118,7 +118,8 @@ void lv_fs_drv_init(lv_fs_drv_t * drv);
/**
* Add a new drive
* @param drv_p pointer to an lv_fs_drv_t structure which is inited with the
* corresponding function pointers. The data will be copied so the variable can be local.
* corresponding function pointers.
* Only pointer is saved, so the driver should be static or dynamically allocated.
*/
void lv_fs_drv_register(lv_fs_drv_t * drv_p);