/*************************************************************************
 * @(#) $Header: $
 */

#if ! defined(QUADRATUREINT_H)
  #define QUADRATUREINT_H
  #define BIT2CHAR(a,b) (((a)?2:0)|((b)?1:0))
  #define INLINE
  #if ! defined(QUAD_QTY)
    #define QUAD_QTY 2
  #endif

void*       quadratureint_new(int dist_per_pulse, unsigned char newstate);
void        quadratureint_init(void *quad, unsigned char newstate);
void        quadratureint_ISR(void *quad, unsigned char newstate);
signed char quadratureint_update(void *quad);
INLINE long quadratureint_get(void *quad);

  #if defined(QUADRATUREINTDEBUG)
INLINE           int quadratureint_geterr(void *quad);
INLINE unsigned char quadratureint_getlasterr(void *quad);
INLINE unsigned char quadratureint_getlastx(void *quad);
INLINE           int quadratureint_getzero(void *quad);
  #endif

void *quadratureint_newheading(long turndiam, void *left, void *right);
int quadratureint_getheading(void *quadheadingst);
#endif

