laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/39447?usp=email )
Change subject: add ext power detect & dev reset ......................................................................
add ext power detect & dev reset
Change-Id: Ied62450670dba2227daa96cbcd162cfe8414445a --- M sysmoOCTSIM/main.c M sysmoOCTSIM/usb/device/usbdc.c 2 files changed, 18 insertions(+), 0 deletions(-)
Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved
diff --git a/sysmoOCTSIM/main.c b/sysmoOCTSIM/main.c index afb70e9..9849298 100644 --- a/sysmoOCTSIM/main.c +++ b/sysmoOCTSIM/main.c @@ -324,7 +324,19 @@ } }
+/* used to update the usb ext power dev status flag + reset the device when (un)plugging ext power */ +bool old_extpwer_state = 0; +void init_extpower_detect(void) +{ + old_extpwer_state = gpio_get_pin_level(MUX_STAT); +}
+void poll_extpower_detect(void) +{ + if (old_extpwer_state != gpio_get_pin_level(MUX_STAT)) { + NVIC_SystemReset(); + } +}
/*********************************************************************** * Command Line interface @@ -516,6 +528,7 @@ get_rstcause_str(rstcause_buf);
atmel_start_init(); + init_extpower_detect(); board_init(); usb_init(); usb_start(); @@ -578,6 +591,7 @@ while (true) { // main loop if (delayed_usb_reset) do_usb_res(); + poll_extpower_detect(); command_try_recv(); poll_card_detect(); submit_next_irq(); diff --git a/sysmoOCTSIM/usb/device/usbdc.c b/sysmoOCTSIM/usb/device/usbdc.c index 3cfd7bc..4b84937 100644 --- a/sysmoOCTSIM/usb/device/usbdc.c +++ b/sysmoOCTSIM/usb/device/usbdc.c @@ -35,6 +35,8 @@
#define USBDC_VERSION 0x00000001u
+extern bool old_extpwer_state; + /** * \brief USB Device Core Sof Handler */ @@ -318,6 +320,8 @@
switch (req->bmRequestType & USB_REQT_RECIP_MASK) { case USB_REQT_RECIP_DEVICE: + st = old_extpwer_state ? 0x0 : 0x1; + break; case USB_REQT_RECIP_INTERFACE: st = 0; break;