diff --git a/CMakeLists.txt b/CMakeLists.txt index 69a0f6b..7c653f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,7 @@ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) include(cmake/enable_code_coverage_report.cmake) include(cmake/set_control_system_adapter.cmake) find_package(ChimeraTK-ApplicationCore 03.00 REQUIRED) +find_package(ChimeraTK-ApplicationCore-MicroDAQ 02.00) aux_source_directory(${CMAKE_SOURCE_DIR}/server server_sources) aux_source_directory(${CMAKE_SOURCE_DIR}/src library_sources) @@ -52,7 +53,13 @@ include_directories(${CMAKE_SOURCE_DIR}/include) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) add_library(${EXE_NAME}_impl ${library_sources}) -target_link_libraries(${EXE_NAME}_impl ChimeraTK::ChimeraTK-ApplicationCore) + +IF(ChimeraTK-ApplicationCore-MicroDAQ_FOUND) + target_compile_options(${EXE_NAME}_impl PRIVATE "-DWITH_DAQ") + target_link_libraries(${EXE_NAME}_impl ChimeraTK::ChimeraTK-ApplicationCore ChimeraTK::ChimeraTK-ApplicationCore-MicroDAQ) +ELSE() + target_link_libraries(${EXE_NAME}_impl ChimeraTK::ChimeraTK-ApplicationCore) +ENDIF(ChimeraTK-ApplicationCore-MicroDAQ_FOUND) # main server executable add_executable(${EXE_NAME} ${server_sources}) diff --git a/include/GenericApp.h b/include/GenericApp.h index b2dafee..cd10566 100644 --- a/include/GenericApp.h +++ b/include/GenericApp.h @@ -6,6 +6,9 @@ #include #include #include +#ifdef WITH_DAQ +# include +#endif namespace ctk = ChimeraTK; @@ -24,4 +27,9 @@ struct GenericApp : public ctk::Application { }; std::vector deviceModules; + +#ifdef WITH_DAQ + ctk::MicroDAQ daq; + void initialise() override; +#endif }; diff --git a/sample_configs/generic_chimeratk_server_configuration.xml b/sample_configs/generic_chimeratk_server_configuration.xml index 0192f70..4d78306 100644 --- a/sample_configs/generic_chimeratk_server_configuration.xml +++ b/sample_configs/generic_chimeratk_server_configuration.xml @@ -7,6 +7,7 @@ + @@ -23,4 +24,14 @@ + + + + + + + + + + diff --git a/src/GenericApp.cc b/src/GenericApp.cc index 2cab737..92a488d 100644 --- a/src/GenericApp.cc +++ b/src/GenericApp.cc @@ -25,7 +25,30 @@ GenericApp::GenericApp() : Application("generic_chimeratk_server") { deviceModules.emplace_back(this, device, config.get(device + "/triggerPath"), config.get(device + "/pathInDevice"), config.get(device + "/initScript")); } +#ifdef WITH_DAQ + if(config.get("Configuration/MicroDAQ/enable", false)) { + daq = ctk::MicroDAQ{this, "microDAQ", "DAQ module", "DAQ", + config.get("Configuration/MicroDAQ/triggerPath"), {"MicroDAQ"}}; + } +#endif +} +#ifdef WITH_DAQ +void GenericApp::initialise() { + if(config.get("Configuration/MicroDAQ/enable", false)) { + std::vector devices = config.get>("devices"); + for(const std::string& device : devices) { + if(config.get(device + "/enableDAQ", false)) { + auto it = std::find_if(deviceModules.begin(), deviceModules.end(), + [device](const DeviceModuleGroup& group) { return group.getName() == device; }); + if(it != std::end(deviceModules)) { + daq.addDeviceModule(it->_deviceModule); + } + } + } + } + Application::initialise(); } +#endif GenericApp::~GenericApp() { shutdown();