/*  @(#) $Header: $
 *
 * Test Philosophy:
 *    Demonstrate that the state machine cycles clockwise and counter.
 * Author:
 *	Allen Brown  http://brown.armoredpenguin.com/~abrown
 */

#include <stdio.h>
#include <math.h>
#define MAIN
#include "quadratureint.h"

int main (void)
{
  int scanfreturn, lineno, returnval;
  char inpline[80];
  char tickleft, tickright;
  int senseintleft, senseintright, heading;
  unsigned char senseleft, senseright;
  long distleft, distright;
  void *quadleft, *quadright, *quadhead;

  quadleft = quadratureint_new(1000,00);
  quadright = quadratureint_new(1000,00);
  quadhead = quadratureint_newheading(40000,quadleft,quadright);
  lineno = 0;
  while( NULL !=		// Check if this is the end of the file.
	 (fgets(inpline, sizeof(inpline), stdin))) // Read a line of text
  {
    lineno++;
    // Parse the input line.
    scanfreturn = sscanf(inpline, "%d%d",
			 &senseintleft, &senseintright);
    if( scanfreturn != 2)
    { // Number of scanned vars must match what we expect.
      printf("quadratureint_t: wrong # values line %d: '%s'\n", lineno, inpline);
    } else {
      senseleft  = senseintleft;
      senseright = senseintright;
      quadratureint_ISR( quadleft,  senseleft );
      quadratureint_ISR( quadright, senseright );
      tickleft  = quadratureint_update( quadleft );
      tickright = quadratureint_update( quadright );
      distleft  = quadratureint_get( quadleft );
      distright = quadratureint_get( quadright );
      heading   = quadratureint_getheading( quadhead );

      //      error = quadratureint_error(quadleft);
      returnval=0;
      printf("line %3d: quad %d,%d -> tick=%d,%d, dist=%ld,%ld,  h=%d.\n",
	     lineno, senseintleft, senseintright,
	     (int)tickleft, (int)tickright, distleft, distright, heading );
      fflush(stdout);
    } // else
  } // while

  return (0);
} // main
/*
 * $Log: quadrature_t.c,v $
 *
 */

