74 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			74 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/**************************************************************************/
							 | 
						||
| 
								 | 
							
								/*!
							 | 
						||
| 
								 | 
							
								    @file     usbd_pvt.h
							 | 
						||
| 
								 | 
							
								    @author   hathach
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @section LICENSE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Software License Agreement (BSD License)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Copyright (c) 2018, hathach (tinyusb.org)
							 | 
						||
| 
								 | 
							
								    All rights reserved.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Redistribution and use in source and binary forms, with or without
							 | 
						||
| 
								 | 
							
								    modification, are permitted provided that the following conditions are met:
							 | 
						||
| 
								 | 
							
								    1. Redistributions of source code must retain the above copyright
							 | 
						||
| 
								 | 
							
								    notice, this list of conditions and the following disclaimer.
							 | 
						||
| 
								 | 
							
								    2. Redistributions in binary form must reproduce the above copyright
							 | 
						||
| 
								 | 
							
								    notice, this list of conditions and the following disclaimer in the
							 | 
						||
| 
								 | 
							
								    documentation and/or other materials provided with the distribution.
							 | 
						||
| 
								 | 
							
								    3. Neither the name of the copyright holders nor the
							 | 
						||
| 
								 | 
							
								    names of its contributors may be used to endorse or promote products
							 | 
						||
| 
								 | 
							
								    derived from this software without specific prior written permission.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
							 | 
						||
| 
								 | 
							
								    EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
							 | 
						||
| 
								 | 
							
								    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
							 | 
						||
| 
								 | 
							
								    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
							 | 
						||
| 
								 | 
							
								    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
							 | 
						||
| 
								 | 
							
								    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
							 | 
						||
| 
								 | 
							
								    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
							 | 
						||
| 
								 | 
							
								    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
							 | 
						||
| 
								 | 
							
								    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
							 | 
						||
| 
								 | 
							
								    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								/**************************************************************************/
							 | 
						||
| 
								 | 
							
								#ifndef USBD_PVT_H_
							 | 
						||
| 
								 | 
							
								#define USBD_PVT_H_
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								 extern "C" {
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//--------------------------------------------------------------------+
							 | 
						||
| 
								 | 
							
								// INTERNAL API
							 | 
						||
| 
								 | 
							
								//--------------------------------------------------------------------+
							 | 
						||
| 
								 | 
							
								extern osal_semaphore_t usbd_control_xfer_sem_hdl;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								tusb_error_t usbd_init(void);
							 | 
						||
| 
								 | 
							
								void         usbd_task( void* param);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Carry out Data and Status stage of control transfer
							 | 
						||
| 
								 | 
							
								tusb_error_t usbd_control_xfer_stask(uint8_t port, tusb_dir_t dir, uint8_t * buffer, uint16_t length);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Return Status of control transfer
							 | 
						||
| 
								 | 
							
								// Note dir is value of direction bit in setup packet (aka DATA stage direction)
							 | 
						||
| 
								 | 
							
								static inline bool usbd_control_status(uint8_t port, tusb_dir_t dir)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  // status direction is reversed to one in the setup packet
							 | 
						||
| 
								 | 
							
								  return tusb_dcd_control_xfer(port, 1-dir, NULL, 0);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								static inline void usbd_control_stall(uint8_t port)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  tusb_dcd_edpt_stall(port, 0);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								 }
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* USBD_PVT_H_ */
							 |