xref: /btstack/3rd-party/bluedroid/decoder/include/oi_stddefs.h (revision df25739fc3ea5a0a90f0f5925e6461d653697d2e)
1*df25739fSMilanka Ringwald /******************************************************************************
2*df25739fSMilanka Ringwald  *
3*df25739fSMilanka Ringwald  *  Copyright (C) 2014 The Android Open Source Project
4*df25739fSMilanka Ringwald  *  Copyright 2002 - 2004 Open Interface North America, Inc. All rights reserved.
5*df25739fSMilanka Ringwald  *
6*df25739fSMilanka Ringwald  *  Licensed under the Apache License, Version 2.0 (the "License");
7*df25739fSMilanka Ringwald  *  you may not use this file except in compliance with the License.
8*df25739fSMilanka Ringwald  *  You may obtain a copy of the License at:
9*df25739fSMilanka Ringwald  *
10*df25739fSMilanka Ringwald  *  http://www.apache.org/licenses/LICENSE-2.0
11*df25739fSMilanka Ringwald  *
12*df25739fSMilanka Ringwald  *  Unless required by applicable law or agreed to in writing, software
13*df25739fSMilanka Ringwald  *  distributed under the License is distributed on an "AS IS" BASIS,
14*df25739fSMilanka Ringwald  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15*df25739fSMilanka Ringwald  *  See the License for the specific language governing permissions and
16*df25739fSMilanka Ringwald  *  limitations under the License.
17*df25739fSMilanka Ringwald  *
18*df25739fSMilanka Ringwald  ******************************************************************************/
19*df25739fSMilanka Ringwald #ifndef OI_STDDEFS_H
20*df25739fSMilanka Ringwald #define OI_STDDEFS_H
21*df25739fSMilanka Ringwald /**
22*df25739fSMilanka Ringwald  * @file
23*df25739fSMilanka Ringwald  * This file contains BM3 standard type definitions.
24*df25739fSMilanka Ringwald  *
25*df25739fSMilanka Ringwald  */
26*df25739fSMilanka Ringwald 
27*df25739fSMilanka Ringwald /**********************************************************************************
28*df25739fSMilanka Ringwald   $Revision: #1 $
29*df25739fSMilanka Ringwald ***********************************************************************************/
30*df25739fSMilanka Ringwald 
31*df25739fSMilanka Ringwald #include "oi_cpu_dep.h"
32*df25739fSMilanka Ringwald 
33*df25739fSMilanka Ringwald /** \addtogroup Misc Miscellaneous APIs */
34*df25739fSMilanka Ringwald /**@{*/
35*df25739fSMilanka Ringwald 
36*df25739fSMilanka Ringwald #ifdef __cplusplus
37*df25739fSMilanka Ringwald extern "C" {
38*df25739fSMilanka Ringwald #endif
39*df25739fSMilanka Ringwald 
40*df25739fSMilanka Ringwald #ifndef FALSE
41*df25739fSMilanka Ringwald #define FALSE 0         /**< This define statement sets FALSE as a preprocessor alias for 0. */
42*df25739fSMilanka Ringwald #endif
43*df25739fSMilanka Ringwald 
44*df25739fSMilanka Ringwald #ifndef TRUE
45*df25739fSMilanka Ringwald #define TRUE (!FALSE)  /**< This define statement sets TRUE as a preprocessor alias for !FALSE. */
46*df25739fSMilanka Ringwald #endif
47*df25739fSMilanka Ringwald 
48*df25739fSMilanka Ringwald #ifdef HEW_TOOLCHAIN
49*df25739fSMilanka Ringwald     #ifdef NULL
50*df25739fSMilanka Ringwald         #undef NULL         /**< Override HEW toolchain NULL definition */
51*df25739fSMilanka Ringwald     #endif
52*df25739fSMilanka Ringwald     #define NULL 0          /**< HEW toolchain does not allow us to compare (void*) type to function pointer */
53*df25739fSMilanka Ringwald #else
54*df25739fSMilanka Ringwald     #ifndef NULL
55*df25739fSMilanka Ringwald         #define NULL ((void*)0) /**< This define statement sets NULL as a preprocessor alias for (void*)0 */
56*df25739fSMilanka Ringwald     #endif
57*df25739fSMilanka Ringwald #endif
58*df25739fSMilanka Ringwald 
59*df25739fSMilanka Ringwald /**
60*df25739fSMilanka Ringwald  * @name  Maximum and minimum values for basic types
61*df25739fSMilanka Ringwald  * @{
62*df25739fSMilanka Ringwald  */
63*df25739fSMilanka Ringwald #define OI_INT8_MIN   ((OI_INT8)0x80)          /**< decimal value: -128 */
64*df25739fSMilanka Ringwald #define OI_INT8_MAX   ((OI_INT8)0x7F)          /**< decimal value: 127 */
65*df25739fSMilanka Ringwald #define OI_INT16_MIN  ((OI_INT16)0x8000)       /**< decimal value: -32768 */
66*df25739fSMilanka Ringwald #define OI_INT16_MAX  ((OI_INT16)0x7FFF)       /**< decimal value: 32767 */
67*df25739fSMilanka Ringwald #define OI_INT32_MIN  ((OI_INT32)0x80000000)   /**< decimal value: -2,147,483,648 */
68*df25739fSMilanka Ringwald #define OI_INT32_MAX  ((OI_INT32)0x7FFFFFFF)   /**< decimal value: 2,147,483,647 */
69*df25739fSMilanka Ringwald #define OI_UINT8_MIN  ((OI_UINT8)0)            /**< decimal value: 0 */
70*df25739fSMilanka Ringwald #define OI_UINT8_MAX  ((OI_UINT8)0xFF)         /**< decimal value: 255 */
71*df25739fSMilanka Ringwald #define OI_UINT16_MIN ((OI_UINT16)0)           /**< decimal value: 0 */
72*df25739fSMilanka Ringwald #define OI_UINT16_MAX ((OI_UINT16)0xFFFF)      /**< decimal value: 65535 */
73*df25739fSMilanka Ringwald #define OI_UINT32_MIN ((OI_UINT32)0)           /**< decimal value: 0 */
74*df25739fSMilanka Ringwald #define OI_UINT32_MAX ((OI_UINT32)0xFFFFFFFF)  /**< decimal value: 4,294,967,295 */
75*df25739fSMilanka Ringwald 
76*df25739fSMilanka Ringwald /**
77*df25739fSMilanka Ringwald  * @}
78*df25739fSMilanka Ringwald  */
79*df25739fSMilanka Ringwald 
80*df25739fSMilanka Ringwald /**
81*df25739fSMilanka Ringwald  * @name  Integer types required by the Service Discovery Protocol
82*df25739fSMilanka Ringwald  * @{
83*df25739fSMilanka Ringwald  */
84*df25739fSMilanka Ringwald 
85*df25739fSMilanka Ringwald /** unsigned 64-bit integer as a structure of two unsigned 32-bit integers */
86*df25739fSMilanka Ringwald typedef struct {
87*df25739fSMilanka Ringwald     OI_UINT32 I1; /**< most significant 32 bits */
88*df25739fSMilanka Ringwald     OI_UINT32 I2; /**< least significant 32 bits */
89*df25739fSMilanka Ringwald } OI_UINT64;
90*df25739fSMilanka Ringwald 
91*df25739fSMilanka Ringwald #define OI_UINT64_MIN { (OI_UINT32)0x00000000, (OI_UINT32)0x00000000 }
92*df25739fSMilanka Ringwald #define OI_UINT64_MAX { (OI_UINT32)0XFFFFFFFF, (OI_UINT32)0XFFFFFFFF }
93*df25739fSMilanka Ringwald 
94*df25739fSMilanka Ringwald /** signed 64-bit integer as a structure of one unsigned 32-bit integer and one signed 32-bit integer */
95*df25739fSMilanka Ringwald typedef struct {
96*df25739fSMilanka Ringwald     OI_INT32  I1; /**< most significant 32 bits  as a signed integer */
97*df25739fSMilanka Ringwald     OI_UINT32 I2; /**< least significant 32 bits as an unsigned integer */
98*df25739fSMilanka Ringwald } OI_INT64;
99*df25739fSMilanka Ringwald 
100*df25739fSMilanka Ringwald #define OI_INT64_MIN { (OI_INT32)0x80000000, (OI_UINT32)0x00000000 }
101*df25739fSMilanka Ringwald #define OI_INT64_MAX { (OI_INT32)0X7FFFFFFF, (OI_UINT32)0XFFFFFFFF }
102*df25739fSMilanka Ringwald 
103*df25739fSMilanka Ringwald /** unsigned 128-bit integer as a structure of four unsigned 32-bit integers */
104*df25739fSMilanka Ringwald typedef struct {
105*df25739fSMilanka Ringwald     OI_UINT32 I1; /**< most significant 32 bits */
106*df25739fSMilanka Ringwald     OI_UINT32 I2; /**< second-most significant 32 bits */
107*df25739fSMilanka Ringwald     OI_UINT32 I3; /**< third-most significant 32 bits */
108*df25739fSMilanka Ringwald     OI_UINT32 I4; /**< least significant 32 bits */
109*df25739fSMilanka Ringwald } OI_UINT128;
110*df25739fSMilanka Ringwald 
111*df25739fSMilanka Ringwald #define OI_UINT128_MIN { (OI_UINT32)0x00000000, (OI_UINT32)0x00000000,  (OI_UINT32)0x00000000, (OI_UINT32)0x00000000 }
112*df25739fSMilanka Ringwald #define OI_UINT128_MAX { (OI_UINT32)0XFFFFFFFF, (OI_UINT32)0XFFFFFFFF,  (OI_UINT32)0XFFFFFFFF, (OI_UINT32)0XFFFFFFFF }
113*df25739fSMilanka Ringwald 
114*df25739fSMilanka Ringwald /** signed 128-bit integer as a structure of three unsigned 32-bit integers and one signed 32-bit integer */
115*df25739fSMilanka Ringwald typedef struct {
116*df25739fSMilanka Ringwald     OI_INT32  I1;  /**< most significant 32 bits as a signed integer */
117*df25739fSMilanka Ringwald     OI_UINT32 I2;  /**< second-most significant 32 bits as an unsigned integer */
118*df25739fSMilanka Ringwald     OI_UINT32 I3;  /**< third-most significant 32 bits as an unsigned integer */
119*df25739fSMilanka Ringwald     OI_UINT32 I4;  /**< least significant 32 bits as an unsigned integer */
120*df25739fSMilanka Ringwald } OI_INT128;
121*df25739fSMilanka Ringwald 
122*df25739fSMilanka Ringwald #define OI_INT128_MIN { (OI_UINT32)0x80000000, (OI_UINT32)0x00000000,  (OI_UINT32)0x00000000, (OI_UINT32)0x00000000 }
123*df25739fSMilanka Ringwald #define OI_INT128_MAX { (OI_UINT32)0X7FFFFFFF, (OI_UINT32)0XFFFFFFFF,  (OI_UINT32)0XFFFFFFFF, (OI_UINT32)0XFFFFFFFF }
124*df25739fSMilanka Ringwald 
125*df25739fSMilanka Ringwald /**
126*df25739fSMilanka Ringwald  * @}
127*df25739fSMilanka Ringwald  */
128*df25739fSMilanka Ringwald 
129*df25739fSMilanka Ringwald 
130*df25739fSMilanka Ringwald /**
131*df25739fSMilanka Ringwald  * type for ASCII character data items
132*df25739fSMilanka Ringwald  */
133*df25739fSMilanka Ringwald typedef char OI_CHAR;
134*df25739fSMilanka Ringwald 
135*df25739fSMilanka Ringwald /**
136*df25739fSMilanka Ringwald  * type for double-byte character data items
137*df25739fSMilanka Ringwald  */
138*df25739fSMilanka Ringwald typedef OI_UINT16 OI_CHAR16;
139*df25739fSMilanka Ringwald 
140*df25739fSMilanka Ringwald /**
141*df25739fSMilanka Ringwald  * types for UTF encoded strings.
142*df25739fSMilanka Ringwald  */
143*df25739fSMilanka Ringwald typedef OI_UINT8  OI_UTF8;
144*df25739fSMilanka Ringwald typedef OI_UINT16 OI_UTF16;
145*df25739fSMilanka Ringwald typedef OI_UINT32 OI_UTF32;
146*df25739fSMilanka Ringwald 
147*df25739fSMilanka Ringwald 
148*df25739fSMilanka Ringwald /**
149*df25739fSMilanka Ringwald  * @name Single-bit operation macros
150*df25739fSMilanka Ringwald  * @{
151*df25739fSMilanka Ringwald  * In these macros, x is the data item for which a bit is to be tested or set and y specifies which bit
152*df25739fSMilanka Ringwald  * is to be tested or set.
153*df25739fSMilanka Ringwald  */
154*df25739fSMilanka Ringwald 
155*df25739fSMilanka Ringwald /** This macro's value is TRUE if the bit specified by y is set in data item x. */
156*df25739fSMilanka Ringwald #define OI_BIT_TEST(x,y)   ((x) & (y))
157*df25739fSMilanka Ringwald 
158*df25739fSMilanka Ringwald /** This macro's value is TRUE if the bit specified by y is not set in data item x. */
159*df25739fSMilanka Ringwald #define OI_BIT_CLEAR_TEST(x,y)  (((x) & (y)) == 0)
160*df25739fSMilanka Ringwald 
161*df25739fSMilanka Ringwald /** This macro sets the bit specified by y in data item x. */
162*df25739fSMilanka Ringwald #define OI_BIT_SET(x,y)    ((x) |= (y))
163*df25739fSMilanka Ringwald 
164*df25739fSMilanka Ringwald /** This macro clears the bit specified by y in data item x. */
165*df25739fSMilanka Ringwald #define OI_BIT_CLEAR(x,y)  ((x) &= ~(y))
166*df25739fSMilanka Ringwald 
167*df25739fSMilanka Ringwald /** @} */
168*df25739fSMilanka Ringwald 
169*df25739fSMilanka Ringwald /**
170*df25739fSMilanka Ringwald  * The OI_ARRAYSIZE macro is set to the number of elements in an array
171*df25739fSMilanka Ringwald  * (instead of the number of bytes, which is returned by sizeof()).
172*df25739fSMilanka Ringwald  */
173*df25739fSMilanka Ringwald 
174*df25739fSMilanka Ringwald #ifndef OI_ARRAYSIZE
175*df25739fSMilanka Ringwald #define OI_ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
176*df25739fSMilanka Ringwald #endif
177*df25739fSMilanka Ringwald 
178*df25739fSMilanka Ringwald /**
179*df25739fSMilanka Ringwald  * @name Preprocessor aliases for individual bit positions
180*df25739fSMilanka Ringwald  *      Bits are defined here only if they are not already defined.
181*df25739fSMilanka Ringwald  * @{
182*df25739fSMilanka Ringwald  */
183*df25739fSMilanka Ringwald 
184*df25739fSMilanka Ringwald #ifndef BIT0
185*df25739fSMilanka Ringwald 
186*df25739fSMilanka Ringwald #define BIT0   0x00000001  /**< preprocessor alias for 32-bit value with bit 0 set, used to specify this single bit */
187*df25739fSMilanka Ringwald #define BIT1   0x00000002  /**< preprocessor alias for 32-bit value with bit 1 set, used to specify this single bit */
188*df25739fSMilanka Ringwald #define BIT2   0x00000004  /**< preprocessor alias for 32-bit value with bit 2 set, used to specify this single bit */
189*df25739fSMilanka Ringwald #define BIT3   0x00000008  /**< preprocessor alias for 32-bit value with bit 3 set, used to specify this single bit */
190*df25739fSMilanka Ringwald #define BIT4   0x00000010  /**< preprocessor alias for 32-bit value with bit 4 set, used to specify this single bit */
191*df25739fSMilanka Ringwald #define BIT5   0x00000020  /**< preprocessor alias for 32-bit value with bit 5 set, used to specify this single bit */
192*df25739fSMilanka Ringwald #define BIT6   0x00000040  /**< preprocessor alias for 32-bit value with bit 6 set, used to specify this single bit */
193*df25739fSMilanka Ringwald #define BIT7   0x00000080  /**< preprocessor alias for 32-bit value with bit 7 set, used to specify this single bit */
194*df25739fSMilanka Ringwald #define BIT8   0x00000100  /**< preprocessor alias for 32-bit value with bit 8 set, used to specify this single bit */
195*df25739fSMilanka Ringwald #define BIT9   0x00000200  /**< preprocessor alias for 32-bit value with bit 9 set, used to specify this single bit */
196*df25739fSMilanka Ringwald #define BIT10  0x00000400  /**< preprocessor alias for 32-bit value with bit 10 set, used to specify this single bit */
197*df25739fSMilanka Ringwald #define BIT11  0x00000800  /**< preprocessor alias for 32-bit value with bit 11 set, used to specify this single bit */
198*df25739fSMilanka Ringwald #define BIT12  0x00001000  /**< preprocessor alias for 32-bit value with bit 12 set, used to specify this single bit */
199*df25739fSMilanka Ringwald #define BIT13  0x00002000  /**< preprocessor alias for 32-bit value with bit 13 set, used to specify this single bit */
200*df25739fSMilanka Ringwald #define BIT14  0x00004000  /**< preprocessor alias for 32-bit value with bit 14 set, used to specify this single bit */
201*df25739fSMilanka Ringwald #define BIT15  0x00008000  /**< preprocessor alias for 32-bit value with bit 15 set, used to specify this single bit */
202*df25739fSMilanka Ringwald #define BIT16  0x00010000  /**< preprocessor alias for 32-bit value with bit 16 set, used to specify this single bit */
203*df25739fSMilanka Ringwald #define BIT17  0x00020000  /**< preprocessor alias for 32-bit value with bit 17 set, used to specify this single bit */
204*df25739fSMilanka Ringwald #define BIT18  0x00040000  /**< preprocessor alias for 32-bit value with bit 18 set, used to specify this single bit */
205*df25739fSMilanka Ringwald #define BIT19  0x00080000  /**< preprocessor alias for 32-bit value with bit 19 set, used to specify this single bit */
206*df25739fSMilanka Ringwald #define BIT20  0x00100000  /**< preprocessor alias for 32-bit value with bit 20 set, used to specify this single bit */
207*df25739fSMilanka Ringwald #define BIT21  0x00200000  /**< preprocessor alias for 32-bit value with bit 21 set, used to specify this single bit */
208*df25739fSMilanka Ringwald #define BIT22  0x00400000  /**< preprocessor alias for 32-bit value with bit 22 set, used to specify this single bit */
209*df25739fSMilanka Ringwald #define BIT23  0x00800000  /**< preprocessor alias for 32-bit value with bit 23 set, used to specify this single bit */
210*df25739fSMilanka Ringwald #define BIT24  0x01000000  /**< preprocessor alias for 32-bit value with bit 24 set, used to specify this single bit */
211*df25739fSMilanka Ringwald #define BIT25  0x02000000  /**< preprocessor alias for 32-bit value with bit 25 set, used to specify this single bit */
212*df25739fSMilanka Ringwald #define BIT26  0x04000000  /**< preprocessor alias for 32-bit value with bit 26 set, used to specify this single bit */
213*df25739fSMilanka Ringwald #define BIT27  0x08000000  /**< preprocessor alias for 32-bit value with bit 27 set, used to specify this single bit */
214*df25739fSMilanka Ringwald #define BIT28  0x10000000  /**< preprocessor alias for 32-bit value with bit 28 set, used to specify this single bit */
215*df25739fSMilanka Ringwald #define BIT29  0x20000000  /**< preprocessor alias for 32-bit value with bit 29 set, used to specify this single bit */
216*df25739fSMilanka Ringwald #define BIT30  0x40000000  /**< preprocessor alias for 32-bit value with bit 30 set, used to specify this single bit */
217*df25739fSMilanka Ringwald #define BIT31  0x80000000  /**< preprocessor alias for 32-bit value with bit 31 set, used to specify this single bit */
218*df25739fSMilanka Ringwald 
219*df25739fSMilanka Ringwald #endif  /* BIT0 et al */
220*df25739fSMilanka Ringwald 
221*df25739fSMilanka Ringwald 
222*df25739fSMilanka Ringwald /** @} */
223*df25739fSMilanka Ringwald 
224*df25739fSMilanka Ringwald 
225*df25739fSMilanka Ringwald #ifdef __cplusplus
226*df25739fSMilanka Ringwald }
227*df25739fSMilanka Ringwald #endif
228*df25739fSMilanka Ringwald 
229*df25739fSMilanka Ringwald /**@}*/
230*df25739fSMilanka Ringwald 
231*df25739fSMilanka Ringwald /*****************************************************************************/
232*df25739fSMilanka Ringwald #endif /* OI_STDDEFS_H */
233