/*********************************  types.h  *********************************
 * $Source: /home/cvs/ESP/gen2/software/msp430/include/types.h,v $
 *  Copyright (C) 2003 MBARI
 *
 *  MBARI Proprietary Information. All rights reserved.
 * $Id: types.h,v 1.9 2006/05/17 00:19:17 brent Exp $
 *
 * Standard type and macro declarations for the MSP430
 *
 *****************************************************************************/

#ifndef TYPES_H
#define TYPES_H

#define FALSE 0
#define TRUE (!FALSE)

#include "stddef.h"

typedef	  unsigned char       uint8;
typedef   uint8               byte;
typedef	  signed char         int8;
typedef	  unsigned short      uint16;
typedef	  short               int16;
typedef	  unsigned long       uint32;
typedef	  long                int32;
typedef	  enum {false, true}  boolean;
typedef   void voidFn (void);
typedef	struct {int16 P,I,D;} int16PID;

#define inline  __inline__

#define elementsIn(array) (sizeof(array)/sizeof(array[0]))

//these are depreciated -- were needed for Archelon URCC C v1.7 and before
//#define clear8(byteReg,mask) ((byteReg) &= (int8)(mask)<0 ? (byte)~(mask) : ~(mask))
#define clear8(byteReg,mask) ((byteReg) &= ~(mask))
#define set8(byteReg, mask) ((byteReg) |= (mask))
#define clear16(wordReg,mask) ((wordReg) &= ~(mask))
#define set16(wordReg, mask) ((wordReg) |= (mask))

#endif
