Compare commits

..

No commits in common. "6d0db713058de5760cf311017f72ec0eaaa8ea39" and "76d8557f3616e4e7961e1e69bd183da0da1ca48a" have entirely different histories.

7 changed files with 20 additions and 140 deletions

1
firmware/.gitignore vendored
View File

@ -7,4 +7,3 @@ sdkconfig.old
/main/img/*.c /main/img/*.c
/assets/moon.png /assets/moon.png
/assets/star.png /assets/star.png
/assets/sleep.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@ -27,9 +27,8 @@
done done
''; '';
gen-imgs.exec = '' gen-imgs.exec = ''
for e in moon star sleep; do magick assets/moon_orig.png -resize 180x180 assets/moon.png
magick assets/''${e}_orig.png -resize 120x120 assets/$e.png magick assets/star_orig.png -resize 180x180 assets/star.png
done
${genImgsPy}/bin/python gen-imgs.py ${genImgsPy}/bin/python gen-imgs.py
''; '';

View File

@ -11,7 +11,7 @@ def rgb2h(r, g, b):
def bytes_line(bs): def bytes_line(bs):
return ' ' + ' '.join(map(lambda i: f'{i:#x},', bs)) + '\n' return ' ' + ' '.join(map(lambda i: f'{i:#x},', bs)) + '\n'
imgs = ['bg.png', 'moon.png', 'star.png', 'sleep.png'] imgs = ['bg.png', 'moon.png', 'star.png']
for fname in imgs: for fname in imgs:
alpha = [] alpha = []
with Image.open(os.path.join('assets/', fname)) as img: with Image.open(os.path.join('assets/', fname)) as img:

View File

@ -1,6 +1,3 @@
idf_component_register( idf_component_register(
SRCS SRCS "valconomy.c" "ui.c" "lcd.c" "usb.c" "font/tungsten_40.c" "font/tungsten_180.c" "img/bg.c" "img/moon.c" "img/star.c"
"font/tungsten_40.c" "font/tungsten_180.c"
"img/bg.c" "img/moon.c" "img/star.c" "img/sleep.c"
"valconomy.c" "ui.c" "lcd.c" "usb.c"
INCLUDE_DIRS ".") INCLUDE_DIRS ".")

View File

@ -2,8 +2,6 @@
#include "ui.h" #include "ui.h"
static const char* M_VAL_TIME = "VAL TIME?";
static const lv_font_t *font_normal = &lv_font_montserrat_24; static const lv_font_t *font_normal = &lv_font_montserrat_24;
static lv_color_t color_primary, color_secondary; static lv_color_t color_primary, color_secondary;
@ -15,7 +13,6 @@ static lv_obj_t *o_container = NULL;
static lv_anim_timeline_t *at_active = NULL; static lv_anim_timeline_t *at_active = NULL;
static lv_obj_t *o_active = NULL; static lv_obj_t *o_active = NULL;
static bool state_ready = true;
static const void* imgfont_get_path( static const void* imgfont_get_path(
const lv_font_t *font, uint32_t unicode, uint32_t unicode_next, int32_t *offset_y, void *user_data) { const lv_font_t *font, uint32_t unicode, uint32_t unicode_next, int32_t *offset_y, void *user_data) {
@ -29,8 +26,6 @@ static const void* imgfont_get_path(
return &ui_img_moon; return &ui_img_moon;
case 0x2B50: case 0x2B50:
return &ui_img_star; return &ui_img_star;
case 0x1F634:
return &ui_img_sleep;
default: default:
return NULL; return NULL;
} }
@ -44,9 +39,6 @@ static void b_cfg_cb(lv_event_t *e) {
} }
static void setup_next_state() { static void setup_next_state() {
assert(state_ready);
state_ready = false;
if (at_active) { if (at_active) {
lv_anim_timeline_delete(at_active); lv_anim_timeline_delete(at_active);
at_active = NULL; at_active = NULL;
@ -65,16 +57,6 @@ static void setup_next_state() {
at_active = lv_anim_timeline_create(); at_active = lv_anim_timeline_create();
} }
bool val_ui_state_ready() {
return state_ready;
}
static void anim_state_ready_cb(lv_anim_t *anim) {
state_ready = true;
}
static void anim_x_cb(void *var, int32_t v) {
lv_obj_set_x(var, v);
}
static void anim_y_cb(void *var, int32_t v) { static void anim_y_cb(void *var, int32_t v) {
lv_obj_set_y(var, v); lv_obj_set_y(var, v);
} }
@ -82,17 +64,16 @@ static void anim_opa_cb(void *var, int32_t v) {
lv_obj_set_style_opa(var, v, 0); lv_obj_set_style_opa(var, v, 0);
} }
static void anim_val_time_text(lv_anim_t *anim) { static void anim_val_time_text(lv_anim_t *anim) {
lv_label_set_text_static(anim->var, M_VAL_TIME); lv_label_set_text_static(anim->var, "VAL TIME?");
} }
void val_ui_none() { void val_ui_none() {
setup_next_state(); setup_next_state();
// Widgets
lv_obj_t *l_main = lv_label_create(o_active); lv_obj_t *l_main = lv_label_create(o_active);
lv_obj_add_style(l_main, &s_hero, 0); lv_obj_add_style(l_main, &s_hero, 0);
lv_obj_center(l_main); lv_obj_center(l_main);
lv_label_set_text_static(l_main, M_VAL_TIME); lv_label_set_text_static(l_main, "HELLO \U0001F319\u2B50!");
lv_obj_t *l_subtitle = lv_label_create(o_active); lv_obj_t *l_subtitle = lv_label_create(o_active);
lv_obj_add_style(l_subtitle, &s_subtitle, 0); lv_obj_add_style(l_subtitle, &s_subtitle, 0);
@ -101,12 +82,7 @@ void val_ui_none() {
lv_obj_update_layout(o_active); lv_obj_update_layout(o_active);
lv_obj_set_pos( lv_obj_set_pos(
l_subtitle, l_subtitle, -(lv_obj_get_width(l_main) - lv_obj_get_width(l_subtitle)) / 2, lv_obj_get_height(l_main) / 2);
-(lv_obj_get_width(l_main) - lv_obj_get_width(l_subtitle)) / 2,
(lv_obj_get_height(l_main) + lv_obj_get_height(l_subtitle)) / 2 + 5);
lv_label_set_text_static(l_main, "HELLO \U0001F319\u2B50!");
lv_obj_update_layout(o_active);
// Animations // Animations
lv_anim_t a_hello_in; lv_anim_t a_hello_in;
@ -119,6 +95,14 @@ void val_ui_none() {
lv_anim_set_path_cb(&a_hello_in, lv_anim_path_ease_in); lv_anim_set_path_cb(&a_hello_in, lv_anim_path_ease_in);
lv_anim_set_duration(&a_hello_in, 500); lv_anim_set_duration(&a_hello_in, 500);
lv_anim_t a_sub;
lv_anim_init(&a_sub);
lv_anim_set_var(&a_sub, l_subtitle);
lv_anim_set_values(&a_sub, 0, 255);
lv_anim_set_exec_cb(&a_sub, anim_opa_cb);
lv_anim_set_path_cb(&a_sub, lv_anim_path_linear);
lv_anim_set_duration(&a_sub, 750);
lv_anim_t a_hello_out; lv_anim_t a_hello_out;
lv_anim_init(&a_hello_out); lv_anim_init(&a_hello_out);
lv_anim_set_var(&a_hello_out, l_main); lv_anim_set_var(&a_hello_out, l_main);
@ -137,101 +121,11 @@ void val_ui_none() {
lv_anim_set_path_cb(&a_val, lv_anim_path_linear); lv_anim_set_path_cb(&a_val, lv_anim_path_linear);
lv_anim_set_duration(&a_val, 500); lv_anim_set_duration(&a_val, 500);
lv_anim_t a_sub;
lv_anim_init(&a_sub);
lv_anim_set_var(&a_sub, l_subtitle);
lv_anim_set_values(&a_sub, 0, 255);
lv_anim_set_exec_cb(&a_sub, anim_opa_cb);
lv_anim_set_path_cb(&a_sub, lv_anim_path_linear);
lv_anim_set_completed_cb(&a_sub, anim_state_ready_cb);
lv_anim_set_duration(&a_sub, 750);
lv_anim_timeline_add(at_active, 0, &a_hello_in); lv_anim_timeline_add(at_active, 0, &a_hello_in);
lv_anim_timeline_add(at_active, 3000, &a_hello_out);
lv_anim_timeline_add(at_active, 3250, &a_val);
lv_anim_timeline_add(at_active, 3750, &a_sub);
lv_anim_timeline_start(at_active);
}
void val_ui_menu(bool was_idle) {
setup_next_state();
// Widgets
lv_obj_t *l_main = lv_label_create(o_active);
lv_obj_add_style(l_main, &s_hero, 0);
lv_obj_center(l_main);
lv_label_set_text_static(l_main, "LET'S GO");
lv_obj_t *l_subtitle = lv_label_create(o_active);
lv_obj_add_style(l_subtitle, &s_subtitle, 0);
lv_obj_center(l_subtitle);
lv_label_set_text_static(l_subtitle, was_idle ? "WELCOME BACK!" : "GET QUEUEING!");
lv_obj_update_layout(o_active);
// Animations
lv_anim_t a_title;
lv_anim_init(&a_title);
lv_anim_set_var(&a_title, l_main);
lv_anim_set_values(
&a_title,
-(lv_obj_get_height(o_container) - lv_obj_get_height(l_main)) / 2, 0);
lv_anim_set_exec_cb(&a_title, anim_y_cb);
lv_anim_set_path_cb(&a_title, lv_anim_path_ease_in);
lv_anim_set_duration(&a_title, 500);
lv_anim_t a_sub;
lv_anim_init(&a_sub);
lv_anim_set_var(&a_sub, l_subtitle);
lv_anim_set_values(
&a_sub,
(lv_obj_get_height(o_container) - lv_obj_get_height(l_main)) / 2,
(lv_obj_get_height(l_main) + lv_obj_get_height(l_subtitle)) / 2 + 5);
lv_anim_set_exec_cb(&a_sub, anim_y_cb);
lv_anim_set_path_cb(&a_sub, lv_anim_path_ease_in);
lv_anim_set_completed_cb(&a_sub, anim_state_ready_cb);
lv_anim_set_duration(&a_sub, 500);
lv_anim_timeline_add(at_active, 0, &a_title);
lv_anim_timeline_add(at_active, 0, &a_sub); lv_anim_timeline_add(at_active, 0, &a_sub);
lv_anim_timeline_start(at_active); lv_anim_timeline_add(at_active, 750, &a_hello_out);
} lv_anim_timeline_add(at_active, 1000, &a_val);
// lv_anim_timeline_start(at_active);
void val_ui_idle() {
setup_next_state();
// Widgets
lv_obj_t *l_main = lv_label_create(o_active);
lv_obj_add_style(l_main, &s_hero, 0);
lv_obj_center(l_main);
lv_label_set_text_static(l_main, "\U0001F634");
lv_obj_t *l_subtitle = lv_label_create(o_active);
lv_obj_add_style(l_subtitle, &s_subtitle, 0);
lv_obj_center(l_subtitle);
lv_label_set_text_static(l_subtitle, "COME BACK SOON...");
lv_obj_update_layout(o_active);
lv_obj_set_y(
l_subtitle,
(lv_obj_get_height(l_main) + lv_obj_get_height(l_subtitle)) / 2 + 5);
// Animations
lv_anim_t a_fade_in;
lv_anim_init(&a_fade_in);
lv_anim_set_values(&a_fade_in, 0, 255);
lv_anim_set_exec_cb(&a_fade_in, anim_opa_cb);
lv_anim_set_path_cb(&a_fade_in, lv_anim_path_ease_in);
lv_anim_set_duration(&a_fade_in, 1000);
lv_anim_set_var(&a_fade_in, l_main);
lv_anim_timeline_add(at_active, 0, &a_fade_in);
lv_anim_set_var(&a_fade_in, l_subtitle);
lv_anim_set_completed_cb(&a_fade_in, anim_state_ready_cb);
lv_anim_timeline_add(at_active, 0, &a_fade_in);
lv_anim_timeline_start(at_active);
} }
void val_lvgl_ui(lv_display_t *disp) { void val_lvgl_ui(lv_display_t *disp) {
@ -248,7 +142,7 @@ void val_lvgl_ui(lv_display_t *disp) {
font_normal); font_normal);
// lv_sysmon_hide_performance(disp); // lv_sysmon_hide_performance(disp);
lv_font_t *f_hero_emoji = lv_imgfont_create(120, imgfont_get_path, NULL); lv_font_t *f_hero_emoji = lv_imgfont_create(180, imgfont_get_path, NULL);
assert(f_hero_emoji); assert(f_hero_emoji);
f_hero_emoji->fallback = &lv_font_tungsten_180; f_hero_emoji->fallback = &lv_font_tungsten_180;
@ -280,7 +174,5 @@ void val_lvgl_ui(lv_display_t *disp) {
lv_label_set_text(l_cfg, LV_SYMBOL_SETTINGS); lv_label_set_text(l_cfg, LV_SYMBOL_SETTINGS);
lv_obj_center(l_cfg); lv_obj_center(l_cfg);
// val_ui_none(); val_ui_none();
// val_ui_menu(true);
val_ui_idle();
} }

View File

@ -8,12 +8,5 @@ LV_FONT_DECLARE(lv_font_tungsten_180)
LV_IMAGE_DECLARE(ui_img_bg); LV_IMAGE_DECLARE(ui_img_bg);
LV_IMAGE_DECLARE(ui_img_moon); LV_IMAGE_DECLARE(ui_img_moon);
LV_IMAGE_DECLARE(ui_img_star); LV_IMAGE_DECLARE(ui_img_star);
LV_IMAGE_DECLARE(ui_img_sleep);
bool val_ui_state_ready();
void val_ui_none();
void val_ui_menu(bool was_idle);
void val_ui_idle();
void val_lvgl_ui(lv_display_t *disp); void val_lvgl_ui(lv_display_t *disp);