Compare commits
162 Commits
Author | SHA1 | Date | |
---|---|---|---|
ff7afd0de7 | |||
835e62425f | |||
c8cdbfc488 | |||
2f75143245 | |||
6f7c31b747 | |||
75c2d987c4 | |||
726f5eba29 | |||
4404ee717a | |||
54530ab103 | |||
6126780660 | |||
9b7f9b1be1 | |||
26c829d766 | |||
3fde5c5b55 | |||
3e5f546ebe | |||
9833a7d330 | |||
8f9155e578 | |||
9df1eac3c1 | |||
5ededf9be4 | |||
3e8774798a | |||
77080a524a | |||
3dce1e46f9 | |||
08ecc1e52d | |||
8c1974b34e | |||
d89d349247 | |||
910961cf41 | |||
595b7aa5e8 | |||
f72ad4326f | |||
2306e44ae3 | |||
8c76d5d52c | |||
e7eee67fed | |||
fade48dcfa | |||
8e58e7f8bf | |||
c8f56ee23c | |||
32d951e28a | |||
5c63c8fc8f | |||
7b70274d4f | |||
1cd905c08b | |||
13e809acd4 | |||
46533b0411 | |||
4f4de15d3a | |||
4f99aeabd2 | |||
f36a12e454 | |||
5e246c0754 | |||
518c6783cc | |||
0706564694 | |||
2108bbda66 | |||
82feed1ab8 | |||
4be0b5d436 | |||
f7eb256eb6 | |||
250fc26308 | |||
06a50520c1 | |||
fc766055d4 | |||
828b1479c7 | |||
22ed52605c | |||
a1a95ebb20 | |||
5698da5f95 | |||
7300d73675 | |||
d4b467a641 | |||
7b71076180 | |||
9197d2b209 | |||
e094e41d89 | |||
512e1a3136 | |||
6d04c14bd6 | |||
64183d8d6a | |||
287efde54a | |||
faa25b9e9f | |||
1b92b01a46 | |||
4849063b6c | |||
5cd020ae81 | |||
160fabe02c | |||
90dd8e70e5 | |||
08e121c71f | |||
cb3b337a99 | |||
5d9a952316 | |||
8cc05c5848 | |||
d69d69e892 | |||
07a120fc4a | |||
11e8796847 | |||
f79b009978 | |||
3259bfb008 | |||
934bc5b9db | |||
6d11faed87 | |||
35fc52dae7 | |||
e599bfe56f | |||
764becc271 | |||
7462d1002d | |||
834794ad98 | |||
56c504abbb | |||
4d6346e678 | |||
dc7e448759 | |||
e658cbacda | |||
1e6c6dea71 | |||
0e5d4d1d8e | |||
a2986784d3 | |||
975cbb576e | |||
e48a92d9cd | |||
befdcf7f36 | |||
02f5c472a8 | |||
75ed2cd2e4 | |||
3be045f9b6 | |||
8fae982802 | |||
128ec88b5f | |||
d5fc158330 | |||
864e6e4c81 | |||
343d96ff16 | |||
4142328437 | |||
6c797988c7 | |||
215c262981 | |||
081b809078 | |||
9263567cd8 | |||
58e90a85be | |||
025c836e25 | |||
5d5abae3f4 | |||
e2ad46386e | |||
308d44e452 | |||
69da61b1fb | |||
460168ce04 | |||
4e429c0d77 | |||
bf4fab549d | |||
f7705eb1da | |||
a2217e2066 | |||
aaa02706fc | |||
6a80bc5b54 | |||
b9275646ad | |||
9e2f2697c7 | |||
b6b0df62b6 | |||
0ba537e479 | |||
75ddf535dc | |||
b1de501bef | |||
0f3a63f101 | |||
3b4b2d707f | |||
f405aa1733 | |||
df0fdb7ecb | |||
91b7a87557 | |||
9468b9ca1e | |||
d7982e178e | |||
9cf5714a5b | |||
0c9ac8911a | |||
4730c8c0a9 | |||
43efb8acfd | |||
6ecca8fcb0 | |||
17cb63a57f | |||
4f83fcb001 | |||
ab94af6d29 | |||
7c725cc69b | |||
f0198d2d2e | |||
5ddccbdee4 | |||
8fb39b8c7e | |||
bd5293f4b1 | |||
b91180f5b2 | |||
7c3b5065a5 | |||
9aef802bea | |||
f7d85231f2 | |||
5b3a911e8d | |||
65f5e1c1ab | |||
839896c7e6 | |||
4a7e246604 | |||
7f293115c4 | |||
f59f40a659 | |||
64fd82f92c | |||
cd232fd732 | |||
172fa66b1f |
6
.clang-format
Normal file
@ -0,0 +1,6 @@
|
||||
BasedOnStyle: LLVM
|
||||
IndentWidth: 4
|
||||
|
||||
UseTab: Never
|
||||
ColumnLimit: 0
|
||||
AlignConsecutiveAssignments: false
|
7
.clang-tidy
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
Checks: '*, -google-runtime-references, -hicpp-no-array-decay, -cppcoreguidelines-pro-bounds-array-to-pointer-decay, -cppcoreguidelines-pro-bounds-pointer-arithmetic, -fuchsia*,-readability-else-after-return,-readability-avoid-const-params-in-decls,-hicpp-signed-bitwise,-cppcoreguidelines-pro-bounds-constant-array-index,-llvm-header-guard,-readability-static-accessed-through-instance,-google-readability-todo'
|
||||
WarningsAsErrors: '*'
|
||||
HeaderFilterRegex: '.*'
|
||||
AnalyzeTemporaryDtors: false
|
||||
FormatStyle: none
|
||||
...
|
5
.gitignore
vendored
@ -1,8 +1,11 @@
|
||||
.cproject
|
||||
.project
|
||||
bin/
|
||||
.settings
|
||||
*.aux
|
||||
*.log
|
||||
*.out
|
||||
*.toc
|
||||
|
||||
build
|
||||
docs/
|
||||
RELEASE.txt
|
||||
|
44
.travis.yml
Normal file
@ -0,0 +1,44 @@
|
||||
sudo: false
|
||||
|
||||
language: cpp
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- os: linux
|
||||
env: CONDA_PY=3.6
|
||||
|
||||
dist: trusty
|
||||
|
||||
install:
|
||||
- sudo apt-get update
|
||||
- ldd --version
|
||||
- wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
|
||||
- bash miniconda.sh -b -p $HOME/miniconda
|
||||
- export PATH="$HOME/miniconda/bin:$PATH"
|
||||
- rm -f miniconda.sh
|
||||
- hash -r
|
||||
- conda config --set always_yes yes --set changeps1 no
|
||||
- conda config --add channels conda-forge
|
||||
- conda config --add channels slsdetectorgroup
|
||||
- conda update conda
|
||||
- conda update --all
|
||||
- conda install conda-build anaconda-client
|
||||
|
||||
# Useful for debugging any issues with conda
|
||||
- conda info -a
|
||||
|
||||
|
||||
# Replace dep1 dep2 ... with your dependencies
|
||||
- conda create -q -n test-environment python=$CONDA_PY
|
||||
- source activate test-environment
|
||||
- conda-build .
|
||||
|
||||
script:
|
||||
- echo "No test scripts to be run!"
|
||||
|
||||
|
||||
deploy:
|
||||
provider: script
|
||||
script: find $HOME/miniconda/conda-bld/${TRAVIS_OS_NAME}-64 -name "*.tar.bz2" -exec anaconda -t $CONDA_TOKEN upload --force {} \;
|
||||
on:
|
||||
branch: 4.0.2
|
76
CMakeLists.txt
Normal file
@ -0,0 +1,76 @@
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
|
||||
set (CALIBRATE OFF)
|
||||
|
||||
# Check if project is being used directly or via add_subdirectory
|
||||
set(SLS_MASTER_PROJECT OFF)
|
||||
if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
|
||||
set(SLS_MASTER_PROJECT ON)
|
||||
endif()
|
||||
|
||||
option (SLS_USE_HDF5 "HDF5 File format" OFF)
|
||||
option (SLS_USE_TEXTCLIENT "Text Client" OFF)
|
||||
option (SLS_USE_RECEIVER "Receiver" OFF)
|
||||
option (SLS_USE_GUI "GUI" OFF)
|
||||
|
||||
|
||||
#Flags to always be used
|
||||
# -Wno-unused-parameter should eventually be removes
|
||||
# -Wno-overloaded-virtual TODO! remove warnings in refactor
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-overloaded-virtual -Wno-unused-parameter -std=c++98")
|
||||
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
# clang does not support -Wno-misleading-indentation
|
||||
# add any special clang flags
|
||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-misleading-indentation")
|
||||
endif ()
|
||||
endif()
|
||||
|
||||
|
||||
find_package(Qt4)
|
||||
find_package(Qwt 6)
|
||||
find_package(CBF)
|
||||
find_package(Doxygen)
|
||||
# find_package(PNG REQUIRED)
|
||||
|
||||
if (SLS_USE_HDF5)
|
||||
find_package(HDF5 1.10 COMPONENTS CXX)
|
||||
endif (SLS_USE_HDF5)
|
||||
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
set(CMAKE_INSTALL_RPATH "$ORIGIN")
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
|
||||
|
||||
if (SLS_USE_TEXTCLIENT)
|
||||
add_subdirectory(slsDetectorSoftware)
|
||||
endif (SLS_USE_TEXTCLIENT)
|
||||
|
||||
if (SLS_USE_RECEIVER)
|
||||
add_subdirectory(slsReceiverSoftware)
|
||||
add_subdirectory(manual/manual-api)
|
||||
endif (SLS_USE_RECEIVER)
|
||||
|
||||
|
||||
if (SLS_USE_GUI)
|
||||
if (QT4_FOUND AND QWT_FOUND)
|
||||
add_subdirectory(slsDetectorGui)
|
||||
endif()
|
||||
endif (SLS_USE_GUI)
|
||||
|
||||
if (SLS_MASTER_PROJECT)
|
||||
# Set targets export name (otherwise set by upstream project)
|
||||
set(TARGETS_EXPORT_NAME "slsdetector-targets")
|
||||
endif (SLS_MASTER_PROJECT)
|
||||
|
||||
if (CALIBRATE)
|
||||
if (DEFINED ENV{ROOTSYS})
|
||||
find_package(ROOT)
|
||||
if (ROOT_FOUND)
|
||||
add_subdirectory(calibrationWizards)
|
||||
endif()
|
||||
endif()
|
||||
endif(CALIBRATE)
|
235
Makefile
Executable file
@ -0,0 +1,235 @@
|
||||
# do not change below this line#
|
||||
|
||||
# Include common definitions
|
||||
include Makefile.include
|
||||
|
||||
INSTALLROOT ?= $(PWD)
|
||||
BINDIR ?= $(INSTALLROOT)/bin
|
||||
DOCDIR ?= $(INSTALLROOT)/manual/docs
|
||||
LIBDIR ?= $(INSTALLROOT)/bin
|
||||
INCDIR ?= $(INSTALLROOT)/include
|
||||
DETAILDOC ?= $(INSTALLROOT)/docs
|
||||
|
||||
WD = $(shell pwd)
|
||||
LIBRARYDIR = $(WD)/slsDetectorSoftware
|
||||
LIBRARYRXRDIR = $(WD)/slsReceiverSoftware
|
||||
CLIENTDIR = $(LIBRARYDIR)/slsDetectorClient
|
||||
GUIDIR = $(WD)/slsDetectorGui
|
||||
RECEIVERDIR = $(LIBRARYRXRDIR)
|
||||
CALWIZDIR = $(WD)/calibrationWizards
|
||||
MANDIR = $(WD)/manual
|
||||
CALIBDIR = $(WD)/slsDetectorCalibration
|
||||
MANAPIDIR = $(MANDIR)/manual-api
|
||||
|
||||
TABSPACE := "\t"
|
||||
|
||||
|
||||
INCLUDES=-I. -I$(LIBRARYDIR)/commonFiles -I$(LIBRARYDIR)/slsDetector -I$(LIBRARYDIR)/usersFunctions -I$(LIBRARYDIR)/multiSlsDetector -I$(LIBRARYDIR)/slsDetectorUtils -I$(LIBRARYDIR)/slsDetectorCommand -I$(LIBRARYDIR)/slsDetectorAnalysis -I$(LIBRARYDIR)/slsReceiverInterface -I$(LIBRARYRXRDIR)/include -I$(LIBRARYDIR)/threadFiles -I$(LIBRARYDIR)/sharedMemory -I$(ASM)
|
||||
|
||||
INCLUDESRXR += -I. -I$(LIBRARYRXRDIR)/include -I$(CALIBDIR) -I$(ASM)
|
||||
#LIBFLAGRXR +=
|
||||
|
||||
$(info )
|
||||
$(info #######################################)
|
||||
$(info # In slsDetectorsPackage Makefile #)
|
||||
$(info #######################################)
|
||||
$(info )
|
||||
|
||||
|
||||
.PHONY: all nonstatic static lib libreceiver textclient receiver gui stextclient sreceiver
|
||||
|
||||
#all: lib textclient receiver gui
|
||||
all: textclient receiver gui
|
||||
|
||||
nonstatic: lib libreceiver textclient receiver gui
|
||||
|
||||
static: lib libreceiver stextclient sreceiver gui
|
||||
|
||||
|
||||
lib:
|
||||
cd $(LIBRARYDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' LIBRARYDIR='$(LIBRARYDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)' LIBDIR='$(LIBDIR)'
|
||||
|
||||
libreceiver:
|
||||
cd $(LIBRARYRXRDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
|
||||
|
||||
|
||||
stextclient: slsDetectorClient_static
|
||||
|
||||
slsDetectorClient: textclient
|
||||
|
||||
slsDetectorClient_static: #lib
|
||||
cd $(CLIENTDIR) && $(MAKE) static_clients FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBRARYDIR='$(LIBRARYDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)' LIBDIR='$(LIBDIR)'
|
||||
@echo ""
|
||||
@echo "#######################################"
|
||||
@echo "# Back in slsDetectorPackage Makefile #"
|
||||
@echo "#######################################"
|
||||
@echo ""
|
||||
|
||||
textclient: #lib
|
||||
cd $(CLIENTDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBRARYDIR='$(LIBRARYDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)' LIBDIR='$(LIBDIR)'
|
||||
@echo ""
|
||||
@echo "#######################################"
|
||||
@echo "# Back in slsDetectorPackage Makefile #"
|
||||
@echo "#######################################"
|
||||
@echo ""
|
||||
|
||||
slsReceiver: receiver
|
||||
|
||||
slsReceiver_static: receiver
|
||||
|
||||
receiver: #libreceiver
|
||||
# cd $(RECEIVERDIR) && $(MAKE) receiver FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
|
||||
cd $(RECEIVERDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
|
||||
cd $(MANAPIDIR) && $(MAKE) slsMultiReceiver
|
||||
@echo ""
|
||||
@echo "#######################################"
|
||||
@echo "# Back in slsDetectorPackage Makefile #"
|
||||
@echo "#######################################"
|
||||
@echo ""
|
||||
|
||||
sreceiver: #libreceiver
|
||||
cd $(RECEIVERDIR) && $(MAKE) static_receiver FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
|
||||
@echo ""
|
||||
@echo "#######################################"
|
||||
@echo "# Back in slsDetectorPackage Makefile #"
|
||||
@echo "#######################################"
|
||||
@echo ""
|
||||
|
||||
slsDetectorGUI: #lib
|
||||
cd $(GUIDIR) && $(MAKE) DESTDIR='$(BINDIR)' LIBRARYDIR='$(LIBRARYDIR)' INCLUDES='$(INCLUDES)' LDFLAGDET='$(LDFLAGDETONLY)' LIBDIR='$(LIBDIR)'
|
||||
@echo ""
|
||||
@echo "#######################################"
|
||||
@echo "# Back in slsDetectorPackage Makefile #"
|
||||
@echo "#######################################"
|
||||
@echo ""
|
||||
|
||||
calWiz:
|
||||
cd $(CALWIZDIR) && $(MAKE) DESTDIR=$(BINDIR) #FLAGS=$(FLAGS) LDFLAGDET=$(LDFLAGDET) INCLUDES=$(INCLUDES)
|
||||
|
||||
|
||||
|
||||
gui: slsDetectorGUI
|
||||
|
||||
|
||||
doc:
|
||||
$(shell test -d $(DOCDIR) || mkdir -p $(DOCDIR))
|
||||
cd manual && make all DESTDIR=$(DOCDIR)
|
||||
|
||||
htmldoc:
|
||||
make doc
|
||||
$(shell test -d $(DOCDIR) || mkdir -p $(DOCDIR))
|
||||
cd manual && make html DESTDIR=$(DOCDIR)
|
||||
|
||||
detaildoc: createdocs docspdf docshtml removedocs
|
||||
|
||||
createdocs: $(LIBRARYDIR)/doxy.config
|
||||
doxygen $(LIBRARYDIR)/doxy.config
|
||||
|
||||
docspdf:
|
||||
cd slsDetectorPackageDocs/latex && make
|
||||
$(shell test -d $(DETAILDOC) || mkdir -p $(DETAILDOC))
|
||||
$(shell test -d $(DETAILDOC)/pdf || mkdir -p $(DETAILDOC)/pdf)
|
||||
mv slsDetectorPackageDocs/latex/refman.pdf $(DETAILDOC)/pdf/slsDetectorPackageDocs.pdf
|
||||
|
||||
docshtml:
|
||||
$(shell test -d $(DETAILDOC) || mkdir -p $(DETAILDOC))
|
||||
$(shell test -d $(DETAILDOC)/html || mkdir -p $(DETAILDOC)/html)
|
||||
$(shell test -d $(DETAILDOC)/html/slsDetectorPackageDocs && rm -r $(DETAILDOC)/html/slsDetectorPackageDocs)
|
||||
mv slsDetectorPackageDocs/html $(DETAILDOC)/html/slsDetectorPackageDocs
|
||||
|
||||
removedocs:
|
||||
rm -rf slsDetectorPackageDocs;
|
||||
|
||||
|
||||
clean:
|
||||
cd $(BINDIR) && rm -rf sls_detector_* slsDetectorGui slsReceiver angularCalibrationWizard energyCalibrationWizard
|
||||
cd $(LIBDIR) && rm -rf libSlsDetector.so libSlsDetector.a libSlsReceiver.so libSlsReceiver.a
|
||||
cd $(LIBRARYDIR) && $(MAKE) clean
|
||||
cd $(LIBRARYRXRDIR) && $(MAKE) clean
|
||||
cd $(CLIENTDIR) && $(MAKE) clean
|
||||
cd $(GUIDIR) && $(MAKE) clean
|
||||
cd $(CALWIZDIR) && $(MAKE) clean
|
||||
cd manual && $(MAKE) clean
|
||||
cd $(DOCDIR) && rm -rf *
|
||||
rm -rf slsDetectorPackageDocs;
|
||||
rm -rf $(DETAILDOC)
|
||||
rm -rf $(MANAPIDIR)/slsMultiReceiver
|
||||
|
||||
|
||||
#install_lib:
|
||||
# cd $(LIBRARYDIR) && $(MAKE) install DESTDIR=$(LIBDIR) INCLUDES=$(INCLUDES)
|
||||
# cd $(LIBRARYDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR)
|
||||
|
||||
mythen_virtual:
|
||||
cd $(LIBRARYDIR) && $(MAKE) mythenVirtualServer DESTDIR=$(BINDIR)
|
||||
|
||||
|
||||
gotthard_virtual:
|
||||
cd $(LIBRARYDIR) && $(MAKE) gotthardVirtualServer DESTDIR=$(BINDIR)
|
||||
|
||||
|
||||
install_client: textclient slsReceiver
|
||||
|
||||
install_gui: gui
|
||||
|
||||
confinstall:
|
||||
make conf;\
|
||||
make install
|
||||
|
||||
install_lib:
|
||||
make lib;\
|
||||
make libreceiver; \
|
||||
make textclient; \
|
||||
make slsReceiver; \
|
||||
make doc; \
|
||||
make htmldoc; \
|
||||
cd $(LIBRARYDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR); \
|
||||
cd $(LIBRARYRXRDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR);
|
||||
|
||||
install:
|
||||
make install_lib; \
|
||||
make gui; \
|
||||
make calWiz; \
|
||||
cd $(LIBRARYDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR);\
|
||||
cd $(LIBRARYRXRDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR);
|
||||
|
||||
conf:
|
||||
set -e; \
|
||||
. ./configure; \
|
||||
@echo "INSTALLROOT is $(INSTALLROOT)"
|
||||
@echo "BINDIR is $(BINDIR)"
|
||||
@echo "LIBDIR is $(LIBDIR)"
|
||||
@echo "INCDIR is $(INCDIR)"
|
||||
@echo "DOCDIR is $(DOCDIR)"
|
||||
|
||||
|
||||
help:
|
||||
@echo "Targets:"
|
||||
@echo "make all compile library, text clients, data reciever"
|
||||
@echo "make lib compile library"
|
||||
@echo "make libreceiver compile receiver library"
|
||||
@echo "make textclient compile the slsDetectorClient dynamically linking the libraries"
|
||||
@echo "make stextclient compile slsDetectorClient statically linking the libraries"
|
||||
@echo "make receiver compile the slsReciever dynamically linking the libraries"
|
||||
@echo "make sreceiver compile the slsReciever statically linking the libraries"
|
||||
@echo "make gui compile slsDetectorGUI - requires a working Qt4 and Qwt installation"
|
||||
@echo "make calWiz compile the calibration wizards - requires a working Root installation"
|
||||
@echo "make doc compile pdf documentation"
|
||||
@echo "make htmldoc compile html (and pdf) documentation"
|
||||
@echo "make install_lib installs the libraries, the text clients, the documentation and the includes for the API"
|
||||
@echo "make install installs all software, including the gui, the cal wizards and the includes for the API"
|
||||
@echo "make confinstall installs all software, including the gui, the cal wizards and the includes for the API, prompting for the install paths"
|
||||
@echo "make clean remove object files and executables"
|
||||
@echo "make help lists possible targets"
|
||||
@echo ""
|
||||
@echo ""
|
||||
@echo "Makefile variables"
|
||||
@echo "DEBUG=1,2 set debug level to 1 (VERBOSE) or 2 (VERYVERBOSE)"
|
||||
@echo ""
|
||||
@echo ""
|
||||
@echo "Variables - to change them run <source configure> :"
|
||||
@echo "INSTALLROOT=<yourdir>: installation root di r, default $PWD"
|
||||
@echo "BINDIR=<yourbin>: binary installation dir below INSTALLROOT, default bin"
|
||||
@echo "LIBDIR=<yourlib>: library installation dir below INSTALLROOT, default lib"
|
||||
@echo "INCDIR=<yourincludes>: header installation dir below INSTALLROOT, default include"
|
||||
@echo "DOCDIR=<yourdoc>: documentation installation dir below INSTALLROOT, default doc"
|
58
Makefile.include
Executable file
@ -0,0 +1,58 @@
|
||||
##############################################################
|
||||
# Generic
|
||||
##############################################################
|
||||
|
||||
CC = g++
|
||||
CXX = $(CC)
|
||||
ASM=$(shell echo "/lib/modules/`uname -r`/build/include")
|
||||
LDFLAGDETONLY = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsDetector
|
||||
LDFLAGDET = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsDetector -L/usr/lib64/ -pthread
|
||||
LDFLAGRXR = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -pthread
|
||||
FLAGS= -Wall -pthread #-DEIGER_DEBUG2
|
||||
# -DVERBOSE
|
||||
|
||||
# Setting up the verbose flags
|
||||
ifeq ($(DEBUG),1)
|
||||
FLAGS = -Wall -DVERBOSE
|
||||
endif
|
||||
ifeq ($(DEBUG),2)
|
||||
FLAGS = -Wall -DVERYVERBOSE
|
||||
endif
|
||||
|
||||
##############################################################
|
||||
# HDF5 specific. Set this to yes, if you want to compile
|
||||
# HDF5 code: in this case, you need HDF5 libraries
|
||||
##############################################################
|
||||
|
||||
HDF5 = no
|
||||
HDF5_DIR = /opt/hdf5v1.10.0
|
||||
|
||||
ifeq ($(HDF5),yes)
|
||||
LDFLAGRXR = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsReceiver -L$(HDF5_DIR)/lib -Wl,-rpath=$(HDF5_DIR)/lib -lhdf5 -lhdf5_cpp -lsz -lz -DHDF5C -L/usr/lib64/ -pthread
|
||||
INCLUDESRXR = -I$(HDF5_DIR)/include
|
||||
endif
|
||||
|
||||
|
||||
##############################################################
|
||||
# ROOTSLS specific. Set this to yes, if you want to compile
|
||||
# ROOTSLS code: in this case, you need also root libraries
|
||||
##############################################################
|
||||
|
||||
ROOTSLS = no
|
||||
|
||||
ROOTFLAGS = $(shell root-config --cflags --glibs) -DMYROOT1 #-DALLFILE_DEBUG #-DMYROOT1
|
||||
|
||||
ifeq ($(ROOTSLS),yes)
|
||||
LDFLAGRXR = -L$(LIBDIR) -lSlsReceiver $(ROOTFLAGS) -DROOTSLS
|
||||
endif
|
||||
|
||||
|
||||
define colorecho
|
||||
@tput setaf 6
|
||||
@echo $1
|
||||
@tput sgr0
|
||||
endef
|
||||
|
||||
|
||||
|
||||
|
91
README.md
Normal file
@ -0,0 +1,91 @@
|
||||
### Documentation
|
||||
Detailed documentation can be found on the [official site.](https://www.psi.ch/detectors/users-support)
|
||||
|
||||
### Binaries
|
||||
Documentation to obtain the binaries via the conda package is available for [lib](https://github.com/slsdetectorgroup/sls_detector_lib) and [gui](https://github.com/slsdetectorgroup/sls_detector_gui)
|
||||
|
||||
### Source code
|
||||
One can also obtain the source code from this repository and compile while realizing the setup dependencies as required.
|
||||
```
|
||||
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git
|
||||
|
||||
```
|
||||
#### Setup dependencies
|
||||
* Gui Client <br>
|
||||
Requirements: Qt 4.8 and Qwt 6.0
|
||||
```
|
||||
export QTDIR=/usr/local/Trolltech/
|
||||
export QWTDIR=/usr/local/qwt-6.0.1/
|
||||
```
|
||||
If either of them does not exist, the GUI client will not be built.
|
||||
|
||||
* Advanced user Calibration wizards<br>
|
||||
Requirements: ROOT
|
||||
```
|
||||
export ROOTSYS=/usr/local/root-5.34
|
||||
```
|
||||
|
||||
#### Compilation
|
||||
|
||||
Compiling can be done in two ways.
|
||||
|
||||
**1. Compile using script cmk.sh**<br>
|
||||
|
||||
After compiling, the libraries and executables will be found in `slsDetectorPackage/build/bin` directory<br>
|
||||
|
||||
Usage: [-c] [-b] [-h] [-d HDF5 directory] [-j]<br>
|
||||
* -[no option]: only make<br>
|
||||
* -c: Clean<br>
|
||||
* -b: Builds/Rebuilds CMake files normal mode<br>
|
||||
* -h: Builds/Rebuilds Cmake files with HDF5 package<br>
|
||||
* -d: HDF5 Custom Directory<br>
|
||||
* -t: Build/Rebuilds only text client<br>
|
||||
* -r: Build/Rebuilds only receiver<br>
|
||||
* -g: Build/Rebuilds only gui<br>
|
||||
* -j: Number of threads to compile through<br>
|
||||
* -e: Debug mode
|
||||
|
||||
Basic Option:
|
||||
./cmk.sh -b
|
||||
|
||||
For only make:
|
||||
./cmk.sh
|
||||
|
||||
For make clean;make:
|
||||
./cmk.sh -c
|
||||
|
||||
For using hdf5 without custom dir /blabla:
|
||||
./cmk.sh -h -d /blabla
|
||||
|
||||
For rebuilding cmake without hdf5
|
||||
./cmk.sh -b
|
||||
|
||||
For using multiple cores to compile faster:
|
||||
./cmk.sh -j9<br>
|
||||
|
||||
|
||||
For rebuilding only certain sections<br>
|
||||
./cmk.sh -tg #only text client and gui<br>
|
||||
./cmk.sh -r #only receiver<br>
|
||||
|
||||
|
||||
**2. Compile without script**<br>
|
||||
Use cmake to create out-of-source builds, by creating a build folder parallel to source directory.
|
||||
```
|
||||
$ cd ..
|
||||
$ mkdir slsDetectorPackage-build
|
||||
$ cd slsDetectorPackage-build
|
||||
$ cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_HDF5=OFF
|
||||
$ make
|
||||
```
|
||||
|
||||
Use the following as an example to compile statically and using specific hdf5 folder
|
||||
```
|
||||
$ HDF5_ROOT=/opt/hdf5v1.10.0 cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_HDF5=ON
|
||||
```
|
||||
After compiling, the libraries and executables will be found at `bin` directory
|
||||
```
|
||||
$ ls bin/
|
||||
gui_client libSlsDetector.a libSlsDetector.so libSlsReceiver.a libSlsReceiver.so
|
||||
sls_detector_acquire sls_detector_get slsDetectorGui sls_detector_help sls_detector_put slsReceiver slsMultiReceiver
|
||||
```
|
1
cleansharedmemory.sh
Normal file
@ -0,0 +1 @@
|
||||
rm /dev/shm/slsDetectorPackage*;
|
11
cmake/FindCBF.cmake
Normal file
@ -0,0 +1,11 @@
|
||||
FIND_PATH (CBF_INCLUDE_DIR
|
||||
${CBF_DIR}/include
|
||||
${CBF_DIR}/include/cbflib
|
||||
)
|
||||
FIND_LIBRARY (CBF_LIBRARY
|
||||
NAMES cbf
|
||||
HINTS ${CBF_DIR}/lib
|
||||
)
|
||||
INCLUDE ( FindPackageHandleStandardArgs )
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS (CBF DEFAULT_MSG CBF_LIBRARY CBF_INCLUDE_DIR )
|
||||
|
118
cmake/FindQwt.cmake
Normal file
@ -0,0 +1,118 @@
|
||||
# Qt Widgets for Technical Applications
|
||||
# available at http://www.http://qwt.sourceforge.net/
|
||||
#
|
||||
# The module defines the following variables:
|
||||
# QWT_FOUND - the system has Qwt
|
||||
# QWT_INCLUDE_DIR - where to find qwt_plot.h
|
||||
# QWT_INCLUDE_DIRS - qwt includes
|
||||
# QWT_LIBRARY - where to find the Qwt library
|
||||
# QWT_LIBRARIES - aditional libraries
|
||||
# QWT_MAJOR_VERSION - major version
|
||||
# QWT_MINOR_VERSION - minor version
|
||||
# QWT_PATCH_VERSION - patch version
|
||||
# QWT_VERSION_STRING - version (ex. 5.2.1)
|
||||
# QWT_ROOT_DIR - root dir (ex. /usr/local)
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2010-2013, Julien Schueller
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice, this
|
||||
# list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
# The views and conclusions contained in the software and documentation are those
|
||||
# of the authors and should not be interpreted as representing official policies,
|
||||
# either expressed or implied, of the FreeBSD Project.
|
||||
#=============================================================================
|
||||
|
||||
|
||||
find_path ( QWT_INCLUDE_DIR
|
||||
NAMES qwt_plot.h
|
||||
HINTS $ENV{QWTDIR} $ENV{QWTDIR}/src ${QT_INCLUDE_DIR}
|
||||
PATH_SUFFIXES qwt qwt-qt3 qwt-qt4 qwt-qt5
|
||||
)
|
||||
|
||||
set ( QWT_INCLUDE_DIRS ${QWT_INCLUDE_DIR} )
|
||||
|
||||
# version
|
||||
set ( _VERSION_FILE ${QWT_INCLUDE_DIR}/qwt_global.h )
|
||||
if ( EXISTS ${_VERSION_FILE} )
|
||||
file ( STRINGS ${_VERSION_FILE} _VERSION_LINE REGEX "define[ ]+QWT_VERSION_STR" )
|
||||
if ( _VERSION_LINE )
|
||||
string ( REGEX REPLACE ".*define[ ]+QWT_VERSION_STR[ ]+\"(.*)\".*" "\\1" QWT_VERSION_STRING "${_VERSION_LINE}" )
|
||||
string ( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1" QWT_MAJOR_VERSION "${QWT_VERSION_STRING}" )
|
||||
string ( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\2" QWT_MINOR_VERSION "${QWT_VERSION_STRING}" )
|
||||
string ( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\3" QWT_PATCH_VERSION "${QWT_VERSION_STRING}" )
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
|
||||
# check version
|
||||
set ( _QWT_VERSION_MATCH TRUE )
|
||||
if ( Qwt_FIND_VERSION AND QWT_VERSION_STRING )
|
||||
if ( Qwt_FIND_VERSION_EXACT )
|
||||
if ( NOT Qwt_FIND_VERSION VERSION_EQUAL QWT_VERSION_STRING )
|
||||
set ( _QWT_VERSION_MATCH FALSE )
|
||||
endif ()
|
||||
else ()
|
||||
if ( QWT_VERSION_STRING VERSION_LESS Qwt_FIND_VERSION )
|
||||
set ( _QWT_VERSION_MATCH FALSE )
|
||||
endif ()
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
|
||||
find_library ( QWT_LIBRARY
|
||||
NAMES qwt qwt-qt3 qwt-qt4 qwt-qt5
|
||||
HINTS $ENV{QWTDIR}/lib ${QT_LIBRARY_DIR}
|
||||
)
|
||||
|
||||
set ( QWT_LIBRARIES ${QWT_LIBRARY} )
|
||||
|
||||
|
||||
# try to guess root dir from include dir
|
||||
if ( QWT_INCLUDE_DIR )
|
||||
string ( REGEX REPLACE "(.*)/include.*" "\\1" QWT_ROOT_DIR ${QWT_INCLUDE_DIR} )
|
||||
# try to guess root dir from library dir
|
||||
elseif ( QWT_LIBRARY )
|
||||
string ( REGEX REPLACE "(.*)/lib[/|32|64].*" "\\1" QWT_ROOT_DIR ${QWT_LIBRARY} )
|
||||
endif ()
|
||||
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments
|
||||
include ( FindPackageHandleStandardArgs )
|
||||
if ( CMAKE_VERSION LESS 2.8.3 )
|
||||
find_package_handle_standard_args( Qwt DEFAULT_MSG QWT_LIBRARY QWT_INCLUDE_DIR _QWT_VERSION_MATCH )
|
||||
else ()
|
||||
find_package_handle_standard_args( Qwt REQUIRED_VARS QWT_LIBRARY QWT_INCLUDE_DIR _QWT_VERSION_MATCH VERSION_VAR QWT_VERSION_STRING )
|
||||
endif ()
|
||||
|
||||
|
||||
mark_as_advanced (
|
||||
QWT_LIBRARY
|
||||
QWT_LIBRARIES
|
||||
QWT_INCLUDE_DIR
|
||||
QWT_INCLUDE_DIRS
|
||||
QWT_MAJOR_VERSION
|
||||
QWT_MINOR_VERSION
|
||||
QWT_PATCH_VERSION
|
||||
QWT_VERSION_STRING
|
||||
QWT_ROOT_DIR
|
||||
)
|
167
cmake/FindROOT.cmake
Normal file
@ -0,0 +1,167 @@
|
||||
# - Finds ROOT instalation
|
||||
# This module sets up ROOT information
|
||||
# It defines:
|
||||
# ROOT_FOUND If the ROOT is found
|
||||
# ROOT_INCLUDE_DIR PATH to the include directory
|
||||
# ROOT_LIBRARIES Most common libraries
|
||||
# ROOT_GUI_LIBRARIES Most common libraries + GUI
|
||||
# ROOT_LIBRARY_DIR PATH to the library directory
|
||||
|
||||
|
||||
find_program(ROOT_CONFIG_EXECUTABLE root-config
|
||||
PATHS $ENV{ROOTSYS}/bin)
|
||||
|
||||
if(NOT ROOT_CONFIG_EXECUTABLE)
|
||||
set(ROOT_FOUND FALSE)
|
||||
else()
|
||||
set(ROOT_FOUND TRUE)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${ROOT_CONFIG_EXECUTABLE} --prefix
|
||||
OUTPUT_VARIABLE ROOTSYS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${ROOT_CONFIG_EXECUTABLE} --version
|
||||
OUTPUT_VARIABLE ROOT_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${ROOT_CONFIG_EXECUTABLE} --incdir
|
||||
OUTPUT_VARIABLE ROOT_INCLUDE_DIR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${ROOT_CONFIG_EXECUTABLE} --libs
|
||||
OUTPUT_VARIABLE ROOT_LIBRARIES
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${ROOT_CONFIG_EXECUTABLE} --glibs
|
||||
OUTPUT_VARIABLE ROOT_GUI_LIBRARIES
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
#set(ROOT_LIBRARIES ${ROOT_LIBRARIES} -lThread -lMinuit -lHtml -lVMC -lEG -lGeom -lTreePlayer -lXMLIO -lProof)
|
||||
#set(ROOT_LIBRARIES ${ROOT_LIBRARIES} -lProofPlayer -lMLP -lSpectrum -lEve -lRGL -lGed -lXMLParser -lPhysics)
|
||||
set(ROOT_LIBRARY_DIR ${ROOTSYS}/lib)
|
||||
|
||||
# Make variables changeble to the advanced user
|
||||
mark_as_advanced(ROOT_CONFIG_EXECUTABLE)
|
||||
|
||||
if(NOT ROOT_FIND_QUIETLY)
|
||||
message(STATUS "Found ROOT ${ROOT_VERSION} in ${ROOTSYS}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
include(CMakeParseArguments)
|
||||
find_program(ROOTCINT_EXECUTABLE rootcint PATHS $ENV{ROOTSYS}/bin)
|
||||
find_program(GENREFLEX_EXECUTABLE genreflex PATHS $ENV{ROOTSYS}/bin)
|
||||
find_package(GCCXML)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# function ROOT_GENERATE_DICTIONARY( dictionary
|
||||
# header1 header2 ...
|
||||
# LINKDEF linkdef1 ...
|
||||
# OPTIONS opt1...)
|
||||
function(ROOT_GENERATE_DICTIONARY dictionary)
|
||||
CMAKE_PARSE_ARGUMENTS(ARG "" "" "LINKDEF;OPTIONS" "" ${ARGN})
|
||||
#---Get the list of header files-------------------------
|
||||
set(headerfiles)
|
||||
foreach(fp ${ARG_UNPARSED_ARGUMENTS})
|
||||
file(GLOB files ${fp})
|
||||
if(files)
|
||||
foreach(f ${files})
|
||||
if(NOT f MATCHES LinkDef)
|
||||
set(headerfiles ${headerfiles} ${f})
|
||||
endif()
|
||||
endforeach()
|
||||
else()
|
||||
set(headerfiles ${headerfiles} ${fp})
|
||||
endif()
|
||||
endforeach()
|
||||
#---Get the list of include directories------------------
|
||||
get_directory_property(incdirs INCLUDE_DIRECTORIES)
|
||||
set(includedirs)
|
||||
foreach( d ${incdirs})
|
||||
set(includedirs ${includedirs} -I${d})
|
||||
endforeach()
|
||||
#---Get LinkDef.h file------------------------------------
|
||||
set(linkdefs)
|
||||
foreach( f ${ARG_LINKDEF})
|
||||
if( IS_ABSOLUTE ${f})
|
||||
set(linkdefs ${linkdefs} ${f})
|
||||
else()
|
||||
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/inc/${f})
|
||||
set(linkdefs ${linkdefs} ${CMAKE_CURRENT_SOURCE_DIR}/inc/${f})
|
||||
else()
|
||||
set(linkdefs ${linkdefs} ${CMAKE_CURRENT_SOURCE_DIR}/${f})
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
#---call rootcint------------------------------------------
|
||||
add_custom_command(OUTPUT ${dictionary}.cxx ${dictionary}.h
|
||||
COMMAND ${ROOTCINT_EXECUTABLE} -cint -f ${dictionary}.cxx
|
||||
-c ${ARG_OPTIONS} ${includedirs} ${headerfiles} ${linkdefs}
|
||||
DEPENDS ${headerfiles} ${linkdefs})
|
||||
endfunction()
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# function REFLEX_GENERATE_DICTIONARY(dictionary
|
||||
# header1 header2 ...
|
||||
# SELECTION selectionfile ...
|
||||
# OPTIONS opt1...)
|
||||
function(REFLEX_GENERATE_DICTIONARY dictionary)
|
||||
CMAKE_PARSE_ARGUMENTS(ARG "" "" "SELECTION;OPTIONS" "" ${ARGN})
|
||||
#---Get the list of header files-------------------------
|
||||
set(headerfiles)
|
||||
foreach(fp ${ARG_UNPARSED_ARGUMENTS})
|
||||
file(GLOB files ${fp})
|
||||
if(files)
|
||||
foreach(f ${files})
|
||||
set(headerfiles ${headerfiles} ${f})
|
||||
endforeach()
|
||||
else()
|
||||
set(headerfiles ${headerfiles} ${fp})
|
||||
endif()
|
||||
endforeach()
|
||||
#---Get Selection file------------------------------------
|
||||
if(IS_ABSOLUTE ${ARG_SELECTION})
|
||||
set(selectionfile ${ARG_SELECTION})
|
||||
else()
|
||||
set(selectionfile ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_SELECTION})
|
||||
endif()
|
||||
#---Get the list of include directories------------------
|
||||
get_directory_property(incdirs INCLUDE_DIRECTORIES)
|
||||
set(includedirs)
|
||||
foreach( d ${incdirs})
|
||||
set(includedirs ${includedirs} -I${d})
|
||||
endforeach()
|
||||
#---Get preprocessor definitions--------------------------
|
||||
get_directory_property(defs COMPILE_DEFINITIONS)
|
||||
foreach( d ${defs})
|
||||
set(definitions ${definitions} -D${d})
|
||||
endforeach()
|
||||
#---Nanes and others---------------------------------------
|
||||
set(gensrcdict ${dictionary}.cpp)
|
||||
if(MSVC)
|
||||
set(gccxmlopts "--gccxmlopt=\"--gccxml-compiler cl\"")
|
||||
else()
|
||||
#set(gccxmlopts "--gccxmlopt=\'--gccxml-cxxflags -m64 \'")
|
||||
set(gccxmlopts)
|
||||
endif()
|
||||
#set(rootmapname ${dictionary}Dict.rootmap)
|
||||
#set(rootmapopts --rootmap=${rootmapname} --rootmap-lib=${libprefix}${dictionary}Dict)
|
||||
#---Check GCCXML and get path-----------------------------
|
||||
if(GCCXML)
|
||||
get_filename_component(gccxmlpath ${GCCXML} PATH)
|
||||
else()
|
||||
message(WARNING "GCCXML not found. Install and setup your environment to find 'gccxml' executable")
|
||||
endif()
|
||||
#---Actual command----------------------------------------
|
||||
add_custom_command(OUTPUT ${gensrcdict} ${rootmapname}
|
||||
COMMAND ${GENREFLEX_EXECUTABLE} ${headerfiles} -o ${gensrcdict} ${gccxmlopts} ${rootmapopts} --select=${selectionfile}
|
||||
--gccxmlpath=${gccxmlpath} ${ARG_OPTIONS} ${includedirs} ${definitions}
|
||||
DEPENDS ${headerfiles} ${selectionfile})
|
||||
endfunction()
|
||||
|
204
cmk.sh
Executable file
@ -0,0 +1,204 @@
|
||||
#!/bin/bash
|
||||
BUILDDIR="build"
|
||||
HDF5DIR="/opt/hdf5v1.10.0"
|
||||
HDF5=0
|
||||
COMPILERTHREADS=0
|
||||
TEXTCLIENT=0
|
||||
RECEIVER=0
|
||||
GUI=0
|
||||
DEBUG=0
|
||||
|
||||
|
||||
CLEAN=0
|
||||
REBUILD=0
|
||||
CMAKE_PRE=""
|
||||
CMAKE_POST=""
|
||||
|
||||
usage() { echo -e "
|
||||
Usage: $0 [-c] [-b] [-h] [-d <HDF5 directory>] [-j]
|
||||
-[no option]: only make
|
||||
-c: Clean
|
||||
-b: Builds/Rebuilds CMake files normal mode
|
||||
-h: Builds/Rebuilds Cmake files with HDF5 package
|
||||
-d: HDF5 Custom Directory
|
||||
-t: Build/Rebuilds only text client
|
||||
-r: Build/Rebuilds only receiver
|
||||
-g: Build/Rebuilds only gui
|
||||
-j: Number of threads to compile through
|
||||
-e: Debug mode
|
||||
|
||||
For only make:
|
||||
./cmk.sh
|
||||
|
||||
For make clean;make:
|
||||
./cmk.sh -c
|
||||
|
||||
For using hdf5 without default dir /opt/hdf5v1.10.0:
|
||||
./cmk.sh -h
|
||||
|
||||
For using hdf5 without custom dir /blabla:
|
||||
./cmk.sh -h -d /blabla
|
||||
|
||||
For rebuilding cmake without hdf5 (Use this if you had previously run with hdf5 and now you dont want it)
|
||||
./cmk.sh -b
|
||||
|
||||
For using multiple cores to compile faster:
|
||||
(all these options work)
|
||||
./cmk.sh -j9
|
||||
./cmk.sh -cj9 #with clean
|
||||
./cmk.sh -hj9 #with hdf5
|
||||
./cmk.sh -j9 -h #with hdf
|
||||
|
||||
For rebuilding only certain sections
|
||||
./cmk.sh -tg #only text client and gui
|
||||
./cmk.sh -r #only receiver
|
||||
|
||||
" ; exit 1; }
|
||||
|
||||
while getopts ":bchd:j:trge" opt ; do
|
||||
case $opt in
|
||||
b)
|
||||
echo "Building of CMake files Required"
|
||||
REBUILD=1
|
||||
;;
|
||||
c)
|
||||
echo "Clean Required"
|
||||
CLEAN=1
|
||||
;;
|
||||
h)
|
||||
echo "Building of CMake files with HDF5 option Required"
|
||||
HDF5=1
|
||||
REBUILD=1
|
||||
;;
|
||||
d)
|
||||
echo "New HDF5 directory: $OPTARG"
|
||||
HDF5DIR=$OPTARG
|
||||
;;
|
||||
j)
|
||||
echo "Number of compiler threads: $OPTARG"
|
||||
COMPILERTHREADS=$OPTARG
|
||||
;;
|
||||
t)
|
||||
echo "Compiling Options: Text Client"
|
||||
TEXTCLIENT=1
|
||||
REBUILD=1
|
||||
;;
|
||||
r)
|
||||
echo "Compiling Options: Receiver"
|
||||
RECEIVER=1
|
||||
REBUILD=1
|
||||
;;
|
||||
g)
|
||||
echo "Compiling Options: GUI"
|
||||
GUI=1
|
||||
REBUILD=1
|
||||
;;
|
||||
e)
|
||||
echo "Compiling Options: Debug"
|
||||
DEBUG=1
|
||||
;;
|
||||
\?)
|
||||
echo "Invalid option: -$OPTARG"
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
:)
|
||||
echo "Option -$OPTARG requires an argument."
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if [ $TEXTCLIENT -eq 0 ] && [ $RECEIVER -eq 0 ] && [ $GUI -eq 0 ]; then
|
||||
CMAKE_POST+=" -DSLS_USE_TEXTCLIENT=ON -DSLS_USE_RECEIVER=ON -DSLS_USE_GUI=ON "
|
||||
echo "Compile Option: TextClient, Receiver and GUI"
|
||||
else
|
||||
if [ $TEXTCLIENT -eq 1 ]; then
|
||||
CMAKE_POST+=" -DSLS_USE_TEXTCLIENT=ON "
|
||||
echo "Compile Option: TextClient"
|
||||
fi
|
||||
if [ $RECEIVER -eq 1 ]; then
|
||||
CMAKE_POST+=" -DSLS_USE_RECEIVER=ON "
|
||||
echo "Compile Option: Receiver"
|
||||
fi
|
||||
|
||||
if [ $GUI -eq 1 ]; then
|
||||
CMAKE_POST+=" -DSLS_USE_GUI=ON "
|
||||
echo "Compile Option: GUI"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#build dir doesnt exist
|
||||
if [ ! -d "$BUILDDIR" ] ; then
|
||||
echo "No Build Directory. Building of Cmake files required"
|
||||
mkdir $BUILDDIR;
|
||||
REBUILD=1
|
||||
else
|
||||
#rebuild not requested, but no makefile
|
||||
if [ $REBUILD -eq 0 ] && [ ! -f "$BUILDDIR/Makefile" ] ; then
|
||||
echo "No Makefile. Building of Cmake files required"
|
||||
REBUILD=1
|
||||
fi
|
||||
fi
|
||||
|
||||
#Debug
|
||||
if [ $DEBUG -eq 1 ]; then
|
||||
CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug "
|
||||
echo "Debug Option enabled"
|
||||
fi
|
||||
|
||||
|
||||
#hdf5 rebuild
|
||||
if [ $HDF5 -eq 1 ]; then
|
||||
CMAKE_PRE+="HDF5_ROOT="$HDF5DIR
|
||||
CMAKE_POST+=" -DSLS_USE_HDF5=ON "
|
||||
#normal mode rebuild
|
||||
else
|
||||
CMAKE_POST+=" -DSLS_USE_HDF5=OFF "
|
||||
fi
|
||||
|
||||
|
||||
#enter build dir
|
||||
cd $BUILDDIR;
|
||||
echo "in "$PWD
|
||||
|
||||
|
||||
|
||||
#cmake
|
||||
if [ $REBUILD -eq 1 ]; then
|
||||
rm -f CMakeCache.txt
|
||||
BUILDCOMMAND="$CMAKE_PRE cmake $CMAKE_POST .."
|
||||
echo $BUILDCOMMAND
|
||||
eval $BUILDCOMMAND
|
||||
fi
|
||||
|
||||
#make clean
|
||||
if [ $CLEAN -eq 1 ]; then
|
||||
make clean;
|
||||
fi
|
||||
|
||||
|
||||
#make
|
||||
if [ $COMPILERTHREADS -gt 0 ]; then
|
||||
BUILDCOMMAND="make -j$COMPILERTHREADS"
|
||||
echo $BUILDCOMMAND
|
||||
eval $BUILDCOMMAND
|
||||
else
|
||||
make
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
15
commitVersions.sh
Normal file
@ -0,0 +1,15 @@
|
||||
sh updateSvnVersion.sh
|
||||
|
||||
cd slsDetectorGui
|
||||
git commit -a -m "updating versions"
|
||||
git push origin developer:developer
|
||||
|
||||
cd ../slsDetectorSoftware
|
||||
git commit -a -m "updating versions"
|
||||
git push origin developer:developer
|
||||
|
||||
cd ../slsReceiverSoftware
|
||||
git commit -a -m "updating versions"
|
||||
git push origin developer:developer
|
||||
|
||||
cd ..
|
58
configure
vendored
Executable file
@ -0,0 +1,58 @@
|
||||
##!/bin/bash
|
||||
|
||||
: ${INSTALLROOT=$PWD}
|
||||
read -p "Installation directory [default:\"$INSTALLROOT\"]:" -e t3
|
||||
if [ -z "$t3" ]
|
||||
then
|
||||
echo
|
||||
else
|
||||
INSTALLROOT=$t3
|
||||
fi
|
||||
echo "INSTALLROOT will be \"$INSTALLROOT\""
|
||||
export INSTALLROOT
|
||||
|
||||
: ${BINDIR="bin"}
|
||||
read -p "Binaries directory [default:\"$BINDIR\"]:" -e t4
|
||||
if [ -z "$t4" ]
|
||||
then
|
||||
BINDIR=$INSTALLROOT/$BINDIR
|
||||
else
|
||||
BINDIR=$INSTALLROOT/$t4
|
||||
fi
|
||||
echo "BINDIR will be \"$BINDIR\""
|
||||
export BINDIR
|
||||
|
||||
: ${LIBDIR="bin"}
|
||||
read -p "Libraries directory [default:\"$LIBDIR\"]:" -e t5
|
||||
if [ -z "$t5" ]
|
||||
then
|
||||
LIBDIR=$INSTALLROOT/$LIBDIR
|
||||
else
|
||||
LIBDIR=$INSTALLROOT/$t5
|
||||
fi
|
||||
echo "LIBDIR will be \"$LIBDIR\""
|
||||
export LIBDIR
|
||||
|
||||
: ${INCDIR="include"}
|
||||
read -p "Includes directory [default:\"$INCDIR\"]:" -e t6
|
||||
if [ -z "$t6" ]
|
||||
then
|
||||
INCDIR=$INSTALLROOT/$INCDIR
|
||||
else
|
||||
INCDIR=$INSTALLROOT/$t6
|
||||
fi
|
||||
echo "INCDIR will be \"$INCDIR\""
|
||||
export INCDIR
|
||||
|
||||
: ${DOCDIR="doc"}
|
||||
read -p "Documentation directory [default:\"$DOCDIR\"]:" -e t7
|
||||
if [ -z "$t7" ]
|
||||
then
|
||||
DOCDIR=$INSTALLROOT/$DOCDIR
|
||||
else
|
||||
DOCDIR=$INSTALLROOT/$t7
|
||||
fi
|
||||
echo "DOCDIR will be \"$DOCDIR\""
|
||||
export DOCDIR
|
||||
|
||||
|
Before Width: | Height: | Size: 245 B |
Before Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 279 B |
Before Width: | Height: | Size: 327 B |
Before Width: | Height: | Size: 211 B |
Before Width: | Height: | Size: 231 B |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 245 B |
Before Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 279 B |
Before Width: | Height: | Size: 327 B |
Before Width: | Height: | Size: 211 B |
Before Width: | Height: | Size: 231 B |
Before Width: | Height: | Size: 245 B |
Before Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 279 B |
Before Width: | Height: | Size: 327 B |
Before Width: | Height: | Size: 211 B |
Before Width: | Height: | Size: 231 B |
Before Width: | Height: | Size: 147 B |
Before Width: | Height: | Size: 245 B |
Before Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 279 B |
Before Width: | Height: | Size: 327 B |
Before Width: | Height: | Size: 211 B |
Before Width: | Height: | Size: 231 B |
@ -1,73 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>About this document ...</TITLE>
|
||||
<META NAME="description" CONTENT="About this document ...">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="previous" HREF="Software_Upgrade.html">
|
||||
<LINK REL="up" HREF="slsDetectorInstall.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_g.png">
|
||||
<A NAME="tex2html437"
|
||||
HREF="slsDetectorInstall.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html433"
|
||||
HREF="JUNGFRAU_On_board_Software.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html439"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Up:</B> <A NAME="tex2html438"
|
||||
HREF="slsDetectorInstall.html">SLS Detectors software installation</A>
|
||||
<B> Previous:</B> <A NAME="tex2html434"
|
||||
HREF="JUNGFRAU_On_board_Software.html">JUNGFRAU On-board Software</A>
|
||||
<B> <A NAME="tex2html440"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION00060000000000000000">
|
||||
About this document ...</A>
|
||||
</H1>
|
||||
<STRONG>SLS Detectors software installation</STRONG><P>
|
||||
This document was generated using the
|
||||
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2012 (1.2)
|
||||
<P>
|
||||
Copyright © 1993, 1994, 1995, 1996,
|
||||
<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
|
||||
Computer Based Learning Unit, University of Leeds.
|
||||
<BR>
|
||||
Copyright © 1997, 1998, 1999,
|
||||
<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
|
||||
Mathematics Department, Macquarie University, Sydney.
|
||||
<P>
|
||||
The command line arguments were: <BR>
|
||||
<STRONG>latex2html</STRONG> <TT>-local_icons -split 16 -long_titles 5 slsDetectorInstall.tex</TT>
|
||||
<P>
|
||||
The translation was initiated by Thattil Dhanya on 2019-04-08
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,146 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Binaries</TITLE>
|
||||
<META NAME="description" CONTENT="Binaries">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="previous" HREF="Software_Package.html">
|
||||
<LINK REL="up" HREF="Software_Package.html">
|
||||
<LINK REL="next" HREF="Install_Binaries_via_Conda.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html86"
|
||||
HREF="Install_Binaries_via_Conda.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html82"
|
||||
HREF="Software_Package.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html78"
|
||||
HREF="Software_Package.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html84"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html87"
|
||||
HREF="Install_Binaries_via_Conda.html">Install Binaries via Conda</A>
|
||||
<B> Up:</B> <A NAME="tex2html83"
|
||||
HREF="Software_Package.html">The Software Package</A>
|
||||
<B> Previous:</B> <A NAME="tex2html79"
|
||||
HREF="Software_Package.html">The Software Package</A>
|
||||
<B> <A NAME="tex2html85"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00021000000000000000">
|
||||
Binaries</A>
|
||||
</H2>
|
||||
The complete software package is composed of several programs which
|
||||
can be installed (or locally compiled) depending on one's requirements:
|
||||
|
||||
<P>
|
||||
|
||||
<UL>
|
||||
<LI><FONT COLOR="#0000ff">libSlsDetector.so, libSlsReceiver.so</FONT>:
|
||||
<BR>
|
||||
The <I>slsDetector shared and static libraries</I>, which are
|
||||
necessary for all user interfaces. The <I>C++ API</I> via the class
|
||||
<I>slsDetectorUsers</I> (installed with the default package) or the
|
||||
<I>Python API</I> via the class <I>sls_detector</I> (installed with the
|
||||
package including Python API), which can be used from the user's acquisition
|
||||
software to control the detectors and the data receivers.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI><FONT COLOR="#0000ff">sls_detector_put, sls_detector_get,
|
||||
sls_detector_acquire, sls_detector_help</FONT>:
|
||||
<BR>
|
||||
The <I>command line interfaces</I>, which are provided to communicate with the
|
||||
detectors and data receivers using the command line.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI><FONT COLOR="#0000ff">slsReceiver</FONT>:
|
||||
<BR>
|
||||
The <I>data receiver</I>, which can be run on a different machine than the
|
||||
client, receives the data from the detector and processes it. The receiver can
|
||||
be configured, controlled and monitored by the client.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI><FONT COLOR="#0000ff">slsMultiReceiver</FONT>:
|
||||
<BR>
|
||||
It is the same as the <I>slsReceiver</I>, but that it is a single process
|
||||
for many multiple slsReceiver child processes. One can configure the start TCP port,
|
||||
number of slsReceiver processes and if call back should be enabled or not.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI><FONT COLOR="#0000ff">slsDetectorGUI</FONT>:
|
||||
<BR>
|
||||
The <I>graphical user interface</I>, which provides a user friendly way
|
||||
of operating the detectors and data receivers with online data preview.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI><FONT COLOR="#0000ff">energyCalibrationWizard,angularCalibrationWizard</FONT>:
|
||||
<BR>
|
||||
The <I>calibration wizards</I> to analyze the data and produce the energy or
|
||||
angular calibration files.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>The <I>virtual Detector servers</I> to simulate the detectors behavior.
|
||||
However, only control commands work, not the data acquisition itself.
|
||||
</LI>
|
||||
</UL>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html86"
|
||||
HREF="Install_Binaries_via_Conda.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html82"
|
||||
HREF="Software_Package.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html78"
|
||||
HREF="Software_Package.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html84"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html87"
|
||||
HREF="Install_Binaries_via_Conda.html">Install Binaries via Conda</A>
|
||||
<B> Up:</B> <A NAME="tex2html83"
|
||||
HREF="Software_Package.html">The Software Package</A>
|
||||
<B> Previous:</B> <A NAME="tex2html79"
|
||||
HREF="Software_Package.html">The Software Package</A>
|
||||
<B> <A NAME="tex2html85"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,77 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Compilation</TITLE>
|
||||
<META NAME="description" CONTENT="Compilation">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="Setting_environment_variabl.html">
|
||||
<LINK REL="previous" HREF="Requirements.html">
|
||||
<LINK REL="up" HREF="Install_via_Source_Code.html">
|
||||
<LINK REL="next" HREF="Using_script_cmk_sh.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html195"
|
||||
HREF="Using_script_cmk_sh.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html191"
|
||||
HREF="Install_via_Source_Code.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html185"
|
||||
HREF="Root_Installation_Calibrati.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html193"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html196"
|
||||
HREF="Using_script_cmk_sh.html">Using script cmk.sh</A>
|
||||
<B> Up:</B> <A NAME="tex2html192"
|
||||
HREF="Install_via_Source_Code.html">Install via Source Code</A>
|
||||
<B> Previous:</B> <A NAME="tex2html186"
|
||||
HREF="Root_Installation_Calibrati.html">Root Installation for Calibration</A>
|
||||
<B> <A NAME="tex2html194"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00043000000000000000">
|
||||
Compilation</A>
|
||||
</H2>
|
||||
One requires <code>cmake</code> to compile and can be done in two ways:
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html197"
|
||||
HREF="Using_script_cmk_sh.html">Using script cmk.sh</A>
|
||||
<LI><A NAME="tex2html198"
|
||||
HREF="Directly_using_cmake.html">Directly using cmake</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,84 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Download Source Code</TITLE>
|
||||
<META NAME="description" CONTENT="Download Source Code">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="Requirements.html">
|
||||
<LINK REL="previous" HREF="Install_via_Source_Code.html">
|
||||
<LINK REL="up" HREF="Install_via_Source_Code.html">
|
||||
<LINK REL="next" HREF="Requirements.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html134"
|
||||
HREF="Requirements.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html130"
|
||||
HREF="Install_via_Source_Code.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html124"
|
||||
HREF="Install_via_Source_Code.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html132"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html135"
|
||||
HREF="Requirements.html">Requirements</A>
|
||||
<B> Up:</B> <A NAME="tex2html131"
|
||||
HREF="Install_via_Source_Code.html">Install via Source Code</A>
|
||||
<B> Previous:</B> <A NAME="tex2html125"
|
||||
HREF="Install_via_Source_Code.html">Install via Source Code</A>
|
||||
<B> <A NAME="tex2html133"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00041000000000000000">
|
||||
Download Source Code</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
|
||||
<UL>
|
||||
<LI>Only the package
|
||||
<PRE>
|
||||
#Clone source code with specific release
|
||||
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git --branch
|
||||
4.0.0
|
||||
</PRE>
|
||||
</LI>
|
||||
<LI>The package including Python interface
|
||||
<PRE>
|
||||
#Clone source code with specific release
|
||||
git clone https://github.com/slsdetectorgroup/sls_detector.git --branch
|
||||
4.0.0
|
||||
</PRE>
|
||||
</LI>
|
||||
</UL>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,82 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>EIGER</TITLE>
|
||||
<META NAME="description" CONTENT="EIGER">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="JUNGFRAU.html">
|
||||
<LINK REL="previous" HREF="GOTTHARD.html">
|
||||
<LINK REL="up" HREF="Software_Upgrade.html">
|
||||
<LINK REL="next" HREF="EIGER_Firmware.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html373"
|
||||
HREF="EIGER_Firmware.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html369"
|
||||
HREF="Software_Upgrade.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html363"
|
||||
HREF="GOTTHARD_On_board_Software.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html371"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html374"
|
||||
HREF="EIGER_Firmware.html">EIGER Firmware</A>
|
||||
<B> Up:</B> <A NAME="tex2html370"
|
||||
HREF="Software_Upgrade.html">Software Upgrade</A>
|
||||
<B> Previous:</B> <A NAME="tex2html364"
|
||||
HREF="GOTTHARD_On_board_Software.html">GOTTHARD On-board Software</A>
|
||||
<B> <A NAME="tex2html372"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00053000000000000000">
|
||||
EIGER</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
In such cases, the users are not expected to compile the software
|
||||
themselves (which would require dedicated softwares) but only to download on the
|
||||
detector board the programming files and/or software package provided by
|
||||
the SLS Detectors group.
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html375"
|
||||
HREF="EIGER_Firmware.html">EIGER Firmware</A>
|
||||
<LI><A NAME="tex2html376"
|
||||
HREF="EIGER_On_board_Software.html">EIGER On-board Software</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,118 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>EIGER Firmware</TITLE>
|
||||
<META NAME="description" CONTENT="EIGER Firmware">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="EIGER_On_board_Software.html">
|
||||
<LINK REL="previous" HREF="EIGER.html">
|
||||
<LINK REL="up" HREF="EIGER.html">
|
||||
<LINK REL="next" HREF="EIGER_On_board_Software.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html387"
|
||||
HREF="EIGER_On_board_Software.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html383"
|
||||
HREF="EIGER.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html377"
|
||||
HREF="EIGER.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html385"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html388"
|
||||
HREF="EIGER_On_board_Software.html">EIGER On-board Software</A>
|
||||
<B> Up:</B> <A NAME="tex2html384"
|
||||
HREF="EIGER.html">EIGER</A>
|
||||
<B> Previous:</B> <A NAME="tex2html378"
|
||||
HREF="EIGER.html">EIGER</A>
|
||||
<B> <A NAME="tex2html386"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H3><A NAME="SECTION00053100000000000000">
|
||||
EIGER Firmware</A>
|
||||
</H3>
|
||||
<I>For SLS Detector Package v4.0.0</I>
|
||||
<BR>
|
||||
Minimum compatible version: 22
|
||||
<BR>
|
||||
Latest version: 22
|
||||
<BR>
|
||||
<P>
|
||||
|
||||
<OL>
|
||||
<LI>One must get the latest package's corresponding bit files from the SLS
|
||||
Detector Group.
|
||||
</LI>
|
||||
<LI>If one does not have the bcp script, that should also be obtained from
|
||||
the SLS Detector Group. It is required to program the bit files and requires
|
||||
that tftp be installed on the pc.
|
||||
</LI>
|
||||
<LI>Bring the detector into programmable mode by either of the following ways.
|
||||
Both ways end up in just the central LED blinking.
|
||||
|
||||
<OL>
|
||||
<LI>hard reset on the back panel boards resulting in blinking LEDS
|
||||
</LI>
|
||||
<LI>by having the following program running in the background.
|
||||
<PRE>
|
||||
boot_recovery
|
||||
</PRE>
|
||||
</LI>
|
||||
</OL>
|
||||
</LI>
|
||||
<LI>Start a terminal for each half module and run the following to see
|
||||
progress.
|
||||
<PRE>
|
||||
nc -p 3000 -u bebxxx 3000
|
||||
</PRE>
|
||||
</LI>
|
||||
<LI>Run the following to update firmware
|
||||
<PRE>
|
||||
#update back end fpga
|
||||
bcp download.bit bebxxx:/fw0
|
||||
|
||||
#update front left fpga
|
||||
bcp download.bit bebxxx:/febl
|
||||
|
||||
#update front right fpga
|
||||
bcp download.bit bebxxx:/febr
|
||||
|
||||
#update kernel
|
||||
bcp download.bit bebxxx:/kernel
|
||||
</PRE>
|
||||
Please update bit files with great caution as it could make your board
|
||||
inaccessible, if done incorrectly.
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,82 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>GOTTHARD</TITLE>
|
||||
<META NAME="description" CONTENT="GOTTHARD">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="EIGER.html">
|
||||
<LINK REL="previous" HREF="MYTHEN.html">
|
||||
<LINK REL="up" HREF="Software_Upgrade.html">
|
||||
<LINK REL="next" HREF="GOTTHARD_Firmware.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html337"
|
||||
HREF="GOTTHARD_Firmware.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html333"
|
||||
HREF="Software_Upgrade.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html327"
|
||||
HREF="MYTHEN_On_board_Software.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html335"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html338"
|
||||
HREF="GOTTHARD_Firmware.html">GOTTHARD Firmware</A>
|
||||
<B> Up:</B> <A NAME="tex2html334"
|
||||
HREF="Software_Upgrade.html">Software Upgrade</A>
|
||||
<B> Previous:</B> <A NAME="tex2html328"
|
||||
HREF="MYTHEN_On_board_Software.html">MYTHEN On-board Software</A>
|
||||
<B> <A NAME="tex2html336"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00052000000000000000">
|
||||
GOTTHARD</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
In such cases, the users are not expected to compile the software
|
||||
themselves (which would require dedicated softwares) but only to download on the
|
||||
detector board the programming files and/or software package provided by
|
||||
the SLS Detectors group.
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html339"
|
||||
HREF="GOTTHARD_Firmware.html">GOTTHARD Firmware</A>
|
||||
<LI><A NAME="tex2html340"
|
||||
HREF="GOTTHARD_On_board_Software.html">GOTTHARD On-board Software</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,120 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>GOTTHARD On-board Software</TITLE>
|
||||
<META NAME="description" CONTENT="GOTTHARD On-board Software">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="previous" HREF="GOTTHARD_Firmware.html">
|
||||
<LINK REL="up" HREF="GOTTHARD.html">
|
||||
<LINK REL="next" HREF="EIGER.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html361"
|
||||
HREF="EIGER.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html357"
|
||||
HREF="GOTTHARD.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html353"
|
||||
HREF="GOTTHARD_Firmware.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html359"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html362"
|
||||
HREF="EIGER.html">EIGER</A>
|
||||
<B> Up:</B> <A NAME="tex2html358"
|
||||
HREF="GOTTHARD.html">GOTTHARD</A>
|
||||
<B> Previous:</B> <A NAME="tex2html354"
|
||||
HREF="GOTTHARD_Firmware.html">GOTTHARD Firmware</A>
|
||||
<B> <A NAME="tex2html360"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H3><A NAME="SECTION00052200000000000000">
|
||||
GOTTHARD On-board Software</A>
|
||||
</H3>
|
||||
Every SLS Detector package release will have its coresponding matching on-board
|
||||
server under <B>slsDetectorPackage/serverBin</B>.
|
||||
|
||||
<P>
|
||||
|
||||
<OL>
|
||||
<LI>Install tftp if the pc does not have it.
|
||||
</LI>
|
||||
<LI>Copy the server from serverBin folder to /tftpboot (or equivalent tftp
|
||||
folder) of the pc
|
||||
</LI>
|
||||
<LI>Copy the server to the detector by:
|
||||
|
||||
<OL>
|
||||
<LI>Connect to the blackfin on the detector
|
||||
<BR><code>telnet bchipxxx</code>
|
||||
</LI>
|
||||
<LI>Prevent existing on-board server from respawning by:
|
||||
|
||||
<OL>
|
||||
<LI>Edit <code>/etc/inittab</code>
|
||||
</LI>
|
||||
<LI>Comment out the line
|
||||
<code>#ttyS0::respawn:/gotthardDetectorServervxxx</code>
|
||||
</LI>
|
||||
<LI>Reboot blackfin using <code>reboot</code>
|
||||
</LI>
|
||||
<LI>Run <code>ps</code> to ensure no gotthardDetectorServers are running
|
||||
|
||||
</LI>
|
||||
</OL>
|
||||
</LI>
|
||||
<LI>Copy new on-board server from pc to the blackfin using:
|
||||
<BR><code>tftp pcxxx -r gotthardDetectorServerxxx -g</code>
|
||||
</LI>
|
||||
<LI>Respawn the new server (server starts at detector statup):
|
||||
|
||||
<OL>
|
||||
<LI>Edit <code>/etc/inittab</code>
|
||||
</LI>
|
||||
<LI>Uncomment out the line
|
||||
<code>ttyS0::respawn:/gotthardDetectorServervxxx</code>
|
||||
</LI>
|
||||
<LI>Reboot blackfin using <code>reboot</code>
|
||||
</LI>
|
||||
<LI>Run <code>ps</code> to ensure that both the gotthardDetectorServers are
|
||||
running.
|
||||
<BR><code>gotthardDetectorServerxxx</code>
|
||||
<BR><code>gotthardDetectorServerxxx 1953</code>
|
||||
|
||||
</LI>
|
||||
</OL>
|
||||
</LI>
|
||||
</OL>
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,107 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Install via Source Code</TITLE>
|
||||
<META NAME="description" CONTENT="Install via Source Code">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="Software_Upgrade.html">
|
||||
<LINK REL="previous" HREF="Install_Binaries_via_Conda.html">
|
||||
<LINK REL="up" HREF="slsDetectorInstall.html">
|
||||
<LINK REL="next" HREF="Download_Source_Code.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html110"
|
||||
HREF="Download_Source_Code.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html106"
|
||||
HREF="slsDetectorInstall.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html100"
|
||||
HREF="Install_Binaries_via_Conda.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html108"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html111"
|
||||
HREF="Download_Source_Code.html">Download Source Code</A>
|
||||
<B> Up:</B> <A NAME="tex2html107"
|
||||
HREF="slsDetectorInstall.html">SLS Detectors software installation</A>
|
||||
<B> Previous:</B> <A NAME="tex2html101"
|
||||
HREF="Install_Binaries_via_Conda.html">Install Binaries via Conda</A>
|
||||
<B> <A NAME="tex2html109"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION00040000000000000000">
|
||||
Install via Source Code</A>
|
||||
</H1>
|
||||
This section is useful if one wants to use the API and embed it in their
|
||||
acquisition system, or if one wants to download the source code and compile.
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html112"
|
||||
HREF="Download_Source_Code.html">Download Source Code</A>
|
||||
<LI><A NAME="tex2html113"
|
||||
HREF="Requirements.html">Requirements</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html114"
|
||||
HREF="Qt4_Installation_GUI.html">Qt4 Installation for GUI</A>
|
||||
<LI><A NAME="tex2html115"
|
||||
HREF="Qwt_Installation_GUI.html">Qwt Installation for GUI</A>
|
||||
<LI><A NAME="tex2html116"
|
||||
HREF="Root_Installation_Calibrati.html">Root Installation for Calibration Wizards</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html117"
|
||||
HREF="Compilation.html">Compilation</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html118"
|
||||
HREF="Using_script_cmk_sh.html">Using script cmk.sh</A>
|
||||
<LI><A NAME="tex2html119"
|
||||
HREF="Directly_using_cmake.html">Directly using cmake</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html120"
|
||||
HREF="Setting_environment_variabl.html">Setting environment variables</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html121"
|
||||
HREF="Using_bashrc_file.html">Using .bashrc file</A>
|
||||
<LI><A NAME="tex2html122"
|
||||
HREF="Without_bashrc_file.html">Without .bashrc file</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html123"
|
||||
HREF="Clean_Shared_Memory.html">Clean Shared Memory</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,81 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>JUNGFRAU</TITLE>
|
||||
<META NAME="description" CONTENT="JUNGFRAU">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="previous" HREF="EIGER.html">
|
||||
<LINK REL="up" HREF="Software_Upgrade.html">
|
||||
<LINK REL="next" HREF="JUNGFRAU_Firmware.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html407"
|
||||
HREF="JUNGFRAU_Firmware.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html403"
|
||||
HREF="Software_Upgrade.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html399"
|
||||
HREF="EIGER_On_board_Software.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html405"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html408"
|
||||
HREF="JUNGFRAU_Firmware.html">JUNGFRAU Firmware</A>
|
||||
<B> Up:</B> <A NAME="tex2html404"
|
||||
HREF="Software_Upgrade.html">Software Upgrade</A>
|
||||
<B> Previous:</B> <A NAME="tex2html400"
|
||||
HREF="EIGER_On_board_Software.html">EIGER On-board Software</A>
|
||||
<B> <A NAME="tex2html406"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00054000000000000000">
|
||||
JUNGFRAU</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
In such cases, the users are not expected to compile the software
|
||||
themselves (which would require dedicated softwares) but only to download on the
|
||||
detector board the programming files and/or software package provided by
|
||||
the SLS Detectors group.
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html409"
|
||||
HREF="JUNGFRAU_Firmware.html">JUNGFRAU Firmware</A>
|
||||
<LI><A NAME="tex2html410"
|
||||
HREF="JUNGFRAU_On_board_Software.html">JUNGFRAU On-board Software</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,190 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>JUNGFRAU Firmware</TITLE>
|
||||
<META NAME="description" CONTENT="JUNGFRAU Firmware">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="JUNGFRAU_On_board_Software.html">
|
||||
<LINK REL="previous" HREF="JUNGFRAU.html">
|
||||
<LINK REL="up" HREF="JUNGFRAU.html">
|
||||
<LINK REL="next" HREF="JUNGFRAU_On_board_Software.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html421"
|
||||
HREF="JUNGFRAU_On_board_Software.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html417"
|
||||
HREF="JUNGFRAU.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html411"
|
||||
HREF="JUNGFRAU.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html419"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html422"
|
||||
HREF="JUNGFRAU_On_board_Software.html">JUNGFRAU On-board Software</A>
|
||||
<B> Up:</B> <A NAME="tex2html418"
|
||||
HREF="JUNGFRAU.html">JUNGFRAU</A>
|
||||
<B> Previous:</B> <A NAME="tex2html412"
|
||||
HREF="JUNGFRAU.html">JUNGFRAU</A>
|
||||
<B> <A NAME="tex2html420"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H3><A NAME="SECTION00054100000000000000">
|
||||
JUNGFRAU Firmware</A>
|
||||
</H3>
|
||||
<I>For SLS Detector Package v4.0.0</I>
|
||||
<BR>
|
||||
Minimum compatible version: 15.06.2018
|
||||
<BR>
|
||||
Latest version: 15.06.2018
|
||||
<BR>
|
||||
<P>
|
||||
At times, one has to update the firmware, which then also requires updating the
|
||||
on-board software.
|
||||
|
||||
<P>
|
||||
<B><I>Jungfrau firmware can be upgraded via the SLS Detector Package
|
||||
binaries from the command line.</I></B>
|
||||
|
||||
<P>
|
||||
|
||||
<OL>
|
||||
<LI>One must get the latest package's corresponding POF file from the SLS
|
||||
Detector Group.
|
||||
</LI>
|
||||
<LI>Update the latest SLS Detector package installed.
|
||||
</LI>
|
||||
<LI>Update the on-board software as per the instructions in the next
|
||||
section.
|
||||
</LI>
|
||||
<LI>Start the on-board server in update mode:
|
||||
|
||||
<OL>
|
||||
<LI>Connect to the blackfin on the detector
|
||||
<BR><code>telnet bchipxxx</code>
|
||||
</LI>
|
||||
<LI>Prevent existing on-board server from respawning by:
|
||||
|
||||
<OL>
|
||||
<LI>Edit <code>/etc/inittab</code>
|
||||
</LI>
|
||||
<LI>Comment out the line
|
||||
<code>#ttyS0::respawn:/jungfrauDetectorServervxxx</code>
|
||||
</LI>
|
||||
<LI>Reboot blackfin using <code>reboot</code>
|
||||
</LI>
|
||||
<LI>Run <code>ps</code> to ensure no jungfrauDetectorServers are running
|
||||
|
||||
</LI>
|
||||
</OL>
|
||||
</LI>
|
||||
<LI>Start the server in update mode using:
|
||||
<BR><code>./jungfrauDetectorServerxxx -update</code>
|
||||
<BR>
|
||||
Leave this console on to come back to it later.
|
||||
|
||||
</LI>
|
||||
</OL>
|
||||
</LI>
|
||||
<LI>From the command line of the pc, clear shared memory
|
||||
<BR><code>./sls_detector_get free</code>
|
||||
<BR>
|
||||
If one gets shmget error, please clean the shared memory properly using the
|
||||
script in <code>slsDetectorPackage/cleansharedmemory.sh</code>
|
||||
</LI>
|
||||
<LI>Add the detector to shared memory using
|
||||
<BR><code>./sls_detector_put hostname bchipxxx</code>
|
||||
</LI>
|
||||
<LI>Program the FPGA using
|
||||
<BR><code>./sls_detector_put programfpga xxx.pof</code>
|
||||
</LI>
|
||||
<LI>Once the programming is done:
|
||||
|
||||
<OL>
|
||||
<LI>Switch to the console that has the update server running and kill it
|
||||
using Ctrl+C and ensure no jungfrauDetectorServers are
|
||||
running
|
||||
</LI>
|
||||
<LI>Restart the new server to see if it runs with the new firmware
|
||||
<BR><code>./jungfrauDetectorServerxxx</code>
|
||||
<BR>
|
||||
If the server didn't start properly, please contact us with the error message
|
||||
shown when starting the server up, else continue with the following steps.
|
||||
</LI>
|
||||
<LI>Respawn the new server (server starts at detector statup):
|
||||
|
||||
<OL>
|
||||
<LI>Edit <code>/etc/inittab</code>
|
||||
</LI>
|
||||
<LI>Uncomment out the line
|
||||
<code>ttyS0::respawn:/jungfrauDetectorServervxxx</code>
|
||||
</LI>
|
||||
<LI>Reboot blackfin using <code>reboot</code>
|
||||
</LI>
|
||||
<LI>Run <code>ps</code> to ensure that both the gotthardDetectorServers are
|
||||
running.
|
||||
<BR><code>jungfrauDetectorServervxxx</code>
|
||||
<BR><code>jungfrauDetectorServervxxx 1953</code>
|
||||
|
||||
</LI>
|
||||
</OL>
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html421"
|
||||
HREF="JUNGFRAU_On_board_Software.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html417"
|
||||
HREF="JUNGFRAU.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html411"
|
||||
HREF="JUNGFRAU.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html419"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html422"
|
||||
HREF="JUNGFRAU_On_board_Software.html">JUNGFRAU On-board Software</A>
|
||||
<B> Up:</B> <A NAME="tex2html418"
|
||||
HREF="JUNGFRAU.html">JUNGFRAU</A>
|
||||
<B> Previous:</B> <A NAME="tex2html412"
|
||||
HREF="JUNGFRAU.html">JUNGFRAU</A>
|
||||
<B> <A NAME="tex2html420"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,80 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>MYTHEN</TITLE>
|
||||
<META NAME="description" CONTENT="MYTHEN">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="GOTTHARD.html">
|
||||
<LINK REL="previous" HREF="Software_Upgrade.html">
|
||||
<LINK REL="up" HREF="Software_Upgrade.html">
|
||||
<LINK REL="next" HREF="MYTHEN_Firmware.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html301"
|
||||
HREF="MYTHEN_Firmware.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html297"
|
||||
HREF="Software_Upgrade.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html291"
|
||||
HREF="Software_Upgrade.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html299"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html302"
|
||||
HREF="MYTHEN_Firmware.html">MYTHEN Firmware</A>
|
||||
<B> Up:</B> <A NAME="tex2html298"
|
||||
HREF="Software_Upgrade.html">Software Upgrade</A>
|
||||
<B> Previous:</B> <A NAME="tex2html292"
|
||||
HREF="Software_Upgrade.html">Software Upgrade</A>
|
||||
<B> <A NAME="tex2html300"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00051000000000000000">
|
||||
MYTHEN</A>
|
||||
</H2>
|
||||
In such cases, the users are not expected to compile the software
|
||||
themselves (which would require dedicated softwares) but only to download on the
|
||||
detector board the programming files and/or software package provided by
|
||||
the SLS Detectors group.
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html303"
|
||||
HREF="MYTHEN_Firmware.html">MYTHEN Firmware</A>
|
||||
<LI><A NAME="tex2html304"
|
||||
HREF="MYTHEN_On_board_Software.html">MYTHEN On-board Software</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,114 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>MYTHEN On-board Software</TITLE>
|
||||
<META NAME="description" CONTENT="MYTHEN On-board Software">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="previous" HREF="MYTHEN_Firmware.html">
|
||||
<LINK REL="up" HREF="MYTHEN.html">
|
||||
<LINK REL="next" HREF="GOTTHARD.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html325"
|
||||
HREF="GOTTHARD.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html321"
|
||||
HREF="MYTHEN.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html317"
|
||||
HREF="MYTHEN_Firmware.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html323"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html326"
|
||||
HREF="GOTTHARD.html">GOTTHARD</A>
|
||||
<B> Up:</B> <A NAME="tex2html322"
|
||||
HREF="MYTHEN.html">MYTHEN</A>
|
||||
<B> Previous:</B> <A NAME="tex2html318"
|
||||
HREF="MYTHEN_Firmware.html">MYTHEN Firmware</A>
|
||||
<B> <A NAME="tex2html324"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H3><A NAME="SECTION00051200000000000000">
|
||||
MYTHEN On-board Software</A>
|
||||
</H3>
|
||||
|
||||
<OL>
|
||||
<LI>Connect to the board using telnet:
|
||||
<PRE>
|
||||
telnet mymcs.mydomain.com
|
||||
username: root
|
||||
password: pass
|
||||
</PRE>
|
||||
</LI>
|
||||
<LI>Kill currently running servers and ensure <code>/mnt/flash/root</code> exists.
|
||||
<PRE>
|
||||
killall mythenDetectorServer
|
||||
ls /mnt/flash/root
|
||||
#if the directory does not exist mkdir /mnt/flash/root
|
||||
</PRE>
|
||||
</LI>
|
||||
<LI>Transfer the provided software by ftp to the MCS.
|
||||
<PRE>
|
||||
ftp mymcs.mydomain.com
|
||||
username: root
|
||||
password: pass
|
||||
cd /mnt/flash/root
|
||||
put mythenDetectorServer
|
||||
quit
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>After pressing reset on the board, the board should reboot.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>If the program does not correctly start
|
||||
|
||||
<OL>
|
||||
<LI>Check by using the http interface that it is started by the inittab
|
||||
(check that the file <code>/mnt/etc/inittab</code> ends with the line
|
||||
<BR><code>myid2:3:once:/mnt/flash/root/mythenDetectorServer</code>).
|
||||
</LI>
|
||||
<LI>If program has not started, make the program executable by telnetting to
|
||||
the MCS and executing:
|
||||
<BR><code>chmod a+xrw /mnt/flash/root/mythenDetectorServer</code>
|
||||
</LI>
|
||||
<LI>After pressing reset on the board, the board should reboot and the
|
||||
acqusition program correctly start.
|
||||
|
||||
</LI>
|
||||
</OL>
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,110 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Qwt Installation for GUI</TITLE>
|
||||
<META NAME="description" CONTENT="Qwt Installation for GUI">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="Root_Installation_Calibrati.html">
|
||||
<LINK REL="previous" HREF="Qt4_Installation_GUI.html">
|
||||
<LINK REL="up" HREF="Requirements.html">
|
||||
<LINK REL="next" HREF="Root_Installation_Calibrati.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html173"
|
||||
HREF="Root_Installation_Calibrati.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html169"
|
||||
HREF="Requirements.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html163"
|
||||
HREF="Qt4_Installation_GUI.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html171"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html174"
|
||||
HREF="Root_Installation_Calibrati.html">Root Installation for Calibration</A>
|
||||
<B> Up:</B> <A NAME="tex2html170"
|
||||
HREF="Requirements.html">Requirements</A>
|
||||
<B> Previous:</B> <A NAME="tex2html164"
|
||||
HREF="Qt4_Installation_GUI.html">Qt4 Installation for GUI</A>
|
||||
<B> <A NAME="tex2html172"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H3><A NAME="SECTION00042200000000000000">
|
||||
Qwt Installation for GUI</A>
|
||||
</H3>
|
||||
Before installing Qwt, one must install Qt
|
||||
and ensure that <code>QTDIR</code>, <code>LD_LIBRARY_PATH</code> and <code>PATH</code> point to
|
||||
the correct Qt4
|
||||
version.
|
||||
|
||||
<P>
|
||||
A Qwt version equal or higher than 6 is required. One can
|
||||
install it:
|
||||
|
||||
<UL>
|
||||
<LI>via YUM:
|
||||
<PRE>
|
||||
yum install qwt-devel
|
||||
</PRE>
|
||||
</LI>
|
||||
<LI>via download from:
|
||||
<BR><TT><A NAME="tex2html3"
|
||||
HREF="
|
||||
https://sourceforge.net/projects/qwt/files/qwt/6.0.0/qwt-6.0.0.zip/download">https://sourceforge.net/projects/qwt/files/qwt/6.0.0/qwt-6.0.0.zip/download</A></TT>
|
||||
<P>
|
||||
To install:
|
||||
<PRE>
|
||||
> cd qwt-6.0.0
|
||||
> qmake
|
||||
> make
|
||||
> make install
|
||||
</PRE>
|
||||
By default Qwt will be installed int /usr/local/qwt-6.0.0
|
||||
</LI>
|
||||
</UL>
|
||||
|
||||
<P>
|
||||
<B>Setup Environment</B>
|
||||
|
||||
<P>
|
||||
One has to ensure that <code>QWTDIR</code> and <code>LD_LIBRARY_PATH</code> have
|
||||
been updated to include Qwt install path and libraries.
|
||||
|
||||
<P>
|
||||
If the environment is not set up, one can add the libraries to the
|
||||
.bashrc by adding <code>LD_LIBRARY_PATH</code>:
|
||||
<PRE>
|
||||
export QWTDIR=/usr/local/qwt-6.0.0/
|
||||
export LD_LIBRARY_PATH=$QWTDIR/lib:$LD_LIBRARY_PATH
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,150 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Requirements</TITLE>
|
||||
<META NAME="description" CONTENT="Requirements">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="Compilation.html">
|
||||
<LINK REL="previous" HREF="Download_Source_Code.html">
|
||||
<LINK REL="up" HREF="Install_via_Source_Code.html">
|
||||
<LINK REL="next" HREF="Qt4_Installation_GUI.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html146"
|
||||
HREF="Qt4_Installation_GUI.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html142"
|
||||
HREF="Install_via_Source_Code.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html136"
|
||||
HREF="Download_Source_Code.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html144"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html147"
|
||||
HREF="Qt4_Installation_GUI.html">Qt4 Installation for GUI</A>
|
||||
<B> Up:</B> <A NAME="tex2html143"
|
||||
HREF="Install_via_Source_Code.html">Install via Source Code</A>
|
||||
<B> Previous:</B> <A NAME="tex2html137"
|
||||
HREF="Download_Source_Code.html">Download Source Code</A>
|
||||
<B> <A NAME="tex2html145"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00042000000000000000">
|
||||
Requirements</A>
|
||||
</H2>
|
||||
These are the basic requirements to install and use the software. Fine Tuning
|
||||
the system will be discussed in other documentation provided.
|
||||
|
||||
<UL>
|
||||
<LI><I>C/C++</I>:
|
||||
<BR>
|
||||
The software is written in C/C++. If Python API is used, it is a wrap around
|
||||
to the C++ software. Any Linux installation with working libgcc should be
|
||||
sufficient.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI><I>Shared Memory</I>:
|
||||
<BR>
|
||||
Access to the shared memory of the control PC is required for the client.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI><I>Network</I>:
|
||||
<BR>
|
||||
The control PC communicates to the detectors and data receivers over TCP/IP.
|
||||
Therefore, the detector should receive a proper IP address (either DHCP or
|
||||
static) and no firewall should be present between the control PC and the
|
||||
detector.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI><I>Compilation</I>:
|
||||
<BR>
|
||||
cmake is required to compile. make is also possible, but is harder to find
|
||||
dependencies.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI><I>GUI</I>:
|
||||
<BR>
|
||||
To use the GUI, one requires atleast Qt4.8.2 and Qwt6.0. Installation of these
|
||||
are discussed in the next sections.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI><I>Calibration Wizards</I>:
|
||||
<BR>
|
||||
They are based on the CERN Root data analysis framework. Installation of it is
|
||||
discussed in the next sections.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
</UL>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html148"
|
||||
HREF="Qt4_Installation_GUI.html">Qt4 Installation for GUI</A>
|
||||
<LI><A NAME="tex2html149"
|
||||
HREF="Qwt_Installation_GUI.html">Qwt Installation for GUI</A>
|
||||
<LI><A NAME="tex2html150"
|
||||
HREF="Root_Installation_Calibrati.html">Root Installation for Calibration Wizards</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html146"
|
||||
HREF="Qt4_Installation_GUI.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html142"
|
||||
HREF="Install_via_Source_Code.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html136"
|
||||
HREF="Download_Source_Code.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html144"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html147"
|
||||
HREF="Qt4_Installation_GUI.html">Qt4 Installation for GUI</A>
|
||||
<B> Up:</B> <A NAME="tex2html143"
|
||||
HREF="Install_via_Source_Code.html">Install via Source Code</A>
|
||||
<B> Previous:</B> <A NAME="tex2html137"
|
||||
HREF="Download_Source_Code.html">Download Source Code</A>
|
||||
<B> <A NAME="tex2html145"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,77 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Setting environment variables</TITLE>
|
||||
<META NAME="description" CONTENT="Setting environment variables">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="Clean_Shared_Memory.html">
|
||||
<LINK REL="previous" HREF="Compilation.html">
|
||||
<LINK REL="up" HREF="Install_via_Source_Code.html">
|
||||
<LINK REL="next" HREF="Using_bashrc_file.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html231"
|
||||
HREF="Using_bashrc_file.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html227"
|
||||
HREF="Install_via_Source_Code.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html221"
|
||||
HREF="Directly_using_cmake.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html229"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html232"
|
||||
HREF="Using_bashrc_file.html">Using .bashrc file</A>
|
||||
<B> Up:</B> <A NAME="tex2html228"
|
||||
HREF="Install_via_Source_Code.html">Install via Source Code</A>
|
||||
<B> Previous:</B> <A NAME="tex2html222"
|
||||
HREF="Directly_using_cmake.html">Directly using cmake</A>
|
||||
<B> <A NAME="tex2html230"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00044000000000000000">
|
||||
Setting environment variables</A>
|
||||
</H2>
|
||||
One can set up the environment variables in the following ways.
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html233"
|
||||
HREF="Using_bashrc_file.html">Using .bashrc file</A>
|
||||
<LI><A NAME="tex2html234"
|
||||
HREF="Without_bashrc_file.html">Without .bashrc file</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,110 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Software Upgrade</TITLE>
|
||||
<META NAME="description" CONTENT="Software Upgrade">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="About_this_document.html">
|
||||
<LINK REL="previous" HREF="Install_via_Source_Code.html">
|
||||
<LINK REL="up" HREF="slsDetectorInstall.html">
|
||||
<LINK REL="next" HREF="MYTHEN.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html277"
|
||||
HREF="MYTHEN.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html273"
|
||||
HREF="slsDetectorInstall.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html267"
|
||||
HREF="Clean_Shared_Memory.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html275"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html278"
|
||||
HREF="MYTHEN.html">MYTHEN</A>
|
||||
<B> Up:</B> <A NAME="tex2html274"
|
||||
HREF="slsDetectorInstall.html">SLS Detectors software installation</A>
|
||||
<B> Previous:</B> <A NAME="tex2html268"
|
||||
HREF="Clean_Shared_Memory.html">Clean Shared Memory</A>
|
||||
<B> <A NAME="tex2html276"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION00050000000000000000">
|
||||
Software Upgrade</A>
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
The upgrade of the package could require an upgrade of the on-board detector
|
||||
server and/or firmware running on the detector as well.
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html279"
|
||||
HREF="MYTHEN.html">MYTHEN</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html280"
|
||||
HREF="MYTHEN_Firmware.html">MYTHEN Firmware</A>
|
||||
<LI><A NAME="tex2html281"
|
||||
HREF="MYTHEN_On_board_Software.html">MYTHEN On-board Software</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html282"
|
||||
HREF="GOTTHARD.html">GOTTHARD</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html283"
|
||||
HREF="GOTTHARD_Firmware.html">GOTTHARD Firmware</A>
|
||||
<LI><A NAME="tex2html284"
|
||||
HREF="GOTTHARD_On_board_Software.html">GOTTHARD On-board Software</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html285"
|
||||
HREF="EIGER.html">EIGER</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html286"
|
||||
HREF="EIGER_Firmware.html">EIGER Firmware</A>
|
||||
<LI><A NAME="tex2html287"
|
||||
HREF="EIGER_On_board_Software.html">EIGER On-board Software</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html288"
|
||||
HREF="JUNGFRAU.html">JUNGFRAU</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html289"
|
||||
HREF="JUNGFRAU_Firmware.html">JUNGFRAU Firmware</A>
|
||||
<LI><A NAME="tex2html290"
|
||||
HREF="JUNGFRAU_On_board_Software.html">JUNGFRAU On-board Software</A>
|
||||
</UL></UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,114 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Using script cmk.sh</TITLE>
|
||||
<META NAME="description" CONTENT="Using script cmk.sh">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="Directly_using_cmake.html">
|
||||
<LINK REL="previous" HREF="Compilation.html">
|
||||
<LINK REL="up" HREF="Compilation.html">
|
||||
<LINK REL="next" HREF="Directly_using_cmake.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html209"
|
||||
HREF="Directly_using_cmake.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html205"
|
||||
HREF="Compilation.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html199"
|
||||
HREF="Compilation.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html207"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html210"
|
||||
HREF="Directly_using_cmake.html">Directly using cmake</A>
|
||||
<B> Up:</B> <A NAME="tex2html206"
|
||||
HREF="Compilation.html">Compilation</A>
|
||||
<B> Previous:</B> <A NAME="tex2html200"
|
||||
HREF="Compilation.html">Compilation</A>
|
||||
<B> <A NAME="tex2html208"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H3><A NAME="SECTION00043100000000000000">
|
||||
Using script cmk.sh</A>
|
||||
</H3>
|
||||
The script uses <code>cmake</code>. After compiling, the libraries and executables
|
||||
will be found in `slsDetectorPackage/build/bin` directory.
|
||||
Usage: [-c] [-b] [-h] [-d HDF5 directory] [-j]
|
||||
|
||||
<UL>
|
||||
<LI>-[no option]: only make
|
||||
</LI>
|
||||
<LI>-c: Clean
|
||||
</LI>
|
||||
<LI>-b: Builds/Rebuilds CMake files normal mode
|
||||
</LI>
|
||||
<LI>-h: Builds/Rebuilds Cmake files with HDF5 package
|
||||
</LI>
|
||||
<LI>-d: HDF5 Custom Directory
|
||||
</LI>
|
||||
<LI>-t: Build/Rebuilds only text client
|
||||
</LI>
|
||||
<LI>-r: Build/Rebuilds only receiver
|
||||
</LI>
|
||||
<LI>-g: Build/Rebuilds only gui
|
||||
</LI>
|
||||
<LI>-j: Number of threads to compile through
|
||||
</LI>
|
||||
</UL>
|
||||
|
||||
<P>
|
||||
Some example options for compilation:
|
||||
|
||||
<P>
|
||||
Most basic option: <code>./cmk.sh -b</code>
|
||||
|
||||
<P>
|
||||
For only make: <code>./cmk.sh</code>
|
||||
|
||||
<P>
|
||||
For make clean;make: <code>./cmk.sh -c</code>
|
||||
|
||||
<P>
|
||||
For using hdf5 without custom dir /blabla: <code>./cmk.sh -h -d /blabla</code>
|
||||
|
||||
<P>
|
||||
For rebuilding cmake without hdf5: <code>./cmk.sh -b</code>
|
||||
|
||||
<P>
|
||||
For using multiple cores to compile faster: <code>./cmk.sh -j9</code>
|
||||
|
||||
<P>
|
||||
For rebuilding only certain parts: <code>./cmk.sh -tg</code> (only text client and
|
||||
gui)
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
@ -1,69 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Without .bashrc file</TITLE>
|
||||
<META NAME="description" CONTENT="Without .bashrc file">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="previous" HREF="Using_bashrc_file.html">
|
||||
<LINK REL="up" HREF="Setting_environment_variabl.html">
|
||||
<LINK REL="next" HREF="Clean_Shared_Memory.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html255"
|
||||
HREF="Clean_Shared_Memory.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html251"
|
||||
HREF="Setting_environment_variabl.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html247"
|
||||
HREF="Using_bashrc_file.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html253"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html256"
|
||||
HREF="Clean_Shared_Memory.html">Clean Shared Memory</A>
|
||||
<B> Up:</B> <A NAME="tex2html252"
|
||||
HREF="Setting_environment_variabl.html">Setting environment variables</A>
|
||||
<B> Previous:</B> <A NAME="tex2html248"
|
||||
HREF="Using_bashrc_file.html">Using .bashrc file</A>
|
||||
<B> <A NAME="tex2html254"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H3><A NAME="SECTION00044200000000000000">
|
||||
Without .bashrc file</A>
|
||||
</H3>
|
||||
Go to binaries folder slsDetectorPackage/build/bin and execute the following:
|
||||
<PRE>
|
||||
export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
|
||||
export PATH=$PWD:$PATH
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
Before Width: | Height: | Size: 278 B |
@ -1,149 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>SLS Detectors software installation</TITLE>
|
||||
<META NAME="description" CONTENT="SLS Detectors software installation">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="Contents.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html8"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_g.png">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png">
|
||||
<A NAME="tex2html6"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html9"
|
||||
HREF="Contents.html">Contents</A>
|
||||
<B> <A NAME="tex2html7"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<P>
|
||||
|
||||
<H1 ALIGN="CENTER">SLS Detectors software installation</H1>
|
||||
<DIV>
|
||||
|
||||
<P ALIGN="CENTER"><STRONG>Anna Bergamaschi, Dhanya Thattil</STRONG></P>
|
||||
<P ALIGN="CENTER"><STRONG>April 8, 2019</STRONG></P>
|
||||
</DIV>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html10"
|
||||
HREF="Contents.html">Contents</A>
|
||||
<LI><A NAME="tex2html11"
|
||||
HREF="Software_Package.html">The Software Package</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html12"
|
||||
HREF="Binaries.html">Binaries</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html13"
|
||||
HREF="Install_Binaries_via_Conda.html">Install Binaries via Conda</A>
|
||||
<LI><A NAME="tex2html14"
|
||||
HREF="Install_via_Source_Code.html">Install via Source Code</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html15"
|
||||
HREF="Download_Source_Code.html">Download Source Code</A>
|
||||
<LI><A NAME="tex2html16"
|
||||
HREF="Requirements.html">Requirements</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html17"
|
||||
HREF="Qt4_Installation_GUI.html">Qt4 Installation for GUI</A>
|
||||
<LI><A NAME="tex2html18"
|
||||
HREF="Qwt_Installation_GUI.html">Qwt Installation for GUI</A>
|
||||
<LI><A NAME="tex2html19"
|
||||
HREF="Root_Installation_Calibrati.html">Root Installation for Calibration Wizards</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html20"
|
||||
HREF="Compilation.html">Compilation</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html21"
|
||||
HREF="Using_script_cmk_sh.html">Using script cmk.sh</A>
|
||||
<LI><A NAME="tex2html22"
|
||||
HREF="Directly_using_cmake.html">Directly using cmake</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html23"
|
||||
HREF="Setting_environment_variabl.html">Setting environment variables</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html24"
|
||||
HREF="Using_bashrc_file.html">Using .bashrc file</A>
|
||||
<LI><A NAME="tex2html25"
|
||||
HREF="Without_bashrc_file.html">Without .bashrc file</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html26"
|
||||
HREF="Clean_Shared_Memory.html">Clean Shared Memory</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html27"
|
||||
HREF="Software_Upgrade.html">Software Upgrade</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html28"
|
||||
HREF="MYTHEN.html">MYTHEN</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html29"
|
||||
HREF="MYTHEN_Firmware.html">MYTHEN Firmware</A>
|
||||
<LI><A NAME="tex2html30"
|
||||
HREF="MYTHEN_On_board_Software.html">MYTHEN On-board Software</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html31"
|
||||
HREF="GOTTHARD.html">GOTTHARD</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html32"
|
||||
HREF="GOTTHARD_Firmware.html">GOTTHARD Firmware</A>
|
||||
<LI><A NAME="tex2html33"
|
||||
HREF="GOTTHARD_On_board_Software.html">GOTTHARD On-board Software</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html34"
|
||||
HREF="EIGER.html">EIGER</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html35"
|
||||
HREF="EIGER_Firmware.html">EIGER Firmware</A>
|
||||
<LI><A NAME="tex2html36"
|
||||
HREF="EIGER_On_board_Software.html">EIGER On-board Software</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html37"
|
||||
HREF="JUNGFRAU.html">JUNGFRAU</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html38"
|
||||
HREF="JUNGFRAU_Firmware.html">JUNGFRAU Firmware</A>
|
||||
<LI><A NAME="tex2html39"
|
||||
HREF="JUNGFRAU_On_board_Software.html">JUNGFRAU On-board Software</A>
|
||||
</UL>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html40"
|
||||
HREF="About_this_document.html">About this document ...</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
Before Width: | Height: | Size: 245 B |
Before Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 279 B |
Before Width: | Height: | Size: 327 B |
@ -1,149 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>SLS Detectors software installation</TITLE>
|
||||
<META NAME="description" CONTENT="SLS Detectors software installation">
|
||||
<META NAME="keywords" CONTENT="slsDetectorInstall">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="slsDetectorInstall.css">
|
||||
|
||||
<LINK REL="next" HREF="Contents.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html8"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_g.png">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png">
|
||||
<A NAME="tex2html6"
|
||||
HREF="Contents.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html9"
|
||||
HREF="Contents.html">Contents</A>
|
||||
<B> <A NAME="tex2html7"
|
||||
HREF="Contents.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<P>
|
||||
|
||||
<H1 ALIGN="CENTER">SLS Detectors software installation</H1>
|
||||
<DIV>
|
||||
|
||||
<P ALIGN="CENTER"><STRONG>Anna Bergamaschi, Dhanya Thattil</STRONG></P>
|
||||
<P ALIGN="CENTER"><STRONG>April 8, 2019</STRONG></P>
|
||||
</DIV>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html10"
|
||||
HREF="Contents.html">Contents</A>
|
||||
<LI><A NAME="tex2html11"
|
||||
HREF="Software_Package.html">The Software Package</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html12"
|
||||
HREF="Binaries.html">Binaries</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html13"
|
||||
HREF="Install_Binaries_via_Conda.html">Install Binaries via Conda</A>
|
||||
<LI><A NAME="tex2html14"
|
||||
HREF="Install_via_Source_Code.html">Install via Source Code</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html15"
|
||||
HREF="Download_Source_Code.html">Download Source Code</A>
|
||||
<LI><A NAME="tex2html16"
|
||||
HREF="Requirements.html">Requirements</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html17"
|
||||
HREF="Qt4_Installation_GUI.html">Qt4 Installation for GUI</A>
|
||||
<LI><A NAME="tex2html18"
|
||||
HREF="Qwt_Installation_GUI.html">Qwt Installation for GUI</A>
|
||||
<LI><A NAME="tex2html19"
|
||||
HREF="Root_Installation_Calibrati.html">Root Installation for Calibration Wizards</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html20"
|
||||
HREF="Compilation.html">Compilation</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html21"
|
||||
HREF="Using_script_cmk_sh.html">Using script cmk.sh</A>
|
||||
<LI><A NAME="tex2html22"
|
||||
HREF="Directly_using_cmake.html">Directly using cmake</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html23"
|
||||
HREF="Setting_environment_variabl.html">Setting environment variables</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html24"
|
||||
HREF="Using_bashrc_file.html">Using .bashrc file</A>
|
||||
<LI><A NAME="tex2html25"
|
||||
HREF="Without_bashrc_file.html">Without .bashrc file</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html26"
|
||||
HREF="Clean_Shared_Memory.html">Clean Shared Memory</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html27"
|
||||
HREF="Software_Upgrade.html">Software Upgrade</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html28"
|
||||
HREF="MYTHEN.html">MYTHEN</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html29"
|
||||
HREF="MYTHEN_Firmware.html">MYTHEN Firmware</A>
|
||||
<LI><A NAME="tex2html30"
|
||||
HREF="MYTHEN_On_board_Software.html">MYTHEN On-board Software</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html31"
|
||||
HREF="GOTTHARD.html">GOTTHARD</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html32"
|
||||
HREF="GOTTHARD_Firmware.html">GOTTHARD Firmware</A>
|
||||
<LI><A NAME="tex2html33"
|
||||
HREF="GOTTHARD_On_board_Software.html">GOTTHARD On-board Software</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html34"
|
||||
HREF="EIGER.html">EIGER</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html35"
|
||||
HREF="EIGER_Firmware.html">EIGER Firmware</A>
|
||||
<LI><A NAME="tex2html36"
|
||||
HREF="EIGER_On_board_Software.html">EIGER On-board Software</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html37"
|
||||
HREF="JUNGFRAU.html">JUNGFRAU</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html38"
|
||||
HREF="JUNGFRAU_Firmware.html">JUNGFRAU Firmware</A>
|
||||
<LI><A NAME="tex2html39"
|
||||
HREF="JUNGFRAU_On_board_Software.html">JUNGFRAU On-board Software</A>
|
||||
</UL>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html40"
|
||||
HREF="About_this_document.html">About this document ...</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Thattil Dhanya
|
||||
2019-04-08
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
Before Width: | Height: | Size: 211 B |
Before Width: | Height: | Size: 231 B |
Before Width: | Height: | Size: 278 B |
Before Width: | Height: | Size: 147 B |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 245 B |
Before Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 279 B |
Before Width: | Height: | Size: 327 B |
Before Width: | Height: | Size: 211 B |
Before Width: | Height: | Size: 231 B |
22
evalVersionVariables.sh
Normal file
@ -0,0 +1,22 @@
|
||||
GITREPO1='git remote -v'
|
||||
GITREPO2=" | grep \"fetch\" | cut -d' ' -f1"
|
||||
BRANCH1='git branch -v'
|
||||
BRANCH2=" | grep '*' | cut -d' ' -f2"
|
||||
REPUID1='git log --pretty=format:"%H" -1'
|
||||
AUTH1_1='git log --pretty=format:"%cn" -1'
|
||||
AUTH1_2=" | cut -d' ' -f1"
|
||||
AUTH2_1='git log --pretty=format:"%cn" -1'
|
||||
AUTH2_2=" | cut -d' ' -f2"
|
||||
FOLDERREV1='git log --oneline . ' #used for all the individual server folders
|
||||
FOLDERREV2=" | wc -l" #used for all the individual server folders
|
||||
REV1='git log --oneline '
|
||||
REV2=" | wc -l"
|
||||
|
||||
GITREPO=`eval $GITREPO1 $GITREPO2`
|
||||
BRANCH=`eval $BRANCH1 $BRANCH2`
|
||||
REPUID=`eval $REPUID1`
|
||||
AUTH1=`eval $AUTH1_1 $AUTH1_2`
|
||||
AUTH2=`eval $AUTH2_1 $AUTH2_2`
|
||||
REV=`eval $REV1 $REV2`
|
||||
FOLDERREV=`eval $FOLDERREV1 $FOLDERREV2`
|
||||
|
@ -1,18 +0,0 @@
|
||||
INCLUDES = -I .
|
||||
SRC_REC = dummyMain.cpp
|
||||
LDFLAG_REC = -L. -lSlsReceiver -L/usr/lib64/ -lpthread -lrt -L. -lzmq
|
||||
DESTDIR ?= ../docs
|
||||
|
||||
all: dummyReceiver
|
||||
|
||||
|
||||
dummyReceiver:$(SRC_REC)
|
||||
echo "creating receiver"
|
||||
g++ -o dummyReceiver $(SRC_REC) $(INCLUDES) $(LDFLAG_REC) -lm -lstdc++
|
||||
|
||||
|
||||
clean:
|
||||
echo "cleaning"
|
||||
rm -rf dummyReceiver
|
||||
|
||||
|
@ -1,79 +0,0 @@
|
||||
/* A simple server in the internet domain using TCP
|
||||
The port number is passed as an argument */
|
||||
|
||||
#include "sls_receiver_defs.h"
|
||||
#include "dummyUDPInterface.h"
|
||||
#include "slsReceiverTCPIPInterface.h"
|
||||
#include "ansi.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <string.h>
|
||||
#include <signal.h> //SIGINT
|
||||
#include <cstdlib> //system
|
||||
#include <sys/types.h> //wait
|
||||
#include <sys/wait.h> //wait
|
||||
#include <syscall.h>
|
||||
using namespace std;
|
||||
|
||||
bool keeprunning;
|
||||
|
||||
void sigInterruptHandler(int p){
|
||||
keeprunning = false;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
keeprunning = true;
|
||||
bprintf(BLUE,"Created [ Tid: %ld ]\n", (long)syscall(SYS_gettid));
|
||||
|
||||
// Catch signal SIGINT to close files and call destructors properly
|
||||
struct sigaction sa;
|
||||
sa.sa_flags=0; // no flags
|
||||
sa.sa_handler=sigInterruptHandler; // handler function
|
||||
sigemptyset(&sa.sa_mask); // dont block additional signals during invocation of handler
|
||||
if (sigaction(SIGINT, &sa, NULL) == -1) {
|
||||
bprintf(RED, "Could not set handler function for SIGINT\n");
|
||||
}
|
||||
|
||||
|
||||
// if socket crash, ignores SISPIPE, prevents global signal handler
|
||||
// subsequent read/write to socket gives error - must handle locally
|
||||
struct sigaction asa;
|
||||
asa.sa_flags=0; // no flags
|
||||
asa.sa_handler=SIG_IGN; // handler function
|
||||
sigemptyset(&asa.sa_mask); // dont block additional signals during invocation of handler
|
||||
if (sigaction(SIGPIPE, &asa, NULL) == -1) {
|
||||
bprintf(RED, "Could not set handler function for SIGCHILD\n");
|
||||
}
|
||||
|
||||
|
||||
int ret = slsReceiverDefs::OK;
|
||||
int tcpip_port_no = 1954;
|
||||
dummyUDPInterface *udp_interface = new dummyUDPInterface();
|
||||
slsReceiverTCPIPInterface *tcpipInterface = new slsReceiverTCPIPInterface(ret, udp_interface, tcpip_port_no);
|
||||
if(ret==slsReceiverDefs::FAIL){
|
||||
delete tcpipInterface;
|
||||
bprintf(BLUE,"Exiting [ Tid: %ld ]\n", (long)syscall(SYS_gettid));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
||||
//start tcp server thread
|
||||
if (tcpipInterface->start() == slsReceiverDefs::FAIL){
|
||||
delete tcpipInterface;
|
||||
bprintf(BLUE,"Exiting [ Tid: %ld ]\n", (long)syscall(SYS_gettid));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
FILE_LOG(logINFO) << "Ready ... ";
|
||||
bprintf(GRAY, "\n[ Press \'Ctrl+c\' to exit ]\n");
|
||||
while(keeprunning)
|
||||
usleep(5 * 1000 * 1000);
|
||||
|
||||
delete tcpipInterface;
|
||||
bprintf(BLUE,"Exiting [ Tid: %ld ]\n", (long)syscall(SYS_gettid));
|
||||
FILE_LOG(logINFO) << "Goodbye!";
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1,36 +0,0 @@
|
||||
#ifndef DUMMYUDPINTERFACE_H
|
||||
#define DUMMYUDPINTERFACE_H
|
||||
|
||||
/***********************************************
|
||||
* @file UDPInterface.h
|
||||
* @short Base class with all the functions for the UDP inteface of the receiver
|
||||
***********************************************/
|
||||
/**
|
||||
* \mainpage Base class with all the functions for the UDP inteface of the receiver
|
||||
*/
|
||||
|
||||
/**
|
||||
* @short Base class with all the functions for the UDP inteface of the receiver
|
||||
*/
|
||||
|
||||
#include "UDPBaseImplementation.h"
|
||||
|
||||
|
||||
class dummyUDPInterface : public virtual slsReceiverDefs, public UDPBaseImplementation {
|
||||
|
||||
|
||||
|
||||
public:
|
||||
|
||||
/** cosntructor & destructor */
|
||||
dummyUDPInterface() { cout << "New dummy UDP Interface" << endl;};
|
||||
~dummyUDPInterface() {cout << "Destroying dummy UDP Interface" << endl;};
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
#endif /* #ifndef DUMMYUDPINTERFACE_H */
|
@ -1,419 +0,0 @@
|
||||
#ifndef DUMMYUDPINTERFACE_H
|
||||
#define DUMMYUDPINTERFACE_H
|
||||
|
||||
/***********************************************
|
||||
* @file UDPInterface.h
|
||||
* @short Base class with all the functions for the UDP inteface of the receiver
|
||||
***********************************************/
|
||||
/**
|
||||
* \mainpage Base class with all the functions for the UDP inteface of the receiver
|
||||
*/
|
||||
|
||||
/**
|
||||
* @short Base class with all the functions for the UDP inteface of the receiver
|
||||
*/
|
||||
|
||||
#include "UDPInterface.h"
|
||||
#include "sls_receiver_defs.h"
|
||||
|
||||
|
||||
class dummyUDPInterface : public UDPInterface {
|
||||
|
||||
|
||||
/* abstract class that defines the UDP interface of an sls detector data receiver.
|
||||
*
|
||||
* Use the factory method UDPInterface::create() to get an instance:
|
||||
*
|
||||
* UDPInterface *udp_interface = UDPInterface::create()
|
||||
*
|
||||
* supported sequence of method-calls:
|
||||
*
|
||||
* initialize() : once and only once after create()
|
||||
*
|
||||
* get*() : anytime after initialize(), multiples times
|
||||
* set*() : anytime after initialize(), multiple times
|
||||
*
|
||||
* startReceiver(): anytime after initialize(). Will fail if state already is 'running'
|
||||
*
|
||||
* abort(),
|
||||
* stopReceiver() : anytime after initialize(). Will do nothing if state already is idle.
|
||||
*
|
||||
* getStatus() returns the actual state of the data receiver - running or idle. All other
|
||||
* get*() and set*() methods access the local cache of configuration values only and *do not* modify the data receiver settings.
|
||||
*
|
||||
* Only startReceiver() does change the data receiver configuration, it does pass the whole configuration cache to the data receiver.
|
||||
*
|
||||
* get- and set-methods that return a char array (char *) allocate a new array at each call. The caller is responsible to free the allocated space:
|
||||
*
|
||||
* char *c = receiver->getFileName();
|
||||
* ....
|
||||
* delete[] c;
|
||||
*
|
||||
* always: 1:YES 0:NO for int as bool-like arguments
|
||||
*
|
||||
*/
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
dummyUDPInterface() : UDPInterface(), dynamicRange(16), scanTag(1000), nFrames(100), fWrite(1), fOverwrite(1), fIndex(0), fCaught(0), totfCaught(0), startAcqIndex(0), startFrameIndex(0), acqIndex(0), dataCompression(false), period(0), type(slsReceiverDefs::GENERIC), framesNeeded(100), udpPort1(1900), udpPort2(1901), shortFrame(0), nFramesToGui(0), e10G(0) {strcpy(detHostname,"none"); strcpy(fName,"run"); strcpy(fPath,"/scratch/"); strcpy(eth,"eth0"); cout << "New dummy UDP Interface" << endl;};
|
||||
|
||||
~dummyUDPInterface() {cout << "Destroying dummy UDP Interface" << endl;};
|
||||
|
||||
|
||||
void del(){cout << "Destroying dummy UDP Interface" << endl;};
|
||||
|
||||
virtual void configure(map<string, string> config_map) {};
|
||||
/**
|
||||
* Initialize the Receiver
|
||||
@param detectorHostName detector hostname
|
||||
* you can call this function only once. You must call it before you call startReceiver() for the first time.
|
||||
*/
|
||||
virtual void initialize(const char *detectorHostName){ cout << "set detector hostname to" << detHostname << endl; strcpy(detHostname,detectorHostName);};
|
||||
|
||||
|
||||
/* Returns detector hostname
|
||||
/returns hostname
|
||||
* caller needs to deallocate the returned char array.
|
||||
* if uninitialized, it must return NULL
|
||||
*/
|
||||
virtual char *getDetectorHostname() const { cout << "get detector hostname " << detHostname << endl; return (char*) detHostname;};
|
||||
|
||||
/**
|
||||
* Returns status of receiver: idle, running or error
|
||||
*/
|
||||
virtual slsReceiverDefs::runStatus getStatus() const { cout << "get dsummy status IDLE " << endl; return slsReceiverDefs::IDLE;};;
|
||||
|
||||
/**
|
||||
* Returns File Name
|
||||
* caller is responsible to deallocate the returned char array.
|
||||
*/
|
||||
virtual char *getFileName() const { cout << "get file name " << fName << endl; return (char*) fName;};
|
||||
|
||||
|
||||
/**
|
||||
* Returns File Path
|
||||
* caller is responsible to deallocate the returned char array
|
||||
*/
|
||||
virtual char *getFilePath() const { cout << "get file path " << fPath << endl; return (char*) fPath;};;
|
||||
|
||||
|
||||
/**
|
||||
* Returns the number of bits per pixel
|
||||
*/
|
||||
virtual int getDynamicRange() const { cout << "get dynamic range " << dynamicRange << endl; return dynamicRange;};;
|
||||
|
||||
/**
|
||||
* Returns scan tag
|
||||
*/
|
||||
virtual int getScanTag() const { cout << "get scan tag " << scanTag << endl; return scanTag;};
|
||||
|
||||
/*
|
||||
* Returns number of frames to receive
|
||||
* This is the number of frames to expect to receiver from the detector.
|
||||
* The data receiver will change from running to idle when it got this number of frames
|
||||
*/
|
||||
virtual int getNumberOfFrames() const { cout << "get number of frames " << nFrames << endl; return nFrames;};
|
||||
|
||||
/**
|
||||
* Returns file write enable
|
||||
* 1: YES 0: NO
|
||||
*/
|
||||
virtual int getEnableFileWrite() const { cout << "get enable file write " << fWrite << endl; return fWrite;};
|
||||
|
||||
/**
|
||||
* Returns file over write enable
|
||||
* 1: YES 0: NO
|
||||
*/
|
||||
virtual int getEnableOverwrite() const { cout << "get enable file overwrite " << fOverwrite << endl; return fOverwrite;};
|
||||
|
||||
/**
|
||||
* Set File Name (without frame index, file index and extension)
|
||||
@param c file name
|
||||
/returns file name
|
||||
* returns NULL on failure (like bad file name)
|
||||
* does not check the existence of the file - we don't know which path we'll finally use, so no point to check.
|
||||
* caller is responsible to deallocate the returned char array.
|
||||
*/
|
||||
virtual char* setFileName(const char c[]) { strcpy(fName,c); cout << "set file name " << fName << endl; return fName; };
|
||||
|
||||
/**
|
||||
* Set File Path
|
||||
@param c file path
|
||||
/returns file path
|
||||
* checks the existence of the directory. returns NULL if directory does not exist or is not readable.
|
||||
* caller is responsible to deallocate the returned char array.
|
||||
*/
|
||||
virtual char* setFilePath(const char c[]) { strcpy(fPath,c); cout << "set file path " << fPath << endl; return fPath; };
|
||||
|
||||
/**
|
||||
* Returns the number of bits per pixel
|
||||
@param dr sets dynamic range
|
||||
/returns dynamic range
|
||||
* returns -1 on failure
|
||||
* FIXME: what are the allowd values - should we use an enum as argument?
|
||||
*/
|
||||
virtual int setDynamicRange(const int dr) {dynamicRange=dr; cout << "set dynamic range " << dynamicRange << endl; return dynamicRange; };
|
||||
|
||||
|
||||
/**
|
||||
* Set scan tag
|
||||
@param tag scan tag
|
||||
/returns scan tag (always non-negative)
|
||||
* FIXME: valid range - only positive? 16bit ore 32bit?
|
||||
* returns -1 on failure
|
||||
*/
|
||||
virtual int setScanTag(const int tag) {scanTag=tag; cout << "set scan tag " << scanTag << endl; return scanTag; };
|
||||
|
||||
|
||||
/**
|
||||
* Sets number of frames
|
||||
@param fnum number of frames
|
||||
/returns number of frames
|
||||
*/
|
||||
virtual int setNumberOfFrames(const int fnum) {nFrames=fnum; cout << "set number of frames " << nFrames << endl; return nFrames; };
|
||||
|
||||
|
||||
/**
|
||||
* Set enable file write
|
||||
* @param i file write enable
|
||||
/returns file write enable
|
||||
*/
|
||||
virtual int setEnableFileWrite(const int i) {fWrite=i; cout << "set enable file write " << fWrite << endl; return fWrite; };
|
||||
|
||||
|
||||
/**
|
||||
* Set enable file overwrite
|
||||
* @param i file overwrite enable
|
||||
/returns file overwrite enable
|
||||
*/
|
||||
virtual int setEnableOverwrite(const int i) {fOverwrite=i; cout << "set enable file overwrite " << fOverwrite << endl; return fOverwrite; };
|
||||
|
||||
|
||||
/**
|
||||
* Starts Receiver - activate all configuration settings to the eiger receiver and start to listen for packets
|
||||
@param message is the error message if there is an error
|
||||
/returns 0 on success or -1 on failure
|
||||
*/
|
||||
//FIXME: success == 0 or success == 1?
|
||||
virtual int startReceiver(char *message=NULL) {cout << "dummy start receiver" << endl; return 0;};
|
||||
|
||||
/**
|
||||
* Stops Receiver - stops listening for packets
|
||||
/returns success
|
||||
* same as abort(). Always returns 0.
|
||||
*/
|
||||
virtual int stopReceiver() {cout << "dummy stop receiver" << endl; return 0;};
|
||||
|
||||
/**
|
||||
* abort acquisition with minimum damage: close open files, cleanup.
|
||||
* does nothing if state already is 'idle'
|
||||
*/
|
||||
virtual void abort() {cout << "Aborting receiver" << endl; };
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************************************************
|
||||
**************************************** Added by Dhanya *********************************************************
|
||||
*******************************************************************************************************************/
|
||||
|
||||
/**
|
||||
* Returns File Index
|
||||
*/
|
||||
virtual int getFileIndex() {cout << "get file index " << fIndex << endl; return fIndex;};
|
||||
|
||||
/**
|
||||
* Returns Total Frames Caught for an entire acquisition (including all scans)
|
||||
*/
|
||||
virtual int getTotalFramesCaught() {cout << "get total frames caught " << totfCaught << endl ; return totfCaught;};
|
||||
|
||||
/**
|
||||
* Returns Frames Caught for each real time acquisition (eg. for each scan)
|
||||
*/
|
||||
virtual int getFramesCaught() {cout << "get frames caught " << fCaught << endl; return fCaught;};
|
||||
|
||||
|
||||
/**
|
||||
* Returns the frame index at start of entire acquisition (including all scans)
|
||||
*/
|
||||
virtual uint32_t getStartAcquisitionIndex(){ cout << "get start acquisition index " << startAcqIndex << endl; return startAcqIndex; };
|
||||
|
||||
/**
|
||||
* Returns current Frame Index Caught for an entire acquisition (including all scans)
|
||||
*/
|
||||
virtual uint32_t getAcquisitionIndex(){ cout << "get acquisition index " << acqIndex << endl; return acqIndex; };
|
||||
|
||||
|
||||
/**
|
||||
* Returns the frame index at start of each real time acquisition (eg. for each scan)
|
||||
*/
|
||||
virtual uint32_t getStartFrameIndex() { cout << "get start frame index " << startFrameIndex << endl; return startFrameIndex; };
|
||||
|
||||
|
||||
/** get data compression, by saving only hits
|
||||
*/
|
||||
virtual bool getDataCompression() { cout << "get data compression " << dataCompression << endl; return dataCompression;};
|
||||
|
||||
/**
|
||||
* Set receiver type
|
||||
* @param det detector type
|
||||
* Returns success or FAIL
|
||||
*/
|
||||
virtual int setDetectorType(slsReceiverDefs::detectorType det) {type=det; cout << "set detector type " << det << endl; return slsReceiverDefs::OK;};
|
||||
|
||||
/**
|
||||
* Set File Index
|
||||
* @param i file index
|
||||
*/
|
||||
virtual int setFileIndex(int i) {fIndex=i; cout << "get file index " << fIndex << endl; return fIndex;};
|
||||
|
||||
/** set acquisition period if a positive number
|
||||
*/
|
||||
virtual int64_t setAcquisitionPeriod(int64_t index) {if (index>=0) {period=index; cout << "set period " << period << endl;} else { cout << "get period " << period << endl;} return period;};
|
||||
|
||||
/**
|
||||
* Set Frame Index Needed
|
||||
* @param i frame index needed
|
||||
*/
|
||||
virtual int setFrameIndexNeeded(int i) {framesNeeded=i; cout << "set frame index needed " << period << endl; return framesNeeded;};
|
||||
|
||||
/**
|
||||
* Set UDP Port Number
|
||||
*/
|
||||
virtual void setUDPPortNo(int p){udpPort1=p; cout << "set UDP port 1 " << udpPort1 << endl; };
|
||||
|
||||
|
||||
/**
|
||||
* Set UDP Port Number
|
||||
*/
|
||||
virtual void setUDPPortNo2(int p) {udpPort2=p; cout << "set UDP port 2 " << udpPort2 << endl; };
|
||||
|
||||
/**
|
||||
* Set Ethernet Interface or IP to listen to
|
||||
*/
|
||||
virtual void setEthernetInterface(char* c){strcpy(eth,c); cout << "set eth " << c;};
|
||||
|
||||
/**
|
||||
* Set short frame
|
||||
* @param i if shortframe i=1
|
||||
*/
|
||||
virtual int setShortFrame(int i){shortFrame=i; cout << " set short frame" << shortFrame << endl; return shortFrame;};
|
||||
|
||||
/**
|
||||
* Set the variable to send every nth frame to gui
|
||||
* or if 0,send frame only upon gui request
|
||||
*/
|
||||
virtual int setNFrameToGui(int i) {nFramesToGui=i; cout << "set nframes to gui " << nFramesToGui << endl; return nFramesToGui;};
|
||||
|
||||
/**
|
||||
* Resets the Total Frames Caught
|
||||
* This is how the receiver differentiates between entire acquisitions
|
||||
* Returns 0
|
||||
*/
|
||||
virtual void resetTotalFramesCaught() {totfCaught=0; cout << "total frames caugh reset " << totfCaught << endl;};
|
||||
|
||||
/** enabl data compression, by saving only hits
|
||||
/returns if failed
|
||||
*/
|
||||
virtual int enableDataCompression(bool enable) {dataCompression=enable; cout << "set data compression " << dataCompression<< endl; return dataCompression;};
|
||||
|
||||
/**
|
||||
* enable 10Gbe
|
||||
@param enable 1 for 10Gbe or 0 for 1 Gbe, -1 to read out
|
||||
\returns enable for 10Gbe
|
||||
*/
|
||||
virtual int enableTenGiga(int enable = -1) {if (enable>=0) {e10G=enable; cout << "set 10Gb "<< e10G << endl;} else cout << "get 10Gb "<< e10G << endl; return e10G;};
|
||||
|
||||
/**
|
||||
* Returns the buffer-current frame read by receiver
|
||||
* @param c pointer to current file name
|
||||
* @param raw address of pointer, pointing to current frame to send to gui
|
||||
* @param fnum frame number for eiger as it is not in the packet
|
||||
* @param startAcquisitionIndex is the start index of the acquisition
|
||||
* @param startFrameIndex is the start index of the scan
|
||||
*/
|
||||
virtual void readFrame(char* c,char** raw, uint32_t &fnum, uint32_t &startAcquisitionIndex, uint32_t &startFrameIndex){cout << "dummy read frame" << endl; };
|
||||
|
||||
/** set status to transmitting and
|
||||
* when fifo is empty later, sets status to run_finished
|
||||
*/
|
||||
virtual void startReadout(){cout << "dummy start readout" << endl; };
|
||||
|
||||
/**
|
||||
* shuts down the udp sockets
|
||||
* \returns if success or fail
|
||||
*/
|
||||
virtual int shutDownUDPSockets(){cout << "dummy shut down udp sockets" << endl; return slsReceiverDefs::OK;};
|
||||
|
||||
/**
|
||||
* Closes all files
|
||||
* @param ithr thread index, -1 for all threads
|
||||
*/
|
||||
virtual void closeFile(int ithr = -1){cout << "dummy close file" << ithr << endl; };
|
||||
|
||||
/**
|
||||
* Call back for start acquisition
|
||||
callback arguments are
|
||||
filepath
|
||||
filename
|
||||
fileindex
|
||||
datasize
|
||||
|
||||
return value is
|
||||
0 callback takes care of open,close,wrie file
|
||||
1 callback writes file, we have to open, close it
|
||||
2 we open, close, write file, callback does not do anything
|
||||
*/
|
||||
virtual void registerCallBackStartAcquisition(int (*func)(char*, char*,int, int, void*),void *arg){cout << "dummy register callback start acquisition" << endl; };
|
||||
|
||||
/**
|
||||
* Call back for acquisition finished
|
||||
callback argument is
|
||||
total frames caught
|
||||
*/
|
||||
virtual void registerCallBackAcquisitionFinished(void (*func)(int, void*),void *arg){cout << "dummy register callback acquisition finished" << endl; };
|
||||
|
||||
/**
|
||||
* Call back for raw data
|
||||
args to raw data ready callback are
|
||||
framenum
|
||||
datapointer
|
||||
datasize in bytes
|
||||
file descriptor
|
||||
guidatapointer (NULL, no data required)
|
||||
*/
|
||||
virtual void registerCallBackRawDataReady(void (*func)(int, char*, int, FILE*, char*, void*),void *arg){cout << "dummy register callback get raw data" << endl; };
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
char detHostname[1000];
|
||||
char fName[10000];
|
||||
char fPath[10000];
|
||||
int dynamicRange;
|
||||
int scanTag;
|
||||
int nFrames;
|
||||
int fWrite;
|
||||
int fOverwrite;
|
||||
|
||||
int fIndex;
|
||||
int fCaught;
|
||||
int totfCaught;
|
||||
int startAcqIndex;
|
||||
int startFrameIndex;
|
||||
int acqIndex;
|
||||
bool dataCompression;
|
||||
int64_t period;
|
||||
slsReceiverDefs::detectorType type;
|
||||
int framesNeeded;
|
||||
int udpPort1;
|
||||
int udpPort2;
|
||||
char eth[1000];
|
||||
int shortFrame;
|
||||
int nFramesToGui;
|
||||
int e10G;
|
||||
};
|
||||
|
||||
#endif /* #ifndef DUMMYUDPINTERFACE_H */
|
@ -1,779 +0,0 @@
|
||||
#pragma once
|
||||
/**
|
||||
*
|
||||
* @libdoc genericSocket provides some functions to open/close sockets both TCP and UDP
|
||||
*
|
||||
* @short some functions to open/close sockets both TCP and UDP
|
||||
* @author Anna Bergamaschi
|
||||
* @version 0.0
|
||||
*/
|
||||
//version 1.0, base development, Ian 19/01/09
|
||||
/* Modified by anna on 19.01.2009 */
|
||||
/*
|
||||
canceled SetupParameters() and varaibles intialized in the constructors' headers;
|
||||
defined SEND_REC_MAX_SIZE (for compatibilty with mythen (and possibly other) pure C servers (i would move it to the common header file)
|
||||
|
||||
added #ifndef C_ONLY... to cutout class definition when including in pure C servers (can be removed if SEND_REC_MAX_SIZE is moved to the common header file)
|
||||
|
||||
defined private variables char hostname[1000] and int portno to store connection informations;
|
||||
|
||||
defined public functions int getHostname(char *name) and int getPortNumber() to retrieve connection informations
|
||||
|
||||
added public function int getErrorStatus() returning 1 if socketDescriptor<0
|
||||
|
||||
remove exits in the constructors and replace them with socketDescriptor=-1
|
||||
|
||||
replaced the argument of send/receive data with void (to avoid too much casting or compiler errors/warnings)
|
||||
|
||||
added a function which really does not close the socket between send/receive (senddataonly, receivedataonly)
|
||||
*/
|
||||
|
||||
#include "ansi.h"
|
||||
|
||||
#ifdef __CINT__
|
||||
//class sockaddr_in;
|
||||
class socklen_t;
|
||||
class uint32_t;
|
||||
class uint32_t_ss;
|
||||
// CINT view of types:
|
||||
class sockaddr_in;
|
||||
// {
|
||||
// unsigned short int sa_family;
|
||||
// unsigned char sa_data[14];
|
||||
// };
|
||||
#else
|
||||
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#include <netinet/in.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <net/if.h>
|
||||
#include <ifaddrs.h>
|
||||
|
||||
#endif
|
||||
|
||||
#include <stdlib.h> /******exit */
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <iostream>
|
||||
#include <math.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
using namespace std;
|
||||
|
||||
#define DEFAULT_PACKET_SIZE 1286
|
||||
/*#define SOCKET_BUFFER_SIZE (100*1024*1024) //100MB*/
|
||||
#define SOCKET_BUFFER_SIZE (2000*1024*1024) //100MB
|
||||
#define DEFAULT_BACKLOG 5
|
||||
|
||||
|
||||
class genericSocket{
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
Communication protocol
|
||||
*/
|
||||
enum communicationProtocol{
|
||||
TCP, /**< TCP/IP */
|
||||
UDP /**< UDP */
|
||||
};
|
||||
|
||||
|
||||
|
||||
genericSocket(const char* const host_ip_or_name, unsigned short int const port_number, communicationProtocol p, int ps = DEFAULT_PACKET_SIZE) :
|
||||
portno(port_number),
|
||||
protocol(p),
|
||||
is_a_server(0),
|
||||
socketDescriptor(-1),
|
||||
file_des(-1),
|
||||
packet_size(ps),
|
||||
nsending(0),
|
||||
nsent(0),
|
||||
total_sent(0),// sender (client): where to? ip
|
||||
header_packet_size(0)
|
||||
{
|
||||
memset(&serverAddress, 0, sizeof(serverAddress));
|
||||
memset(&clientAddress, 0, sizeof(clientAddress));
|
||||
memset(lastClientIP,0,INET_ADDRSTRLEN);
|
||||
memset(thisClientIP,0,INET_ADDRSTRLEN);
|
||||
memset(dummyClientIP,0,INET_ADDRSTRLEN);
|
||||
differentClients = 0;
|
||||
|
||||
struct addrinfo *result;
|
||||
if (!ConvertHostnameToInternetAddress(host_ip_or_name, &result)) {
|
||||
serverAddress.sin_family = result->ai_family;
|
||||
memcpy((char *) &serverAddress.sin_addr.s_addr, &((struct sockaddr_in *) result->ai_addr)->sin_addr, sizeof(in_addr_t));
|
||||
freeaddrinfo(result);
|
||||
serverAddress.sin_port = htons(port_number);
|
||||
socketDescriptor=0;
|
||||
}
|
||||
clientAddress_length=sizeof(clientAddress);
|
||||
}
|
||||
|
||||
|
||||
int getProtocol(communicationProtocol p) {
|
||||
switch (p) {
|
||||
case TCP:
|
||||
return SOCK_STREAM;
|
||||
break;
|
||||
case UDP:
|
||||
return SOCK_DGRAM;
|
||||
|
||||
default:
|
||||
cerr << "unknown protocol " << p << endl;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int getProtocol() {return getProtocol(protocol);};
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
The constructor for a server
|
||||
@short the contructor for a server
|
||||
\param port_number port number to listen to
|
||||
\param p TCP or UDP
|
||||
\param eth interface name or IP address to listen to (if NULL, listen to all interfaces)
|
||||
|
||||
*/
|
||||
|
||||
genericSocket(unsigned short int const port_number, communicationProtocol p, int ps = DEFAULT_PACKET_SIZE, const char *eth=NULL, int hsize=0):
|
||||
portno(port_number),
|
||||
protocol(p),
|
||||
is_a_server(1),
|
||||
socketDescriptor(-1),
|
||||
file_des(-1),
|
||||
packet_size(ps),
|
||||
nsending(0),
|
||||
nsent(0),
|
||||
total_sent(0),
|
||||
header_packet_size(hsize)
|
||||
{
|
||||
|
||||
|
||||
memset(&serverAddress, 0, sizeof(serverAddress));
|
||||
memset(&clientAddress, 0, sizeof(clientAddress));
|
||||
|
||||
/* // you can specify an IP address: */
|
||||
/* // or you can let it automatically select one: */
|
||||
/* myaddr.sin_addr.s_addr = INADDR_ANY; */
|
||||
memset(lastClientIP,0,INET_ADDRSTRLEN);
|
||||
memset(thisClientIP,0,INET_ADDRSTRLEN);
|
||||
memset(dummyClientIP,0,INET_ADDRSTRLEN);
|
||||
differentClients = 0;
|
||||
|
||||
|
||||
|
||||
if(serverAddress.sin_port == htons(port_number)){
|
||||
socketDescriptor = -10;
|
||||
return;
|
||||
}
|
||||
|
||||
char ip[20];
|
||||
|
||||
strcpy(ip,"0.0.0.0");
|
||||
clientAddress_length=sizeof(clientAddress);
|
||||
if (eth) {
|
||||
strcpy(ip,nameToIp(string(eth)).c_str());
|
||||
if (string(ip)==string("0.0.0.0"))
|
||||
strcpy(ip,eth);
|
||||
}
|
||||
|
||||
// strcpy(hostname,"localhost"); //needed?!?!?!?
|
||||
|
||||
|
||||
socketDescriptor = socket(AF_INET, getProtocol(),0); //tcp
|
||||
|
||||
if (socketDescriptor < 0) {
|
||||
cerr << "Can not create socket "<<endl;
|
||||
return;
|
||||
}
|
||||
|
||||
// Set some fields in the serverAddress structure.
|
||||
serverAddress.sin_family = AF_INET;
|
||||
serverAddress.sin_port = htons(port_number);
|
||||
serverAddress.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
|
||||
|
||||
if (string(ip)!=string("0.0.0.0")) {
|
||||
if (inet_pton(AF_INET, ip, &(serverAddress.sin_addr)));
|
||||
else
|
||||
serverAddress.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
}
|
||||
|
||||
|
||||
// reuse port
|
||||
int val=1;
|
||||
if (setsockopt(socketDescriptor,SOL_SOCKET,SO_REUSEADDR,&val,sizeof(int)) == -1) {
|
||||
cerr << "setsockopt" << endl;
|
||||
socketDescriptor=-1;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//increase buffer size if its udp
|
||||
val = SOCKET_BUFFER_SIZE;
|
||||
if((p == UDP) && (setsockopt(socketDescriptor, SOL_SOCKET, SO_RCVBUF, &val, sizeof(int)) == -1))
|
||||
{
|
||||
cerr << "WARNING:Could not set socket receive buffer size" << endl;
|
||||
//socketDescriptor=-1;
|
||||
//return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(bind(socketDescriptor,(struct sockaddr *) &serverAddress,sizeof(serverAddress))<0){
|
||||
cerr << "Can not bind socket "<< endl;
|
||||
socketDescriptor=-1;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (getProtocol()==SOCK_STREAM)
|
||||
listen(socketDescriptor, DEFAULT_BACKLOG);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
The destructor: disconnects and close the socket
|
||||
@short the destructor
|
||||
|
||||
*/
|
||||
~genericSocket(){ \
|
||||
Disconnect();
|
||||
if (socketDescriptor >= 0){ \
|
||||
close(socketDescriptor); \
|
||||
} \
|
||||
if(is_a_server and getProtocol() == TCP){\
|
||||
if(file_des>0)\
|
||||
close(file_des);\
|
||||
}
|
||||
file_des=-1; \
|
||||
serverAddress.sin_port=-1; \
|
||||
};
|
||||
|
||||
|
||||
/* /\** @short if client returns hostname for connection */
|
||||
/* \param name string to write the hostname to */
|
||||
/* \returns 0 if client, 1 if server (in this case ignore name return value) */
|
||||
|
||||
/* *\/ */
|
||||
/* int getHostname(char *name){ */
|
||||
/* if (is_a_server==0) { */
|
||||
/* strcpy(name,getHostname().c_str()); */
|
||||
/* } */
|
||||
/* return is_a_server; */
|
||||
/* }; */
|
||||
/* /\** @short if client returns hostname for connection */
|
||||
/* \returns hostname */
|
||||
|
||||
/* *\/ */
|
||||
/* string getHostname(){return string(hostname);}; */
|
||||
|
||||
/* /\** @short returns port number for connection */
|
||||
/* \returns port number */
|
||||
/* *\/ */
|
||||
/* int getPortNumber(){return portno;}; */
|
||||
|
||||
/** @short returns communication protocol
|
||||
\returns TCP or UDP
|
||||
*/
|
||||
int getCommunicationProtocol(){return protocol;};
|
||||
|
||||
|
||||
/** @short returns error status
|
||||
\returns 1 if error
|
||||
*/
|
||||
int getErrorStatus(){if (socketDescriptor==-10) return -10; else if (socketDescriptor<0) return 1; else return 0;};
|
||||
|
||||
|
||||
/** @short etablishes connection; disconnect should always follow
|
||||
\returns 1 if error
|
||||
*/
|
||||
int Connect(){
|
||||
|
||||
if(file_des>0) return file_des;
|
||||
if (protocol==UDP) return -1;
|
||||
|
||||
if(is_a_server && protocol==TCP){ //server tcp; the server will wait for the clients connection
|
||||
if (socketDescriptor>0) {
|
||||
if ((file_des = accept(socketDescriptor,(struct sockaddr *) &clientAddress, &clientAddress_length)) < 0) {
|
||||
cerr << "Error: with server accept, connection refused"<<endl;
|
||||
switch(errno) {
|
||||
case EWOULDBLOCK:
|
||||
printf("ewouldblock eagain\n");
|
||||
break;
|
||||
case EBADF:
|
||||
printf("ebadf\n");
|
||||
break;
|
||||
case ECONNABORTED:
|
||||
printf("econnaborted\n");
|
||||
break;
|
||||
case EFAULT:
|
||||
printf("efault\n");
|
||||
break;
|
||||
case EINTR:
|
||||
printf("eintr\n");
|
||||
break;
|
||||
case EINVAL:
|
||||
printf("einval\n");
|
||||
break;
|
||||
case EMFILE:
|
||||
printf("emfile\n");
|
||||
break;
|
||||
case ENFILE:
|
||||
printf("enfile\n");
|
||||
break;
|
||||
case ENOTSOCK:
|
||||
printf("enotsock\n");
|
||||
break;
|
||||
case EOPNOTSUPP:
|
||||
printf("eOPNOTSUPP\n");
|
||||
break;
|
||||
case ENOBUFS:
|
||||
printf("ENOBUFS\n");
|
||||
break;
|
||||
case ENOMEM:
|
||||
printf("ENOMEM\n");
|
||||
break;
|
||||
case ENOSR:
|
||||
printf("ENOSR\n");
|
||||
break;
|
||||
case EPROTO:
|
||||
printf("EPROTO\n");
|
||||
break;
|
||||
default:
|
||||
printf("unknown error\n");
|
||||
}
|
||||
socketDescriptor=-1;
|
||||
}
|
||||
else{
|
||||
inet_ntop(AF_INET, &(clientAddress.sin_addr), dummyClientIP, INET_ADDRSTRLEN);
|
||||
#ifdef VERY_VERBOSE
|
||||
cout << "client connected "<< file_des << endl;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
// file_des = socketDescriptor;
|
||||
|
||||
#ifdef VERY_VERBOSE
|
||||
cout << "fd " << file_des << endl;
|
||||
#endif
|
||||
} else {
|
||||
if (socketDescriptor<=0)
|
||||
socketDescriptor = socket(AF_INET, getProtocol(),0);
|
||||
// SetTimeOut(10);
|
||||
if (socketDescriptor < 0){
|
||||
cerr << "Can not create socket "<<endl;
|
||||
file_des = socketDescriptor;
|
||||
} else {
|
||||
if(connect(socketDescriptor,(struct sockaddr *) &serverAddress,sizeof(serverAddress))<0){
|
||||
cerr << "Can not connect to socket "<<endl;
|
||||
file_des = -1;
|
||||
} else{
|
||||
file_des = socketDescriptor;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return file_des;
|
||||
}
|
||||
|
||||
uint16_t getPortNumber(){
|
||||
return ntohs(serverAddress.sin_port);
|
||||
}
|
||||
|
||||
int getFileDes(){return file_des;};
|
||||
|
||||
int getsocketDescriptor(){return socketDescriptor;};
|
||||
|
||||
|
||||
void exitServer(){
|
||||
if(is_a_server){
|
||||
if (socketDescriptor>=0){
|
||||
close(socketDescriptor);
|
||||
socketDescriptor = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** @short free connection */
|
||||
void Disconnect(){
|
||||
if (protocol==UDP){
|
||||
close(socketDescriptor);
|
||||
socketDescriptor=-1;
|
||||
}
|
||||
else{
|
||||
if(file_des>=0){ //then was open
|
||||
if(is_a_server){
|
||||
close(file_des);
|
||||
}
|
||||
else {
|
||||
//while(!shutdown(socketDescriptor, SHUT_RDWR));
|
||||
close(socketDescriptor);
|
||||
socketDescriptor=-1;
|
||||
}
|
||||
file_des=-1;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
void ShutDownSocket(){
|
||||
while(!shutdown(socketDescriptor, SHUT_RDWR));
|
||||
Disconnect();
|
||||
};
|
||||
|
||||
|
||||
|
||||
/** Set the socket timeout ts is in seconds */
|
||||
int SetTimeOut(int ts){
|
||||
|
||||
|
||||
if (ts<=0)
|
||||
return -1;
|
||||
|
||||
struct timeval tout;
|
||||
tout.tv_sec = 0;
|
||||
tout.tv_usec = 0;
|
||||
if(::setsockopt(socketDescriptor, SOL_SOCKET, SO_RCVTIMEO, &tout, sizeof(struct timeval)) <0)
|
||||
{
|
||||
cerr << "Error in setsockopt SO_RCVTIMEO "<< 0 << endl;
|
||||
}
|
||||
tout.tv_sec = ts;
|
||||
tout.tv_usec = 0;
|
||||
if(::setsockopt(socketDescriptor, SOL_SOCKET, SO_SNDTIMEO, &tout, sizeof(struct timeval)) < 0)
|
||||
{
|
||||
cerr << "Error in setsockopt SO_SNDTIMEO " << ts << endl;
|
||||
}
|
||||
return 0;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
int setPacketSize(int i=-1) { if (i>=0) packet_size=i;return packet_size;};
|
||||
|
||||
|
||||
|
||||
static string ipToName(string ip) {
|
||||
struct ifaddrs *addrs, *iap;
|
||||
struct sockaddr_in *sa;
|
||||
|
||||
char buf[32];
|
||||
const int buf_len = sizeof(buf);
|
||||
memset(buf,0,buf_len);
|
||||
strcpy(buf,"none");
|
||||
|
||||
getifaddrs(&addrs);
|
||||
for (iap = addrs; iap != NULL; iap = iap->ifa_next) {
|
||||
if (iap->ifa_addr && (iap->ifa_flags & IFF_UP) && iap->ifa_addr->sa_family == AF_INET) {
|
||||
sa = (struct sockaddr_in *)(iap->ifa_addr);
|
||||
inet_ntop(iap->ifa_addr->sa_family, (void *)&(sa->sin_addr), buf, buf_len);
|
||||
if (ip==string(buf)) {
|
||||
//printf("%s\n", iap->ifa_name);
|
||||
strcpy(buf,iap->ifa_name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
freeifaddrs(addrs);
|
||||
return string(buf);
|
||||
};
|
||||
|
||||
static string nameToMac(string inf) {
|
||||
struct ifreq ifr;
|
||||
int sock, j, k;
|
||||
char mac[32];
|
||||
const int mac_len = sizeof(mac);
|
||||
memset(mac,0,mac_len);
|
||||
|
||||
sock=getSock(inf,&ifr);
|
||||
|
||||
if (-1==ioctl(sock, SIOCGIFHWADDR, &ifr)) {
|
||||
perror("ioctl(SIOCGIFHWADDR) ");
|
||||
return string("00:00:00:00:00:00");
|
||||
}
|
||||
for (j=0, k=0; j<6; j++) {
|
||||
k+=snprintf(mac+k, mac_len-k-1, j ? ":%02X" : "%02X",
|
||||
(int)(unsigned int)(unsigned char)ifr.ifr_hwaddr.sa_data[j]);
|
||||
}
|
||||
mac[mac_len-1]='\0';
|
||||
|
||||
if(sock!=1){
|
||||
close(sock);
|
||||
}
|
||||
return string(mac);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
static string nameToIp(string inf){
|
||||
struct ifreq ifr;
|
||||
int sock;
|
||||
char *p, addr[32];
|
||||
const int addr_len = sizeof(addr);
|
||||
memset(addr,0,addr_len);
|
||||
|
||||
sock=getSock(inf,&ifr);
|
||||
|
||||
if (-1==ioctl(sock, SIOCGIFADDR, &ifr)) {
|
||||
perror("ioctl(SIOCGIFADDR) ");
|
||||
return string("0.0.0.0");
|
||||
}
|
||||
p=inet_ntoa(((struct sockaddr_in *)(&ifr.ifr_addr))->sin_addr);
|
||||
strncpy(addr,p,addr_len-1);
|
||||
addr[addr_len-1]='\0';
|
||||
|
||||
if(sock!=1){
|
||||
close(sock);
|
||||
}
|
||||
return string(addr);
|
||||
|
||||
};
|
||||
|
||||
static int getSock(string inf, struct ifreq *ifr) {
|
||||
|
||||
int sock;
|
||||
sock=socket(PF_INET, SOCK_STREAM, 0);
|
||||
if (-1==sock) {
|
||||
perror("socket() ");
|
||||
return 1;
|
||||
}
|
||||
strncpy(ifr->ifr_name,inf.c_str(),sizeof(ifr->ifr_name)-1);
|
||||
ifr->ifr_name[sizeof(ifr->ifr_name)-1]='\0';
|
||||
|
||||
return sock;
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Convert Hostname to Internet address info structure
|
||||
* One must use freeaddrinfo(res) after using it
|
||||
* @param hostname hostname
|
||||
* @param res address of pointer to address info structure
|
||||
* @return 1 for fail, 0 for success
|
||||
*/
|
||||
// Do not make this static (for multi threading environment)
|
||||
int ConvertHostnameToInternetAddress (const char* const hostname, struct addrinfo **res) {
|
||||
// criteria in selecting socket address structures returned by res
|
||||
struct addrinfo hints;
|
||||
memset (&hints, 0, sizeof (hints));
|
||||
hints.ai_family = AF_INET;
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
// get host info into res
|
||||
int errcode = getaddrinfo (hostname, NULL, &hints, res);
|
||||
if (errcode != 0) {
|
||||
cprintf (RED,"Error: Could not convert %s hostname to internet address (zmq):"
|
||||
"%s\n", hostname, gai_strerror(errcode));
|
||||
} else {
|
||||
if (*res == NULL) {
|
||||
cprintf (RED,"Error: Could not convert %s hostname to internet address (zmq): "
|
||||
"gettaddrinfo returned null\n", hostname);
|
||||
} else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
cerr << "Error: Could not convert hostname to internet address" << endl;
|
||||
return 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* Convert Internet Address structure pointer to ip string (char*)
|
||||
* Clears the internet address structure as well
|
||||
* @param res pointer to internet address structure
|
||||
* @param ip pointer to char array to store result in
|
||||
* @param ipsize size available in ip buffer
|
||||
* @return 1 for fail, 0 for success
|
||||
*/
|
||||
// Do not make this static (for multi threading environment)
|
||||
int ConvertInternetAddresstoIpString (struct addrinfo *res, char* ip, const int ipsize) {
|
||||
if (inet_ntop (res->ai_family, &((struct sockaddr_in *) res->ai_addr)->sin_addr, ip, ipsize) != NULL) {
|
||||
freeaddrinfo(res);
|
||||
return 0;
|
||||
}
|
||||
cerr << "Error: Could not convert internet address to ip string" << endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int ReceiveDataOnly(void* buf,int length=0){
|
||||
|
||||
if (buf==NULL) return -1;
|
||||
|
||||
total_sent=0;
|
||||
|
||||
switch(protocol) {
|
||||
case TCP:
|
||||
if (file_des<0) return -1;
|
||||
while(length>0){
|
||||
nsending = (length>packet_size) ? packet_size:length;
|
||||
nsent = read(file_des,(char*)buf+total_sent,nsending);
|
||||
if(!nsent) {
|
||||
if(!total_sent) {
|
||||
return -1; //to handle it
|
||||
}
|
||||
break;
|
||||
}
|
||||
length-=nsent;
|
||||
total_sent+=nsent;
|
||||
}
|
||||
|
||||
if (total_sent>0)
|
||||
strcpy(thisClientIP,dummyClientIP);
|
||||
|
||||
if (strcmp(lastClientIP,thisClientIP))
|
||||
differentClients=1;
|
||||
else
|
||||
differentClients=0;
|
||||
|
||||
break;
|
||||
case UDP:
|
||||
if (socketDescriptor<0) return -1;
|
||||
//if length given, listens to length, else listens for packetsize till length is reached
|
||||
if(length){
|
||||
while(length>0){
|
||||
nsending = (length>packet_size) ? packet_size:length;
|
||||
nsent = recvfrom(socketDescriptor,(char*)buf+total_sent,nsending, 0, (struct sockaddr *) &clientAddress, &clientAddress_length);
|
||||
if(nsent == header_packet_size)
|
||||
continue;
|
||||
if(nsent != nsending){
|
||||
if(nsent && (nsent != -1))
|
||||
cprintf(RED,"Incomplete Packet size %d\n",nsent);
|
||||
break;
|
||||
}
|
||||
length-=nsent;
|
||||
total_sent+=nsent;
|
||||
}
|
||||
}
|
||||
//listens to only 1 packet
|
||||
else{
|
||||
//normal
|
||||
nsending=packet_size;
|
||||
while(1){
|
||||
#ifdef VERYVERBOSE
|
||||
cprintf(BLUE,"%d gonna listen\n", portno); fflush(stdout);
|
||||
#endif
|
||||
nsent = recvfrom(socketDescriptor,(char*)buf+total_sent,nsending, 0, (struct sockaddr *) &clientAddress, &clientAddress_length);
|
||||
//break out of loop only if read one packets size or read didnt work (cuz of shutdown)
|
||||
if(nsent<=0 || nsent == packet_size)
|
||||
break;
|
||||
//incomplete packets or header packets ignored and read buffer again
|
||||
if(nsent != packet_size && nsent != header_packet_size)
|
||||
cprintf(RED,"%d Incomplete Packet size %d\n", portno, nsent);
|
||||
}
|
||||
//nsent = 1040;
|
||||
if(nsent > 0)total_sent+=nsent;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
;
|
||||
}
|
||||
#ifdef VERY_VERBOSE
|
||||
cout << "sent "<< total_sent << " Bytes" << endl;
|
||||
#endif
|
||||
|
||||
|
||||
return total_sent;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
int SendDataOnly(void *buf, int length) {
|
||||
#ifdef VERY_VERBOSE
|
||||
cout << "want to send "<< length << " Bytes" << endl;
|
||||
#endif
|
||||
if (buf==NULL) return -1;
|
||||
|
||||
total_sent=0;
|
||||
|
||||
|
||||
switch(protocol) {
|
||||
case TCP:
|
||||
if (file_des<0) return -1;
|
||||
while(length>0){
|
||||
nsending = (length>packet_size) ? packet_size:length;
|
||||
nsent = write(file_des,(char*)buf+total_sent,nsending);
|
||||
if(is_a_server && nsent < 0) {
|
||||
cprintf(BG_RED, "Error writing to socket. Possible client socket crash\n");
|
||||
break;
|
||||
}
|
||||
if(!nsent) break;
|
||||
length-=nsent;
|
||||
total_sent+=nsent;
|
||||
}
|
||||
break;
|
||||
case UDP:
|
||||
if (socketDescriptor<0) return -1;
|
||||
while(length>0){
|
||||
nsending = (length>packet_size) ? packet_size:length;
|
||||
nsent = sendto(socketDescriptor,(char*)buf+total_sent,nsending, 0, (struct sockaddr *) &clientAddress, clientAddress_length);
|
||||
if(!nsent) break;
|
||||
length-=nsent;
|
||||
total_sent+=nsent;
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
;
|
||||
}
|
||||
#ifdef VERY_VERBOSE
|
||||
cout << "sent "<< total_sent << " Bytes" << endl;
|
||||
#endif
|
||||
return total_sent;
|
||||
}
|
||||
|
||||
|
||||
int getCurrentTotalReceived(){
|
||||
return total_sent;
|
||||
}
|
||||
|
||||
char lastClientIP[INET_ADDRSTRLEN];
|
||||
char thisClientIP[INET_ADDRSTRLEN];
|
||||
int differentClients;
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
int portno;
|
||||
communicationProtocol protocol;
|
||||
int is_a_server;
|
||||
int socketDescriptor;
|
||||
int file_des;
|
||||
int packet_size;
|
||||
struct sockaddr_in clientAddress, serverAddress;
|
||||
socklen_t clientAddress_length;
|
||||
char dummyClientIP[INET_ADDRSTRLEN];
|
||||
|
||||
|
||||
private:
|
||||
|
||||
int nsending;
|
||||
int nsent;
|
||||
int total_sent;
|
||||
int header_packet_size;
|
||||
|
||||
// pthread_mutex_t mp;
|
||||
};
|
@ -1,133 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<HTML><!-- #BeginTemplate "/templates/psi_template.dwt" -->
|
||||
<HEAD>
|
||||
|
||||
<!--#include virtual="/webbase/ssi/defaultvariables.shtml" -->
|
||||
|
||||
<!-- Change only the text within the 3 BeginEditable ... EndEditable Sections: -->
|
||||
<!-- MetaData - Definitions - BodyContent -->
|
||||
|
||||
<!-- #BeginEditable "MetaData" -->
|
||||
<TITLE>slsDetectorUsers Example</TITLE>
|
||||
<META name="keywords" content="slsDetectorUsers">
|
||||
<META name="description" content="SLS Detector Users Example">
|
||||
<META name="author" content="Anna Bergamaschi">
|
||||
<!-- #EndEditable -->
|
||||
|
||||
<!--#include virtual="/webbase/ssi/instructions.shtml" -->
|
||||
|
||||
<!--#include virtual="$PRJDIR/ssi/projectvariables.shtml" -->
|
||||
|
||||
<!-- # = Active changes to projectvariables or defaultvariables, no # = Inactive -->
|
||||
|
||||
<!-- #BeginEditable "Definitions" -->
|
||||
<!--#set var="PAGETITLE" value='Anna Bergamaschi' -->
|
||||
<!--set var="ALTLANGUAGE" value='english' -->
|
||||
<!--set var="DIRLANGUAGE" value='d/' -->
|
||||
<!--#set var="MAILTO" value='anna.bergamaschi@psi.ch' -->
|
||||
<!--#set var="MAILCC" value=' ' -->
|
||||
<!--set var="NAVTOP" value='/webbase/ssi/top_psi.shtml' -->
|
||||
<!--#set var="NAVLEFT" value='$SSIDIR/side.shtml' -->
|
||||
<!-- #EndEditable -->
|
||||
|
||||
<!--#include virtual="/webbase/ssi/head.shtml" -->
|
||||
|
||||
</head>
|
||||
|
||||
<!--#include virtual="/webbase/ssi/pretemplate.shtml" -->
|
||||
|
||||
<!-- #BeginEditable "BodyContent" -->
|
||||
|
||||
<H1>Custom SLS Receiver Example</H1>
|
||||
|
||||
|
||||
<H3> Main Files </H3>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="Makefile">Makefile</a> Edit to properly link the slsDetector libraries
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="dummyMain.cpp">dummyMain.cpp</a> Main combining the required TCPIP interface and the custom dummy UDP implementation
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="dummyUDPInterface.h">dummyUDPInterface.h</a> Dummy example of UDP interface implementation -- the UDP server never start listening!
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<H3> Library Files </H3>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="libSlsReceiver.so">libSlsReceiver.so</a> Receiver Library
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<H3> Include Files </H3>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="slsReceiverTCPIPInterface.h">slsReceiverTCPIPInterface.h</a> TCP/IP Interface between client and receiver
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="UDPInterface.h">UDPInterface.h</a> abstract UDP Interface of the receiver
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="UDPBaseImplementation.h">UDPBaseImplementation.h</a> Base Implementation of UDP Interface. Dummy Interface will be a child class of this
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="sls_receiver_defs.h">sls_receiver_defs.h</a> Includes definitions used in the example files
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="sls_receiver_funcs.h">sls_receiver_funcs.h</a> Required by sls_receiver_defs.h
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="sls_receiver_funcs.h">sls_receiver_funcs.h</a> Required by sls_receiver_defs.h
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="MySocketTCP.h">MySocketTCP.h</a> To create Sockets. Required by slsReceiverTCPIPInterface.h
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="genericSocket.h">genericSocket.h</a> Required by MySocketTCP.h
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="receiver_defs.h">receiver_defs.h</a> Required by slsReceiverTCPIPInterface.h
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="utilities.h">utilities.h</a> Required by UDPInterface.h
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="logger.h">logger.h</a> Required by UDPInterface.h
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="ansi.h">ansi.h</a> Colored print. Required by most files
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<H3> ZMQ Include Files </H3>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="zmq.h">zmq.h</a> Public Include file for ZMQ API users.
|
||||
</li>
|
||||
<li>
|
||||
<a href="libzmq.a">libzmq.a</a> Static libary file
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<!-- #EndEditable -->
|
||||
|
||||
<!--#include virtual="/webbase/ssi/posttemplate.shtml" -->
|
||||
<!-- #EndTemplate -->
|
||||
</HTML>
|
@ -1,66 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<HTML><!-- #BeginTemplate "/templates/psi_template.dwt" -->
|
||||
<HEAD>
|
||||
|
||||
<!--#include virtual="/webbase/ssi/defaultvariables.shtml" -->
|
||||
|
||||
<!-- Change only the text within the 3 BeginEditable ... EndEditable Sections: -->
|
||||
<!-- MetaData - Definitions - BodyContent -->
|
||||
|
||||
<!-- #BeginEditable "MetaData" -->
|
||||
<TITLE>slsDetectorUsers Example</TITLE>
|
||||
<META name="keywords" content="slsDetectorUsers">
|
||||
<META name="description" content="SLS Detector Users Example">
|
||||
<META name="author" content="Anna Bergamaschi">
|
||||
<!-- #EndEditable -->
|
||||
|
||||
<!--#include virtual="/webbase/ssi/instructions.shtml" -->
|
||||
|
||||
<!--#include virtual="$PRJDIR/ssi/projectvariables.shtml" -->
|
||||
|
||||
<!-- # = Active changes to projectvariables or defaultvariables, no # = Inactive -->
|
||||
|
||||
<!-- #BeginEditable "Definitions" -->
|
||||
<!--#set var="PAGETITLE" value='Anna Bergamaschi' -->
|
||||
<!--set var="ALTLANGUAGE" value='english' -->
|
||||
<!--set var="DIRLANGUAGE" value='d/' -->
|
||||
<!--#set var="MAILTO" value='anna.bergamaschi@psi.ch' -->
|
||||
<!--#set var="MAILCC" value=' ' -->
|
||||
<!--set var="NAVTOP" value='/webbase/ssi/top_psi.shtml' -->
|
||||
<!--#set var="NAVLEFT" value='$SSIDIR/side.shtml' -->
|
||||
<!-- #EndEditable -->
|
||||
|
||||
<!--#include virtual="/webbase/ssi/head.shtml" -->
|
||||
|
||||
</head>
|
||||
|
||||
<!--#include virtual="/webbase/ssi/pretemplate.shtml" -->
|
||||
|
||||
<!-- #BeginEditable "BodyContent" -->
|
||||
|
||||
<H1>SLS Detector Users Example</H1>
|
||||
|
||||
<H3> Main Files </H3>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="CMakeLists.txt">CMakeLists.txt</a> This is called from main package cmake to create slsMultiReceiver.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Makefile">Makefile</a> Edit to properly link the slsDetector libraries to build/bin or bin
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="mainClient.cpp">mainClient.cpp</a> Example of control client
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="mainReceiver.cpp">mainReceiver.cpp</a> Example of receiver. Can be used in same process as client or a separate process.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<!-- #EndEditable -->
|
||||
|
||||
<!--#include virtual="/webbase/ssi/posttemplate.shtml" -->
|
||||
<!-- #EndTemplate -->
|
||||
</HTML>
|
24
examples/ang.off
Executable file
@ -0,0 +1,24 @@
|
||||
module 0 center 6.395E+02 +- 0.00E+00 conversion 6.5660E-05 +- 7.10E-09 offset 0.00000 +- 0.00015
|
||||
module 1 center 6.395E+02 +- 0.00E+00 conversion 6.5650E-05 +- 7.09E-09 offset 5.00211 +- 0.00015
|
||||
module 2 center 6.395E+02 +- 0.00E+00 conversion 6.5625E-05 +- 7.09E-09 offset 10.00733 +- 0.00015
|
||||
module 3 center 6.395E+02 +- 0.00E+00 conversion 6.5618E-05 +- 7.09E-09 offset 15.00742 +- 0.00015
|
||||
module 4 center 6.395E+02 +- 0.00E+00 conversion 6.5642E-05 +- 7.15E-09 offset 20.00620 +- 0.00015
|
||||
module 5 center 6.395E+02 +- 0.00E+00 conversion 6.5612E-05 +- 7.09E-09 offset 25.00281 +- 0.00015
|
||||
module 6 center 6.395E+02 +- 0.00E+00 conversion 6.5623E-05 +- 6.93E-09 offset 30.00704 +- 0.00015
|
||||
module 7 center 6.395E+02 +- 0.00E+00 conversion 6.5605E-05 +- 7.10E-09 offset 34.99715 +- 0.00015
|
||||
module 8 center 6.395E+02 +- 0.00E+00 conversion 6.5643E-05 +- 7.21E-09 offset 39.99533 +- 0.00015
|
||||
module 9 center 6.395E+02 +- 0.00E+00 conversion 6.5638E-05 +- 7.09E-09 offset 44.99969 +- 0.00015
|
||||
module 10 center 6.395E+02 +- 0.00E+00 conversion 6.5638E-05 +- 6.94E-09 offset 49.99859 +- 0.00015
|
||||
module 11 center 6.395E+02 +- 0.00E+00 conversion 6.5644E-05 +- 7.10E-09 offset 54.99499 +- 0.00015
|
||||
module 12 center 6.395E+02 +- 0.00E+00 conversion 6.5618E-05 +- 7.09E-09 offset 59.99120 +- 0.00015
|
||||
module 13 center 6.395E+02 +- 0.00E+00 conversion 6.5607E-05 +- 7.11E-09 offset 64.98880 +- 0.00015
|
||||
module 14 center 6.395E+02 +- 0.00E+00 conversion 6.5609E-05 +- 7.09E-09 offset 69.98205 +- 0.00015
|
||||
module 15 center 6.395E+02 +- 0.00E+00 conversion 6.5611E-05 +- 7.09E-09 offset 74.98379 +- 0.00015
|
||||
module 16 center 6.395E+02 +- 0.00E+00 conversion 6.5619E-05 +- 4.72E-09 offset 79.98559 +- 0.00015
|
||||
module 17 center 6.395E+02 +- 0.00E+00 conversion 6.5604E-05 +- 7.09E-09 offset 84.98376 +- 0.00015
|
||||
module 18 center 6.395E+02 +- 0.00E+00 conversion 6.5605E-05 +- 7.09E-09 offset 89.98307 +- 0.00015
|
||||
module 19 center 6.395E+02 +- 0.00E+00 conversion 6.5616E-05 +- 7.09E-09 offset 94.98907 +- 0.00015
|
||||
module 20 center 6.395E+02 +- 0.00E+00 conversion 6.5634E-05 +- 7.08E-09 offset 99.97965 +- 0.00015
|
||||
module 21 center 6.395E+02 +- 0.00E+00 conversion 6.5608E-05 +- 4.16E-09 offset 104.99732 +- 0.00016
|
||||
module 22 center 6.395E+02 +- 0.00E+00 conversion 6.5608E-05 +- 7.09E-09 offset 109.98646 +- 0.00015
|
||||
module 23 center 6.395E+02 +- 0.00E+00 conversion 6.5649E-05 +- 7.09E-09 offset 114.98765 +- 0.00015
|
5
examples/bad.chans
Normal file
@ -0,0 +1,5 @@
|
||||
15
|
||||
1528
|
||||
5000
|
||||
6513
|
||||
|
47
examples/config_gen_script/beb_31_25.config_gen
Normal file
@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
|
||||
# local variables
|
||||
dir=/home/l_msdetect/martin/sls_detectors_package/settingsdir/eiger
|
||||
|
||||
# HOSTNAMES is special
|
||||
# Beside of the hostname line it also defines the amount of (half) modules
|
||||
# for the body part
|
||||
# take care for the last space
|
||||
HOSTNAMES="beb031 beb025 "
|
||||
|
||||
## header contains constant values at the beginning of the file
|
||||
header=(
|
||||
detsizechan="2048 512"
|
||||
)
|
||||
|
||||
## the body part is for each half module
|
||||
# counters will count automatically
|
||||
# the number behind ':' indicates the incrementation value
|
||||
|
||||
counters=(
|
||||
rx_tcpport="1958:1"
|
||||
rx_udpport="50001:2"
|
||||
rx_udpport2="50002:2"
|
||||
)
|
||||
|
||||
# constant values
|
||||
constants=(
|
||||
rx_hostname="mpc1975"
|
||||
lock=0
|
||||
settingsdir=$dir
|
||||
caldir=$dir
|
||||
)
|
||||
|
||||
# lists contains space separated lists each value for each half module
|
||||
lists=(
|
||||
#detectorip="10.1.1.214 10.1.1.213 10.1.1.216 10.1.1.211 10.1.1.215 10.1.1.210 10.1.1.217 10.1.1.212"
|
||||
)
|
||||
|
||||
|
||||
## footer contains constant values for the end of the file
|
||||
footer=(
|
||||
outdir=/home/l_msdetect/martin/out
|
||||
threaded=1
|
||||
clkdivider=2
|
||||
)
|
||||
|
71
examples/config_gen_script/config_gen
Executable file
@ -0,0 +1,71 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ "$1" == "--help" ]; then
|
||||
echo This tool generates config files.
|
||||
echo Please edit the variables in the script
|
||||
echo and run $0 \> output.config.
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$1" == "" ]; then
|
||||
echo This script generates config files for slsDetector out of config_gen files
|
||||
echo Please specify the config_gen file
|
||||
exit
|
||||
fi
|
||||
|
||||
. $1
|
||||
|
||||
|
||||
function get_name_value
|
||||
{
|
||||
name=${1%%=*}
|
||||
value=${1#*=}
|
||||
}
|
||||
|
||||
function shift_var
|
||||
{
|
||||
shifts=$1
|
||||
shift
|
||||
shift $shifts
|
||||
value=$1
|
||||
}
|
||||
|
||||
|
||||
echo hostname ${HOSTNAMES// /+}
|
||||
for i in "${header[@]}"; do
|
||||
get_name_value "$i"
|
||||
echo $name $value
|
||||
done
|
||||
|
||||
echo
|
||||
|
||||
num=0
|
||||
for host in $HOSTNAMES; do
|
||||
for i in "${counters[@]}"; do
|
||||
get_name_value "$i"
|
||||
value2=${value%%:*}
|
||||
inc=${value#*:}
|
||||
echo $num:$name $((value2+$((num*$inc))))
|
||||
done
|
||||
|
||||
for i in "${lists[@]}"; do
|
||||
get_name_value "$i"
|
||||
shift_var $num $value
|
||||
echo $num:$name $value
|
||||
done
|
||||
|
||||
for i in "${constants[@]}"; do
|
||||
get_name_value "$i"
|
||||
echo $num:$name $value
|
||||
done
|
||||
echo
|
||||
num=$((num+1))
|
||||
done
|
||||
|
||||
for i in "${footer[@]}"; do
|
||||
get_name_value "$i"
|
||||
echo $name $value
|
||||
done
|
||||
|
||||
exit
|
||||
|
47
examples/config_gen_script/eiger_2m_1gb.config_gen
Normal file
@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
|
||||
# local variables
|
||||
dir=/home/l_msdetect/martin/sls_detectors_package/settingsdir/eiger
|
||||
|
||||
# HOSTNAMES is special
|
||||
# Beside of the hostname line it also defines the amount of (half) modules
|
||||
# for the body part
|
||||
# take care for the last space
|
||||
HOSTNAMES="beb074 beb071 beb064 beb102 beb087 beb088 beb072 beb073 "
|
||||
|
||||
## header contains constant values at the beginning of the file
|
||||
header=(
|
||||
detsizechan="4096 512"
|
||||
)
|
||||
|
||||
## the body part is for each half module
|
||||
# counters will count automatically
|
||||
# the number behind ':' indicates the incrementation value
|
||||
|
||||
counters=(
|
||||
rx_tcpport="1991:1"
|
||||
rx_udpport="50011:2"
|
||||
rx_udpport2="50012:2"
|
||||
)
|
||||
|
||||
# constant values
|
||||
constants=(
|
||||
rx_hostname="10.1.1.100"
|
||||
rx_udpip="10.1.1.100"
|
||||
lock=0
|
||||
settingsdir=$dir
|
||||
caldir=$dir
|
||||
)
|
||||
|
||||
# lists contains space separated lists each value for each half module
|
||||
lists=(
|
||||
detectorip="10.1.1.214 10.1.1.213 10.1.1.216 10.1.1.211 10.1.1.215 10.1.1.210 10.1.1.217 10.1.1.212"
|
||||
)
|
||||
|
||||
|
||||
## footer contains constant values for the end of the file
|
||||
footer=(
|
||||
outdir=/home/l_msdetect/martin/out
|
||||
threaded=1
|
||||
)
|
||||
|
33
examples/eiger_10Gb.config
Normal file
@ -0,0 +1,33 @@
|
||||
detsizechan 1024 512
|
||||
#detetctor geometry, long side of the module first
|
||||
hostname beb059+beb058+
|
||||
#1Gb detector hostname for controls
|
||||
|
||||
0:rx_tcpport 1991
|
||||
#tcpport for the first halfmodule
|
||||
0:rx_udpport 50011
|
||||
#udp port first quadrant, first halfmodule
|
||||
0:rx_udpport2 50012
|
||||
#udp port second quadrant, first halfmodule
|
||||
0:rx_udpip 10.0.30.210
|
||||
#udp IP of the receiver over 10Gb
|
||||
0:detectorip 10.0.30.100
|
||||
#first half module 10 Gb IP
|
||||
|
||||
1:rx_tcpport 1992
|
||||
#tcpport for the second halfmodule
|
||||
1:rx_udpport 50013
|
||||
#udp port first quadrant, second halfmodule
|
||||
1:rx_udpport2 50014
|
||||
#udp port second quadrant, second halfmodule
|
||||
1:rx_udpip 10.0.40.210
|
||||
#udp IP of the receiver over 10Gb,
|
||||
#can be the same or different from 0:rx_udpip
|
||||
1:detectorip 10.0.40.101
|
||||
#second half module 10 Gb IP
|
||||
|
||||
rx_hostname x12sa-vcons
|
||||
#1Gb receiver pc hostname
|
||||
|
||||
outdir /sls/X12SA/data/x12saop/Data10/Eiger0.5M
|
||||
threaded 1
|
24
examples/eiger_1Gb.config
Normal file
@ -0,0 +1,24 @@
|
||||
detsizechan 1024 512
|
||||
#detetctor geometry, long side of the module first
|
||||
hostname beb059+beb058+
|
||||
#1Gb detector hostname for controls
|
||||
|
||||
0:rx_tcpport 1991
|
||||
#tcpport for the first halfmodule
|
||||
0:rx_udpport 50011
|
||||
#udp port first quadrant, first halfmodule
|
||||
0:rx_udpport2 50012
|
||||
#udp port second quadrant, first halfmodule
|
||||
|
||||
1:rx_tcpport 1992
|
||||
#tcpport for the second halfmodule
|
||||
1:rx_udpport 50013
|
||||
#udp port first quadrant, second halfmodule
|
||||
1:rx_udpport2 50014
|
||||
#udp port second quadrant, second halfmodule
|
||||
|
||||
rx_hostname x12sa-vcons
|
||||
#1Gb receiver pc hostname
|
||||
|
||||
outdir /sls/X12SA/data/x12saop/Data10/Eiger0.5M
|
||||
threaded 1
|