MDIF Epics Module ----------------- An Asyn and Stream Device based driver for the Multi-Detector Interface used at some instrument within SINQ. ## How to Use Unless a custom database is needed, a device can be configure simply by setting the required environment variables when calling the MDIF start script. Required Variables | Environment Variable | Purpose | |----------------------|-----------------------------------------| | INSTR | Prefix of all device specific PVs | | NAME | First field in all PVs after Prefix | | MDIF\_IP | Network IP of device | | MDIF\_PORT | Network Port of device | All PVs take the form ``` $(INSTR)$(NAME):* ``` Available device startup scripts * scripts/mdif.cmd For example ``` epicsEnvSet("INSTR", "SQ:INSTRUMENT:") # can also be set in runScript call runScript "$(mdif_DIR)mdif.cmd" "NAME=MDIF, MDIF_IP=focus-ts, MDIF_PORT=3016" ``` ## PVs of Interest | PV | Description | |------------------------------|--------------------------------------------------| | \$(INSTR)\$(NAME):MsgTxt | Contains unexpected response to executed command | | \$(INSTR)\$(NAME):DELAY | Used to write a new delay value to the MDIF | | \$(INSTR)\$(NAME):DELAY\_RBV | Read back the delay value configured in the MDIF | ## Simulation Simulation of the Hardware can be toggled on as follows: ``` epicsEnvSet("SET_SIM_MODE","") # run MDIF simulation instead of connecting to actual system runScript "$(mdif_DIR)mdif.cmd" "NAME=MDIF, MDIF_IP=localhost, MDIF_PORT=3016" ``` In such a case, the provided `MDIF_IP` is ignored, and a python program simulating the hardware is started in the background, listening at the specified `MDIF_PORT`. See [sim/mdif\_sim.py](sim/mdif_sim.py).