16{
   17        boost::program_options::options_description description("Acoustic data filter options");
   18        description.add_options()
   19            ("help,h", "Show the help")
   20            ("statemachine,s",   boost::program_options::value<std::string>()->default_value("localhost"), "State machine server address (default localhost)")
   21            ("command_server,H", boost::program_options::value<std::string>()->default_value("localhost"), "State machine server address (default localhost)")
   22            ("logger,l",         boost::program_options::value<std::string>()->default_value("localhost"), "Logger server address (default localhost)")
   23            ("message_server,M", boost::program_options::value<std::string>()->default_value("localhost"), "Logger server address (default localhost)")
   24            ("debug,d", boost::program_options::value<int>()->default_value(0), "Debug level (default 0)")
   25            ("name,n", boost::program_options::value<std::string>()->default_value("AcousticDataFilter"), "Client name (default AcousticDataFilter)")
   26            ("address,a", boost::program_options::value<std::string>()->default_value("127.0.0.1"), "Local address for the TCP audio server used to receive the data stream from the DQ (default 127.0.0.1)")
   27            ("port,p", boost::program_options::value<int>()->default_value(5800), "Local port number TCP audio server used to receive the data stream from the DQ (default 5800)")
   28            ("wisdom,w", boost::program_options::value<std::string>()->default_value("./Wisdom.txt"), "Local path and name of the wisdom file (default ./Wisdom.txt)")
   29            ("output,o", boost::program_options::value<std::string>()->default_value("./"), "Path of the output files (default ./)")
   30            ("raw,r", boost::program_options::value<std::string>()->default_value("./"), "Path of the raw files (default ./)");
   31 
   32    try {
   33        boost::program_options::variables_map vm;
   34        boost::program_options::store(boost::program_options::command_line_parser(argc, argv).options(description).run(), vm);
   35        boost::program_options::notify(vm);
   36 
   37        if(vm.count("help")) { std::cout << description; return 0; }
   38 
   39        std::string Local_addr = vm["address"].as<std::string>();
   40        std::string Local_port = boost::lexical_cast<std::string>(vm["port"].as<int>());
   41        std::string StateMachine_address = vm["statemachine"].as<std::string>();
   42        std::string Logger_address = vm["logger"].as<std::string>();
   43        int Client_dbg_level = vm["debug"].as<int>();
   44        std::string Client_name = vm["name"].as<std::string>();
   45        std::string Wisdom_file = vm["wisdom"].as<std::string>();
   46        std::string Output_file = vm["output"].as<std::string>();
   47        std::string Raw_file = vm["raw"].as<std::string>();
   48 
   49        if (StateMachine_address == "") {
   50          StateMachine_address = vm["command_server"].as<std::string>();
   51        }
   52        if (Logger_address       == "") {
   53          Logger_address       = vm["message_server"].as<std::string>();
   54        }
   55 
   56        try
   57        {
   59                AcousticDataFilter ADF(Local_addr,Local_port,Client_name, StateMachine_address, Wisdom_file, Output_file, Raw_file, 
Log, Client_dbg_level);
 
   60                ADF.enter();
   61                ADF.run();
   62                return 0;
   63        }
   64        catch (std::exception& e)
   65        {
   66                std::cerr<<"Error: "<<e.what()<<'\n';
   67                return -1;
   68        }
   69 
   70    }
   71    catch(const boost::program_options::error& ex) {
   72       std::cerr << ex.what() << '\n';
   73       return -2;
   74    }
   75}
Message logging based on ControlHost.