summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/button.c26
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 */
164static int button_read(void) 164static 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)
221static int button_read(void) 223static 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)