summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/export/usb.h3
-rw-r--r--firmware/usb.c16
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);
26void usb_acknowledge(int id); 26void usb_acknowledge(int id);
27void usb_wait_for_disconnect(struct event_queue *q); 27void usb_wait_for_disconnect(struct event_queue *q);
28int usb_wait_for_disconnect_w_tmo(struct event_queue *q, int ticks); 28int usb_wait_for_disconnect_w_tmo(struct event_queue *q, int ticks);
29bool usb_inserted(void); 29bool usb_inserted(void); /* return the official value, what's been reported to the threads */
30bool 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
215static void usb_tick(void) 215bool 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
233static 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)