@@ -29,6 +29,7 @@ | |||
#include "usb_midi.h" | |||
#include "usb_rawhid.h" | |||
#include "usb_flightsim.h" | |||
#include "usb_undef.h" // do not allow usb_desc.h stuff to leak to user programs | |||
//#include "WCharacter.h" | |||
#include "WString.h" |
@@ -30,6 +30,7 @@ | |||
#if F_CPU >= 20000000 | |||
#define USB_DESC_LIST_DEFINE | |||
#include "usb_desc.h" | |||
#ifdef NUM_ENDPOINTS | |||
#include "usb_names.h" |
@@ -90,11 +90,6 @@ If you are using existing interfaces (making your own device with | |||
a different set of interfaces) the code in all other files should | |||
automatically adapt to the new endpoints you specify here. | |||
However, the .h files for each interface, which define the API | |||
visible to user programs, may need to be edited. At the top of | |||
each .h file is #if defined(USB_XYZ). These may need to be edited | |||
to make the interface API appear to your program. | |||
If you need to create a new type of interface, you'll need to write | |||
the code which sends and receives packets, and presents an API to | |||
the user. Usually, a pair of files are added for the actual code, | |||
@@ -313,7 +308,8 @@ let me know? http://forum.pjrc.com/forums/4-Suggestions-amp-Bug-Reports | |||
#endif | |||
#ifdef NUM_ENDPOINTS | |||
#ifdef USB_DESC_LIST_DEFINE | |||
#if defined(NUM_ENDPOINTS) && NUM_ENDPOINTS > 0 | |||
// NUM_ENDPOINTS = number of non-zero endpoints (0 to 15) | |||
extern const uint8_t usb_endpoint_config_table[NUM_ENDPOINTS]; | |||
@@ -326,6 +322,7 @@ typedef struct { | |||
extern const usb_descriptor_list_t usb_descriptor_list[]; | |||
#endif // NUM_ENDPOINTS | |||
#endif // USB_DESC_LIST_DEFINE | |||
#endif // F_CPU >= 20 MHz | |||
@@ -31,8 +31,10 @@ | |||
#ifndef _usb_dev_h_ | |||
#define _usb_dev_h_ | |||
#define USB_DESC_LIST_DEFINE | |||
#include "usb_desc.h" | |||
#if F_CPU >= 20000000 && defined(NUM_ENDPOINTS) | |||
#if F_CPU >= 20000000 | |||
// This header is NOT meant to be included when compiling | |||
// user sketches in Arduino. The low-level functions | |||
@@ -102,7 +104,7 @@ extern void usb_flightsim_flush_callback(void); | |||
} | |||
#endif | |||
#else // F_CPU >= 20000000 && defined(NUM_ENDPOINTS) | |||
#else // F_CPU < 20000000 | |||
#ifdef __cplusplus | |||
extern "C" { | |||
@@ -115,6 +117,6 @@ void usb_init(void); | |||
#endif | |||
#endif // F_CPU >= 20000000 && defined(NUM_ENDPOINTS) | |||
#endif // F_CPU | |||
#endif |
@@ -31,11 +31,19 @@ | |||
#ifndef USBflightsim_h_ | |||
#define USBflightsim_h_ | |||
#if defined(USB_FLIGHTSIM) && defined(__cplusplus) | |||
#include "usb_desc.h" | |||
#if defined(FLIGHTSIM_INTERFACE) | |||
#ifdef __cplusplus | |||
#include <inttypes.h> | |||
#include "elapsedMillis.h" | |||
// workaround for elapsedMillis.h bringing in WProgram.h which brings usb_undef.h | |||
#undef USB_DESC_LIST_DEFINE | |||
#include "usb_desc.h" | |||
class FlightSimClass; | |||
class FlightSimCommand; | |||
class FlightSimInteger; | |||
@@ -180,6 +188,8 @@ public: | |||
extern FlightSimClass FlightSim; | |||
#endif // __cplusplus | |||
#endif // FLIGHTSIM_INTERFACE | |||
#endif | |||
#endif | |||
#endif // USBflightsim_h_ |
@@ -31,7 +31,9 @@ | |||
#ifndef USBjoystick_h_ | |||
#define USBjoystick_h_ | |||
#if defined(USB_HID) || defined(USB_SERIAL_HID) | |||
#include "usb_desc.h" | |||
#if defined(JOYSTICK_INTERFACE) | |||
#include <inttypes.h> | |||
@@ -129,6 +131,7 @@ extern usb_joystick_class Joystick; | |||
#endif // __cplusplus | |||
#endif // USB_HID || USB_SERIAL_HID | |||
#endif // JOYSTICK_INTERFACE | |||
#endif // USBjoystick_h_ | |||
@@ -31,9 +31,11 @@ | |||
#ifndef USBkeyboard_h_ | |||
#define USBkeyboard_h_ | |||
#include "usb_desc.h" | |||
#include "keylayouts.h" | |||
#if defined(USB_HID) || defined(USB_SERIAL_HID) | |||
#if defined(KEYBOARD_INTERFACE) | |||
#include <inttypes.h> | |||
@@ -94,5 +96,6 @@ extern usb_keyboard_class Keyboard; | |||
#endif // __cplusplus | |||
#endif // USB_HID || USB_SERIAL_HID | |||
#endif // KEYBOARD_INTERFACE | |||
#endif // USBkeyboard_h_ |
@@ -31,7 +31,9 @@ | |||
#ifndef USBmidi_h_ | |||
#define USBmidi_h_ | |||
#if defined(USB_MIDI) | |||
#include "usb_desc.h" | |||
#if defined(MIDI_INTERFACE) | |||
#include <inttypes.h> | |||
@@ -179,6 +181,7 @@ extern usb_midi_class usbMIDI; | |||
#endif // __cplusplus | |||
#endif // USB_MIDI | |||
#endif // MIDI_INTERFACE | |||
#endif // USBmidi_h_ | |||
@@ -31,7 +31,9 @@ | |||
#ifndef USBmouse_h_ | |||
#define USBmouse_h_ | |||
#if defined(USB_HID) || defined(USB_SERIAL_HID) | |||
#include "usb_desc.h" | |||
#if defined(MOUSE_INTERFACE) | |||
#include <inttypes.h> | |||
@@ -98,5 +100,6 @@ extern usb_mouse_class Mouse; | |||
#endif // __cplusplus | |||
#endif // USB_HID || USB_SERIAL_HID | |||
#endif // MOUSE_INTERFACE | |||
#endif // USBmouse_h_ |
@@ -31,7 +31,9 @@ | |||
#ifndef USBrawhid_h_ | |||
#define USBrawhid_h_ | |||
#if defined(USB_RAWHID) | |||
#include "usb_desc.h" | |||
#if defined(RAWHID_INTERFACE) | |||
#include <inttypes.h> | |||
@@ -61,5 +63,6 @@ extern usb_rawhid_class RawHID; | |||
#endif // __cplusplus | |||
#endif // USB_HID | |||
#endif // RAWHID_INTERFACE | |||
#endif // USBrawhid_h_ |
@@ -31,7 +31,9 @@ | |||
#ifndef USBseremu_h_ | |||
#define USBseremu_h_ | |||
#if defined(USB_HID) || defined(USB_MIDI) || defined(USB_RAWHID) || defined(USB_FLIGHTSIM) | |||
#include "usb_desc.h" | |||
#if defined(SEREMU_INTERFACE) | |||
#include <inttypes.h> | |||
@@ -127,9 +129,8 @@ extern usb_seremu_class Serial; | |||
extern void serialEvent(void); | |||
#endif // __cplusplus | |||
#endif // F_CPU | |||
#endif // F_CPU >= 20 MHz | |||
#endif // USB_HID | |||
#endif // SEREMU_INTERFACE | |||
#endif // USBseremu_h_ |
@@ -31,9 +31,13 @@ | |||
#ifndef USBserial_h_ | |||
#define USBserial_h_ | |||
#include "usb_desc.h" | |||
#if defined(CDC_DATA_INTERFACE) | |||
#include <inttypes.h> | |||
#if (F_CPU >= 20000000) && (defined(USB_SERIAL) || defined(USB_SERIAL_HID)) | |||
#if F_CPU >= 20000000 | |||
// C language implementation | |||
#ifdef __cplusplus | |||
@@ -104,7 +108,7 @@ extern void serialEvent(void); | |||
#endif // __cplusplus | |||
#elif (F_CPU < 20000000) && (defined(USB_SERIAL) || defined(USB_SERIAL_HID)) | |||
#else // F_CPU < 20000000 | |||
// Allow Arduino programs using Serial to compile, but Serial will do nothing. | |||
#ifdef __cplusplus | |||
@@ -140,6 +144,9 @@ extern usb_serial_class Serial; | |||
extern void serialEvent(void); | |||
#endif // __cplusplus | |||
#endif // F_CPU && USB_SERIAL || USB_SERIAL_HID | |||
#endif // F_CPU | |||
#endif // CDC_DATA_INTERFACE | |||
#endif // USBserial_h_ |
@@ -0,0 +1,233 @@ | |||
// This header is meant to undo the effect of having included | |||
// usb_desc.h. Everything usb_desc.h, usb_undef.h undefines. | |||
// This stuff is not supposed to be made visible to user level | |||
// programs, but it's nice if we can use it within the headers | |||
// included by user programs, to automatically define only the | |||
// appropriate APIs for the types of USB interfaces used. | |||
#ifdef _usb_desc_h_ | |||
#undef _usb_desc_h_ | |||
#endif | |||
#ifdef ENDPOINT_UNUSED | |||
#undef ENDPOINT_UNUSED | |||
#endif | |||
#ifdef ENDPOINT_TRANSIMIT_ONLY | |||
#undef ENDPOINT_TRANSIMIT_ONLY | |||
#endif | |||
#ifdef ENDPOINT_RECEIVE_ONLY | |||
#undef ENDPOINT_RECEIVE_ONLY | |||
#endif | |||
#ifdef ENDPOINT_TRANSMIT_AND_RECEIVE | |||
#undef ENDPOINT_TRANSMIT_AND_RECEIVE | |||
#endif | |||
#ifdef VENDOR_ID | |||
#undef VENDOR_ID | |||
#endif | |||
#ifdef PRODUCT_ID | |||
#undef PRODUCT_ID | |||
#endif | |||
#ifdef DEVICE_CLASS | |||
#undef DEVICE_CLASS | |||
#endif | |||
#ifdef MANUFACTURER_NAME | |||
#undef MANUFACTURER_NAME | |||
#endif | |||
#ifdef MANUFACTURER_NAME_LEN | |||
#undef MANUFACTURER_NAME_LEN | |||
#endif | |||
#ifdef PRODUCT_NAME | |||
#undef PRODUCT_NAME | |||
#endif | |||
#ifdef PRODUCT_NAME_LEN | |||
#undef PRODUCT_NAME_LEN | |||
#endif | |||
#ifdef EP0_SIZE | |||
#undef EP0_SIZE | |||
#endif | |||
#ifdef NUM_ENDPOINTS | |||
#undef NUM_ENDPOINTS | |||
#endif | |||
#ifdef NUM_USB_BUFFERS | |||
#undef NUM_USB_BUFFERS | |||
#endif | |||
#ifdef NUM_INTERFACE | |||
#undef NUM_INTERFACE | |||
#endif | |||
#ifdef CDC_STATUS_INTERFACE | |||
#undef CDC_STATUS_INTERFACE | |||
#endif | |||
#ifdef CDC_DATA_INTERFACE | |||
#undef CDC_DATA_INTERFACE | |||
#endif | |||
#ifdef CDC_ACM_ENDPOINT | |||
#undef CDC_ACM_ENDPOINT | |||
#endif | |||
#ifdef CDC_RX_ENDPOINT | |||
#undef CDC_RX_ENDPOINT | |||
#endif | |||
#ifdef CDC_TX_ENDPOINT | |||
#undef CDC_TX_ENDPOINT | |||
#endif | |||
#ifdef CDC_ACM_SIZE | |||
#undef CDC_ACM_SIZE | |||
#endif | |||
#ifdef CDC_RX_SIZE | |||
#undef CDC_RX_SIZE | |||
#endif | |||
#ifdef CDC_TX_SIZE | |||
#undef CDC_TX_SIZE | |||
#endif | |||
#ifdef SEREMU_INTERFACE | |||
#undef SEREMU_INTERFACE | |||
#endif | |||
#ifdef SEREMU_TX_ENDPOINT | |||
#undef SEREMU_TX_ENDPOINT | |||
#endif | |||
#ifdef SEREMU_TX_SIZE | |||
#undef SEREMU_TX_SIZE | |||
#endif | |||
#ifdef SEREMU_TX_INTERVAL | |||
#undef SEREMU_TX_INTERVAL | |||
#endif | |||
#ifdef SEREMU_RX_ENDPOINT | |||
#undef SEREMU_RX_ENDPOINT | |||
#endif | |||
#ifdef SEREMU_RX_SIZE | |||
#undef SEREMU_RX_SIZE | |||
#endif | |||
#ifdef SEREMU_RX_INTERVAL | |||
#undef SEREMU_RX_INTERVAL | |||
#endif | |||
#ifdef KEYBOARD_INTERFACE | |||
#undef KEYBOARD_INTERFACE | |||
#endif | |||
#ifdef KEYBOARD_ENDPOINT | |||
#undef KEYBOARD_ENDPOINT | |||
#endif | |||
#ifdef KEYBOARD_SIZE | |||
#undef KEYBOARD_SIZE | |||
#endif | |||
#ifdef KEYBOARD_INTERVAL | |||
#undef KEYBOARD_INTERVAL | |||
#endif | |||
#ifdef MOUSE_INTERFACE | |||
#undef MOUSE_INTERFACE | |||
#endif | |||
#ifdef MOUSE_ENDPOINT | |||
#undef MOUSE_ENDPOINT | |||
#endif | |||
#ifdef MOUSE_SIZE | |||
#undef MOUSE_SIZE | |||
#endif | |||
#ifdef MOUSE_INTERVAL | |||
#undef MOUSE_INTERVAL | |||
#endif | |||
#ifdef JOYSTICK_INTERFACE | |||
#undef JOYSTICK_INTERFACE | |||
#endif | |||
#ifdef JOYSTICK_ENDPOINT | |||
#undef JOYSTICK_ENDPOINT | |||
#endif | |||
#ifdef JOYSTICK_SIZE | |||
#undef JOYSTICK_SIZE | |||
#endif | |||
#ifdef JOYSTICK_INTERVAL | |||
#undef JOYSTICK_INTERVAL | |||
#endif | |||
#ifdef CDC_IAD_DESCRIPTOR | |||
#undef CDC_IAD_DESCRIPTOR | |||
#endif | |||
#ifdef MIDI_INTERFACE | |||
#undef MIDI_TX_ENDPOINT | |||
#endif | |||
#ifdef MIDI_TX_SIZE | |||
#undef MIDI_TX_SIZE | |||
#endif | |||
#ifdef MIDI_RX_ENDPOINT | |||
#undef MIDI_RX_ENDPOINT | |||
#endif | |||
#ifdef MIDI_RX_SIZE | |||
#undef MIDI_RX_SIZE | |||
#endif | |||
#ifdef RAWHID_INTERFACE | |||
#undef RAWHID_INTERFACE | |||
#endif | |||
#ifdef RAWHID_TX_ENDPOINT | |||
#undef RAWHID_TX_ENDPOINT | |||
#endif | |||
#ifdef RAWHID_TX_SIZE | |||
#undef RAWHID_TX_SIZE | |||
#endif | |||
#ifdef RAWHID_TX_INTERVAL | |||
#undef RAWHID_TX_INTERVAL | |||
#endif | |||
#ifdef RAWHID_RX_ENDPOINT | |||
#undef RAWHID_RX_ENDPOINT | |||
#endif | |||
#ifdef RAWHID_RX_SIZE | |||
#undef RAWHID_RX_SIZE | |||
#endif | |||
#ifdef RAWHID_RX_INTERVAL | |||
#undef RAWHID_RX_INTERVAL | |||
#endif | |||
#ifdef FLIGHTSIM_INTERFACE | |||
#undef FLIGHTSIM_TX_ENDPOINT | |||
#endif | |||
#ifdef FLIGHTSIM_TX_SIZE | |||
#undef FLIGHTSIM_TX_SIZE | |||
#endif | |||
#ifdef FLIGHTSIM_TX_INTERVAL | |||
#undef FLIGHTSIM_TX_INTERVAL | |||
#endif | |||
#ifdef FLIGHTSIM_RX_ENDPOINT | |||
#undef FLIGHTSIM_RX_ENDPOINT | |||
#endif | |||
#ifdef FLIGHTSIM_RX_SIZE | |||
#undef FLIGHTSIM_RX_SIZE | |||
#endif | |||
#ifdef ENDPOINT1_CONFIG | |||
#undef ENDPOINT1_CONFIG | |||
#endif | |||
#ifdef ENDPOINT2_CONFIG | |||
#undef ENDPOINT2_CONFIG | |||
#endif | |||
#ifdef ENDPOINT3_CONFIG | |||
#undef ENDPOINT3_CONFIG | |||
#endif | |||
#ifdef ENDPOINT4_CONFIG | |||
#undef ENDPOINT4_CONFIG | |||
#endif | |||
#ifdef ENDPOINT5_CONFIG | |||
#undef ENDPOINT5_CONFIG | |||
#endif | |||
#ifdef ENDPOINT6_CONFIG | |||
#undef ENDPOINT6_CONFIG | |||
#endif | |||
#ifdef ENDPOINT7_CONFIG | |||
#undef ENDPOINT7_CONFIG | |||
#endif | |||
#ifdef ENDPOINT8_CONFIG | |||
#undef ENDPOINT8_CONFIG | |||
#endif | |||
#ifdef ENDPOINT9_CONFIG | |||
#undef ENDPOINT9_CONFIG | |||
#endif | |||
#ifdef ENDPOINT10_CONFIG | |||
#undef ENDPOINT10_CONFIG | |||
#endif | |||
#ifdef ENDPOINT11_CONFIG | |||
#undef ENDPOINT11_CONFIG | |||
#endif | |||
#ifdef ENDPOINT12_CONFIG | |||
#undef ENDPOINT12_CONFIG | |||
#endif | |||
#ifdef ENDPOINT13_CONFIG | |||
#undef ENDPOINT13_CONFIG | |||
#endif | |||
#ifdef ENDPOINT14_CONFIG | |||
#undef ENDPOINT14_CONFIG | |||
#endif | |||
#ifdef ENDPOINT15_CONFIG | |||
#undef ENDPOINT15_CONFIG | |||
#endif | |||