Compare commits
9 Commits
mocha-1.3.
...
cafe-1.8.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 0343a1e1e3 | |||
| 09085d814c | |||
| 624d52d419 | |||
| 558222585f | |||
| 2e7abe48eb | |||
| f351a0d5bb | |||
| e31fed82be | |||
| 0aeb952d62 | |||
| 6dfd64a9a3 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,5 +1,9 @@
|
||||
*~
|
||||
*.bak
|
||||
*.*-
|
||||
SL6-x86_64
|
||||
windows-x64
|
||||
felix-cache
|
||||
readme.txt
|
||||
makefile_rel*
|
||||
*.*.orig
|
||||
|
||||
2
README
2
README
@@ -1,5 +1,3 @@
|
||||
USE makefile_rel_2014_manual for release versio
|
||||
|
||||
|
||||
## --------------------------------------------------------------------------
|
||||
## makefile
|
||||
|
||||
16
exampleNew.m
16
exampleNew.m
@@ -38,7 +38,7 @@
|
||||
% To run this test script, first create 5 soft channels of the given class.
|
||||
% pv(1:2) are scalar numerics, pv(3) is a wf, pv(4) is a mbbo record (enum),
|
||||
% pv(5) is a dbr_string_t, pv(6) does not exist
|
||||
pv={'ARIDI-BPM-01LE:X-AVG','ARIDI-BPM-01LE:Y-AVG','ARIDI-BPM-01LE:WF-INT-2','ARIDI-BPM-01LE:SET-ENABLE','ARIDI-BPM-01LE:SET-ENABLE.DESC','PV-JOKE'};
|
||||
pv={'ARIDI-BPM-01LE:X-AVG','ARIDI-BPM-01LE:Y-AVG','ARIDI-BPM-01LE:WF-INT-2','caget','ARIDI-BPM-01LE:SET-ENABLE.DESC','PV-JOKE'};
|
||||
|
||||
%
|
||||
% MATLAB's Run and Advance utility will run each of these 17 sections at the user's prompt.
|
||||
@@ -162,7 +162,7 @@ pvtable
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%(2) Simple single channel operations (and the PVData Object)
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
|
||||
@@ -245,8 +245,6 @@ pvStruct.epicsTS; %[secPastEpoch, nsec]
|
||||
%END (2) Simple single channel operations
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%(3) Understanding the Status Error Code / MATLAB Exceptions
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@@ -277,7 +275,7 @@ statusInfo = mocha ('statusInfo', status);
|
||||
%statusArray[2] returns same data as statusInfo above
|
||||
|
||||
%Status code/name pairs can be listed as follows:
|
||||
disp('Listing all possible status code value/name pairs')
|
||||
%disp('Listing all possible status code value/name pairs')
|
||||
[strVal, intVal] = mocha('statusList');
|
||||
|
||||
%Alarm conditions and alarm severities can be listed as follows:
|
||||
@@ -545,8 +543,6 @@ pvData(3).val
|
||||
%END (8) Multiple Struct operations on several PVS returning PVData Objects plus Multiple Sets for Scalars/Vectors
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%(9) Asynchronous interactions and retrieving data from Cache
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@@ -762,7 +758,7 @@ mocha('monitorFlushEvent', pv(1)); %will execute the MATLAB script monitorAction
|
||||
mocha('monitorFlushEvent'); %will execute all 'actions' for all 'handles' that have received new data
|
||||
|
||||
%The above command is used in conjunction with MATLAB timer (as for MCA's mcamontimer.m)
|
||||
obj.t = timer('TimerFcn', 'mocha(''monitorFlushEvent'')', 'Period', 2.0, 'ExecutionMode', 'fixedSpacing');
|
||||
obj.t = timer('TimerFcn', 'mocha(''monitorFlushEvent'')', 'Period', 1.0, 'ExecutionMode', 'fixedSpacing');
|
||||
%Else if double quotes cannot be used in the above; here's a way around the problem:
|
||||
%obj.t = timer('TimerFcn', 'mocha(402)', 'Period', 2.0, 'ExecutionMode', 'fixedSpacing');
|
||||
start(obj.t);
|
||||
@@ -1033,7 +1029,7 @@ setValue=0.4;
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% (17) Gracefully terminate CAFE
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
|
||||
@@ -1048,7 +1044,7 @@ mocha ('close');
|
||||
|
||||
%
|
||||
%END (17) Gracefully terminate CAFE
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
|
||||
2080
macchinettaHelper.h
2080
macchinettaHelper.h
File diff suppressed because it is too large
Load Diff
12056
macchinettaSwitch.cpp
12056
macchinettaSwitch.cpp
File diff suppressed because it is too large
Load Diff
135
makefile
Normal file
135
makefile
Normal file
@@ -0,0 +1,135 @@
|
||||
#
|
||||
# Jan Chrin
|
||||
# New Version: June 2016
|
||||
#
|
||||
# makefile to build mocha mex file
|
||||
# printenv | grep MATLAB to reveal your MATLAB Directory
|
||||
#
|
||||
# e.g. on sf-lc we have
|
||||
# MATLAB=/afs/psi.ch/sys/linux/opt/matlab/2015a.x86_64
|
||||
#
|
||||
# local executables are built in ./${EPICS_HOST_ARCH}/$(MVER)
|
||||
# where the MATLAB version is grepped from $(MATLAB)
|
||||
|
||||
MATLAB_ROOT=${MATLAB}
|
||||
MATLAB_VERSION=$(notdir $(MATLAB_ROOT))
|
||||
|
||||
##### CHANGE AS APPROPRIATE #################
|
||||
#Mocha Version to install
|
||||
MOCHA_VERSION=mocha-noqt-1.8.0-gcc-6.3.0
|
||||
#CAFE version to link to
|
||||
CAFE_VERSION=cafe-noqt-1.8.0-gcc-6.3.0
|
||||
|
||||
|
||||
EPICS_BASE=${EPICS}/base
|
||||
#CAFE project base
|
||||
CAFE_BASE=/opt/gfa/cafe
|
||||
CAFE_MOCHA_BASE=${CAFE_BASE}/mocha
|
||||
CAFE_CPP_BASE=$(CAFE_BASE)/cpp/$(CAFE_VERSION)
|
||||
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
|
||||
|
||||
|
||||
INSTALL_MOCHA_LIBDIR= $(CAFE_MOCHA_BASE)/$(MOCHA_VERSION)/lib/$(MATLAB_VERSION)
|
||||
#############################################
|
||||
|
||||
|
||||
#First deteremine if we are on a 32/64 bit machine
|
||||
#as mex file extensions are named differently
|
||||
pattern64=x86_64
|
||||
pattern32=i386
|
||||
|
||||
PWD=$(shell pwd)
|
||||
#hardware platform
|
||||
HW=$(shell uname -i)
|
||||
ifeq ($(pattern64),$(findstring $(pattern64), $(HW)))
|
||||
MEXE=mexa64
|
||||
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa64
|
||||
else
|
||||
ifeq ($(pattern32),$(findstring $(pattern32), $(HW)))
|
||||
MEXE=mexglx
|
||||
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa86
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
INSTALL_PATH?=$(INSTALL_MOCHA_LIBDIR)
|
||||
OBJ_DIR= ${EPICS_HOST_ARCH}/$(MATLAB_VERSION)
|
||||
|
||||
INCLUDEPATH_MOCHA += -I$(MATLAB_ROOT)/extern/include \
|
||||
-I$(CAFE_CPP_BASE)/include -I./ \
|
||||
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux
|
||||
|
||||
|
||||
INCLUDEPATH_MACHINETTA += $(INCLUDEPATH_MOCHA) -I$(BOOST_BASE) -I$(BOOST_BASE)/boost
|
||||
|
||||
|
||||
LIB_DIR += \
|
||||
-L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-L$(MATLAB_LIB) -Wl,-rpath,$(MATLAB_LIB)
|
||||
|
||||
|
||||
|
||||
#-lboost_system -lboost_thread-mt
|
||||
LIBS += -ldl -lca -lCom -lmx -lmex -lmat
|
||||
|
||||
LIB_INSTALL = $(LIB_DIR) -L$(INSTALL_PATH) -Wl,-rpath,$(INSTALL_PATH)
|
||||
|
||||
LIB_LOCAL = $(LIB_DIR)
|
||||
|
||||
CPP_OBJS=../cpp/src/libs/cafe/$(CAFE_VERSION_M)
|
||||
|
||||
#CAFE_OBJS_DIR = $(CPP_OBJS)/cafe.o $(CPP_OBJS)/cafeCache.o $(CPP_OBJS)/cafeGroup.o $(CPP_OBJS)/cafeVectors.o \
|
||||
# $(CPP_OBJS)/cafeXML.o $(CPP_OBJS)/callbackHandlerCreate.o $(CPP_OBJS)/callbackHandlerMonitor.o \
|
||||
# $(CPP_OBJS)/conduitGroup.o $(CPP_OBJS)/conduit.o \
|
||||
# $(CPP_OBJS)/connectCallbacks.o $(CPP_OBJS)/connectGroup.o \
|
||||
# $(CPP_OBJS)/connect.o $(CPP_OBJS)/exceptionsHelper.o $(CPP_OBJS)/granules.o $(CPP_OBJS)/handleHelper.o \
|
||||
# $(CPP_OBJS)/helper.o \
|
||||
# $(CPP_OBJS)/loadCollectionXMLParser.o $(CPP_OBJS)/loadGroupXMLParser.o $(CPP_OBJS)/methodCallbacks.o \
|
||||
# $(CPP_OBJS)/policyHelper.o \
|
||||
# $(CPP_OBJS)/restorePVGroupXMLParser.o $(CPP_OBJS)/transpose.o
|
||||
|
||||
|
||||
CAFE_OBJS_DIR = $(CAFE_BASE)/cpp/$(CAFE_VERSION)/lib/libcafe.a
|
||||
|
||||
# MATLAB Versions 2014 onwards, use
|
||||
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_LOCAL) $(LIBS)
|
||||
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_INSTALL) $(LIBS)
|
||||
|
||||
|
||||
$(OBJ_DIR)/mocha.$(MEXE): mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o
|
||||
mex -largeArrayDims CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(OBJ_DIR) -output mocha.$(MEXE) \
|
||||
$(INCLUDEPATH_MOCHA) \
|
||||
LDFLAGS='$(LIB_LOCAL) $(LIBS)'
|
||||
|
||||
|
||||
|
||||
#$(OBJ_DIR)/libmacchinetta.so: $(OBJ_DIR)/macchinettaSwitch.o
|
||||
# g++ -shared -Wl,-soname,libmacchinetta.so \
|
||||
# $(OBJ_DIR)/macchinettaSwitch.o -o $(OBJ_DIR)/libmacchinetta.so
|
||||
|
||||
|
||||
$(OBJ_DIR)/macchinettaSwitch.o: macchinettaSwitch.cpp macchinettaHelper.h \
|
||||
macchinetta.h containerMochaccino.h
|
||||
mex CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
-c macchinettaSwitch.cpp $(INCLUDEPATH_MACHINETTA) -outdir $(OBJ_DIR)
|
||||
|
||||
install: $(OBJ_DIR)/mocha.$(MEXE)
|
||||
mkdir -p $(INSTALL_PATH)
|
||||
mex CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(INSTALL_PATH) -output mocha.$(MEXE) \
|
||||
$(INCLUDEPATH_MOCHA) \
|
||||
LDFLAGS='$(LIB_INSTALL) $(LIBS)'
|
||||
cp example.m $(INSTALL_PATH)
|
||||
cp scripts/monitorAction.m $(INSTALL_PATH)
|
||||
cp scripts/pvtable.m $(INSTALL_PATH)
|
||||
cp scripts/test.xml $(INSTALL_PATH)
|
||||
|
||||
install_lib: $(OBJ_DIR)/libmacchinetta.so
|
||||
mkdir -p $(INSTALL_PATH)
|
||||
cp $(OBJ_DIR)/libmacchinetta.so $(INSTALL_PATH)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*.o $(OBJ_DIR)/*.so $(OBJ_DIR)/*.$(MEXE)
|
||||
|
||||
124
makefile_rel_1.3
124
makefile_rel_1.3
@@ -1,124 +0,0 @@
|
||||
#
|
||||
# Jan Chrin
|
||||
# New Version: June 2016
|
||||
#
|
||||
# makefile to build mocha mex file
|
||||
# printenv | grep MATLAB to reveal your MATLAB Directory
|
||||
#
|
||||
# e.g. on sf-lc we have
|
||||
# MATLAB=/afs/psi.ch/sys/linux/opt/matlab/2015a.x86_64
|
||||
#
|
||||
# local executables are built in ./${EPICS_HOST_ARCH}/$(MVER)
|
||||
# where the MATLAB version is grepped from $(MATLAB)
|
||||
|
||||
MATLAB_ROOT=${MATLAB}
|
||||
MATLAB_VERSION=$(notdir $(MATLAB_ROOT))
|
||||
|
||||
##### CHANGE AS APPROPRIATE #################
|
||||
#Mocha Version to install
|
||||
MOCHA_VERSION=mocha-1.3.0-final-2
|
||||
#CAFE version to link to
|
||||
CAFE_VERSION=cafe-1.3.0-final-2
|
||||
|
||||
|
||||
|
||||
EPICS_BASE=${EPICS}/base
|
||||
#CAFE project base
|
||||
CAFE_BASE=/opt/gfa/cafe
|
||||
CAFE_MOCHA_BASE=${CAFE_BASE}/mocha
|
||||
#CAFE_CPP_BASE=/afs/psi.ch/project/cafe/gitlab/CAFE/cpp
|
||||
CAFE_CPP_BASE=$(CAFE_BASE)/cpp/$(CAFE_VERSION)
|
||||
|
||||
|
||||
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
|
||||
BOOST_LIB=/afs/psi.ch/project/zeromq/devl/mate/deps/boost/lib
|
||||
|
||||
QT_LIB=/usr/lib64
|
||||
|
||||
INSTALL_MOCHA_LIBDIR= $(CAFE_MOCHA_BASE)/$(MOCHA_VERSION)/lib/$(MATLAB_VERSION)
|
||||
#############################################
|
||||
|
||||
|
||||
#First deteremine if we are on a 32/64 bit machine
|
||||
#as mex file extensions are named differently
|
||||
pattern64=x86_64
|
||||
pattern32=i386
|
||||
|
||||
PWD=$(shell pwd)
|
||||
#hardware platform
|
||||
HW=$(shell uname -i)
|
||||
ifeq ($(pattern64),$(findstring $(pattern64), $(HW)))
|
||||
MEXE=mexa64
|
||||
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa64
|
||||
else
|
||||
ifeq ($(pattern32),$(findstring $(pattern32), $(HW)))
|
||||
MEXE=mexglx
|
||||
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa86
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
INSTALL_PATH?=$(INSTALL_MOCHA_LIBDIR)
|
||||
OBJ_DIR= ${EPICS_HOST_ARCH}/$(MATLAB_VERSION)
|
||||
|
||||
INCLUDEPATH_MOCHA += -I$(MATLAB_ROOT)/extern/include \
|
||||
-I$(CAFE_CPP_BASE)/include -I./ \
|
||||
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux
|
||||
|
||||
|
||||
INCLUDEPATH_MACHINETTA += $(INCLUDEPATH_MOCHA) -I$(BOOST_BASE) -I$(BOOST_BASE)/boost
|
||||
|
||||
|
||||
LIB_DIR += \
|
||||
-L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-L$(MATLAB_LIB) -Wl,-rpath,$(MATLAB_LIB) \
|
||||
-L$(CAFE_CPP_BASE) \
|
||||
-Wl,-rpath,$(CAFE_CPP_BASE) \
|
||||
-L$(QT_LIB) -Wl,-rpath,$(QT_LIB)
|
||||
|
||||
|
||||
LIBS += -ldl -lca -lCom -lmx -lmex -lmat -lQtCore -lQtXml
|
||||
|
||||
LIB_INSTALL = $(LIB_DIR) -L$(INSTALL_PATH) -Wl,-rpath,$(INSTALL_PATH)
|
||||
|
||||
LIB_LOCAL = $(LIB_DIR)
|
||||
|
||||
|
||||
CAFE_OBJS_DIR = $(CAFE_BASE)/cpp/$(CAFE_VERSION)/lib/libcafe.a
|
||||
|
||||
# MATLAB Versions 2014 onwards, use
|
||||
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_LOCAL) $(LIBS)
|
||||
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_INSTALL) $(LIBS)
|
||||
|
||||
|
||||
$(OBJ_DIR)/mocha.$(MEXE): mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o
|
||||
mex -largeArrayDims GCC='/usr/bin/gcc' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(OBJ_DIR) -output mocha.$(MEXE) \
|
||||
$(INCLUDEPATH_MOCHA) \
|
||||
LDFLAGS='$(LIB_LOCAL) $(LIBS)'
|
||||
|
||||
|
||||
$(OBJ_DIR)/macchinettaSwitch.o: macchinettaSwitch.cpp macchinettaHelper.h \
|
||||
macchinetta.h containerMochaccino.h
|
||||
mex GCC='/usr/bin/g++' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
-largeArrayDims -c macchinettaSwitch.cpp $(INCLUDEPATH_MACHINETTA) -outdir $(OBJ_DIR)
|
||||
|
||||
|
||||
install: $(OBJ_DIR)/mocha.$(MEXE)
|
||||
mkdir -p $(INSTALL_PATH)
|
||||
mex -largeArrayDims GCC='/usr/bin/gcc' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(INSTALL_PATH) -output mocha.$(MEXE) \
|
||||
$(INCLUDEPATH_MOCHA) \
|
||||
LDFLAGS='$(LIB_INSTALL) $(LIBS)'
|
||||
cp example.m $(INSTALL_PATH)
|
||||
cp scripts/*.m $(INSTALL_PATH)
|
||||
cp scripts/test.xml $(INSTALL_PATH)
|
||||
|
||||
install_lib: $(OBJ_DIR)/libmacchinetta.so
|
||||
mkdir -p $(INSTALL_PATH)
|
||||
cp $(OBJ_DIR)/libmacchinetta.so $(INSTALL_PATH)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*.o $(OBJ_DIR)/*.so $(OBJ_DIR)/*.$(MEXE)
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
MATLAB_ROOT=C:\'Program Files'\MATLAB\R2016b_x64
|
||||
MEXE=mexw64
|
||||
#c:\local\boost_1_62_0\
|
||||
|
||||
INCLUDES = -IC:\CAFE\CAFE\cpp\include -IC:\CAFE\CAFE\cpp -IC:\local\boost_1_62_0 \
|
||||
-IC:\local\boost_1_62_0\boost -IC:\epics\base-3.14.12.5\include -IC:\epics\base-3.14.12.5\include\os\WIN32 \
|
||||
-I"C:\Program Files\MATLAB\R2016b_x64\extern\include" \
|
||||
-Ic:\Qt\qt-4.8.6-x64-msvc2010\include -Ic:\Qt\qt-4.8.6-x64-msvc2010\include\QtCore -Ic:\Qt\qt-4.8.6-msvc2010\include\QtXml
|
||||
|
||||
CXX=cl
|
||||
CXXFLAGS = /W4 /EHsc
|
||||
OUTPUT_OPTION = /o $@
|
||||
LIB_LOCAL = C:\epics\base-3.14.12.5\lib\windows-x64\Com.lib C:\epics\base-3.14.12.5\lib\windows-x64\ca.lib \
|
||||
C:\CAFE\CAFE\cpp\cafe.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_thread-vc100-mt-1_62.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_system-vc100-mt-1_62.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_chrono-vc100-mt-1_62.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_date_time-vc100-mt-1_62.lib \
|
||||
C:\Qt\Qt-4.8.6-msvc2010\lib\QtCore4.lib C:\Qt\tq-4.8.6-msvc2010\lib\QtXml4.lib
|
||||
#"C:\Program Files\MATLAB\R2016b_x64\extern\lib\win64\microsoft\libmat.lib" \
|
||||
#"C:\Program Files\MATLAB\R2016b_x64\extern\lib\win64\microsoft\libmex.lib" \
|
||||
#"C:\Program Files\MATLAB\R2016b_x64\extern\lib\win64\microsoft\libmx.lib"
|
||||
|
||||
LIB_CAFE=C:\CAFE\CAFE\cpp\cafe.lib
|
||||
LIB_BOOST =C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_date_time-vc100-mt-1_62.lib
|
||||
|
||||
LIB_BOOST2=C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_date_time-vc100-mt-s-1_62.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_thread-vc100-mt-s-1_62.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_system-vc100-mt-s-1_62.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_chrono-vc100-mt-s-1_62.lib
|
||||
|
||||
#LIB_BOOST2=C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_thread-vc100-mt-s-1_62.lib \
|
||||
#C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_system-vc100-mt-s-1_62.lib \
|
||||
#C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_date_time-vc100-mt-s-1_62.lib \
|
||||
#C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_chrono-vc100-mt-s-1_62.lib
|
||||
|
||||
#LIB_BOOST=C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_thread-vc100-mt-1_62.lib \
|
||||
#C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_system-vc100-mt-1_62.lib \
|
||||
#C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_date_time-vc100-mt-1_62.lib \
|
||||
#C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_chrono-vc100-mt-1_62.lib
|
||||
|
||||
LIB_QT=C:\Qt\Qt-4.8.6-x64-msvc2010\lib\QtCore4.lib C:\Qt\qt-4.8.6-x64-msvc2010\lib\QtXml4.lib
|
||||
|
||||
LIB_EPICS=C:\epics\base-3.14.12.5\lib\windows-x64\Com.lib C:\epics\base-3.14.12.5\lib\windows-x64\ca.lib
|
||||
|
||||
OBJ_DIR=windows-x64
|
||||
|
||||
CAFE_OBJS = C:\CAFE\CAFE\cpp\src\cafeCache.obj C:\CAFE\CAFE\cpp\src\cafeGroup.obj C:\CAFE\CAFE\cpp\src\cafe.obj C:\CAFE\CAFE\cpp\src\cafeVectors.obj \
|
||||
C:\CAFE\CAFE\cpp\src\cafeXML.obj C:\CAFE\CAFE\cpp\src\callbackHandlerCreate.obj C:\CAFE\CAFE\cpp\src\callbackHandlerMonitor.obj \
|
||||
C:\CAFE\CAFE\cpp\src\conduitGroup.obj C:\CAFE\CAFE\cpp\src\conduit.obj \
|
||||
C:\CAFE\CAFE\cpp\src\connectCallbacks.obj C:\CAFE\CAFE\cpp\src\connectGroup.obj \
|
||||
C:\CAFE\CAFE\cpp\src\connect.obj C:\CAFE\CAFE\cpp\src\exceptionsHelper.obj C:\CAFE\CAFE\cpp\src\granules.obj C:\CAFE\CAFE\cpp\src\handleHelper.obj \
|
||||
C:\CAFE\CAFE\cpp\src\helper.obj \
|
||||
C:\CAFE\CAFE\cpp\src\loadCollectionXMLParser.obj C:\CAFE\CAFE\cpp\src\loadGroupXMLParser.obj C:\CAFE\CAFE\cpp\src\methodCallbacks.obj \
|
||||
C:\CAFE\CAFE\cpp\src\policyHelper.obj \
|
||||
C:\CAFE\CAFE\cpp\src\restorePVGroupXMLParser.obj C:\CAFE\CAFE\cpp\src\transpose.obj
|
||||
|
||||
#\NODEFAULTLIB
|
||||
$(OBJ_DIR)\mocha.$(MEXE): mocha.cpp $(OBJ_DIR)\macchinettaSwitch.obj
|
||||
"C:\Program Files\MATLAB\R2016b_x64\bin\win64\mex" -v COMPFLAGS="$(COMPFLAGS) -Wall" mocha.cpp $(OBJ_DIR)/macchinettaSwitch.obj -DDB_TEXT_GLBLSOURCE -DMSCC -DWIN32 -DWIN64 -largeArrayDims $(INCLUDES) $(LIB_EPICS) $(LIB_CAFE) $(LIB_BOOST) $(LIB_BOOST2) $(LIB_QT) \
|
||||
-outdir $(OBJ_DIR) -output mocha.$(MEXE)
|
||||
|
||||
$(OBJ_DIR)\macchinettaSwitch.obj: macchinettaSwitch.cpp macchinettaHelper.h \
|
||||
macchinetta.h containerMochaccino.h
|
||||
"C:\Program Files\MATLAB\R2016b_x64\bin\win64\mex" -largeArrayDims \
|
||||
-c macchinettaSwitch.cpp $(INCLUDES) -outdir $(OBJ_DIR)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*.obj $(OBJ_DIR)/*.$(MEXE)
|
||||
|
||||
@@ -1,124 +0,0 @@
|
||||
#
|
||||
# Jan Chrin
|
||||
# New Version: June 2016
|
||||
#
|
||||
# makefile to build mocha mex file
|
||||
# printenv | grep MATLAB to reveal your MATLAB Directory
|
||||
#
|
||||
# e.g. on sf-lc we have
|
||||
# MATLAB=/afs/psi.ch/sys/linux/opt/matlab/2015a.x86_64
|
||||
#
|
||||
# local executables are built in ./${EPICS_HOST_ARCH}/$(MVER)
|
||||
# where the MATLAB version is grepped from $(MATLAB)
|
||||
|
||||
MATLAB_ROOT=${MATLAB}
|
||||
MATLAB_VERSION=$(notdir $(MATLAB_ROOT))
|
||||
|
||||
##### CHANGE AS APPROPRIATE #################
|
||||
#Mocha Version to install
|
||||
MOCHA_VERSION=mocha-1.3.0-final-1
|
||||
#CAFE version to link to
|
||||
CAFE_VERSION=cafe-1.3.0-final-1
|
||||
|
||||
|
||||
|
||||
EPICS_BASE=${EPICS}/base
|
||||
#CAFE project base
|
||||
CAFE_BASE=/opt/gfa/cafe
|
||||
CAFE_MOCHA_BASE=${CAFE_BASE}/mocha
|
||||
#CAFE_CPP_BASE=/afs/psi.ch/project/cafe/gitlab/CAFE/cpp
|
||||
CAFE_CPP_BASE=$(CAFE_BASE)/cpp/$(CAFE_VERSION)
|
||||
|
||||
|
||||
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
|
||||
BOOST_LIB=/afs/psi.ch/project/zeromq/devl/mate/deps/boost/lib
|
||||
|
||||
QT_LIB=/usr/lib64
|
||||
|
||||
INSTALL_MOCHA_LIBDIR= $(CAFE_MOCHA_BASE)/$(MOCHA_VERSION)/lib/$(MATLAB_VERSION)
|
||||
#############################################
|
||||
|
||||
|
||||
#First deteremine if we are on a 32/64 bit machine
|
||||
#as mex file extensions are named differently
|
||||
pattern64=x86_64
|
||||
pattern32=i386
|
||||
|
||||
PWD=$(shell pwd)
|
||||
#hardware platform
|
||||
HW=$(shell uname -i)
|
||||
ifeq ($(pattern64),$(findstring $(pattern64), $(HW)))
|
||||
MEXE=mexa64
|
||||
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa64
|
||||
else
|
||||
ifeq ($(pattern32),$(findstring $(pattern32), $(HW)))
|
||||
MEXE=mexglx
|
||||
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa86
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
INSTALL_PATH?=$(INSTALL_MOCHA_LIBDIR)
|
||||
OBJ_DIR= ${EPICS_HOST_ARCH}/$(MATLAB_VERSION)
|
||||
|
||||
INCLUDEPATH_MOCHA += -I$(MATLAB_ROOT)/extern/include \
|
||||
-I$(CAFE_CPP_BASE)/include -I./ \
|
||||
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux
|
||||
|
||||
|
||||
INCLUDEPATH_MACHINETTA += $(INCLUDEPATH_MOCHA) -I$(BOOST_BASE) -I$(BOOST_BASE)/boost
|
||||
|
||||
|
||||
LIB_DIR += \
|
||||
-L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-L$(MATLAB_LIB) -Wl,-rpath,$(MATLAB_LIB) \
|
||||
-L$(CAFE_CPP_BASE) \
|
||||
-Wl,-rpath,$(CAFE_CPP_BASE) \
|
||||
-L$(QT_LIB) -Wl,-rpath,$(QT_LIB)
|
||||
|
||||
|
||||
LIBS += -ldl -lca -lCom -lmx -lmex -lmat -lQtCore -lQtXml
|
||||
|
||||
LIB_INSTALL = $(LIB_DIR) -L$(INSTALL_PATH) -Wl,-rpath,$(INSTALL_PATH)
|
||||
|
||||
LIB_LOCAL = $(LIB_DIR)
|
||||
|
||||
|
||||
CAFE_OBJS_DIR = $(CAFE_BASE)/cpp/$(CAFE_VERSION)/lib/libcafe.a
|
||||
|
||||
# MATLAB Versions 2014 onwards, use
|
||||
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_LOCAL) $(LIBS)
|
||||
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_INSTALL) $(LIBS)
|
||||
|
||||
|
||||
$(OBJ_DIR)/mocha.$(MEXE): mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o
|
||||
mex -largeArrayDims GCC='/usr/bin/gcc' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(OBJ_DIR) -output mocha.$(MEXE) \
|
||||
$(INCLUDEPATH_MOCHA) \
|
||||
LDFLAGS='$(LIB_LOCAL) $(LIBS)'
|
||||
|
||||
|
||||
$(OBJ_DIR)/macchinettaSwitch.o: macchinettaSwitch.cpp macchinettaHelper.h \
|
||||
macchinetta.h containerMochaccino.h
|
||||
mex GCC='/usr/bin/g++' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
-largeArrayDims -c macchinettaSwitch.cpp $(INCLUDEPATH_MACHINETTA) -outdir $(OBJ_DIR)
|
||||
|
||||
|
||||
install: $(OBJ_DIR)/mocha.$(MEXE)
|
||||
mkdir -p $(INSTALL_PATH)
|
||||
mex -largeArrayDims GCC='/usr/bin/gcc' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(INSTALL_PATH) -output mocha.$(MEXE) \
|
||||
$(INCLUDEPATH_MOCHA) \
|
||||
LDFLAGS='$(LIB_INSTALL) $(LIBS)'
|
||||
cp example.m $(INSTALL_PATH)
|
||||
cp scripts/*.m $(INSTALL_PATH)
|
||||
cp scripts/test.xml $(INSTALL_PATH)
|
||||
|
||||
install_lib: $(OBJ_DIR)/libmacchinetta.so
|
||||
mkdir -p $(INSTALL_PATH)
|
||||
cp $(OBJ_DIR)/libmacchinetta.so $(INSTALL_PATH)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*.o $(OBJ_DIR)/*.so $(OBJ_DIR)/*.$(MEXE)
|
||||
|
||||
109
scripts/caget.m-
109
scripts/caget.m-
@@ -1,109 +0,0 @@
|
||||
function value = caget(channel,cached)
|
||||
% caget('channel') returns current value and additional infos
|
||||
% of given EPICS channel.
|
||||
% caget('channel',1) returns last value and additional infos
|
||||
% of given EPICS channel.
|
||||
%
|
||||
% channel can be a channel name or a handle as returned from mcaopen
|
||||
%
|
||||
% return value elements:
|
||||
% val: value (scalar, vector or string)
|
||||
% sevr: severity as a number
|
||||
% sevr_str: severity as a string
|
||||
% stat: status as a number
|
||||
% stat_str: status as a string
|
||||
% time: timestamp as a date vector
|
||||
% units: units string
|
||||
|
||||
persistent severity_str
|
||||
persistent status_str
|
||||
persistent zerotime
|
||||
persistent units
|
||||
|
||||
if ischar(channel)
|
||||
pv = mocha('open',channel);
|
||||
|
||||
if mocha('isConnected', channel) == false
|
||||
mocha('openNowAndWait', 0.5)
|
||||
end
|
||||
|
||||
if mocha('isConnected', channel) == false
|
||||
error('EPICS channel %s not found', channel);
|
||||
end
|
||||
elseif isnumeric(channel)
|
||||
pv = channel;
|
||||
else
|
||||
error ('first argument must be channel name or handle');
|
||||
end
|
||||
if isvector(pv)
|
||||
pv=pv(1); % truncate
|
||||
end
|
||||
if nargin > 1 && cached
|
||||
pvStruct = mocha('getPVCache',pv);
|
||||
else
|
||||
pvStruct = mocha('getPV', pv);
|
||||
end
|
||||
|
||||
val=pvStruct.val
|
||||
|
||||
pvCtrl = mocha('getCtrlCache',pv);
|
||||
%pvCtrl
|
||||
|
||||
% initialize severity and status enums
|
||||
if isempty(severity_str)
|
||||
severity_str = {'NO_ALARM';'MINOR';'MAJOR';'INVALID'};
|
||||
status_str = {'NO_ALARM';'READ';'WRITE';'HIHI';'HIGH';'LOLO';'LOW';'STATE';'COS';'COMM';'TIMEOUT';'HWLIMIT';'CALC';'SCAN';'LINK';'SOFT';'BAD_SUB';'UDF';'DISABLE';'SIMM';'READ_ACCESS';'WRITE_ACCESS'};
|
||||
end
|
||||
|
||||
|
||||
value.val = val;
|
||||
|
||||
units = pvCtrl.units;
|
||||
string = pvCtrl.enumStrings;
|
||||
|
||||
if size(string) > 1
|
||||
disp(size(string))
|
||||
value.val_str = value.val;
|
||||
value.val = mocha('getCache',pv,'int8');
|
||||
end
|
||||
|
||||
|
||||
%if ~isempty(units{1})
|
||||
%value.units = units{1};
|
||||
%end
|
||||
value.units=units;
|
||||
value.sevr = pvStruct.alarmSeverity;
|
||||
indx=max(pvStruct.alarmSeverity, 0);
|
||||
value.sevr_str = severity_str{indx+1};
|
||||
value.stat = pvStruct.alarmStatus;
|
||||
indx=max(pvStruct.alarmStatus, 0);
|
||||
value.stat_str = status_str{ indx+1};
|
||||
|
||||
|
||||
|
||||
timestamp = mocha('getTimestamp',pv);
|
||||
if (numel(timestamp) == 2)
|
||||
% old mca version
|
||||
% do not use mcatime here because 1. it is slow, 2. is returns UTC
|
||||
% calculating zerotime only once is faster and takes localtime into account
|
||||
% When daylight saving time begins or ends, restart the program!
|
||||
if isempty(zerotime)
|
||||
[status,timezone]=system('date +%z'); % get localtime offset
|
||||
timeoffs=str2double(timezone);
|
||||
houroffs=floor(timeoffs/100);
|
||||
minoffs=(timeoffs-100*houroffs);
|
||||
zerotime = datenum('1-Jan-1990') + (minoffs/60 + houroffs)/24;
|
||||
end
|
||||
time=timestamp(1)+timestamp(2)/1000000000;
|
||||
if time
|
||||
time = zerotime+time/24/3600;
|
||||
end
|
||||
value.time = datevec(time);
|
||||
else
|
||||
% new mca version
|
||||
timestamp(6)=timestamp(6)+timestamp(7)/1000000000;
|
||||
value.time = timestamp(1:6);
|
||||
end
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user