/** * @RDE_HEADER@ * main for BuildingControlUnit * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2017-01-27 */ #include #include #include #include #include #include "logger.h" #include "main_handler.h" class CmdLineParser : public LtsCommandLineParser::LtsCommandLineParser { public: CmdLineParser() : LtsCommandLineParser(LtsCommandLineParser::LtsCommandLineParser::None) { addOption({ QStringList() << QLatin1String("i") << QLatin1String("buildingId"), QLatin1String("Building id (only for log file)"), QLatin1String("buildingId") }); addOption({ QStringList() << QLatin1String("c") << QLatin1String("charges"), QLatin1String("Charges config file"), QLatin1String("path_to_xml") }); addOption({ QStringList() << QLatin1String("b") << QLatin1String("buildingConfig"), QLatin1String("Building configuration config file (bsm, egcu positions)"), QLatin1String("path_to_xml") }); addOption({ QStringList() << QLatin1String("d") << QLatin1String("damage"), QLatin1String("VWM (building damage configuration) file"), QLatin1String("path_to_xml") }); addOption({ QStringList() << QLatin1String("l") << QLatin1String("listenPort"), QLatin1String("WebSocket listen port (default: 0 - auto)"), QLatin1String("listenPort") }); addOption({ QStringList() << QLatin1String("p") << QLatin1String("percentDamageInit"), QLatin1String("Init Percent Building damage ( 0 = false, 1 = true"), QLatin1String("init") }); addOption({ QStringList() << QLatin1String("e") << QLatin1String("effectConfig"), QLatin1String("Filename of EffectConfig"), QLatin1String("EffectConfig") }); } int buildingId() const { return value(QLatin1String("i")).toInt(); } QString chargesFile() const { return value(QLatin1String("c")); } QString bldCfgFile() const { return value(QLatin1String("b")); } QString vwmFile() const { return value(QLatin1String("d")); } bool initBuilding() const { return value(QLatin1String("p")).toInt() != 0; } unsigned short listenPort() const { return value(QLatin1String("l")).toInt(); } QString controlEffectsCfg() const { return value(QLatin1String("e")); } }; int main(int argc, char **argv) { NGLCoreApplication app(argc, argv); QNetworkProxy::setApplicationProxy(QNetworkProxy()); int iRet = -1; CmdLineParser options; if (!options.init()) return iRet; app.createLogger("BCU", options.buildingId()); BuildingControlUnit::Settings::setIniFile(options.iniFile()); { std::unique_ptr mainHandler(new BuildingControlUnit::MainHandler); if (mainHandler->init(options.chargesFile(), options.bldCfgFile(), options.vwmFile(), options.listenPort(), options.initBuilding(), options.controlEffectsCfg())) { STARTUP_LOG(app.baseLogger()); iRet = app.exec(); SHUTDOWN_LOG(app.baseLogger()); } } return iRet; }