mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Mon Oct 02 15:33:19 2017 +0100
Revision:
174:b96e65c34a4d
Parent:
167:e84263d55307
Child:
188:bcfe06ba3d64
This updates the lib to the mbed lib v 152

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 167:e84263d55307 1 /******************************************************************************
AnnaBridge 167:e84263d55307 2 * Copyright (c) 2013-2016 Realtek Semiconductor Corp.
AnnaBridge 167:e84263d55307 3 *
AnnaBridge 167:e84263d55307 4 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 167:e84263d55307 5 * you may not use this file except in compliance with the License.
AnnaBridge 167:e84263d55307 6 * You may obtain a copy of the License at
AnnaBridge 167:e84263d55307 7 *
AnnaBridge 167:e84263d55307 8 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 167:e84263d55307 9 *
AnnaBridge 167:e84263d55307 10 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 167:e84263d55307 11 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 167:e84263d55307 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 167:e84263d55307 13 * See the License for the specific language governing permissions and
AnnaBridge 167:e84263d55307 14 * limitations under the License.
AnnaBridge 167:e84263d55307 15 ******************************************************************************/
AnnaBridge 167:e84263d55307 16
AnnaBridge 167:e84263d55307 17 #ifndef __BASIC_TYPES_H__
AnnaBridge 167:e84263d55307 18 #define __BASIC_TYPES_H__
AnnaBridge 167:e84263d55307 19
AnnaBridge 167:e84263d55307 20 //#define PLATFORM_FREERTOS
AnnaBridge 167:e84263d55307 21 #include <stdint.h>
AnnaBridge 167:e84263d55307 22
AnnaBridge 167:e84263d55307 23 #define PLATFORM_LITTLE_ENDIAN 0
AnnaBridge 167:e84263d55307 24 #define PLATFORM_BIG_ENDIAN 1
AnnaBridge 167:e84263d55307 25
AnnaBridge 167:e84263d55307 26 #define SYSTEM_ENDIAN PLATFORM_LITTLE_ENDIAN
AnnaBridge 167:e84263d55307 27
AnnaBridge 167:e84263d55307 28 #define SUCCESS 0
AnnaBridge 167:e84263d55307 29 #define FAIL (-1)
AnnaBridge 167:e84263d55307 30
AnnaBridge 167:e84263d55307 31 #undef _SUCCESS
AnnaBridge 167:e84263d55307 32 #define _SUCCESS 1
AnnaBridge 167:e84263d55307 33
AnnaBridge 167:e84263d55307 34 #undef _FAIL
AnnaBridge 167:e84263d55307 35 #define _FAIL 0
AnnaBridge 167:e84263d55307 36
AnnaBridge 167:e84263d55307 37 #ifndef FALSE
AnnaBridge 167:e84263d55307 38 #define FALSE 0
AnnaBridge 167:e84263d55307 39 #endif
AnnaBridge 167:e84263d55307 40
AnnaBridge 167:e84263d55307 41 #ifndef TRUE
AnnaBridge 167:e84263d55307 42 #define TRUE (!FALSE)
AnnaBridge 167:e84263d55307 43 #endif
AnnaBridge 167:e84263d55307 44
AnnaBridge 167:e84263d55307 45 #define _TRUE TRUE
AnnaBridge 167:e84263d55307 46 #define _FALSE FALSE
AnnaBridge 167:e84263d55307 47
AnnaBridge 167:e84263d55307 48 #ifndef NULL
AnnaBridge 167:e84263d55307 49 #define NULL 0
AnnaBridge 167:e84263d55307 50 #endif
AnnaBridge 167:e84263d55307 51
AnnaBridge 167:e84263d55307 52 #ifdef __GNUC__
AnnaBridge 167:e84263d55307 53 #define __weak __attribute__((weak))
AnnaBridge 167:e84263d55307 54 #define likely(x) __builtin_expect ((x), 1)
AnnaBridge 167:e84263d55307 55 #define unlikely(x) __builtin_expect ((x), 0)
AnnaBridge 167:e84263d55307 56 #endif
AnnaBridge 167:e84263d55307 57
AnnaBridge 167:e84263d55307 58 typedef unsigned int uint;
AnnaBridge 167:e84263d55307 59 typedef signed int sint;
AnnaBridge 167:e84263d55307 60
AnnaBridge 167:e84263d55307 61 #ifdef __ICCARM__
AnnaBridge 167:e84263d55307 62 typedef signed long long __int64_t;
AnnaBridge 167:e84263d55307 63 typedef unsigned long long __uint64_t;
AnnaBridge 167:e84263d55307 64 #endif
AnnaBridge 167:e84263d55307 65
AnnaBridge 167:e84263d55307 66 typedef int8_t s8;
AnnaBridge 167:e84263d55307 67 typedef uint8_t u8;
AnnaBridge 167:e84263d55307 68 typedef int16_t s16;
AnnaBridge 167:e84263d55307 69 typedef uint16_t u16;
AnnaBridge 167:e84263d55307 70 typedef int32_t s32;
AnnaBridge 167:e84263d55307 71 typedef uint32_t u32;
AnnaBridge 167:e84263d55307 72 typedef int64_t s64;
AnnaBridge 167:e84263d55307 73 typedef uint64_t u64;
AnnaBridge 167:e84263d55307 74
AnnaBridge 167:e84263d55307 75 #ifdef CONFIG_MBED_ENABLED
AnnaBridge 167:e84263d55307 76 #ifndef BOOL
AnnaBridge 167:e84263d55307 77 typedef unsigned int BOOL;
AnnaBridge 167:e84263d55307 78 #endif
AnnaBridge 167:e84263d55307 79 #ifndef __cplusplus
AnnaBridge 167:e84263d55307 80 #ifndef bool
AnnaBridge 167:e84263d55307 81 typedef unsigned char bool;
AnnaBridge 167:e84263d55307 82 #endif
AnnaBridge 167:e84263d55307 83 #endif
AnnaBridge 167:e84263d55307 84 #else
AnnaBridge 167:e84263d55307 85 #ifndef BOOL
AnnaBridge 167:e84263d55307 86 typedef unsigned char BOOL;
AnnaBridge 167:e84263d55307 87 #endif
AnnaBridge 167:e84263d55307 88 #ifndef __cplusplus
AnnaBridge 167:e84263d55307 89 #ifndef bool
AnnaBridge 167:e84263d55307 90 typedef unsigned char bool;
AnnaBridge 167:e84263d55307 91 #endif
AnnaBridge 167:e84263d55307 92 #endif
AnnaBridge 167:e84263d55307 93 #endif
AnnaBridge 167:e84263d55307 94
AnnaBridge 167:e84263d55307 95 #define UCHAR uint8_t
AnnaBridge 167:e84263d55307 96 #define USHORT uint16_t
AnnaBridge 167:e84263d55307 97 //#define UINT uint32_t
AnnaBridge 167:e84263d55307 98 #define ULONG uint32_t
AnnaBridge 167:e84263d55307 99
AnnaBridge 167:e84263d55307 100 typedef struct { volatile int counter; } atomic_t;
AnnaBridge 167:e84263d55307 101
AnnaBridge 167:e84263d55307 102 enum _RTK_STATUS_ {
AnnaBridge 167:e84263d55307 103 _EXIT_SUCCESS = 0,
AnnaBridge 167:e84263d55307 104 _EXIT_FAILURE = 1
AnnaBridge 167:e84263d55307 105 };
AnnaBridge 167:e84263d55307 106 typedef uint32_t RTK_STATUS;
AnnaBridge 167:e84263d55307 107 typedef uint32_t * PRTK_STATUS;
AnnaBridge 167:e84263d55307 108
AnnaBridge 167:e84263d55307 109 #define IN
AnnaBridge 167:e84263d55307 110 #define OUT
AnnaBridge 167:e84263d55307 111 #define VOID void
AnnaBridge 167:e84263d55307 112 #define INOUT
AnnaBridge 167:e84263d55307 113 #define NDIS_OID uint
AnnaBridge 167:e84263d55307 114 #define NDIS_STATUS uint
AnnaBridge 167:e84263d55307 115
AnnaBridge 167:e84263d55307 116 #ifndef PVOID
AnnaBridge 167:e84263d55307 117 typedef void * PVOID;
AnnaBridge 167:e84263d55307 118 #endif
AnnaBridge 167:e84263d55307 119
AnnaBridge 167:e84263d55307 120 typedef u32 dma_addr_t;
AnnaBridge 167:e84263d55307 121
AnnaBridge 167:e84263d55307 122 typedef void (*proc_t)(void*);
AnnaBridge 167:e84263d55307 123
AnnaBridge 167:e84263d55307 124 typedef unsigned int __kernel_size_t;
AnnaBridge 167:e84263d55307 125 typedef int __kernel_ssize_t;
AnnaBridge 167:e84263d55307 126
AnnaBridge 167:e84263d55307 127 typedef __kernel_size_t SIZE_T;
AnnaBridge 167:e84263d55307 128 typedef __kernel_ssize_t SSIZE_T;
AnnaBridge 167:e84263d55307 129 #define FIELD_OFFSET(s,field) ((SSIZE_T)&((s*)(0))->field)
AnnaBridge 167:e84263d55307 130
AnnaBridge 167:e84263d55307 131 #define MEM_ALIGNMENT_OFFSET (sizeof (SIZE_T))
AnnaBridge 167:e84263d55307 132 #define MEM_ALIGNMENT_PADDING (sizeof(SIZE_T) - 1)
AnnaBridge 167:e84263d55307 133
AnnaBridge 167:e84263d55307 134 #define SIZE_PTR SIZE_T
AnnaBridge 167:e84263d55307 135 #define SSIZE_PTR SSIZE_T
AnnaBridge 167:e84263d55307 136
AnnaBridge 167:e84263d55307 137 #ifndef ON
AnnaBridge 167:e84263d55307 138 #define ON 1
AnnaBridge 167:e84263d55307 139 #endif
AnnaBridge 167:e84263d55307 140
AnnaBridge 167:e84263d55307 141 #ifndef OFF
AnnaBridge 167:e84263d55307 142 #define OFF 0
AnnaBridge 167:e84263d55307 143 #endif
AnnaBridge 167:e84263d55307 144
AnnaBridge 167:e84263d55307 145 #ifndef ENABLE
AnnaBridge 167:e84263d55307 146 #define ENABLE 1
AnnaBridge 167:e84263d55307 147 #endif
AnnaBridge 167:e84263d55307 148
AnnaBridge 167:e84263d55307 149 #ifndef DISABLE
AnnaBridge 167:e84263d55307 150 #define DISABLE 0
AnnaBridge 167:e84263d55307 151 #endif
AnnaBridge 167:e84263d55307 152
AnnaBridge 167:e84263d55307 153
AnnaBridge 167:e84263d55307 154 #define BIT0 0x0001
AnnaBridge 167:e84263d55307 155 #define BIT1 0x0002
AnnaBridge 167:e84263d55307 156 #define BIT2 0x0004
AnnaBridge 167:e84263d55307 157 #define BIT3 0x0008
AnnaBridge 167:e84263d55307 158 #define BIT4 0x0010
AnnaBridge 167:e84263d55307 159 #define BIT5 0x0020
AnnaBridge 167:e84263d55307 160 #define BIT6 0x0040
AnnaBridge 167:e84263d55307 161 #define BIT7 0x0080
AnnaBridge 167:e84263d55307 162 #define BIT8 0x0100
AnnaBridge 167:e84263d55307 163 #define BIT9 0x0200
AnnaBridge 167:e84263d55307 164 #define BIT10 0x0400
AnnaBridge 167:e84263d55307 165 #define BIT11 0x0800
AnnaBridge 167:e84263d55307 166 #define BIT12 0x1000
AnnaBridge 167:e84263d55307 167 #define BIT13 0x2000
AnnaBridge 167:e84263d55307 168 #define BIT14 0x4000
AnnaBridge 167:e84263d55307 169 #define BIT15 0x8000
AnnaBridge 167:e84263d55307 170 #define BIT16 0x00010000
AnnaBridge 167:e84263d55307 171 #define BIT17 0x00020000
AnnaBridge 167:e84263d55307 172 #define BIT18 0x00040000
AnnaBridge 167:e84263d55307 173 #define BIT19 0x00080000
AnnaBridge 167:e84263d55307 174 #define BIT20 0x00100000
AnnaBridge 167:e84263d55307 175 #define BIT21 0x00200000
AnnaBridge 167:e84263d55307 176 #define BIT22 0x00400000
AnnaBridge 167:e84263d55307 177 #define BIT23 0x00800000
AnnaBridge 167:e84263d55307 178 #define BIT24 0x01000000
AnnaBridge 167:e84263d55307 179 #define BIT25 0x02000000
AnnaBridge 167:e84263d55307 180 #define BIT26 0x04000000
AnnaBridge 167:e84263d55307 181 #define BIT27 0x08000000
AnnaBridge 167:e84263d55307 182 #define BIT28 0x10000000
AnnaBridge 167:e84263d55307 183 #define BIT29 0x20000000
AnnaBridge 167:e84263d55307 184 #define BIT30 0x40000000
AnnaBridge 167:e84263d55307 185 #define BIT31 0x80000000
AnnaBridge 167:e84263d55307 186
AnnaBridge 167:e84263d55307 187 #define BIT_(__n) (1<<(__n))
AnnaBridge 167:e84263d55307 188
AnnaBridge 167:e84263d55307 189 #ifndef BIT
AnnaBridge 167:e84263d55307 190 #define BIT(__n) (1<<(__n))
AnnaBridge 167:e84263d55307 191 #endif
AnnaBridge 167:e84263d55307 192
AnnaBridge 167:e84263d55307 193 #if defined (__ICCARM__)
AnnaBridge 167:e84263d55307 194 #define STRINGIFY(a) #a
AnnaBridge 167:e84263d55307 195 #define SECTION(_name) _Pragma( STRINGIFY(location=_name))
AnnaBridge 167:e84263d55307 196 #define ALIGNMTO(_bound) _Pragma( STRINGIFY(data_alignment=_bound))
AnnaBridge 167:e84263d55307 197 #define _PACKED_ __packed
AnnaBridge 167:e84263d55307 198 #define _LONG_CALL_
AnnaBridge 167:e84263d55307 199 #define _LONG_CALL_ROM_
AnnaBridge 167:e84263d55307 200 #define _WEAK __weak
AnnaBridge 167:e84263d55307 201 #elif defined(__CC_ARM)
AnnaBridge 167:e84263d55307 202 // defined in rtl8195a_compiler.h
AnnaBridge 167:e84263d55307 203 #define SECTION(_name) __attribute__ ((section(_name)))
AnnaBridge 167:e84263d55307 204 #define _LONG_CALL_ __attribute__ ((long_call))
AnnaBridge 167:e84263d55307 205 #define ALIGNMTO(_bound) __attribute__ ((aligned (_bound)))
AnnaBridge 167:e84263d55307 206
AnnaBridge 167:e84263d55307 207 #define _LONG_CALL_ROM_ _LONG_CALL_
AnnaBridge 167:e84263d55307 208
AnnaBridge 174:b96e65c34a4d 209 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
AnnaBridge 174:b96e65c34a4d 210 #define SECTION(_name) __attribute__ ((__section__(_name)))
AnnaBridge 174:b96e65c34a4d 211 #define ALIGNMTO(_bound) __attribute__ ((aligned (_bound)))
AnnaBridge 174:b96e65c34a4d 212 #define _PACKED_ __attribute__ ((packed))
AnnaBridge 174:b96e65c34a4d 213 #ifdef CONFIG_RELEASE_BUILD_LIBRARIES
AnnaBridge 174:b96e65c34a4d 214 #define _LONG_CALL_
AnnaBridge 174:b96e65c34a4d 215 #define _LONG_CALL_ROM_
AnnaBridge 174:b96e65c34a4d 216 #ifdef E_CUT_ROM_DOMAIN
AnnaBridge 174:b96e65c34a4d 217 #undef _LONG_CALL_ROM_
AnnaBridge 174:b96e65c34a4d 218 #define _LONG_CALL_ROM_
AnnaBridge 174:b96e65c34a4d 219 #endif
AnnaBridge 174:b96e65c34a4d 220 #else
AnnaBridge 174:b96e65c34a4d 221 #define _LONG_CALL_
AnnaBridge 174:b96e65c34a4d 222 #define _LONG_CALL_ROM_ _LONG_CALL_
AnnaBridge 174:b96e65c34a4d 223 #endif
AnnaBridge 174:b96e65c34a4d 224 #define _WEAK __attribute__ ((weak))
AnnaBridge 174:b96e65c34a4d 225
AnnaBridge 167:e84263d55307 226 #else
AnnaBridge 167:e84263d55307 227 #define SECTION(_name) __attribute__ ((__section__(_name)))
AnnaBridge 167:e84263d55307 228 #define ALIGNMTO(_bound) __attribute__ ((aligned (_bound)))
AnnaBridge 167:e84263d55307 229 #define _PACKED_ __attribute__ ((packed))
AnnaBridge 167:e84263d55307 230 #ifdef CONFIG_RELEASE_BUILD_LIBRARIES
AnnaBridge 167:e84263d55307 231 #define _LONG_CALL_
AnnaBridge 167:e84263d55307 232 #define _LONG_CALL_ROM_ __attribute__ ((long_call))
AnnaBridge 167:e84263d55307 233 #ifdef E_CUT_ROM_DOMAIN
AnnaBridge 167:e84263d55307 234 #undef _LONG_CALL_ROM_
AnnaBridge 167:e84263d55307 235 #define _LONG_CALL_ROM_
AnnaBridge 167:e84263d55307 236 #endif
AnnaBridge 167:e84263d55307 237 #else
AnnaBridge 167:e84263d55307 238 #define _LONG_CALL_ __attribute__ ((long_call))
AnnaBridge 167:e84263d55307 239 #define _LONG_CALL_ROM_ _LONG_CALL_
AnnaBridge 167:e84263d55307 240 #endif
AnnaBridge 167:e84263d55307 241 #define _WEAK __attribute__ ((weak))
AnnaBridge 167:e84263d55307 242 #endif
AnnaBridge 167:e84263d55307 243
AnnaBridge 167:e84263d55307 244
AnnaBridge 167:e84263d55307 245
AnnaBridge 167:e84263d55307 246 //port from fw by thomas
AnnaBridge 167:e84263d55307 247 // TODO: Belows are Sync from SD7-Driver. It is necessary to check correctness
AnnaBridge 167:e84263d55307 248
AnnaBridge 167:e84263d55307 249 #define SWAP32(x) ((u32)( \
AnnaBridge 167:e84263d55307 250 (((u32)(x) & (u32)0x000000ff) << 24) | \
AnnaBridge 167:e84263d55307 251 (((u32)(x) & (u32)0x0000ff00) << 8) | \
AnnaBridge 167:e84263d55307 252 (((u32)(x) & (u32)0x00ff0000) >> 8) | \
AnnaBridge 167:e84263d55307 253 (((u32)(x) & (u32)0xff000000) >> 24)))
AnnaBridge 167:e84263d55307 254
AnnaBridge 167:e84263d55307 255 #define WAP16(x) ((u16)( \
AnnaBridge 167:e84263d55307 256 (((u16)(x) & (u16)0x00ff) << 8) | \
AnnaBridge 167:e84263d55307 257 (((u16)(x) & (u16)0xff00) >> 8)))
AnnaBridge 167:e84263d55307 258
AnnaBridge 167:e84263d55307 259 #if SYSTEM_ENDIAN == PLATFORM_LITTLE_ENDIAN
AnnaBridge 167:e84263d55307 260 #ifndef rtk_le16_to_cpu
AnnaBridge 167:e84263d55307 261 #define rtk_cpu_to_le32(x) ((u32)(x))
AnnaBridge 167:e84263d55307 262 #define rtk_le32_to_cpu(x) ((u32)(x))
AnnaBridge 167:e84263d55307 263 #define rtk_cpu_to_le16(x) ((u16)(x))
AnnaBridge 167:e84263d55307 264 #define rtk_le16_to_cpu(x) ((u16)(x))
AnnaBridge 167:e84263d55307 265 #define rtk_cpu_to_be32(x) SWAP32((x))
AnnaBridge 167:e84263d55307 266 #define rtk_be32_to_cpu(x) SWAP32((x))
AnnaBridge 167:e84263d55307 267 #define rtk_cpu_to_be16(x) WAP16((x))
AnnaBridge 167:e84263d55307 268 #define rtk_be16_to_cpu(x) WAP16((x))
AnnaBridge 167:e84263d55307 269 #endif
AnnaBridge 167:e84263d55307 270
AnnaBridge 167:e84263d55307 271 #elif SYSTEM_ENDIAN == PLATFORM_BIG_ENDIAN
AnnaBridge 167:e84263d55307 272 #ifndef rtk_le16_to_cpu
AnnaBridge 167:e84263d55307 273 #define rtk_cpu_to_le32(x) SWAP32((x))
AnnaBridge 167:e84263d55307 274 #define rtk_le32_to_cpu(x) SWAP32((x))
AnnaBridge 167:e84263d55307 275 #define rtk_cpu_to_le16(x) WAP16((x))
AnnaBridge 167:e84263d55307 276 #define rtk_le16_to_cpu(x) WAP16((x))
AnnaBridge 167:e84263d55307 277 #define rtk_cpu_to_be32(x) ((__u32)(x))
AnnaBridge 167:e84263d55307 278 #define rtk_be32_to_cpu(x) ((__u32)(x))
AnnaBridge 167:e84263d55307 279 #define rtk_cpu_to_be16(x) ((__u16)(x))
AnnaBridge 167:e84263d55307 280 #define rtk_be16_to_cpu(x) ((__u16)(x))
AnnaBridge 167:e84263d55307 281 #endif
AnnaBridge 167:e84263d55307 282 #endif
AnnaBridge 167:e84263d55307 283
AnnaBridge 167:e84263d55307 284
AnnaBridge 167:e84263d55307 285 /*
AnnaBridge 167:e84263d55307 286 * Call endian free function when
AnnaBridge 167:e84263d55307 287 * 1. Read/write packet content.
AnnaBridge 167:e84263d55307 288 * 2. Before write integer to IO.
AnnaBridge 167:e84263d55307 289 * 3. After read integer from IO.
AnnaBridge 167:e84263d55307 290 */
AnnaBridge 167:e84263d55307 291
AnnaBridge 167:e84263d55307 292 //
AnnaBridge 167:e84263d55307 293 // Byte Swapping routine.
AnnaBridge 167:e84263d55307 294 //
AnnaBridge 167:e84263d55307 295 #define EF1Byte (u8)
AnnaBridge 167:e84263d55307 296 #define EF2Byte le16_to_cpu
AnnaBridge 167:e84263d55307 297 #define EF4Byte le32_to_cpu
AnnaBridge 167:e84263d55307 298
AnnaBridge 167:e84263d55307 299 //
AnnaBridge 167:e84263d55307 300 // Read LE format data from memory
AnnaBridge 167:e84263d55307 301 //
AnnaBridge 167:e84263d55307 302 #define ReadEF1Byte(_ptr) EF1Byte(*((u8 *)(_ptr)))
AnnaBridge 167:e84263d55307 303 #define ReadEF2Byte(_ptr) EF2Byte(*((u16 *)(_ptr)))
AnnaBridge 167:e84263d55307 304 #define ReadEF4Byte(_ptr) EF4Byte(*((u32 *)(_ptr)))
AnnaBridge 167:e84263d55307 305
AnnaBridge 167:e84263d55307 306 //
AnnaBridge 167:e84263d55307 307 // Write LE data to memory
AnnaBridge 167:e84263d55307 308 //
AnnaBridge 167:e84263d55307 309 #define WriteEF1Byte(_ptr, _val) (*((u8 *)(_ptr)))=EF1Byte(_val)
AnnaBridge 167:e84263d55307 310 #define WriteEF2Byte(_ptr, _val) (*((u16 *)(_ptr)))=EF2Byte(_val)
AnnaBridge 167:e84263d55307 311 #define WriteEF4Byte(_ptr, _val) (*((u32 *)(_ptr)))=EF4Byte(_val)
AnnaBridge 167:e84263d55307 312
AnnaBridge 167:e84263d55307 313 //
AnnaBridge 167:e84263d55307 314 // Example:
AnnaBridge 167:e84263d55307 315 // BIT_LEN_MASK_32(0) => 0x00000000
AnnaBridge 167:e84263d55307 316 // BIT_LEN_MASK_32(1) => 0x00000001
AnnaBridge 167:e84263d55307 317 // BIT_LEN_MASK_32(2) => 0x00000003
AnnaBridge 167:e84263d55307 318 // BIT_LEN_MASK_32(32) => 0xFFFFFFFF
AnnaBridge 167:e84263d55307 319 //
AnnaBridge 167:e84263d55307 320 #define BIT_LEN_MASK_32(__BitLen) \
AnnaBridge 167:e84263d55307 321 (0xFFFFFFFF >> (32 - (__BitLen)))
AnnaBridge 167:e84263d55307 322 //
AnnaBridge 167:e84263d55307 323 // Example:
AnnaBridge 167:e84263d55307 324 // BIT_OFFSET_LEN_MASK_32(0, 2) => 0x00000003
AnnaBridge 167:e84263d55307 325 // BIT_OFFSET_LEN_MASK_32(16, 2) => 0x00030000
AnnaBridge 167:e84263d55307 326 //
AnnaBridge 167:e84263d55307 327 #define BIT_OFFSET_LEN_MASK_32(__BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 328 (BIT_LEN_MASK_32(__BitLen) << (__BitOffset))
AnnaBridge 167:e84263d55307 329
AnnaBridge 167:e84263d55307 330 //
AnnaBridge 167:e84263d55307 331 // Description:
AnnaBridge 167:e84263d55307 332 // Return 4-byte value in host byte ordering from
AnnaBridge 167:e84263d55307 333 // 4-byte pointer in litten-endian system.
AnnaBridge 167:e84263d55307 334 //
AnnaBridge 167:e84263d55307 335 #define LE_P4BYTE_TO_HOST_4BYTE(__pStart) \
AnnaBridge 167:e84263d55307 336 (EF4Byte(*((u32 *)(__pStart))))
AnnaBridge 167:e84263d55307 337
AnnaBridge 167:e84263d55307 338 //
AnnaBridge 167:e84263d55307 339 // Description:
AnnaBridge 167:e84263d55307 340 // Translate subfield (continuous bits in little-endian) of 4-byte value in litten byte to
AnnaBridge 167:e84263d55307 341 // 4-byte value in host byte ordering.
AnnaBridge 167:e84263d55307 342 //
AnnaBridge 167:e84263d55307 343 #define LE_BITS_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 344 ( \
AnnaBridge 167:e84263d55307 345 ( LE_P4BYTE_TO_HOST_4BYTE(__pStart) >> (__BitOffset) ) \
AnnaBridge 167:e84263d55307 346 & \
AnnaBridge 167:e84263d55307 347 BIT_LEN_MASK_32(__BitLen) \
AnnaBridge 167:e84263d55307 348 )
AnnaBridge 167:e84263d55307 349
AnnaBridge 167:e84263d55307 350 //
AnnaBridge 167:e84263d55307 351 // Description:
AnnaBridge 167:e84263d55307 352 // Mask subfield (continuous bits in little-endian) of 4-byte value in litten byte oredering
AnnaBridge 167:e84263d55307 353 // and return the result in 4-byte value in host byte ordering.
AnnaBridge 167:e84263d55307 354 //
AnnaBridge 167:e84263d55307 355 #define LE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 356 ( \
AnnaBridge 167:e84263d55307 357 LE_P4BYTE_TO_HOST_4BYTE(__pStart) \
AnnaBridge 167:e84263d55307 358 & \
AnnaBridge 167:e84263d55307 359 ( ~ BIT_OFFSET_LEN_MASK_32(__BitOffset, __BitLen) ) \
AnnaBridge 167:e84263d55307 360 )
AnnaBridge 167:e84263d55307 361
AnnaBridge 167:e84263d55307 362 //
AnnaBridge 167:e84263d55307 363 // Description:
AnnaBridge 167:e84263d55307 364 // Set subfield of little-endian 4-byte value to specified value.
AnnaBridge 167:e84263d55307 365 //
AnnaBridge 167:e84263d55307 366 #define SET_BITS_TO_LE_4BYTE(__pStart, __BitOffset, __BitLen, __Value) \
AnnaBridge 167:e84263d55307 367 *((u32 *)(__pStart)) = \
AnnaBridge 167:e84263d55307 368 EF4Byte( \
AnnaBridge 167:e84263d55307 369 LE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 370 | \
AnnaBridge 167:e84263d55307 371 ( (((u32)__Value) & BIT_LEN_MASK_32(__BitLen)) << (__BitOffset) ) \
AnnaBridge 167:e84263d55307 372 );
AnnaBridge 167:e84263d55307 373
AnnaBridge 167:e84263d55307 374
AnnaBridge 167:e84263d55307 375 #define BIT_LEN_MASK_16(__BitLen) \
AnnaBridge 167:e84263d55307 376 (0xFFFF >> (16 - (__BitLen)))
AnnaBridge 167:e84263d55307 377
AnnaBridge 167:e84263d55307 378 #define BIT_OFFSET_LEN_MASK_16(__BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 379 (BIT_LEN_MASK_16(__BitLen) << (__BitOffset))
AnnaBridge 167:e84263d55307 380
AnnaBridge 167:e84263d55307 381 #define LE_P2BYTE_TO_HOST_2BYTE(__pStart) \
AnnaBridge 167:e84263d55307 382 (EF2Byte(*((u16 *)(__pStart))))
AnnaBridge 167:e84263d55307 383
AnnaBridge 167:e84263d55307 384 #define LE_BITS_TO_2BYTE(__pStart, __BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 385 ( \
AnnaBridge 167:e84263d55307 386 ( LE_P2BYTE_TO_HOST_2BYTE(__pStart) >> (__BitOffset) ) \
AnnaBridge 167:e84263d55307 387 & \
AnnaBridge 167:e84263d55307 388 BIT_LEN_MASK_16(__BitLen) \
AnnaBridge 167:e84263d55307 389 )
AnnaBridge 167:e84263d55307 390
AnnaBridge 167:e84263d55307 391 #define LE_BITS_CLEARED_TO_2BYTE(__pStart, __BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 392 ( \
AnnaBridge 167:e84263d55307 393 LE_P2BYTE_TO_HOST_2BYTE(__pStart) \
AnnaBridge 167:e84263d55307 394 & \
AnnaBridge 167:e84263d55307 395 ( ~ BIT_OFFSET_LEN_MASK_16(__BitOffset, __BitLen) ) \
AnnaBridge 167:e84263d55307 396 )
AnnaBridge 167:e84263d55307 397
AnnaBridge 167:e84263d55307 398 #define SET_BITS_TO_LE_2BYTE(__pStart, __BitOffset, __BitLen, __Value) \
AnnaBridge 167:e84263d55307 399 *((u16 *)(__pStart)) = \
AnnaBridge 167:e84263d55307 400 EF2Byte( \
AnnaBridge 167:e84263d55307 401 LE_BITS_CLEARED_TO_2BYTE(__pStart, __BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 402 | \
AnnaBridge 167:e84263d55307 403 ( (((u16)__Value) & BIT_LEN_MASK_16(__BitLen)) << (__BitOffset) ) \
AnnaBridge 167:e84263d55307 404 );
AnnaBridge 167:e84263d55307 405
AnnaBridge 167:e84263d55307 406 #define BIT_LEN_MASK_8(__BitLen) \
AnnaBridge 167:e84263d55307 407 (0xFF >> (8 - (__BitLen)))
AnnaBridge 167:e84263d55307 408
AnnaBridge 167:e84263d55307 409 #define BIT_OFFSET_LEN_MASK_8(__BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 410 (BIT_LEN_MASK_8(__BitLen) << (__BitOffset))
AnnaBridge 167:e84263d55307 411
AnnaBridge 167:e84263d55307 412 #define LE_P1BYTE_TO_HOST_1BYTE(__pStart) \
AnnaBridge 167:e84263d55307 413 (EF1Byte(*((u8 *)(__pStart))))
AnnaBridge 167:e84263d55307 414
AnnaBridge 167:e84263d55307 415 #define LE_BITS_TO_1BYTE(__pStart, __BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 416 ( \
AnnaBridge 167:e84263d55307 417 ( LE_P1BYTE_TO_HOST_1BYTE(__pStart) >> (__BitOffset) ) \
AnnaBridge 167:e84263d55307 418 & \
AnnaBridge 167:e84263d55307 419 BIT_LEN_MASK_8(__BitLen) \
AnnaBridge 167:e84263d55307 420 )
AnnaBridge 167:e84263d55307 421
AnnaBridge 167:e84263d55307 422 #define LE_BITS_CLEARED_TO_1BYTE(__pStart, __BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 423 ( \
AnnaBridge 167:e84263d55307 424 LE_P1BYTE_TO_HOST_1BYTE(__pStart) \
AnnaBridge 167:e84263d55307 425 & \
AnnaBridge 167:e84263d55307 426 ( ~BIT_OFFSET_LEN_MASK_8(__BitOffset, __BitLen) ) \
AnnaBridge 167:e84263d55307 427 )
AnnaBridge 167:e84263d55307 428
AnnaBridge 167:e84263d55307 429 #define SET_BITS_TO_LE_1BYTE(__pStart, __BitOffset, __BitLen, __Value) \
AnnaBridge 167:e84263d55307 430 *((u8 *)(__pStart)) = \
AnnaBridge 167:e84263d55307 431 EF1Byte( \
AnnaBridge 167:e84263d55307 432 LE_BITS_CLEARED_TO_1BYTE(__pStart, __BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 433 | \
AnnaBridge 167:e84263d55307 434 ( (((u8)__Value) & BIT_LEN_MASK_8(__BitLen)) << (__BitOffset) ) \
AnnaBridge 167:e84263d55307 435 );
AnnaBridge 167:e84263d55307 436
AnnaBridge 167:e84263d55307 437 //pclint
AnnaBridge 167:e84263d55307 438 #define LE_BITS_CLEARED_TO_1BYTE_8BIT(__pStart, __BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 439 ( \
AnnaBridge 167:e84263d55307 440 LE_P1BYTE_TO_HOST_1BYTE(__pStart) \
AnnaBridge 167:e84263d55307 441 )
AnnaBridge 167:e84263d55307 442
AnnaBridge 167:e84263d55307 443 //pclint
AnnaBridge 167:e84263d55307 444 #define SET_BITS_TO_LE_1BYTE_8BIT(__pStart, __BitOffset, __BitLen, __Value) \
AnnaBridge 167:e84263d55307 445 { \
AnnaBridge 167:e84263d55307 446 *((pu1Byte)(__pStart)) = \
AnnaBridge 167:e84263d55307 447 EF1Byte( \
AnnaBridge 167:e84263d55307 448 LE_BITS_CLEARED_TO_1BYTE_8BIT(__pStart, __BitOffset, __BitLen) \
AnnaBridge 167:e84263d55307 449 | \
AnnaBridge 167:e84263d55307 450 ((u1Byte)__Value) \
AnnaBridge 167:e84263d55307 451 ); \
AnnaBridge 167:e84263d55307 452 }
AnnaBridge 167:e84263d55307 453
AnnaBridge 167:e84263d55307 454 // Get the N-bytes aligment offset from the current length
AnnaBridge 167:e84263d55307 455 #define N_BYTE_ALIGMENT(__Value, __Aligment) ((__Aligment == 1) ? (__Value) : (((__Value + __Aligment - 1) / __Aligment) * __Aligment))
AnnaBridge 167:e84263d55307 456
AnnaBridge 167:e84263d55307 457 typedef unsigned char BOOLEAN,*PBOOLEAN;
AnnaBridge 167:e84263d55307 458
AnnaBridge 167:e84263d55307 459 #define TEST_FLAG(__Flag,__testFlag) (((__Flag) & (__testFlag)) != 0)
AnnaBridge 167:e84263d55307 460 #define SET_FLAG(__Flag, __setFlag) ((__Flag) |= __setFlag)
AnnaBridge 167:e84263d55307 461 #define CLEAR_FLAG(__Flag, __clearFlag) ((__Flag) &= ~(__clearFlag))
AnnaBridge 167:e84263d55307 462 #define CLEAR_FLAGS(__Flag) ((__Flag) = 0)
AnnaBridge 167:e84263d55307 463 #define TEST_FLAGS(__Flag, __testFlags) (((__Flag) & (__testFlags)) == (__testFlags))
AnnaBridge 167:e84263d55307 464
AnnaBridge 167:e84263d55307 465 /* Define compilor specific symbol */
AnnaBridge 167:e84263d55307 466 //
AnnaBridge 167:e84263d55307 467 // inline function
AnnaBridge 167:e84263d55307 468 //
AnnaBridge 167:e84263d55307 469
AnnaBridge 167:e84263d55307 470 #if defined ( __ICCARM__ )
AnnaBridge 167:e84263d55307 471 #define __inline__ inline
AnnaBridge 167:e84263d55307 472 #define __inline inline
AnnaBridge 167:e84263d55307 473 #define __inline_definition //In dialect C99, inline means that a function's definition is provided
AnnaBridge 167:e84263d55307 474 //only for inlining, and that there is another definition
AnnaBridge 167:e84263d55307 475 //(without inline) somewhere else in the program.
AnnaBridge 167:e84263d55307 476 //That means that this program is incomplete, because if
AnnaBridge 167:e84263d55307 477 //add isn't inlined (for example, when compiling without optimization),
AnnaBridge 167:e84263d55307 478 //then main will have an unresolved reference to that other definition.
AnnaBridge 167:e84263d55307 479
AnnaBridge 167:e84263d55307 480 // Do not inline function is the function body is defined .c file and this
AnnaBridge 167:e84263d55307 481 // function will be called somewhere else, otherwise there is compile error
AnnaBridge 167:e84263d55307 482 #elif defined ( __CC_ARM )
AnnaBridge 167:e84263d55307 483 #define __inline__ __inline //__linine__ is not supported in keil compilor, use __inline instead
AnnaBridge 167:e84263d55307 484 #define inline __inline
AnnaBridge 167:e84263d55307 485 #define __inline_definition // for dialect C99
AnnaBridge 167:e84263d55307 486 #elif defined ( __GNUC__ )
AnnaBridge 167:e84263d55307 487 #define __inline__ inline
AnnaBridge 167:e84263d55307 488 #define __inline inline
AnnaBridge 167:e84263d55307 489 #define __inline_definition inline
AnnaBridge 167:e84263d55307 490 #endif
AnnaBridge 167:e84263d55307 491
AnnaBridge 167:e84263d55307 492 //
AnnaBridge 167:e84263d55307 493 // pack
AnnaBridge 167:e84263d55307 494 //
AnnaBridge 167:e84263d55307 495
AnnaBridge 167:e84263d55307 496 #if defined (__ICCARM__)
AnnaBridge 167:e84263d55307 497
AnnaBridge 167:e84263d55307 498 #define RTW_PACK_STRUCT_BEGIN _Pragma( STRINGIFY(pack(1)))
AnnaBridge 167:e84263d55307 499 #define RTW_PACK_STRUCT_STRUCT
AnnaBridge 167:e84263d55307 500 #define RTW_PACK_STRUCT_END _Pragma( STRINGIFY(pack()))
AnnaBridge 167:e84263d55307 501 //#define RTW_PACK_STRUCT_USE_INCLUDES
AnnaBridge 167:e84263d55307 502
AnnaBridge 167:e84263d55307 503 #elif defined (__CC_ARM)
AnnaBridge 167:e84263d55307 504
AnnaBridge 167:e84263d55307 505 #define RTW_PACK_STRUCT_BEGIN __packed
AnnaBridge 167:e84263d55307 506 #define RTW_PACK_STRUCT_STRUCT
AnnaBridge 167:e84263d55307 507 #define RTW_PACK_STRUCT_END
AnnaBridge 167:e84263d55307 508
AnnaBridge 167:e84263d55307 509 #elif defined (__GNUC__)
AnnaBridge 167:e84263d55307 510
AnnaBridge 167:e84263d55307 511 #define RTW_PACK_STRUCT_BEGIN
AnnaBridge 167:e84263d55307 512 #define RTW_PACK_STRUCT_STRUCT __attribute__ ((__packed__))
AnnaBridge 167:e84263d55307 513 #define RTW_PACK_STRUCT_END
AnnaBridge 167:e84263d55307 514
AnnaBridge 167:e84263d55307 515 #elif defined(PLATFORM_WINDOWS)
AnnaBridge 167:e84263d55307 516
AnnaBridge 167:e84263d55307 517 #define RTW_PACK_STRUCT_BEGIN
AnnaBridge 167:e84263d55307 518 #define RTW_PACK_STRUCT_STRUCT
AnnaBridge 167:e84263d55307 519 #define RTW_PACK_STRUCT_END
AnnaBridge 167:e84263d55307 520 #define RTW_PACK_STRUCT_USE_INCLUDES
AnnaBridge 167:e84263d55307 521 #endif
AnnaBridge 167:e84263d55307 522
AnnaBridge 167:e84263d55307 523 // for standard library
AnnaBridge 167:e84263d55307 524 #ifdef __ICCARM__
AnnaBridge 167:e84263d55307 525 #define __extension__ /* Ignore */
AnnaBridge 167:e84263d55307 526 #define __restrict /* Ignore */
AnnaBridge 167:e84263d55307 527 #endif
AnnaBridge 167:e84263d55307 528
AnnaBridge 167:e84263d55307 529 /* in rtl8195a_trap.h
AnnaBridge 167:e84263d55307 530 typedef struct _RAM_START_FUNCTION_ {
AnnaBridge 167:e84263d55307 531 VOID (*RamStartFun) (VOID);
AnnaBridge 167:e84263d55307 532 }RAM_START_FUNCTION, *PRAM_START_FUNCTION;
AnnaBridge 167:e84263d55307 533 */
AnnaBridge 167:e84263d55307 534
AnnaBridge 167:e84263d55307 535 typedef struct _RAM_FUNCTION_START_TABLE_ {
AnnaBridge 167:e84263d55307 536 VOID (*RamStartFun) (VOID);
AnnaBridge 167:e84263d55307 537 VOID (*RamWakeupFun) (VOID);
AnnaBridge 167:e84263d55307 538 VOID (*RamPatchFun0) (VOID);
AnnaBridge 167:e84263d55307 539 VOID (*RamPatchFun1) (VOID);
AnnaBridge 167:e84263d55307 540 VOID (*RamPatchFun2) (VOID);
AnnaBridge 167:e84263d55307 541 }RAM_FUNCTION_START_TABLE, *PRAM_FUNCTION_START_TABLE;
AnnaBridge 167:e84263d55307 542
AnnaBridge 167:e84263d55307 543 #endif// __BASIC_TYPES_H__