feat(fs driver): save only the pointer of the driver in lv_fs_drv_register
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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++;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user