diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/export/usb.h | 3 | ||||
-rw-r--r-- | firmware/usb.c | 16 |
2 files changed, 15 insertions, 4 deletions
diff --git a/firmware/export/usb.h b/firmware/export/usb.h index 089b0f23e6..f1c2c64d23 100644 --- a/firmware/export/usb.h +++ b/firmware/export/usb.h | |||
@@ -26,6 +26,7 @@ void usb_start_monitoring(void); | |||
26 | void usb_acknowledge(int id); | 26 | void usb_acknowledge(int id); |
27 | void usb_wait_for_disconnect(struct event_queue *q); | 27 | void usb_wait_for_disconnect(struct event_queue *q); |
28 | int usb_wait_for_disconnect_w_tmo(struct event_queue *q, int ticks); | 28 | int usb_wait_for_disconnect_w_tmo(struct event_queue *q, int ticks); |
29 | bool usb_inserted(void); | 29 | bool usb_inserted(void); /* return the official value, what's been reported to the threads */ |
30 | bool usb_detect(void); /* return the raw hardware value */ | ||
30 | 31 | ||
31 | #endif | 32 | #endif |
diff --git a/firmware/usb.c b/firmware/usb.c index 2cd5c9b93b..23edf7b1c5 100644 --- a/firmware/usb.c +++ b/firmware/usb.c | |||
@@ -212,12 +212,10 @@ static void usb_thread(void) | |||
212 | } | 212 | } |
213 | } | 213 | } |
214 | 214 | ||
215 | static void usb_tick(void) | 215 | bool usb_detect(void) |
216 | { | 216 | { |
217 | bool current_status; | 217 | bool current_status; |
218 | 218 | ||
219 | if(usb_monitor_enabled) | ||
220 | { | ||
221 | #ifdef ARCHOS_RECORDER | 219 | #ifdef ARCHOS_RECORDER |
222 | current_status = (adc_read(ADC_USB_POWER) > 500)?true:false; | 220 | current_status = (adc_read(ADC_USB_POWER) > 500)?true:false; |
223 | #else | 221 | #else |
@@ -227,6 +225,18 @@ static void usb_tick(void) | |||
227 | current_status = (PADR & 0x8000)?false:true; | 225 | current_status = (PADR & 0x8000)?false:true; |
228 | #endif | 226 | #endif |
229 | #endif | 227 | #endif |
228 | |||
229 | return current_status; | ||
230 | } | ||
231 | |||
232 | |||
233 | static void usb_tick(void) | ||
234 | { | ||
235 | bool current_status; | ||
236 | |||
237 | if(usb_monitor_enabled) | ||
238 | { | ||
239 | current_status = usb_detect(); | ||
230 | 240 | ||
231 | /* Only report when the status has changed */ | 241 | /* Only report when the status has changed */ |
232 | if(current_status != last_usb_status) | 242 | if(current_status != last_usb_status) |