mirror of
https://github.com/memtest86plus/memtest86plus.git
synced 2025-02-25 18:55:23 -06:00
Add much bigger PASS/FAIL banner (#113)
The goal is to see the actual test result (PASS or FAIL) far away.
This commit is contained in:
committed by
GitHub
parent
e6e0f0c8e7
commit
034372f4bf
@@ -1,5 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
// Copyright (C) 2020-2022 Martin Whitaker.
|
// Copyright (C) 2020-2022 Martin Whitaker.
|
||||||
|
// Copyright (C) 2004-2022 Sam Demeulemeester.
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
@@ -31,6 +32,17 @@
|
|||||||
// Constants
|
// Constants
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#define POP_STAT_R 12
|
||||||
|
#define POP_STAT_C 18
|
||||||
|
|
||||||
|
#define POP_STAT_W 44
|
||||||
|
#define POP_STAT_H 9
|
||||||
|
|
||||||
|
#define POP_STAT_LAST_R (POP_STAT_R + POP_STAT_H - 1)
|
||||||
|
#define POP_STAT_LAST_C (POP_STAT_C + POP_STAT_W - 1)
|
||||||
|
|
||||||
|
#define POP_STATUS_REGION POP_STAT_R, POP_STAT_C, POP_STAT_LAST_R, POP_STAT_LAST_C
|
||||||
|
|
||||||
#define SPINNER_PERIOD 100 // milliseconds
|
#define SPINNER_PERIOD 100 // milliseconds
|
||||||
|
|
||||||
#define NUM_SPIN_STATES 4
|
#define NUM_SPIN_STATES 4
|
||||||
@@ -60,6 +72,9 @@ static uint64_t next_spin_time = 0; // TSC time stamp
|
|||||||
static int prev_sec = -1; // previous second
|
static int prev_sec = -1; // previous second
|
||||||
static bool timed_update_done = false; // update cycle status
|
static bool timed_update_done = false; // update cycle status
|
||||||
|
|
||||||
|
bool big_status_displayed = false;
|
||||||
|
static uint16_t popup_status_save_buffer[POP_STAT_W * POP_STAT_H];
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Variables
|
// Variables
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@@ -339,9 +354,57 @@ void display_temperature(void)
|
|||||||
printf(1, 20-offset, "%2i/%2i%cC", actual_cpu_temp, max_cpu_temp, 0xF8);
|
printf(1, 20-offset, "%2i/%2i%cC", actual_cpu_temp, max_cpu_temp, 0xF8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void display_big_status(bool pass)
|
||||||
|
{
|
||||||
|
if (big_status_displayed) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
save_screen_region(POP_STATUS_REGION, popup_status_save_buffer);
|
||||||
|
|
||||||
|
set_background_colour(BLACK);
|
||||||
|
set_foreground_colour(pass ? GREEN : RED);
|
||||||
|
clear_screen_region(POP_STATUS_REGION);
|
||||||
|
|
||||||
|
if (pass) {
|
||||||
|
prints(POP_STAT_R+1, POP_STAT_C+5, "###### ## ##### ##### ");
|
||||||
|
prints(POP_STAT_R+2, POP_STAT_C+5, "## ## #### ## ## ## ## ");
|
||||||
|
prints(POP_STAT_R+3, POP_STAT_C+5, "## ## ## ## ## ## ");
|
||||||
|
prints(POP_STAT_R+4, POP_STAT_C+5, "###### ## ## ##### ##### ");
|
||||||
|
prints(POP_STAT_R+5, POP_STAT_C+5, "## ######## ## ## ");
|
||||||
|
prints(POP_STAT_R+6, POP_STAT_C+5, "## ## ## ## ## ## ## ");
|
||||||
|
prints(POP_STAT_R+7, POP_STAT_C+5, "## ## ## ##### ##### ");
|
||||||
|
} else {
|
||||||
|
prints(POP_STAT_R+1, POP_STAT_C+5, "####### ## ###### ## ");
|
||||||
|
prints(POP_STAT_R+2, POP_STAT_C+5, "## #### ## ## ");
|
||||||
|
prints(POP_STAT_R+3, POP_STAT_C+5, "## ## ## ## ## ");
|
||||||
|
prints(POP_STAT_R+4, POP_STAT_C+5, "##### ## ## ## ## ");
|
||||||
|
prints(POP_STAT_R+5, POP_STAT_C+5, "## ######## ## ## ");
|
||||||
|
prints(POP_STAT_R+6, POP_STAT_C+5, "## ## ## ## ## ");
|
||||||
|
prints(POP_STAT_R+7, POP_STAT_C+5, "## ## ## ###### ###### ");
|
||||||
|
}
|
||||||
|
set_background_colour(BLUE);
|
||||||
|
set_foreground_colour(WHITE);
|
||||||
|
big_status_displayed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void restore_big_status(void)
|
||||||
|
{
|
||||||
|
restore_screen_region(POP_STATUS_REGION, popup_status_save_buffer);
|
||||||
|
big_status_displayed = false;
|
||||||
|
}
|
||||||
|
|
||||||
void check_input(void)
|
void check_input(void)
|
||||||
{
|
{
|
||||||
switch (get_key()) {
|
char input_key = get_key();
|
||||||
|
|
||||||
|
if (input_key == '\0') {
|
||||||
|
return;
|
||||||
|
} else if (big_status_displayed) {
|
||||||
|
restore_big_status();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (input_key) {
|
||||||
case ESC:
|
case ESC:
|
||||||
clear_message_area();
|
clear_message_area();
|
||||||
display_notice("Rebooting...");
|
display_notice("Rebooting...");
|
||||||
|
|||||||
@@ -200,10 +200,10 @@ typedef enum {
|
|||||||
printf(scroll_message_row, col, __VA_ARGS__)
|
printf(scroll_message_row, col, __VA_ARGS__)
|
||||||
|
|
||||||
#define display_notice(str) \
|
#define display_notice(str) \
|
||||||
prints(ROW_MESSAGE_T + 6, (SCREEN_WIDTH - strlen(str)) / 2, str)
|
prints(ROW_MESSAGE_T + 8, (SCREEN_WIDTH - strlen(str)) / 2, str)
|
||||||
|
|
||||||
#define display_notice_with_args(length, ...) \
|
#define display_notice_with_args(length, ...) \
|
||||||
printf(ROW_MESSAGE_T + 6, (SCREEN_WIDTH - length) / 2, __VA_ARGS__)
|
printf(ROW_MESSAGE_T + 8, (SCREEN_WIDTH - length) / 2, __VA_ARGS__)
|
||||||
|
|
||||||
#define clear_footer_message() \
|
#define clear_footer_message() \
|
||||||
{ \
|
{ \
|
||||||
@@ -240,6 +240,10 @@ void display_start_test(void);
|
|||||||
|
|
||||||
void display_temperature(void);
|
void display_temperature(void);
|
||||||
|
|
||||||
|
void display_big_status(bool pass);
|
||||||
|
|
||||||
|
void restore_big_status(void);
|
||||||
|
|
||||||
void check_input(void);
|
void check_input(void);
|
||||||
|
|
||||||
void set_scroll_lock(bool enabled);
|
void set_scroll_lock(bool enabled);
|
||||||
|
|||||||
@@ -369,6 +369,10 @@ void error_update(void)
|
|||||||
display_error_count(error_count);
|
display_error_count(error_count);
|
||||||
display_status("Failed!");
|
display_status("Failed!");
|
||||||
|
|
||||||
|
if (error_count == 1) {
|
||||||
|
display_big_status(false);
|
||||||
|
}
|
||||||
|
|
||||||
if (enable_tty) {
|
if (enable_tty) {
|
||||||
tty_error_redraw();
|
tty_error_redraw();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
// Derived from memtest86+ main.c:
|
// Derived from memtest86+ main.c:
|
||||||
//
|
//
|
||||||
// MemTest86+ V5 Specific code (GPL V2.0)
|
// MemTest86+ V5 Specific code (GPL V2.0)
|
||||||
// By Samuel DEMEULEMEESTER, sdemeule@memtest.org
|
// By Samuel DEMEULEMEESTER, memtest@memtest.org
|
||||||
// http://www.canardpc.com - http://www.memtest.org
|
// https://www.memtest.org
|
||||||
// ------------------------------------------------
|
// ------------------------------------------------
|
||||||
// main.c - MemTest-86 Version 3.5
|
// main.c - MemTest-86 Version 3.5
|
||||||
//
|
//
|
||||||
@@ -664,7 +664,8 @@ void main(void)
|
|||||||
display_pass_count(pass_num);
|
display_pass_count(pass_num);
|
||||||
if (error_count == 0) {
|
if (error_count == 0) {
|
||||||
display_status("Pass ");
|
display_status("Pass ");
|
||||||
display_notice("** Pass completed, no errors **");
|
display_big_status(true);
|
||||||
|
//display_notice("** Pass completed, no errors **");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user