hondartp-1.2.0/src/global.h

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 */