Skip to content

Commit 8ed0d12

Browse files
committed
Add bool HID::ready()
1 parent 4fcc8cd commit 8ed0d12

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

libraries/USB/examples/CompositeDevice/CompositeDevice.ino

+4-2
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ void setup() {
178178

179179
void loop() {
180180
int buttonState = digitalRead(buttonPin);
181-
if (buttonState != previousButtonState) {
181+
if (HID.ready() && buttonState != previousButtonState) {
182182
previousButtonState = buttonState;
183183
if (buttonState == LOW) {
184184
HWSerial.println("Button Pressed");
@@ -206,6 +206,8 @@ void loop() {
206206
uint8_t b[l];
207207
l = HWSerial.read(b, l);
208208
USBSerial.write(b, l);
209-
Vendor.write(b,l);
209+
if(HID.ready()){
210+
Vendor.write(b,l);
211+
}
210212
}
211213
}

libraries/USB/src/USBHID.cpp

+8-4
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,6 @@ extern "C" uint16_t tusb_hid_load_descriptor(uint8_t * dst, uint8_t * itf)
173173
return 0;
174174
}
175175
tinyusb_hid_is_initialized = true;
176-
if(!tinyusb_load_enabled_hid_devices()){
177-
return 0;
178-
}
179176

180177
uint8_t str_index = tinyusb_add_string_descriptor("TinyUSB HID");
181178
uint8_t ep_in = tinyusb_get_free_in_endpoint();
@@ -199,6 +196,9 @@ extern "C" uint16_t tusb_hid_load_descriptor(uint8_t * dst, uint8_t * itf)
199196
// Application return pointer to descriptor, whose contents must exist long enough for transfer to complete
200197
uint8_t const * tud_hid_descriptor_report_cb(uint8_t instance){
201198
log_v("instance: %u", instance);
199+
if(!tinyusb_load_enabled_hid_devices()){
200+
return NULL;
201+
}
202202
return tinyusb_hid_device_descriptor;
203203
}
204204

@@ -281,6 +281,10 @@ void USBHID::end(){
281281
}
282282
}
283283

284+
bool USBHID::ready(void){
285+
return tud_hid_n_ready(0);
286+
}
287+
284288
void tud_hid_report_complete_cb(uint8_t instance, uint8_t const* report, uint8_t len){
285289
if (tinyusb_hid_device_input_sem) {
286290
xSemaphoreGive(tinyusb_hid_device_input_sem);
@@ -298,7 +302,7 @@ bool USBHID::SendReport(uint8_t id, const void* data, size_t len, uint32_t timeo
298302
return false;
299303
}
300304

301-
bool res = tud_hid_n_ready(0);
305+
bool res = ready();
302306
if(!res){
303307
log_e("not ready");
304308
} else {

libraries/USB/src/USBHID.h

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ class USBHID
6969
USBHID(void);
7070
void begin(void);
7171
void end(void);
72+
bool ready(void);
7273
bool SendReport(uint8_t report_id, const void* data, size_t len, uint32_t timeout_ms = 100);
7374
void onEvent(esp_event_handler_t callback);
7475
void onEvent(arduino_usb_hid_event_t event, esp_event_handler_t callback);

0 commit comments

Comments
 (0)