summaryrefslogtreecommitdiff
path: root/firmware/2lib/2ui_screens.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/2lib/2ui_screens.c')
-rw-r--r--firmware/2lib/2ui_screens.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c
index e1b02d0a..6cdae95a 100644
--- a/firmware/2lib/2ui_screens.c
+++ b/firmware/2lib/2ui_screens.c
@@ -810,6 +810,21 @@ static const struct vb2_screen_info developer_mode_screen = {
/******************************************************************************/
/* VB2_SCREEN_DEVELOPER_TO_NORM */
+#define DEVELOPER_TO_NORM_ITEM_CONFIRM 1
+
+static vb2_error_t developer_to_norm_init(struct vb2_ui_context *ui)
+{
+ /* Don't allow to-norm if GBB forces dev mode */
+ if (vb2_get_gbb(ui->ctx)->flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) {
+ VB2_DEBUG("ERROR: to-norm not allowed\n");
+ ui->error_beep = 1;
+ ui->error_code = VB2_UI_ERROR_TO_NORM_NOT_ALLOWED;
+ return vb2_ui_screen_back(ui);
+ }
+ ui->state->selected_item = DEVELOPER_TO_NORM_ITEM_CONFIRM;
+ return VB2_REQUEST_UI_CONTINUE;
+}
+
vb2_error_t developer_to_norm_action(struct vb2_ui_context *ui)
{
if (vb2_get_gbb(ui->ctx)->flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) {
@@ -838,6 +853,7 @@ static const struct vb2_menu_item developer_to_norm_items[] = {
static const struct vb2_screen_info developer_to_norm_screen = {
.id = VB2_SCREEN_DEVELOPER_TO_NORM,
.name = "Transition to normal mode",
+ .init = developer_to_norm_init,
.menu = MENU_ITEMS(developer_to_norm_items),
};