/* * GenMac.h * * Created on: 28-Mar-2018 * Author: pushpkant */ /** * @file GenMac.h * @brief Definition of general macros and bit manipulations. */ #ifndef GENMAC_H_ #define GENMAC_H_ /** * @brief Defining TRUE */ #define TRUE 1 /** * @brief Defining true */ #ifndef true #define true TRUE #endif /** * @brief defining BUSY flag */ #define BUSY 1 /** * @brief Defining FALSE */ #define FALSE 0 /** * @brief Defining false */ #ifndef false #define false FALSE #endif /** * @brief Defining HIGH */ #define HIGH 1 /** * @brief Defining LOW */ #define LOW 0 /** * @brief Defining ENABLE */ #define ENABLE 1 /** * @brief Defining DISABLE */ #define DISABLE 0 /** * @brief Defining ON */ #define ON 1 /** * @brief Defining OFF */ #define OFF 0 /* a=target variable, b=bit number to act upon 0-n */ /** * @brief Set the bth bit of variable a */ #define BIT_SET(a,b) ((a) |= (1ULL<<(b))) /** * @brief Clear the bth bit of variabl a */ #define BIT_CLR(a,b) ((a) &= ~(1ULL<<(b))) /** * @brief Flip or toggle bth bit of variable a */ #define BIT_FLIP(a,b) ((a) ^= (1ULL<<(b))) /** * @brief Check for the bth bit of variable a */ #define BIT_CHECK(a,b) ((a) & (1ULL<<(b))) /* x=target variable, y=mask */ /** * @brief SET the mask y in the variable x */ #define BITMASK_SET(x,y) ((x) |= (y)) /** * @brief Clear the mask y in the variable x */ #define BITMASK_CLR(x,y) ((x) &= (~(y))) /** * @brief Flip or toggle the mask y from variable x */ #define BITMASK_FLIP(x,y) ((x) ^= (y)) /** * @brief Check for all the bits in mask y from variable x. * @warning, it evaluates the y twice. */ #define BITMASK_CHECK_ALL(x,y) (((x) & (y)) == (y)) // warning: evaluates y twice /** * @brief Check for any bit in the mask y from variable x. */ #define BITMASK_CHECK_ANY(x,y) ((x) & (y)) /** * @brief Defining WEAK as attribute for weak functions. These functions can * be defined using normal definitions in application code. The normal * definition will override the definition from here. */ #ifndef WEAK #define WEAK __attribute__ ((weak)) #endif #endif /* GENMAC_H_ */