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:
William Wilgus 2021-10-31 11:59:53 -04:00
parent 0b1c05db40
commit 894a9d9063
3 changed files with 24 additions and 3 deletions

View File

@ -52,7 +52,7 @@
#define EVENT_CLASS_RECORDING 0x1000
#define EVENT_CLASS_LCD 0x2000
#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
* 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);
/** System events **/
enum {
/* USB_INSERTED
data = &usbmode */
SYS_EVENT_USB_INSERTED = (EVENT_CLASS_SYSTEM|1),
/* USB_EXTRACTED
data = NULL */
SYS_EVENT_USB_EXTRACTED,
};
#endif

View File

@ -476,7 +476,9 @@ static void NORETURN_ATTR usb_thread(void)
usb_state = USB_POWERED;
usb_stack_enable(true);
#ifndef BOOTLOADER
send_event(SYS_EVENT_USB_INSERTED, &usb_mode);
#endif
/* Power (charging-only) button */
#ifdef HAVE_USB_POWER
new_usbmode = usb_mode;
@ -547,7 +549,9 @@ static void NORETURN_ATTR usb_thread(void)
#ifdef HAVE_USB_POWER
new_usbmode = usb_mode;
#endif
#ifndef BOOTLOADER
send_event(SYS_EVENT_USB_EXTRACTED, NULL);
#endif
usb_set_host_present(false);
break;
/* USB_EXTRACTED: */

View File

@ -145,10 +145,17 @@ void sim_trigger_screendump(void)
static bool is_usb_inserted;
void sim_trigger_usb(bool inserted)
{
int usbmode = 0;
if (inserted)
{
send_event(SYS_EVENT_USB_INSERTED, &usbmode);
queue_post(&sim_queue, SIM_USB_INSERTED, 0);
}
else
{
send_event(SYS_EVENT_USB_EXTRACTED, NULL);
queue_post(&sim_queue, SIM_USB_EXTRACTED, 0);
}
is_usb_inserted = inserted;
}