X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Output%2FpjrcUSB%2Farm%2Fusb_dev.h;h=827f843b6f75e9837fd0cb0a6d67b0be0f153440;hb=46765e85c57e19b89754f4f9c26c8f18b35148e5;hp=34a7629841770d1c2c64fef9e7f67c32513f9cfc;hpb=6ac1482862c75ef45145fb87588237ce3633a3b9;p=kiibohd-controller.git diff --git a/Output/pjrcUSB/arm/usb_dev.h b/Output/pjrcUSB/arm/usb_dev.h index 34a7629..827f843 100644 --- a/Output/pjrcUSB/arm/usb_dev.h +++ b/Output/pjrcUSB/arm/usb_dev.h @@ -1,35 +1,87 @@ -#ifndef _usb_dev_h_ -#define _usb_dev_h_ +/* Teensyduino Core Library + * http://www.pjrc.com/teensy/ + * Copyright (c) 2013 PJRC.COM, LLC. + * Modifications by Jacob Alexander 2014-2015 + * + * 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: + * + * 1. The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * 2. If the Software is incorporated into a build system that allows + * 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. + */ -// This header is NOT meant to be included when compiling -// user sketches in Arduino. The low-level functions -// provided by usb_dev.c are meant to be called only by -// code which provides higher-level interfaces to the user. +#pragma once +// ----- Includes ----- + +// Local Includes #include "usb_mem.h" #include "usb_desc.h" -void usb_init(void); -uint8_t usb_configured(void); // is the USB port configured -void usb_isr(void); -usb_packet_t *usb_rx(uint32_t endpoint); -uint32_t usb_rx_byte_count(uint32_t endpoint); -uint32_t usb_tx_byte_count(uint32_t endpoint); -uint32_t usb_tx_packet_count(uint32_t endpoint); -void usb_tx(uint32_t endpoint, usb_packet_t *packet); -void usb_tx_isr(uint32_t endpoint, usb_packet_t *packet); -void usb_device_reload(); + +// ----- Defines ----- + +#define usb_device_software_reset() SOFTWARE_RESET() + + + +// ----- Variables ----- extern volatile uint8_t usb_configuration; -#ifdef CDC_DATA_INTERFACE -extern uint8_t usb_cdc_line_coding[7]; +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; -extern void usb_serial_flush_callback(void); -#endif -#endif + +// ----- Functions ----- + +uint8_t usb_configured(); // is the USB port configured +uint8_t usb_init(); // Returns 1 on success, 0 if no cable is attached + +void usb_isr(); +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 ); + +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--; + if ( endpoint >= NUM_ENDPOINTS ) + return 0; + return usb_rx_byte_count_data[ endpoint ]; +} + +void usb_device_reload(); +void usb_device_check(); + +extern void usb_serial_flush_callback();