mirror of
https://github.com/armel/uv-k1-k5v3-firmware-custom.git
synced 2026-10-02 03:15:37 +00:00
Add K5Viewer support to multiboot
This commit is contained in:
1 parent
66ca97fa5e
commit
bd049c0467
1 file changed
+35
@@ -24,10 +24,22 @@
|
|||||||
#include "driver/system.h"
|
#include "driver/system.h"
|
||||||
#include "ui/helper.h"
|
#include "ui/helper.h"
|
||||||
#include "ui/multiboot.h"
|
#include "ui/multiboot.h"
|
||||||
|
#ifdef ENABLE_FEAT_F4HWN_K5VIEWER
|
||||||
|
#include "k5viewer.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
static uint8_t gRunningSlot = 0xFFu;
|
static uint8_t gRunningSlot = 0xFFu;
|
||||||
static uint8_t gActiveBank = 0u;
|
static uint8_t gActiveBank = 0u;
|
||||||
|
|
||||||
|
#ifdef ENABLE_FEAT_F4HWN_K5VIEWER
|
||||||
|
static void mb_k5viewer_service(void)
|
||||||
|
{
|
||||||
|
/* The Multiboot selector is modal and does not return to APP_Update(). */
|
||||||
|
K5VIEWER_ParseInput();
|
||||||
|
K5VIEWER_Update(false);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static uint8_t mb_remember_boot_state(uint8_t slot, uint8_t bank)
|
static uint8_t mb_remember_boot_state(uint8_t slot, uint8_t bank)
|
||||||
{
|
{
|
||||||
gRunningSlot = slot;
|
gRunningSlot = slot;
|
||||||
@@ -164,6 +176,9 @@ static void mb_show_message(const char *line1, const char *line2, const char *li
|
|||||||
if (line3) UI_PrintStringSmallNormal(line3, 2, 126, 6);
|
if (line3) UI_PrintStringSmallNormal(line3, 2, 126, 6);
|
||||||
ST7565_BlitStatusLine();
|
ST7565_BlitStatusLine();
|
||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
|
#ifdef ENABLE_FEAT_F4HWN_K5VIEWER
|
||||||
|
mb_k5viewer_service();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mb_wait_release(void)
|
static void mb_wait_release(void)
|
||||||
@@ -183,6 +198,9 @@ static KEY_Code_t mb_get_key(void)
|
|||||||
{
|
{
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
#ifdef ENABLE_FEAT_F4HWN_K5VIEWER
|
||||||
|
mb_k5viewer_service();
|
||||||
|
#endif
|
||||||
KEY_Code_t key = KEYBOARD_Poll();
|
KEY_Code_t key = KEYBOARD_Poll();
|
||||||
if (key != KEY_INVALID)
|
if (key != KEY_INVALID)
|
||||||
{
|
{
|
||||||
@@ -202,6 +220,10 @@ static KEY_Code_t mb_get_key(void)
|
|||||||
* NOT paint the "F4HWN MULTIBOOT" status banner - just a plain acknowledged message. */
|
* NOT paint the "F4HWN MULTIBOOT" status banner - just a plain acknowledged message. */
|
||||||
void UI_MultibootShowConfigError(uint8_t err)
|
void UI_MultibootShowConfigError(uint8_t err)
|
||||||
{
|
{
|
||||||
|
#ifdef ENABLE_FEAT_F4HWN_K5VIEWER
|
||||||
|
gKeyReading0 = KEY_INVALID;
|
||||||
|
gKeyReading1 = KEY_INVALID;
|
||||||
|
#endif
|
||||||
UI_DisplayClear();
|
UI_DisplayClear();
|
||||||
UI_StatusClear();
|
UI_StatusClear();
|
||||||
UI_PrintStringSmallNormal("CFG ERROR", 2, 126, 2);
|
UI_PrintStringSmallNormal("CFG ERROR", 2, 126, 2);
|
||||||
@@ -209,6 +231,9 @@ void UI_MultibootShowConfigError(uint8_t err)
|
|||||||
UI_PrintStringSmallNormal("Press any key", 2, 126, 6);
|
UI_PrintStringSmallNormal("Press any key", 2, 126, 6);
|
||||||
ST7565_BlitStatusLine();
|
ST7565_BlitStatusLine();
|
||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
|
#ifdef ENABLE_FEAT_F4HWN_K5VIEWER
|
||||||
|
mb_k5viewer_service();
|
||||||
|
#endif
|
||||||
/* The MENU press that confirmed SetCfg may still be down; wait for a clean
|
/* The MENU press that confirmed SetCfg may still be down; wait for a clean
|
||||||
* release first so it isn't consumed as the acknowledgement immediately. */
|
* release first so it isn't consumed as the acknowledgement immediately. */
|
||||||
mb_wait_release();
|
mb_wait_release();
|
||||||
@@ -301,6 +326,9 @@ __attribute__((noinline)) static void mb_prepare_progress_screen(const char *tit
|
|||||||
mb_draw_progress_outline();
|
mb_draw_progress_outline();
|
||||||
ST7565_BlitStatusLine();
|
ST7565_BlitStatusLine();
|
||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
|
#ifdef ENABLE_FEAT_F4HWN_K5VIEWER
|
||||||
|
mb_k5viewer_service();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mb_prepare_progress(uint8_t slot)
|
static void mb_prepare_progress(uint8_t slot)
|
||||||
@@ -366,6 +394,13 @@ void UI_MultibootSelector(void)
|
|||||||
uint8_t status[MB_SLOT_COUNT];
|
uint8_t status[MB_SLOT_COUNT];
|
||||||
uint8_t selected = 0;
|
uint8_t selected = 0;
|
||||||
|
|
||||||
|
#ifdef ENABLE_FEAT_F4HWN_K5VIEWER
|
||||||
|
/* The selector is entered from a boot key event. Clear that stale key so
|
||||||
|
* K5Viewer is allowed to publish the first selector frame immediately. */
|
||||||
|
gKeyReading0 = KEY_INVALID;
|
||||||
|
gKeyReading1 = KEY_INVALID;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Clear + blit the LCD BEFORE the backlight comes on, otherwise it reveals
|
/* Clear + blit the LCD BEFORE the backlight comes on, otherwise it reveals
|
||||||
* the random power-on contents of the display RAM for a moment. */
|
* the random power-on contents of the display RAM for a moment. */
|
||||||
mb_show_message("Release keys", NULL, NULL);
|
mb_show_message("Release keys", NULL, NULL);
|
||||||
|
|||||||
Reference in new issue
Block a user