diff --git a/releases/RELEASE_v3.0.0.txt b/releases/RELEASE_v3.0.0.txt new file mode 100755 index 000000000..9b7a5231b --- /dev/null +++ b/releases/RELEASE_v3.0.0.txt @@ -0,0 +1,229 @@ +SLS Detector Package 3.0.0 released on 2017-08-25 +================================================================================ + + + +INTRODUCTION + +This document describes the differences between previous versions and 3.0.0 releases. + +Manual (both HTML and pdf versions) are provided in + manual/docs/ + +Documentation from Source Code can be found for the Command Line and for the API in + html: + manual/docs/html/slsDetectorClientDocs/index.html + manual/docs/html/slsDetectorUsersDocs/index.html + pdf: + manual/docs/pdf/slsDetectorClientDocs.pdf + manual/docs/pdf/slsDetectorUsersDocs.pdf + +Example including binaries for detector and receiver user classes can be found in + + manual/manual-api + +User documentation can also be accessed directly at this location: + + https://www.psi.ch/detectors/users-support + +If you have any software related questions or comments, please send them to: + + dhanya.thattil@psi.ch + anna.bergamaschi@psi.ch + + +CONTENTS + +- Changes in User Interface +- New Features +- Resolved Issues +- Known Issues + + + +Changes in User Interface +========================= +This release has no changes in user interface from the previous 2.3 version. +However, receiver data call backs have been redefined for the +standard image header. + +Reiterating, both 2.3 and 3.0 supports the following features: + + Receiver + -------- + 1. The files will be written in this format in the binary mode: + * 1 ASCII file per measurement: header with measurement parameters + * binary files: series of images, each preceded by a + Standard Image Header (header described below) + + 2. Standard Image Header in file and call back + arguments defined. It is in the following format defined as + sls_detector_header defined in + slsReceiverSoftware/include/sls_receiver_defs.h + Mostly 0 if not applicatble or implemented, but updated in next release + from firmware. + + * Frame Number : 8 bytes # Image Number + * Exposure Length : 4 bytes # Sub frame number in 32 bit mode (Eiger) + Real time exposre time in 100ns (Others) + * Packet Number : 4 bytes # Number of packets caught in the image + * Bunch ID : 8 bytes # Bunch Id in beamline (Jungfrau) + * Timestamp : 8 bytes # Not implemened. + Time stamp with 10MHz clock + * Module Id : 2 bytes # Not implemented. Unique module ID. + * X Coordinate : 2 bytes # Currently as Id of part of detector in 1D + (Future Releases) as X coordinate + in complete detector system + * Y Coordinate : 2 bytes # Not implemented + Y coordinate in complete detector system + * Z Coordinate : 2 bytes # Not implemented + Z coordinate in complete detector system + * Debug : 4 bytes # Not implemented + For debugging purposes + * Round Robin Number : 2 bytes # Not implemented + Round Robin Number + * Detector Type : 1 byte # Detector type defined by enum + detectorType in slsReceiverSoftware + /include/sls_receiver_defs.h + * Header Version : 1 byte # 1.0 currently + + 3. The call back value for Start Acquisition Call back is insignificant at the + moment and left for future use. Instead, the following rules apply: + * If file write is enabled from the client, we will write the files. + * If callbacks are registered, they will be called. + For example, the user prefers to write the data himself, one must disable + file write (so we dont write) and register the callbacks (so the user gets + the data). + + 4. Multiple Receivers have to be started as different processes, instead of threads + due to static variables being used. Please refer example code provided in the + slsDetectorsPackage/manual/manual-api folder (mainReceiver.cpp). + + + +New Features +============ + Package + ------- + 1. One can compile using cmake or the ./cmk.sh script(also uses cmake) + Run ./cmk.sh -help to get more info. This method does not touch the + source files. Please start off with ./cmk.sh -bj9, where (9 is #cores+1) + + 2. One can compile the normal way using Makefile (editing Makefile.include + for the hdf5 options), but this will modify other gitInfo files. + + + General + ------- + 3. UDP Packets from all the detectors will contain the standard sls detector header. + Jungfrau will have an extra 6 bytes preceding the standard header in the udp packets + only. X, Y and Z Coordinates define the position of the detector in 3d. These values + are not filled in the udp header at the moment, but will be in the files and receiver + call backs with only x in 1d at the moment. + + 4. When acquire has started, one can use sls_detector_get busy to check the status + of the acquire. 1 is running 0 is idle. This way one can start acqusition with &, + poll the busy command ( or framescaught or frameindex to get status from receiver). + + + Receiver + -------- + 4. One can choose the file format using the command "fileformat binary/hdf5" from + the client, but one must compile with the options as defined in README.md + + 5. Virtual HDF5 file maps all the files into a single file. + + 6. Gotthard, Propix and Moench also save data in the same way as Jungfrau and Eiger, + as described above (ie. without any packet headers, only standard image headers + for each image data) + + 7. (Eiger) The ascii part of the file (file header with acquisition parameters) moved to + a separate file called the master file. So one master file per acquisition. + + + Client + ------ + 8. (Eiger) Can now set Threshold without uploading Trimbits. + + 9. (Eiger) Setting high voltage returns -999 for only slave and on the multi level gives + the value of the master only. + + 10. StartAcquisition (or sls_detector_put status start) parallelized. + + + Gui + --- + 10. Set the data streaming port (individually/ a single one that calculates for the other + receiver streamer threads) via the command line + + + Users-API + ----- + 11. manual-api example forks new child processes for every extra receiver object. + + + +Resolved Issues +=============== + Client + ------ + 1. Memory Leak fixed when setting receiver parameters such as udp port or detector + network parameter. The signature in slsDetector.cpp and corresponding files have + changed, but does not change the slsDetectorUser API. + + 2. Bug Fix: Has been made more threadsafe (strtok). Removed bug of configuring MAC + correctly even in multiple thread mode. + + 3. Bug Fix: Client crashing when rx_hostname is IP instead of a hostname has been fixed. + + + + Server + ------ + 4. (Eiger/Jungfrau) Bug Fix: Client crashing should not crash the server as SIGPIPE + signal is caught. + + 5. (Eiger) Bug Fix: Front End Temperature read out conversion fixed. + + 6. (Eiger) Bug Fix: sls_detector_get trimval(get all trimbits) would return only the first pixel + value. Now it returns -1 if all the pixels are different. + + + Receiver + -------- + 6. Bug Fix: Ctrl+C kills the receiver properly calling the appropriate destructors. + + 7. Acquire & Unblocking acquire (receiver start, status start, receiver stop) can work + also when switching from gui to command line and vice versa. + + 8. Bug Fix: sls_detector_get frameindex was always returning 0. + + 9. Bug Fix: In the rare chance that the shut down socket is still processing in + the genericsocket class, but the object is being deleted. + + 10. (Eiger): When running independent(not slsReceiver) receiver, one needn't do receiver start + to prepare acquisition. Prepare Acquisition has been moved to StartAcqusition and + StartAndReadAll. + + 11. (Gotthard): 639 pixels in first packet and 641 pixels in second packet. The first pixel in second + packet was unaccounted for. This is fixed now. + + + +Known Issues +============ + Server + ------ + 1. (Eiger) The hardware mac of the detector is used (not relayed back to the client). + For 1 GbE, the hardware IP of the detector is used (also not relayed back to the + client). + + 2. Standard header fills x-coord in 1D. y-coord and z-coord is not implemented (3D). + + + 3. HDF5 compression and filters are not implemented yet. + + + + + diff --git a/releases/RELEASE_v3.1.0.txt b/releases/RELEASE_v3.1.0.txt new file mode 100755 index 000000000..63b72b4a9 --- /dev/null +++ b/releases/RELEASE_v3.1.0.txt @@ -0,0 +1,353 @@ +SLS Detector Package 3.1.0 released on 2018-03-12 +================================================= + + + +INTRODUCTION + +This document describes the differences between 3.1.0 and 3.0.0 releases. + +The conda package of the binaries can be downloaded from + + https://github.com/slsdetectorgroup/sls_detector_software.git + +The Python interface to the software package (including the package) is at + + https://github.com/slsdetectorgroup/sls_detector.git + +Manual (both HTML and pdf versions) are provided in + + manual/docs/ + +Documentation from Source Code can be found for the Command Line and C++ API in + + html: + manual/docs/html/slsDetectorClientDocs/index.html + manual/docs/html/slsDetectorUsersDocs/index.html + pdf: + manual/docs/pdf/slsDetectorClientDocs.pdf + manual/docs/pdf/slsDetectorUsersDocs.pdf + +Documentation to the python API is available at + + https://slsdetectorgroup.github.io/sls_detector/ + +Example including binaries for detector and receiver user classes can be found in + + manual/manual-api + +User documentation can also be accessed directly at this location: + + https://www.psi.ch/detectors/users-support + +If you have any software related questions or comments, please send them to: + + dhanya.thattil@psi.ch + anna.bergamaschi@psi.ch + +If you have any python related questions or comments, please send them to: + + erik.frojdh@psi.ch + + +CONTENTS + +- Firmware Requirements +- Changes in User Interface +- New Features +- Resolved Issues +- Known Issues + + + +Firmware Requirements +===================== + + Please refer to the link below for more details on the firmware versions. + https://www.psi.ch/detectors/firmware. + + Gotthard + ======== + Minimum compatible version : 11.01.2013 + Latest version : 08.02.2018 (50um and 25um Master) + 09.02.2018 (25 um Slave) + + -Can not be upgraded remotely. + + + Eiger + ===== + Minimum compatible version : 16 + Latest version : 20 + + -Can be upgraded remotely via bit files. + + + Jungfrau + ======== + Minimum compatible version : 13.11.2017 + Latest version : 13.11.2017 + + -Can be upgraded remotely via sls_detector_put programfpga . + + + +Changes in User Interface +========================= + + + Client + ------ + 1. Additional functions added for advanced users in users class: + (setSpeed, setClockDivider, setReadOutFlags, setDac, getADC, + setAllTrimbits, startReceiver, stopReceiver, + startAcquisition non blocking, setReceiverSilentMode, setHighVoltage, + enableDataStreamingToClient, enableDataStreamingFromReceiver, + setReceiverDataStreamingOutPort, setClientDataStreamingInPort) + + 2. Zmq set up for client and receiver are separated. + zmqport for client and rx_zmqport for receiver. By default, they are the + same for the slsDetectorGui to work. + + 3. Users example also works without config file, where detector already + configured in shared memory. + + 4. Use "sls_detector_get busy 0" to clear acquiring flag in shared memory + caused due to an earlier interrupted acquisition from Ctrl+C" + + 5. Set bit, clear bit, read register and write register cannot give -1 for + inconsistent values from multiple detectors. One has to check error from + API or read the values individually. + + 6. multiSlsDetector::char* getSettingsFile() function signature has been + changed to string getSettingsFile(). + + + + Receiver + -------- + 7. Modified the help manaual/main-api/mainReceiver.cpp to make it more + robust (handling child process exit) and flexible to determine upon + start up the number of receivers (child processes), the start TCP port + and whether to call back data. + + detReceiver is now executed with [start tcp port] [number of receivers] + [1 for call back, 0 for none] as arguments. + By default, start tcp port is 1954, number of receivers is 1, and call + back is initiated. + + 8. rx_datastream to enable/disable data streaming in receiver. Using the GUI + or registering data call back in client automatically enables zmq in + receiver and client. "externalgui" is removed from the command line. Use + this command instead. + + 9. Rx_tcpport argument to the slsReceiver can be given using -t. + Eg. slsReceiver -t1955 + + +New Features +============ + + + Package + ------- + 1. In addition to the C++ API, the Python API is also now provided. + + 2. CMAKE now with debug flag and rpath, show warnings, compile only certain + components (such as receiver or gui) + + 3. One repository for entire package and made available at github. + + 4. One can do --version or -v to all the binaries to find out the release + version of the particular executable. + + 5. All the software version numbers have only date in format YYMMDD. + + + Client + ------ + 6. Parallelized more commands to detector. Beneficial for large detectors. + (setTimer, setFileIndex, setOnline, setReceiverOnline, getReceiverStatus, + resetFramesCaught, setFrameIndex, setFileName, getFramesCaughtByReceiver, + setDynamicRange, setRateCorrection) + + Option to also use "sls_detector_put threaded 0" to improve speed by + eliminating progress display during acquisition. Effective only for + large detectors. + + + Detector Server + --------------- + 7. (Eiger) Virtual class to execute on pc. + + 8. One can now read temperatures during acquisition. It goes via the stop + server. + + 9. (Jungfrau) One can start server in "debug" mode and then program the + new firmware via software command "sls_detector_put programfpga xx.pof". + + 10. (Jungfrau) Server can exit on start up if either the firmware or the + server is incompatible with each other. + + 11. (Jungfrau) One is able to set transmission delay (ms) of image for each + individual detector using "txndelay_frame" command. Beneficial for + large detectors. + + 12. (Jungfrau) One can set a threshold temperature (temp_threshold) and + enable the temperature control feature (temp_control). When the + temperature (temp_fpga) overshoots the threshold temperature, it will + set the temperature event (temp_event) and power off the chip. One must + then switch off the detector and check cooling. Switching back on starts + with defaults. + + 13. (25um Gotthard) Added start acquisition delay to master module. + + 14. (Gotthard) New constraints for firmware dated 08.02.2018 and 09.02.2018 + (25 um Slave) include minimum exposure time is 186 ns and minimum + period is 1278 ns + current exposure time. + + + Receiver + -------- + 14. The detectorip and rx_udpip does not have to be in the same subnet anymore. + Add the following commands after rx_hostname in config file to overwrite + mac configuration: + rx_udpmac [router mac] + configuremac 0 + + 15. Added silent mode to receiver using command r_silent [i] from client. + It might be beneficial for max frame rate applications. + + 16. Receiver print out can handle black or white backgrounds. + + 17. zmq package included updated to v4.0.8. + + 18. Zmq streaming from receiver also sends file index in json header. + + + Gui + --- + 19. If acquisition is done, but "stop dummy packet" to the gui was lost in + the network, stop acquisition command will restream it so that the gui + doesnt hang forever. This is used only for very fast detectors like + Moench. + + + +Resolved Issues +=============== + + + Client + ------ + 1. gethostbyname used in connecting to sockets was not thread safe for + multiple detectors. Using getaddrinfo for stability in multi threaded + environment. + + 2. Updated writing content of config and parameter dump into files. + + 3. More locking to handle main and processing threads using the threadpool. + Removing unlock twice, which is undefined behavior. + + 4. (Jungfrau) adcphase returns the correct value, instead of -1. + + + Detector Server + --------------- + 4. (Eiger) The hardware MAC of the detector is used during configuration + and relayed back to client. Similarly, hardware IP for 1 Gbe data mode. + + 5. (Eiger) Status will return error if there was the unlikely trouble + reading status register in the front end board. Earlier, it would only + return idle. + + 6. (Jungfrau) patch server v3.0.0.6.3 + Able to set settings, high voltage now correctly reads 0 when + switched off, dacs are properly set. + + 7. (Jungfrau) FPGA reset and programming FPGA firmware via software is done + properly + + 8. (Gotthard) patch server v3.0.0.5.1 + Able to read temperature properly. + + 9. (Gotthard) butst mode if set too fast had unwanted behavior such as + sending same image continuously. Now it is handled to display error + and stop acquisition. + + 10. (Gotthard) completely removed the possibility to set timing modes + other than auto and trigger as they are not implemented anyway. Also + signal index 1, 2 and 3 are reserved and hence, cannot be configured for + an external trigger. + + 11. Non Mythen and non Eiger detectors can also now get settings file from + board. + + 12. (Gotthard) Did not get first few images initially after configuring MAC + of detector. Fixed. + + + Receiver + -------- + 12. Made it easier to disable the standard receiver and fixing bugs related + to the use of a custom one. + + 13. (Jungfrau) HDF5 dimensions (npixelsY) required for mapping fixed. + + 14. patch2-v3.0.0-slsReceiverSoftware.patch + x, y and z coordinates in the call backs and the files are hardcoded + for this release. + + 15. Rest implementation (not used by standard receiver) removed. + + + Gui + --- + 16. patch1-v3.0.0-slsDetectorGui.patch + (Eiger) In expert mode and in advanced tab, when trimbits + loaded are different for every pixel, the gui complains and sets + all trimbits to zero. This has been resolved. Now, the "Set All + Trimbits" field is just set to -1. + + 17. Fixed segmentation fault of xputsn properly. + + 18. Upon clicking on "Start", clears acquiring flag in shared memory + caused due to an earlier interrupted acquisition from Ctrl+C" + + 19. Fixed plotting twice caused due to unzooming the first time. + + 20. Removed option for compression in Gui as it is not available currently. + + 21. Can also show Jungfrau multi detector in x direction in gui. + + 22. Switching tabs sometimes results in delay and gates fields being incorrectly + enabled. Fixed. + + + +Known Issues +============ + + + Client + ------ + 1. File name prefix can only be done at multi deector level. Changing at + individual detector level will not include scan or position variables. + + + Detector Server + --------------- + 2. Standard header fills x-coord in 1D. y-coord and z-coord is not + implemented (3D). + + + Receiver + -------- + 3. HDF5 compression and filters are not implemented yet. + + + + + + + diff --git a/releases/RELEASE_v3.1.1.txt b/releases/RELEASE_v3.1.1.txt new file mode 100755 index 000000000..15199b0f2 --- /dev/null +++ b/releases/RELEASE_v3.1.1.txt @@ -0,0 +1,31 @@ +SLS Detector Package 3.1.1 released on 2018-03-20 +================================================= + + + +INTRODUCTION + +This document describes the differences between 3.1.0 into 3.1.0 releases. + + +Topics Concerning +================== + Jungfrau adcphase + Eiger in 10 GbE mode + + +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. + + 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. + + diff --git a/releases/RELEASE_v3.1.2.txt b/releases/RELEASE_v3.1.2.txt new file mode 100755 index 000000000..1a2ca929b --- /dev/null +++ b/releases/RELEASE_v3.1.2.txt @@ -0,0 +1,26 @@ +SLS Detector Package 3.1.2 released on 2018-06-12 +================================================= + + + +INTRODUCTION + +This document describes the differences between 3.1.2 into 3.1.1 releases. + + +Topics Concerning +================== + Memory Leak in Client API + + +Resolved Issues +=============== + + Client + ------ + 1. Memory Leak for every multi threading command in client + when using API in multi detector mode. This is fixed now. + + + + diff --git a/releases/RELEASE_v3.1.3.txt b/releases/RELEASE_v3.1.3.txt new file mode 100755 index 000000000..618eb3b9b --- /dev/null +++ b/releases/RELEASE_v3.1.3.txt @@ -0,0 +1,26 @@ +SLS Detector Package 3.1.3 released on 2018-06-28 +================================================= + + + +INTRODUCTION + +This document describes the differences between 3.1.3 into 3.1.2 releases. + + +Topics Concerning +================== + Using delay after trigger for Jungfrau + + +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. + + + + diff --git a/releases/RELEASE_v3.1.4.txt b/releases/RELEASE_v3.1.4.txt new file mode 100755 index 000000000..0f2097150 --- /dev/null +++ b/releases/RELEASE_v3.1.4.txt @@ -0,0 +1,72 @@ +SLS Detector Package 3.1.4 released on 2018-08-17 +================================================= + + + +INTRODUCTION + +This document describes the differences between 3.1.4 into 3.1.3 releases. + + +Topics Concerning +================== + - get settings in users class + - HDF5 in Receiver + - gotthard timer accuracy + + +Resolved Issues +=============== + + Client + ------ + 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 + --------------- + 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 + -------- + 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. + + 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 + + + diff --git a/releases/RELEASE_v3.1.5.txt b/releases/RELEASE_v3.1.5.txt new file mode 100755 index 000000000..bb062b080 --- /dev/null +++ b/releases/RELEASE_v3.1.5.txt @@ -0,0 +1,37 @@ +SLS Detector Package 3.1.5 released on 2018-11-30 +================================================= + + + +INTRODUCTION + +This document describes the differences between 3.1.5 and 3.1.4 releases. + + +Topics Concerning +================== + - Gotthard adc channel shifted by one + - users class: get version, status, resetframescaught + + +Resolved Issues +=============== + + Detector Server + --------------- + 1. (Gotthard) The adc channel is shifted by one due to an incorrect ADC pipeline + register. This is fixed now. + + + Client + ------ + 1. Users class: Get versions gave -1. Has been fixed for single and multi modules. + + +New Features +============ + + Client + ------ + 1. Users class: Added "stopped" to detector status list, resetframescaught in + receiver function. diff --git a/releases/RELEASE_v4.0.0.txt b/releases/RELEASE_v4.0.0.txt new file mode 100755 index 000000000..6c604c6f5 --- /dev/null +++ b/releases/RELEASE_v4.0.0.txt @@ -0,0 +1,508 @@ +SLS Detector Package 4.0.0 released on 27.09.2018 +================================================= + + + +INTRODUCTION + + This document describes the differences between 4.0.0 and 3.1.4 releases. + + Download + -------- + + The Source Code (Default C++ API): + https://github.com/slsdetectorgroup/slsDetectorPackage + + The Conda Lib Package: + https://github.com/slsdetectorgroup/sls_detector_lib + + The Conda GUI Package: + https://github.com/slsdetectorgroup/sls_detector_gui + + The Python Interface (including the package): + https://github.com/slsdetectorgroup/sls_detector + + + Documentation + ------------- + + Manual (HTML & PDF): + https://www.psi.ch/detectors/documentation + slsDetectorPackage/manual/docs/ + + Command Line Documentation: + manual/docs/html/slsDetectorClientDocs/index.html + manual/docs/pdf/slsDetectorClientDocs.pdf + + C++ API Documentation: + manual/docs/html/slsDetectorUsersDocs/index.html + manual/docs/pdf/slsDetectorUsersDocs.pdf + + C++ API Example: + manual/manual-api/mainClient.cpp + manual/manual-api/mainReceiver.cpp + + Python API Documentation: + https://slsdetectorgroup.github.io/sls_detector/ + + Further Documentation: + https://www.psi.ch/detectors/users-support + + + Support + ------- + + General Software related: + dhanya.thattil@psi.ch + anna.bergamaschi@psi.ch + + Python related: + erik.frojdh@psi.ch + + + +CONTENTS + + 1. Firmware Requirements + 2. Changes in User Interface + 3. New/Modified Commands + 4. Other New Features + 5. Resolved Issues + 6. Known Issues + 7. Next Major Release Plans + + + +1. Firmware Requirements +======================== + + Gotthard + ======== + Minimum compatible version : 11.01.2013 + Latest version : 08.02.2018 (50um and 25um Master) + 09.02.2018 (25 um Slave) + Eiger + ===== + Minimum compatible version : 22 + Latest version : 22 + + Jungfrau + ======== + Minimum compatible version : 15.06.2018 + Latest version : 15.06.2018 + + + Detector Upgrade + ================ + Gotthard Cannot be upgraded remotely. Requires programming via USB blaster + Eiger Can be upgraded remotely via bit files + Jungfrau Can be upgraded remotely using sls_detector_put programfpga + + Instructions available at + https://www.psi.ch/detectors/installation-instructions + under Detector Upgrade -> [Detector Type] -> Firmware. + + + Please refer to the link below for more details on the firmware versions. + https://www.psi.ch/detectors/firmware. + + + +2. Changes in User Interface +============================ + + Client + ------ + + 1. Shared Memory: + + POSIX shared memory has been implemented and they are typically created in + /dev/shm/ folder. + + A multiSlsDetector object will create a shared memory segment with naming style: + slsDetectorPackage_x_[_z] + and an slsDetector object will create a shared memory segment with naming style: + slsDetectorPackage_x_sls_y[_z] + + where + x is the multi detector id + y is the sls detector id + z is the environment variable SLSDETNAME, if set. + They can be deleted directly. + + Environment variable SLSDETNAME included for user-friendliness + of using 2 different detectors from the same client pc. One needn't use + different multi detector id if the SLSDETNAME is different for both consoles. + + Constructor will fail if shared memory size is different (different package + releases/detectors). Loading config file cleans shared memory. + + + 2. Exceptions in constructors: + + All constructors that have an error throws an exception. For this release, + this is caught within the package and interfaced as error codes or messages + to the users using command line or API. + + As a result: + - slsDetectorsUsers constructor signature now includes a success flag. + - If one uses multiSlsDetector, slsDetector, ZmqSocket classes directly, + catch exceptions from constructors. + - In future releases, the exception will be thrown + outside the package for the users to handle it. + + + 3. API Compatibility: + + Client now checks API version of Detector Server - Client and Receiver - Client + when connecting for the first time to detector server or receiver server + and the online flags have not been set in shm. + + Upon failure, error messages will ensue and further commands will not + be executed. Detector servers referred to are only for Eiger, Jungfrau and Gotthard. + + Previously, the detector server would exit on mismatched Firmware-Detector + server mismatch. They now wait for client to ask for compatibility check, + which is done the first time client connects to the detector and the + online flag in shm has not been set. + + + 4. Commands "type", "id" and "replace" are removed. + + + Receiver + -------- + + 1. Reciever Header Structure in file writing and call back: + + sls_receiver_header structure added to sls_receiver_defs.h for image headers + in file writing. + + #define MAX_NUM_PACKETS 512 + typedef std::bitset sls_bitset; + typedef struct { + sls_detector_header detHeader; /**< is the detector header */ + sls_bitset packetsMask; /**< is the packets caught bit mask */ + } sls_receiver_header; + + It includes the detector header structure + bitmask of 512 bits, + where each bit represents a packet caught. This is useful in saving time + in writing to file by not padding missing packets and still retaining useful data. + + The binary and HDF5 writer version number changed from 1.0 to 2.0. + The detector header version remains as 1.0. + + registerCallBackRawDataReady modified to give this structure pointer, + instead of individual structure member pointers. + + + 2. ZmqSocket class: + + If one uses ZmqSocket.h, then the json header has to be parsed outside + the class to allow the user to remove the restriction in extracting all data + from the json header. + + + 3. Receiver Call back with modified size: + + registerCallBackRawDataModifyReady call back that is similar to the receiver + registerCallBackRawDataReady has been added to allow the call back to + specify an updated size of image after call back. This is in view to process + an image in call back (including extract only a region of the image) and + provide this updated size in callback. This new resized/processed image + will be written to file or streamed out via zmq. This is useful in ROI + selection in the receiver. + + This also means that the call back is now called before writing to file. + + + +3. New/Modified Commands +======================== + + Client + ------ + + 1. add (modified): + appends detector to end of multi detector list. + + 2. replace: + sets hostname/ip address for a single detector. + + 3. user: + get user details from shared memory. + + 4. checkdetversion: + checks client version compatibility with detector server. + + 5. checkrecversion: + checks client version compatibility with receiver server. + + + Receiver + -------- + + 1. rx_zmqip: + sets/gets the zmq (TCP) ip of the receiver from where data is streamed + out from. (Eg. to the gui or intermediate process). By default, it is + the same as the zmqip. + + 2. zmqip: + sets/gets the zmq (TCP) ip, where client listens to, to reconstuct images. + (Eg. from receiver or intermediate process). By default, it is the same + as rx_zmqip. + + 3. rx_jsonaddheader: + sets/gets additional json header to be streamed out with the zmq from + receiver. Default is empty. Eg. p rx_jsonaddheader \"what\":\"nothing\" + + 4. r_discardpolicy: + sets/gets the frame discard policy in the receiver. + nodiscard - no discard (default), + discardempty - discard only empty frames, + discardpartial - discard any partial frame(fastest) + + 5. r_padding: + sets/gets the frame padding in the receiver. + 0 does not pad partial frames(fastest), + 1 (default) pads partial frames. + One can look at bitmask in the sls_receiver_header to process the unpadded + partial frames later. + + 6. activate (modified): + Extra option added to pad or unpad images in receivers when deactivated. + activate i [padding option], where i is activate/deactivate and padding + option is "padding" (default) or "nopadding". + + 7. rx_udpsocksize: + sets/gets the UDP socket buffer size. Already attempts to set by default + to 100mb, 2gb for Jungfrau. Does not remember custom values in client + shared memory, so must be initialized each time after setting receiver + hostname in config file. + + 8. rx_realudpsocksize: + gets the actual UDP socket buffer size. Usually double the set udp socket + buffer size due to kernel bookkeeping. + + 9. r_framesperfile: + sets/gets the frames per file in receiver. 0 means infinite or all frames + in a single file. Default of Eiger changed from 2k to 10k. + + + Eiger Specific + -------------- + + 1. status trigger: + To trigger internally via software, one can use "status trigger". + + 2. subdeadtime: + sets/gets sub frame dead time in s in 32 bit mode. Subperiod is set in + the detector by subexptime + subdeadtime. This value is normally a + constant set by an expert catered to individual detector modules in the + config file. Receiver files writes master file metadata subperiod + instead of subdeadtime. + + 3. gappixels: + enables/disables gap pixels in system (detector & receiver). 1 sets, + 0 unsets. In Receiver, 4 bit gap pixels mode is not implemented, but is + implemented in client data call back. Gap pixels are at module level + and not at multi module level. + + 4. measuredperiod: + gets the measured frame period (time between last frame and the previous + one) in s. Makes sense only for acquisitions of more than 1 frame. + + 5. measuredsubperiod: + gets the measured subframe period (time between last subframe and the + previous one) in s in 32 bit mode. + + 6. flags(modified): + extra flags "nooverflow" (default) and "overflow" for sub images in 32 + bit mode. If set to overflow, it will set MSB of pixel data high if + there was any saturation in any of the sub images 32 bit mode. + + + Jungfrau Specific + ----------------- + + 1. storagecells: + sets/gets number of additional storage cells per acquisition. For very + advanced users only. Range: 0-15. Default: 0. + The #images = #frames * #cycles * (#storagecells +1). + + 2. storage_start: + sets/gets the storage cell that stores the first acquisition of the series. + For very advanced users only. Range: 0-15. Default: 15(0xf). + + + +4. Other New Features +===================== + + Client + ------ + + 1. (Jungfrau & Gotthard) Settingsdir and caldir is removed from config file. + Default dacs are stored in detector server. Hence, these folders + are also removed from slsDetectorPackage/settingsdir. Eiger and Mythen + continue to have them. + + 2. Depending on 1d position of detectors and detsizechan in config file, + row and column (previously xcoord and ycoord) are given to detector + servers (Eiger and Jungfrau) to encode into the udp header. + + 3. (Eiger) Setting threshold energy changes such as CAL dac is irrelevant + when interpolating between two energies and VRS dac is interpolated, not copied. + + 4. Users API updated with the following functions: + - setReceiverFramesDiscardPolicy + - setReceiverPartialFramesPadding + - setReceiverFramesPerFile + - sendSoftwareTrigger + - setSubFrameExposureDeadTime + - setSubFrameExposureTime + - enableGapPixels + - getMeasuredPeriod + - getMeasuredSubFramePeriod + - setOverflowMode + - setNumberOfStorageCells + - setStoragecellStart + - setThresholdEnergy (overloaded) + - resetFramesCaughtInReceiver + - setReceiverFifoDepth + - setFlowControl10G + - setTenGigabitEthernet + - getNMods + - setReceiverDataStreamingOutIP + - setClientDataStreamingInIP + + SlsReceiver + ----------- + + 1. slsMultiReceiver executable added that creates multiple receiver child processes. + ./slsMultiReceiver [start_tcp_port] [num_receivers] [1 for call back, 0 for none] + + 2. Default row and column (previously xcoord and ycoord) are hardcoded + for missing packets. (Eiger and Jungfrau) + + + Gui + --- + + 1. (Jungfrau) Gain plot included. Option under 2D options in Plot tab. + + 2. Option to maintain aspect ratio + + 3. Start and Stop separated to prevent multiple click syndrome. + + + Detector Server + --------------- + + 1. (Jungfrau) To use programfpga command, one must start server with -update + mode and then restart server without -update mode. + + 2. (Jungfrau) ASIC Timer configured at server start up and changed a few + 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. + + 4. (Eiger and Jungfrau) They can be configured to have x and y coord values + of the detector in their udp header. + + + + +5. Resolved Issues +================== + + Client + ------ + memory leak for multi threading + + 1. Compiler flag -std=c++98 enforced. Debug flag removed. + + 2. If trimen gives different list from different detectors, it returns a -1. + + 3. Version format for each submodule of the package changed to just date YYMMDD. + Users class fixed to give correct version, instead of -1. + + 4. Getting settings in users class gave -1. Fixed now. + + 5. (Jungfrau) Programming FPGA now creates the rawbin file from pof in tmp + rather than source file location (for permission issues). + + 6. (Gotthard) ROI segmentation fault fixed. + + Receiver + -------- + + 1. Silent feature of receiver fixed. + + 2. Socket descriptor misused earlier for success flag, instead exceptions + used that are handled inside the package. + + 3. Global optind variable initialized to instantiate multiple receivers + in same process. Also removed static members to enable this feature. + + 4. Socket buffer size attempts to set for each acquiistion and provide + warning if no capabilities. Warnings can be removed using instruction with + error provided. Default Jungfrau UDP socket buffer size if 2 GB, default is + 100 MB. + + 5. Refactored code a bit for performance and robustness, blocking push + in buffer between listener and dataprocessor + + + Detector Server + --------------- + + 1. (Jungfrau) Stop server also mapped during a reset. Reading power status + instead of user input register for power. + + 2. (Eiger) Bug fix for saving trimbits to file (Advanced users). + + 3. (Gotthard 25um) config.txt is not read again after detector startup, + no matter the number of times the detector server is restarted. + + +6. Known Issues +=============== + + Receiver + -------- + + 1. HDF5 compression and filters are not implemented yet. + + + Detector Server + --------------- + + 1. (Eiger) Registers mapped differently between firmware v20 and v22. + So, please ensure correct on-board server before switching between + firmware versions. Else one cannot ping it anymore. Will need to flash firmware + again to recover. + + 2. (Gotthard) To switch back to all ADC from single ADC ROI, one must take + even number of images for the receiver to understand complete images. + This will be fixed in the next firmware upgrade. + + + +7. Next Major Release Plans +=========================== + + Client + ------ + + 1. Exceptions thrown to the user to be handled. + + 2. Compilation using c++11. + + 3. Support of Mythen II restricted to this major and its minor releases. + + 4. Restructuring and refactoring of client code. + + + diff --git a/releases/RELEASE_v4.0.1.txt b/releases/RELEASE_v4.0.1.txt new file mode 100755 index 000000000..74e9ca8c6 --- /dev/null +++ b/releases/RELEASE_v4.0.1.txt @@ -0,0 +1,205 @@ +SLS Detector Package 4.0.1 released on 08.02.2018 (Bug Fix Release) +=================================================================== + + +This document describes the differences between 4.0.1 and 4.0.0 releases. + + CONTENTS + -------- + 1. Topics Concerning + 2. Resolved Issues + 3. Known Issues + 4. Firmware Requirements + 5. Download, Documentation & Support + + + +1. Topics Concerning +==================== + + - Jungfrau server (new firmware mapped) + - Eiger server (measuredPeriod, reg) + - Gotthard server(ADC channel shift, ROI, 25um slave packets) + - Receiver (padding, releasing resources segfault, gappixels) + - Users class (detectorSize, ROI, versions, status) + - API (config error, ROI) + - Compile (Options prefix, static libraries, Makefile for API) + - Gui (multi module) + + + +2. Resolved Issues +================== + + Detector Server + --------------- + + 1. (Jungfrau): Latest Jungfrau firmware release mapped. + + 2. (Eiger): Measured subperiod initially wrapped around 4.29s. Now, upto 42.9s. + + Advanced command "reg" was writing only to right FPGA. + + 3. (Gotthard 25/50um): Since Gotthard only sends packet numbers, one had to + remember to take even number of images in ROI mode, if they wanted to + switch back to non ROI mode. + This is fixed now, but temporary fix involves sending an image during + configuration, which will not be captured by the receiver. Hence, it takes + longer to configure. Permanent fix will require a firmware update. + + The detector output is shifted by 1 for every 32 channels. This is fixed now. + + + Receiver + -------- + + 1. Receiver padding was enabled only if deactivated padding was also enabled. + Receiver padding enable and receiver deactivated padding enable are independent now. + + 2. Starting and stopping receiver without listening resulted in seg faults. + + 3. Gappixels in receiver bug fix. + + + Client + ------ + + 1. (Users class): DetectorSize modified to set/get ROI if ROI is only 1 in number. + + Allowed setting/getting ROI at single detector level via API. + (ROI for Gotthard only). Added them to the users class as setROI and getROI. + + Retrieving versions at module level is possible now. + + Added "stopped" as status in getRunStatus list. + + 2. (API): Incorrect mac address in config file will set error flag in API and not just + print the error. + + ROI possible at module level. + + + Compile + ------- + + 1. CMake options now have a prefix 'SLS_'. + + 2. Static libraries removed. + + 2. slsDetectorPackage/manual/manual-api/Makefile modified to use libraries + from slsDetectorPackage/bin as the main Makefile copies the libraries there. + No effect when using CMakeFiles. + + + Gui + --- + + 1. Adding multiple detectors in x and y direction incremented number of detectors + in y direction incorrectly. Effect seen only in GUI (segfault) if + detsizechan has multi detectors in both direction. Fixed. + + + +3. Known Issues +=============== + + Detector Specific + ----------------- + + 1. (Gotthard 25 um): Slave misses or captures an extra frame. Occurs irregularly. + + 2. (Gotthard 25/50um): Using ROI (2 chips, 256 channels) missses last pixel + of that ADC. + + + +4. Firmware Requirements +======================== + + Gotthard + ======== + Minimum compatible version : 11.01.2013 + Latest compatible version : 08.02.2018 (50um and 25um Master) + 09.02.2018 (25 um Slave) + Eiger + ===== + Minimum compatible version : 22 + Latest compatible version : 22 + + Jungfrau + ======== + Minimum compatible version : 26.02.2018 + Latest compatible version : 06.12.2018 + + + Detector Upgrade + ================ + Gotthard Cannot be upgraded remotely. Requires programming via USB blaster + Eiger Can be upgraded remotely via bit files + Jungfrau Can be upgraded remotely using sls_detector_put programfpga + + Instructions available at + https://www.psi.ch/detectors/installation-instructions + under Detector Upgrade -> [Detector Type] -> Firmware. + + + Please refer to the link below for more details on the firmware versions. + https://www.psi.ch/detectors/firmware. + + + +5. Download, Documentation & Support +==================================== + + Download + -------- + + The Source Code (Default C++ API): + https://github.com/slsdetectorgroup/slsDetectorPackage + + The Conda Lib Package: + https://github.com/slsdetectorgroup/sls_detector_lib + + The Conda GUI Package: + https://github.com/slsdetectorgroup/sls_detector_gui + + The Python Interface (including the package): + https://github.com/slsdetectorgroup/sls_detector + + + Documentation + ------------- + + Manual (HTML & PDF): + https://www.psi.ch/detectors/documentation + slsDetectorPackage/manual/docs/ + + Command Line Documentation: + manual/docs/html/slsDetectorClientDocs/index.html + manual/docs/pdf/slsDetectorClientDocs.pdf + + C++ API Documentation: + manual/docs/html/slsDetectorUsersDocs/index.html + manual/docs/pdf/slsDetectorUsersDocs.pdf + + C++ API Example: + manual/manual-api/mainClient.cpp + manual/manual-api/mainReceiver.cpp + + Python API Documentation: + https://slsdetectorgroup.github.io/sls_detector/ + + Further Documentation: + https://www.psi.ch/detectors/users-support + + + Support + ------- + + General Software related: + dhanya.thattil@psi.ch + anna.bergamaschi@psi.ch + + Python related: + erik.frojdh@psi.ch +