From 834794ad981e204e93463800e06e8069208b82b9 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Tue, 19 Dec 2017 18:04:44 +0100 Subject: [PATCH 01/25] gotthard renamed binaries --- serverBin/gotthardDetectorServer | 2 +- ...0.0.7 => gotthardDetectorServerv3.0.0.5.1} | Bin 132056 -> 132056 bytes 2 files changed, 1 insertion(+), 1 deletion(-) rename slsDetectorSoftware/gotthardDetectorServer/{gotthardDetectorServerv3.0.0.7 => gotthardDetectorServerv3.0.0.5.1} (99%) diff --git a/serverBin/gotthardDetectorServer b/serverBin/gotthardDetectorServer index b88a50de5d..ccac24b2a8 120000 --- a/serverBin/gotthardDetectorServer +++ b/serverBin/gotthardDetectorServer @@ -1 +1 @@ -../slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.0.0.7 \ No newline at end of file +../slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.0.0.5.1 \ No newline at end of file diff --git a/slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.0.0.7 b/slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.0.0.5.1 similarity index 99% rename from slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.0.0.7 rename to slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.0.0.5.1 index 74c484834730c69bfac30b5d6396cd0d2613aebe..adf23145cd32e108aa8237a2a5312b70587654a4 100755 GIT binary patch delta 26 icmcc7&T*riV}cfwTha8wWsDMyF0C$%TV0r@FarRIwh1c$ delta 26 icmcc7&T*riV}cfw Date: Tue, 12 Jun 2018 12:17:30 +0200 Subject: [PATCH 02/25] bug fix for memory leak for every multi threading command when using API --- .../slsDetector/slsDetector.cpp | 5 +++- .../receiverInterface.cpp | 4 +-- slsDetectorSoftware/threadFiles/Task.h | 29 +++++++++++++++++-- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index b5f7232527..5f82f443a3 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -270,7 +270,10 @@ slsDetector::~slsDetector(){ else printf("Shared memory %d detached\n", shmId); #endif -delete thisReceiver; + if(controlSocket) delete controlSocket; + if(stopSocket) delete stopSocket; + if(dataSocket) delete dataSocket; +if(thisReceiver) delete thisReceiver; }; slsDetector::slsDetector(int pos, char *name, int id, int cport,multiSlsDetector *p) : slsDetectorUtils(), diff --git a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp index a87747cf61..510f537aed 100644 --- a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp +++ b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp @@ -15,9 +15,7 @@ receiverInterface::receiverInterface(MySocketTCP *socket):dataSocket(socket){} -receiverInterface::~receiverInterface(){ - delete dataSocket; -} +receiverInterface::~receiverInterface(){} diff --git a/slsDetectorSoftware/threadFiles/Task.h b/slsDetectorSoftware/threadFiles/Task.h index 76312995c2..66b295ba27 100644 --- a/slsDetectorSoftware/threadFiles/Task.h +++ b/slsDetectorSoftware/threadFiles/Task.h @@ -110,7 +110,7 @@ class SuperTask: public virtual slsDetectorDefs { public: SuperTask(): m1(0),m2(0),m3(0),m4(0),m5(0),m6(0),m7(0),m8(0),m9(0),m10(0),m11(0),m12(0),m13(0),m14(0),m15(0),m16(0),m17(0),m18(0){}; - ~SuperTask(){}; + virtual ~SuperTask(){}; protected: /** Function signature defined * First argument is Return type, the remaining are arguments @@ -159,7 +159,32 @@ class Task: public virtual SuperTask { Task(func4_t * t): SuperTask(),fnum(17){m17 = t;}; Task(func4_t * t): SuperTask(),fnum(18){m18 = t;}; - ~Task(){} + virtual ~Task(){ + switch(fnum) { + case 1: delete m1; break; + case 2: delete m2; break; + case 3: delete m3; break; + case 4: delete m4; break; + case 5: delete m5; break; + case 6: delete m6; break; + case 7: delete m7; break; + case 8: delete m8; break; + case 9: delete m9; break; + case 10: delete m10; break; + case 11: delete m11; break; + case 12: delete m12; break; + case 13: delete m13; break; + case 14: delete m14; break; + case 15: delete m15; break; + case 16: delete m16; break; + case 17: delete m17; break; + case 18: delete m18; break; + default: + cprintf(RED, "Error: Task not defined. Abort!\n"); + break; + } + + }; void operator()(){ switch(fnum) { From 764becc271a7292ace3ba84137d0dabae4e77bd0 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Tue, 12 Jun 2018 12:23:24 +0200 Subject: [PATCH 03/25] updated release.txt --- RELEASE.txt | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/RELEASE.txt b/RELEASE.txt index 15199b0f28..1a2ca929be 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -1,31 +1,26 @@ -SLS Detector Package 3.1.1 released on 2018-03-20 +SLS Detector Package 3.1.2 released on 2018-06-12 ================================================= INTRODUCTION -This document describes the differences between 3.1.0 into 3.1.0 releases. +This document describes the differences between 3.1.2 into 3.1.1 releases. Topics Concerning ================== - Jungfrau adcphase - Eiger in 10 GbE mode + Memory Leak in Client API Resolved Issues =============== - Detector Server and Client - -------------------------- - 1. (Jungfrau) Bug fix: Same adc phase given to the PLL will still shift - adc by one step. One can now give same adc phase repeatedly. + Client + ------ + 1. Memory Leak for every multi threading command in client + when using API in multi detector mode. This is fixed now. - Updated Command Line Manual for adcphase and clkdivider. - - 2. (Eiger) Bug Fix: This bug was introduced in 3.1.0 release. - In 10GbE mode, if "detectorip" is before "tengiga", the detector still - used the 1G IP (DHCP IP). This is fixed in this release. + From e599bfe56f512ea6a262483f61ffd8d67d6c6fcd Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Tue, 12 Jun 2018 12:26:30 +0200 Subject: [PATCH 04/25] updating br versioning --version for binaries --- slsDetectorGui/gitInfo.txt | 12 ++++++------ slsDetectorGui/include/gitInfoGui.h | 10 +++++----- slsDetectorSoftware/gitInfo.txt | 10 +++++----- slsDetectorSoftware/slsDetector/gitInfoLib.h | 8 ++++---- slsReceiverSoftware/gitInfo.txt | 12 ++++++------ slsReceiverSoftware/include/gitInfoReceiver.h | 10 +++++----- 6 files changed, 31 insertions(+), 31 deletions(-) diff --git a/slsDetectorGui/gitInfo.txt b/slsDetectorGui/gitInfo.txt index 16b79dc772..de217639bf 100644 --- a/slsDetectorGui/gitInfo.txt +++ b/slsDetectorGui/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorGui URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git -Repsitory UUID: b389402d647e939342dbb2c9317c688c0eb6b105 -Revision: 452 -Branch: 3.1.0-rc -Last Changed Author: Erik_Frojdh -Last Changed Rev: 3458 -Last Changed Date: 2018-03-09 10:55:40.000000002 +0100 ./src/qTabSettings.cpp +Repsitory UUID: 764becc271a7292ace3ba84137d0dabae4e77bd0 +Revision: 453 +Branch: 3.1.2 +Last Changed Author: Dhanya_Thattil +Last Changed Rev: 3474 +Last Changed Date: 2018-06-12 12:15:02.000000002 +0200 ./src/qTabSettings.cpp diff --git a/slsDetectorGui/include/gitInfoGui.h b/slsDetectorGui/include/gitInfoGui.h index cbbcf49dbc..f9b3c74d9c 100644 --- a/slsDetectorGui/include/gitInfoGui.h +++ b/slsDetectorGui/include/gitInfoGui.h @@ -1,6 +1,6 @@ #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" -#define GITREPUUID "b389402d647e939342dbb2c9317c688c0eb6b105" -#define GITAUTH "Erik_Frojdh" -#define GITREV 0x3458 -#define GITDATE 0x20180309 -#define GITBRANCH "3.1.0-rc" +#define GITREPUUID "764becc271a7292ace3ba84137d0dabae4e77bd0" +#define GITAUTH "Dhanya_Thattil" +#define GITREV 0x3474 +#define GITDATE 0x20180612 +#define GITBRANCH "3.1.2" diff --git a/slsDetectorSoftware/gitInfo.txt b/slsDetectorSoftware/gitInfo.txt index be251be6fa..ea962c894a 100644 --- a/slsDetectorSoftware/gitInfo.txt +++ b/slsDetectorSoftware/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorSoftware URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git -Repsitory UUID: 85aa47b8353bb84f52c435a967a03ddf46af5dd1 -Revision: 1716 -Branch: 3.1.1-rc +Repsitory UUID: 764becc271a7292ace3ba84137d0dabae4e77bd0 +Revision: 1719 +Branch: 3.1.2 Last Changed Author: Dhanya_Thattil -Last Changed Rev: 3465 -Last Changed Date: 2018-03-19 18:13:27.000000002 +0100 ./threadFiles/ThreadPool.o +Last Changed Rev: 3474 +Last Changed Date: 2018-06-12 12:23:39.000000002 +0200 ./threadFiles/ThreadPool.o diff --git a/slsDetectorSoftware/slsDetector/gitInfoLib.h b/slsDetectorSoftware/slsDetector/gitInfoLib.h index 29b3f8b03a..f9b3c74d9c 100644 --- a/slsDetectorSoftware/slsDetector/gitInfoLib.h +++ b/slsDetectorSoftware/slsDetector/gitInfoLib.h @@ -1,6 +1,6 @@ #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" -#define GITREPUUID "85aa47b8353bb84f52c435a967a03ddf46af5dd1" +#define GITREPUUID "764becc271a7292ace3ba84137d0dabae4e77bd0" #define GITAUTH "Dhanya_Thattil" -#define GITREV 0x3465 -#define GITDATE 0x20180319 -#define GITBRANCH "3.1.1-rc" +#define GITREV 0x3474 +#define GITDATE 0x20180612 +#define GITBRANCH "3.1.2" diff --git a/slsReceiverSoftware/gitInfo.txt b/slsReceiverSoftware/gitInfo.txt index d85227f14c..81874b1c36 100644 --- a/slsReceiverSoftware/gitInfo.txt +++ b/slsReceiverSoftware/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsReceiverSoftware URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git -Repsitory UUID: b389402d647e939342dbb2c9317c688c0eb6b105 -Revision: 708 -Branch: 3.1.0-rc -Last Changed Author: Erik_Frojdh -Last Changed Rev: 3458 -Last Changed Date: 2018-03-09 12:23:14.000000002 +0100 ./src/Listener.cpp +Repsitory UUID: 764becc271a7292ace3ba84137d0dabae4e77bd0 +Revision: 709 +Branch: 3.1.2 +Last Changed Author: Dhanya_Thattil +Last Changed Rev: 3474 +Last Changed Date: 2018-06-12 12:15:03.000000002 +0200 ./src/UDPStandardImplementation.cpp diff --git a/slsReceiverSoftware/include/gitInfoReceiver.h b/slsReceiverSoftware/include/gitInfoReceiver.h index cbbcf49dbc..f9b3c74d9c 100644 --- a/slsReceiverSoftware/include/gitInfoReceiver.h +++ b/slsReceiverSoftware/include/gitInfoReceiver.h @@ -1,6 +1,6 @@ #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" -#define GITREPUUID "b389402d647e939342dbb2c9317c688c0eb6b105" -#define GITAUTH "Erik_Frojdh" -#define GITREV 0x3458 -#define GITDATE 0x20180309 -#define GITBRANCH "3.1.0-rc" +#define GITREPUUID "764becc271a7292ace3ba84137d0dabae4e77bd0" +#define GITAUTH "Dhanya_Thattil" +#define GITREV 0x3474 +#define GITDATE 0x20180612 +#define GITBRANCH "3.1.2" From 35fc52dae73ff89b8f36c3b7cd8a9ad52e05aee8 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 28 Jun 2018 15:31:09 +0200 Subject: [PATCH 05/25] 3.1.3: Bug fix: jungfrau server: delay after trigger always set to 5 seconds --- RELEASE.txt | 14 ++--- slsDetectorGui/gitInfo.txt | 10 +-- slsDetectorGui/include/gitInfoGui.h | 8 +-- slsDetectorSoftware/gitInfo.txt | 10 +-- .../jungfrauDetectorServer/RegisterDefs.h | 8 +-- .../bin/jungfrauDetectorServerv3.1.1.0 | Bin 110280 -> 0 bytes .../bin/jungfrauDetectorServerv3.1.3.0 | Bin 0 -> 110336 bytes .../jungfrauDetectorServer/gitInfo.txt | 10 +-- .../jungfrauDetectorServer/gitInfoJungfrau.h | 8 +-- .../slsDetectorFunctionList.c | 15 +++-- slsDetectorSoftware/slsDetector/gitInfoLib.h | 8 +-- .../slsDetectorServer_funcs.c | 58 +++++++++++------- slsReceiverSoftware/gitInfo.txt | 10 +-- slsReceiverSoftware/include/gitInfoReceiver.h | 8 +-- 14 files changed, 92 insertions(+), 75 deletions(-) delete mode 100755 slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.1.1.0 create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.1.3.0 diff --git a/RELEASE.txt b/RELEASE.txt index 1a2ca929be..618eb3b9bc 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -1,25 +1,25 @@ -SLS Detector Package 3.1.2 released on 2018-06-12 +SLS Detector Package 3.1.3 released on 2018-06-28 ================================================= INTRODUCTION -This document describes the differences between 3.1.2 into 3.1.1 releases. +This document describes the differences between 3.1.3 into 3.1.2 releases. Topics Concerning ================== - Memory Leak in Client API + Using delay after trigger for Jungfrau Resolved Issues =============== - Client - ------ - 1. Memory Leak for every multi threading command in client - when using API in multi detector mode. This is fixed now. + Detector Server + --------------- + 1. Delay after trigger was always set to 5 seconds. This is fixed now. + 3. Get delay left after trigger is not available for this version. diff --git a/slsDetectorGui/gitInfo.txt b/slsDetectorGui/gitInfo.txt index de217639bf..3606af8c7b 100644 --- a/slsDetectorGui/gitInfo.txt +++ b/slsDetectorGui/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorGui URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git -Repsitory UUID: 764becc271a7292ace3ba84137d0dabae4e77bd0 -Revision: 453 -Branch: 3.1.2 +Repsitory UUID: e599bfe56f512ea6a262483f61ffd8d67d6c6fcd +Revision: 454 +Branch: 3.1.3 Last Changed Author: Dhanya_Thattil -Last Changed Rev: 3474 -Last Changed Date: 2018-06-12 12:15:02.000000002 +0200 ./src/qTabSettings.cpp +Last Changed Rev: 3475 +Last Changed Date: 2018-06-28 14:19:33.000000002 +0200 ./src/qTabSettings.cpp diff --git a/slsDetectorGui/include/gitInfoGui.h b/slsDetectorGui/include/gitInfoGui.h index f9b3c74d9c..50b5e28eea 100644 --- a/slsDetectorGui/include/gitInfoGui.h +++ b/slsDetectorGui/include/gitInfoGui.h @@ -1,6 +1,6 @@ #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" -#define GITREPUUID "764becc271a7292ace3ba84137d0dabae4e77bd0" +#define GITREPUUID "e599bfe56f512ea6a262483f61ffd8d67d6c6fcd" #define GITAUTH "Dhanya_Thattil" -#define GITREV 0x3474 -#define GITDATE 0x20180612 -#define GITBRANCH "3.1.2" +#define GITREV 0x3475 +#define GITDATE 0x20180628 +#define GITBRANCH "3.1.3" diff --git a/slsDetectorSoftware/gitInfo.txt b/slsDetectorSoftware/gitInfo.txt index ea962c894a..754ad0a4cc 100644 --- a/slsDetectorSoftware/gitInfo.txt +++ b/slsDetectorSoftware/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorSoftware URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git -Repsitory UUID: 764becc271a7292ace3ba84137d0dabae4e77bd0 -Revision: 1719 -Branch: 3.1.2 +Repsitory UUID: e599bfe56f512ea6a262483f61ffd8d67d6c6fcd +Revision: 1720 +Branch: 3.1.3 Last Changed Author: Dhanya_Thattil -Last Changed Rev: 3474 -Last Changed Date: 2018-06-12 12:23:39.000000002 +0200 ./threadFiles/ThreadPool.o +Last Changed Rev: 3475 +Last Changed Date: 2018-06-28 15:27:02.000000002 +0200 ./threadFiles/ThreadPool.o diff --git a/slsDetectorSoftware/jungfrauDetectorServer/RegisterDefs.h b/slsDetectorSoftware/jungfrauDetectorServer/RegisterDefs.h index ebd2d94b59..1269436665 100644 --- a/slsDetectorSoftware/jungfrauDetectorServer/RegisterDefs.h +++ b/slsDetectorSoftware/jungfrauDetectorServer/RegisterDefs.h @@ -75,8 +75,8 @@ #define TIME_FROM_START_MSB_REG (0x11 << 11) /* Get Delay 64 bit register */ -#define GET_DELAY_LSB_REG (0x12 << 11) -#define GET_DELAY_MSB_REG (0x13 << 11) +#define GET_DELAY_LSB_REG (0x12 << 11) // different kind of delay +#define GET_DELAY_MSB_REG (0x13 << 11) // different kind of delay /* Get Cycles 64 bit register */ #define GET_CYCLES_LSB_REG (0x14 << 11) @@ -321,8 +321,8 @@ /* Set Delay 64 bit register */ -#define SET_DELAY_LSB_REG (0x60 << 11) -#define SET_DELAY_MSB_REG (0x61 << 11) +#define SET_DELAY_LSB_REG (0x60 << 11) // different kind of delay +#define SET_DELAY_MSB_REG (0x61 << 11) // different kind of delay /* Set Cycles 64 bit register */ #define SET_CYCLES_LSB_REG (0x62 << 11) diff --git a/slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.1.1.0 b/slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.1.1.0 deleted file mode 100755 index 71daa79333de357ef4e685dc8675987866097fe7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110280 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 T+Nj`L`bLal@?78R8#h%M9 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 diff --git a/slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.1.3.0 b/slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.1.3.0 new file mode 100755 index 0000000000000000000000000000000000000000..b2fd8cb83fd7b890f9bf9b98e0e336c8dd29ccec GIT binary patch literal 110336 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 z Date: Thu, 28 Jun 2018 15:32:53 +0200 Subject: [PATCH 06/25] updated binaries --- serverBin/jungfrauDetectorServerv3.1.1.0 | 1 - serverBin/jungfrauDetectorServerv3.1.3.0 | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 120000 serverBin/jungfrauDetectorServerv3.1.1.0 create mode 120000 serverBin/jungfrauDetectorServerv3.1.3.0 diff --git a/serverBin/jungfrauDetectorServerv3.1.1.0 b/serverBin/jungfrauDetectorServerv3.1.1.0 deleted file mode 120000 index 0a4a0eadd4..0000000000 --- a/serverBin/jungfrauDetectorServerv3.1.1.0 +++ /dev/null @@ -1 +0,0 @@ -../slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.1.1.0 \ No newline at end of file diff --git a/serverBin/jungfrauDetectorServerv3.1.3.0 b/serverBin/jungfrauDetectorServerv3.1.3.0 new file mode 120000 index 0000000000..17c468b821 --- /dev/null +++ b/serverBin/jungfrauDetectorServerv3.1.3.0 @@ -0,0 +1 @@ +../slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.1.3.0 \ No newline at end of file From 934bc5b9db1b7dc4c0d92202707c1668d157a4d7 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Tue, 17 Jul 2018 14:07:23 +0200 Subject: [PATCH 07/25] slsReceiver HDF5: unlimited x dimension (#images) by extending by numImages if caught more images, fixed virtual mapping, fixed linking for jungfrau single module (removed virtual_ in all namings --- slsReceiverSoftware/include/DataProcessor.h | 3 +- slsReceiverSoftware/include/File.h | 3 +- slsReceiverSoftware/include/HDF5File.h | 6 +- slsReceiverSoftware/include/HDF5FileStatic.h | 86 +++++++++++++++---- slsReceiverSoftware/src/DataProcessor.cpp | 4 +- slsReceiverSoftware/src/HDF5File.cpp | 30 +++++-- .../src/UDPBaseImplementation.cpp | 2 +- .../src/UDPStandardImplementation.cpp | 14 +-- 8 files changed, 114 insertions(+), 34 deletions(-) diff --git a/slsReceiverSoftware/include/DataProcessor.h b/slsReceiverSoftware/include/DataProcessor.h index b1fd474ed6..dbc3fa3bfd 100644 --- a/slsReceiverSoftware/include/DataProcessor.h +++ b/slsReceiverSoftware/include/DataProcessor.h @@ -198,9 +198,10 @@ class DataProcessor : private virtual slsReceiverDefs, public ThreadObject { /** * End of Acquisition + * @param anyPacketsCaught true if any packets are caught, else false * @param numf number of images caught */ - void EndofAcquisition(uint64_t numf); + void EndofAcquisition(bool anyPacketsCaught, uint64_t numf); private: diff --git a/slsReceiverSoftware/include/File.h b/slsReceiverSoftware/include/File.h index 3e0abb4066..f84eb68bd5 100644 --- a/slsReceiverSoftware/include/File.h +++ b/slsReceiverSoftware/include/File.h @@ -159,9 +159,10 @@ class File : private virtual slsReceiverDefs { /** * End of Acquisition + * @param anyPacketsCaught true if any packets are caught, else false * @param numf number of images caught */ - virtual void EndofAcquisition(uint64_t numf) { + virtual void EndofAcquisition(bool anyPacketsCaught, uint64_t numf) { cprintf(RED,"This is a generic function EndofAcquisition that should be overloaded by a derived class\n"); } diff --git a/slsReceiverSoftware/include/HDF5File.h b/slsReceiverSoftware/include/HDF5File.h index c3a2e6c113..fe161c727d 100644 --- a/slsReceiverSoftware/include/HDF5File.h +++ b/slsReceiverSoftware/include/HDF5File.h @@ -111,9 +111,10 @@ class HDF5File : private virtual slsReceiverDefs, public File, public HDF5FileSt /** * End of Acquisition + * @param anyPacketsCaught true if any packets are caught, else false * @param numf number of images caught */ - void EndofAcquisition(uint64_t numf); + void EndofAcquisition(bool anyPacketsCaught, uint64_t numf); /** * Create Virtual File @@ -180,5 +181,8 @@ class HDF5File : private virtual slsReceiverDefs, public File, public HDF5FileSt /** Dataset array for parameters */ DataSet* dataset_para[HDF5FileStatic::NumberofParameters]; + /** Number of Images (including extended during acquisition) */ + uint64_t extNumImages; + }; #endif diff --git a/slsReceiverSoftware/include/HDF5FileStatic.h b/slsReceiverSoftware/include/HDF5FileStatic.h index d66c776bf9..243126f378 100644 --- a/slsReceiverSoftware/include/HDF5FileStatic.h +++ b/slsReceiverSoftware/include/HDF5FileStatic.h @@ -187,6 +187,12 @@ class HDF5FileStatic: public virtual slsReceiverDefs { /** * Write Parameter Arrays as datasets (to virtual file) + * @param ind self index + * @param dpace_para parameter dataspace + * @param fnum frame number current + * @param dset_para parameter dataset + * @param header image header + * @returns 0 for success and 1 for fail */ static int WriteParameterDatasets(int ind, DataSpace* dspace_para, uint64_t fnum, DataSet* dset_para[],sls_detector_header* header) @@ -219,6 +225,44 @@ class HDF5FileStatic: public virtual slsReceiverDefs { return 0; } + /** + * Extend datasets in #images dimension (x dimension) + * @param ind self index + * @param dpace data space pointer address + * @param dset data set pointer + * @param dspace_para parameter dataspace address pointer + * @param dset dataset parameter pointer + * @param initialNumImages initial number of images + * @returns 0 for success and 1 for fail + */ + static int ExtendDataset(int ind, DataSpace*& dspace, DataSet* dset, + DataSpace*& dspace_para, DataSet* dset_para[], + uint64_t initialNumImages) { + try{ + Exception::dontPrint(); //to handle errors + + hsize_t dims[3]; + herr_t status_n = dspace->getSimpleExtentDims(dims); + dims[0] += initialNumImages; + + dset->extend(dims); + delete dspace; + dspace = new DataSpace(dset->getSpace()); + + hsize_t dims_para[1] = {dims[0]}; + for (int i = 0; i < NumberofParameters; ++i) + dset_para[i]->extend(dims_para); + delete dspace_para; + dspace_para = new DataSpace(dset_para[0]->getSpace()); + + } + catch(Exception error){ + cprintf(RED,"Error in extending dataset in object %d\n",ind); + error.printError(); + return 1; + } + return 0; + } /** * Create master file @@ -386,7 +430,8 @@ class HDF5FileStatic: public virtual slsReceiverDefs { //dataspace hsize_t srcdims[3] = {nDimx, nDimy, nDimz}; - dspace = new DataSpace (3,srcdims); + hsize_t srcdimsmax[3] = {H5S_UNLIMITED, nDimy, nDimz}; + dspace = new DataSpace (3,srcdims,srcdimsmax); //dataset name ostringstream osfn; @@ -396,19 +441,24 @@ class HDF5FileStatic: public virtual slsReceiverDefs { //dataset //chunked dataset if greater than max_chunked_images - if(nDimx > maxchunkedimages){ - DSetCreatPropList plist; - hsize_t chunk_dims[3] ={maxchunkedimages, nDimy, nDimz}; - plist.setChunk(3, chunk_dims); - dset = new DataSet (fd->createDataSet(dsetname.c_str(), dtype, *dspace, plist)); - }else - dset = new DataSet (fd->createDataSet(dsetname.c_str(), dtype, *dspace)); + // always create chunked dataset as unlimited is only supported with chunked layout + DSetCreatPropList plist; + hsize_t chunk_dims[3] ={maxchunkedimages, nDimy, nDimz}; + plist.setChunk(3, chunk_dims); + dset = new DataSet (fd->createDataSet(dsetname.c_str(), dtype, *dspace, plist)); //create parameter datasets hsize_t dims[1] = {nDimx}; - dspace_para = new DataSpace (1,dims); + hsize_t dimsmax[1] = {H5S_UNLIMITED}; + dspace_para = new DataSpace (1,dims,dimsmax); + + // always create chunked dataset as unlimited is only supported with chunked layout + DSetCreatPropList paralist; + hsize_t chunkpara_dims[3] ={maxchunkedimages}; + paralist.setChunk(1, chunkpara_dims); + for (int i = 0; i < NumberofParameters; ++i) - dset_para[i] = new DataSet(fd->createDataSet(ParameterNames[i], ParameterDataTypes[i], *dspace_para)); + dset_para[i] = new DataSet(fd->createDataSet(ParameterNames[i], ParameterDataTypes[i], *dspace_para, paralist)); } catch(Exception error){ cprintf(RED,"Error in creating HDF5 handles in object %d\n",ind); @@ -549,11 +599,13 @@ class HDF5FileStatic: public virtual slsReceiverDefs { //source dataspace hsize_t srcdims[3] = {nDimx, nDimy, nDimz}; - hid_t srcDataspace = H5Screate_simple(3, srcdims, NULL); + hsize_t srcdimsmax[3] = {H5S_UNLIMITED, nDimy, nDimz}; + hid_t srcDataspace = H5Screate_simple(3, srcdims, srcdimsmax); if (srcDataspace < 0) return CloseFileOnError(fd, string("Error in creating source dataspace in virtual file ") + virtualFileName + string("\n")); hsize_t srcdims_para[1] = {nDimx}; - hid_t srcDataspace_para = H5Screate_simple(1, srcdims_para, NULL); + hsize_t srcdimsmax_para[1] = {H5S_UNLIMITED}; + hid_t srcDataspace_para = H5Screate_simple(1, srcdims_para, srcdimsmax_para); if (srcDataspace_para < 0) return CloseFileOnError(fd, string("Error in creating source dataspace (parameters) in virtual file ") + virtualFileName + string("\n")); @@ -587,7 +639,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { return CloseFileOnError(fd, string("Error in mapping files in virtual file ") + virtualFileName + string("\n")); //dataset - string virtualDatasetName = string("/virtual_") + srcDataseName; + string virtualDatasetName = /*string("/virtual_") + */srcDataseName; hid_t vdsdataset = H5Dcreate2 (fd, virtualDatasetName.c_str(), GetDataTypeinC(dataType), vdsDataspace, H5P_DEFAULT, dcpl, H5P_DEFAULT); if (vdsdataset < 0) return CloseFileOnError(fd, string("Error in creating virutal dataset in virtual file ") + virtualFileName + string("\n")); @@ -596,7 +648,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { //virtual parameter dataset for (int i = 0; i < NumberofParameters; ++i) { hid_t vdsdataset_para = H5Dcreate2 (fd, - (string("/virtual_") + string (ParameterNames[i])).c_str(), + (/*string("/virtual_") + */string (ParameterNames[i])).c_str(), GetDataTypeinC(ParameterDataTypes[i]), vdsDataspace_para, H5P_DEFAULT, dcpl_para[i], H5P_DEFAULT); if (vdsdataset_para < 0) return CloseFileOnError(fd, string("Error in creating virutal dataset (parameters) in virtual file ") + virtualFileName + string("\n")); @@ -755,13 +807,13 @@ class HDF5FileStatic: public virtual slsReceiverDefs { //**paramter datasets** for (int i = 0; i < NumberofParameters; ++i){ - hid_t vdset_para = H5Dopen2( vfd, (string("/virtual_") + string (ParameterNames[i])).c_str(), H5P_DEFAULT); + hid_t vdset_para = H5Dopen2( vfd, (/*string("/virtual_") + */string (ParameterNames[i])).c_str(), H5P_DEFAULT); if (vdset_para < 0) { H5Fclose(mfd); mfd = 0; return CloseFileOnError( vfd, string("Error in opening virtual parameter dataset to create link\n")); } - sprintf(linkname, "/entry/data/%s",(string("/virtual_") + string (ParameterNames[i])).c_str()); - if(H5Lcreate_external( virtualfname.c_str(), (string("/virtual_") + string (ParameterNames[i])).c_str(), + sprintf(linkname, "/entry/data/%s",(/*string("/virtual_") + */string (ParameterNames[i])).c_str()); + if(H5Lcreate_external( virtualfname.c_str(), (/*string("/virtual_") + */string (ParameterNames[i])).c_str(), mfd, linkname, H5P_DEFAULT, H5P_DEFAULT) < 0) { H5Fclose(mfd); mfd = 0; return CloseFileOnError( vfd, string("Error in creating link to virtual parameter dataset\n")); diff --git a/slsReceiverSoftware/src/DataProcessor.cpp b/slsReceiverSoftware/src/DataProcessor.cpp index 286d60e439..7944d521fe 100644 --- a/slsReceiverSoftware/src/DataProcessor.cpp +++ b/slsReceiverSoftware/src/DataProcessor.cpp @@ -282,9 +282,9 @@ void DataProcessor::CloseFiles() { file->CloseAllFiles(); } -void DataProcessor::EndofAcquisition(uint64_t numf) { +void DataProcessor::EndofAcquisition(bool anyPacketsCaught, uint64_t numf) { if (file && file->GetFileType() == HDF5) { - file->EndofAcquisition(numf); + file->EndofAcquisition(anyPacketsCaught, numf); } } diff --git a/slsReceiverSoftware/src/HDF5File.cpp b/slsReceiverSoftware/src/HDF5File.cpp index 3635f26b98..0feeb019bc 100644 --- a/slsReceiverSoftware/src/HDF5File.cpp +++ b/slsReceiverSoftware/src/HDF5File.cpp @@ -38,7 +38,8 @@ HDF5File::HDF5File(int ind, uint32_t maxf, const uint32_t* ppf, numFramesInFile(0), numActualPacketsInFile(0), numFilesinAcquisition(0), - dataspace_para(0) + dataspace_para(0), + extNumImages(0) { #ifdef VERBOSE PrintMembers(); @@ -97,7 +98,7 @@ int HDF5File::CreateFile(uint64_t fnum) { //first time if(!fnum) UpdateDataType(); - uint64_t framestosave = ((*numImages - fnum) > maxFramesPerFile) ? maxFramesPerFile : (*numImages-fnum); + uint64_t framestosave = ((extNumImages - fnum) > maxFramesPerFile) ? maxFramesPerFile : (extNumImages-fnum); pthread_mutex_lock(&Mutex); if (HDF5FileStatic::CreateDataFile(index, *overWriteEnable, currentFileName, *frameIndexEnable, fnum, framestosave, nPixelsY, ((*dynamicRange==4) ? (nPixelsX/2) : nPixelsX), @@ -145,6 +146,19 @@ int HDF5File::WriteToFile(char* buffer, int buffersize, uint64_t fnum, uint32_t numFramesInFile++; numActualPacketsInFile += nump; pthread_mutex_lock(&Mutex); + + // extend dataset (when receiver start followed by many status starts (jungfrau))) + if (fnum >= extNumImages) { + if (HDF5FileStatic::ExtendDataset(index, dataspace, dataset, + dataspace_para, dataset_para, *numImages) == OK) { + if (!silentMode) { + cprintf(BLUE,"%d Extending HDF5 dataset by %llu, Total x Dimension: %u\n", + index, extNumImages, extNumImages + *numImages); + } + extNumImages += *numImages; + } + } + if (HDF5FileStatic::WriteDataFile(index, buffer + sizeof(sls_detector_header), fnum%maxFramesPerFile, nPixelsY, ((*dynamicRange==4) ? (nPixelsX/2) : nPixelsX), dataspace, dataset, datatype) == OK) { @@ -163,12 +177,16 @@ int HDF5File::WriteToFile(char* buffer, int buffersize, uint64_t fnum, uint32_t } + + + int HDF5File::CreateMasterFile(bool en, uint32_t size, uint32_t nx, uint32_t ny, uint64_t at, uint64_t st, uint64_t ap) { //beginning of every acquisition numFramesInFile = 0; numActualPacketsInFile = 0; + extNumImages = *numImages; if (master && (*detIndex==0)) { virtualfd = 0; @@ -185,11 +203,11 @@ int HDF5File::CreateMasterFile(bool en, uint32_t size, } -void HDF5File::EndofAcquisition(uint64_t numf) { +void HDF5File::EndofAcquisition(bool anyPacketsCaught, uint64_t numf) { //not created before - if (!virtualfd) { + if (!virtualfd && anyPacketsCaught) { - //only one file and one sub image + //only one file and one sub image (link current file in master) if (((numFilesinAcquisition == 1) && (numDetY*numDetX) == 1)) { //dataset name ostringstream osfn; @@ -217,7 +235,7 @@ int HDF5File::CreateVirtualFile(uint64_t numf) { virtualfd, masterFileName, filePath, fileNamePrefix, *fileIndex, *frameIndexEnable, *detIndex, *numUnitsPerDetector, - maxFramesPerFile, numf, + maxFramesPerFile, numf+1, "data", datatype, numDetY, numDetX, nPixelsY, ((*dynamicRange==4) ? (nPixelsX/2) : nPixelsX), HDF5_WRITER_VERSION); diff --git a/slsReceiverSoftware/src/UDPBaseImplementation.cpp b/slsReceiverSoftware/src/UDPBaseImplementation.cpp index f48232afe0..0c8d0a8af9 100644 --- a/slsReceiverSoftware/src/UDPBaseImplementation.cpp +++ b/slsReceiverSoftware/src/UDPBaseImplementation.cpp @@ -290,7 +290,7 @@ void UDPBaseImplementation::setFilePath(const char c[]){ else FILE_LOG(logERROR) << "FilePath does not exist: " << filePath; } - FILE_LOG(logINFO) << "Info: File path: " << filePath; + FILE_LOG(logINFO) << "File path: " << filePath; } void UDPBaseImplementation::setFileIndex(const uint64_t i){ diff --git a/slsReceiverSoftware/src/UDPStandardImplementation.cpp b/slsReceiverSoftware/src/UDPStandardImplementation.cpp index fd519547de..1fddb4dd2d 100644 --- a/slsReceiverSoftware/src/UDPStandardImplementation.cpp +++ b/slsReceiverSoftware/src/UDPStandardImplementation.cpp @@ -462,8 +462,9 @@ void UDPStandardImplementation::stopReceiver(){ if((*it)->GetMeasurementStartedFlag()) anycaught = true; } - if (anycaught) - dataProcessor[0]->EndofAcquisition(maxIndexCaught); //to create virtual file + + //to create virtual file & set files/acquisition to 0 (only hdf5 at the moment) + dataProcessor[0]->EndofAcquisition(anycaught, maxIndexCaught); } while(DataStreamer::GetRunningMask()){ @@ -480,7 +481,7 @@ void UDPStandardImplementation::stopReceiver(){ tot += dataProcessor[i]->GetNumFramesCaught(); uint64_t missingpackets = numberOfFrames*generalData->packetsPerFrame-listener[i]->GetPacketsCaught(); - if (missingpackets) { + if ((int)missingpackets > 0) { cprintf(RED, "\n[Port %d]\n",udpPortNum[i]); cprintf(RED, "Missing Packets\t\t: %lld\n",(long long int)missingpackets); cprintf(RED, "Complete Frames\t\t: %lld\n",(long long int)dataProcessor[i]->GetNumFramesCaught()); @@ -562,12 +563,15 @@ void UDPStandardImplementation::shutDownUDPSockets() { void UDPStandardImplementation::closeFiles() { uint64_t maxIndexCaught = 0; + bool anycaught = false; for (vector::const_iterator it = dataProcessor.begin(); it != dataProcessor.end(); ++it) { (*it)->CloseFiles(); maxIndexCaught = max(maxIndexCaught, (*it)->GetProcessedMeasurementIndex()); + if((*it)->GetMeasurementStartedFlag()) + anycaught = true; } - if (maxIndexCaught) - dataProcessor[0]->EndofAcquisition(maxIndexCaught); + //to create virtual file & set files/acquisition to 0 (only hdf5 at the moment) + dataProcessor[0]->EndofAcquisition(anycaught, maxIndexCaught); } From 3259bfb008b3e28bcada2b74af4fb405b9dc011e Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Tue, 17 Jul 2018 14:23:32 +0200 Subject: [PATCH 08/25] slsReceiver: HDF5: absolute to relative linking --- slsReceiverSoftware/include/HDF5FileStatic.h | 24 ++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/slsReceiverSoftware/include/HDF5FileStatic.h b/slsReceiverSoftware/include/HDF5FileStatic.h index 243126f378..27126e88e9 100644 --- a/slsReceiverSoftware/include/HDF5FileStatic.h +++ b/slsReceiverSoftware/include/HDF5FileStatic.h @@ -591,6 +591,14 @@ class HDF5FileStatic: public virtual slsReceiverDefs { string srcFileName = HDF5FileStatic::CreateFileName(fpath, fnameprefix, findex, frindexenable, framesSaved, dindex, numunits, i); + // find relative path + string relative_srcFileName = srcFileName; + { + size_t i = srcFileName.rfind('/', srcFileName.length()); + if (i != string::npos) + relative_srcFileName = (srcFileName.substr(i+1, srcFileName.length() - i)); + } + //source dataset name ostringstream osfn; osfn << "/data"; @@ -610,14 +618,14 @@ class HDF5FileStatic: public virtual slsReceiverDefs { return CloseFileOnError(fd, string("Error in creating source dataspace (parameters) in virtual file ") + virtualFileName + string("\n")); //mapping - if (H5Pset_virtual(dcpl, vdsDataspace, srcFileName.c_str(), srcDatasetName.c_str(), srcDataspace) < 0) { + if (H5Pset_virtual(dcpl, vdsDataspace, relative_srcFileName.c_str(), srcDatasetName.c_str(), srcDataspace) < 0) { cprintf(RED,"could not set mapping for paramter 1\n"); error = true; break; } for (int k = 0; k < NumberofParameters; ++k) { - if (H5Pset_virtual(dcpl_para[k], vdsDataspace_para, srcFileName.c_str(), ParameterNames[k], srcDataspace_para) < 0) { + if (H5Pset_virtual(dcpl_para[k], vdsDataspace_para, relative_srcFileName.c_str(), ParameterNames[k], srcDataspace_para) < 0) { cprintf(RED,"could not set mapping for paramter %d\n", k); error = true; break; @@ -791,6 +799,14 @@ class HDF5FileStatic: public virtual slsReceiverDefs { return CloseFileOnError( vfd, string("Error in opening virtual file\n")); } + // find relative path + string relative_virtualfname = virtualfname; + { + size_t i = virtualfname.rfind('/', virtualfname.length()); + if (i != string::npos) + relative_virtualfname = (virtualfname.substr(i+1, virtualfname.length() - i)); + } + //**data dataset** hid_t vdset = H5Dopen2( vfd, virtualDatasetname.c_str(), H5P_DEFAULT); if (vdset < 0) { @@ -798,7 +814,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { return CloseFileOnError( vfd, string("Error in opening virtual data dataset\n")); } sprintf(linkname, "/entry/data/%s",virtualDatasetname.c_str()); - if(H5Lcreate_external( virtualfname.c_str(), virtualDatasetname.c_str(), + if(H5Lcreate_external( relative_virtualfname.c_str(), virtualDatasetname.c_str(), mfd, linkname, H5P_DEFAULT, H5P_DEFAULT) < 0) { H5Fclose(mfd); mfd = 0; return CloseFileOnError( vfd, string("Error in creating link to data dataset\n")); @@ -813,7 +829,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { return CloseFileOnError( vfd, string("Error in opening virtual parameter dataset to create link\n")); } sprintf(linkname, "/entry/data/%s",(/*string("/virtual_") + */string (ParameterNames[i])).c_str()); - if(H5Lcreate_external( virtualfname.c_str(), (/*string("/virtual_") + */string (ParameterNames[i])).c_str(), + if(H5Lcreate_external( relative_virtualfname.c_str(), (/*string("/virtual_") + */string (ParameterNames[i])).c_str(), mfd, linkname, H5P_DEFAULT, H5P_DEFAULT) < 0) { H5Fclose(mfd); mfd = 0; return CloseFileOnError( vfd, string("Error in creating link to virtual parameter dataset\n")); From f79b00997890eda912804a2fd88798e5e765c81d Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Tue, 17 Jul 2018 14:42:49 +0200 Subject: [PATCH 09/25] updated release txt --- RELEASE.txt | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/RELEASE.txt b/RELEASE.txt index 618eb3b9bc..5bf051a163 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -1,25 +1,39 @@ -SLS Detector Package 3.1.3 released on 2018-06-28 +SLS Detector Package 3.1.4 released on 2018-07-17 ================================================= INTRODUCTION -This document describes the differences between 3.1.3 into 3.1.2 releases. +This document describes the differences between 3.1.4 into 3.1.3 releases. Topics Concerning ================== - Using delay after trigger for Jungfrau + HDF5 in Receiver Resolved Issues =============== - Detector Server - --------------- - 1. Delay after trigger was always set to 5 seconds. This is fixed now. - 3. Get delay left after trigger is not available for this version. + Receiver + -------- + 1. HDF5 x dimension (#images). Max made unlimited. Chunked Dataset by default. + + 2. When receiver gets an image more than #frames, the HDF5 dataset will + extend itself in the x dimension by another #frames. So, one can do + (in Jungfrau, Gotthard, NOT Eiger) + sls_detector_put resetframescaught 0 + sls_detector_put receiver start + sls_detector_put status start + sls_detector_put status start + ... + sls_detector_put receiver stop + + 3. Jungfrau Single Module Master files did not link to the data file properly. + This is fixed now. + + 4. Relative linking is used in the HDF5, instead of absolute now. From 11e87968478e3e0044e3806b413936cf8717087f Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Wed, 18 Jul 2018 12:53:52 +0200 Subject: [PATCH 10/25] slsReceiver: HDF5: printError obsolete since hdf51.10.2 and so using printErrorStack() --- slsReceiverSoftware/include/HDF5FileStatic.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/slsReceiverSoftware/include/HDF5FileStatic.h b/slsReceiverSoftware/include/HDF5FileStatic.h index 27126e88e9..0ee2edfd64 100644 --- a/slsReceiverSoftware/include/HDF5FileStatic.h +++ b/slsReceiverSoftware/include/HDF5FileStatic.h @@ -112,7 +112,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { } } catch(Exception error) { cprintf(RED,"Error in closing HDF5 handles of index %d\n", ind); - error.printError(); + error.printErrorStack(); } } @@ -130,7 +130,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { } } catch(Exception error) { cprintf(RED,"Error in closing master HDF5 handles\n"); - error.printError(); + error.printErrorStack(); } } @@ -177,7 +177,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { } catch(Exception error){ cprintf(RED,"Error in writing to file in object %d\n",ind); - error.printError(); + error.printErrorStack(); return 1; } return 0; @@ -219,7 +219,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { } catch(Exception error){ cprintf(RED,"Error in writing parameters to file in object %d\n",ind); - error.printError(); + error.printErrorStack(); return 1; } return 0; @@ -258,7 +258,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { } catch(Exception error){ cprintf(RED,"Error in extending dataset in object %d\n",ind); - error.printError(); + error.printErrorStack(); return 1; } return 0; @@ -372,7 +372,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { } catch(Exception error) { cprintf(RED,"Error in creating master HDF5 handles\n"); - error.printError(); + error.printErrorStack(); return 1; } return 0; @@ -462,7 +462,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { } catch(Exception error){ cprintf(RED,"Error in creating HDF5 handles in object %d\n",ind); - error.printError(); + error.printErrorStack(); fd->close(); return 1; } @@ -757,7 +757,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { oldfd->close(); } catch(Exception error){ cprintf(RED,"Error in copying virtual files\n"); - error.printError(); + error.printErrorStack(); free(data_out); oldfd->close(); newfd->close(); From 07a120fc4aff5c5538ac3e5f50a56abd5b4f502f Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 23 Jul 2018 14:57:27 +0200 Subject: [PATCH 11/25] slsDetectorSoftware: users class setsettings(-1) gave undefined settings from slsDetector::setSettings. It has been fixed. --- RELEASE.txt | 10 ++++++++-- slsDetectorSoftware/slsDetector/slsDetector.cpp | 3 +++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/RELEASE.txt b/RELEASE.txt index 5bf051a163..8410cd28cf 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -1,4 +1,4 @@ -SLS Detector Package 3.1.4 released on 2018-07-17 +SLS Detector Package 3.1.4 released on 2018-07-25 ================================================= @@ -10,12 +10,18 @@ This document describes the differences between 3.1.4 into 3.1.3 releases. Topics Concerning ================== - HDF5 in Receiver + - get settings in users class + - HDF5 in Receiver Resolved Issues =============== + Client + ------ + 1. Users class setSettings(-1) gave undefined settings. Has been fixed. + + Receiver -------- 1. HDF5 x dimension (#images). Max made unlimited. Chunked Dataset by default. diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 5f82f443a3..f7ea9a49c2 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -3701,6 +3701,9 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise std::cout<< "slsDetector setSettings "<< std::endl; #endif + if (isettings == -1) + return getSettings(imod); + //only set client shared memory variable for Eiger, settings threshold loads the module data (trimbits, dacs etc.) if (thisDetector->myDetectorType == EIGER) { switch(isettings) { From 8cc05c5848de9cb526833f333a2e4a43dba06d7c Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 26 Jul 2018 11:47:55 +0200 Subject: [PATCH 12/25] gotthard server and slsDetectorSoftware: more accuracy when converting from double to int64_t by adding 0.5, improved clock precision of gotthard from 32.1 to 32.007729 --- slsDetectorSoftware/gitInfo.txt | 10 +-- .../gotthardDetectorServer/firmware_funcs.c | 67 ++++++------------ .../gotthardDetectorServer/gitInfo.txt | 10 +-- .../gotthardDetectorServer/gitInfoGotthard.h | 8 +-- .../gotthardDetectorServerv3.1.0.1 | Bin 128420 -> 0 bytes .../gotthardDetectorServerv3.1.4.0 | Bin 0 -> 128260 bytes .../gotthardDetectorServer/server_defs.h | 2 +- slsDetectorSoftware/slsDetector/gitInfoLib.h | 8 +-- .../slsDetector/slsDetectorCommand.cpp | 7 +- 9 files changed, 41 insertions(+), 71 deletions(-) delete mode 100755 slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.1.0.1 create mode 100755 slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.1.4.0 diff --git a/slsDetectorSoftware/gitInfo.txt b/slsDetectorSoftware/gitInfo.txt index 754ad0a4cc..9de3d63355 100644 --- a/slsDetectorSoftware/gitInfo.txt +++ b/slsDetectorSoftware/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorSoftware URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git -Repsitory UUID: e599bfe56f512ea6a262483f61ffd8d67d6c6fcd -Revision: 1720 -Branch: 3.1.3 +Repsitory UUID: d69d69e8928f90b053a0e5ffccb9cfc4e9c5f960 +Revision: 1722 +Branch: 3.1.4-rc Last Changed Author: Dhanya_Thattil -Last Changed Rev: 3475 -Last Changed Date: 2018-06-28 15:27:02.000000002 +0200 ./threadFiles/ThreadPool.o +Last Changed Rev: 3483 +Last Changed Date: 2018-07-25 16:51:25.000000002 +0200 ./slsDetector/slsDetectorCommand.cpp diff --git a/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c b/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c index 52a25b8bd3..0bbad5a076 100755 --- a/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c +++ b/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c @@ -905,21 +905,16 @@ int64_t getFrames(){ int64_t setExposureTime(int64_t value){ /* time is in ns */ - if (value!=-1) { - double actualvalue = value*(1E-9*CLK_FREQ); - value*=(1E-9*CLK_FREQ); - if(fabs(actualvalue-value)>= 0.5){ - if(actualvalue > value) - value++; - else - value--; - } + if (value != -1) { + value = (value * 1E-3 * CLK_FREQ ) + 0.5; } - return set64BitReg(value,SET_EXPTIME_LSB_REG, SET_EXPTIME_MSB_REG)/(1E-9*CLK_FREQ); + return (set64BitReg(value,SET_EXPTIME_LSB_REG, SET_EXPTIME_MSB_REG) / + (1E-3 * CLK_FREQ)) + 0.5; } int64_t getExposureTime(){ - return get64BitReg(GET_EXPTIME_LSB_REG, GET_EXPTIME_MSB_REG)/(1E-9*CLK_FREQ); + return (get64BitReg(GET_EXPTIME_LSB_REG, GET_EXPTIME_MSB_REG) / + (1E-3 * CLK_FREQ)) + 0.5; } int64_t setGates(int64_t value){ @@ -933,23 +928,16 @@ int64_t getGates(){ int64_t setPeriod(int64_t value){ /* time is in ns */ if (value!=-1) { - double actualvalue = value*(1E-9*CLK_FREQ); - value*=(1E-9*CLK_FREQ); - if(fabs(actualvalue-value)>= 0.5){ - if(actualvalue > value) - value++; - else - value--; - } + value = (value * 1E-3 * CLK_FREQ ) + 0.5; } - - - return set64BitReg(value,SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG)/(1E-9*CLK_FREQ); + return (set64BitReg(value,SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG) / + (1E-3 * CLK_FREQ)) + 0.5; } int64_t getPeriod(){ - return get64BitReg(GET_PERIOD_LSB_REG, GET_PERIOD_MSB_REG)/(1E-9*CLK_FREQ); + return (get64BitReg(GET_PERIOD_LSB_REG, GET_PERIOD_MSB_REG) / + (1E-3 * CLK_FREQ)) + 0.5; } int64_t setDelay(int64_t value){ @@ -959,16 +947,11 @@ int64_t setDelay(int64_t value){ value += masterdefaultdelay; cprintf(BLUE,"Actual delay for master: %lld\n", (long long int) value); } - double actualvalue = value*(1E-9*CLK_FREQ); - value*=(1E-9*CLK_FREQ); - if(fabs(actualvalue-value)>= 0.5){ - if(actualvalue > value) - value++; - else - value--; - } + value = (value * 1E-3 * CLK_FREQ ) + 0.5; } - int64_t retval = set64BitReg(value,SET_DELAY_LSB_REG, SET_DELAY_MSB_REG)/(1E-9*CLK_FREQ); + + int64_t retval = (set64BitReg(value,SET_DELAY_LSB_REG, SET_DELAY_MSB_REG) / + (1E-3 * CLK_FREQ)) + 0.5; if (masterflags == IS_MASTER) { cprintf(BLUE,"Actual delay read from master: %lld\n", (long long int) retval); retval -= masterdefaultdelay; @@ -978,7 +961,8 @@ int64_t setDelay(int64_t value){ } int64_t getDelay(){ - return get64BitReg(GET_DELAY_LSB_REG, GET_DELAY_MSB_REG)/(1E-9*CLK_FREQ); + return (get64BitReg(GET_DELAY_LSB_REG, GET_DELAY_MSB_REG) / + (1E-3 * CLK_FREQ)) + 0.5; } int64_t setTrains(int64_t value){ @@ -996,37 +980,26 @@ int64_t setProbes(int64_t value){ int64_t setProgress() { - //????? eventually call after setting the registers - return 0; } int64_t getProgress() { - - //should be done in firmware!!!! - return 0; } int64_t getActualTime(){ - return get64BitReg(GET_ACTUAL_TIME_LSB_REG, GET_ACTUAL_TIME_MSB_REG)/(1E-9*CLK_FREQ); + return (get64BitReg(GET_ACTUAL_TIME_LSB_REG, GET_ACTUAL_TIME_MSB_REG) / + (1E-3 * CLK_FREQ)) + 0.5; } int64_t getMeasurementTime(){ int64_t v=get64BitReg(GET_MEASUREMENT_TIME_LSB_REG, GET_MEASUREMENT_TIME_MSB_REG); - /* u_int64_t mask=0x8000000000000000; - if (v & mask ) { -#ifdef VERBOSE - printf("no measurement time left\n"); -#endif - return -1E+9; - } else*/ - return v/(1E-9*CLK_FREQ); + return (v / (1E-3 * CLK_FREQ)) + 0.5; } diff --git a/slsDetectorSoftware/gotthardDetectorServer/gitInfo.txt b/slsDetectorSoftware/gotthardDetectorServer/gitInfo.txt index 68b17f2ed2..cce3edd897 100644 --- a/slsDetectorSoftware/gotthardDetectorServer/gitInfo.txt +++ b/slsDetectorSoftware/gotthardDetectorServer/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorSoftware/gotthardDetectorServer URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git -Repsitory UUID: 675d69392a6497d42b23057c7c8783c8dad768d0 -Revision: 223 -Branch: 3.1.0-rc +Repsitory UUID: d69d69e8928f90b053a0e5ffccb9cfc4e9c5f960 +Revision: 225 +Branch: 3.1.4-rc Last Changed Author: Dhanya_Thattil -Last Changed Rev: 3447 -Last Changed Date: 2018-02-27 14:04:08.000000002 +0100 ./server_funcs.c +Last Changed Rev: 3483 +Last Changed Date: 2018-07-25 14:56:37.000000002 +0200 ./firmware_funcs.c diff --git a/slsDetectorSoftware/gotthardDetectorServer/gitInfoGotthard.h b/slsDetectorSoftware/gotthardDetectorServer/gitInfoGotthard.h index 6c3fb814c1..336fd0b23d 100644 --- a/slsDetectorSoftware/gotthardDetectorServer/gitInfoGotthard.h +++ b/slsDetectorSoftware/gotthardDetectorServer/gitInfoGotthard.h @@ -1,6 +1,6 @@ #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" -#define GITREPUUID "675d69392a6497d42b23057c7c8783c8dad768d0" +#define GITREPUUID "d69d69e8928f90b053a0e5ffccb9cfc4e9c5f960" #define GITAUTH "Dhanya_Thattil" -#define GITREV 0x3447 -#define GITDATE 0x20180227 -#define GITBRANCH "3.1.0-rc" +#define GITREV 0x3483 +#define GITDATE 0x20180725 +#define GITBRANCH "3.1.4-rc" diff --git a/slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.1.0.1 b/slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.1.0.1 deleted file mode 100755 index 8323e5aac3208cb77d8478d3701c1b995a3d5e53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128420 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

R#rH)`g2i{;W?+7YNM=kNYZ`C$HsI1 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 literal 0 HcmV?d00001 diff --git a/slsDetectorSoftware/gotthardDetectorServer/server_defs.h b/slsDetectorSoftware/gotthardDetectorServer/server_defs.h index 794e765463..6dc6bf59d2 100755 --- a/slsDetectorSoftware/gotthardDetectorServer/server_defs.h +++ b/slsDetectorSoftware/gotthardDetectorServer/server_defs.h @@ -54,7 +54,7 @@ #define DEBUGOUT #endif -#define CLK_FREQ 32.1E+6 +#define CLK_FREQ 32.007729 #endif diff --git a/slsDetectorSoftware/slsDetector/gitInfoLib.h b/slsDetectorSoftware/slsDetector/gitInfoLib.h index 50b5e28eea..336fd0b23d 100644 --- a/slsDetectorSoftware/slsDetector/gitInfoLib.h +++ b/slsDetectorSoftware/slsDetector/gitInfoLib.h @@ -1,6 +1,6 @@ #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" -#define GITREPUUID "e599bfe56f512ea6a262483f61ffd8d67d6c6fcd" +#define GITREPUUID "d69d69e8928f90b053a0e5ffccb9cfc4e9c5f960" #define GITAUTH "Dhanya_Thattil" -#define GITREV 0x3475 -#define GITDATE 0x20180628 -#define GITBRANCH "3.1.3" +#define GITREV 0x3483 +#define GITDATE 0x20180725 +#define GITBRANCH "3.1.4-rc" diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index bc0a347933..6664af3cb9 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -5464,11 +5464,8 @@ string slsDetectorCommand::cmdTimer(int narg, char *args[], int action) { else return string("cannot scan timer value ")+string(args[1]); if (index==ACQUISITION_TIME || index==SUBFRAME_ACQUISITION_TIME || index==FRAME_PERIOD || index==DELAY_AFTER_TRIGGER) { - // t=(int64_t)(val*1E+9); for precision of eg.0.0000325, following done - val*=1E9; - t = (int64_t)val; - if(fabs(val-t)) // to validate precision loss - t = t + val - t; //even t += vak-t loses precision + // +0.5 for precision of eg.0.0000325 + t = ( val * 1E9 + 0.5); }else t=(int64_t)val; } From 5d9a952316639e7a60c1e02f4caf8692077cfdc2 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 26 Jul 2018 13:16:34 +0200 Subject: [PATCH 13/25] updated release.txt --- RELEASE.txt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/RELEASE.txt b/RELEASE.txt index 8410cd28cf..4e112693ec 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -1,4 +1,4 @@ -SLS Detector Package 3.1.4 released on 2018-07-25 +SLS Detector Package 3.1.4 released on 2018-07-26 ================================================= @@ -12,6 +12,7 @@ Topics Concerning ================== - get settings in users class - HDF5 in Receiver + - gotthard timer accuracy Resolved Issues @@ -20,6 +21,12 @@ Resolved Issues Client ------ 1. Users class setSettings(-1) gave undefined settings. Has been fixed. + + + Detector Server + --------------- + 1. (Gotthard) Timers converted from time in nanoseconds to number of cycles + is made more precise now. Clock value changed from 32.1E+6 to 32.007729E+6. Receiver @@ -36,7 +43,7 @@ Resolved Issues ... sls_detector_put receiver stop - 3. Jungfrau Single Module Master files did not link to the data file properly. + 3. Jungfrau Single Module Master files did not link to the HDF5 data file properly. This is fixed now. 4. Relative linking is used in the HDF5, instead of absolute now. From cb3b337a998715429193bdf024ba8f2eed1c9c92 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 26 Jul 2018 13:49:18 +0200 Subject: [PATCH 14/25] updated binary --- serverBin/gotthardDetectorServerv3.1.0.1 | 1 - serverBin/gotthardDetectorServerv3.1.4.0 | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 120000 serverBin/gotthardDetectorServerv3.1.0.1 create mode 120000 serverBin/gotthardDetectorServerv3.1.4.0 diff --git a/serverBin/gotthardDetectorServerv3.1.0.1 b/serverBin/gotthardDetectorServerv3.1.0.1 deleted file mode 120000 index 499ae8c210..0000000000 --- a/serverBin/gotthardDetectorServerv3.1.0.1 +++ /dev/null @@ -1 +0,0 @@ -../slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.1.0.1 \ No newline at end of file diff --git a/serverBin/gotthardDetectorServerv3.1.4.0 b/serverBin/gotthardDetectorServerv3.1.4.0 new file mode 120000 index 0000000000..726869faa7 --- /dev/null +++ b/serverBin/gotthardDetectorServerv3.1.4.0 @@ -0,0 +1 @@ +../slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.1.4.0 \ No newline at end of file From 08e121c71feabd52e9f9f50fe445f1e2066dc170 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 30 Jul 2018 16:49:15 +0200 Subject: [PATCH 15/25] slsDetectorSoftware: being able to get timer values individually from the users class since gotthard 25um master and slave will have different delay values --- manual/manual-api/mainClient.cpp | 5 -- .../multiSlsDetector/multiSlsDetector.cpp | 22 +++++- .../multiSlsDetector/multiSlsDetector.h | 3 +- .../slsDetector/slsDetector.cpp | 2 +- slsDetectorSoftware/slsDetector/slsDetector.h | 3 +- .../slsDetector/slsDetectorBase.h | 17 +++-- .../slsDetector/slsDetectorUsers.cpp | 75 +++++++++++-------- .../slsDetector/slsDetectorUsers.h | 18 +++-- slsDetectorSoftware/threadFiles/Task.h | 4 +- 9 files changed, 92 insertions(+), 57 deletions(-) diff --git a/manual/manual-api/mainClient.cpp b/manual/manual-api/mainClient.cpp index 3c3156aeff..ae48595012 100644 --- a/manual/manual-api/mainClient.cpp +++ b/manual/manual-api/mainClient.cpp @@ -71,11 +71,6 @@ int main(int argc, char **argv) { /** - registering data callback */ pDetector->registerDataCallback(&dataCallback, NULL); - /** - if receiver exists, enable data streaming from receiver to get the data */ - pDetector->enableDataStreamingFromReceiver(1); - /** - create zmq sockets in client to enable data streaming in of data from receiver/different process */ - pDetector->enableDataStreamingToClient(1); - /** - ensuring detector status is idle before starting acquisition. exiting if not idle */ diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index e581f44c0f..42518e7180 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -1974,10 +1974,26 @@ void multiSlsDetector::resetFinalDataQueue() { GATE_INTEGRATED_TIME } */ -int64_t multiSlsDetector::setTimer(timerIndex index, int64_t t){ +int64_t multiSlsDetector::setTimer(timerIndex index, int64_t t, int imod){ int64_t ret=-100; + // single (for gotthard 25 um) + if (imod != -1) { + if (imod >= 0 && imod < thisMultiDetector->numberOfDetectors) { + if (detectors[imod]) { + ret = detectors[imod]->setTimer(index,t,imod); + if(detectors[imod]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; ++idet){ if(detectors[idet]){ iret[idet]= new int64_t(-1); - Task* task = new Task(new func2_t(&slsDetector::setTimer, - detectors[idet],index,t,iret[idet])); + Task* task = new Task(new func3_t(&slsDetector::setTimer, + detectors[idet],index,t,imod,iret[idet])); threadpool->add_task(task); } } diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h index a7acd3e6bc..83b644b4c0 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h @@ -688,9 +688,10 @@ class multiSlsDetector : public slsDetectorUtils { set/get timer value \param index timer index \param t time in ns or number of...(e.g. frames, gates, probes) + \param imod module number (gotthard delay can have different values) \returns timer set value in ns or number of...(e.g. frames, gates, probes) */ - int64_t setTimer(timerIndex index, int64_t t=-1); + int64_t setTimer(timerIndex index, int64_t t=-1, int imod = -1); /** set/get timer value \param index timer index diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index f7ea9a49c2..a5ec53775b 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -4589,7 +4589,7 @@ int slsDetector::startAndReadAllNoWait(){ GATE_INTEGRATED_TIME } */ -int64_t slsDetector::setTimer(timerIndex index, int64_t t){ +int64_t slsDetector::setTimer(timerIndex index, int64_t t, int imod){ int fnum=F_SET_TIMER,fnum2=F_SET_RECEIVER_TIMER; diff --git a/slsDetectorSoftware/slsDetector/slsDetector.h b/slsDetectorSoftware/slsDetector/slsDetector.h index 5a9fbe813f..4c8855b64b 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.h +++ b/slsDetectorSoftware/slsDetector/slsDetector.h @@ -1205,9 +1205,10 @@ class slsDetector : public slsDetectorUtils, public energyConversion { set/get timer value \param index timer index \param t time in ns or number of...(e.g. frames, gates, probes) + \param imod module number (pointless in slsDetector) \returns timer set value in ns or number of...(e.g. frames, gates, probes) */ - int64_t setTimer(timerIndex index, int64_t t=-1); + int64_t setTimer(timerIndex index, int64_t t=-1, int imod = -1); /** get current timer value diff --git a/slsDetectorSoftware/slsDetector/slsDetectorBase.h b/slsDetectorSoftware/slsDetector/slsDetectorBase.h index 11dd4ac0bb..b9b604c4e1 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorBase.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorBase.h @@ -369,16 +369,17 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef set/get timer value \param index timer index \param t time in ns or number of...(e.g. frames, gates, probes) + \param imod module number \returns timer set value in ns or number of...(e.g. frames, gates, probes) */ - virtual int64_t setTimer(timerIndex index, int64_t t=-1)=0; - int64_t setExposureTime(int64_t t=-1){return setTimer(ACQUISITION_TIME,t);}; - int64_t setSubFrameExposureTime(int64_t t=-1){return setTimer(SUBFRAME_ACQUISITION_TIME,t);}; - int64_t setExposurePeriod(int64_t t=-1){return setTimer(FRAME_PERIOD,t);}; - int64_t setDelayAfterTrigger(int64_t t=-1){return setTimer(DELAY_AFTER_TRIGGER,t);}; - int64_t setNumberOfGates(int64_t t=-1){return setTimer(GATES_NUMBER,t);}; - int64_t setNumberOfFrames(int64_t t=-1){return setTimer(FRAME_NUMBER,t);}; - int64_t setNumberOfCycles(int64_t t=-1){return setTimer(CYCLES_NUMBER,t);}; + virtual int64_t setTimer(timerIndex index, int64_t t=-1, int imod = -1) = 0; + int64_t setExposureTime(int64_t t=-1, int imod = -1){return setTimer(ACQUISITION_TIME,t,imod);}; + int64_t setSubFrameExposureTime(int64_t t=-1, int imod = -1){return setTimer(SUBFRAME_ACQUISITION_TIME,t,imod);}; + int64_t setExposurePeriod(int64_t t=-1, int imod = -1){return setTimer(FRAME_PERIOD,t,imod);}; + int64_t setDelayAfterTrigger(int64_t t=-1, int imod = -1){return setTimer(DELAY_AFTER_TRIGGER,t,imod);}; + int64_t setNumberOfGates(int64_t t=-1, int imod = -1){return setTimer(GATES_NUMBER,t,imod);}; + int64_t setNumberOfFrames(int64_t t=-1, int imod = -1){return setTimer(FRAME_NUMBER,t,imod);}; + int64_t setNumberOfCycles(int64_t t=-1, int imod = -1){return setTimer(CYCLES_NUMBER,t,imod);}; /** sets/gets the value of important readout speed parameters diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp b/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp index 56d5606f68..d4a5e41df3 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp @@ -151,43 +151,58 @@ int slsDetectorUsers::setThresholdEnergy(int e_eV){ return myDetector->setThresholdEnergy(e_eV); } -double slsDetectorUsers::setExposureTime(double t, bool inseconds){ - int64_t tms = (int64_t)(t * (1E+9)); - if (t < 0) tms = -1; +double slsDetectorUsers::setExposureTime(double t, bool inseconds, int imod){ if(!inseconds) - return myDetector->setExposureTime((int64_t)t); - else - return ((1E-9) * (double)myDetector->setExposureTime(tms)); -} - -double slsDetectorUsers::setExposurePeriod(double t, bool inseconds){ - int64_t tms = (int64_t)(t * (1E+9)); - if (t < 0) tms = -1; + return myDetector->setExposureTime((int64_t)t,imod); + else { + // + 0.5 to round for precision lost from converting double to int64_t + int64_t tms = (int64_t)(t * (1E+9) + 0.5); + if (t < 0) tms = -1; + tms = myDetector->setExposureTime(tms,imod); + if (tms < 0) + return -1; + return ((1E-9) * (double)tms); + } +} + +double slsDetectorUsers::setExposurePeriod(double t, bool inseconds, int imod){ if(!inseconds) - return myDetector->setExposurePeriod((int64_t)t); - else - return ((1E-9) * (double)myDetector->setExposurePeriod(tms)); -} - -double slsDetectorUsers::setDelayAfterTrigger(double t, bool inseconds){ - int64_t tms = (int64_t)(t * (1E+9)); - if (t < 0) tms = -1; + return myDetector->setExposurePeriod((int64_t)t,imod); + else { + // + 0.5 to round for precision lost from converting double to int64_t + int64_t tms = (int64_t)(t * (1E+9) + 0.5); + if (t < 0) tms = -1; + tms = myDetector->setExposurePeriod(tms,imod); + if (tms < 0) + return -1; + return ((1E-9) * (double)tms); + } +} + +double slsDetectorUsers::setDelayAfterTrigger(double t, bool inseconds, int imod){ if(!inseconds) - return myDetector->setDelayAfterTrigger((int64_t)t); - else - return ((1E-9) * (double)myDetector->setDelayAfterTrigger(tms)); -} - -int64_t slsDetectorUsers::setNumberOfGates(int64_t t){ - return myDetector->setNumberOfGates(t); + return myDetector->setDelayAfterTrigger((int64_t)t,imod); + else { + // + 0.5 to round for precision lost from converting double to int64_t + int64_t tms = (int64_t)(t * (1E+9) + 0.5); + if (t < 0) tms = -1; + tms = myDetector->setDelayAfterTrigger(tms,imod); + if (tms < 0) + return -1; + return ((1E-9) * (double)tms); + } +} + +int64_t slsDetectorUsers::setNumberOfGates(int64_t t, int imod){ + return myDetector->setNumberOfGates(t,imod); } -int64_t slsDetectorUsers::setNumberOfFrames(int64_t t){ - return myDetector->setNumberOfFrames(t); +int64_t slsDetectorUsers::setNumberOfFrames(int64_t t, int imod){ + return myDetector->setNumberOfFrames(t,imod); } -int64_t slsDetectorUsers::setNumberOfCycles(int64_t t){ - return myDetector->setNumberOfCycles(t); +int64_t slsDetectorUsers::setNumberOfCycles(int64_t t, int imod){ + return myDetector->setNumberOfCycles(t,imod); } int slsDetectorUsers::setTimingMode(int pol){ diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h b/slsDetectorSoftware/slsDetector/slsDetectorUsers.h index a3e80d91e7..159a709243 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorUsers.h @@ -315,47 +315,53 @@ class slsDetectorUsers @short set/get exposure time value \param t time in sn (-1 gets) \param inseconds true if the value is in s, else ns + \param imod module number (-1 for all) \returns timer set value in ns, or s if specified */ - double setExposureTime(double t=-1, bool inseconds=false); + double setExposureTime(double t=-1, bool inseconds=false, int imod = -1); /** @short set/get exposure period \param t time in ns (-1 gets) \param inseconds true if the value is in s, else ns + \param imod module number (-1 for all) \returns timer set value in ns, or s if specified */ - double setExposurePeriod(double t=-1, bool inseconds=false); + double setExposurePeriod(double t=-1, bool inseconds=false, int imod = -1); /** @short set/get delay after trigger \param t time in ns (-1 gets) \param inseconds true if the value is in s, else ns + \param imod module number (-1 for all) \returns timer set value in ns, or s if specified */ - double setDelayAfterTrigger(double t=-1, bool inseconds=false); + double setDelayAfterTrigger(double t=-1, bool inseconds=false, int imod = -1); /** @short set/get number of gates \param t number of gates (-1 gets) + \param imod module number (-1 for all) \returns number of gates */ - int64_t setNumberOfGates(int64_t t=-1); + int64_t setNumberOfGates(int64_t t=-1, int imod = -1); /** @short set/get number of frames i.e. number of exposure per trigger \param t number of frames (-1 gets) + \param imod module number (-1 for all) \returns number of frames */ - int64_t setNumberOfFrames(int64_t t=-1); + int64_t setNumberOfFrames(int64_t t=-1, int imod = -1); /** @short set/get number of cycles i.e. number of triggers \param t number of frames (-1 gets) + \param imod module number (-1 for all) \returns number of frames */ - int64_t setNumberOfCycles(int64_t t=-1); + int64_t setNumberOfCycles(int64_t t=-1, int imod = -1); /** diff --git a/slsDetectorSoftware/threadFiles/Task.h b/slsDetectorSoftware/threadFiles/Task.h index 66b295ba27..ecaec14c85 100644 --- a/slsDetectorSoftware/threadFiles/Task.h +++ b/slsDetectorSoftware/threadFiles/Task.h @@ -127,7 +127,7 @@ class SuperTask: public virtual slsDetectorDefs { func2_t * m10; func2_t * m11; func2_t * m12; - func2_t * m13; + func3_t * m13; func2_t * m14; func3_t * m15; func4_t * m16; @@ -152,7 +152,7 @@ class Task: public virtual SuperTask { Task(func2_t * t): SuperTask(),fnum(10){m10 = t;}; Task(func2_t * t): SuperTask(),fnum(11){m11 = t;}; Task(func2_t * t): SuperTask(),fnum(12){m12 = t;}; - Task(func2_t * t): SuperTask(),fnum(13){m13 = t;}; + Task(func3_t * t): SuperTask(),fnum(13){m13 = t;}; Task(func2_t * t): SuperTask(),fnum(14){m14 = t;}; Task(func3_t * t): SuperTask(),fnum(15){m15 = t;}; Task(func4_t * t): SuperTask(),fnum(16){m16 = t;}; From 90dd8e70e5f7e77a7d1af937f236633e7add1efa Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 30 Jul 2018 16:56:39 +0200 Subject: [PATCH 16/25] updated release.txt --- RELEASE.txt | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/RELEASE.txt b/RELEASE.txt index 4e112693ec..01dc523ece 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -21,6 +21,8 @@ Resolved Issues Client ------ 1. Users class setSettings(-1) gave undefined settings. Has been fixed. + + 2. Users class timers give more precise values now. Detector Server @@ -29,11 +31,28 @@ Resolved Issues is made more precise now. Clock value changed from 32.1E+6 to 32.007729E+6. + Receiver + -------- + 1. Jungfrau Single Module Master files did not link to the HDF5 data file properly. + This is fixed now. + + 2. Relative linking is used in the HDF5, instead of absolute now. + + + +New Features +============ + + Client + ------ + 1. Timers can be set/retrieved individually. It has been introduced because + Gotthard 25um can have different delays for master and slave modules. + Receiver -------- 1. HDF5 x dimension (#images). Max made unlimited. Chunked Dataset by default. - - 2. When receiver gets an image more than #frames, the HDF5 dataset will + + When receiver gets an image more than #frames, the HDF5 dataset will extend itself in the x dimension by another #frames. So, one can do (in Jungfrau, Gotthard, NOT Eiger) sls_detector_put resetframescaught 0 @@ -43,11 +62,5 @@ Resolved Issues ... sls_detector_put receiver stop - 3. Jungfrau Single Module Master files did not link to the HDF5 data file properly. - This is fixed now. - - 4. Relative linking is used in the HDF5, instead of absolute now. - - - + From 160fabe02c46db19c923751e2cbae33c59e0da3a Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 3 Aug 2018 12:21:35 +0200 Subject: [PATCH 17/25] slsDetectorSoftware: connect stop socket as well to confirm detector on line, also to prevent fclose closing socket 0 (if it never connected to stop socket). Future releases can use exception instead of using socketDescriptor 0 value to validate succesful constructor --- .../slsDetector/slsDetector.cpp | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index a5ec53775b..3a3a3be10d 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -1321,6 +1321,26 @@ string slsDetector::checkOnline() { disconnectControl(); #ifdef VERBOSE std::cout<< "online!" << std::endl; +#endif + } + } + //still cannot connect to socket, controlSocket=0 + if(stopSocket){ + if (connectStop() == FAIL) { + stopSocket->SetTimeOut(5); + thisDetector->onlineFlag=OFFLINE_FLAG; + delete stopSocket; + stopSocket=NULL; + retval = string(thisDetector->hostname); +#ifdef VERBOSE + std::cout<< "stop offline!" << std::endl; +#endif + } else { + thisDetector->onlineFlag=ONLINE_FLAG; + stopSocket->SetTimeOut(100); + disconnectStop(); +#ifdef VERBOSE + std::cout<< "stop online!" << std::endl; #endif } } From 5cd020ae81559553b0e7e8d87bc22c9ea63bb389 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 3 Aug 2018 12:25:58 +0200 Subject: [PATCH 18/25] updated release.txt --- RELEASE.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/RELEASE.txt b/RELEASE.txt index 01dc523ece..d5552d981d 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -1,4 +1,4 @@ -SLS Detector Package 3.1.4 released on 2018-07-26 +SLS Detector Package 3.1.4 released on 2018-08-03 ================================================= @@ -23,6 +23,12 @@ Resolved Issues 1. Users class setSettings(-1) gave undefined settings. Has been fixed. 2. Users class timers give more precise values now. + + 3. When deleting slsDetector object, Stop socket deletion includes a close on + default file descriptor zero (which it didn't open, just set for flag). + This is fixed with temporary solution, to connect stop socket at checkOnline + to set file descriptor to the right one. Later releases will use exception + to handle constructor error flags. Detector Server From 4849063b6cfbb98a514b25479daff9420f36cb76 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 16 Aug 2018 12:21:26 +0200 Subject: [PATCH 19/25] client: unnecessary print while programming fpga --- slsDetectorSoftware/slsDetector/slsDetector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 3a3a3be10d..181ff139a7 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -7418,7 +7418,7 @@ int slsDetector::programFPGA(string fname){ #endif if (thisDetector->onlineFlag==ONLINE_FLAG) { if (connectControl() == OK){ - controlSocket->SendDataOnly(&fnum,sizeof(fnum));cprintf(BG_RED,"size of filesize:%lu\n",sizeof(filesize)); + controlSocket->SendDataOnly(&fnum,sizeof(fnum)); controlSocket->SendDataOnly(&filesize,sizeof(filesize)); //check opening error controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); From 1b92b01a466aa1986b8198700274af75477a1e54 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 16 Aug 2018 17:42:59 +0200 Subject: [PATCH 20/25] slsreceiver: removed warnings --- slsReceiverSoftware/include/HDF5FileStatic.h | 12 ++++++------ slsReceiverSoftware/src/HDF5File.cpp | 9 +++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/slsReceiverSoftware/include/HDF5FileStatic.h b/slsReceiverSoftware/include/HDF5FileStatic.h index 0ee2edfd64..c6cb440860 100644 --- a/slsReceiverSoftware/include/HDF5FileStatic.h +++ b/slsReceiverSoftware/include/HDF5FileStatic.h @@ -242,7 +242,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { Exception::dontPrint(); //to handle errors hsize_t dims[3]; - herr_t status_n = dspace->getSimpleExtentDims(dims); + dspace->getSimpleExtentDims(dims); dims[0] += initialNumImages; dset->extend(dims); @@ -290,9 +290,9 @@ class HDF5FileStatic: public virtual slsReceiverDefs { FileAccPropList flist; flist.setFcloseDegree(H5F_CLOSE_STRONG); if(!owenable) - fd = new H5File( fname.c_str(), H5F_ACC_EXCL, NULL, flist ); + fd = new H5File( fname.c_str(), H5F_ACC_EXCL, FileCreatPropList::DEFAULT, flist ); else - fd = new H5File( fname.c_str(), H5F_ACC_TRUNC, NULL, flist ); + fd = new H5File( fname.c_str(), H5F_ACC_TRUNC, FileCreatPropList::DEFAULT, flist ); //variables DataSpace dataspace = DataSpace (H5S_SCALAR); @@ -418,9 +418,9 @@ class HDF5FileStatic: public virtual slsReceiverDefs { FileAccPropList fapl; fapl.setFcloseDegree(H5F_CLOSE_STRONG); if(!owenable) - fd = new H5File( fname.c_str(), H5F_ACC_EXCL, NULL,fapl ); + fd = new H5File( fname.c_str(), H5F_ACC_EXCL, FileCreatPropList::DEFAULT,fapl ); else - fd = new H5File( fname.c_str(), H5F_ACC_TRUNC, NULL, fapl ); + fd = new H5File( fname.c_str(), H5F_ACC_TRUNC, FileCreatPropList::DEFAULT, fapl ); //attributes - version double dValue=version; @@ -538,7 +538,7 @@ class HDF5FileStatic: public virtual slsReceiverDefs { hid_t vdsDataspace = H5Screate_simple(3, vdsdims ,NULL); if (vdsDataspace < 0) return CloseFileOnError(fd, string("Error in creating virtual dataspace in virtual file ") + virtualFileName + string("\n")); - hsize_t vdsdims_para[2] = {numf, numDety * numDetz}; + hsize_t vdsdims_para[2] = {numf, (unsigned int)numDety * numDetz}; hid_t vdsDataspace_para = H5Screate_simple(2, vdsdims_para, NULL); if (vdsDataspace_para < 0) return CloseFileOnError(fd, string("Error in creating virtual dataspace (parameters) in virtual file ") + virtualFileName + string("\n")); diff --git a/slsReceiverSoftware/src/HDF5File.cpp b/slsReceiverSoftware/src/HDF5File.cpp index 0feeb019bc..70ff7e8abf 100644 --- a/slsReceiverSoftware/src/HDF5File.cpp +++ b/slsReceiverSoftware/src/HDF5File.cpp @@ -112,9 +112,9 @@ int HDF5File::CreateFile(uint64_t fnum) { if (dataspace == NULL) cprintf(RED,"Got nothing!\n"); - if(!silentMode) + if(!silentMode) { FILE_LOG(logINFO) << *udpPortNumber << ": HDF5 File created: " << currentFileName; - + } return OK; } @@ -152,7 +152,7 @@ int HDF5File::WriteToFile(char* buffer, int buffersize, uint64_t fnum, uint32_t if (HDF5FileStatic::ExtendDataset(index, dataspace, dataset, dataspace_para, dataset_para, *numImages) == OK) { if (!silentMode) { - cprintf(BLUE,"%d Extending HDF5 dataset by %llu, Total x Dimension: %u\n", + cprintf(BLUE,"%d Extending HDF5 dataset by %lu, Total x Dimension: %lu\n", index, extNumImages, extNumImages + *numImages); } extNumImages += *numImages; @@ -191,8 +191,9 @@ int HDF5File::CreateMasterFile(bool en, uint32_t size, if (master && (*detIndex==0)) { virtualfd = 0; masterFileName = HDF5FileStatic::CreateMasterFileName(filePath, fileNamePrefix, *fileIndex); - if(!silentMode) + if(!silentMode){ FILE_LOG(logINFO) << "Master File: " << masterFileName; + } pthread_mutex_lock(&Mutex); int ret = HDF5FileStatic::CreateMasterDataFile(masterfd, masterFileName, *overWriteEnable, *dynamicRange, en, size, nx, ny, *numImages, at, st, ap, HDF5_WRITER_VERSION); From faa25b9e9f684200c84a35add2300a3191c391cb Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 17 Aug 2018 17:57:53 +0200 Subject: [PATCH 21/25] updated versioning --- slsDetectorGui/gitInfo.txt | 10 +++++----- slsDetectorGui/include/gitInfoGui.h | 8 ++++---- slsDetectorSoftware/gitInfo.txt | 10 +++++----- slsDetectorSoftware/slsDetector/gitInfoLib.h | 8 ++++---- slsReceiverSoftware/gitInfo.txt | 10 +++++----- slsReceiverSoftware/include/gitInfoReceiver.h | 8 ++++---- 6 files changed, 27 insertions(+), 27 deletions(-) diff --git a/slsDetectorGui/gitInfo.txt b/slsDetectorGui/gitInfo.txt index 3606af8c7b..96fd66c8d0 100644 --- a/slsDetectorGui/gitInfo.txt +++ b/slsDetectorGui/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorGui URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git -Repsitory UUID: e599bfe56f512ea6a262483f61ffd8d67d6c6fcd -Revision: 454 -Branch: 3.1.3 +Repsitory UUID: 1b92b01a466aa1986b8198700274af75477a1e54 +Revision: 455 +Branch: 3.1.4 Last Changed Author: Dhanya_Thattil -Last Changed Rev: 3475 -Last Changed Date: 2018-06-28 14:19:33.000000002 +0200 ./src/qTabSettings.cpp +Last Changed Rev: 3492 +Last Changed Date: 2018-08-17 16:36:24.000000002 +0200 ./src/qTabSettings.cpp diff --git a/slsDetectorGui/include/gitInfoGui.h b/slsDetectorGui/include/gitInfoGui.h index 50b5e28eea..f64fea9c88 100644 --- a/slsDetectorGui/include/gitInfoGui.h +++ b/slsDetectorGui/include/gitInfoGui.h @@ -1,6 +1,6 @@ #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" -#define GITREPUUID "e599bfe56f512ea6a262483f61ffd8d67d6c6fcd" +#define GITREPUUID "1b92b01a466aa1986b8198700274af75477a1e54" #define GITAUTH "Dhanya_Thattil" -#define GITREV 0x3475 -#define GITDATE 0x20180628 -#define GITBRANCH "3.1.3" +#define GITREV 0x3492 +#define GITDATE 0x20180817 +#define GITBRANCH "3.1.4" diff --git a/slsDetectorSoftware/gitInfo.txt b/slsDetectorSoftware/gitInfo.txt index 9de3d63355..dea05a5cd7 100644 --- a/slsDetectorSoftware/gitInfo.txt +++ b/slsDetectorSoftware/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorSoftware URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git -Repsitory UUID: d69d69e8928f90b053a0e5ffccb9cfc4e9c5f960 -Revision: 1722 -Branch: 3.1.4-rc +Repsitory UUID: 1b92b01a466aa1986b8198700274af75477a1e54 +Revision: 1726 +Branch: 3.1.4 Last Changed Author: Dhanya_Thattil -Last Changed Rev: 3483 -Last Changed Date: 2018-07-25 16:51:25.000000002 +0200 ./slsDetector/slsDetectorCommand.cpp +Last Changed Rev: 3492 +Last Changed Date: 2018-08-17 17:57:11.000000002 +0200 ./threadFiles/ThreadPool.o diff --git a/slsDetectorSoftware/slsDetector/gitInfoLib.h b/slsDetectorSoftware/slsDetector/gitInfoLib.h index 336fd0b23d..f64fea9c88 100644 --- a/slsDetectorSoftware/slsDetector/gitInfoLib.h +++ b/slsDetectorSoftware/slsDetector/gitInfoLib.h @@ -1,6 +1,6 @@ #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" -#define GITREPUUID "d69d69e8928f90b053a0e5ffccb9cfc4e9c5f960" +#define GITREPUUID "1b92b01a466aa1986b8198700274af75477a1e54" #define GITAUTH "Dhanya_Thattil" -#define GITREV 0x3483 -#define GITDATE 0x20180725 -#define GITBRANCH "3.1.4-rc" +#define GITREV 0x3492 +#define GITDATE 0x20180817 +#define GITBRANCH "3.1.4" diff --git a/slsReceiverSoftware/gitInfo.txt b/slsReceiverSoftware/gitInfo.txt index 01ec6a186e..6a44eedea2 100644 --- a/slsReceiverSoftware/gitInfo.txt +++ b/slsReceiverSoftware/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsReceiverSoftware URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git -Repsitory UUID: e599bfe56f512ea6a262483f61ffd8d67d6c6fcd -Revision: 710 -Branch: 3.1.3 +Repsitory UUID: 1b92b01a466aa1986b8198700274af75477a1e54 +Revision: 715 +Branch: 3.1.4 Last Changed Author: Dhanya_Thattil -Last Changed Rev: 3475 -Last Changed Date: 2018-06-28 14:19:34.000000002 +0200 ./src/UDPStandardImplementation.cpp +Last Changed Rev: 3492 +Last Changed Date: 2018-08-17 16:36:25.000000002 +0200 ./src/utilities.cpp diff --git a/slsReceiverSoftware/include/gitInfoReceiver.h b/slsReceiverSoftware/include/gitInfoReceiver.h index 50b5e28eea..f64fea9c88 100644 --- a/slsReceiverSoftware/include/gitInfoReceiver.h +++ b/slsReceiverSoftware/include/gitInfoReceiver.h @@ -1,6 +1,6 @@ #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" -#define GITREPUUID "e599bfe56f512ea6a262483f61ffd8d67d6c6fcd" +#define GITREPUUID "1b92b01a466aa1986b8198700274af75477a1e54" #define GITAUTH "Dhanya_Thattil" -#define GITREV 0x3475 -#define GITDATE 0x20180628 -#define GITBRANCH "3.1.3" +#define GITREV 0x3492 +#define GITDATE 0x20180817 +#define GITBRANCH "3.1.4" From 287efde54ae1e0ac2613728af3dd638e86a46d6b Mon Sep 17 00:00:00 2001 From: Dhanya Thattil <33750417+thattil@users.noreply.github.com> Date: Fri, 17 Aug 2018 18:01:13 +0200 Subject: [PATCH 22/25] Update RELEASE.txt --- RELEASE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE.txt b/RELEASE.txt index d5552d981d..0f20971509 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -1,4 +1,4 @@ -SLS Detector Package 3.1.4 released on 2018-08-03 +SLS Detector Package 3.1.4 released on 2018-08-17 ================================================= From 5698da5f95c6982e7c85d8f0749e59b1becf036d Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Wed, 12 Dec 2018 16:33:25 +0100 Subject: [PATCH 23/25] added conda recipe --- .travis.yml | 45 +++++++++++++++++++++++ recipe/build.sh | 15 ++++++++ recipe/copy_gui.sh | 15 ++++++++ recipe/copy_lib.sh | 23 ++++++++++++ recipe/meta.yaml | 89 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 187 insertions(+) create mode 100644 .travis.yml create mode 100644 recipe/build.sh create mode 100644 recipe/copy_gui.sh create mode 100644 recipe/copy_lib.sh create mode 100644 recipe/meta.yaml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..7260eae708 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,45 @@ +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.0 + diff --git a/recipe/build.sh b/recipe/build.sh new file mode 100644 index 0000000000..ccaa0f3d12 --- /dev/null +++ b/recipe/build.sh @@ -0,0 +1,15 @@ +mkdir build +mkdir install +cd build +cmake .. \ + -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ + -DCMAKE_INSTALL_PREFIX=install \ + -DUSE_TEXTCLIENT=ON \ + -DUSE_RECEIVER=ON \ + -DUSE_GUI=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DUSE_HDF5=OFF\ + + +cmake --build . -- -j10 +cmake --build . --target install \ No newline at end of file diff --git a/recipe/copy_gui.sh b/recipe/copy_gui.sh new file mode 100644 index 0000000000..26ce29890a --- /dev/null +++ b/recipe/copy_gui.sh @@ -0,0 +1,15 @@ + +mkdir $PREFIX/lib +mkdir $PREFIX/bin +mkdir $PREFIX/include + +#No libs for gui? + +#Binaries +cp build/bin/gui_client $PREFIX/bin/. +cp build/bin/slsDetectorGui $PREFIX/bin/. + + +#Which headers do we need for development?? + +# cp include/some_lib.h $PREFIX/include/. \ No newline at end of file diff --git a/recipe/copy_lib.sh b/recipe/copy_lib.sh new file mode 100644 index 0000000000..4c427ee927 --- /dev/null +++ b/recipe/copy_lib.sh @@ -0,0 +1,23 @@ + +mkdir $PREFIX/lib +mkdir $PREFIX/bin +mkdir $PREFIX/include +mkdir $PREFIX/include/slsDetectorPackage + +#Shared and static libraries +cp build/bin/libSlsDetector.so $PREFIX/lib/. +cp build/bin/libSlsDetector.a $PREFIX/lib/. +cp build/bin/libSlsReceiver.so $PREFIX/lib/. +cp build/bin/libSlsReceiver.a $PREFIX/lib/. + +#Binaries +cp build/bin/sls_detector_acquire $PREFIX/bin/. +cp build/bin/sls_detector_get $PREFIX/bin/. +cp build/bin/sls_detector_put $PREFIX/bin/. +cp build/bin/sls_detector_help $PREFIX/bin/. +cp build/bin/slsReceiver $PREFIX/bin/. +cp build/bin/slsMultiReceiver $PREFIX/bin/. + +#Which headers do we need for development?? +cp build/install/include/* $PREFIX/include/slsDetectorPackage/ +# cp include/some_lib.h $PREFIX/include/. \ No newline at end of file diff --git a/recipe/meta.yaml b/recipe/meta.yaml new file mode 100644 index 0000000000..a42f74d051 --- /dev/null +++ b/recipe/meta.yaml @@ -0,0 +1,89 @@ + +package: + name: sls_detector_software + version: 4.0.0 + +source: + - path: .. + +build: + number: 0 + rpaths: + - lib/ + +requirements: + build: + - {{ compiler('c') }} + - {{compiler('cxx')}} + - cmake + - qwt 6.* + - qt=4.8.7=7 + - zeromq=4.2.5=hfc679d8_5 + - pyzmq + - xorg-libx11 + - xorg-libice + - xorg-libxext + - xorg-libsm + - xorg-libxau + - xorg-libxrender + - xorg-libxfixes + - {{ cdt('mesa-libgl-devel') }} # [linux] + - {{ cdt('mesa-libegl-devel') }} # [linux] + - {{ cdt('mesa-dri-drivers') }} # [linux] + - {{ cdt('libselinux') }} # [linux] + - {{ cdt('libxdamage') }} # [linux] + - {{ cdt('libxxf86vm') }} # [linux] + + host: + - libstdcxx-ng + - libgcc-ng + - libpng >=1.6.32,<1.6.35 + - xorg-libx11 + - xorg-libice + - xorg-libxext + - xorg-libsm + - xorg-libxau + - xorg-libxrender + - xorg-libxfixes + + run: + - libstdcxx-ng + - libgcc-ng + +outputs: + - name: sls_detector_lib + version: 4.0.0 + script: copy_lib.sh + requirements: + build: + - {{ compiler('c') }} + - {{compiler('cxx')}} + - name: sls_detector_gui + version: 4.0.0 + script: copy_gui.sh + requirements: + build: + - {{ compiler('c') }} + - {{compiler('cxx')}} + - cmake + - qwt 6.* + - qt=4.8.7=7 + - zeromq=4.2.5=hfc679d8_5 + - pyzmq + - xorg-libx11 + - xorg-libice + - xorg-libxext + - xorg-libsm + - xorg-libxau + - xorg-libxrender + - xorg-libxfixes + - {{ cdt('mesa-libgl-devel') }} # [linux] + - {{ cdt('mesa-libegl-devel') }} # [linux] + - {{ cdt('mesa-dri-drivers') }} # [linux] + - {{ cdt('libselinux') }} # [linux] + - {{ cdt('libxdamage') }} # [linux] + - {{ cdt('libxxf86vm') }} # [linux] + run: + - sls_detector_lib=4.0.0 + - qwt 6.* + - qt=4.8.7=7 From f36a12e454eebd8ff4eb01f64193a4a06b47ef9c Mon Sep 17 00:00:00 2001 From: Dhanya Thattil <33750417+thattil@users.noreply.github.com> Date: Thu, 2 May 2019 15:28:03 +0200 Subject: [PATCH 24/25] Release Notes typo: jungfrau min exptime is 50ns and not 50 us (#16) --- RELEASE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE.txt b/RELEASE.txt index 6c604c6f5d..cc922b6513 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -406,7 +406,7 @@ CONTENTS startup values for firmware v0.7 such as adc phase, ADC_PORT_INVERT_VAL and ADC offset half speed value. - 3. (Jungfrau) Minimum exposure time of 50 us was implemented. + 3. (Jungfrau) Minimum exposure time of 50 ns was implemented. 4. (Eiger and Jungfrau) They can be configured to have x and y coord values of the detector in their udp header. From e7eee67fedef1d760533609fd714484ff99e52fb Mon Sep 17 00:00:00 2001 From: Dhanya Thattil <33750417+thattil@users.noreply.github.com> Date: Thu, 13 Jun 2019 11:44:43 +0200 Subject: [PATCH 25/25] Update RELEASE.txt --- RELEASE.txt | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/RELEASE.txt b/RELEASE.txt index 74e9ca8c6a..df9a8e9a0e 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -123,8 +123,8 @@ This document describes the differences between 4.0.1 and 4.0.0 releases. 09.02.2018 (25 um Slave) Eiger ===== - Minimum compatible version : 22 - Latest compatible version : 22 + Minimum compatible version : 23 + Latest compatible version : 23 Jungfrau ======== @@ -196,10 +196,6 @@ This document describes the differences between 4.0.1 and 4.0.0 releases. Support ------- - General Software related: dhanya.thattil@psi.ch - anna.bergamaschi@psi.ch - - Python related: erik.frojdh@psi.ch - + anna.bergamaschi@psi.ch