#ifndef UTIL_H
#define UTIL_H

//
// Title        : UTILS
// Author       : Lars Pontoppidan Larsen
// Date         : February, 2006
// Target MCU   : Atmel AVR Series
//

/* Usefull defines */
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef NULL
#define NULL 0
#endif


#ifndef cbi
	#define cbi(reg,bit)	reg &= ~(1<<bit)
#endif
#ifndef sbi
	#define sbi(reg,bit)	reg |= (1<<bit)
#endif

#define INC_RING(var, bsize) if (var == ((bsize)-1)) var=0; else var++


void long2ascii(char *target, unsigned long value);
unsigned long ascii2long(char *dest);
unsigned char hex2char(char *dest);
void ms_spin(unsigned short ms);

void short2ascii(char *target, unsigned short value);

// Small inline delay loop
//
// 8-bit count, 3 cycles/loop 
//
static inline void
_delay_loop_1(unsigned char __count)
{
        if (!__count)
                return;

        asm volatile (
                "1: dec %0" "\n\t"
                "brne 1b"
                : "=r" (__count)
                : "0" (__count)
        );
}



#endif

