2012-06-29 07:48:36 +00:00
/*
* Copyright 2012 Jun Wako < wakojun @ gmail . com >
* This file is based on :
* LUFA - 120219 / Demos / Device / Lowlevel / KeyboardMouse
* LUFA - 120219 / Demos / Device / Lowlevel / GenericHID
*/
2012-06-28 03:59:17 +00:00
/*
LUFA Library
Copyright ( C ) Dean Camera , 2012.
dean [ at ] fourwalledcubicle [ dot ] com
www . lufa - lib . org
*/
/*
Copyright 2012 Dean Camera ( dean [ at ] fourwalledcubicle [ dot ] com )
Copyright 2010 Denver Gingerich ( denver [ at ] ossguy [ dot ] com )
Permission to use , copy , modify , distribute , and sell this
software and its documentation for any purpose is hereby granted
without fee , provided that the above copyright notice appear in
all copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation , and that the name of the author not be used in
advertising or publicity pertaining to distribution of the
software without specific , written prior permission .
The author disclaim all warranties with regard to this
software , including all implied warranties of merchantability
and fitness . In no event shall the author be liable for any
special , indirect or consequential damages or any damages
whatsoever resulting from loss of use , data or profits , whether
in an action of contract , negligence or other tortious action ,
arising out of or in connection with the use or performance of
this software .
*/
/** \file
*
* Header file for Descriptors . c .
*/
# ifndef _DESCRIPTORS_H_
# define _DESCRIPTORS_H_
# include <LUFA/Drivers/USB/USB.h>
# include <avr/pgmspace.h>
typedef struct
{
USB_Descriptor_Configuration_Header_t Config ;
// Keyboard HID Interface
2012-06-28 07:51:56 +00:00
USB_Descriptor_Interface_t Keyboard_Interface ;
USB_HID_Descriptor_HID_t Keyboard_HID ;
USB_Descriptor_Endpoint_t Keyboard_INEndpoint ;
2012-06-28 03:59:17 +00:00
2012-06-28 18:33:59 +00:00
# ifdef MOUSE_ENABLE
2012-07-13 17:47:29 +00:00
// Mouse HID Interface
2012-06-28 07:51:56 +00:00
USB_Descriptor_Interface_t Mouse_Interface ;
USB_HID_Descriptor_HID_t Mouse_HID ;
USB_Descriptor_Endpoint_t Mouse_INEndpoint ;
2012-06-28 18:33:59 +00:00
# endif
2012-06-28 07:51:56 +00:00
2012-07-13 17:47:29 +00:00
# ifdef EXTRAKEY_ENABLE
// Extrakey HID Interface
USB_Descriptor_Interface_t Extrakey_Interface ;
USB_HID_Descriptor_HID_t Extrakey_HID ;
USB_Descriptor_Endpoint_t Extrakey_INEndpoint ;
# endif
# ifdef CONSOLE_ENABLE
2012-06-28 07:51:56 +00:00
// Console HID Interface
USB_Descriptor_Interface_t Console_Interface ;
USB_HID_Descriptor_HID_t Console_HID ;
USB_Descriptor_Endpoint_t Console_INEndpoint ;
USB_Descriptor_Endpoint_t Console_OUTEndpoint ;
2012-06-28 18:33:59 +00:00
# endif
2012-06-28 03:59:17 +00:00
} USB_Descriptor_Configuration_t ;
2012-06-28 11:15:56 +00:00
/* index of interface */
2012-06-28 03:59:17 +00:00
# define KEYBOARD_INTERFACE 0
2012-06-28 18:33:59 +00:00
# ifdef MOUSE_ENABLE
# define MOUSE_INTERFACE (KEYBOARD_INTERFACE + 1)
# else
# define MOUSE_INTERFACE KEYBOARD_INTERFACE
# endif
# ifdef EXTRAKEY_ENABLE
2012-07-13 17:47:29 +00:00
# define EXTRAKEY_INTERFACE (MOUSE_INTERFACE + 1)
2012-06-28 18:33:59 +00:00
# else
2012-07-13 17:47:29 +00:00
# define EXTRAKEY_INTERFACE MOUSE_INTERFACE
2012-06-28 18:33:59 +00:00
# endif
2012-07-13 17:47:29 +00:00
# ifdef CONSOLE_ENABLE
# define CONSOLE_INTERFACE (EXTRAKEY_INTERFACE + 1)
# else
# define CONSOLE_INTERFACE EXTRAKEY_INTERFACE
# endif
2012-06-28 18:33:59 +00:00
/* nubmer of interfaces */
# define TOTAL_INTERFACES (CONSOLE_INTERFACE + 1)
2012-06-28 03:59:17 +00:00
2012-06-28 11:15:56 +00:00
// Endopoint number and size
2012-06-28 03:59:17 +00:00
# define KEYBOARD_IN_EPNUM 1
2012-07-13 17:47:29 +00:00
# ifdef MOUSE_ENABLE
# define MOUSE_IN_EPNUM (KEYBOARD_IN_EPNUM + 1)
# else
# define MOUSE_IN_EPNUM KEYBOARD_IN_EPNUM
# endif
# ifdef EXTRAKEY_ENABLE
# define EXTRAKEY_IN_EPNUM (MOUSE_IN_EPNUM + 1)
# else
# define EXTRAKEY_IN_EPNUM MOUSE_IN_EPNUM
# endif
# ifdef CONSOLE_ENABLE
# define CONSOLE_IN_EPNUM (EXTRAKEY_IN_EPNUM + 1)
# define CONSOLE_OUT_EPNUM (EXTRAKEY_IN_EPNUM + 2)
# endif
2012-06-28 11:15:56 +00:00
# define KEYBOARD_EPSIZE 8
# define MOUSE_EPSIZE 8
2012-07-13 17:47:29 +00:00
# define EXTRAKEY_EPSIZE 8
2012-07-08 14:57:25 +00:00
# define CONSOLE_EPSIZE 32
2012-06-28 03:59:17 +00:00
uint16_t CALLBACK_USB_GetDescriptor ( const uint16_t wValue ,
const uint8_t wIndex ,
const void * * const DescriptorAddress )
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG ( 3 ) ;
# endif