#include "TDS1002.h"
#include "source.h"
#include "RS232Parser.h"

/* Porta seriale su cui far girare l'emulatore. */
#define DEVICE "/dev/ttyS1"
/* lista delle funzioni d'onda implementate in source.c */
#define NWAVES 7
enum {SIMPLESIN,RCSIN,RCSQR,LCSIN,LCSQR,RLCSIN,RLCSQR}; 

int main(int argc, char* argv[]) {
  /* Per ognuna delle funzioni d'onda/circuiti definisce una stringa
     per poter passare gli argomenti da riga di comando  
  */
  char* waves[NWAVES]={"SINcos","RCSInusoid","RCSQuare",
                       "LCSInusoid","LCSQuare",
                       "RLCSInusoid","RLCSQuare"};
  int selection;
  /* Definisce la frequenza della forzante (variabile comune 
     SourceFrequency in source.h )*/
  if ( argc<3 || sscanf(argv[2],"%lg",&SourceFrequency)!=1 )
    SourceFrequency=1.E5;
  /* Identifica il circuito richiesto ed inizializza TDS1002Wave. */
  if ( argc<2 || (selection=RS232PSelectString(argv[1],waves,NWAVES))<0 )
    TDS1002Wave=RCSinusoid;
  else {
    switch (selection) {
    case SIMPLESIN:
      TDS1002Wave=SimpleSinusoid;
      break;
    case RCSIN:
      TDS1002Wave=RCSinusoid;
      break;
    case RCSQR:
      TDS1002Wave=RCSquare;
      break;
    case LCSIN:
      TDS1002Wave=LCSinusoid;
      break;
    case LCSQR:
      TDS1002Wave=LCSquare;
      break;
    case RLCSIN:
      TDS1002Wave=RLCSinusoid;
      break;
    case RLCSQR:
      TDS1002Wave=RLCSquare;
      break;
    default:
      TDS1002Wave=RCSinusoid;
      break;
    }
  }
  /* Fa partire l'emulatore sulla porta definita da DEVICE  */
  TDS1002Run(DEVICE);
  return 0;
}

