| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- /**
- ******************************************************************************
- * @file stm32_wpan_common.h
- * @author MCD Application Team
- * @brief Common file to utilities
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2018-2021 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
- /* Define to prevent recursive inclusion -------------------------------------*/
- #ifndef __STM32_WPAN_COMMON_H
- #define __STM32_WPAN_COMMON_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #if defined ( __CC_ARM )||defined (__ARMCC_VERSION)
- #define __ASM __asm /*!< asm keyword for ARM Compiler */
- #define __INLINE __inline /*!< inline keyword for ARM Compiler */
- #define __STATIC_INLINE static __inline
- #elif defined ( __ICCARM__ )
- #define __ASM __asm /*!< asm keyword for IAR Compiler */
- #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */
- #define __STATIC_INLINE static inline
- #elif defined ( __GNUC__ )
- #define __ASM __asm /*!< asm keyword for GNU Compiler */
- #define __INLINE inline /*!< inline keyword for GNU Compiler */
- #define __STATIC_INLINE static inline
- #endif
- #include <stdint.h>
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdarg.h>
- #include "cmsis_compiler.h"
- /* -------------------------------- *
- * Basic definitions *
- * -------------------------------- */
- #undef NULL
- #define NULL 0U
- #undef FALSE
- #define FALSE 0U
- #undef TRUE
- #define TRUE (!0U)
- /* -------------------------------- *
- * Critical Section definition *
- * -------------------------------- */
- #undef BACKUP_PRIMASK
- #define BACKUP_PRIMASK() uint32_t primask_bit= __get_PRIMASK()
- #undef DISABLE_IRQ
- #define DISABLE_IRQ() __disable_irq()
- #undef RESTORE_PRIMASK
- #define RESTORE_PRIMASK() __set_PRIMASK(primask_bit)
- /* -------------------------------- *
- * Macro delimiters *
- * -------------------------------- */
- #undef M_BEGIN
- #define M_BEGIN do {
- #undef M_END
- #define M_END } while(0)
- /* -------------------------------- *
- * Some useful macro definitions *
- * -------------------------------- */
- #undef MAX
- #define MAX(a, b) (((a) > (b)) ? (a) : (b))
- #undef MIN
- #define MIN(a, b) (((a) < (b)) ? (a) : (b))
- #undef MODINC
- #define MODINC( a, m ) M_BEGIN (a)++; if ((a)>=(m)) (a)=0; M_END
- #undef MODDEC
- #define MODDEC( a, m ) M_BEGIN if ((a)==0) (a)=(m); (a)--; M_END
- #undef MODADD
- #define MODADD( a, b, m ) M_BEGIN (a)+=(b); if ((a)>=(m)) (a)-=(m); M_END
- #undef MODSUB
- #define MODSUB( a, b, m ) MODADD( a, (m)-(b), m )
- #undef ALIGN
- #ifdef WIN32
- #define ALIGN(n)
- #else
- #define ALIGN(n) __attribute__((aligned(n)))
- #endif
- #undef PAUSE
- #define PAUSE( t ) M_BEGIN \
- volatile int _i; \
- for ( _i = t; _i > 0; _i -- ); \
- M_END
- #undef DIVF
- #define DIVF( x, y ) ((x)/(y))
- #undef DIVC
- #define DIVC( x, y ) (((x)+(y)-1)/(y))
- #undef DIVR
- #define DIVR( x, y ) (((x)+((y)/2))/(y))
- #undef SHRR
- #define SHRR( x, n ) ((((x)>>((n)-1))+1)>>1)
- #undef BITN
- #define BITN( w, n ) (((w)[(n)/32] >> ((n)%32)) & 1)
- #undef BITNSET
- #define BITNSET( w, n, b ) M_BEGIN (w)[(n)/32] |= ((U32)(b))<<((n)%32); M_END
- /* -------------------------------- *
- * Section attribute *
- * -------------------------------- */
- #undef PLACE_IN_SECTION
- #define PLACE_IN_SECTION( __x__ ) __attribute__((section (__x__)))
- /* ----------------------------------- *
- * Packed usage (compiler dependent) *
- * ----------------------------------- */
- #undef PACKED__
- #undef PACKED_STRUCT
- #if defined ( __CC_ARM )
- #if defined ( __GNUC__ )
- /* GNU extension */
- #define PACKED__ __attribute__((packed))
- #define PACKED_STRUCT struct PACKED__
- #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050U)
- #define PACKED__ __attribute__((packed))
- #define PACKED_STRUCT struct PACKED__
- #else
- #define PACKED__(TYPE) __packed TYPE
- #define PACKED_STRUCT PACKED__(struct)
- #endif
- #elif defined ( __GNUC__ )
- #define PACKED__ __attribute__((packed))
- #define PACKED_STRUCT struct PACKED__
- #elif defined (__ICCARM__)
- #define PACKED_STRUCT __packed struct
- #else
- #define PACKED_STRUCT __packed struct
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif /*__STM32_WPAN_COMMON_H */
|