blob: a0f6f124cdfce3a0741d70c7f594a279b7248ccb [file] [log] [blame]
/* Copyright 2018 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
* Common code used by both legacy_clamshell_ui and legacy_menu_ui.
*/
#ifndef VBOOT_REFERENCE_VBOOT_UI_LEGACY_H_
#define VBOOT_REFERENCE_VBOOT_UI_LEGACY_H_
extern const char dev_disable_msg[];
vb2_error_t VbDisplayScreen(struct vb2_context *ctx, uint32_t screen, int force,
const VbScreenData *data);
vb2_error_t VbDisplayMenu(struct vb2_context *ctx,
uint32_t screen, int force, uint32_t selected_index,
uint32_t disabled_idx_mask);
vb2_error_t VbDisplayDebugInfo(struct vb2_context *ctx);
vb2_error_t VbCheckDisplayKey(struct vb2_context *ctx, uint32_t key,
uint32_t screen, const VbScreenData *data);
#define KEY_DELAY_MS 20 /* Delay between key scans in UI loops */
enum vb2_beep_type {
VB_BEEP_FAILED, /* Permitted but the operation failed */
VB_BEEP_NOT_ALLOWED, /* Operation disabled by user setting */
};
/**
* Reinitialize global state. This should only need to be called
* by vboot_ui::vb2_init_ui() for init tests.
*/
void vb2_reset_power_button(void);
/**
* Emit beeps to indicate an error
*/
void vb2_error_beep(enum vb2_beep_type beep);
/**
* Prints a message to screen, logs a possibly different message to log,
* and beeps to notify user.
*
* @print_msg Display message. NULL message will be ignored.
* @log_msg Log message. If NULL, uses @print_msg (if that's not NULL).
* @beep Type of beep sound.
*/
void vb2_error_notify(const char *print_msg,
const char *log_msg,
enum vb2_beep_type beep);
/** Display an error and beep to indicate that altfw is not available */
void vb2_error_no_altfw(void);
/**
* Jump to a bootloader if possible
*
* This checks if the operation is permitted. If it is, then it jumps to the
* selected bootloader and execution continues there, never returning.
*
* Will beep and return if one of the following is true:
* - operation is not permitted (allowed == 0)
* - vboot data fails to commit
* - secdata_kernel fails to lock
* - bootloader cannot be found
* - bootloader fails to start
*
* @param ctx Context pointer
* @param allowed 1 if allowed, 0 if not allowed
* @param altfw_num Number of bootloader to start (0=any, 1=first, etc.)
*/
void vb2_try_altfw(struct vb2_context *ctx, int allowed,
enum VbAltFwIndex_t altfw_num);
/**
* Checks GBB flags against VbExIsShutdownRequested() shutdown request to
* determine if a shutdown is required.
*
* Returns zero or more of the following flags (if any are set then typically
* shutdown is required):
* VB_SHUTDOWN_REQUEST_LID_CLOSED
* VB_SHUTDOWN_REQUEST_POWER_BUTTON
*/
int vb2_want_shutdown(struct vb2_context *ctx, uint32_t key);
#endif /* VBOOT_REFERENCE_VBOOT_UI_LEGACY_H_ */