From 42dc88a789ebfbc07f1238ad5e88fcee7756989e Mon Sep 17 00:00:00 2001 From: smathis Date: Thu, 27 Aug 2026 14:00:35 +0200 Subject: [PATCH] Make number of driver instances parametrizable --- CMakeLists.txt | 24 ++++++++-------------- frontend/cfd950_scfe.cxx | 44 ++++++++++++++++++++++++++++++++++------ 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bfec69a..716e8af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,22 +56,23 @@ target_link_libraries( ) ################################################################################ -## Test Frontend +## Default Frontend ################################################################################ +set(_DEFAULT_CFD950_FRONTEND_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE INTERNAL "") -set(_DEFAULT_CFD_FRONTEND_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE INTERNAL "") - -function(default_cfd_frontend F_TARGET F_NAME F_EVENT_ID) +function(default_cfd950_frontend F_TARGET F_NAME F_EVENT_ID NUM_CH NUM_DR) add_executable( ${F_TARGET} - ${_DEFAULT_CFD_FRONTEND_DIR}/frontend/cfd950_scfe.cxx + ${_DEFAULT_CFD950_FRONTEND_DIR}/frontend/cfd950_scfe.cxx $ENV{MIDASSYS}/drivers/bus/null.cxx $ENV{MIDASSYS}/drivers/class/generic.cxx ) target_compile_definitions(${F_TARGET} PRIVATE FRONTEND_NAME="${F_NAME}") target_compile_definitions(${F_TARGET} PRIVATE FRONTEND_ID=${F_EVENT_ID}) + target_compile_definitions(${F_TARGET} PRIVATE FRONTEND_CHANNELS=${NUM_CH}) + target_compile_definitions(${F_TARGET} PRIVATE NUMDRIVERS=${NUM_DR}) set_property( TARGET @@ -83,20 +84,13 @@ function(default_cfd_frontend F_TARGET F_NAME F_EVENT_ID) target_include_directories( ${F_TARGET} PRIVATE - $ENV{MIDASSYS}/drivers + $ENV{MIDASSYS}/drivers ) target_link_libraries( ${F_TARGET} - PRIVATE - cfd950 - midas::mfe - ) - - install( - TARGETS - ${F_TARGET} - RUNTIME DESTINATION bin + cfd950 + midas::mfe ) endfunction() diff --git a/frontend/cfd950_scfe.cxx b/frontend/cfd950_scfe.cxx index 2049a0d..e54bccd 100644 --- a/frontend/cfd950_scfe.cxx +++ b/frontend/cfd950_scfe.cxx @@ -45,13 +45,45 @@ INT event_buffer_size = 10*10000; //-- Equipment list ------------------------------------------------ //! device driver list +#ifndef NUMDRIVERS +#define NUMDRIVERS 5 +#endif + +#define DRIVER(n) \ + { "CFD950_" #n, cfd950, FRONTEND_CHANNELS, null, DF_PRIO_DEVICE } + DEVICE_DRIVER cfd950_driver[] = { - { "CFD950_1", cfd950, 35, null, DF_PRIO_DEVICE }, - { "CFD950_2", cfd950, 35, null, DF_PRIO_DEVICE }, - { "CFD950_3", cfd950, 35, null, DF_PRIO_DEVICE }, - { "CFD950_4", cfd950, 35, null, DF_PRIO_DEVICE }, - { "CFD950_5", cfd950, 35, null, DF_PRIO_DEVICE }, - { ""},//List needs to be terminated by an empty name. Otherwise, unallocated memory is accessed during initialization! +#if NUMDRIVERS >= 1 + DRIVER(1), +#endif +#if NUMDRIVERS >= 2 + DRIVER(2), +#endif +#if NUMDRIVERS >= 3 + DRIVER(3), +#endif +#if NUMDRIVERS >= 4 + DRIVER(4), +#endif +#if NUMDRIVERS >= 5 + DRIVER(5), +#endif +#if NUMDRIVERS >= 6 + DRIVER(6), +#endif +#if NUMDRIVERS >= 7 + DRIVER(7), +#endif +#if NUMDRIVERS >= 8 + DRIVER(8), +#endif +#if NUMDRIVERS >= 9 + DRIVER(9), +#endif +#if NUMDRIVERS >= 10 + DRIVER(10), +#endif + { "" } //List needs to be terminated by an empty name. Otherwise, unallocated memory is accessed during initialization! }; /*!