diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-07-24 16:30:34 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-07-24 16:30:34 +0000 |
commit | 9d4c0e398e2aa77adb0d45e150824f04cdf5e24c (patch) | |
tree | 0d3fed487a3b81ea9887646a117cf4d13a201d5e /firmware/drivers/button.c | |
parent | 51065bbaee2aeb2ea1c233a9ce34877e6e04ca80 (diff) | |
download | rockbox-9d4c0e398e2aa77adb0d45e150824f04cdf5e24c.tar.gz rockbox-9d4c0e398e2aa77adb0d45e150824f04cdf5e24c.zip |
Added multi-button read for recorder
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1434 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/button.c')
-rw-r--r-- | firmware/drivers/button.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c index b1bfdd8957..636376b4e5 100644 --- a/firmware/drivers/button.c +++ b/firmware/drivers/button.c | |||
@@ -163,36 +163,38 @@ int button_set_repeat(int newmask) | |||
163 | */ | 163 | */ |
164 | static int button_read(void) | 164 | static int button_read(void) |
165 | { | 165 | { |
166 | int btn = BUTTON_NONE; | ||
167 | |||
166 | /* Check port B pins for ON and OFF */ | 168 | /* Check port B pins for ON and OFF */ |
167 | int data = PBDR; | 169 | int data = PBDR; |
168 | if ((data & PBDR_BTN_ON) == 0) | 170 | if ((data & PBDR_BTN_ON) == 0) |
169 | return BUTTON_ON; | 171 | btn |= BUTTON_ON; |
170 | else if ((data & PBDR_BTN_OFF) == 0) | 172 | else if ((data & PBDR_BTN_OFF) == 0) |
171 | return BUTTON_OFF; | 173 | btn |= BUTTON_OFF; |
172 | 174 | ||
173 | /* Check F1-3 and UP */ | 175 | /* Check F1-3 and UP */ |
174 | data = adc_read(ADC_BUTTON_ROW1); | 176 | data = adc_read(ADC_BUTTON_ROW1); |
175 | if (data >= LEVEL4) | 177 | if (data >= LEVEL4) |
176 | return BUTTON_F3; | 178 | btn |= BUTTON_F3; |
177 | else if (data >= LEVEL3) | 179 | else if (data >= LEVEL3) |
178 | return BUTTON_UP; | 180 | btn |= BUTTON_UP; |
179 | else if (data >= LEVEL2) | 181 | else if (data >= LEVEL2) |
180 | return BUTTON_F2; | 182 | btn |= BUTTON_F2; |
181 | else if (data >= LEVEL1) | 183 | else if (data >= LEVEL1) |
182 | return BUTTON_F1; | 184 | btn |= BUTTON_F1; |
183 | 185 | ||
184 | /* Check DOWN, PLAY, LEFT, RIGHT */ | 186 | /* Check DOWN, PLAY, LEFT, RIGHT */ |
185 | data = adc_read(ADC_BUTTON_ROW2); | 187 | data = adc_read(ADC_BUTTON_ROW2); |
186 | if (data >= LEVEL4) | 188 | if (data >= LEVEL4) |
187 | return BUTTON_DOWN; | 189 | btn |= BUTTON_DOWN; |
188 | else if (data >= LEVEL3) | 190 | else if (data >= LEVEL3) |
189 | return BUTTON_PLAY; | 191 | btn |= BUTTON_PLAY; |
190 | else if (data >= LEVEL2) | 192 | else if (data >= LEVEL2) |
191 | return BUTTON_LEFT; | 193 | btn |= BUTTON_LEFT; |
192 | else if (data >= LEVEL1) | 194 | else if (data >= LEVEL1) |
193 | return BUTTON_RIGHT; | 195 | btn |= BUTTON_RIGHT; |
194 | 196 | ||
195 | return BUTTON_NONE; | 197 | return btn; |
196 | } | 198 | } |
197 | 199 | ||
198 | #elif HAVE_PLAYER_KEYPAD | 200 | #elif HAVE_PLAYER_KEYPAD |
@@ -221,7 +223,7 @@ void button_init(void) | |||
221 | static int button_read(void) | 223 | static int button_read(void) |
222 | { | 224 | { |
223 | int porta = PADR; | 225 | int porta = PADR; |
224 | int btn = 0; | 226 | int btn = BUTTON_NONE; |
225 | 227 | ||
226 | /* buttons are active low */ | 228 | /* buttons are active low */ |
227 | if(adc_read(0) < 0x180) | 229 | if(adc_read(0) < 0x180) |