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().
{
CoreApplication a(argc, argv, help);
QString database, groupName, destDir;
double delay=20.0;
double timeScale=1.0;
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;
}
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;
}