xref: /btstack/port/stm32-wb55xx-nucleo-freertos/Middlewares/STM32_WPAN/ble/ble_common.h (revision 0561b2d8d5dba972c7daa57d5e677f7a1327edfd)
1*0561b2d8STREFOU Felix /**
2*0561b2d8STREFOU Felix   ******************************************************************************
3*0561b2d8STREFOU Felix   * @file    ble_common.h
4*0561b2d8STREFOU Felix   * @author  MCD Application Team
5*0561b2d8STREFOU Felix   * @brief   Common file to BLE Middleware
6*0561b2d8STREFOU Felix   ******************************************************************************
7*0561b2d8STREFOU Felix   * @attention
8*0561b2d8STREFOU Felix  *
9*0561b2d8STREFOU Felix  * <h2><center>&copy; Copyright (c) 2018 STMicroelectronics.
10*0561b2d8STREFOU Felix  * All rights reserved.</center></h2>
11*0561b2d8STREFOU Felix  *
12*0561b2d8STREFOU Felix  * This software component is licensed by ST under Ultimate Liberty license
13*0561b2d8STREFOU Felix  * SLA0044, the "License"; You may not use this file except in compliance with
14*0561b2d8STREFOU Felix  * the License. You may obtain a copy of the License at:
15*0561b2d8STREFOU Felix  *                             www.st.com/SLA0044
16*0561b2d8STREFOU Felix  *
17*0561b2d8STREFOU Felix  ******************************************************************************
18*0561b2d8STREFOU Felix  */
19*0561b2d8STREFOU Felix 
20*0561b2d8STREFOU Felix 
21*0561b2d8STREFOU Felix /* Define to prevent recursive inclusion -------------------------------------*/
22*0561b2d8STREFOU Felix #ifndef __BLE_COMMON_H
23*0561b2d8STREFOU Felix #define __BLE_COMMON_H
24*0561b2d8STREFOU Felix 
25*0561b2d8STREFOU Felix #ifdef __cplusplus
26*0561b2d8STREFOU Felix extern "C" {
27*0561b2d8STREFOU Felix #endif
28*0561b2d8STREFOU Felix 
29*0561b2d8STREFOU Felix #include <stdint.h>
30*0561b2d8STREFOU Felix #include <string.h>
31*0561b2d8STREFOU Felix #include <stdio.h>
32*0561b2d8STREFOU Felix #include <stdlib.h>
33*0561b2d8STREFOU Felix #include <stdarg.h>
34*0561b2d8STREFOU Felix 
35*0561b2d8STREFOU Felix #include "ble_conf.h"
36*0561b2d8STREFOU Felix #include "ble_dbg_conf.h"
37*0561b2d8STREFOU Felix 
38*0561b2d8STREFOU Felix /* -------------------------------- *
39*0561b2d8STREFOU Felix  *  Basic definitions               *
40*0561b2d8STREFOU Felix  * -------------------------------- */
41*0561b2d8STREFOU Felix 
42*0561b2d8STREFOU Felix #undef NULL
43*0561b2d8STREFOU Felix #define NULL                    0
44*0561b2d8STREFOU Felix 
45*0561b2d8STREFOU Felix #undef FALSE
46*0561b2d8STREFOU Felix #define FALSE                   0
47*0561b2d8STREFOU Felix 
48*0561b2d8STREFOU Felix #undef TRUE
49*0561b2d8STREFOU Felix #define TRUE                    (!0)
50*0561b2d8STREFOU Felix 
51*0561b2d8STREFOU Felix 
52*0561b2d8STREFOU Felix /* -------------------------------- *
53*0561b2d8STREFOU Felix  *  Macro delimiters                *
54*0561b2d8STREFOU Felix  * -------------------------------- */
55*0561b2d8STREFOU Felix 
56*0561b2d8STREFOU Felix #define M_BEGIN     do {
57*0561b2d8STREFOU Felix 
58*0561b2d8STREFOU Felix #define M_END       } while(0)
59*0561b2d8STREFOU Felix 
60*0561b2d8STREFOU Felix 
61*0561b2d8STREFOU Felix /* -------------------------------- *
62*0561b2d8STREFOU Felix  *  Some useful macro definitions   *
63*0561b2d8STREFOU Felix  * -------------------------------- */
64*0561b2d8STREFOU Felix 
65*0561b2d8STREFOU Felix #define MAX( x, y )          (((x)>(y))?(x):(y))
66*0561b2d8STREFOU Felix 
67*0561b2d8STREFOU Felix #define MIN( x, y )          (((x)<(y))?(x):(y))
68*0561b2d8STREFOU Felix 
69*0561b2d8STREFOU Felix #define MODINC( a, m )       M_BEGIN  (a)++;  if ((a)>=(m)) (a)=0;  M_END
70*0561b2d8STREFOU Felix 
71*0561b2d8STREFOU Felix #define MODDEC( a, m )       M_BEGIN  if ((a)==0) (a)=(m);  (a)--;  M_END
72*0561b2d8STREFOU Felix 
73*0561b2d8STREFOU Felix #define MODADD( a, b, m )    M_BEGIN  (a)+=(b);  if ((a)>=(m)) (a)-=(m);  M_END
74*0561b2d8STREFOU Felix 
75*0561b2d8STREFOU Felix #define MODSUB( a, b, m )    MODADD( a, (m)-(b), m )
76*0561b2d8STREFOU Felix 
77*0561b2d8STREFOU Felix #ifdef WIN32
78*0561b2d8STREFOU Felix #define ALIGN(n)
79*0561b2d8STREFOU Felix #else
80*0561b2d8STREFOU Felix #define ALIGN(n)             __attribute__((aligned(n)))
81*0561b2d8STREFOU Felix #endif
82*0561b2d8STREFOU Felix 
83*0561b2d8STREFOU Felix #define PAUSE( t )           M_BEGIN \
84*0561b2d8STREFOU Felix                                volatile int _i; \
85*0561b2d8STREFOU Felix                                for ( _i = t; _i > 0; _i -- ); \
86*0561b2d8STREFOU Felix                              M_END
87*0561b2d8STREFOU Felix 
88*0561b2d8STREFOU Felix #define DIVF( x, y )         ((x)/(y))
89*0561b2d8STREFOU Felix 
90*0561b2d8STREFOU Felix #define DIVC( x, y )         (((x)+(y)-1)/(y))
91*0561b2d8STREFOU Felix 
92*0561b2d8STREFOU Felix #define DIVR( x, y )         (((x)+((y)/2))/(y))
93*0561b2d8STREFOU Felix 
94*0561b2d8STREFOU Felix #define SHRR( x, n )         ((((x)>>((n)-1))+1)>>1)
95*0561b2d8STREFOU Felix 
96*0561b2d8STREFOU Felix #define BITN( w, n )         (((w)[(n)/32] >> ((n)%32)) & 1)
97*0561b2d8STREFOU Felix 
98*0561b2d8STREFOU Felix #define BITNSET( w, n, b )   M_BEGIN (w)[(n)/32] |= ((U32)(b))<<((n)%32); M_END
99*0561b2d8STREFOU Felix 
100*0561b2d8STREFOU Felix   /* -------------------------------- *
101*0561b2d8STREFOU Felix    *  Compiler                         *
102*0561b2d8STREFOU Felix    * -------------------------------- */
103*0561b2d8STREFOU Felix #define PLACE_IN_SECTION( __x__ )  __attribute__((section (__x__)))
104*0561b2d8STREFOU Felix 
105*0561b2d8STREFOU Felix 
106*0561b2d8STREFOU Felix 
107*0561b2d8STREFOU Felix #ifdef __cplusplus
108*0561b2d8STREFOU Felix }
109*0561b2d8STREFOU Felix #endif
110*0561b2d8STREFOU Felix 
111*0561b2d8STREFOU Felix #endif /*__BLE_COMMON_H */
112*0561b2d8STREFOU Felix 
113*0561b2d8STREFOU Felix /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
114