Consolidate fe #2

Merged
soederqvist_a merged 2 commits from consolidate_fe into main 2026-08-12 13:46:43 +02:00
2 changed files with 105 additions and 100 deletions
+27 -26
View File
@@ -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()
+78 -74
View File
@@ -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 <stdio.h>
#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; }
/*------------------------------------------------------------------*/