Skip to content

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