Functions
vslarray/main.cpp File Reference
#include <GeopsyCore.h>
#include <QGpCoreTools.h>
#include "Acquisition.h"
#include "vslarrayInstallPath.h"
#include "vslarrayVersion.h"

Functions

ApplicationHelphelp ()
int main (int argc, char **argv)
 PACKAGE_INFO (vslarray, VSLARRAY)

Function Documentation

int main ( int  argc,
char **  argv 
)

References GeopsyCore::GeopsyCoreEngine::currentDB(), database, QGpCoreTools::endl(), GeopsyCore::SignalDB::findGroup(), group(), groupName, help(), GeopsyCore::SignalDB::open(), Acquisition::setDelay(), Acquisition::setDestination(), Acquisition::setSignals(), QGpCoreTools::Thread::start(), Acquisition::startStations(), Acquisition::status(), Acquisition::stop(), Acquisition::stopStations(), GeopsyCore::AbstractSignalGroup::subPool(), and QGpCoreTools::tr().

{
  // Initialize Qt application
  CoreApplication a(argc, argv, help);

  // Options
  QString database, groupName, destDir;
  double delay=20.0;
  double timeScale=1.0;
  // Check geopsy main arguments
  int i, j=1;
  for(i=1; i<argc; i++) {
    QByteArray arg=argv[i];
    if(arg[0]=='-') {
      if(arg=="-db") {
        CoreApplication::checkOptionArg(i, argc, argv);
        database=argv[i];
      } else if(arg=="-group") {
        CoreApplication::checkOptionArg(i, argc, argv);
        groupName=argv[i];
      } else if(arg=="-dest") {
        CoreApplication::checkOptionArg(i, argc, argv);
        destDir=argv[i];
      } else if(arg=="-delay") {
        CoreApplication::checkOptionArg(i, argc, argv);
        delay=atof(argv[i]);
      } else if(arg=="-time-scale") {
        CoreApplication::checkOptionArg(i, argc, argv);
        timeScale=atof(argv[i]);
      } else {
        App::stream() << tr("vslarray: bad option %1, see -help").arg(argv[i]) << endl;
        return 2;
      }
    } else {
      argv[j++]=argv[i];
    }
  }
  if(j < argc) {
    argv[j]=0;
    argc=j;
  }

  if(database.isEmpty()) {
    App::stream() << tr("vslarray: missing database, see -help") << endl;
    return 2;
  }
  if(groupName.isEmpty()) {
    App::stream() << tr("vslarray: missing group, see -help") << endl;
    return 2;
  }
  if(destDir.isEmpty()) {
    App::stream() << tr("vslarray: missing destination directory, see -help") << endl;
    return 2;
  }
  // Load the main geopsy database
  GeopsyCoreEngine gp;
  SignalDB * db=gp.currentDB();
  if(!db->open(database)) {
    App::stream() << tr("vslarray: error opening database %1").arg(database) << endl;
    return 2;
  }
  AbstractSignalGroup * group=db->findGroup(groupName);
  if( !group) {
    App::stream() << tr("vslarray: unknown group of signals (%1)").arg(groupName) << endl;
    return 2;
  }

  Acquisition acq(timeScale);
  if(!acq.setSignals(group->subPool())) {
    App::stream() << tr("vslarray: bad group, does not contain 3 component signals.") << endl;
    return 2;
  }
  if(!acq.setDestination(destDir) ) {
    App::stream() << tr("vslarray: directory %1 does not exist").arg(destDir) << endl;
    return 2;
  }
  acq.setDelay(delay);
  acq.start();

  printf("Virtual SeedLink Array\n"
         "Type help to get information.\n");
  while(true) {
    printf("$ ");
    QString rep=File::readLine(true);
    if(rep.startsWith("start")) {
      acq.startStations(rep.mid(6));
    } else if(rep.startsWith("stop")) {
      acq.stopStations(rep.mid(5));
    } else if(rep.startsWith("status")) {
      acq.status();
    } else if(rep.startsWith("quit") || rep.startsWith("exit")) {
      break;
    } else if(rep.startsWith("help")) {
      printf("Help:\n"
             "start <station list>\n"
             "stop <station list>\n"
             "status\n"
             "quit\n\n"
             "Syntax for station list:\n"
             "  SN1[,SN2][,...]\n"
             "  all\n");
    } else if(!rep.isEmpty()) {
      printf("%s: command not found\n",rep.toAscii().data());
    }
  }

  acq.stop();

  return 0;
}
PACKAGE_INFO ( vslarray  ,
VSLARRAY   
)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines