diff --git a/RTCP/Cobalt/InputProc/src/Station/generate.cc b/RTCP/Cobalt/InputProc/src/Station/generate.cc index 81a08b72fc948f7f251f64feed912cbab14f3bb6..51247aefd1657a0cc3b8da2f66507bfdcb40928c 100644 --- a/RTCP/Cobalt/InputProc/src/Station/generate.cc +++ b/RTCP/Cobalt/InputProc/src/Station/generate.cc @@ -48,6 +48,18 @@ void usage() cerr << endl; cerr << "-h Show this help." << endl; cerr << "-p parset Read configuration from given (augmented) parset." << endl; + cerr << "-s stations Override station list (comma-separated)." << endl; +} + +// Create a skeleton parset +void populateParsetSkeleton(Parset &ps) +{ + // Add one beam + ps.add("Observation.nrBeams", "1"); + ps.add("Observation.Beam[0].subbandList", "[0]"); + + // Add at least one station + ps.add("Observation.VirtualInstrument.stationList", "[CS001]"); } int main( int argc, char **argv ) @@ -55,13 +67,15 @@ int main( int argc, char **argv ) INIT_LOGGER( "generator" ); int opt; - string parsetFilename; + Parset ps; + + populateParsetSkeleton(ps); // parse all command-line options while ((opt = getopt(argc, argv, "hp:")) != -1) { switch (opt) { case 'p': - parsetFilename = optarg; + ps.adoptFile(optarg); break; case 'h': @@ -80,11 +94,8 @@ int main( int argc, char **argv ) exit(1); } - // check for mandatory parameters - if (parsetFilename == "") { - usage(); - exit(1); - } + // regenerate ps.settings + ps.updateSettings(); LOFAR::Cobalt::MPI mpi; mpi.init(argc, argv); @@ -93,10 +104,7 @@ int main( int argc, char **argv ) omp_set_nested(true); omp_set_num_threads(16); - Parset ps(parsetFilename); - struct BoardMode mode(ps.settings.nrBitsPerSample, ps.settings.clockMHz); - const TimeStamp from(time(0), 3, mode.clockHz()); const TimeStamp to(0); @@ -108,14 +116,20 @@ int main( int argc, char **argv ) if (static_cast<int>(f) % mpi.size() != mpi.rank()) continue; + // Skip stations without any boards defined + if (field.inputStreams.size() == 0) { + LOG_WARN_STR("[" << field.name << "] No streams defined. Ignoring."); + continue; + } + vector< SmartPtr<Stream> > outputStreams; for (size_t s = 0; s < field.inputStreams.size(); ++s) { const string& desc = field.inputStreams[s]; - LOG_INFO_STR("Setting up stream to " << desc); + LOG_INFO_STR("[" << field.name << "] Creating stream to " << desc); outputStreams.push_back(createStream(desc, false)); - LOG_INFO_STR("Stream created to " << desc); + LOG_INFO_STR("[" << field.name << "] Created stream to " << desc); } struct StationID stationID(field.name);