00001 #include "artdaq/Application/TaskType.hh"
00002 #include "artdaq/Application/BoardReaderApp.hh"
00003 #include "artdaq/ExternalComms/MakeCommanderPlugin.hh"
00004 #include "artdaq/Application/LoadParameterSet.hh"
00005 #include "artdaq/BuildInfo/GetPackageBuildInfo.hh"
00006 #include "artdaq/DAQdata/Globals.hh"
00007 #include "cetlib_except/exception.h"
00008
00009 #include <boost/program_options.hpp>
00010 #include <boost/lexical_cast.hpp>
00011
00012 #include <iostream>
00013 #include <memory>
00014
00015 int main(int argc, char* argv[])
00016 {
00017 artdaq::configureMessageFacility("boardreader");
00018
00019 fhicl::ParameterSet config = LoadParameterSet(argc, argv);
00020
00021 std::string name = config.get<std::string>("application_name", "BoardReader");
00022 auto rank = config.get<int>("rank", 0);
00023 TLOG_DEBUG(name + "Main") << "Setting application name to " << name << TLOG_ENDL;
00024
00025 TLOG_DEBUG(name + "Main") << "artdaq version " <<
00026 artdaq::GetPackageBuildInfo::getPackageBuildInfo().getPackageVersion()
00027 << ", built " <<
00028 artdaq::GetPackageBuildInfo::getPackageBuildInfo().getBuildTimestamp() << TLOG_ENDL;
00029
00030 artdaq::setMsgFacAppName(name, config.get<int>("id"));
00031
00032
00033 artdaq::BoardReaderApp br_app(rank, name);
00034
00035
00036 auto auto_run = config.get<bool>("auto_run", false);
00037 if (auto_run) {
00038 int run = config.get<int>("run_number", 101);
00039 uint64_t timeout = config.get<uint64_t>("transition_timeout", 30);
00040 uint64_t timestamp = 0;
00041
00042 br_app.do_initialize(config, timeout, timestamp);
00043 br_app.do_start(art::RunID(run), timeout, timestamp);
00044
00045 TLOG_INFO(name) << "Running XMLRPC Commander. To stop, either Control-C or " << std::endl
00046 << "xmlrpc http://`hostname`:" << config.get<int>("id") << "/RPC2 daq.stop" << std::endl
00047 << "xmlrpc http://`hostname`:" << config.get<int>("id") << "/RPC2 daq.shutdown" << TLOG_ENDL;
00048 }
00049
00050 auto commander = artdaq::MakeCommanderPlugin(config, br_app);
00051 commander->run_server();
00052 }