USB add Insertion and Extraction callback events
We have this nice event library laying around probably a few more places we could use event callbacks Change-Id: I9180fa9d78788d161f2587110644ca3e08df6f50
This commit is contained in:
parent
0b1c05db40
commit
894a9d9063
|
@ -52,7 +52,7 @@
|
||||||
#define EVENT_CLASS_RECORDING 0x1000
|
#define EVENT_CLASS_RECORDING 0x1000
|
||||||
#define EVENT_CLASS_LCD 0x2000
|
#define EVENT_CLASS_LCD 0x2000
|
||||||
#define EVENT_CLASS_VOICE 0x4000
|
#define EVENT_CLASS_VOICE 0x4000
|
||||||
|
#define EVENT_CLASS_SYSTEM 0x8000 /*LAST ONE */
|
||||||
/**
|
/**
|
||||||
* Subscribe to an event with a simple callback. The callback will be called
|
* Subscribe to an event with a simple callback. The callback will be called
|
||||||
* synchronously everytime the event fires, passing the event id and data to
|
* synchronously everytime the event fires, passing the event id and data to
|
||||||
|
@ -99,4 +99,14 @@ void remove_event_ex(unsigned short id, void (*handler)(unsigned short id, void
|
||||||
*/
|
*/
|
||||||
void send_event(unsigned short id, void *data);
|
void send_event(unsigned short id, void *data);
|
||||||
|
|
||||||
|
/** System events **/
|
||||||
|
enum {
|
||||||
|
/* USB_INSERTED
|
||||||
|
data = &usbmode */
|
||||||
|
SYS_EVENT_USB_INSERTED = (EVENT_CLASS_SYSTEM|1),
|
||||||
|
/* USB_EXTRACTED
|
||||||
|
data = NULL */
|
||||||
|
SYS_EVENT_USB_EXTRACTED,
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -476,7 +476,9 @@ static void NORETURN_ATTR usb_thread(void)
|
||||||
usb_state = USB_POWERED;
|
usb_state = USB_POWERED;
|
||||||
|
|
||||||
usb_stack_enable(true);
|
usb_stack_enable(true);
|
||||||
|
#ifndef BOOTLOADER
|
||||||
|
send_event(SYS_EVENT_USB_INSERTED, &usb_mode);
|
||||||
|
#endif
|
||||||
/* Power (charging-only) button */
|
/* Power (charging-only) button */
|
||||||
#ifdef HAVE_USB_POWER
|
#ifdef HAVE_USB_POWER
|
||||||
new_usbmode = usb_mode;
|
new_usbmode = usb_mode;
|
||||||
|
@ -547,7 +549,9 @@ static void NORETURN_ATTR usb_thread(void)
|
||||||
#ifdef HAVE_USB_POWER
|
#ifdef HAVE_USB_POWER
|
||||||
new_usbmode = usb_mode;
|
new_usbmode = usb_mode;
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef BOOTLOADER
|
||||||
|
send_event(SYS_EVENT_USB_EXTRACTED, NULL);
|
||||||
|
#endif
|
||||||
usb_set_host_present(false);
|
usb_set_host_present(false);
|
||||||
break;
|
break;
|
||||||
/* USB_EXTRACTED: */
|
/* USB_EXTRACTED: */
|
||||||
|
|
|
@ -145,10 +145,17 @@ void sim_trigger_screendump(void)
|
||||||
static bool is_usb_inserted;
|
static bool is_usb_inserted;
|
||||||
void sim_trigger_usb(bool inserted)
|
void sim_trigger_usb(bool inserted)
|
||||||
{
|
{
|
||||||
|
int usbmode = 0;
|
||||||
if (inserted)
|
if (inserted)
|
||||||
|
{
|
||||||
|
send_event(SYS_EVENT_USB_INSERTED, &usbmode);
|
||||||
queue_post(&sim_queue, SIM_USB_INSERTED, 0);
|
queue_post(&sim_queue, SIM_USB_INSERTED, 0);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
send_event(SYS_EVENT_USB_EXTRACTED, NULL);
|
||||||
queue_post(&sim_queue, SIM_USB_EXTRACTED, 0);
|
queue_post(&sim_queue, SIM_USB_EXTRACTED, 0);
|
||||||
|
}
|
||||||
is_usb_inserted = inserted;
|
is_usb_inserted = inserted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue