summaryrefslogtreecommitdiff
path: root/bootloader/x1000
diff options
context:
space:
mode:
Diffstat (limited to 'bootloader/x1000')
-rw-r--r--bootloader/x1000/gui.c15
-rw-r--r--bootloader/x1000/recovery.c3
-rw-r--r--bootloader/x1000/utils.c22
-rw-r--r--bootloader/x1000/x1000bootloader.h8
4 files changed, 44 insertions, 4 deletions
diff --git a/bootloader/x1000/gui.c b/bootloader/x1000/gui.c
index 513a3cb9cb..1208d3c161 100644
--- a/bootloader/x1000/gui.c
+++ b/bootloader/x1000/gui.c
@@ -122,10 +122,17 @@ void splashf(long delay, const char* msg, ...)
122int get_button(int timeout) 122int get_button(int timeout)
123{ 123{
124 int btn = button_get_w_tmo(timeout); 124 int btn = button_get_w_tmo(timeout);
125 if(btn == SYS_USB_CONNECTED) 125 switch(btn) {
126 is_usb_connected = true; 126 case SYS_USB_CONNECTED:
127 else if(btn == SYS_USB_DISCONNECTED) 127 case SYS_USB_DISCONNECTED:
128 is_usb_connected = false; 128 is_usb_connected = (btn == SYS_USB_CONNECTED);
129 break;
130#ifdef HAVE_SCREENDUMP
131 case BL_SCREENSHOT:
132 screenshot();
133 break;
134#endif
135 }
129 136
130 return btn; 137 return btn;
131} 138}
diff --git a/bootloader/x1000/recovery.c b/bootloader/x1000/recovery.c
index d70c3b9305..c53fa376b9 100644
--- a/bootloader/x1000/recovery.c
+++ b/bootloader/x1000/recovery.c
@@ -65,6 +65,9 @@ static const struct menuitem recovery_items[] = {
65 65
66static const struct menuitem debug_menu_items[] = { 66static const struct menuitem debug_menu_items[] = {
67 {MENUITEM_HEADING, "Debug tools", NULL}, 67 {MENUITEM_HEADING, "Debug tools", NULL},
68#ifdef HAVE_SCREENDUMP
69 {MENUITEM_ACTION, "Enable screenshots", &screenshot_enable},
70#endif
68#ifdef OF_PLAYER_ADDR 71#ifdef OF_PLAYER_ADDR
69 {MENUITEM_ACTION, "Dump OF player", &dump_of_player}, 72 {MENUITEM_ACTION, "Dump OF player", &dump_of_player},
70#endif 73#endif
diff --git a/bootloader/x1000/utils.c b/bootloader/x1000/utils.c
index 629a2c6280..4d3fb69e57 100644
--- a/bootloader/x1000/utils.c
+++ b/bootloader/x1000/utils.c
@@ -29,6 +29,7 @@
29#include "rb-loader.h" 29#include "rb-loader.h"
30#include "loader_strerror.h" 30#include "loader_strerror.h"
31#include "linuxboot.h" 31#include "linuxboot.h"
32#include "screendump.h"
32#include "nand-x1000.h" 33#include "nand-x1000.h"
33 34
34/* Set to true if a SYS_USB_CONNECTED event is seen 35/* Set to true if a SYS_USB_CONNECTED event is seen
@@ -37,6 +38,8 @@
37 * TODO: this is an ugly kludge */ 38 * TODO: this is an ugly kludge */
38bool is_usb_connected = false; 39bool is_usb_connected = false;
39 40
41static bool screenshot_enabled = false;
42
40/* this is both incorrect and incredibly racy... */ 43/* this is both incorrect and incredibly racy... */
41int check_disk(bool wait) 44int check_disk(bool wait)
42{ 45{
@@ -75,6 +78,25 @@ void usb_mode(void)
75 splashf(3*HZ, "USB disconnected"); 78 splashf(3*HZ, "USB disconnected");
76} 79}
77 80
81void screenshot(void)
82{
83#ifdef HAVE_SCREENDUMP
84 if(!screenshot_enabled || check_disk(false) != DISK_PRESENT)
85 return;
86
87 screen_dump();
88#endif
89}
90
91void screenshot_enable(void)
92{
93#ifdef HAVE_SCREENDUMP
94 splashf(3*HZ, "Screenshots enabled\nPress %s for screenshot",
95 BL_SCREENSHOT_NAME);
96 screenshot_enabled = true;
97#endif
98}
99
78int load_rockbox(const char* filename, size_t* sizep) 100int load_rockbox(const char* filename, size_t* sizep)
79{ 101{
80 if(check_disk(true) != DISK_PRESENT) 102 if(check_disk(true) != DISK_PRESENT)
diff --git a/bootloader/x1000/x1000bootloader.h b/bootloader/x1000/x1000bootloader.h
index f6231bbd54..0886e6f6b5 100644
--- a/bootloader/x1000/x1000bootloader.h
+++ b/bootloader/x1000/x1000bootloader.h
@@ -36,10 +36,12 @@ struct uimage_header;
36# define BL_DOWN BUTTON_VOL_DOWN 36# define BL_DOWN BUTTON_VOL_DOWN
37# define BL_SELECT BUTTON_PLAY 37# define BL_SELECT BUTTON_PLAY
38# define BL_QUIT BUTTON_POWER 38# define BL_QUIT BUTTON_POWER
39# define BL_SCREENSHOT_NAME BUTTON_MENU
39# define BL_UP_NAME "VOL+" 40# define BL_UP_NAME "VOL+"
40# define BL_DOWN_NAME "VOL-" 41# define BL_DOWN_NAME "VOL-"
41# define BL_SELECT_NAME "PLAY" 42# define BL_SELECT_NAME "PLAY"
42# define BL_QUIT_NAME "POWER" 43# define BL_QUIT_NAME "POWER"
44# define BL_SCREENSHOT_NAME "MENU"
43# define BOOTBACKUP_FILE "/fiiom3k-boot.bin" 45# define BOOTBACKUP_FILE "/fiiom3k-boot.bin"
44# define OF_PLAYER_NAME "FiiO player" 46# define OF_PLAYER_NAME "FiiO player"
45# define OF_PLAYER_ADDR 0x20000 47# define OF_PLAYER_ADDR 0x20000
@@ -63,10 +65,12 @@ struct uimage_header;
63# define BL_DOWN BUTTON_NEXT 65# define BL_DOWN BUTTON_NEXT
64# define BL_SELECT BUTTON_PLAY 66# define BL_SELECT BUTTON_PLAY
65# define BL_QUIT BUTTON_POWER 67# define BL_QUIT BUTTON_POWER
68# define BL_SCREENSHOT BUTTON_TOPLEFT
66# define BL_UP_NAME "PREV" 69# define BL_UP_NAME "PREV"
67# define BL_DOWN_NAME "NEXT" 70# define BL_DOWN_NAME "NEXT"
68# define BL_SELECT_NAME "PLAY" 71# define BL_SELECT_NAME "PLAY"
69# define BL_QUIT_NAME "POWER" 72# define BL_QUIT_NAME "POWER"
73# define BL_SCREENSHOT_NAME "TOPLEFT"
70# define BOOTBACKUP_FILE "/shanlingq1-boot.bin" 74# define BOOTBACKUP_FILE "/shanlingq1-boot.bin"
71# define OF_PLAYER_NAME "Shanling player" 75# define OF_PLAYER_NAME "Shanling player"
72# define OF_PLAYER_ADDR 0x140000 76# define OF_PLAYER_ADDR 0x140000
@@ -84,10 +88,12 @@ struct uimage_header;
84# define BL_DOWN BUTTON_SCROLL_FWD 88# define BL_DOWN BUTTON_SCROLL_FWD
85# define BL_SELECT BUTTON_PLAY 89# define BL_SELECT BUTTON_PLAY
86# define BL_QUIT BUTTON_POWER 90# define BL_QUIT BUTTON_POWER
91# define BL_SCREENSHOT BUTTON_MENU
87# define BL_UP_NAME "Up" 92# define BL_UP_NAME "Up"
88# define BL_DOWN_NAME "Scroll Down" 93# define BL_DOWN_NAME "Scroll Down"
89# define BL_SELECT_NAME "PLAY" 94# define BL_SELECT_NAME "PLAY"
90# define BL_QUIT_NAME "POWER" 95# define BL_QUIT_NAME "POWER"
96# define BL_SCREENSHOT_NAME "MENU"
91# define BOOTBACKUP_FILE "/erosqnative-boot.bin" 97# define BOOTBACKUP_FILE "/erosqnative-boot.bin"
92#else 98#else
93# error "Missing keymap!" 99# error "Missing keymap!"
@@ -160,6 +166,8 @@ enum {
160 166
161int check_disk(bool wait); 167int check_disk(bool wait);
162void usb_mode(void); 168void usb_mode(void);
169void screenshot(void);
170void screenshot_enable(void);
163 171
164int load_rockbox(const char* filename, size_t* sizep); 172int load_rockbox(const char* filename, size_t* sizep);
165int load_uimage_file(const char* filename, 173int load_uimage_file(const char* filename,