73 lines
1.9 KiB
C
73 lines
1.9 KiB
C
#ifndef _GLOBAL_H
|
|
#define _GLOBAL_H
|
|
|
|
/**************************************************************************
|
|
* Written by Marcin O'BenY Benka <obeny@obeny.net>
|
|
* Version 1.4 (20091114)
|
|
*
|
|
* NOTE:
|
|
*
|
|
* Globaly used macros and type definitions.
|
|
**************************************************************************/
|
|
|
|
|
|
/***************************************************************************
|
|
* INCLUDES
|
|
***************************************************************************/
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
|
|
|
|
/***************************************************************************
|
|
* DEFINITIONS
|
|
***************************************************************************/
|
|
|
|
/* type definitions */
|
|
typedef uint8_t BYTE;
|
|
typedef bool BOOL;
|
|
|
|
typedef int8_t INT8;
|
|
typedef int16_t INT16;
|
|
typedef int32_t INT32;
|
|
|
|
typedef uint8_t UINT8;
|
|
typedef uint16_t UINT16;
|
|
typedef uint32_t UINT32;
|
|
|
|
|
|
/***************************************************************************
|
|
* MACROS
|
|
***************************************************************************/
|
|
|
|
/* bit manipulation */
|
|
#define BV(bit) (1 << (bit))
|
|
|
|
/* free pointer and set it to NULL */
|
|
#define FREE(ptr) { if (ptr) { free(ptr); ptr = NULL; } }
|
|
|
|
/* convert value to bool */
|
|
#define TO_BOOL(val) (!(!val))
|
|
|
|
/* set given bit of byte to 1 */
|
|
#define sbi(byte, bit) (byte) |= (BV(bit))
|
|
|
|
/* set given bit of byte to 0 */
|
|
#define cbi(byte, bit) (byte) &= ~(BV(bit))
|
|
|
|
/* read bit from value */
|
|
#define GET_BIT(value, bit_n) (TO_BOOL((value) & (BV(bit_n))))
|
|
|
|
/* set bit in value */
|
|
#define SET_BIT(value, bit_n, bool_val) ((bool_val)?(sbi(value, bit_n)):(cbi(value, bit_n)))
|
|
|
|
/* change state of bit to opposite in value */
|
|
#define TOGGLE_BIT(value, bit_n) (value ^= BV(bit_n))
|
|
|
|
/* do a short delay using NOP instruction */
|
|
#define NOP_DELAY __asm__ __volatile__("nop"::)
|
|
|
|
#endif /* _GLOBAL_H */
|
|
/* END */
|