File tree Expand file tree Collapse file tree 2 files changed +9
-5
lines changed Expand file tree Collapse file tree 2 files changed +9
-5
lines changed Original file line number Diff line number Diff line change 33
33
#include "supervisor/shared/tick.h"
34
34
#include "shared-bindings/microcontroller/__init__.h"
35
35
36
- STATIC volatile background_callback_t * callback_head , * callback_tail ;
36
+ STATIC volatile background_callback_t * volatile callback_head , * volatile callback_tail ;
37
37
38
38
#define CALLBACK_CRITICAL_BEGIN (common_hal_mcu_disable_interrupts())
39
39
#define CALLBACK_CRITICAL_END (common_hal_mcu_enable_interrupts())
@@ -50,7 +50,6 @@ void background_callback_add_core(background_callback_t *cb) {
50
50
cb -> prev = (background_callback_t * )callback_tail ;
51
51
if (callback_tail ) {
52
52
callback_tail -> next = cb ;
53
- cb -> prev = (background_callback_t * )callback_tail ;
54
53
}
55
54
if (!callback_head ) {
56
55
callback_head = cb ;
@@ -106,6 +105,9 @@ void background_callback_end_critical_section() {
106
105
CALLBACK_CRITICAL_END ;
107
106
}
108
107
108
+ extern background_callback_t usb_callback ;
109
+ extern void usb_background_do (void * unused );
110
+
109
111
void background_callback_reset () {
110
112
CALLBACK_CRITICAL_BEGIN ;
111
113
background_callback_t * cb = (background_callback_t * )callback_head ;
@@ -118,6 +120,8 @@ void background_callback_reset() {
118
120
callback_tail = NULL ;
119
121
in_background_callback = false;
120
122
CALLBACK_CRITICAL_END ;
123
+
124
+ background_callback_add (& usb_callback , usb_background_do , NULL );
121
125
}
122
126
123
127
void background_callback_gc_collect (void ) {
Original file line number Diff line number Diff line change @@ -93,13 +93,13 @@ void usb_background(void) {
93
93
}
94
94
}
95
95
96
- static background_callback_t usb_callback ;
97
- static void usb_background_do (void * unused ) {
96
+ /* static*/ background_callback_t usb_callback ;
97
+ /* static*/ void usb_background_do (void * unused ) {
98
98
usb_background ();
99
99
}
100
100
101
101
void usb_irq_handler (void ) {
102
- tud_int_handler (0 );
102
+ tud_int_handler (0 ); \
103
103
background_callback_add (& usb_callback , usb_background_do , NULL );
104
104
}
105
105
You can’t perform that action at this time.
0 commit comments