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