Skip to content

Commit d04f9ae

Browse files
committed
update tinyusb stack to support vendor
1 parent e873acd commit d04f9ae

23 files changed

+748
-374
lines changed

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,3 @@ The following libraries are used:
115115
- [tinyusb](https://github.com/hathach/tinyusb) as usb stack
116116
- [nrfx](https://github.com/NordicSemiconductor/nrfx) for peripherals driver
117117
- [littlefs](https://github.com/ARMmbed/littlefs) for internal file system
118-
- [fatfs by elm-chan](http://elm-chan.org/fsw/ff/00index_e.html) for external file system

cores/nRF5/Adafruit_TinyUSB_Core/tinyusb/src/class/cdc/cdc_device.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ bool cdcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t
300300

301301
// Invoked when class request DATA stage is finished.
302302
// return false to stall control endpoint (e.g Host send non-sense DATA)
303-
bool cdcd_control_request_complete(uint8_t rhport, tusb_control_request_t const * request)
303+
bool cdcd_control_complete(uint8_t rhport, tusb_control_request_t const * request)
304304
{
305305
(void) rhport;
306306

@@ -334,11 +334,11 @@ bool cdcd_control_request(uint8_t rhport, tusb_control_request_t const * request
334334
switch ( request->bRequest )
335335
{
336336
case CDC_REQUEST_SET_LINE_CODING:
337-
usbd_control_xfer(rhport, request, &p_cdc->line_coding, sizeof(cdc_line_coding_t));
337+
tud_control_xfer(rhport, request, &p_cdc->line_coding, sizeof(cdc_line_coding_t));
338338
break;
339339

340340
case CDC_REQUEST_GET_LINE_CODING:
341-
usbd_control_xfer(rhport, request, &p_cdc->line_coding, sizeof(cdc_line_coding_t));
341+
tud_control_xfer(rhport, request, &p_cdc->line_coding, sizeof(cdc_line_coding_t));
342342
break;
343343

344344
case CDC_REQUEST_SET_CONTROL_LINE_STATE:
@@ -349,7 +349,7 @@ bool cdcd_control_request(uint8_t rhport, tusb_control_request_t const * request
349349
// This signal corresponds to V.24 signal 105 and RS-232 signal RTS (Request to Send)
350350
p_cdc->line_state = (uint8_t) request->wValue;
351351

352-
usbd_control_status(rhport, request);
352+
tud_control_status(rhport, request);
353353

354354
// Invoke callback
355355
if ( tud_cdc_line_state_cb) tud_cdc_line_state_cb(itf, tu_bit_test(request->wValue, 0), tu_bit_test(request->wValue, 1));
@@ -370,7 +370,7 @@ bool cdcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_
370370
uint8_t const itf = 0;
371371
cdcd_interface_t* p_cdc = &_cdcd_itf[itf];
372372

373-
// receive new data
373+
// Received new data
374374
if ( ep_addr == p_cdc->ep_out )
375375
{
376376
for(uint32_t i=0; i<xferred_bytes; i++)
@@ -391,7 +391,9 @@ bool cdcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_
391391
_prep_out_transaction(itf);
392392
}
393393

394-
// sent data
394+
// Data sent to host, we could continue to fetch data tx fifo to send.
395+
// But it will cause incorrect baudrate set in line coding.
396+
// Though maybe the baudrate is not really important !!!
395397
// if ( ep_addr == p_cdc->ep_in )
396398
// {
397399
//

cores/nRF5/Adafruit_TinyUSB_Core/tinyusb/src/class/cdc/cdc_device.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,12 @@ static inline bool tud_cdc_write_flush (void)
176176
//--------------------------------------------------------------------+
177177
// INTERNAL USBD-CLASS DRIVER API
178178
//--------------------------------------------------------------------+
179-
void cdcd_init (void);
180-
bool cdcd_open (uint8_t rhport, tusb_desc_interface_t const * p_interface_desc, uint16_t *p_length);
181-
bool cdcd_control_request (uint8_t rhport, tusb_control_request_t const * p_request);
182-
bool cdcd_control_request_complete (uint8_t rhport, tusb_control_request_t const * p_request);
183-
bool cdcd_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes);
184-
void cdcd_reset (uint8_t rhport);
179+
void cdcd_init (void);
180+
void cdcd_reset (uint8_t rhport);
181+
bool cdcd_open (uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t *p_length);
182+
bool cdcd_control_request (uint8_t rhport, tusb_control_request_t const * request);
183+
bool cdcd_control_complete (uint8_t rhport, tusb_control_request_t const * request);
184+
bool cdcd_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes);
185185

186186
#ifdef __cplusplus
187187
}

cores/nRF5/Adafruit_TinyUSB_Core/tinyusb/src/class/custom/custom_device.c

Lines changed: 0 additions & 93 deletions
This file was deleted.

cores/nRF5/Adafruit_TinyUSB_Core/tinyusb/src/class/custom/custom_device.h

Lines changed: 0 additions & 58 deletions
This file was deleted.

cores/nRF5/Adafruit_TinyUSB_Core/tinyusb/src/class/hid/hid_device.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ bool hidd_control_request(uint8_t rhport, tusb_control_request_t const * p_reque
205205
if (p_request->bRequest == TUSB_REQ_GET_DESCRIPTOR && desc_type == HID_DESC_TYPE_REPORT)
206206
{
207207
uint8_t const * desc_report = tud_hid_descriptor_report_cb();
208-
usbd_control_xfer(rhport, p_request, (void*) desc_report, p_hid->reprot_desc_len);
208+
tud_control_xfer(rhport, p_request, (void*) desc_report, p_hid->reprot_desc_len);
209209
}else
210210
{
211211
return false; // stall unsupported request
@@ -225,12 +225,12 @@ bool hidd_control_request(uint8_t rhport, tusb_control_request_t const * p_reque
225225
uint16_t xferlen = tud_hid_get_report_cb(report_id, (hid_report_type_t) report_type, p_hid->epin_buf, p_request->wLength);
226226
TU_ASSERT( xferlen > 0 );
227227

228-
usbd_control_xfer(rhport, p_request, p_hid->epin_buf, xferlen);
228+
tud_control_xfer(rhport, p_request, p_hid->epin_buf, xferlen);
229229
}
230230
break;
231231

232232
case HID_REQ_CONTROL_SET_REPORT:
233-
usbd_control_xfer(rhport, p_request, p_hid->epout_buf, p_request->wLength);
233+
tud_control_xfer(rhport, p_request, p_hid->epout_buf, p_request->wLength);
234234
break;
235235

236236
case HID_REQ_CONTROL_SET_IDLE:
@@ -241,18 +241,18 @@ bool hidd_control_request(uint8_t rhport, tusb_control_request_t const * p_reque
241241
if ( !tud_hid_set_idle_cb(p_hid->idle_rate) ) return false;
242242
}
243243

244-
usbd_control_status(rhport, p_request);
244+
tud_control_status(rhport, p_request);
245245
break;
246246

247247
case HID_REQ_CONTROL_GET_IDLE:
248248
// TODO idle rate of report
249-
usbd_control_xfer(rhport, p_request, &p_hid->idle_rate, 1);
249+
tud_control_xfer(rhport, p_request, &p_hid->idle_rate, 1);
250250
break;
251251

252252
case HID_REQ_CONTROL_GET_PROTOCOL:
253253
{
254254
uint8_t protocol = 1-p_hid->boot_mode; // 0 is Boot, 1 is Report protocol
255-
usbd_control_xfer(rhport, p_request, &protocol, 1);
255+
tud_control_xfer(rhport, p_request, &protocol, 1);
256256
}
257257
break;
258258

@@ -261,7 +261,7 @@ bool hidd_control_request(uint8_t rhport, tusb_control_request_t const * p_reque
261261

262262
if (tud_hid_boot_mode_cb) tud_hid_boot_mode_cb(p_hid->boot_mode);
263263

264-
usbd_control_status(rhport, p_request);
264+
tud_control_status(rhport, p_request);
265265
break;
266266

267267
default: return false; // stall unsupported request
@@ -276,7 +276,7 @@ bool hidd_control_request(uint8_t rhport, tusb_control_request_t const * p_reque
276276

277277
// Invoked when class request DATA stage is finished.
278278
// return false to stall control endpoint (e.g Host send non-sense DATA)
279-
bool hidd_control_request_complete(uint8_t rhport, tusb_control_request_t const * p_request)
279+
bool hidd_control_complete(uint8_t rhport, tusb_control_request_t const * p_request)
280280
{
281281
(void) rhport;
282282
hidd_interface_t* p_hid = get_interface_by_itfnum( (uint8_t) p_request->wIndex );

cores/nRF5/Adafruit_TinyUSB_Core/tinyusb/src/class/hid/hid_device.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -300,12 +300,12 @@ TU_ATTR_WEAK bool tud_hid_set_idle_cb(uint8_t idle_rate);
300300
//--------------------------------------------------------------------+
301301
// Internal Class Driver API
302302
//--------------------------------------------------------------------+
303-
void hidd_init(void);
304-
bool hidd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t *p_length);
305-
bool hidd_control_request(uint8_t rhport, tusb_control_request_t const * p_request);
306-
bool hidd_control_request_complete (uint8_t rhport, tusb_control_request_t const * p_request);
307-
bool hidd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes);
308-
void hidd_reset(uint8_t rhport);
303+
void hidd_init (void);
304+
void hidd_reset (uint8_t rhport);
305+
bool hidd_open (uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t *p_length);
306+
bool hidd_control_request (uint8_t rhport, tusb_control_request_t const * request);
307+
bool hidd_control_complete (uint8_t rhport, tusb_control_request_t const * request);
308+
bool hidd_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes);
309309

310310
#ifdef __cplusplus
311311
}

cores/nRF5/Adafruit_TinyUSB_Core/tinyusb/src/class/midi/midi_device.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ typedef struct
4444
uint8_t ep_in;
4545
uint8_t ep_out;
4646

47+
/*------------- From this point, data is not cleared by bus reset -------------*/
4748
// FIFO
4849
tu_fifo_t rx_ff;
4950
tu_fifo_t tx_ff;
@@ -77,7 +78,7 @@ CFG_TUSB_MEM_SECTION midid_interface_t _midid_itf[CFG_TUD_MIDI];
7778
bool tud_midi_n_mounted (uint8_t itf)
7879
{
7980
midid_interface_t* midi = &_midid_itf[itf];
80-
return midi->itf_num != 0;
81+
return midi->ep_in && midi->ep_out;
8182
}
8283

8384
//--------------------------------------------------------------------+
@@ -127,7 +128,8 @@ void midi_rx_done_cb(midid_interface_t* midi, uint8_t const* buffer, uint32_t bu
127128

128129
static bool maybe_transmit(midid_interface_t* midi, uint8_t itf_index)
129130
{
130-
TU_VERIFY( !usbd_edpt_busy(TUD_OPT_RHPORT, midi->ep_in) ); // skip if previous transfer not complete
131+
// skip if previous transfer not complete
132+
TU_VERIFY( !usbd_edpt_busy(TUD_OPT_RHPORT, midi->ep_in) );
131133

132134
uint16_t count = tu_fifo_read_n(&midi->tx_ff, midi->epin_buf, CFG_TUD_MIDI_EPSIZE);
133135
if (count > 0)
@@ -222,6 +224,7 @@ void midid_init(void)
222224
// config fifo
223225
tu_fifo_config(&midi->rx_ff, midi->rx_ff_buf, CFG_TUD_MIDI_RX_BUFSIZE, 1, true);
224226
tu_fifo_config(&midi->tx_ff, midi->tx_ff_buf, CFG_TUD_MIDI_TX_BUFSIZE, 1, true);
227+
225228
#if CFG_FIFO_MUTEX
226229
tu_fifo_config_mutex(&midi->rx_ff, osal_mutex_create(&midi->rx_ff_mutex));
227230
tu_fifo_config_mutex(&midi->tx_ff, osal_mutex_create(&midi->tx_ff_mutex));
@@ -275,7 +278,8 @@ bool midid_open(uint8_t rhport, tusb_desc_interface_t const * p_interface_desc,
275278
(*p_length) = sizeof(tusb_desc_interface_t);
276279

277280
uint8_t found_endpoints = 0;
278-
while (found_endpoints < p_interface_desc->bNumEndpoints) {
281+
while (found_endpoints < p_interface_desc->bNumEndpoints)
282+
{
279283
if ( TUSB_DESC_ENDPOINT == p_desc[DESC_OFFSET_TYPE])
280284
{
281285
TU_ASSERT( dcd_edpt_open(rhport, (tusb_desc_endpoint_t const *) p_desc), false);
@@ -300,7 +304,7 @@ bool midid_open(uint8_t rhport, tusb_desc_interface_t const * p_interface_desc,
300304
return true;
301305
}
302306

303-
bool midid_control_request_complete(uint8_t rhport, tusb_control_request_t const * p_request)
307+
bool midid_control_complete(uint8_t rhport, tusb_control_request_t const * p_request)
304308
{
305309
return false;
306310
}
@@ -313,20 +317,20 @@ bool midid_control_request(uint8_t rhport, tusb_control_request_t const * p_requ
313317
return false;
314318
}
315319

316-
bool midid_xfer_cb(uint8_t rhport, uint8_t edpt_addr, xfer_result_t result, uint32_t xferred_bytes)
320+
bool midid_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes)
317321
{
318322
// TODO Support multiple interfaces
319323
uint8_t const itf = 0;
320324
midid_interface_t* p_midi = &_midid_itf[itf];
321325

322326
// receive new data
323-
if ( edpt_addr == p_midi->ep_out )
327+
if ( ep_addr == p_midi->ep_out )
324328
{
325329
midi_rx_done_cb(p_midi, p_midi->epout_buf, xferred_bytes);
326330

327331
// prepare for next
328332
TU_ASSERT( usbd_edpt_xfer(rhport, p_midi->ep_out, p_midi->epout_buf, CFG_TUD_MIDI_EPSIZE), false );
329-
} else if ( edpt_addr == p_midi->ep_in ) {
333+
} else if ( ep_addr == p_midi->ep_in ) {
330334
maybe_transmit(p_midi, itf);
331335
}
332336

0 commit comments

Comments
 (0)