@@ -112,17 +112,9 @@ ESPUSB::ESPUSB(size_t task_stack_size, uint8_t event_task_priority)
112112,webusb_enabled(false )
113113,webusb_url(" espressif.github.io/arduino-esp32/webusb.html"  )
114114,_started(false )
115+ ,_task_stack_size(task_stack_size)
116+ ,_event_task_priority(event_task_priority)
115117{
116-  esp_event_loop_args_t  event_task_args = {
117-  .queue_size  = 5 ,
118-  .task_name  = " arduino_usb_events"  ,
119-  .task_priority  = event_task_priority,
120-  .task_stack_size  = task_stack_size,
121-  .task_core_id  = tskNO_AFFINITY
122-  };
123-  if  (esp_event_loop_create (&event_task_args, &arduino_usb_event_loop_handle) != ESP_OK) {
124-  log_e (" esp_event_loop_create failed"  );
125-  }
126118}
127119
128120ESPUSB::~ESPUSB (){
@@ -133,6 +125,18 @@ ESPUSB::~ESPUSB(){
133125}
134126
135127bool  ESPUSB::begin (){
128+  if  (!arduino_usb_event_loop_handle) {
129+  esp_event_loop_args_t  event_task_args = {
130+  .queue_size  = 5 ,
131+  .task_name  = " arduino_usb_events"  ,
132+  .task_priority  = _event_task_priority,
133+  .task_stack_size  = _task_stack_size,
134+  .task_core_id  = tskNO_AFFINITY
135+  };
136+  if  (esp_event_loop_create (&event_task_args, &arduino_usb_event_loop_handle) != ESP_OK) {
137+  log_e (" esp_event_loop_create failed"  );
138+  }
139+  }
136140 if (!_started){
137141 tinyusb_device_config_t  tinyusb_device_config = {
138142 .vid  = vid,
0 commit comments