diff options
Diffstat (limited to 'examples/device')
| -rw-r--r-- | examples/device/webusb/src/main.c | 6 | ||||
| -rw-r--r-- | examples/device/webusb/src/usb_descriptors.c | 38 |
2 files changed, 38 insertions, 6 deletions
diff --git a/examples/device/webusb/src/main.c b/examples/device/webusb/src/main.c index 59e934930..5624ff4bd 100644 --- a/examples/device/webusb/src/main.c +++ b/examples/device/webusb/src/main.c @@ -30,12 +30,6 @@ #include "bsp/board.h" #include "tusb.h" -/* This MIDI example send sequence of note (on/off) repeatedly. To test on PC, you need to install - * synth software and midi connection management software. On - * - Linux (Ubuntu) : install qsynth, qjackctl. Then connect TinyUSB output port to FLUID Synth input port - * - */ - //--------------------------------------------------------------------+ // MACRO CONSTANT TYPEDEF PROTYPES //--------------------------------------------------------------------+ diff --git a/examples/device/webusb/src/usb_descriptors.c b/examples/device/webusb/src/usb_descriptors.c index f1e9dd979..97c05e5d0 100644 --- a/examples/device/webusb/src/usb_descriptors.c +++ b/examples/device/webusb/src/usb_descriptors.c @@ -174,3 +174,41 @@ uint16_t const* tud_descriptor_string_cb(uint8_t index) return _desc_str; } + +//--------------------------------------------------------------------+ +// WebUSB URL Descriptor +//--------------------------------------------------------------------+ +#define URL "github.com/hathach/tinyusb" + +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bScheme; + char url[]; +} tusb_desc_webusb_url_t; + +const tusb_desc_webusb_url_t desc_url = +{ + .bLength = 3 + sizeof(URL) - 1, + .bDescriptorType = 3, // WEBUSB URL type + .bScheme = 1, // 0: http, 1: https + .url = URL +}; + +bool tud_control_vendor_request_cb(uint8_t rhport, tusb_control_request_t const * request) +{ + if ( request->bRequest == 0x01 ) // webusb vendor code + { + return tud_control_xfer(rhport, request, (void*) &desc_url, desc_url.bLength); + }else + { + return false; + } +} + +bool tud_control_vendor_complete_cb(uint8_t rhport, tusb_control_request_t const * request) +{ + (void) rhport; + return true; +} |
