Skip to content

Commit

Permalink
- Fix screensaver bug for nanosp
Browse files Browse the repository at this point in the history
  • Loading branch information
ajinkyaraj-23 committed Feb 27, 2024
1 parent a55fd1f commit e2d719a
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 7 deletions.
4 changes: 3 additions & 1 deletion src/apdu_sign.c
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,9 @@ size_t handle_apdu_sign_with_hash(uint8_t instruction, volatile uint32_t *flags)

int perform_signature(bool const on_hash, bool const send_hash) {
write_high_water_mark(&G.parsed_baking_data);

if (global.is_blank_screen == false) {
ux_empty_screen();
}
size_t tx = 0;
if (send_hash && on_hash) {
memcpy(&G_io_apdu_buffer[tx], G.final_hash, sizeof(G.final_hash));
Expand Down
1 change: 1 addition & 0 deletions src/globals.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ typedef struct {
void *stack_root;
apdu_handler handlers[INS_MAX + 1];
bip32_path_with_curve_t path_with_curve;
bool is_blank_screen;

struct {
union {
Expand Down
1 change: 1 addition & 0 deletions src/ui.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ void ux_confirm_screen(ui_callback_t ok_c, ui_callback_t cxl_c);

void ux_idle_screen(ui_callback_t ok_c, ui_callback_t cxl_c);

void ux_empty_screen(void);
/* Initializes the formatter stack. Should be called once before calling `push_ui_callback()`. */
void init_screen_stack();
/* User MUST call `init_screen_stack()` before calling this function for the first time. */
Expand Down
13 changes: 7 additions & 6 deletions src/ui_bagl.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,13 @@ UX_STEP_NOCB(ux_variable_display,
});
UX_STEP_INIT(ux_init_lower_border, NULL, NULL, { display_next_state(false); });

UX_STEP_NOCB(ux_app_is_ready_step,
nn,
{
"Application",
"is ready",
});
UX_STEP_CB(ux_app_is_ready_step,
nn,
ux_empty_screen(),
{
"Application",
"is ready",
});

UX_STEP_CB(ux_idle_quit_step,
pb,
Expand Down
54 changes: 54 additions & 0 deletions src/ui_empty.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#ifdef HAVE_BAGL
#include "bolos_target.h"
#include "globals.h"
#include "ui.h"

const bagl_element_t empty_screen_elements[] = {{{BAGL_RECTANGLE,
BAGL_NONE,
0,
0,
BAGL_WIDTH,
BAGL_HEIGHT,
0,
0,
BAGL_FILL,
0x000000,
0xFFFFFF,
0,
0},
.text = NULL},
{}};

typedef struct ux_layout_empty_params_s {
const char *line1;
} ux_layout_empty_params_t;

void ux_layout_empty_init(unsigned int stack_slot) {
ux_stack_init(stack_slot);
G_ux.stack[stack_slot].element_arrays[0].element_array = empty_screen_elements;
G_ux.stack[stack_slot].element_arrays[0].element_array_count = ARRAYLEN(empty_screen_elements);
G_ux.stack[stack_slot].element_arrays_count = 1;
G_ux.stack[stack_slot].button_push_callback = ux_flow_button_callback;
ux_stack_display(stack_slot);
}

void ux_layout_empty_screen_init(__attribute__((unused)) unsigned int x) {
}

void return_to_idle() {
global.is_blank_screen = false;
ux_idle_screen(NULL, NULL);
}

UX_STEP_CB(empty_screen_step, empty, return_to_idle(), {});
UX_STEP_INIT(empty_screen_border, NULL, NULL, { return_to_idle(); });
UX_FLOW(ux_empty_flow, &empty_screen_step, &empty_screen_border, FLOW_LOOP);

void ux_empty_screen() {
global.is_blank_screen = true;
ux_flow_init(0, ux_empty_flow, NULL);
}
#else
void ux_empty_screen() {
}
#endif

0 comments on commit e2d719a

Please sign in to comment.