From 4743abc4d71250e283a15da463e80408ada32740 Mon Sep 17 00:00:00 2001 From: Tomasz <sisco85@wp.pl> Date: Tue, 20 Mar 2018 15:19:42 +0100 Subject: [PATCH] Change csaApplications into libConsattApp. Now dinymic library is used. DOOCS dependent part for link lock server is mover into ./include and ./src directories --- Makefile_rpath.make | 101 ++++----- include/DoocsHelper.h | 67 ++++++ include/EqCsaLSynchFmc20.h | 57 +++++ include/EqLinkLockCtrlFMC25RapidXServer.h | 58 +++++ include/EqLinkLockCtrlFMC25VhdlServer.h | 58 +++++ include/EqLinkLockServer.h | 58 +++++ include/EqLinkLockStatusServer.h | 57 +++++ include/EqLllDataHubServer.h | 56 +++++ linklock_rpc_server.cc | 1 - src/DoocsHelper.cc | 253 ++++++++++++++++++++++ src/EqCsaLSynchFmc20.cc | 86 ++++++++ src/EqLinkLockCtrlFMC25RapidXServer.cc | 93 ++++++++ src/EqLinkLockCtrlFMC25VhdlServer.cc | 93 ++++++++ src/EqLinkLockServer.cc | 91 ++++++++ src/EqLinkLockStatusServer.cc | 89 ++++++++ src/EqLllDataHubServer.cc | 88 ++++++++ 16 files changed, 1242 insertions(+), 64 deletions(-) create mode 100644 include/DoocsHelper.h create mode 100644 include/EqCsaLSynchFmc20.h create mode 100644 include/EqLinkLockCtrlFMC25RapidXServer.h create mode 100644 include/EqLinkLockCtrlFMC25VhdlServer.h create mode 100644 include/EqLinkLockServer.h create mode 100644 include/EqLinkLockStatusServer.h create mode 100644 include/EqLllDataHubServer.h create mode 100644 src/DoocsHelper.cc create mode 100644 src/EqCsaLSynchFmc20.cc create mode 100644 src/EqLinkLockCtrlFMC25RapidXServer.cc create mode 100644 src/EqLinkLockCtrlFMC25VhdlServer.cc create mode 100644 src/EqLinkLockServer.cc create mode 100644 src/EqLinkLockStatusServer.cc create mode 100644 src/EqLllDataHubServer.cc diff --git a/Makefile_rpath.make b/Makefile_rpath.make index ad5c74a..c3f4203 100644 --- a/Makefile_rpath.make +++ b/Makefile_rpath.make @@ -10,6 +10,10 @@ OBJDIR = $(DOOCSROOT)/target/$(DOOCSARCH)/obj/server/$(SERVER_NAME) SRCDIR = $(DOOCSROOT)/source/server/lbsync/$(SERVER_NAME) +#CSA doocs locations applications +SRCDIR_SERVER = ./src +INCLDIR_SERVER = ./include + # to define the arch dependend things include $(DOOCSROOT)/target/$(DOOCSARCH)/CONFIG @@ -20,10 +24,10 @@ include $(DOOCSROOT)/target/$(DOOCSARCH)/CONFIG ## DIFFERENT PATH FOR Consatt LIBRARY #CPPFLAGS += $(shell Consatt-config --cppflags) #LDLIBS += $(shell Consatt-config --ldflags) -#CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --cppflags) -#LDLIBS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --ldflags) -CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --cppflags) -LDLIBS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --ldflags) +CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --cppflags) +LDLIBS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --ldflags) +#CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --cppflags) +#LDLIBS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --ldflags) ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -32,10 +36,10 @@ LDLIBS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x8 ## DIFFERENT PATH FOR Consatt-Doocs LIBRARY #CPPFLAGS += $(shell Consatt-doocs-config --cppflags) #LDLIBS += $(shell Consatt-doocs-config --ldflags) -#CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --cppflags) -#LDLIBS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --ldflags) -CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --cppflags) -LDLIBS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --ldflags) +CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --cppflags) +LDLIBS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --ldflags) +#CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --cppflags) +#LDLIBS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --ldflags) ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -44,13 +48,26 @@ LDLIBS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x8 ## DIFFERENT PATH FOR Demac LIBRARY #CPPFLAGS += $(shell Demac-config --cppflags) #LDLIBS += $(shell Demac-config --ldflags) -#CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --cppflags) -#LDLIBS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --ldflags) -CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --cppflags) -LDLIBS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --ldflags) +CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --cppflags) +LDLIBS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --ldflags) +#CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --cppflags) +#LDLIBS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --ldflags) ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +## DIFFERENT PATH FOR Consatt Applications LIBRARY +#CPPFLAGS += $(shell ConsattApp-config --cppflags) +#LDLIBS += $(shell ConsattApp-config --ldflags) +CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsattApp/00.01.00/bin/ConsattApp-config --cppflags) +LDLIBS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsattApp/00.01.00/bin/ConsattApp-config --ldflags) +#CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180309_1400/Ubuntu-16.04-x86_64/libConsattApp/00.01.00/bin/ConsattApp-config --cppflags) +#LDLIBS += $(shell /home/tkozak/LIB_STABLE/20180309_1400/Ubuntu-16.04-x86_64/libConsattApp/00.01.00/bin/ConsattApp-config --ldflags) +## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + + CPPFLAGS += $(shell mtca4u-deviceaccess-config --cppflags) LDLIBS += $(shell mtca4u-deviceaccess-config --ldflags) #CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/deviceaccess/00.23.01/bin/mtca4u-deviceaccess-config --cppflags) @@ -72,22 +89,16 @@ LDLIBS += -Wl,-rpath=./ LDLIBS += -lstdc++fs #CSA applications -SRCDIR_CSA_APP = ../csaApplications/src/linklock -INCLDIR_CSA_APP = ../csaApplications/include/linklock - -SRCDIR_CSA_MISC = ../csaApplications/src/misc -INCLDIR_CSA_MISC = ../csaApplications/include/misc +#SRCDIR_CSA_APP = ../csaApplications/src/linklock +#INCLDIR_CSA_APP = ../csaApplications/include/linklock -#CSA doocs locations applications -SRCDIR_CSA_DOOCS_APP = ../csaApplications/doocs_src/linklock -INCLDIR_CSA_DOOCS_APP = ../csaApplications/doocs_include/linklock +#SRCDIR_CSA_MISC = ../csaApplications/src/misc +#INCLDIR_CSA_MISC = ../csaApplications/include/misc -SRCDIR_CSA_DOOCS_MISC = ../csaApplications/doocs_src/misc -INCLDIR_CSA_DOOCS_MISC = ../csaApplications/doocs_include/misc # External includes -CPPFLAGS += -I$(INCLDIR_CSA_APP) -I$(INCLDIR_CSA_MISC) -I$(INCLDIR_CSA_DOOCS_APP) -I$(INCLDIR_CSA_DOOCS_MISC) +CPPFLAGS += -I$(INCLDIR_SERVER) CPPFLAGS += -I/usr/include/c++/4.4/ # Disable some annoying warnings @@ -107,25 +118,9 @@ SER_VER_STR = '"'$(SER_VER)'"' echo ---------- compiling SRCDIR: $(SRCDIR)/$(*F).cc ------------ ; \ $(CC) $(CPPFLAGS) $(CCFLAGS) -c -o ${OBJDIR}/$(*F).o $(SRCDIR)/$(*F).cc ; \ chmod g+w ${OBJDIR}/$(*F).o ; \ - elif [ -f $(SRCDIR_CSA_MISC)/$(*F).cc ] && [ "$(*F)" = "CsaServerInfo" ] ; then \ - echo ---------- compiling SRCDIR_CSA_MISC: $(SRCDIR_CSA_MISC)/$(*F).cc ------------ ; \ - $(CC) $(CPPFLAGS) $(CCFLAGS) -c -D SERVER_VERSION=$(SER_VER_STR) -o ${OBJDIR}/$(*F).o $(SRCDIR_CSA_MISC)/$(*F).cc ; \ - chmod g+w ${OBJDIR}/$(*F).o ; \ - elif [ -f $(SRCDIR_CSA_MISC)/$(*F).cc ] ; then \ - echo ---------- compiling SRCDIR_CSA_MISC: $(SRCDIR_CSA_MISC)/$(*F).cc ------------ ; \ - $(CC) $(CPPFLAGS) $(CCFLAGS) -c -o ${OBJDIR}/$(*F).o $(SRCDIR_CSA_MISC)/$(*F).cc ; \ - chmod g+w ${OBJDIR}/$(*F).o ; \ - elif [ -f $(SRCDIR_CSA_APP)/$(*F).cc ] ; then \ - echo ---------- compiling SRCDIR_CSA_APP: $(SRCDIR_CSA_APP)/$(*F).cc ------------ ; \ - $(CC) $(CPPFLAGS) $(CCFLAGS) -c -o ${OBJDIR}/$(*F).o $(SRCDIR_CSA_APP)/$(*F).cc ; \ - chmod g+w ${OBJDIR}/$(*F).o ; \ - elif [ -f $(SRCDIR_CSA_DOOCS_APP)/$(*F).cc ] ; then \ - echo ---------- compiling SRCDIR_CSA_DOOCS_APP: $(SRCDIR_CSA_DOOCS_APP)/$(*F).cc ------------ ; \ - $(CC) $(CPPFLAGS) $(CCFLAGS) -c -o ${OBJDIR}/$(*F).o $(SRCDIR_CSA_DOOCS_APP)/$(*F).cc ; \ - chmod g+w ${OBJDIR}/$(*F).o ; \ - elif [ -f $(SRCDIR_CSA_DOOCS_MISC)/$(*F).cc ] ; then \ - echo ---------- compiling SRCDIR_CSA_DOOCS_MISC: $(SRCDIR_CSA_DOOCS_MISC)/$(*F).cc ------------ ; \ - $(CC) $(CPPFLAGS) $(CCFLAGS) -c -o ${OBJDIR}/$(*F).o $(SRCDIR_CSA_DOOCS_MISC)/$(*F).cc ; \ + elif [ -f $(SRCDIR_SERVER)/$(*F).cc ] ; then \ + echo ---------- compiling SRCDIR_SERVER: $(SRCDIR_SERVER)/$(*F).cc ------------ ; \ + $(CC) $(CPPFLAGS) $(CCFLAGS) -c -o ${OBJDIR}/$(*F).o $(SRCDIR_SERVER)/$(*F).cc ; \ chmod g+w ${OBJDIR}/$(*F).o ; \ else \ echo ---------- problem with rule for compiling $(SRCDIR)/$(*F) ------------ ; \ @@ -133,31 +128,14 @@ SER_VER_STR = '"'$(SER_VER)'"' fi SOURCEOBJ = \ - $(OBJDIR)/CsaServerInfo.o \ - $(OBJDIR)/GenericUtils.o \ $(OBJDIR)/DoocsHelper.o \ $(OBJDIR)/linklock_rpc_server.o \ $(OBJDIR)/LinkLockGlobals.o \ - $(OBJDIR)/CsaLinkLock.o \ - $(OBJDIR)/CsaLSynchFmc20.o \ - $(OBJDIR)/CsaLllDataHub.o \ - $(OBJDIR)/CsaLinkLockCtrlChannel.o \ - $(OBJDIR)/CsaLinkLockCtrlChannelVhdl.o \ - $(OBJDIR)/CsaLinkLockCtrlChannelRapidX.o \ - $(OBJDIR)/CsaLinkLockCtrlFMC25.o \ - $(OBJDIR)/CsaLinkLockCtrlFMC25RapidX.o \ - $(OBJDIR)/CsaLinkLockCtrlFMC25Vhdl.o \ $(OBJDIR)/EqLinkLockServer.o \ $(OBJDIR)/EqCsaLSynchFmc20.o \ $(OBJDIR)/EqLllDataHubServer.o \ $(OBJDIR)/EqLinkLockCtrlFMC25RapidXServer.o \ $(OBJDIR)/EqLinkLockCtrlFMC25VhdlServer.o \ - $(OBJDIR)/ExternalStatusValidator.o \ - $(OBJDIR)/LinkLockStatusValidator.o \ - $(OBJDIR)/LinkLockUnlockEventDataStoreQueue.o \ - $(OBJDIR)/LinkLockUnlockEventDataFileWriter.o \ - $(OBJDIR)/CsaLinkLockStatusValidator.o \ - $(OBJDIR)/LinkCalibrationAlgorithms.o \ $(OBJDIR)/EqLinkLockStatusServer.o @@ -177,10 +155,7 @@ $(OBJDIR)/.depend: mkdir -p $(OBJDIR) ; \ fi for i in $(SRCDIR)/*.cc ;do $(CCDEP) $$i ;done > $(OBJDIR)/.depend_temp - for i in $(SRCDIR_CSA_APP)/*.cc ;do $(CCDEP) $$i ;done > $(OBJDIR)/.depend_temp - for i in $(SRCDIR_CSA_MISC)/*.cc ;do $(CCDEP) $$i ;done > $(OBJDIR)/.depend_temp - for i in $(SRCDIR_CSA_DOOCS_APP)/*.cc ;do $(CCDEP) $$i ;done > $(OBJDIR)/.depend_temp - for i in $(SRCDIR_CSA_DOOCS_MISC)/*.cc ;do $(CCDEP) $$i ;done > $(OBJDIR)/.depend_temp + for i in $(SRCDIR_SERVER)/*.cc ;do $(CCDEP) $$i ;done > $(OBJDIR)/.depend_temp cat $(OBJDIR)/.depend_temp | sed -e "/:/s/^/\$$\(OBJDIR\)\//g" > $(OBJDIR)/.depend chmod g+w $(OBJDIR)/.depend* @echo "---- This is Makefie_rpath.make : $(OBJDIR)/$(SERVER_NAME)_server dependency building done---------------\n" diff --git a/include/DoocsHelper.h b/include/DoocsHelper.h new file mode 100644 index 0000000..fa5e1ba --- /dev/null +++ b/include/DoocsHelper.h @@ -0,0 +1,67 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +/* + * File: DoocsHelper.h + * Author: tkozak + * + * Created on 9 grudnia 2016, 11:07 + */ + +#ifndef DOOCSHELPER_H +#define DOOCSHELPER_H + + +#include "eq_fct.h" +#include "eq_client.h" + +class DoocsHelper { +private: + EqFct* _parent; + +public: + DoocsHelper(EqFct* parent); + + D_zmqstring interruptAddressZmq; + D_string watchdogAddress; + D_string x2timerAddress; + D_string mchAddress; + D_int triggerSource; + + void update(); + +private: + D_int _cmd; + + + D_text _logFileTail; + D_int _logFileTailLineNumber; + D_int _logFileTailLineNumberAutoUpdate; + int _autoupdateCnt; + + D_int _logFileFilterStart; + D_int _logFileFilterEnd; + + //truncate file size + D_int _logFileMaxSizeKb; + D_int _logFileCurrentSize; + D_float _logFileTruncateFactor; + void trimLogFile(); + void trimLogFileCore(); + + int fileSize(const std::string file); + int fileLinesNo(const std::string file); + + time_t getTimeFromMarker(const char* theTime, const char* format = "%Y-%m-%dT%H:%M:%S"); + + void loadLogFileTail(); + void loadLogFileWithTimeFilter(); + + uint32_t _updateCnt; +}; + +#endif /* DOOCSHELPER_H */ + diff --git a/include/EqCsaLSynchFmc20.h b/include/EqCsaLSynchFmc20.h new file mode 100644 index 0000000..19f0392 --- /dev/null +++ b/include/EqCsaLSynchFmc20.h @@ -0,0 +1,57 @@ +/* + * File: EqCsaLSynchFmc20.h + * Author: tsk + * + * Created on April 17, 2016, 10:42 AM + */ + +#ifndef EQCSALSYNCHFMC20_H +#define EQCSALSYNCHFMC20_H + + +#include "eq_fct.h" +#include "eq_client.h" + +#include "DoocsHelper.h" +#include "ConsattApp/CsaLSynchFmc20.h" +#include "Consatt-doocs/Doocs_CsaAdapter.h" + + +#define LINKS_AMOUNT 4 + +#define CODE_CSA_LSYNCH_FMC20_SERVER 5700 + +#define DMA_TRANSFER_DATA_AMOUNT 262144 + +void sig_usr1_zmq_cb_for_laser_lock_server(void *, EqData *, dmsg_info_t *); + + +class EqCsaLSynchFmc20 : public EqFct { +protected: //filds + + //ZMQ communication for X2timer + //D_zmqstring sig_usr1_name_zmq; + //D_int _triggerSource; + + DoocsHelper _helper; + +public: + + boost::shared_ptr <Doocs_CsaAppManager> appManager; + + + EqCsaLSynchFmc20(); + virtual ~EqCsaLSynchFmc20(); + virtual int fct_code(); + void update(); + void init(); + + void interrupt_usr1(int sig_no); + void interrupt_usr1_core(dmsg_info_t *msginfo); + void post_init(void); + static int conf_done; +}; + + +#endif /* EQCSALSYNCHFMC20_H */ + diff --git a/include/EqLinkLockCtrlFMC25RapidXServer.h b/include/EqLinkLockCtrlFMC25RapidXServer.h new file mode 100644 index 0000000..fe3657b --- /dev/null +++ b/include/EqLinkLockCtrlFMC25RapidXServer.h @@ -0,0 +1,58 @@ +/* + * File: Dma_read_dummy.h + * Author: tsk + * + * Created on September 25, 2014, 2:34 PM + */ + +#ifndef EQ_LINK_LOCK_CTRL_RAPIDX_FMC25_SERVER +#define EQ_LINK_LOCK_CTRL_RAPIDX_FMC25_SERVER + + + +#include "eq_fct.h" +#include "eq_client.h" + +#include "DoocsHelper.h" + +#include "ConsattApp/CsaLinkLockCtrlFMC25RapidX.h" +#include "Consatt-doocs/Doocs_CsaAdapter.h" + + +#define LINKS_AMOUNT 4 + +#define CODE_CSA_LINK_LOCK_CTRL_RAPIDX_FMC25_SERVER 5650 + + +//void sig_usr1_zmq_cb_for_laser_lock_server(void *, EqData *, dmsg_info_t *); + + +class EqLinkLockCtrlFMC25RapidXServer : public EqFct { +protected: //filds + + //ZMQ communication for X2timer + //D_zmqstring sig_usr1_name_zmq; + //D_int _triggerSource; + + DoocsHelper _helper; + +public: + + boost::shared_ptr <Doocs_CsaAppManager> appManager; + + + EqLinkLockCtrlFMC25RapidXServer(); + virtual ~EqLinkLockCtrlFMC25RapidXServer(); + virtual int fct_code(); + void update(); + void init(); + + void interrupt_usr1(int sig_no); + void interrupt_usr1_core(dmsg_info_t *msginfo); + void post_init(void); + static int conf_done; +}; + + +#endif /* EQ_LSU_TEST_SERVER */ + diff --git a/include/EqLinkLockCtrlFMC25VhdlServer.h b/include/EqLinkLockCtrlFMC25VhdlServer.h new file mode 100644 index 0000000..755b2dd --- /dev/null +++ b/include/EqLinkLockCtrlFMC25VhdlServer.h @@ -0,0 +1,58 @@ +/* + * File: Dma_read_dummy.h + * Author: tsk + * + * Created on September 25, 2014, 2:34 PM + */ + +#ifndef EQ_LINK_LOCK_CTRL_VHDL_FMC25_SERVER +#define EQ_LINK_LOCK_CTRL_VHDL_FMC25_SERVER + + + +#include "eq_fct.h" +#include "eq_client.h" + +#include "DoocsHelper.h" + + +#include "Consatt-doocs/Doocs_CsaAdapter.h" + + +#define LINKS_AMOUNT 4 + +#define CODE_CSA_LINK_LOCK_CTRL_VHDL_FMC25_SERVER 5660 + + +//void sig_usr1_zmq_cb_for_laser_lock_server(void *, EqData *, dmsg_info_t *); + + +class EqLinkLockCtrlFMC25VhdlServer : public EqFct { +protected: //filds + + //ZMQ communication for X2timer + //D_zmqstring sig_usr1_name_zmq; + //D_int _triggerSource; + + DoocsHelper _helper; + +public: + + boost::shared_ptr <Doocs_CsaAppManager> appManager; + + + EqLinkLockCtrlFMC25VhdlServer(); + virtual ~EqLinkLockCtrlFMC25VhdlServer(); + virtual int fct_code(); + void update(); + void init(); + + void interrupt_usr1(int sig_no); + void interrupt_usr1_core(dmsg_info_t *msginfo); + void post_init(void); + static int conf_done; +}; + + +#endif /* EQ_LSU_TEST_SERVER */ + diff --git a/include/EqLinkLockServer.h b/include/EqLinkLockServer.h new file mode 100644 index 0000000..8be55b6 --- /dev/null +++ b/include/EqLinkLockServer.h @@ -0,0 +1,58 @@ +/* + * File: Dma_read_dummy.h + * Author: tsk + * + * Created on September 25, 2014, 2:34 PM + */ + +#ifndef EQ_LSU_TEST_SERVER +#define EQ_LSU_TEST_SERVER + + + +#include "eq_fct.h" +#include "eq_client.h" + + +#include "ConsattApp/CsaLinkLock.h" +#include "Consatt-doocs/Doocs_CsaAdapter.h" +#include "DoocsHelper.h" + + +#define LINKS_AMOUNT 4 + +#define CODE_CSA_LINK_LOCK_SERVER 5600 + +#define DMA_TRANSFER_DATA_AMOUNT 262144 + +void sig_usr1_zmq_cb_for_laser_lock_server(void *, EqData *, dmsg_info_t *); + + +class EqLinkLockServer : public EqFct { +protected: //filds + + //ZMQ communication for X2timer + //D_zmqstring sig_usr1_name_zmq; + //D_int _triggerSource; + DoocsHelper _helper; + +public: + + boost::shared_ptr <Doocs_CsaAppManager> appManager; + + + EqLinkLockServer(); + virtual ~EqLinkLockServer(); + virtual int fct_code(); + void update(); + void init(); + + void interrupt_usr1(int sig_no); + void interrupt_usr1_core(dmsg_info_t *msginfo); + void post_init(void); + static int conf_done; +}; + + +#endif /* EQ_LSU_TEST_SERVER */ + diff --git a/include/EqLinkLockStatusServer.h b/include/EqLinkLockStatusServer.h new file mode 100644 index 0000000..e78c870 --- /dev/null +++ b/include/EqLinkLockStatusServer.h @@ -0,0 +1,57 @@ +/* + * File: Dma_read_dummy.h + * Author: tsk + * + * Created on September 25, 2014, 2:34 PM + */ + +#ifndef EQ_LASER_LOCK_STATUS_SERVER +#define EQ_LASER_LOCK_STATUS_SERVER + + + +#include "eq_fct.h" +#include "eq_client.h" + + +#include "ConsattApp/CsaLinkLockStatusValidator.h" +#include "Consatt-doocs/Doocs_CsaAdapter.h" +#include "DoocsHelper.h" + + +#define CODE_CSA_LINK_LOCK_STATUS_SERVER 7050 + + + +void sig_usr1_zmq_cb_for_link_lock_status_server(void *, EqData *, dmsg_info_t *); + + +class EqLinkLockStatusServer : public EqFct { +protected: //filds + + //ZMQ communication for X2timer + //D_zmqstring sig_usr1_name_zmq; + //D_int _triggerSource; + DoocsHelper _helper; + uint32_t _locationType; + +public: + + boost::shared_ptr <Doocs_CsaAppManager> appManager; + + + EqLinkLockStatusServer(); + virtual ~EqLinkLockStatusServer(); + virtual int fct_code(); + void update(); + void init(); + + void interrupt_usr1(int sig_no); + void interrupt_usr1_core(dmsg_info_t *msginfo); + void post_init(void); + static int conf_done; +}; + + +#endif /* EQ_LOCK_STATUS_SERVER */ + diff --git a/include/EqLllDataHubServer.h b/include/EqLllDataHubServer.h new file mode 100644 index 0000000..9f00eec --- /dev/null +++ b/include/EqLllDataHubServer.h @@ -0,0 +1,56 @@ +/* + * File: Dma_read_dummy.h + * Author: tsk + * + * Created on September 25, 2014, 2:34 PM + */ + +#ifndef EQ_LLL_DATA_HUB_SERVER +#define EQ_LLL_DATA_HUB_SERVER + + + +#include "eq_fct.h" +#include "eq_client.h" + + +#include "ConsattApp/CsaLllDataHub.h" +#include "Consatt-doocs/Doocs_CsaAdapter.h" + + +#define LINKS_AMOUNT 4 + +#define CODE_CSA_LLL_DATA_HUB_SERVER 5800 + +#define DMA_TRANSFER_DATA_AMOUNT 262144 + +void sig_usr1_zmq_cb_for_laser_lock_server(void *, EqData *, dmsg_info_t *); + + +class EqLllDataHubServer : public EqFct { +protected: //filds + + //ZMQ communication for X2timer + D_zmqstring sig_usr1_name_zmq; + D_int _triggerSource; + +public: + + boost::shared_ptr <Doocs_CsaAppManager> appManager; + + + EqLllDataHubServer(); + virtual ~EqLllDataHubServer(); + virtual int fct_code(); + void update(); + void init(); + + void interrupt_usr1(int sig_no); + void interrupt_usr1_core(dmsg_info_t *msginfo); + void post_init(void); + static int conf_done; +}; + + +#endif /* EQ_LLL_DATA_HUB_SERVER */ + diff --git a/linklock_rpc_server.cc b/linklock_rpc_server.cc index 07f6681..c82346e 100644 --- a/linklock_rpc_server.cc +++ b/linklock_rpc_server.cc @@ -3,7 +3,6 @@ #include "EqLinkLockServer.h" #include "EqCsaLSynchFmc20.h" -#include "EqCsaTecController.h" #include "EqLllDataHubServer.h" #include "EqLinkLockCtrlFMC25RapidXServer.h" #include "EqLinkLockCtrlFMC25VhdlServer.h" diff --git a/src/DoocsHelper.cc b/src/DoocsHelper.cc new file mode 100644 index 0000000..9219c0d --- /dev/null +++ b/src/DoocsHelper.cc @@ -0,0 +1,253 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +#include "DoocsHelper.h" + +#include <chrono> +#include <thread> + +extern char *__progname; + +DoocsHelper::DoocsHelper(EqFct* parent) : +_parent(parent), +interruptAddressZmq("ZMQ_SIG_USR1_INT_STRING", parent), +watchdogAddress("DOOCS_WATCHDOG_ADDRESS", parent), +x2timerAddress("DOOCS_X2TIMER_ADDRESS", parent), +mchAddress("DOOCS_MCH_ADDRESS", parent), +triggerSource("MAIN_LOOP_TRIGGER_SOURCE", parent), + +_logFileTail("HELPER.LOG_FILE_TAIL", parent), +_logFileTailLineNumber("HELPER.LOG_FILE_TAIL_LINES_NO", parent), +_logFileTailLineNumberAutoUpdate("HELPER.LOG_FILE_TAIL_AUTOUPDATE_ON", parent), +_logFileFilterStart("HELPER.LOG_FILE_FILT_START_TIME", parent), +_logFileFilterEnd("HELPER.LOG_FILE_FILT_END_TIME", parent), + +_logFileMaxSizeKb("HELPER.LOG_FILE_MAX_SIZE_KB", parent), +_logFileCurrentSize("HELPER.LOG_FILE_SIZE_KB", parent), +_logFileTruncateFactor("HELPER.LOG_TRIM_FACTOR", parent), + + +_autoupdateCnt(0), + +_cmd("HELPER.CMD", parent){ +} + + +void DoocsHelper::update() { + auto cmd = _cmd.value(); + _cmd.set_value(0); + + if (cmd == 1) { + loadLogFileTail(); + _autoupdateCnt = 0; + } + + if (cmd == 2) { + loadLogFileWithTimeFilter(); + _autoupdateCnt = 0; + } + + + if (_logFileTailLineNumberAutoUpdate.value()) { + _autoupdateCnt++; + if (_autoupdateCnt == 20) { + loadLogFileTail(); + _autoupdateCnt = 0; + } + } + + if (_updateCnt%50==0) { + trimLogFile(); + } + + _updateCnt++; +} + +int DoocsHelper::fileSize(const std::string file) { + //auto time_start = std::chrono::high_resolution_clock::now(); + std::ifstream logFile; + logFile.open(file.c_str(), ios_base::binary); + if (logFile.is_open()) { + logFile.seekg(0, ios_base::end); + int size = logFile.tellg(); + logFile.close(); + //std::cout << "DoocsHelper::fileLinesNo::Size measure took[ms]: " << std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - time_start).count() << std::endl; + return (size / 1024); + } + return 0; +} + +int DoocsHelper::fileLinesNo(const std::string file) { + //auto time_start = std::chrono::high_resolution_clock::now(); + std::ifstream logFile(file.c_str()); + std::string line; + if (logFile.is_open()) { + int i = 0; + for (i = 0; std::getline(logFile, line); ++i); + logFile.close(); + //std::cout << "DoocsHelper::fileLinesNo::Line cnt took[ms]: " << std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - time_start).count() << std::endl; + return i; + } + return 0; +} + +void DoocsHelper::trimLogFile() { + //set default + if (_logFileMaxSizeKb.value()==0) + _logFileMaxSizeKb.set_value(102400); // 100MB (100*1024kB) + if (_logFileTruncateFactor.value()==0) + _logFileTruncateFactor.set_value(0.7); + + //check currnet file size and number of lines + std::string logFileName = std::string(__progname) + ".log"; + _logFileCurrentSize.set_value(fileSize(logFileName)); + + //if max size is 0 or lower trimming is OFF + if (_logFileMaxSizeKb.value() > 0) { + //only file biger that 1024 (1MB) can be trimmed + if (_logFileMaxSizeKb.value() < 1024) + _logFileMaxSizeKb.set_value(1024); + + if (_logFileTruncateFactor.value() > 0.9) + _logFileTruncateFactor.set_value(0.9); + else if (_logFileTruncateFactor.value() < 0.1) + _logFileTruncateFactor.set_value(0.1); + + if (_logFileCurrentSize.value() > _logFileMaxSizeKb.value()) { + std::thread t1(std::thread(&DoocsHelper::trimLogFileCore, this)); + t1.detach(); + } + } +} + +void DoocsHelper::trimLogFileCore() { + auto time_start = std::chrono::high_resolution_clock::now(); + + + std::string logFileName = std::string(__progname) + ".log"; + std::string tempFileName(logFileName + std::string(".tmp")); + std::fstream logFile(logFileName.c_str(), std::fstream::in); + std::fstream logFileTemp(tempFileName.c_str(), std::fstream::out | std::fstream::app); + + + int oldSizeKb = _logFileCurrentSize.value(); + int oldLinesNo = fileLinesNo(logFileName); + std::cout << "DoocsHelper::trimLogFileCore: Current size [kB]: " << _logFileCurrentSize.value() << " Max size [kB]: " << _logFileMaxSizeKb.value() << ", trim factor: " << _logFileTruncateFactor.value() << std::endl; + + int newLinesNo = oldLinesNo * _logFileTruncateFactor.value(); + int newLinesNoCnt = 0; + + std::string line; + if (logFile.is_open() && logFileTemp.is_open()) { + for (int i = 0; std::getline(logFile, line); ++i) { + if (i > (oldLinesNo - newLinesNo)) { + newLinesNoCnt++; + logFileTemp << line << std::endl; + } + } + + + //close both files + logFile.close(); + logFileTemp.close(); + //reopen files in different mode + std::fstream logFile(logFileName.c_str(), std::fstream::out | std::fstream::trunc); + std::fstream logFileTemp(tempFileName.c_str(), std::fstream::in ); + + //rewrite temporary file to log file + if (logFile.is_open() && logFileTemp.is_open()) + while (std::getline(logFileTemp, line)) + logFile << line << std::endl; + //close them again + logFile.close(); + logFileTemp.close(); + //remove temp file + if (remove(tempFileName.c_str()) != 0) + std::cout << "DoocsHelper::trimLogFileCore: Error deleting temporary file: " << tempFileName << std::endl; + + std::cout << "DoocsHelper::trimLogFileCore: Old log file size[kb]: " << oldSizeKb << " , new file size[kb]: " << fileSize(logFileName) << std::endl; + std::cout << "DoocsHelper::trimLogFileCore: Old log file lines: " << oldLinesNo << " , new file lines: " << newLinesNoCnt << std::endl; + std::cout << "DoocsHelper::trimLogFileCore: Truncation took[ms]: " << std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - time_start).count() << std::endl << std::endl; + + } +} + + +void DoocsHelper::loadLogFileTail() { + auto time_start = std::chrono::high_resolution_clock::now(); + std::ostringstream ss; + if (_logFileTailLineNumber.value() > 4000) + _logFileTailLineNumber.set_value(4000); + else if (_logFileTailLineNumber.value() < 50) + _logFileTailLineNumber.set_value(50); + + + ss << _logFileTailLineNumber.value(); + + std::string command = "tail -" + ss.str() + " " + std::string(__progname) + ".log > temp.log.txt"; + auto result = std::system(command.c_str()); + if (result == 0) { + //std::cout << "Command is: " << command << ", command result: " << result << std::endl; + ss.str(""); + ss << std::ifstream("temp.log.txt").rdbuf(); + _logFileTail.set_value(ss.str()); + std::system("rm -f ./temp.log.txt"); + } else { + std::cout << "Command: " << command << " failed, command result: " << result << std::endl; + } + + auto readTimeMs = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - time_start).count(); + if (readTimeMs > 20) + std::cout << "DoocsHelper::loadLogFileTail: Warning. Loading " << _logFileTailLineNumber.value() << " lines took[ms]: " << readTimeMs << std::endl; + +} + +void DoocsHelper::loadLogFileWithTimeFilter() { + std::ifstream file; + std::string filePath = std::string(__progname) + ".log"; + file.open(filePath.c_str(), std::ios::in); + + if (file.is_open()) { + time_t startTime = _logFileFilterStart.value(); + time_t stopTime = _logFileFilterEnd.value(); + + std::string currentLine(""); + std::string logNewText(""); + int matchedLineCnt = 0; + int maxLines = _logFileTailLineNumber.value(); + if (maxLines == 0 || maxLines > 5000) { + maxLines = 5000; + } + int lineCnt = 0; + int lineCnt1 = 0; + std::cout << "startTime: " << startTime << " , endTime: " << stopTime << std::endl; + + while (matchedLineCnt < _logFileTailLineNumber.value() && std::getline(file, currentLine)) { + if (currentLine.length() > 20) { + time_t currentMarkerTime = getTimeFromMarker(currentLine.substr(0, 19).c_str()); + if (currentMarkerTime >= startTime && currentMarkerTime <= stopTime) { + logNewText += (currentLine + "\n"); + matchedLineCnt++; + } + lineCnt1++; + } + lineCnt++; + } + _logFileTail.set_value(logNewText); + file.close(); + + + std::cout << "Logfile line cnt: " << lineCnt << " , longer than 20 chars: " << lineCnt1 << " , matched lines" << matchedLineCnt <<"\n"; + } + +} + +time_t DoocsHelper::getTimeFromMarker(const char* theTime, const char* format) { + std::tm tmTime; + memset(&tmTime, 0, sizeof(tmTime)); + strptime(theTime, format, &tmTime); + return mktime(&tmTime); +} \ No newline at end of file diff --git a/src/EqCsaLSynchFmc20.cc b/src/EqCsaLSynchFmc20.cc new file mode 100644 index 0000000..8a20f2d --- /dev/null +++ b/src/EqCsaLSynchFmc20.cc @@ -0,0 +1,86 @@ + +#include "EqCsaLSynchFmc20.h" +#include <chrono> + +int EqCsaLSynchFmc20::fct_code() { + return CODE_CSA_LSYNCH_FMC20_SERVER; +} + + +EqCsaLSynchFmc20::EqCsaLSynchFmc20() : +EqFct("NAME = location"), +_helper(this) +//sig_usr1_name_zmq("ZMQ_SIG_USR1_INT_STRING", this), +//_triggerSource("MAIN_LOOP_TRIGGER_SOURCE", this) +{ + printftostderr("EqCsaLSynchFmc20::EqCsaLSynchFmc20()", "Location: %s, Start of DOOCS server constructor.", EqFct::name().c_str()); + Doocs_CsaAdapter::getInstance().setParent(this); + appManager = Doocs_CsaAdapter::getInstance().createApplicationManager( new CsaLSynchFmc20(std::string(EqFct::name())) ); + appManager->create(); + printftostderr("EqCsaLSynchFmc20::EqCsaLSynchFmc20()", "Location: %s, End of DOOCS server constructor.", EqFct::name().c_str()); +} + + + +void EqCsaLSynchFmc20::init() { + appManager->init(); + online(); +} + +void EqCsaLSynchFmc20::update() { + if (_helper.triggerSource.value() != 0) { + Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(); + appManager->execute(); + _helper.update(); + } + g_sts_.error(0); + + g_sts_.newerror(0); + g_sts_.online(1); + +} + +void EqCsaLSynchFmc20::interrupt_usr1_core(dmsg_info_t *msginfo) { + if (_helper.triggerSource.value() == 0) { + Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(msginfo); + appManager->execute(); + _helper.update(); + } +} + + +EqCsaLSynchFmc20::~EqCsaLSynchFmc20() { +} + + +void EqCsaLSynchFmc20::interrupt_usr1(int sig_no) { + +} + + +int EqCsaLSynchFmc20::conf_done = 0; + + + +void sig_usr1_zmq_cb_for_lbsynch_fmc20_server(void *pp, EqData *dp, dmsg_info_t *ip) { + + EqCsaLSynchFmc20* location = (EqCsaLSynchFmc20*) pp; + if (location) { + location->interrupt_usr1_core(ip); + } + +} + +void EqCsaLSynchFmc20::post_init(void) { + printftostderr("EqCsaLSynchFmc20::post_init()", "Location: %s.", name_.value()); + printftostderr("EqCsaLSynchFmc20::post_init()", "Location: %s, Attach to ZMQ system for x2timer.", name_.value()); + _helper.interruptAddressZmq.attach(sig_usr1_zmq_cb_for_lbsynch_fmc20_server); + + std::ostringstream doocsParrentUniqueId; + doocsParrentUniqueId << this; + Doocs_CsaAdapter::getInstance().applyExposePolicy(doocsParrentUniqueId.str()); +} + + + + diff --git a/src/EqLinkLockCtrlFMC25RapidXServer.cc b/src/EqLinkLockCtrlFMC25RapidXServer.cc new file mode 100644 index 0000000..2bd4ff1 --- /dev/null +++ b/src/EqLinkLockCtrlFMC25RapidXServer.cc @@ -0,0 +1,93 @@ + +#include "EqLinkLockCtrlFMC25RapidXServer.h" +#include <chrono> + +int EqLinkLockCtrlFMC25RapidXServer::fct_code() { + return CODE_CSA_LINK_LOCK_CTRL_RAPIDX_FMC25_SERVER; +} + + +EqLinkLockCtrlFMC25RapidXServer::EqLinkLockCtrlFMC25RapidXServer() : +EqFct("NAME = location"), +_helper(this) +//sig_usr1_name_zmq("ZMQ_SIG_USR1_INT_STRING", this), +//_triggerSource("MAIN_LOOP_TRIGGER_SOURCE", this) +{ + printftostderr("EqLinkLockCtrlFMC25RapidXServer::EqLinkLockCtrlFMC25RapidXServer()", "Location: %s, Start of DOOCS server constructor.", EqFct::name().c_str()); + Doocs_CsaAdapter::getInstance().setParent(this); + appManager = Doocs_CsaAdapter::getInstance().createApplicationManager( new CsaLinkLockCtrlFMC25RapidX(std::string(EqFct::name())) ); + appManager->create(); + printftostderr("EqLinkLockCtrlFMC25RapidXServer::EqLinkLockCtrlFMC25RapidXServer()", "Location: %s, End of DOOCS server constructor.", EqFct::name().c_str()); +} + + + +void EqLinkLockCtrlFMC25RapidXServer::init() { + appManager->init(); + online(); +} + +void EqLinkLockCtrlFMC25RapidXServer::update() { + //std::cout << "EqLinkLockCtrlFMC25RapidXServer::update(): Return from update" << std::endl; + //return; + + if (_helper.triggerSource.value() != 0) { + Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(); + appManager->execute(); + _helper.update(); + } + + + g_sts_.error(0); + + g_sts_.newerror(0); + g_sts_.online(1); + +} + +void EqLinkLockCtrlFMC25RapidXServer::interrupt_usr1_core(dmsg_info_t *msginfo) { + //std::cout << "EqLinkLockCtrlFMC25RapidXServer::interrupt_usr1_core(): Return from interupt" << std::endl; + //return; + + if (_helper.triggerSource.value() == 0) { + Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(msginfo); + appManager->execute(); + _helper.update(); + } +} + + +EqLinkLockCtrlFMC25RapidXServer::~EqLinkLockCtrlFMC25RapidXServer() { +} + + +void EqLinkLockCtrlFMC25RapidXServer::interrupt_usr1(int sig_no) { + +} + + +int EqLinkLockCtrlFMC25RapidXServer::conf_done = 0; + + + +void sig_usr1_zmq_cb_for_link_lock_ctrl_rapidx_fmc25_server(void *pp, EqData *dp, dmsg_info_t *ip) { + + EqLinkLockCtrlFMC25RapidXServer* location = (EqLinkLockCtrlFMC25RapidXServer*) pp; + if (location) { + location->interrupt_usr1_core(ip); + } +} + +void EqLinkLockCtrlFMC25RapidXServer::post_init(void) { + printftostderr("EqLinkLockCtrlFMC25RapidXServer::post_init()", "Location: %s.", name_.value()); + printftostderr("EqLinkLockCtrlFMC25RapidXServer::post_init()", "Location: %s, Attach to ZMQ system for x2timer.", name_.value()); + //sig_usr1_name_zmq.attach(sig_usr1_zmq_cb_for_link_lock_ctrl_rapidx_fmc25_server); + _helper.interruptAddressZmq.attach(sig_usr1_zmq_cb_for_link_lock_ctrl_rapidx_fmc25_server); + + std::ostringstream doocsParrentUniqueId; + doocsParrentUniqueId << this; + Doocs_CsaAdapter::getInstance().applyExposePolicy(doocsParrentUniqueId.str()); +} + + + diff --git a/src/EqLinkLockCtrlFMC25VhdlServer.cc b/src/EqLinkLockCtrlFMC25VhdlServer.cc new file mode 100644 index 0000000..9c86911 --- /dev/null +++ b/src/EqLinkLockCtrlFMC25VhdlServer.cc @@ -0,0 +1,93 @@ + +#include "EqLinkLockCtrlFMC25VhdlServer.h" +#include "ConsattApp/CsaLinkLockCtrlFMC25Vhdl.h" +#include <chrono> + +int EqLinkLockCtrlFMC25VhdlServer::fct_code() { + return CODE_CSA_LINK_LOCK_CTRL_VHDL_FMC25_SERVER; +} + +EqLinkLockCtrlFMC25VhdlServer::EqLinkLockCtrlFMC25VhdlServer() : +EqFct("NAME = location"), +_helper(this) +//sig_usr1_name_zmq("ZMQ_SIG_USR1_INT_STRING", this), +//_triggerSource("MAIN_LOOP_TRIGGER_SOURCE", this) +{ + printftostderr("EqLinkLockCtrlFMC25VhdlServer::EqLinkLockCtrlFMC25VhdlServer()", "Location: %s, Start of DOOCS server constructor.", EqFct::name().c_str()); + Doocs_CsaAdapter::getInstance().setParent(this); + appManager = Doocs_CsaAdapter::getInstance().createApplicationManager(new CsaLinkLockCtrlFMC25Vhdl(std::string(EqFct::name()))); + appManager->create(); + printftostderr("EqLinkLockCtrlFMC25VhdlServer::EqLinkLockCtrlFMC25VhdlServer()", "Location: %s, End of DOOCS server constructor.", EqFct::name().c_str()); +} + + + +void EqLinkLockCtrlFMC25VhdlServer::init() { + appManager->init(); + online(); +} + +void EqLinkLockCtrlFMC25VhdlServer::update() { + //std::cout << "EqLinkLockCtrlFMC25VhdlServer::update(): Return from update" << std::endl; + //return; + + if (_helper.triggerSource.value() != 0) { + Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(); + appManager->execute(); + _helper.update(); + } + + + g_sts_.error(0); + + g_sts_.newerror(0); + g_sts_.online(1); + +} + +void EqLinkLockCtrlFMC25VhdlServer::interrupt_usr1_core(dmsg_info_t *msginfo) { + //std::cout << "EqLinkLockCtrlFMC25VhdlServer::interrupt_usr1_core(): Return from interupt" << std::endl; + //return; + + if (_helper.triggerSource.value() == 0) { + Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(msginfo); + appManager->execute(); + _helper.update(); + } +} + + +EqLinkLockCtrlFMC25VhdlServer::~EqLinkLockCtrlFMC25VhdlServer() { +} + + +void EqLinkLockCtrlFMC25VhdlServer::interrupt_usr1(int sig_no) { + +} + + +int EqLinkLockCtrlFMC25VhdlServer::conf_done = 0; + + + +void sig_usr1_zmq_cb_for_link_lock_ctrl_vhdl_fmc25_server(void *pp, EqData *dp, dmsg_info_t *ip) { + + EqLinkLockCtrlFMC25VhdlServer* location = (EqLinkLockCtrlFMC25VhdlServer*) pp; + if (location) { + location->interrupt_usr1_core(ip); + } +} + +void EqLinkLockCtrlFMC25VhdlServer::post_init(void) { + printftostderr("EqLinkLockCtrlFMC25VhdlServer::post_init()", "Location: %s.", name_.value()); + printftostderr("EqLinkLockCtrlFMC25VhdlServer::post_init()", "Location: %s, Attach to ZMQ system for x2timer.", name_.value()); + //sig_usr1_name_zmq.attach(sig_usr1_zmq_cb_for_link_lock_ctrl_rapidx_fmc25_server); + _helper.interruptAddressZmq.attach(sig_usr1_zmq_cb_for_link_lock_ctrl_vhdl_fmc25_server); + + std::ostringstream doocsParrentUniqueId; + doocsParrentUniqueId << this; + Doocs_CsaAdapter::getInstance().applyExposePolicy(doocsParrentUniqueId.str()); +} + + + diff --git a/src/EqLinkLockServer.cc b/src/EqLinkLockServer.cc new file mode 100644 index 0000000..3446462 --- /dev/null +++ b/src/EqLinkLockServer.cc @@ -0,0 +1,91 @@ + +#include "EqLinkLockServer.h" +#include <chrono> + +int EqLinkLockServer::fct_code() { + return CODE_CSA_LINK_LOCK_SERVER; +} + +EqLinkLockServer::EqLinkLockServer() : +EqFct("NAME = location"), +_helper(this) +//sig_usr1_name_zmq("ZMQ_SIG_USR1_INT_STRING", this), +//_triggerSource("MAIN_LOOP_TRIGGER_SOURCE", this) +{ + printftostderr("EqLinkLockServer::EqLinkLockServer()", "Location: %s, Start of DOOCS server constructor.", EqFct::name().c_str()); + Doocs_CsaAdapter::getInstance().setParent(this); + appManager = Doocs_CsaAdapter::getInstance().createApplicationManager(new CsaLinkLock(std::string(EqFct::name()))); + appManager->create(); + printftostderr("EqLinkLockServer::EqLinkLockServer()", "Location: %s, End of DOOCS server constructor.", EqFct::name().c_str()); +} + + + +void EqLinkLockServer::init() { + appManager->init(); + online(); +} + +void EqLinkLockServer::update() { + //std::cout << "EqLinkLockServer::update(): Return from update" << std::endl; + //return; + + if (_helper.triggerSource.value() != 0) { + Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(); + appManager->execute(); + _helper.update(); + } + + + g_sts_.error(0); + + g_sts_.newerror(0); + g_sts_.online(1); + +} + +void EqLinkLockServer::interrupt_usr1_core(dmsg_info_t *msginfo) { + //std::cout << "EqLinkLockServer::interrupt_usr1_core(): Return from interupt" << std::endl; + //return; + + if (_helper.triggerSource.value() == 0) { + Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(msginfo); + appManager->execute(); + _helper.update(); + } +} + + +EqLinkLockServer::~EqLinkLockServer() { +} + + +void EqLinkLockServer::interrupt_usr1(int sig_no) { + +} + + +int EqLinkLockServer::conf_done = 0; + + + +void sig_usr1_zmq_cb_for_link_lock_server(void *pp, EqData *dp, dmsg_info_t *ip) { + + EqLinkLockServer* location = (EqLinkLockServer*) pp; + if (location) { + location->interrupt_usr1_core(ip); + } +} + +void EqLinkLockServer::post_init(void) { + printftostderr("EqLinkLockServer::post_init()", "Location: %s.", name_.value()); + printftostderr("EqLinkLockServer::post_init()", "Location: %s, Attach to ZMQ system for x2timer.", name_.value()); + _helper.interruptAddressZmq.attach(sig_usr1_zmq_cb_for_link_lock_server); + + std::ostringstream doocsParrentUniqueId; + doocsParrentUniqueId << this; + Doocs_CsaAdapter::getInstance().applyExposePolicy(doocsParrentUniqueId.str()); +} + + + diff --git a/src/EqLinkLockStatusServer.cc b/src/EqLinkLockStatusServer.cc new file mode 100644 index 0000000..4abd203 --- /dev/null +++ b/src/EqLinkLockStatusServer.cc @@ -0,0 +1,89 @@ + +#include "EqLinkLockStatusServer.h" +#include <chrono> + +int EqLinkLockStatusServer::fct_code() { + return CODE_CSA_LINK_LOCK_STATUS_SERVER; +} + +EqLinkLockStatusServer::EqLinkLockStatusServer() : +EqFct("NAME = location"), +_helper(this) +{ + printftostderr("EqLinkLockStatusServer::EqLinkLockStatusServer()", "Location: %s, Start of DOOCS server constructor.", EqFct::name().c_str()); + Doocs_CsaAdapter::getInstance().setParent(this); + appManager = Doocs_CsaAdapter::getInstance().createApplicationManager(new CsaLinkLockStatusValidator(std::string(EqFct::name()))); + appManager->create(); + printftostderr("EqLinkLockStatusServer::EqLinkLockStatusServer()", "Location: %s, End of DOOCS server constructor.", EqFct::name().c_str()); +} + + + +void EqLinkLockStatusServer::init() { + appManager->init(); + online(); +} + +void EqLinkLockStatusServer::update() { + //std::cout << "EqLinkLockStatusServer::update(): Return from update" << std::endl; + //return; + + if (_helper.triggerSource.value() != 0) { + Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(); + appManager->execute(); + _helper.update(); + } + + + g_sts_.error(0); + + g_sts_.newerror(0); + g_sts_.online(1); + +} + +void EqLinkLockStatusServer::interrupt_usr1_core(dmsg_info_t *msginfo) { + //std::cout << "EqLinkLockStatusServer::interrupt_usr1_core(): Return from interupt" << std::endl; + //return; + + if (_helper.triggerSource.value() == 0) { + Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(msginfo); + appManager->execute(); + _helper.update(); + } +} + + +EqLinkLockStatusServer::~EqLinkLockStatusServer() { +} + + +void EqLinkLockStatusServer::interrupt_usr1(int sig_no) { + +} + + +int EqLinkLockStatusServer::conf_done = 0; + + + +void sig_usr1_zmq_cb_for_link_lock_status_server(void *pp, EqData *dp, dmsg_info_t *ip) { + + EqLinkLockStatusServer* location = (EqLinkLockStatusServer*) pp; + if (location) { + location->interrupt_usr1_core(ip); + } +} + +void EqLinkLockStatusServer::post_init(void) { + printftostderr("EqLinkLockStatusServer::post_init()", "Location: %s.", name_.value()); + printftostderr("EqLinkLockStatusServer::post_init()", "Location: %s, Attach to ZMQ system for x2timer.", name_.value()); + _helper.interruptAddressZmq.attach(sig_usr1_zmq_cb_for_link_lock_status_server); + + std::ostringstream doocsParrentUniqueId; + doocsParrentUniqueId << this; + Doocs_CsaAdapter::getInstance().applyExposePolicy(doocsParrentUniqueId.str()); +} + + + diff --git a/src/EqLllDataHubServer.cc b/src/EqLllDataHubServer.cc new file mode 100644 index 0000000..957c133 --- /dev/null +++ b/src/EqLllDataHubServer.cc @@ -0,0 +1,88 @@ + +#include "EqLllDataHubServer.h" +#include <chrono> + +int EqLllDataHubServer::fct_code() { + return CODE_CSA_LLL_DATA_HUB_SERVER; +} + + +EqLllDataHubServer::EqLllDataHubServer() : +EqFct("NAME = location"), +sig_usr1_name_zmq("ZMQ_SIG_USR1_INT_STRING", this), +_triggerSource("MAIN_LOOP_TRIGGER_SOURCE", this) { + printftostderr("EqLllDataHubServer::EqLllDataHubServer()", "Location: %s, Start of DOOCS server constructor.", EqFct::name().c_str()); + Doocs_CsaAdapter::getInstance().setParent(this); + appManager = Doocs_CsaAdapter::getInstance().createApplicationManager( new CsaLllDataHub(std::string(EqFct::name())) ); + appManager->create(); + printftostderr("EqLllDataHubServer::EqLllDataHubServer()", "Location: %s, End of DOOCS server constructor.", EqFct::name().c_str()); +} + + + +void EqLllDataHubServer::init() { + appManager->init(); + online(); +} + +void EqLllDataHubServer::update() { + //std::cout << "EqLllDataHubServer::update(): Return from update" << std::endl; + //return; + + if (_triggerSource.value() != 0) { + Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(); + appManager->execute(); + } + + + g_sts_.error(0); + + g_sts_.newerror(0); + g_sts_.online(1); + +} + +void EqLllDataHubServer::interrupt_usr1_core(dmsg_info_t *msginfo) { + //std::cout << "EqLllDataHubServer::interrupt_usr1_core(): Return from interupt" << std::endl; + //return; + + if (_triggerSource.value() == 0) { + Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(msginfo); + appManager->execute(); + } +} + + +EqLllDataHubServer::~EqLllDataHubServer() { +} + + +void EqLllDataHubServer::interrupt_usr1(int sig_no) { + +} + + +int EqLllDataHubServer::conf_done = 0; + + + +void sig_usr1_zmq_cb_for_lll_data_hub_server(void *pp, EqData *dp, dmsg_info_t *ip) { + + EqLllDataHubServer* location = (EqLllDataHubServer*) pp; + if (location) { + location->interrupt_usr1_core(ip); + } +} + +void EqLllDataHubServer::post_init(void) { + printftostderr("EqLllDataHubServer::post_init()", "Location: %s.", name_.value()); + printftostderr("EqLllDataHubServer::post_init()", "Location: %s, Attach to ZMQ system for x2timer.", name_.value()); + sig_usr1_name_zmq.attach(sig_usr1_zmq_cb_for_lll_data_hub_server); + + std::ostringstream doocsParrentUniqueId; + doocsParrentUniqueId << this; + Doocs_CsaAdapter::getInstance().applyExposePolicy(doocsParrentUniqueId.str()); +} + + + -- GitLab