summaryrefslogtreecommitdiff
path: root/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c')
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c56
1 files changed, 19 insertions, 37 deletions
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c
index 10587a485f..837677250f 100644
--- a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c
+++ b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c
@@ -113,13 +113,11 @@ static void remote_heartbeat(void)
113#define TOUCH_MARGIN 8 113#define TOUCH_MARGIN 8
114int button_read_device(int *data) 114int button_read_device(int *data)
115{ 115{
116 char c; 116 char buffer[5];
117 int i = 0; 117 int button = BUTTON_NONE, retval;
118 int btn = BUTTON_NONE; 118 static int oldbutton = BUTTON_NONE;
119 *data = 0; 119 *data = 0;
120 120
121 if ((IO_GIO_BITSET0&0x01) == 0)
122 btn |= BUTTON_POWER;
123 if (touch_available) 121 if (touch_available)
124 { 122 {
125 short x,y; 123 short x,y;
@@ -143,47 +141,31 @@ int button_read_device(int *data)
143 last_x = x; 141 last_x = x;
144 last_y = y; 142 last_y = y;
145 *data = touch_to_pixels(x, y); 143 *data = touch_to_pixels(x, y);
146 btn |= BUTTON_TOUCHPAD; 144 button |= BUTTON_TOUCHPAD;
147 } 145 }
148 last_touch = current_tick; 146 last_touch = current_tick;
149 touch_available = false; 147 touch_available = false;
150 } 148 }
151 remote_heartbeat(); 149 remote_heartbeat();
152 while (uart1_getch(&c)) 150
151 if ((IO_GIO_BITSET0&0x01) == 0)
152 button |= BUTTON_POWER;
153
154 retval=uart1_gets_queue(buffer, 5);
155 do
153 { 156 {
154 if (i==0 && (c == BUTTON_START_BYTE || c == BUTTON_START_BYTE2) ) 157 if(retval>=0)
155 { 158 {
156 i++; 159 button |= buffer[1];
160 oldbutton=button;
157 } 161 }
158 else if (i) 162 else
159 { 163 {
160 i++; 164 button=oldbutton;
161 if(i==2)
162 {
163 if (c& (1<<7))
164 btn |= BUTTON_RC_HEART;
165 if (c& (1<<6))
166 btn |= BUTTON_RC_MODE;
167 if (c& (1<<5))
168 btn |= BUTTON_RC_VOL_DOWN;
169 if (c& (1<<4))
170 btn |= BUTTON_RC_VOL_UP;
171 if (c& (1<<3))
172 btn |= BUTTON_RC_REW;
173 if (c& (1<<2))
174 btn |= BUTTON_RC_FF;
175 if (c& (1<<1))
176 btn |= BUTTON_RC_DOWN;
177 if (c& (1<<0))
178 btn |= BUTTON_RC_PLAY;
179 }
180 else if(i==5)
181 {
182 i=0;
183 }
184 } 165 }
185 } 166 } while((retval=uart1_gets_queue(buffer, 5))>=5);
186 return btn; 167
168 return button;
187} 169}
188 170
189/* Touchpad data available interupt */ 171/* Touchpad data available interupt */