]> git.sur5r.net Git - freertos/blob
778a9e3399ddce194a73e48c3ddcbcf17e2d4d5a
[freertos] /
1 /*\r
2  * @brief Constants for HID report item attributes\r
3  *\r
4  * @note\r
5  * Copyright(C) NXP Semiconductors, 2012\r
6  * Copyright(C) Dean Camera, 2011, 2012\r
7  * All rights reserved.\r
8  *\r
9  * @par\r
10  * Software that is described herein is for illustrative purposes only\r
11  * which provides customers with programming information regarding the\r
12  * LPC products.  This software is supplied "AS IS" without any warranties of\r
13  * any kind, and NXP Semiconductors and its licensor disclaim any and\r
14  * all warranties, express or implied, including all implied warranties of\r
15  * merchantability, fitness for a particular purpose and non-infringement of\r
16  * intellectual property rights.  NXP Semiconductors assumes no responsibility\r
17  * or liability for the use of the software, conveys no license or rights under any\r
18  * patent, copyright, mask work right, or any other intellectual property rights in\r
19  * or to any products. NXP Semiconductors reserves the right to make changes\r
20  * in the software without notification. NXP Semiconductors also makes no\r
21  * representation or warranty that such application will be suitable for the\r
22  * specified use without further testing or modification.\r
23  *\r
24  * @par\r
25  * Permission to use, copy, modify, and distribute this software and its\r
26  * documentation is hereby granted, under NXP Semiconductors' and its\r
27  * licensor's relevant copyrights in the software, without fee, provided that it\r
28  * is used in conjunction with NXP Semiconductors microcontrollers.  This\r
29  * copyright, permission, and disclaimer notice must appear in all copies of\r
30  * this code.\r
31  */\r
32 \r
33 /** @ingroup Group_HIDParser\r
34  *  @defgroup Group_HIDReportItemConst HID Report Descriptor Item Constants\r
35  *\r
36  *  General HID constant definitions for HID Report Descriptor elements.\r
37  *\r
38  *  @{\r
39  */\r
40 \r
41 #ifndef __HIDREPORTDATA_H__\r
42 #define __HIDREPORTDATA_H__\r
43 \r
44         /* Private Interface - For use in library only: */\r
45         #if !defined(__DOXYGEN__)\r
46                 /* Macros: */\r
47                         #define HID_RI_DATA_SIZE_MASK                   0x03\r
48                         #define HID_RI_TYPE_MASK                        0x0C\r
49                         #define HID_RI_TAG_MASK                         0xF0\r
50 \r
51                         #define HID_RI_TYPE_MAIN                        0x00\r
52                         #define HID_RI_TYPE_GLOBAL                      0x04\r
53                         #define HID_RI_TYPE_LOCAL                       0x08\r
54 \r
55                         #define HID_RI_DATA_BITS_0                      0x00\r
56                         #define HID_RI_DATA_BITS_8                      0x01\r
57                         #define HID_RI_DATA_BITS_16                     0x02\r
58                         #define HID_RI_DATA_BITS_32                     0x03\r
59                         #define HID_RI_DATA_BITS(DataBits)              HID_RI_DATA_BITS_ ## DataBits\r
60 \r
61                         #define _HID_RI_ENCODE_0(Data)                  \r
62                         #define _HID_RI_ENCODE_8(Data)                  , (Data & 0xFF)\r
63                         #define _HID_RI_ENCODE_16(Data)                 _HID_RI_ENCODE_8(Data)  _HID_RI_ENCODE_8(Data >> 8)\r
64                         #define _HID_RI_ENCODE_32(Data)                 _HID_RI_ENCODE_16(Data) _HID_RI_ENCODE_16(Data >> 16)\r
65                         #define _HID_RI_ENCODE(DataBits, ...)           _HID_RI_ENCODE_ ## DataBits(__VA_ARGS__)\r
66                         \r
67                         #define _HID_RI_ENTRY(Type, Tag, DataBits, ...) \\r
68                                                                         (Type | Tag | HID_RI_DATA_BITS(DataBits)) _HID_RI_ENCODE(DataBits, (__VA_ARGS__))\r
69         #endif\r
70         \r
71         /* Public Interface - May be used in end-application: */\r
72                 /* Macros: */\r
73                 /** @name HID Input, Output and Feature Report Descriptor Item Flags */\r
74                 //@{\r
75                         #define HID_IOF_CONSTANT                        (1 << 0)\r
76                         #define HID_IOF_DATA                            (0 << 0)\r
77                         #define HID_IOF_VARIABLE                        (1 << 1)\r
78                         #define HID_IOF_ARRAY                           (0 << 1)\r
79                         #define HID_IOF_RELATIVE                        (1 << 2)\r
80                         #define HID_IOF_ABSOLUTE                        (0 << 2)\r
81                         #define HID_IOF_WRAP                            (1 << 3)\r
82                         #define HID_IOF_NO_WRAP                         (0 << 3)\r
83                         #define HID_IOF_NON_LINEAR                      (1 << 4)\r
84                         #define HID_IOF_LINEAR                          (0 << 4)\r
85                         #define HID_IOF_NO_PREFERRED_STATE              (1 << 5)\r
86                         #define HID_IOF_PREFERRED_STATE                 (0 << 5)\r
87                         #define HID_IOF_NULLSTATE                       (1 << 6)\r
88                         #define HID_IOF_NO_NULL_POSITION                (0 << 6)\r
89                         #define HID_IOF_VOLATILE                        (1 << 7)\r
90                         #define HID_IOF_NON_VOLATILE                    (0 << 7)\r
91                         #define HID_IOF_BUFFERED_BYTES                  (1 << 8)\r
92                         #define HID_IOF_BITFIELD                        (0 << 8)\r
93                 //@}\r
94                 \r
95                 /** @name HID Report Descriptor Item Macros */\r
96                 //@{\r
97                         #define HID_RI_INPUT(DataBits, ...)             _HID_RI_ENTRY(HID_RI_TYPE_MAIN  , 0x80, DataBits, __VA_ARGS__)\r
98                         #define HID_RI_OUTPUT(DataBits, ...)            _HID_RI_ENTRY(HID_RI_TYPE_MAIN  , 0x90, DataBits, __VA_ARGS__)\r
99                         #define HID_RI_COLLECTION(DataBits, ...)        _HID_RI_ENTRY(HID_RI_TYPE_MAIN  , 0xA0, DataBits, __VA_ARGS__)\r
100                         #define HID_RI_FEATURE(DataBits, ...)           _HID_RI_ENTRY(HID_RI_TYPE_MAIN  , 0xB0, DataBits, __VA_ARGS__)\r
101                         #define HID_RI_END_COLLECTION(DataBits, ...)    _HID_RI_ENTRY(HID_RI_TYPE_MAIN  , 0xC0, DataBits, __VA_ARGS__)\r
102                         #define HID_RI_USAGE_PAGE(DataBits, ...)        _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x00, DataBits, __VA_ARGS__)\r
103                         #define HID_RI_LOGICAL_MINIMUM(DataBits, ...)   _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x10, DataBits, __VA_ARGS__)\r
104                         #define HID_RI_LOGICAL_MAXIMUM(DataBits, ...)   _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x20, DataBits, __VA_ARGS__)\r
105                         #define HID_RI_PHYSICAL_MINIMUM(DataBits, ...)  _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x30, DataBits, __VA_ARGS__)\r
106                         #define HID_RI_PHYSICAL_MAXIMUM(DataBits, ...)  _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x40, DataBits, __VA_ARGS__)\r
107                         #define HID_RI_UNIT_EXPONENT(DataBits, ...)     _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x50, DataBits, __VA_ARGS__)\r
108                         #define HID_RI_UNIT(DataBits, ...)              _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x60, DataBits, __VA_ARGS__)\r
109                         #define HID_RI_REPORT_SIZE(DataBits, ...)       _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x70, DataBits, __VA_ARGS__)\r
110                         #define HID_RI_REPORT_ID(DataBits, ...)         _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x80, DataBits, __VA_ARGS__)\r
111                         #define HID_RI_REPORT_COUNT(DataBits, ...)      _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x90, DataBits, __VA_ARGS__)\r
112                         #define HID_RI_PUSH(DataBits, ...)              _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0xA0, DataBits, __VA_ARGS__)\r
113                         #define HID_RI_POP(DataBits, ...)               _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0xB0, DataBits, __VA_ARGS__)\r
114                         #define HID_RI_USAGE(DataBits, ...)             _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x00, DataBits, __VA_ARGS__)\r
115                         #define HID_RI_USAGE_MINIMUM(DataBits, ...)     _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x10, DataBits, __VA_ARGS__)\r
116                         #define HID_RI_USAGE_MAXIMUM(DataBits, ...)     _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x20, DataBits, __VA_ARGS__)\r
117                 //@}\r
118 \r
119 /** @} */\r
120 \r
121 #endif\r
122 \r