Merge branch 'master' into test-mode-support
This commit is contained in:
		@@ -131,6 +131,9 @@ void dcd_dcache_clean_invalidate(void const* addr, uint32_t data_size) TU_ATTR_W
 | 
			
		||||
// Initialize controller to device mode
 | 
			
		||||
void dcd_init(uint8_t rhport);
 | 
			
		||||
 | 
			
		||||
// Deinitialize controller, unset device mode.
 | 
			
		||||
bool dcd_deinit(uint8_t rhport);
 | 
			
		||||
 | 
			
		||||
// Interrupt Handler
 | 
			
		||||
void dcd_int_handler(uint8_t rhport);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -37,9 +37,12 @@ extern "C" {
 | 
			
		||||
// Application API
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
 | 
			
		||||
// Init device stack
 | 
			
		||||
// Init device stack on roothub port
 | 
			
		||||
bool tud_init (uint8_t rhport);
 | 
			
		||||
 | 
			
		||||
// Deinit device stack on roothub port
 | 
			
		||||
bool tud_deinit(uint8_t rhport);
 | 
			
		||||
 | 
			
		||||
// Check if device stack is already initialized
 | 
			
		||||
bool tud_inited(void);
 | 
			
		||||
 | 
			
		||||
@@ -94,6 +97,9 @@ bool tud_disconnect(void);
 | 
			
		||||
// Return false on unsupported MCUs
 | 
			
		||||
bool tud_connect(void);
 | 
			
		||||
 | 
			
		||||
// Enable or disable the Start Of Frame callback support
 | 
			
		||||
bool tud_sof_cb_enable(bool en);
 | 
			
		||||
 | 
			
		||||
// Carry out Data and Status stage of control transfer
 | 
			
		||||
// - If len = 0, it is equivalent to sending status only
 | 
			
		||||
// - If len > wLength : it will be truncated
 | 
			
		||||
@@ -149,6 +155,9 @@ TU_ATTR_WEAK void tud_resume_cb(void);
 | 
			
		||||
// Invoked when there is a new usb event, which need to be processed by tud_task()/tud_task_ext()
 | 
			
		||||
void tud_event_hook_cb(uint8_t rhport, uint32_t eventid, bool in_isr);
 | 
			
		||||
 | 
			
		||||
// Invoked when a new (micro) frame started
 | 
			
		||||
void tud_sof_cb(uint32_t frame_count);
 | 
			
		||||
 | 
			
		||||
// Invoked when received control request with VENDOR TYPE
 | 
			
		||||
TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request_t const * request);
 | 
			
		||||
 | 
			
		||||
@@ -218,8 +227,8 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb
 | 
			
		||||
  5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_HEADER, U16_TO_U8S_LE(0x0120),\
 | 
			
		||||
  /* CDC Call */\
 | 
			
		||||
  5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_CALL_MANAGEMENT, 0, (uint8_t)((_itfnum) + 1),\
 | 
			
		||||
  /* CDC ACM: support line request */\
 | 
			
		||||
  4, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_ABSTRACT_CONTROL_MANAGEMENT, 2,\
 | 
			
		||||
  /* CDC ACM: support line request + send break */\
 | 
			
		||||
  4, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_ABSTRACT_CONTROL_MANAGEMENT, 6,\
 | 
			
		||||
  /* CDC Union */\
 | 
			
		||||
  5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_UNION, _itfnum, (uint8_t)((_itfnum) + 1),\
 | 
			
		||||
  /* Endpoint Notification */\
 | 
			
		||||
@@ -393,6 +402,11 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb
 | 
			
		||||
 | 
			
		||||
// For more channels, add definitions here
 | 
			
		||||
 | 
			
		||||
/* Standard AC Interrupt Endpoint Descriptor(4.8.2.1) */
 | 
			
		||||
#define TUD_AUDIO_DESC_STD_AC_INT_EP_LEN 7
 | 
			
		||||
#define TUD_AUDIO_DESC_STD_AC_INT_EP(_ep, _interval) \
 | 
			
		||||
  TUD_AUDIO_DESC_STD_AC_INT_EP_LEN, TUSB_DESC_ENDPOINT, _ep, TUSB_XFER_INTERRUPT, U16_TO_U8S_LE(6), _interval
 | 
			
		||||
 | 
			
		||||
/* Standard AS Interface Descriptor(4.9.1) */
 | 
			
		||||
#define TUD_AUDIO_DESC_STD_AS_INT_LEN 9
 | 
			
		||||
#define TUD_AUDIO_DESC_STD_AS_INT(_itfnum, _altset, _nEPs, _stridx) \
 | 
			
		||||
@@ -421,7 +435,7 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb
 | 
			
		||||
/* Standard AS Isochronous Feedback Endpoint Descriptor(4.10.2.1) */
 | 
			
		||||
#define TUD_AUDIO_DESC_STD_AS_ISO_FB_EP_LEN 7
 | 
			
		||||
#define TUD_AUDIO_DESC_STD_AS_ISO_FB_EP(_ep, _interval) \
 | 
			
		||||
  TUD_AUDIO_DESC_STD_AS_ISO_FB_EP_LEN, TUSB_DESC_ENDPOINT, _ep, (uint8_t) (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_NO_SYNC | TUSB_ISO_EP_ATT_EXPLICIT_FB), U16_TO_U8S_LE(4), _interval
 | 
			
		||||
  TUD_AUDIO_DESC_STD_AS_ISO_FB_EP_LEN, TUSB_DESC_ENDPOINT, _ep, (uint8_t) ((uint8_t)TUSB_XFER_ISOCHRONOUS | (uint8_t)TUSB_ISO_EP_ATT_NO_SYNC | (uint8_t)TUSB_ISO_EP_ATT_EXPLICIT_FB), U16_TO_U8S_LE(4), _interval
 | 
			
		||||
 | 
			
		||||
// AUDIO simple descriptor (UAC2) for 1 microphone input
 | 
			
		||||
// - 1 Input Terminal, 1 Feature Unit (Mute and Volume Control), 1 Output Terminal, 1 Clock Source
 | 
			
		||||
@@ -468,7 +482,7 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb
 | 
			
		||||
  /* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */\
 | 
			
		||||
  TUD_AUDIO_DESC_TYPE_I_FORMAT(_nBytesPerSample, _nBitsUsedPerSample),\
 | 
			
		||||
  /* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */\
 | 
			
		||||
  TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (uint8_t) (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ 0x01),\
 | 
			
		||||
  TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (uint8_t) ((uint8_t)TUSB_XFER_ISOCHRONOUS | (uint8_t)TUSB_ISO_EP_ATT_ASYNCHRONOUS | (uint8_t)TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ 0x01),\
 | 
			
		||||
  /* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */\
 | 
			
		||||
  TUD_AUDIO_DESC_CS_AS_ISO_EP(/*_attr*/ AUDIO_CS_AS_ISO_DATA_EP_ATT_NON_MAX_PACKETS_OK, /*_ctrl*/ AUDIO_CTRL_NONE, /*_lockdelayunit*/ AUDIO_CS_AS_ISO_DATA_EP_LOCK_DELAY_UNIT_UNDEFINED, /*_lockdelay*/ 0x0000)
 | 
			
		||||
 | 
			
		||||
@@ -517,7 +531,7 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb
 | 
			
		||||
  /* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */\
 | 
			
		||||
  TUD_AUDIO_DESC_TYPE_I_FORMAT(_nBytesPerSample, _nBitsUsedPerSample),\
 | 
			
		||||
  /* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */\
 | 
			
		||||
  TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (uint8_t) (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ 0x01),\
 | 
			
		||||
  TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (uint8_t) ((uint8_t)TUSB_XFER_ISOCHRONOUS | (uint8_t)TUSB_ISO_EP_ATT_ASYNCHRONOUS | (uint8_t)TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ 0x01),\
 | 
			
		||||
  /* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */\
 | 
			
		||||
  TUD_AUDIO_DESC_CS_AS_ISO_EP(/*_attr*/ AUDIO_CS_AS_ISO_DATA_EP_ATT_NON_MAX_PACKETS_OK, /*_ctrl*/ AUDIO_CTRL_NONE, /*_lockdelayunit*/ AUDIO_CS_AS_ISO_DATA_EP_LOCK_DELAY_UNIT_UNDEFINED, /*_lockdelay*/ 0x0000)
 | 
			
		||||
 | 
			
		||||
@@ -565,7 +579,7 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb
 | 
			
		||||
  /* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */\
 | 
			
		||||
  TUD_AUDIO_DESC_TYPE_I_FORMAT(_nBytesPerSample, _nBitsUsedPerSample),\
 | 
			
		||||
  /* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */\
 | 
			
		||||
  TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epout, /*_attr*/ (uint8_t) (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ 0x01),\
 | 
			
		||||
  TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epout, /*_attr*/ (uint8_t) ((uint8_t)TUSB_XFER_ISOCHRONOUS | (uint8_t)TUSB_ISO_EP_ATT_ASYNCHRONOUS | (uint8_t)TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ 0x01),\
 | 
			
		||||
  /* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */\
 | 
			
		||||
  TUD_AUDIO_DESC_CS_AS_ISO_EP(/*_attr*/ AUDIO_CS_AS_ISO_DATA_EP_ATT_NON_MAX_PACKETS_OK, /*_ctrl*/ AUDIO_CTRL_NONE, /*_lockdelayunit*/ AUDIO_CS_AS_ISO_DATA_EP_LOCK_DELAY_UNIT_UNDEFINED, /*_lockdelay*/ 0x0000),\
 | 
			
		||||
  /* Standard AS Isochronous Feedback Endpoint Descriptor(4.10.2.1) */\
 | 
			
		||||
 
 | 
			
		||||
@@ -23,8 +23,8 @@
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of the TinyUSB stack.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef _TUSB_USBD_PVT_H_
 | 
			
		||||
#define _TUSB_USBD_PVT_H_
 | 
			
		||||
#ifndef TUSB_USBD_PVT_H_
 | 
			
		||||
#define TUSB_USBD_PVT_H_
 | 
			
		||||
 | 
			
		||||
#include "osal/osal.h"
 | 
			
		||||
#include "common/tusb_fifo.h"
 | 
			
		||||
@@ -35,16 +35,23 @@
 | 
			
		||||
 | 
			
		||||
#define TU_LOG_USBD(...)   TU_LOG(CFG_TUD_LOG_LEVEL, __VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
// MACRO CONSTANT TYPEDEF PROTYPES
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
  SOF_CONSUMER_USER = 0,
 | 
			
		||||
  SOF_CONSUMER_AUDIO,
 | 
			
		||||
} sof_consumer_t;
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
// Class Driver API
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
  #if CFG_TUSB_DEBUG >= CFG_TUD_LOG_LEVEL
 | 
			
		||||
  char const* name;
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
  void     (* init             ) (void);
 | 
			
		||||
  bool     (* deinit           ) (void);
 | 
			
		||||
  void     (* reset            ) (uint8_t rhport);
 | 
			
		||||
  uint16_t (* open             ) (uint8_t rhport, tusb_desc_interface_t const * desc_intf, uint16_t max_len);
 | 
			
		||||
  bool     (* control_xfer_cb  ) (uint8_t rhport, uint8_t stage, tusb_control_request_t const * request);
 | 
			
		||||
@@ -110,7 +117,7 @@ bool usbd_edpt_ready(uint8_t rhport, uint8_t ep_addr) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Enable SOF interrupt
 | 
			
		||||
void usbd_sof_enable(uint8_t rhport, bool en);
 | 
			
		||||
void usbd_sof_enable(uint8_t rhport, sof_consumer_t consumer, bool en);
 | 
			
		||||
 | 
			
		||||
/*------------------------------------------------------------------*/
 | 
			
		||||
/* Helper
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user