summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2016-05-02 21:55:26 +0100
committerAmaury Pouly <amaury.pouly@gmail.com>2016-05-28 17:38:10 +0200
commit2dcc9fc39ffadc3828bde52df4843d91f5f66216 (patch)
treeae5d65520ec8300886e3fd7e465ec9fbf3258faa
parent941ac165d864ccdd4e4ae870366f4e0a6bc30055 (diff)
downloadrockbox-2dcc9fc39ffadc3828bde52df4843d91f5f66216.tar.gz
rockbox-2dcc9fc39ffadc3828bde52df4843d91f5f66216.zip
imx233: fix debug screen button handling
The code was very primitive and did not handle release events properly. Change-Id: I1c56005282a9fb6608f79ff3b483ba614d635fdb
-rw-r--r--firmware/target/arm/imx233/debug-imx233.c41
1 files changed, 23 insertions, 18 deletions
diff --git a/firmware/target/arm/imx233/debug-imx233.c b/firmware/target/arm/imx233/debug-imx233.c
index c1820c8fe2..a97907b775 100644
--- a/firmware/target/arm/imx233/debug-imx233.c
+++ b/firmware/target/arm/imx233/debug-imx233.c
@@ -55,13 +55,8 @@
55#define ACT_RIGHT 6 55#define ACT_RIGHT 6
56#define ACT_REPEAT 0x1000 56#define ACT_REPEAT 0x1000
57 57
58int my_get_action(int tmo) 58int xlate_button(int btn)
59{ 59{
60 int btn = button_get_w_tmo(tmo);
61 while(btn & BUTTON_REL)
62 btn = button_get_w_tmo(tmo);
63 bool repeat = btn & BUTTON_REPEAT;
64 int act = ACT_NONE;
65 switch(btn) 60 switch(btn)
66 { 61 {
67 case BUTTON_POWER: 62 case BUTTON_POWER:
@@ -72,8 +67,7 @@ int my_get_action(int tmo)
72#else 67#else
73#error no key for ACT_CANCEL 68#error no key for ACT_CANCEL
74#endif 69#endif
75 act = ACT_CANCEL; 70 return ACT_CANCEL;
76 break;
77#if defined(BUTTON_SELECT) 71#if defined(BUTTON_SELECT)
78 case BUTTON_SELECT: 72 case BUTTON_SELECT:
79#elif defined(BUTTON_PLAY) 73#elif defined(BUTTON_PLAY)
@@ -83,17 +77,28 @@ int my_get_action(int tmo)
83#else 77#else
84#error no key for ACT_OK 78#error no key for ACT_OK
85#endif 79#endif
86 act = ACT_OK; 80 return ACT_OK;
87 break;
88 case BUTTON_UP: 81 case BUTTON_UP:
89 act = ACT_PREV; 82 return ACT_PREV;
90 break;
91 case BUTTON_DOWN: 83 case BUTTON_DOWN:
92 act = ACT_NEXT; 84 return ACT_NEXT;
93 break;
94 default: 85 default:
95 yield(); 86 return ACT_NONE;
96 } 87 }
88}
89
90int my_get_status(void)
91{
92 return xlate_button(button_status());
93}
94
95int my_get_action(int tmo)
96{
97 int btn = button_get_w_tmo(tmo);
98 while(btn & BUTTON_REL)
99 btn = button_get_w_tmo(tmo);
100 bool repeat = btn & BUTTON_REPEAT;
101 int act = xlate_button(btn & ~BUTTON_REPEAT);
97 if(repeat) 102 if(repeat)
98 act |= ACT_REPEAT; 103 act |= ACT_REPEAT;
99 return act; 104 return act;
@@ -217,7 +222,7 @@ bool dbg_hw_info_power(void)
217 bool en; 222 bool en;
218 int linreg; 223 int linreg;
219 char buf[16]; 224 char buf[16];
220 225
221 lcd_putsf(0, line++, "name value bo linreg"); 226 lcd_putsf(0, line++, "name value bo linreg");
222#define DISP_REGULATOR(name) \ 227#define DISP_REGULATOR(name) \
223 imx233_power_get_regulator(REGULATOR_##name, &trg, &bo); \ 228 imx233_power_get_regulator(REGULATOR_##name, &trg, &bo); \
@@ -254,7 +259,7 @@ bool dbg_hw_info_power(void)
254bool dbg_hw_info_lradc(void) 259bool dbg_hw_info_lradc(void)
255{ 260{
256 lcd_setfont(FONT_SYSFIXED); 261 lcd_setfont(FONT_SYSFIXED);
257 262
258 while(1) 263 while(1)
259 { 264 {
260 int button = my_get_action(HZ / 25); 265 int button = my_get_action(HZ / 25);
@@ -679,7 +684,7 @@ bool dbg_hw_info_ocotp(void)
679 } 684 }
680 if(i < top_user) 685 if(i < top_user)
681 top_user = i - 1; 686 top_user = i - 1;
682 687
683 lcd_update(); 688 lcd_update();
684 yield(); 689 yield();
685 } 690 }