Consolidate fe #2
+27
-26
@@ -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
@@ -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; }
|
||||
/*------------------------------------------------------------------*/
|
||||
|
||||
Reference in New Issue
Block a user