FESA3 Support Library (FESL)
Getting ACU-USI-Interlock-Bits
- Login on FEC
- Stop running FESA-class
- Run AcuUsiTest
- Select '91 - read InterlockTexts'
- Use generated output for fesa-instance tool
- insert info in file e.g. statusBitsMIL
- e.g. check:
fesa-instance statusAssignedMIL.txt -b statusBitsMIL.xml -d ../../ -t
- Read statusAssigned.1st_read in src/test of e.g. PowerSupplyHebt_DU for further info.
Goal
The FESL ist meant to provide a transparanet view of the components and bus slaves of an SCU. Therefore, we built up a set of libraries which interface the whole SCU functionality as well as the different types of power supplies in the field. Thus it is now possible to easily integrate new power converters and the SCU slave cards controlling them in the existing equipment software and to build up test programms quickly. Dealing with the equipment specifics should not be buried in the FESA-classes but instead be reusable for the implementation of other programs.
Structure
Development sources:
https://git.acc.gsi.de/fesa-drivers/feSupport
Contact Person:
MatthiasWiebel
Versioning
On ASL go to
/common/usr/cscofe/opt/feSupport an check out the available versions.
Link to latest
- productive build -> pro
- developement build -> dev
How to integrate FESL into any project
- Use /common/usr/cscofe/opt/feSupport/VERSION/include
- Use /common/usr/cscofe/opt/feSupport/VERSION/lib
How to integrate FESL into FESA3 projects
- libConfig.mk -> Usually one creates it in the dir of the class. Configuration of the external libs used is done here. This file is then included in the makefiles of the class and the according du.
# Versions
FE_SUPPORT_VERSION = pro
ETHERBONE_VERSION = tg-fallout-v6.1.2
# Base directories
FE_SUPPORT_DIR = /common/usr/cscofe/opt/feSupport/$(FE_SUPPORT_VERSION)
ETHERBONE_DIR = /common/export/timing-rte/$(ETHERBONE_VERSION)/x86_64
- FESA class -> Makefile.specific (additions in blue):
#include libConfig.mk
# Additional compiler flags
COMPILER_FLAGS += -g -Igenerated/cpp/fooClass -Isrc/fooClass -I$(FE_SUPPORT_DIR) -I$(FE_SUPPORT_DIR)/include -I$(ETHERBONE_DIR)/include
# Additional headers (Custom.h Specific.h ...) which need to be installed
EXTRA_HEADERS +=
- FESA deploy-unit -> Makefile.specific (additions in blue):
#include ../fooClass/libConfig.mk
FRONTEND_INCLUDES = -I$(FE_SUPPORT_DIR) -I$(FE_SUPPORT_DIR)/include/ -I$(ETHERBONE_DIR)/include
FRONTEND_LIB = -L$(FE_SUPPORT_DIR)/lib/ -lfesl -L$(ETHERBONE_DIR)lib/ -letherbone
# Additional compiler warning flags
WARNFLAGS +=
# Additional libs and flags which are common to both the Realtime and the Server part
COMPILER_FLAGS += -g $(FRONTEND_INCLUDES)
LINKER_FLAGS += $(FRONTEND_LIB)
# Additional libs and flags which are specific to the Realtime part
COMPILER_RT_FLAGS +=
LINKER_RT_FLAGS +=
# Additional libs and flags which are specific to the Server part
COMPILER_SERVER_FLAGS +=
LINKER_SERVER_FLAGS +=
# Additional headers (Custom.h Specific.h ...) which need to be released
EXTRA_HEADERS +=
How to use the FESL classes in Code of FESA Actions
TODO
Documentation
Mainly done incode.
TODO Central availability. (Until this is done: Check out the sources and generate the docu with doxygen.)
Aktuelle TODOs
Meeting mit PKAIN und MAW 6.7.2020
- alte DevAcc SW in FeSupport umsetzen -> neue Standardklassen mit Subsets
- Code refactoring
- Exceptions
- ...
- Handler separieren von BusSlaves
- neuer Ordner / Namespace auf Ebende scu
- Umbenennen der Handler
- Anpassen in allen Klassen
- Logging verbessern -> THAB wollte irgendwann mal zeigen, was er macht
- Durchdokumentieren -> MAW teilt auf, wer was macht
- valToDac-Funktionen gibt es an verschiedenen Stellen PKAIN
- vereinheitlichen
- Bitbreite konfigurierbar machen
- Test des online-modes MAW
- Coding-Konventionen einführen
- Benennung von Dateien
- Variablen, etc.
- Instanziierung der IFCs vereinfachen -> MAW recherchiert
- mit Struct?
- mit Pattern? -> Cosylab hatte was auf ne Art gemacht