2014-02-03 00:19:58 +00:00
/* Teensyduino Core Library
* http : //www.pjrc.com/teensy/
* Copyright ( c ) 2013 PJRC . COM , LLC .
2014-07-19 16:21:35 +00:00
* Modifications by Jacob Alexander 2014
2014-02-03 00:19:58 +00:00
*
* Permission is hereby granted , free of charge , to any person obtaining
* a copy of this software and associated documentation files ( the
* " Software " ) , to deal in the Software without restriction , including
* without limitation the rights to use , copy , modify , merge , publish ,
* distribute , sublicense , and / or sell copies of the Software , and to
* permit persons to whom the Software is furnished to do so , subject to
* the following conditions :
*
2014-09-28 23:44:57 +00:00
* 1. The above copyright notice and this permission notice shall be
2014-02-03 00:19:58 +00:00
* included in all copies or substantial portions of the Software .
*
2014-09-28 23:44:57 +00:00
* 2. If the Software is incorporated into a build system that allows
2014-02-03 00:19:58 +00:00
* selection among a list of target devices , then similar target
* devices manufactured by PJRC . COM must be included in the list of
* target devices and selectable in the same manner .
*
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND ,
* EXPRESS OR IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY , FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT . IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER LIABILITY , WHETHER IN AN
* ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM , OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE .
*/
2013-01-27 06:47:52 +00:00
# ifndef _usb_dev_h_
# define _usb_dev_h_
2014-09-28 23:44:57 +00:00
// ----- Includes -----
2013-01-27 06:47:52 +00:00
2014-09-28 23:44:57 +00:00
// Local Includes
2013-01-27 06:47:52 +00:00
# include "usb_mem.h"
# include "usb_desc.h"
2014-09-28 23:44:57 +00:00
// ----- Defines -----
2014-07-19 16:21:35 +00:00
# define usb_device_software_reset() SOFTWARE_RESET()
2014-09-28 23:44:57 +00:00
// ----- Variables -----
extern volatile uint8_t usb_configuration ;
extern uint16_t usb_rx_byte_count_data [ NUM_ENDPOINTS ] ;
extern volatile uint8_t usb_cdc_line_coding [ 7 ] ;
extern volatile uint8_t usb_cdc_line_rtsdtr ;
extern volatile uint8_t usb_cdc_transmit_flush_timer ;
// ----- Functions -----
2014-07-15 07:28:12 +00:00
uint8_t usb_configured ( ) ; // is the USB port configured
2014-07-19 16:21:35 +00:00
void usb_init ( ) ;
2014-07-15 07:28:12 +00:00
void usb_isr ( ) ;
2014-07-19 16:21:35 +00:00
void usb_tx ( uint32_t endpoint , usb_packet_t * packet ) ;
void usb_tx_isr ( uint32_t endpoint , usb_packet_t * packet ) ;
uint32_t usb_tx_byte_count ( uint32_t endpoint ) ;
uint32_t usb_tx_packet_count ( uint32_t endpoint ) ;
usb_packet_t * usb_rx ( uint32_t endpoint ) ;
2013-01-27 06:47:52 +00:00
2014-02-03 00:19:58 +00:00
static inline uint32_t usb_rx_byte_count ( uint32_t endpoint ) __attribute__ ( ( always_inline ) ) ;
static inline uint32_t usb_rx_byte_count ( uint32_t endpoint )
{
endpoint - - ;
2014-09-28 23:44:57 +00:00
if ( endpoint > = NUM_ENDPOINTS )
return 0 ;
return usb_rx_byte_count_data [ endpoint ] ;
2014-02-03 00:19:58 +00:00
}
2014-09-28 23:44:57 +00:00
void usb_device_reload ( ) ;
2013-01-27 06:47:52 +00:00
2014-09-28 23:44:57 +00:00
extern void usb_serial_flush_callback ( ) ;
2013-01-27 06:47:52 +00:00
2014-02-03 00:19:58 +00:00
2013-01-27 06:47:52 +00:00
# endif