mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 13:22:31 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			127 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|              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)
 | |
| 
 | |
|   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
 | |
|  *  \brief Constants for HID report item attributes.
 | |
|  *
 | |
|  *  HID report item constants for report item attributes. Refer to the HID specification for
 | |
|  *  details on each flag's meaning when applied to an IN, OUT or FEATURE item.
 | |
|  */
 | |
| 
 | |
| /** \ingroup Group_HIDParser
 | |
|  *  \defgroup Group_HIDReportItemConst HID Report Descriptor Item Constants
 | |
|  *
 | |
|  *  General HID constant definitions for HID Report Descriptor elements.
 | |
|  *
 | |
|  *  @{
 | |
|  */
 | |
| 
 | |
| #ifndef __HIDREPORTDATA_H__
 | |
| #define __HIDREPORTDATA_H__
 | |
| 
 | |
| 	/* Private Interface - For use in library only: */
 | |
| 	#if !defined(__DOXYGEN__)
 | |
| 		/* Macros: */
 | |
| 			#define HID_RI_DATA_SIZE_MASK                   0x03
 | |
| 			#define HID_RI_TYPE_MASK                        0x0C
 | |
| 			#define HID_RI_TAG_MASK                         0xF0
 | |
| 
 | |
| 			#define HID_RI_TYPE_MAIN                        0x00
 | |
| 			#define HID_RI_TYPE_GLOBAL                      0x04
 | |
| 			#define HID_RI_TYPE_LOCAL                       0x08
 | |
| 
 | |
| 			#define HID_RI_DATA_BITS_0                      0x00
 | |
| 			#define HID_RI_DATA_BITS_8                      0x01
 | |
| 			#define HID_RI_DATA_BITS_16                     0x02
 | |
| 			#define HID_RI_DATA_BITS_32                     0x03
 | |
| 			#define HID_RI_DATA_BITS(DataBits)              HID_RI_DATA_BITS_ ## DataBits
 | |
| 
 | |
| 			#define _HID_RI_ENCODE_0(Data)
 | |
| 			#define _HID_RI_ENCODE_8(Data)                  , (Data & 0xFF)
 | |
| 			#define _HID_RI_ENCODE_16(Data)                 _HID_RI_ENCODE_8(Data)  _HID_RI_ENCODE_8(Data >> 8)
 | |
| 			#define _HID_RI_ENCODE_32(Data)                 _HID_RI_ENCODE_16(Data) _HID_RI_ENCODE_16(Data >> 16)
 | |
| 			#define _HID_RI_ENCODE(DataBits, ...)           _HID_RI_ENCODE_ ## DataBits(__VA_ARGS__)
 | |
| 
 | |
| 			#define _HID_RI_ENTRY(Type, Tag, DataBits, ...) (Type | Tag | HID_RI_DATA_BITS(DataBits)) _HID_RI_ENCODE(DataBits, (__VA_ARGS__))
 | |
| 	#endif
 | |
| 
 | |
| 	/* Public Interface - May be used in end-application: */
 | |
| 		/* Macros: */
 | |
| 		/** \name HID Input, Output and Feature Report Descriptor Item Flags */
 | |
| 		//@{
 | |
| 			#define HID_IOF_CONSTANT                        (1 << 0)
 | |
| 			#define HID_IOF_DATA                            (0 << 0)
 | |
| 			#define HID_IOF_VARIABLE                        (1 << 1)
 | |
| 			#define HID_IOF_ARRAY                           (0 << 1)
 | |
| 			#define HID_IOF_RELATIVE                        (1 << 2)
 | |
| 			#define HID_IOF_ABSOLUTE                        (0 << 2)
 | |
| 			#define HID_IOF_WRAP                            (1 << 3)
 | |
| 			#define HID_IOF_NO_WRAP                         (0 << 3)
 | |
| 			#define HID_IOF_NON_LINEAR                      (1 << 4)
 | |
| 			#define HID_IOF_LINEAR                          (0 << 4)
 | |
| 			#define HID_IOF_NO_PREFERRED_STATE              (1 << 5)
 | |
| 			#define HID_IOF_PREFERRED_STATE                 (0 << 5)
 | |
| 			#define HID_IOF_NULLSTATE                       (1 << 6)
 | |
| 			#define HID_IOF_NO_NULL_POSITION                (0 << 6)
 | |
| 			#define HID_IOF_VOLATILE                        (1 << 7)
 | |
| 			#define HID_IOF_NON_VOLATILE                    (0 << 7)
 | |
| 			#define HID_IOF_BUFFERED_BYTES                  (1 << 8)
 | |
| 			#define HID_IOF_BITFIELD                        (0 << 8)
 | |
| 		//@}
 | |
| 
 | |
| 		/** \name HID Report Descriptor Item Macros */
 | |
| 		//@{
 | |
| 			#define HID_RI_INPUT(DataBits, ...)             _HID_RI_ENTRY(HID_RI_TYPE_MAIN  , 0x80, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_OUTPUT(DataBits, ...)            _HID_RI_ENTRY(HID_RI_TYPE_MAIN  , 0x90, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_COLLECTION(DataBits, ...)        _HID_RI_ENTRY(HID_RI_TYPE_MAIN  , 0xA0, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_FEATURE(DataBits, ...)           _HID_RI_ENTRY(HID_RI_TYPE_MAIN  , 0xB0, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_END_COLLECTION(DataBits, ...)    _HID_RI_ENTRY(HID_RI_TYPE_MAIN  , 0xC0, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_USAGE_PAGE(DataBits, ...)        _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x00, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_LOGICAL_MINIMUM(DataBits, ...)   _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x10, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_LOGICAL_MAXIMUM(DataBits, ...)   _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x20, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_PHYSICAL_MINIMUM(DataBits, ...)  _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x30, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_PHYSICAL_MAXIMUM(DataBits, ...)  _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x40, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_UNIT_EXPONENT(DataBits, ...)     _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x50, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_UNIT(DataBits, ...)              _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x60, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_REPORT_SIZE(DataBits, ...)       _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x70, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_REPORT_ID(DataBits, ...)         _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x80, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_REPORT_COUNT(DataBits, ...)      _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x90, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_PUSH(DataBits, ...)              _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0xA0, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_POP(DataBits, ...)               _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0xB0, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_USAGE(DataBits, ...)             _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x00, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_USAGE_MINIMUM(DataBits, ...)     _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x10, DataBits, __VA_ARGS__)
 | |
| 			#define HID_RI_USAGE_MAXIMUM(DataBits, ...)     _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x20, DataBits, __VA_ARGS__)
 | |
| 		//@}
 | |
| 
 | |
| /** @} */
 | |
| 
 | |
| #endif
 | |
| 
 | 
