Skip to content

Commit bd2148a

Browse files
Merge pull request #1136 from LedgerHQ/spo-fix-windows-webusb-rc2
Spo fix windows webusb rc2
2 parents 8360ea9 + 8334527 commit bd2148a

File tree

3 files changed

+32
-23
lines changed

3 files changed

+32
-23
lines changed

lib_stusb/src/usbd_ctlreq.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,6 @@ USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef
237237
(void) USBD_LL_ClearStallEP(pdev, ep_addr);
238238
}
239239
(void) USBD_CtlSendStatus(pdev);
240-
ret = (USBD_StatusTypeDef) pdev->pClass->Setup(pdev, req);
241240
}
242241
break;
243242

lib_stusb/src/usbd_ledger.c

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
#include "os_io_seph_cmd.h"
3434
#include "seproxyhal_protocol.h"
3535

36-
3736
/* Private enumerations ------------------------------------------------------*/
3837
typedef enum {
3938
USBD_LEDGER_STATE_INITIALIZED = 0xA0,
@@ -570,19 +569,31 @@ void USBD_LEDGER_start(void)
570569
}
571570

572571
#ifdef HAVE_USB_HIDKBD
573-
if (usbd_ledger_init_data.class_mask & USBD_LEDGER_CLASS_HID_KBD && usbd_ledger_data.nb_of_class < USBD_MAX_NUM_INTERFACES) {
572+
if (usbd_ledger_init_data.class_mask & USBD_LEDGER_CLASS_HID_KBD
573+
&& usbd_ledger_data.nb_of_class < USBD_MAX_NUM_INTERFACES) {
574574
usbd_ledger_data.class[usbd_ledger_data.nb_of_class++]
575575
= (usbd_class_info_t *) PIC(&USBD_LEDGER_HID_KBD_class_info);
576576
}
577577
#else // !HAVE_USB_HIDKBD
578-
if (usbd_ledger_init_data.class_mask & USBD_LEDGER_CLASS_HID && usbd_ledger_data.nb_of_class < USBD_MAX_NUM_INTERFACES) {
578+
if (usbd_ledger_init_data.class_mask & USBD_LEDGER_CLASS_HID
579+
&& usbd_ledger_data.nb_of_class < USBD_MAX_NUM_INTERFACES) {
579580
usbd_ledger_data.class[usbd_ledger_data.nb_of_class++]
580581
= (usbd_class_info_t *) PIC(&USBD_LEDGER_HID_class_info);
581582
}
582583
#endif // !HAVE_USB_HIDKBD
583584

585+
#ifdef HAVE_WEBUSB
586+
if (usbd_ledger_init_data.class_mask & USBD_LEDGER_CLASS_WEBUSB
587+
&& usbd_ledger_data.nb_of_class < USBD_MAX_NUM_INTERFACES) {
588+
usbd_ledger_data.bcdusb = 0x10;
589+
usbd_ledger_data.class[usbd_ledger_data.nb_of_class++] = (usbd_class_info_t *) PIC(
590+
(USBD_ClassTypeDef *) (uintptr_t) &USBD_LEDGER_WEBUSB_class_info);
591+
}
592+
#endif // HAVE_WEBUSB
593+
584594
#ifdef HAVE_IO_U2F
585-
if (usbd_ledger_init_data.class_mask & USBD_LEDGER_CLASS_HID_U2F && usbd_ledger_data.nb_of_class < USBD_MAX_NUM_INTERFACES) {
595+
if (usbd_ledger_init_data.class_mask & USBD_LEDGER_CLASS_HID_U2F
596+
&& usbd_ledger_data.nb_of_class < USBD_MAX_NUM_INTERFACES) {
586597
usbd_ledger_data.class[usbd_ledger_data.nb_of_class++]
587598
= (usbd_class_info_t *) PIC(&USBD_LEDGER_HID_U2F_class_info);
588599
uint8_t buffer[4];
@@ -606,25 +617,22 @@ void USBD_LEDGER_start(void)
606617
USBD_LEDGER_CLASS_HID_U2F, USBD_LEDGER_HID_U2F_SETTING_ID_FREE_CID, buffer, 4);
607618
}
608619
#endif // HAVE_IO_U2F
620+
609621
#ifdef HAVE_CCID_USB
610-
if (usbd_ledger_init_data.class_mask & USBD_LEDGER_CLASS_CCID_BULK && usbd_ledger_data.nb_of_class < USBD_MAX_NUM_INTERFACES) {
611-
usbd_ledger_data.class[usbd_ledger_data.nb_of_class++]
612-
= (usbd_class_info_t *) PIC((USBD_ClassTypeDef *)(uintptr_t)&USBD_LEDGER_CCID_Bulk_class_info);
622+
if (usbd_ledger_init_data.class_mask & USBD_LEDGER_CLASS_CCID_BULK
623+
&& usbd_ledger_data.nb_of_class < USBD_MAX_NUM_INTERFACES) {
624+
usbd_ledger_data.class[usbd_ledger_data.nb_of_class++] = (usbd_class_info_t *) PIC(
625+
(USBD_ClassTypeDef *) (uintptr_t) &USBD_LEDGER_CCID_Bulk_class_info);
613626
}
614627
#endif // HAVE_CCID_USB
615-
#ifdef HAVE_WEBUSB
616-
if (usbd_ledger_init_data.class_mask & USBD_LEDGER_CLASS_WEBUSB && usbd_ledger_data.nb_of_class < USBD_MAX_NUM_INTERFACES) {
617-
usbd_ledger_data.bcdusb = 0x10;
618-
usbd_ledger_data.class[usbd_ledger_data.nb_of_class++]
619-
= (usbd_class_info_t *) PIC((USBD_ClassTypeDef *)(uintptr_t)&USBD_LEDGER_WEBUSB_class_info);
620-
}
621-
#endif // HAVE_WEBUSB
628+
622629
#ifdef HAVE_CDCUSB
623-
if (usbd_ledger_init_data.class_mask & USBD_LEDGER_CLASS_CDC && usbd_ledger_data.nb_of_class + 1 < USBD_MAX_NUM_INTERFACES) {
624-
usbd_ledger_data.class[usbd_ledger_data.nb_of_class++]
625-
= (usbd_class_info_t *) PIC((USBD_ClassTypeDef *)(uintptr_t)&USBD_LEDGER_CDC_Control_class_info);
626-
usbd_ledger_data.class[usbd_ledger_data.nb_of_class++]
627-
= (usbd_class_info_t *) PIC((USBD_ClassTypeDef *)(uintptr_t)&USBD_LEDGER_CDC_Data_class_info);
630+
if (usbd_ledger_init_data.class_mask & USBD_LEDGER_CLASS_CDC
631+
&& usbd_ledger_data.nb_of_class + 1 < USBD_MAX_NUM_INTERFACES) {
632+
usbd_ledger_data.class[usbd_ledger_data.nb_of_class++] = (usbd_class_info_t *) PIC(
633+
(USBD_ClassTypeDef *) (uintptr_t) &USBD_LEDGER_CDC_Control_class_info);
634+
usbd_ledger_data.class[usbd_ledger_data.nb_of_class++] = (usbd_class_info_t *) PIC(
635+
(USBD_ClassTypeDef *) (uintptr_t) &USBD_LEDGER_CDC_Data_class_info);
628636
usbd_ledger_data.usbd_iad = 1;
629637
}
630638
#endif // HAVE_CDCUSB
@@ -638,8 +646,10 @@ void USBD_LEDGER_start(void)
638646
usbd_ledger_data.bcdusb,
639647
usbd_ledger_data.usbd_iad,
640648
get_bos_desc);
641-
USBD_Init(&usbd_ledger_data.usbd_handle, (USBD_DescriptorsTypeDef*)(uintptr_t)&LEDGER_Desc, 0);
642-
USBD_RegisterClass(&usbd_ledger_data.usbd_handle, (USBD_ClassTypeDef *)(uintptr_t)&USBD_LEDGER_CLASS);
649+
USBD_Init(
650+
&usbd_ledger_data.usbd_handle, (USBD_DescriptorsTypeDef *) (uintptr_t) &LEDGER_Desc, 0);
651+
USBD_RegisterClass(&usbd_ledger_data.usbd_handle,
652+
(USBD_ClassTypeDef *) (uintptr_t) &USBD_LEDGER_CLASS);
643653
}
644654
if (usbd_ledger_data.state == USBD_LEDGER_STATE_STOPPED) {
645655
USBD_Start(&usbd_ledger_data.usbd_handle);

lib_stusb/src/usbd_ledger_webusb.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ const uint8_t USBD_LEDGER_WINUSB_ms_os_20_descriptor_set[] = {
194194
// Microsoft OS 2.0 function subset header
195195
0x08, 0x00, // wLength
196196
0x02, 0x00, // wDescriptorType : MS_OS_20_SUBSET_HEADER_FUNCTION
197-
0x02, // bFirstInterface (dynamic) // TODO_IO
197+
0x01, // bFirstInterface (dynamic) // TODO_IO
198198
0x00, // bReserved
199199
0xa0, 0x00, // wSubsetLength
200200

0 commit comments

Comments
 (0)