From ad21d76af25bf785c6eb992388a42bbea3964ebb Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 5 Dec 2022 11:08:58 +0100 Subject: [PATCH] release notes updated --- RELEASE.txt | 788 +++++++++++++++++++++++++++++----------------------- 1 file changed, 440 insertions(+), 348 deletions(-) diff --git a/RELEASE.txt b/RELEASE.txt index b10e85de6..11ec5b8ff 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -7,74 +7,143 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 CONTENTS -------- - 1. New or Changed Features - 2. Resolved Issues - 3. Firmware Requirements - 4. Kernel Requirements - 5. Download, Documentation & Support + 1. New, Changed or Resolved Features + 1.1. Compilation + 1.2. Callback + 1.3. Python + 1.4. Client + 1.5. Detector Server + 1.6. Simulator + 1.7. Receiver + 2. Firmware Requirements + 3. Kernel Requirements + 4. Download, Documentation & Support +@Erik:- adding LTO to test and disable them for Debug builds? +@Erik:- support external build of python lib, + + 1. New or Changed Features ========================== +1.1. Compilation +---------------- - Compilation - ----------- - . Custom location to find ZeroMQ + General: + + + * Custom location to find ZeroMQ Option to provide a custom location to look for ZeroMQ, if not found using FindZeroMQ.cmake + For example, to use the system installed zmq: Using cmake: -DZeroMQ_HINT=/usr/lib64 Using cmk.sh script: -q /usr/lib64 - . Support external build + * Support external build Assuming already installed version of the slsDetectorPacakge exists, external build of python bindings, gui, ctbgui and moench has been added. - . Catch updated to latest 2.x version due to build failure in fedora + * Catch updated to latest 2.x version due to build failure in fedora - Python - ------ + Gui: - . Install python extension + + * Qt5 and in-built compressed Qwt 6.1.5 + Ported from Qt4 to Qt5. + Compressed Qwt 6.1.5 added into the package in libs. It is unpacked and built + as a static library.This allows us to remove qwt as an external dependency + and reduces the risk of picking up the wrong version. + + + Python: + + + * Install python extension Option to copy the python extension (slsdet folder and _slsdet-..so) to CMAKE_INSTALL_PREFIX/python using -DSLS_INSTALL_PYTHONEXT - . Pybind11 (v2.10.0) + * Pybind11 (v2.10.0) Pybind11 is removed as a submodule and instead built into package to simplify for users. Now, there is no more need to clone with the '--recursive' argument or to update submodule when switching to this package version and above. - . Conda packages + * Conda packages Removed conda packages for python 3.6 and 3.7. Added for python 3.11. - . Defines in sls_detector_defs + +1.2. Callback +------------- + + + * Datatype of Metadata [registerCallBackRawDataReady, registerCallBackRawDataModifyReady] + Datatype changed from char* to sls_receiver_header. + + + * Datatype of Size [registerCallBackRawDataReady, registerCallBackRawDataModifyReady] + Datatype changed from uint32_t to size_t + + + * Datatype of file name and file path [registerCallBackStartAcquisition] + Datatype changed from string to const string reference. + + + * Incorrect image size [registerCallBackStartAcquisition] + Fixed. It used to give +120 bytes. + + + * [Gotthard2] 25um Image reconstruction for 2 modules + First module (master) interleaves with second modules(slave). First channel + of master is first channel of detector. + + Requires firmware update to reverse channels of slaves. + + + +1.3. Python +----------- + + + * Defines in sls_detector_defs sls_detetor_defs parsed and #defines extracted into defines.py For exmaple, one can use slsdet.LOCALHOST_IP + * Python sub-microsecond resolution + Reading back sub-microsecond exposure times from the Python API fixed by + addig Python datetime supports only micro seconds as lowest unit. + + This is fixed by introducing a new C++ type (DurationWrapper), which + holds number of nanoseconds as a uint64_t (only in python bindings) and + custom typecaster to convert to and from std::chrono::nanoseconds. - Client - ------ + A get using API now returns in DurationWrapper, instead of datetime. + Refer exptime help for examples. + + +1.4. Client +----------- Breaking API: - . Versioning + + * Versioning The client, receiver and detector servers now have semantic Versioning along with the date and are managed with the Version class. @@ -91,7 +160,7 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 Setting intitialchecks to 0 also bypasses the receiver compatibility check. - . Detector Specific fields + * Detector Specific fields bunchid ->detSpec1 reserved->detSpec2 debug->detSpec3 @@ -101,42 +170,69 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 https://slsdetectorgroup.github.io/devdoc/udpdetspec.html - . Namespace sls + * Namespace sls All files in slsSupportLib and tests have now been moved to sls namespace including macros. Using the LOG, for example, will require the sls qualifier. - . [Eiger] Number of UDP interfaces + * [Eiger] Number of UDP interfaces Command line: numinterfaces, API: getNumberofUDPInterfaces This command now reflects the actual number of udp interfaces for Eiger, which is 2. - . Deprecated CopyDetectorServer + * [Eiger][Jungfrau] Row column + [Jungfrau] Fixed row column indexing for multi module 2 interfaces + + [Eiger] The row indicies were switched across the Y axis for the callback + only for Eiger. This is now changed and kept similar to the other detectors. + The row indices would be in the order of the half modules in the hostname + command. Therefore, to keep the image from callback, invert the hostname + order in the config file. + + + * Deprecated CopyDetectorServer Command line: copydetectorserver, API: copydetectorserver Removed. Use updatedetectorserver - . [Eiger][Jugfrau][Mythen3] Deprecated specific transmission delay commands + * [Eiger][Jugfrau][Mythen3] Deprecated specific transmission delay commands txndelay_frame -> txdelay_frame txndelay_left -> txdelay_left txndelay_right -> txdelay_right - . Missing packets + * [Eiger] Datastream only for 10GbE + Command line: datastream, API: getDataStream/ setDataStream + + This command to enable/ disable data stream from left or right port + is now allowed only for 10GbE. Previously, it incorrectly allowed to do so. + + + * [Eiger][Jungfrau][Moench][Ctb] Stop command effect on next frame number + Stopping acquisition sometimes results in different next frame numbers + for different moduels. Hence, after a stop, if the next frame numbers are + different, they are all set to their maximum value + 1. + + + * Missing packets Command line: rx_missingpackets, API: getNumMissingPackets This now returns a signed 64 bit instead of unsigned. The negative polarity depicts extra packets instead of missing packets and also takes care of disabled ports. - . Frames caught and frame index + * Frames caught and frame index Command line rx_framescaught, rx_frameindex, API: getFramesCaught/ getRxCurrentFrameIndex They now return a vector for each port when there are 2 udp interfaces in the receiver. - . [Moench][Ctb][Mythen3] Deprecated commands + * [Gotthard][Gotthard2] Num modules + Only 2 modules allowed maximum in a detector shared memory. + + + * [Moench][Ctb][Mythen3] Deprecated commands Patloopx, patnloopx, patwaitx, patwaittimex Please use instead patloop, patnloop, patwait and patwaittime commands with the level as an argument. @@ -148,82 +244,79 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 'stoploop'. - . [Mythen3] Clock Divider 4 and 5 + * [Mythen3] Clock Divider 4 and 5 Cannot be set anymore. Only read back. New commands: - . [Eiger][Gotthard][Gotthard2][Mythen3][Jungfrau] Master + + * [Eiger][Gotthard][Gotthard2][Mythen3][Jungfrau] Master Setting up from client: [Eiger][Gotthard2][Jungfrau] Command line: master, API: getMaster/ setMaster All of them can get master mode from the client. - Setting up on the detector or virtual server: - [Eiger][Gotthard2 Virtual][Mythen3 Virtual][Gotthard Virtual] - Using command line 'master' or 'm' with argument (slave=0, master=1) - [Eiger][Gotthard2][Gotthard] - Using config file with 'master' with argument (slave=0, master=1) + This can also be set up on the detector server. Please refer to notes + on that section. - . [Eiger] Top + * [Eiger] Top Command line: top, API: getTop/ setTop Sets the half module to top or bottom from the client. - This can also be set up on the detector server: - Using command line 'top' or 't' with argument (top=0, bottom=1) - Using config file with 'top' with argument (top=0, bottom=1) - + This can also be set up on the detector server. Please refer to notes + on that section. - . [Mythen3][Eiger] Save settings file + + * [Mythen3][Eiger] Save settings file Command line: trimbits (sls_detector_get), API: saveTrimbits Added - . [Gotthard2] Parallel readout added + * [Gotthard2] Parallel readout added Command line: parallel, API: getParallelMode/ setParallelMode Default for Gotthard2 is parallel. Non parallel mode only works in continuous mode. - . [Jungfrau] Software trigger added + * [Jungfrau] Software trigger added Command line: trigger, API: sendSoftwareTrigger Send software trigger instead of harware trigger. - . [Eiger][Jungfrau] Blocking trigger + * [Eiger][Jungfrau] Blocking trigger Commandline: blockingtrigger, API: sendSoftwareTrigger with argument true Sends software trigger signal to detector and blocks until the frames are sent out for that trigger. - . [Jungfrau] Sync + * [Jungfrau] Sync Command line: sync, API: getSynchronization/ setSynchronization Enables or disables synchronization between modules - . [Gotthard2][Mythen3] Temperature readout + * [Gotthard2][Mythen3] Temperature readout Command line: temp_fpga, API: getTemperature with TEMPERATURE_FPGA enum Added - . [Gotthard2][Mythen3] Round robin added + * [Gotthard2][Mythen3] Round robin added Command line: udp_dstlist, API: getDestinationUDPList/ setDestinationUDPList Command line: udp_numdst, API: getNumberofUDPDestinations One can set up to 32 (64 for Mythen3) entries in the destination list. - . [Jungfrau] Module Id + * [Jungfrau] Module Id Command line: moduleid, API: getModuleId 16 bit value (ideally unique) that is streamed out in the udp header of the detector. The on-board detector server picks it up from a file (if it exists) called detid_jungfrau.txt. - . [Jungfrau][[Gotthard2][Myhten3][Gotthard][Ctb][Moench] Hardware version + * [Jungfrau][[Gotthard2][Myhten3][Gotthard][Ctb][Moench] Hardware version Command line: hardwareversion, API: getHardwareVersion Gets the board or hardware version. For example, Jungfrau returns 1.0 or 2.0. @@ -231,7 +324,7 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 Also printed before starting FPGA programming. - . [Eiger][Jugfrau][Mythen3] Transmission Delay + * [Eiger][Jugfrau][Mythen3] Transmission Delay Command line: tx_delay, API: getTransmissionDelay/ setTransmissionDelay Sets transmission delay for all modules in the detector using the step size provided. Sets up for every module: @@ -241,7 +334,7 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 [Jungfrau][Mythen3] txdelay_frame to (num_modules * n_delay) - . [Mythen3] Bad channels + * [Mythen3] Bad channels Command line: badchannels, API: getBadChannels/ setBadChannels Set bad channels from file with a list of channels, which will be masked out. Also does trimming. A detector level command will require the channel @@ -249,17 +342,17 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 and removes duplicates. - . [Moench][Ctb] Starting frame number + * [Moench][Ctb] Starting frame number Command line: nextframenumber, API: getNextFrameNumber/ setNextFrameNumber Added and default set up on detector server start up. - . [Ctb] DAC names + * [Ctb] DAC names Command line: daclist, API: getDacNames/ setDacNames Can set and get dac names in the dac list now. - . [Mythen3] Polarity, interpolation, pump probe, analog pulsing, digital pulsing + * [Mythen3] Polarity, interpolation, pump probe, analog pulsing, digital pulsing Command line: polarity, interpolation, pumpprobe, apulse, dpulse API: getPolarity/ setPolarity, getInterpolation/ setInterpolation, getPumpProbe/ setPumpProbe, getAnalogPulsing/ setAnalogPulsing, @@ -283,14 +376,15 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 New commands for Receiver only: - . Arping for 10GbE + + * Arping for 10GbE Command line: rx_arping API: getRxArping/ setRxArping Starts a thread in the receiver to arping the interface it is listening to in 10GbE mode every 60 s. Changes NUM_RX_THREAD_IDS (sls_detector_defs.h) from 8 to 9. - . Receiver Region of Interest + * Receiver Region of Interest Command line: rx_roi, API: getRxROI/ setRxROI Command line: rx_clearroi, API: clearRxROI One can set an ROI in the receiver to write to file. 1D detectors can set @@ -309,9 +403,14 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 - Additonal options: + Additonal Features: - . [Jungfrau][Moench][Ctb] Additional programming checks + + * Non-blocking start + Allowing non-blocking start at modular level again. + + + * [Jungfrau][Moench][Ctb] Additional programming checks Also checks if the drive to write to is a special file or a normal file. If its a normal file, it throws asking to redo the command with a '--please-delete' argument to delete the normal file and create the device @@ -323,28 +422,46 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 'GENERIC'. Fixed to suggest if 'hostname' executed properly. - . Udp Source IP + * Udp Source IP Command line: udp_srcip(2), API: getSourceUDPIP(2)/ setSourceUDPIP(2) One can also set this to 'auto' for 1 GbE data. It will set to IP of rx_hostname (as in udp_dstip) - . Incrementing default receiver tcp port + * Incrementing default receiver tcp port Automatically incrementing the default receiver tcp port for every module when creating shared memory. - Changes: + Changes or Fixes: - . [Jungfrau] Storage cells in running receiver + + * Free and config command fail + Free and config command checked mismatch of size of shared memory before + freeing or loading new config. Fixed. + + + * sls_detector_help or sls_detector_get -h + Should not create Detector object. Fixed. + + + * [Jungfrau] Storage cells in running receiver Allowing the possibility to set this when receiver in running state. - . [Eiger] Vtr + * [Eiger] Vtr Allow Vtrim to be interpolated for settings. - . [Mythen3] Threshold + * [Mythen3] Incorrect gain caps when setting threshold energy + Gain caps overwritten with settings enum. Fixed. + + + * [Mythen3] Non blocking start acquisition + Non-blocking start acquisition was sent out twice to the master. Fixed. + + + * [Mythen3] Threshold When settings trimbits or threshold, counter mask is set and hence, vthx dacs are set accordingly. @@ -353,45 +470,165 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 detector. - . [Moench][Ctb] Pattern levels + * [Moench][Ctb] Pattern levels Changed from 3 to 6. - . [Mythen3][Moench][Ctb] Default patwait and patloop addresses + * [Mythen3][Moench][Ctb] Default patwait and patloop addresses Set default wait and loop addresses to 0x1fff (max value) for all levels before loading pattern. Please use the pattern command instead of parameters. This ensures defaults are set up and is faster. - . [Moench][Ctb] ADC Vpp + * [Moench] Patsetbit and patsetmask + Command line: patsetbit API: getPatternBitMask/ setPatternBitMask + Command line: patmask API: getPatternMask/ setPatternMask + + Exchanging the help and masks for patsetbit and patsetmask in the detector + server, especially in loading settings. + + + * [Moench][Ctb] ADC Vpp Command line: adcvpp, API: getADCVpp/ setADCVpp Moved from SetDAC function into into its own. One can use mV values or option numbers as before. + * [Ctb] ADC command goes back to control server + Slow ADCs, slow ADC temperature, get measured current and voltage values + are requested via the control server again insetad of the stop server + due to configuration and definitions in the control server. +1.5. Detector Server +-------------------- - Detector Server - --------------- + Config file: - . [Gotthard2] Adapt to new HDI version - HDI module ID written to FPGA register + * [Eiger][Gotthard2][Gotthard] Master + Using config file with 'master' with argument (master=1, slave=0) - . [Moench] ADC9257 Vref + * [Eiger] Top + Using config file with 'top' with argument (top=1, bottom=0) + + + + Command line arguments: + + * They have precedence over config files. + + + * [Eiger][Gotthard2 Virtual][Mythen3 Virtual][Gotthard Virtual] Master + Using command line '--master = 1' or '-m = 1' with argument + (master = 1, slave = 0) + + + * [Eiger] Top + Using command line '--top = 1' or '-t = 1' with argument (top=1, bottom=0) + + + * Ignore config file + The config files can also be ignored by an argument from the command line, + '--ignore-config' or '-i'. + + + + Fixes: + + + * [Jungfrau][Eiger] Clear UDP destination + Command line: udp_cleardst, API: clearUDPDestinations + Clearing udp destination also clears it in the FPGA now. + + + * [Eiger] Incorrect next frame number + Command line: nextframenumber, API: getNextFrameNumber/ setNextFrameNumber + Get next frame number for 10g was connected to 1g registers and gave + incorrect values. Fixed. + + + * [Mythen3][Gotthard2] System clock change effects + When changing the system clock (clkdiv 2), time settings should also be + affected (exptime, period etc.). Fixed. + + [Gotthard2] System frequency should be same irrespective of timing source. + Fixed. + + + * [Mythen3] Kernel version compatibility test + Fix added to parse properly the kernel version with CET for corrected + version compatibility test. + + + * [Mythen3] Server crash for setting vthrehsold + Fixed. + + + * [Mythen3] Incorrect gaincaps + Setting threshold energy was overwriting gaincaps with settings enum. Fixed. + + + * [Ctb][Moench] Hostname fail in update mode. + Fixed + + + + Changes: + + + * [Jungfrau] Temporary fix for stop in 6.1.1 + Temporary fix introduced in 6.1.1 for not being able to start after a + stop command has been issued is removed. Reset core right after also has + been removed. It has been fixed in firmware instead. + + + * [Gotthard2] Clock Divider defaults + When chancing burst mode, clock dividers (2, 3 and 4) set to their + defaults according to burst mode. + + + * [Mythen3] DAC check for settings + Verify DAC values for each setting has been temporarily switched off + + + * [Mythen3] DAC min and max values + Vtrim minimum of 600 has been removed. + The threshold dacs minimum is 200 and maximum is 2400. + The other DACs minimum is 0 and maximum is 2800. + When out of range, will not throw, just a warning. + + + * [Mythen3] Vicin Dac changed to 800 + + + * [Jungfrau][Moench][Ctb] PLL reset at server start up + PLL reset now at server start up. + + + * [Moench] ADC9257 Vref ADC Vref voltage modified from 1.33V to 2V - . Command line arguments - They have precedence over config files. The config files can also be - ignored by an argument from the command line, '--ignore-config' or '-i'. - + + * [Ctb] Allow all clock dividers for PLL + Fixed. For example, 133 MHz would not really be set previously. Fixed by + changing totaldiv from float to an integer. - . [Jungfrau][Moench][Ctb] Additional server update process + + Additional Features: + + + * Stop server startup errors + Stop servers now also check for errors at startup (including version + compatibility) and like the control server, it will translate to the + client when connecting for the first time (hostname command). + + + * [Jungfrau][Moench][Ctb] Additional server update process Removes old server binary or target of linked file when updating detector server for blackfin detectors as there is less space on blackfin. @@ -400,44 +637,24 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 Raise error if server name to be copied is the same as final soft link name. - . [Mythen3] DAC check for settings - Verify DAC values for each setting has been temporarily switched off - - . [Mythen3] DAC min and max values - Vtrim minimum of 600 has been removed. - The threshold dacs minimum is 200 and maximum is 2400. - The other DACs minimum is 0 and maximum is 2800. - When out of range, will not throw, just a warning. - - . [Mythen3] Vicin Dac changed to 800 - - - . [Gotthard2] Clock Divider defaults - When chancing burst mode, clock dividers (2, 3 and 4) set to their - defaults according to burst mode. - - . [Moench][Ctb] 1 GbE Non blocking acquisition + * [Moench][Ctb] 1 GbE Non blocking acquisition Previously non blocking acquisition in 1 GbE would not send data. This feature added now. - - - . [Jungfrau][Moench][Ctb] PLL reset at server start up - PLL reset now at server start up. - Simulator - --------- + * [Gotthard2] Adapted to new HDI version + HDI module ID written to FPGA register - . [Eiger][Junfrau][Gotthard2][Mythen3] Module Id - Added into udp header - . Minimum Configuration - One can setup with just: - hostname localhost - rx_hostname localhost - udp_dstip auto - . [Eiger] Only one executable +1.6. Simulator +-------------- + + + * Command line arguments. Please refer to previous section on Detector Server. + + + * [Eiger] Only one executable Only one executable for an Eiger virtual server. Master and top mode can be provided via command line or config file to the detector server, as well as via the client. See in Other New Features for more details. @@ -446,283 +663,158 @@ This document describes the differences between v7.0.0.rc1 and v6.1.2 eigerDetectorServer_virtual # reads default config file (top master) eigerDetectorServer_virtual -i #ignores the config file (bottom slave) - Callback - -------- - . [Gotthard2] 25um Image reconstruction for 2 modules - First module (master) interleaves with second modules(slave). First channel - of master is first channel of detector. - - Requires firmware update to reverse channels of slaves. - - . Datatype of Metadata [registerCallBackRawDataReady, registerCallBackRawDataModifyReady] - Datatype changed from char* to sls_receiver_header. - - . Datatype of Size [registerCallBackRawDataReady, registerCallBackRawDataModifyReady] - Datatype changed from uint32_t to size_t - - . Datatype of file name and file path [registerCallBackStartAcquisition] - Datatype changed from string to const string reference. - - . Incorrect image size [registerCallBackStartAcquisition] - Fixed. It used to give +120 bytes. - - Receiver - -------- + * [Eiger][Junfrau][Gotthard2][Mythen3] Module Id + Added into udp header - . File write - File write is disabled by default. + * Minimum Configuration + One can setup with just: + hostname localhost + rx_hostname localhost + udp_dstip auto - . [Gotthard2] 25um image reconstruction in virtual HDF5 - Virtual HDF5 reconstructs complete image by interleaving first module - (master) with second module (slave). First channel of master is first - channel of detector. - - Requires firmware update to reverse channels of slaves. - - . File name prefix - Slash '/' not allowed. - - . Memory size - Increased an internal fifo header by 8 bytes to align memory allocated for - to receive images. - - . Geometry metadata - Added geometry (number of modules in each direction) to metadata in file. - - . HDF5 and Binary writer version - Changed from 6.3 to 6.4 - - - . Master file format to json - The format has been changed from ASCII to json. - - . Master file created at end of acquisition - The file is now written at the end of acquisition. So if any metadata - is changed during an acquisition, it will reflect the last value. - - . Namespace sls - All the receiver source files have also been added to namespace sls. - - . HDF5 Dataset name - Changed to just "data" to simplify for user - - Gui - --- - - . [Jungfrau][Eiger] Gap pixels - Enabled by default in the gui. - - . High voltage moved from Developer tab to Settings tab. - - . Gain plot zooming - Zooming disabled. Instead, it automatically zooms in when you zoom in - the main plot or if min and max of x and y axis set up in plot tab. - - - . Qt5 and in-built compressed Qwt 6.1.5 - Ported from Qt4 to Qt5. - Compressed Qwt 6.1.5 added into the package in libs. It is unpacked and built - as a static library.This allows us to remove qwt as an external dependency - and reduces the risk of picking up the wrong version. - - -2. Resolved Issues -================== - - - Client - ------ - - . [Ctb] ADC command goes back to control server - Slow ADCs, slow ADC temperature, get measured current and voltage values - are requested via the control server again insetad of the stop server - due to configuration and definitions in the control server. - - . [Eiger] Incorrect next frame number - Command line: nextframenumber, API: getNextFrameNumber/ setNextFrameNumber - Get next frame number for 10g was connected to 1g registers and gave - incorrect values. Fixed. - - . [Eiger][Jungfrau][Moench][Ctb] Stop affecting next frame number - Stopping acquisition sometimes results in different next frame numbers - for different moduels. Hence, after a stop, if the next frame numbers are - different, they are all set to their maximum value + 1. - - . [Mythen3] Incorrect gain caps when setting threshold energy - Gain caps overwritten with settings enum. Fixed. - - . [Mythen3] Non blocking start acquisition - Non-blocking start acquisition was sent out twice to the master. Fixed. - - . Free and config command fail - Free and config command checked mismatch of size of shared memory before - freeing or loading new config. Fixed. - - . sls_detector_help or sls_detector_get -h - Should not create Detector object. Fixed. - - - . [Moench] Patsetbit and patsetmask - Command line: patsetbit API: getPatternBitMask/ setPatternBitMask - Command line: patmask API: getPatternMask/ setPatternMask - - Exchanging the help and masks for patsetbit and patsetmask in the detector - server, especially in loading settings. - - - . [Eiger] Datastream only for 10GbE - Command line: datastream, API: getDataStream/ setDataStream - - This command to enable/ disable data stream from left or right port - is now allowed only for 10GbE. Previously, it incorrectly allowed to do so. - - - . Non-blocking start - Allow non-blocking start at modular level again. - - - . [Gotthard][Gotthard2] Num modules - Only 2 modules allowed maximum in a detector shared memory. - - - - - Detecor Server - -------------- - - . [Mythne3] Kernel version compatibility test - Fix added to parse properly the kernel version with CET for corrected - version compatibility test. - - . [Mythen3] Server crash for setting vthrehsold - Fixed. - - . [Mythen3] Incorrect gaincaps - Setting threshold energy was overwriting gaincaps with settings enum. Fixed. - - . [Ctb][Moench] Hostname fail in update mode. - Fixed - - . Stop server startup errors - Stop servers now also check for errors at startup (including version - compatibility) and like the control server, it will translate to the - client when connecting for the first time (hostname command). - - . [Mythen3][Gotthard2] System clock change effects - When changing the system clock (clkdiv 2), time settings should also be - affected (exptime, period etc.). Fixed. - - [Gotthard2] System frequency should be same irrespective of timing source. - Fixed. - - . [Jungfrau][Eiger] Clear UDP destination - Command line: udp_cleardst, API: clearUDPDestinations - Clearing udp destination also clears it in the FPGA now. - - - . [Jungfrau] Temporary fix for stop in 6.1.1 - Temporary fix introduced in 6.1.1 for not being able to start after a - stop command has been issued is removed. Reset core right after also has - been removed. It has been fixed in firmware instead. - - . [Ctb] Allow all clock dividers for PLL - Fixed. For example, 133 MHz would not really be set previously. Fixed by - changing totaldiv from float to an integer. - - . [Eiger][Jungfrau] Row column - [Jungfrau] Fixed row column indexing for multi module 2 interfaces - - - [Eiger] The row indicies were switched across the Y axis for the callback - only for Eiger. This is now changed and kept similar to the other detectors. - The row indices would be in the order of the half modules in the hostname - command. Therefore, to keep the image from callback, invert the hostname - order in the config file. - - Simulator - --------- - - . [Mythen3] Packet size + * [Mythen3] Packet size Fixed packet size calculation. Previously, sending only header with no data. - Receiver - -------- +1.7. Receiver +------------- - . Refactored and fixed minor issues + + Breaking API: + + + * Namespace sls + All the receiver source files have also been added to namespace sls. + + + * HDF5 and Binary writer version + Changed from 6.3 to 6.4 + + + * Master file format to json + The format has been changed from ASCII to json. + + + * Geometry metadata + Added geometry (number of modules in each direction) to metadata in file. + + + * HDF5 Dataset name + Changed to just "data" to simplify for user + + + * File write + File write is disabled by default. + + + + Fixes: + + + * Refactored and fixed minor issues Including memory structure and udp sockets. Fixed progress also in discard partial packaets mode and deactivated ports. Fixed 200% progress. Completely padded images now have detector type or version in metadata. Fixed getting stuck at stop receiver when using zmq Fixed clang compiler warnings - - . [Eiger] Datastream command order - The order of commands to set datastream from client mattered previously. - Datastream had to be set before 10GbE enable. Order does not matter anymore. - . Multiple files + + * Multiple files This bug was introduced in v6.0.0, where 1 file was created per frame after the first file. Fixed by resetting the number of frames in current file when creating a new one. - . [Mythen3] Incorrect number of packets calculated or tengiga not set up - Runnig config second time (with tengiga=0, dr !=32, counters !=0x7) - calculated incorrect image size expected due to inconsistent copy of - detector parameters. Fixed - . Storage cells in receiver - Previously not updated in receiver. Fixed. + * [Eiger] Datastream command order + The order of commands to set datastream from client mattered previously. + Datastream had to be set before 10GbE enable. Order does not matter anymore. - . Virtual HDF5 Parameter datasets - Corner case bug when frames caught is not a multiple of frames per file. - Not found in virtual image datasets. Fixed. - . Stuck when using zmq - More often in 6.1.1, gets stuck at stop receiver. - - . Udp destination MAC + * Udp destination MAC If it has been set before, changing udp_dstip will not update udp_dstmac. Fixed to always set it in detector even if it had a value before. Udp_dstmac can still be used to overwrite again. This is useful when using a router for example. - Gui - --- + * Stuck when using zmq + More often in 6.1.1, gets stuck at stop receiver. - . [Mythen3] Inconsistent timing mode + + * [Mythen3] Incorrect number of packets calculated or tengiga not set up + Runnig config second time (with tengiga=0, dr !=32, counters !=0x7) + calculated incorrect image size expected due to inconsistent copy of + detector parameters. Fixed + + + * Storage cells in receiver + Previously not updated in receiver. Fixed. + + + * Virtual HDF5 Parameter datasets + Corner case bug when frames caught is not a multiple of frames per file. + Not found in virtual image datasets. Fixed. + + + + Changes: + + + * Master file created at end of acquisition + The file is now written at the end of acquisition. So if any metadata + is changed during an acquisition, it will reflect the last value. + + + * File name prefix + Slash '/' not allowed. + + + + Additional Features: + + + * [Gotthard2] 25um image reconstruction in virtual HDF5 + Virtual HDF5 reconstructs complete image by interleaving first module + (master) with second module (slave). First channel of master is first + channel of detector. + + Requires firmware update to reverse channels of slaves. + + + * Memory size + Increased an internal fifo header by 8 bytes to align memory allocated for + to receive images for efficiency. + + + +1.8. Gui +-------- + + * [Jungfrau][Eiger] Gap pixels + Enabled by default in the gui. + + + * High voltage moved from Developer tab to Settings tab. + + + * Gain plot zooming + Zooming disabled. Instead, it automatically zooms in when you zoom in + the main plot or if min and max of x and y axis set up in plot tab. + + + * [Mythen3] Inconsistent timing mode Timing mode of the slaves should be discarded before squashing. Fixed. - . [Mythen3][Gotthard2] Crashes + + * [Mythen3][Gotthard2] Crashes Additional locking Added - Python - ------- - - . Python sub-microsecond resolution - Reading back sub-microsecond exposure times from the Python API fixed by - addig Python datetime supports only micro seconds as lowest unit. - - This is fixed by introducing a new C++ type (DurationWrapper), which - holds number of nanoseconds as a uint64_t (only in python bindings) and - custom typecaster to convert to and from std::chrono::nanoseconds. - - A get using API now returns in DurationWrapper, instead of datetime. - Refer exptime help for examples. - - - -- adding LTO to test and disable them for Debug builds? -- support external build of python lib, - - - 3. Firmware Requirements ========================