Midas C++ API - mfe frontend framework
This page contains the full API reference for mfe, the C-style C++ framework for writing frontends (mfe.h).
For the concepts and day-to-day use, see Frontends: overview.
For explanations and examples of writing frontends, see Frontends: programming.
Provided by your frontend
Your frontend must define these variables and functions. The mfe framework uses the variables to configure itself, and calls the functions at the appropriate times.
frontend_init
extern INT frontend_init()
Declared in include/mfe.h:26, defined in include/midas_macro.h:143
frontend_exit
extern INT frontend_exit()
Declared in include/mfe.h:27, defined in include/midas_macro.h:191
frontend_loop
extern INT frontend_loop()
Declared in include/mfe.h:28, defined in include/midas_macro.h:215
begin_of_run
extern INT begin_of_run(INT run_number, char *error)
Declared in include/mfe.h:29, defined in src/mfed.cxx:116
end_of_run
extern INT end_of_run(INT run_number, char *error)
Declared in include/mfe.h:30, defined in src/mfed.cxx:132
pause_run
extern INT pause_run(INT run_number, char *error)
Declared in include/mfe.h:31, defined in src/mfed.cxx:148
resume_run
extern INT resume_run(INT run_number, char *error)
Declared in include/mfe.h:32, defined in src/mfed.cxx:164
poll_event
extern INT poll_event(INT source, INT count, BOOL test)
Polling routine for events. Returns "source" if event is available. If test equals TRUE, don't return. The test flag is used to time the polling
Declared in include/mfe.h:33, defined in include/midas_macro.h:86
interrupt_configure
extern INT interrupt_configure(INT cmd, INT source, POINTER_T adr)
Declared in include/mfe.h:34, defined in include/midas_macro.h:105
frontend_name
extern
const char *frontend_name
Defined in include/mfe.h:17
frontend_file_name
extern
const char *frontend_file_name
Defined in include/mfe.h:18
frontend_call_loop
extern
BOOL frontend_call_loop = FALSE
frontend_loop is called periodically if this variable is TRUE
Declared in include/mfe.h:19, defined in src/mfed.cxx:24
max_event_size
extern
INT max_event_size = 1024 * 1024
maximum event size produced by this frontend
Declared in include/mfe.h:20, defined in src/mfed.cxx:30
max_event_size_frag
extern
INT max_event_size_frag = 5 * 1024 * 1024
maximum event size for fragmented events (EQ_FRAGMENTED)
Declared in include/mfe.h:21, defined in src/mfed.cxx:33
event_buffer_size
extern
INT event_buffer_size = 2 * 1024 * 1024
buffer size to hold events
Declared in include/mfe.h:22, defined in src/mfed.cxx:36
display_period
extern
INT display_period = 0
a frontend status page is displayed with this frequency in ms
Declared in include/mfe.h:23, defined in src/mfed.cxx:27
equipment_common_overwrite
extern
BOOL equipment_common_overwrite
Defined in include/mfe.h:24
equipment
extern
EQUIPMENT equipment[]
Defined in include/mfe.h:25
Simplified frontend syntax
These functions (from mfed.cxx) let a frontend set the event size and install its callback functions at run time, instead of defining all the variables and functions above.
set_max_event_size
extern void set_max_event_size(int size)
following items are defined in mfed.cxx to simplify frontend syntax
Declared in include/mfe.h:37, defined in src/mfed.cxx:40
install_frontend_loop
extern void install_frontend_loop(INT (*f)())
Declared in include/mfe.h:38, defined in src/mfed.cxx:175
install_frontend_exit
extern void install_frontend_exit(INT (*f)())
Declared in include/mfe.h:39, defined in src/mfed.cxx:95
install_begin_of_run
extern void install_begin_of_run(INT (*f)())
Declared in include/mfe.h:40, defined in src/mfed.cxx:111
install_end_of_run
extern void install_end_of_run(INT (*f)())
Declared in include/mfe.h:41, defined in src/mfed.cxx:127
install_pause_run
extern void install_pause_run(INT (*f)())
Declared in include/mfe.h:42, defined in src/mfed.cxx:143
install_resume_run
extern void install_resume_run(INT (*f)())
Declared in include/mfe.h:43, defined in src/mfed.cxx:159
install_poll_event
extern void install_poll_event(INT (*f)(INT,INT,BOOL))
Declared in include/mfe.h:44, defined in src/mfed.cxx:55
set_write_cache_size
extern INT set_write_cache_size(std::string buffer, int size)
Declared in include/mfe.h:45, defined in src/mfed.cxx:74
Variables provided by the framework
The mfe framework sets these variables, and your frontend can read them.
rpc_mode
extern
INT rpc_mode = 1
0 for RPC socket, 1 for event socket
Declared in include/mfe.h:50, defined in src/mfe.cxx:27
run_state
extern
INT run_state = 0
STATE_RUNNING, STATE_STOPPED, STATE_PAUSED
Declared in include/mfe.h:51, defined in src/mfe.cxx:35
run_number
extern
INT run_number = 0
Declared in include/mfe.h:52, defined in src/mfe.cxx:36
actual_time
extern
DWORD actual_time = 0
current time in seconds since 1970
Declared in include/mfe.h:53, defined in src/mfe.cxx:37
actual_millitime
extern
DWORD actual_millitime = 0
current time in milliseconds
Declared in include/mfe.h:54, defined in src/mfe.cxx:38
rate_period
extern
DWORD rate_period = 0
period in ms for rate calculations
Declared in include/mfe.h:55, defined in src/mfe.cxx:39
gWriteCacheSize
extern
int gWriteCacheSize = 0
remember max write cache size to use in periodic flush buffer
Declared in include/mfe.h:57, defined in src/mfe.cxx:41
host_name
extern
char host_name[HOST_NAME_LENGTH]
Declared in include/mfe.h:59, defined in src/mfe.cxx:43
exp_name
extern
char exp_name[NAME_LENGTH]
Declared in include/mfe.h:60, defined in src/mfe.cxx:44
full_frontend_name
extern
char full_frontend_name[256]
Declared in include/mfe.h:61, defined in src/mfe.cxx:45
max_bytes_per_sec
extern
INT max_bytes_per_sec = 0
Declared in include/mfe.h:63, defined in src/mfe.cxx:47
optimize
extern
INT optimize = 0
set this to one to opimize TCP buffer size
Declared in include/mfe.h:64, defined in src/mfe.cxx:48
fe_stop
extern
INT fe_stop = 0
stop switch for VxWorks
Declared in include/mfe.h:65, defined in src/mfe.cxx:49
debug
extern
BOOL debug = 0
disable watchdog messages from server
Declared in include/mfe.h:66, defined in src/mfe.cxx:50
auto_restart
extern
DWORD auto_restart = 0
restart run after event limit reached stop
Declared in include/mfe.h:67, defined in src/mfe.cxx:51
manual_trigger_event_id
extern
INT manual_trigger_event_id = 0
set from the manual_trigger callback
Declared in include/mfe.h:68, defined in src/mfe.cxx:52
verbosity_level
extern
INT verbosity_level = 0
can be used by user code for debugging output
Declared in include/mfe.h:69, defined in src/mfe.cxx:54
lockout_readout_thread
extern
BOOL lockout_readout_thread = TRUE
manual triggers, periodic events and 1Hz flush cache lockout the readout thread
Declared in include/mfe.h:70, defined in src/mfe.cxx:55
hDB
extern
HNDLE hDB = 0
ODB handle
Declared in include/mfe.h:72, defined in src/mfe.cxx:58
hClient
extern
HNDLE hClient = 0
Declared in include/mfe.h:73, defined in src/mfe.cxx:59
stop_all_threads
extern
volatile int stop_all_threads
Defined in include/mfe.h:75
interrupt_eq
extern
EQUIPMENT *interrupt_eq = NULL
Declared in include/mfe.h:78, defined in src/mfe.cxx:61
multithread_eq
extern
EQUIPMENT *multithread_eq = NULL
Declared in include/mfe.h:79, defined in src/mfe.cxx:62
slowcont_eq
extern
BOOL slowcont_eq = FALSE
Declared in include/mfe.h:80, defined in src/mfe.cxx:64
event_buffer
extern
void *event_buffer = NULL
Declared in include/mfe.h:81, defined in src/mfe.cxx:65
frag_buffer
extern
void *frag_buffer = NULL
Declared in include/mfe.h:82, defined in src/mfe.cxx:66
n_events
extern
int *n_events = NULL
Declared in include/mfe.h:83, defined in src/mfe.cxx:68
Functions provided by the framework
The mfe framework provides these functions for your frontend to call.
get_frontend_index
INT get_frontend_index()
frontend functions from midas.h
Declared in include/mfe.h:96, defined in src/mfe.cxx:2368
set_equipment_status
int set_equipment_status(const char *name, const char *eq_status, const char *status_class)
Declared in include/mfe.h:101, defined in src/mfe.cxx:863
mfe_get_args
void mfe_get_args(int *argc, char ***argv)
Declared in include/mfe.h:97, defined in src/mfe.cxx:2431
mfe_error
void mfe_error(const char *error)
central error dispatcher routine which can be called by any device or class driver
Declared in include/mfe.h:99, defined in src/mfe.cxx:2395
mfe_set_error
void mfe_set_error(void (*dispatcher) (const char *))
Declared in include/mfe.h:100, defined in src/mfe.cxx:2381
mfe_error_check
extern void mfe_error_check()
Declared in include/mfe.h:84, defined in src/mfe.cxx:2414
readout_enable
extern void readout_enable(bool flag)
Declared in include/mfe.h:85, defined in src/mfe.cxx:1079
readout_enabled
extern bool readout_enabled()
Declared in include/mfe.h:86, defined in src/mfe.cxx:1075
set_rate_period
extern void set_rate_period(int ms)
Declared in include/mfe.h:90, defined in src/mfe.cxx:93
get_rate_period
extern int get_rate_period()
Declared in include/mfe.h:91, defined in src/mfe.cxx:97
manual_trigger
extern INT manual_trigger(INT idx, void *prpc_param[])
Declared in include/mfe.h:93, defined in src/mfe.cxx:267
display
extern void display(BOOL bInit)
Declared in include/mfe.h:87, defined in src/mfe.cxx:1365
rotate_wheel
extern void rotate_wheel()
Declared in include/mfe.h:88, defined in src/mfe.cxx:1482
logger_root
extern BOOL logger_root()
check if logger uses ROOT format
Declared in include/mfe.h:89, defined in src/mfe.cxx:1497
register_cnaf_callback
void register_cnaf_callback(int debug)
Declared in include/mfe.h:98, defined in src/cnaf_callback.cxx:122
create_event_rb
INT create_event_rb(int i)
Declared in include/mfe.h:102, defined in src/mfe.cxx:1129
get_event_rbh
INT get_event_rbh(int i)
Declared in include/mfe.h:103, defined in src/mfe.cxx:1139
stop_readout_threads
void stop_readout_threads()
Declared in include/mfe.h:104, defined in src/mfe.cxx:1143
is_readout_thread_enabled
bool is_readout_thread_enabled()
Declared in include/mfe.h:105, defined in src/mfe.cxx:1147
is_readout_thread_active
int is_readout_thread_active()
Declared in include/mfe.h:106, defined in src/mfe.cxx:1151
signal_readout_thread_active
void signal_readout_thread_active(int index, int flag)
Declared in include/mfe.h:107, defined in src/mfe.cxx:1159
set_odb_equipment_common
INT set_odb_equipment_common(EQUIPMENT eq[], const char *name)
Defined in include/mfe.h:108