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>© 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