1 /*! *********************************************************************************
2  * Copyright (c) 2015, Freescale Semiconductor, Inc.
3  * Copyright 2016-2023 NXP
4  *
5  * \file
6  *
7  * SPDX-License-Identifier: BSD-3-Clause
8  ********************************************************************************** */
9 
10 #ifndef EMBEDDEDTYPES_H
11 #define EMBEDDEDTYPES_H
12 
13 /************************************************************************************
14  *
15  *       INCLUDES
16  *
17  ************************************************************************************/
18 
19 #include <stdint.h>
20 
21 #if defined(__IAR_SYSTEMS_ICC__)
22 #include "iccarm_builtin.h"
23 #endif /* (__IAR_SYSTEMS_ICC__) */
24 
25 /************************************************************************************
26  *
27  *       TYPE DEFINITIONS
28  *
29  ************************************************************************************/
30 #if defined(__IAR_SYSTEMS_ICC__)
31 /* __get_LR() declaration included from "iccarm_builtin.h" to avoid compatibility issues with different versions of IAR
32  * compiler */
33 #elif defined(__GNUC__)
34 #define __get_LR() __builtin_return_address(0)
35 #elif defined(__CC_ARM)
36 #define __get_LR() __return_address()
37 #endif
38 
39 /* boolean types */
40 #ifndef HAVE_BOOL_T_DEFINED
41 typedef uint8_t bool_t; /* boolean data type */
42 /* Prevent from any further definition by setting and checking HAVE_BOOL_T_DEFINED
43     Make sure bool_t is defined to uint8_t on other places      */
44 #define HAVE_BOOL_T_DEFINED
45 #endif
46 typedef uint8_t index_t;
47 
48 /* TRUE/FALSE definition*/
49 #ifndef TRUE
50 #define TRUE (0 == 0)
51 #endif
52 
53 #ifndef FALSE
54 #define FALSE (0 != 0)
55 #endif
56 
57 /* null pointer definition*/
58 #ifndef NULL
59 #define NULL ((void *)(0x0UL))
60 #endif
61 
62 #if defined(__GNUC__)
63 #define PACKED_STRUCT struct __attribute__((__packed__))
64 #define PACKED_UNION  union __attribute__((__packed__))
65 #elif defined(__IAR_SYSTEMS_ICC__)
66 #define PACKED_STRUCT __packed struct
67 #define PACKED_UNION  __packed union
68 #elif defined(__CC_ARM)
69 #define PACKED_STRUCT struct __attribute__((packed))
70 #define PACKED_UNION  union __attribute__((packed))
71 #else
72 #warning No definition for PACKED_STRUCT and PACKED_UNION!
73 #endif
74 
75 #ifndef WEAK
76 #if defined(__GNUC__) || defined(__IAR_SYSTEMS_ICC__)
77 #define WEAK __attribute__((__weak__))
78 #elif defined(__CC_ARM)
79 #define WEAK __weak
80 #endif
81 #endif
82 
83 typedef unsigned char uintn8_t;
84 typedef unsigned long uintn32_t;
85 
86 typedef unsigned char uchar_t;
87 
88 #if !defined(MIN)
89 #define MIN(a, b) (((a) <= (b)) ? (a) : (b))
90 #endif
91 
92 #if !defined(MAX)
93 #define MAX(a, b) (((a) >= (b)) ? (a) : (b))
94 #endif
95 
96 /* Compute the number of elements of an array */
97 #define NumberOfElements(x) (sizeof(x) / sizeof((x)[0]))
98 
99 /* Compute the size of a string initialized with quotation marks */
100 #define SizeOfString(string) (sizeof(string) - 1)
101 
102 #define GetRelAddr(strct, member)      ((uint32_t) & (((strct *)(void *)0)->member))
103 #define GetSizeOfMember(strct, member) sizeof(((strct *)(void *)0)->member)
104 
105 /* Type definitions for link configuration of instantiable layers  */
106 #define gInvalidInstanceId_c (instanceId_t)(-1)
107 typedef uint32_t instanceId_t;
108 
109 /* Bit shift definitions */
110 #define BIT0  0x01U
111 #define BIT1  0x02U
112 #define BIT2  0x04U
113 #define BIT3  0x08U
114 #define BIT4  0x10U
115 #define BIT5  0x20U
116 #define BIT6  0x40U
117 #define BIT7  0x80U
118 #define BIT8  0x100U
119 #define BIT9  0x200U
120 #define BIT10 0x400U
121 #define BIT11 0x800U
122 #define BIT12 0x1000U
123 #define BIT13 0x2000U
124 #define BIT14 0x4000U
125 #define BIT15 0x8000U
126 #define BIT16 0x10000U
127 #define BIT17 0x20000U
128 #define BIT18 0x40000U
129 #define BIT19 0x80000U
130 #define BIT20 0x100000U
131 #define BIT21 0x200000U
132 #define BIT22 0x400000U
133 #define BIT23 0x800000U
134 #define BIT24 0x1000000U
135 #define BIT25 0x2000000U
136 #define BIT26 0x4000000U
137 #define BIT27 0x8000000U
138 #define BIT28 0x10000000U
139 #define BIT29 0x20000000U
140 #define BIT30 0x40000000U
141 #define BIT31 0x80000000U
142 
143 /* Shift definitions */
144 #define SHIFT0  (0U)
145 #define SHIFT1  (1U)
146 #define SHIFT2  (2U)
147 #define SHIFT3  (3U)
148 #define SHIFT4  (4U)
149 #define SHIFT5  (5U)
150 #define SHIFT6  (6U)
151 #define SHIFT7  (7U)
152 #define SHIFT8  (8U)
153 #define SHIFT9  (9U)
154 #define SHIFT10 (10U)
155 #define SHIFT11 (11U)
156 #define SHIFT12 (12U)
157 #define SHIFT13 (13U)
158 #define SHIFT14 (14U)
159 #define SHIFT15 (15U)
160 #define SHIFT16 (16U)
161 #define SHIFT17 (17U)
162 #define SHIFT18 (18U)
163 #define SHIFT19 (19U)
164 #define SHIFT20 (20U)
165 #define SHIFT21 (21U)
166 #define SHIFT22 (22U)
167 #define SHIFT23 (23U)
168 #define SHIFT24 (24U)
169 #define SHIFT25 (25U)
170 #define SHIFT26 (26U)
171 #define SHIFT27 (27U)
172 #define SHIFT28 (28U)
173 #define SHIFT29 (29U)
174 #define SHIFT30 (30U)
175 #define SHIFT31 (31U)
176 
177 #define SHIFT32 (32U)
178 #define SHIFT33 (33U)
179 #define SHIFT34 (34U)
180 #define SHIFT35 (35U)
181 #define SHIFT36 (36U)
182 #define SHIFT37 (37U)
183 #define SHIFT38 (38U)
184 #define SHIFT39 (39U)
185 #define SHIFT40 (40U)
186 #define SHIFT41 (41U)
187 #define SHIFT42 (42U)
188 #define SHIFT43 (43U)
189 #define SHIFT44 (44U)
190 #define SHIFT45 (45U)
191 #define SHIFT46 (46U)
192 #define SHIFT47 (47U)
193 #define SHIFT48 (48U)
194 #define SHIFT49 (49U)
195 #define SHIFT50 (50U)
196 #define SHIFT51 (51U)
197 #define SHIFT52 (52U)
198 #define SHIFT53 (53U)
199 #define SHIFT54 (54U)
200 #define SHIFT55 (55U)
201 #define SHIFT56 (56U)
202 #define SHIFT57 (57U)
203 #define SHIFT58 (58U)
204 #define SHIFT59 (59U)
205 #define SHIFT60 (60U)
206 #define SHIFT61 (61U)
207 #define SHIFT62 (62U)
208 #define SHIFT63 (63U)
209 
210 #define NOT_USED(__x) (void)(__x)
211 
212 #endif /* EMBEDDEDTYPES_H */