#include <stdio.h>
#include <stdint.h>
#include <aspoutil.h>

#include "feig.h"
LOG_BUFFER(200)
/*
  All section and page referenses are for H20800-18e-ID-B.pdf,
  ask a Feig represenative for the file.
*/

#define BUFSZ 255
const size_t bufsize = BUFSZ;
uint8_t buf[BUFSZ];

static void Usage(void) {
  printf("Usage:\n"
         "\tTest_feig_find device\n"
	 "\topen device and try all baudrates, parities and stopbit settings, stop when reader responds\n"
         );
  exit(1);
}

int baud_rate[] = {
#ifdef  B38400
  B38400,
#endif
#ifdef  B19200
  B19200,
#endif
#ifdef  B9600
  B9600,
#endif
#ifdef  B4800
  B4800,
#endif
#ifdef  B57600
  B57600,
#endif
#ifdef  B115200
  B115200,
#endif
#ifdef  B230400
  B230400,
#endif
#ifdef  B100000
  B100000,
#endif
#ifdef  B125000
  B125000,
#endif
#ifdef  B250000
  B250000,
#endif
#ifdef  B500000
  B500000,
#endif
};
/* Always 8 bit bytes */
/* Parity: none, odd, or even */
/* Always 1 stop bits */

int main(int argc, char *argv[]) {
  int fd;
  const char *device = argv[1];
  uint8_t req[6];
  struct tty_open_save save;
  struct termios term;
  struct feig_readerinfo_t info;

  /*(void) feig_baud_rate_detection( req, sizeof(req) ); */
  /*(void) feig_get_software_version( req, sizeof(req) ); */
  (void) feig_get_reader_info(req, sizeof(req), 0);
  log_open(NULL, LOG_PRIO | 2, 0);

  LOG_IF (sizeof(baud_rate)/sizeof(int) == 0, LOG_ERR) exit(1);
  if (argc < 2) Usage();

  LOG_IF( (fd = tty_Open(strlen(device), device, &save, termios_feig, &term)) < 0, LOG_ERR ) { return -1; }

  LOG_IF( feig_find(&save, &term, 500000, " ", &info) < 0, LOG_ERR ) { exit(1); }

  tty_close(&save);

  return 0;
}
