Merge branch 'dev' into memory-test
This commit is contained in:
		@@ -61,7 +61,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
 | 
					IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
 | 
				
			||||||
	add_definitions(-DDEBUGBUILD)
 | 
						add_definitions(-DDEBUGBUILD)
 | 
				
			||||||
	add_compile_options(-Og -g)
 | 
						add_compile_options(-O0 -g)
 | 
				
			||||||
ELSE()
 | 
					ELSE()
 | 
				
			||||||
	add_compile_options(-O3 -g)
 | 
						add_compile_options(-O3 -g)
 | 
				
			||||||
	add_link_options(-Wl,--gc-sections)
 | 
						add_link_options(-Wl,--gc-sections)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,4 +29,6 @@ int gui_handle(void);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void gui_init(void);
 | 
					void gui_init(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void gui_root_menu_message_set(const char *heading, const char *text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* _GUI_H_ */
 | 
					#endif /* _GUI_H_ */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -168,6 +168,9 @@ static inline void handle_boot_status(void)
 | 
				
			|||||||
	if (status.code_updated) {
 | 
						if (status.code_updated) {
 | 
				
			||||||
		status.code_updated = 0x0UL;
 | 
							status.code_updated = 0x0UL;
 | 
				
			||||||
		safety_memory_set_boot_status(&status);
 | 
							safety_memory_set_boot_status(&status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/* Display notification on GUI */
 | 
				
			||||||
 | 
							gui_root_menu_message_set("Firmware updated", "[Press Key]");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -686,6 +686,43 @@ static void gui_update_firmware(struct lcd_menu *menu, enum menu_entry_func_entr
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static char *overlay_heading = NULL;
 | 
				
			||||||
 | 
					static char *overlay_text = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void gui_menu_overlay_entry(struct lcd_menu *menu, enum menu_entry_func_entry entry_type, void *parent)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						static void *my_parent;
 | 
				
			||||||
 | 
						enum button_state button;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (entry_type == MENU_ENTRY_FIRST_ENTER) {
 | 
				
			||||||
 | 
							my_parent = parent;
 | 
				
			||||||
 | 
							menu_display_clear(menu);
 | 
				
			||||||
 | 
							if (overlay_heading)
 | 
				
			||||||
 | 
								menu_lcd_output(menu, 0, overlay_heading);
 | 
				
			||||||
 | 
							if (overlay_text) {
 | 
				
			||||||
 | 
								menu_lcd_output(menu, 2, overlay_text);
 | 
				
			||||||
 | 
								if (strlen(overlay_text) > 16) {
 | 
				
			||||||
 | 
									menu_lcd_output(menu, 3, &overlay_text[16]);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (menu_get_button_ready_state(menu)) {
 | 
				
			||||||
 | 
							button = menu_get_button_state(menu);
 | 
				
			||||||
 | 
							menu_ack_rotary_delta(menu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (button != BUTTON_IDLE) {
 | 
				
			||||||
 | 
								if (overlay_heading)
 | 
				
			||||||
 | 
									free(overlay_heading);
 | 
				
			||||||
 | 
								if (overlay_text)
 | 
				
			||||||
 | 
									free(overlay_text);
 | 
				
			||||||
 | 
								overlay_heading = NULL;
 | 
				
			||||||
 | 
								overlay_text = NULL;
 | 
				
			||||||
 | 
								menu_entry_dropback(menu, my_parent);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void gui_menu_root_entry(struct lcd_menu *menu, enum menu_entry_func_entry entry_type, void *parent)
 | 
					static void gui_menu_root_entry(struct lcd_menu *menu, enum menu_entry_func_entry entry_type, void *parent)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	(void)parent;
 | 
						(void)parent;
 | 
				
			||||||
@@ -745,8 +782,13 @@ static void gui_menu_root_entry(struct lcd_menu *menu, enum menu_entry_func_entr
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (menu_changed)
 | 
						/* Display the message overlay in case it is set */
 | 
				
			||||||
 | 
						if (overlay_heading || overlay_text) {
 | 
				
			||||||
 | 
							menu_entry_enter(menu, gui_menu_overlay_entry, true);
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						} else if (menu_changed) {
 | 
				
			||||||
		menu_list_display(&list, 1, 3);
 | 
							menu_list_display(&list, 1, 3);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int gui_handle()
 | 
					int gui_handle()
 | 
				
			||||||
@@ -777,5 +819,26 @@ void gui_init()
 | 
				
			|||||||
	button_init();
 | 
						button_init();
 | 
				
			||||||
	lcd_init();
 | 
						lcd_init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (overlay_heading)
 | 
				
			||||||
 | 
							free(overlay_heading);
 | 
				
			||||||
 | 
						if (overlay_text)
 | 
				
			||||||
 | 
							free(overlay_text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						overlay_heading = NULL;
 | 
				
			||||||
 | 
						overlay_text = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	menu_init(reflow_menu_ptr, gui_menu_root_entry, update_display_buffer);
 | 
						menu_init(reflow_menu_ptr, gui_menu_root_entry, update_display_buffer);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void gui_root_menu_message_set(const char *heading, const char *text)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (heading) {
 | 
				
			||||||
 | 
							overlay_heading = (char *)malloc(strlen(heading) + 1);
 | 
				
			||||||
 | 
							strcpy(overlay_heading, heading);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (text) {
 | 
				
			||||||
 | 
							overlay_text = (char *)malloc(strlen(text) + 1);
 | 
				
			||||||
 | 
							strcpy(overlay_text, text);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user