diff options
Diffstat (limited to 'firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c')
-rw-r--r-- | firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c | 56 |
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 |
114 | int button_read_device(int *data) | 114 | int 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 */ |