diff --git a/CMakeLists.txt b/CMakeLists.txt index 5be13d9..3d9b459 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,7 +38,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES Linux) endif() option( - BUILD_FRONTENDS + BUILD_FRONTEND "If ON, build the default frontend executable" OFF ) @@ -184,38 +184,39 @@ target_compile_definitions( ## Test Frontend ################################################################################ -if(${BUILD_FRONTENDS}) +if(${BUILD_FRONTEND}) + set(EXPMAG_FRONTEND_NAME "Magnets_instr" CACHE STRING "Overridable frontend name") - foreach(target IN ITEMS expmag_fe expmag_epics_fe) + add_executable( + Magnets_instr_scfe + frontend/expmag_scfe.cxx + ) - add_executable( - ${target} - frontend/expmag_scfe.cxx - ) + add_compile_definitions(Magnets_instr_scfe PRIVATE FRONTEND_NAME="${EXPMAG_FRONTEND_NAME}") + set_property( + TARGET + Magnets_instr_scfe + PROPERTY + CXX_STANDARD 11 + ) - set_property( - TARGET - ${target} - PROPERTY - CXX_STANDARD 17 - ) - - target_include_directories( - ${target} - PRIVATE - $ENV{MIDASSYS}/drivers - ) - - endforeach() - - target_link_libraries( - expmag_fe - expmag + target_include_directories( + Magnets_instr_scfe + PRIVATE + $ENV{MIDASSYS}/drivers + $ENV{MIDASSYS}/include + $ENV{MIDASSYS}/include/mscb ) target_link_libraries( - expmag_epics_fe + Magnets_instr_scfe expmag_epics + midas::mfe ) + install( + TARGETS + Magnets_instr_scfe + RUNTIME DESTINATION bin + ) endif() diff --git a/frontend/expmag_scfe.cxx b/frontend/expmag_scfe.cxx index 8fc7d6b..f612563 100644 --- a/frontend/expmag_scfe.cxx +++ b/frontend/expmag_scfe.cxx @@ -1,53 +1,46 @@ -/*******************************************************************\ +/********************************************************************\ - Name: expmag_fe.cxx - Created by: Stefan Mathis - Contents: Slow Control Frontend for beamline magnets + Name: frontend.c + Created by: RA35 + + Contents: Slow control FE for Experimental magnets \********************************************************************/ +#include #include "midas.h" - -#include "mfe.h" - -#include "bus/tcpip.h" #include "class/generic.h" - #include "device/expmag.h" +#include "bus/tcpip.h" -/******************************************************************************* - * Global Variables Required by mfe.h - ******************************************************************************/ +#ifdef FORTIFY +#include "fortify.h" +#endif -//! The frontend name (client name) as seen by other MIDAS clients -const char *frontend_name = "Experiment magnet"; +/*-- Globals -------------------------------------------------------*/ -//! The frontend file name, don't change it +/* The frontend name (client name) as seen by other MIDAS clients */ +const char *frontend_name = FRONTEND_NAME; + +/* The frontend file name, don't change it */ const char *frontend_file_name = __FILE__; -//! frontend_loop is called periodically if this variable is TRUE -BOOL frontend_call_loop = TRUE; +/* frontend_loop is called periodically if this variable is TRUE */ +BOOL frontend_call_loop = FALSE; -//! a frontend status page is displayed with this frequency in ms +/* a frontend status page is displayed with this frequency in ms */ INT display_period = 1000; -//! maximum event size produced by this frontend +/* maximum event size produced by this frontend */ INT max_event_size = 10000; -//! maximum event size for fragmented events (EQ_FRAGMENTED) +/* maximum event size for fragmented events (EQ_FRAGMENTED) */ INT max_event_size_frag = 5 * 1024 * 1024; -//! buffer size to hold events +/* buffer size to hold events */ INT event_buffer_size = 10 * 10000; -/******************************************************************************* - * Equipment List Required by mfe.h - ******************************************************************************/ - -DEVICE_DRIVER expmag_driver[] = { - // { name, *dd, channels, *bd, flags } - {"expmag", expmag, 9, NULL, DF_INPUT}, -}; +extern BOOL should_exit; /*! * equipment_common_overwrite: @@ -60,64 +53,75 @@ DEVICE_DRIVER expmag_driver[] = { */ BOOL equipment_common_overwrite = FALSE; -/******************************************************************************* - * Equipment Structure Required by mfe.h - ******************************************************************************/ +/*-- Equipment list ------------------------------------------------*/ -EQUIPMENT equipment[] = { - { - "expmag", /* equipment name */ - { - 16, /* Event ID associated with equipm. */ - 0, /* Trigger mask */ - "SYSTEM", /* Event buffer to send events into */ - EQ_SLOW, /* equipment type */ - 0, /* Event source (LAM/IRQ) */ - "FIXED", /* Data format to produce */ - TRUE, /* Enable flag */ - RO_RUNNING | - RO_TRANSITIONS, /* Combination of Read-On flags RO_xxx */ - 60000, /* Readout interval/Polling time in ms */ - 0, /* Stop run when limit is reached */ - 0, /* Number of events in super event */ - 1, /* log history every event */ - "", /* Host on which FE is running */ - "", /* Frontend name */ - "" /* Source file used for user FE */ - }, - cd_gen_read, /* readout routine */ - cd_gen, /* class driver main routine */ - expmag_driver, /* device driver list */ - NULL, /* init string */ - }, +/* device driver list */ +DEVICE_DRIVER expmag_driver[] = { + {FRONTEND_NAME, expmag, 9, NULL, + DF_PRIO_DEVICE}, /* initial demand value taken from instrument */ {""}}; -/******************************************************************************* - * Routines Required by mfe.h - * - * Can be overwritten to modify the default frontend behaviour. - ******************************************************************************/ +EQUIPMENT equipment[] = { -INT poll_event(INT source, INT count, BOOL test) { return CM_SUCCESS; }; + { + FRONTEND_NAME, /* equipment name */ + { + 16, + 0, /* event ID, trigger mask */ + "SYSTEM", /* event buffer */ + EQ_SLOW, /* equipment type */ + 0, /* event source */ + "FIXED", /* format */ + TRUE, /* enabled */ + RO_RUNNING | + RO_TRANSITIONS, /* read when running and on transitions */ + 60000, /* read every 60 sec */ + 0, /* stop run after this event limit */ + 0, /* number of sub events */ + 1, /* log history every event */ + "", + "", + "", + }, + cd_gen_read, /* readout routine */ + cd_gen, /* class driver main routine */ + expmag_driver, /* device driver list */ + NULL, /* init string */ + }, -INT interrupt_configure(INT cmd, INT source, POINTER_T adr) { - return CM_SUCCESS; -}; + {""}}; -INT frontend_init() { - return CM_SUCCESS; -} +/*-- Dummy routines ------------------------------------------------*/ -INT frontend_loop() { - return CM_SUCCESS; -} +INT poll_event(INT source, INT count, BOOL test) { return 1; } +INT interrupt_configure(INT cmd, INT source, PTYPE adr) { return 1; } + +/*-- Frontend Init -------------------------------------------------*/ + +INT frontend_init() { return CM_SUCCESS; } + +/*-- Frontend Exit -------------------------------------------------*/ INT frontend_exit() { return CM_SUCCESS; } +/*-- Frontend Loop -------------------------------------------------*/ + +INT frontend_loop() { return CM_SUCCESS; } + +/*-- Begin of Run --------------------------------------------------*/ + INT begin_of_run(INT run_number, char *error) { return CM_SUCCESS; } +/*-- End of Run ----------------------------------------------------*/ + +INT end_of_run(INT run_number, char *error) { return CM_SUCCESS; } + +/*-- Pause Run -----------------------------------------------------*/ + INT pause_run(INT run_number, char *error) { return CM_SUCCESS; } +/*-- Resuem Run ----------------------------------------------------*/ + INT resume_run(INT run_number, char *error) { return CM_SUCCESS; } -INT end_of_run(INT run_number, char *error) { return CM_SUCCESS; } +/*------------------------------------------------------------------*/