Skip to content

Releases: slsdetectorgroup/slsDetectorPackage

Major Release: 9.0.0

26 Nov 14:35
1b41e39
Compare
Choose a tag to compare

SLS Detector Package Major Release 9.0.0 released on 26.11.2024

This document describes the differences between v9.0.0 and v8.0.2

CONTENTS
--------
1           Compilation Changes
2           New or Changed Features
    2.1         Breaking API
    2.2         Resolved or Changed Features
    2.3         New Features
3           On-board Detector Server Compatibility
4           Firmware Requirements
5           Kernel Requirements
6           Download, Documentation & Support

2 Compilation Changes

*   Python version
    Minimum python version is changed from 3.6 to 3.8


*   Pybind11 version
    In-built version and the one picked up from github 
    updated from v2.11.0 to v2.13.6


*   Python lib versioning
    slsdet.__version__ now returns the package release version.


*   Python version in conda build
    Added python 3.13 also to conda build

2 New, Changed or Resolved Features

2.1 Breaking API

Receiver
--------


*   Receiver callbacks
    Brought much more metadata to receiver callbacks to construct the image.
    Update MultiReceiverApp to reflect this change.


*   File path
    At start of acquisition or at rx_start command, the file path is only 
    then verified if it exists and created if it does not.


Client
------


*   Removed receiver/publisher ZMQ IP
    Command line: rx_zmqip gives a warning and does nothing
    Python : rx_zmqip removed
    C++ API: get/setRxZmqIP removed

    Publisher zmq IP set to '0.0.0.0' or to listen on all interfaces.
    The publisher will determine which interface to stream out from based on
    the network route to the subscriber IP. Hence, receiver zmq IP is not 
    required.


*   Write register, Set or Clear bit
    Validation for this advanced feature has been removed by default. 
    One can force validation by using --validate in the command line or by 
    setting the validate option in the API.
   

ZMQ
---


*   Publisher socket constructor does not take an IP anymore.
    The details are above under 'Removed receiver/publisher ZMQ IP'.


GUI/ Client Callback
--------------------


*   completeImage member in detectorData attribute now returns false only
    if any the sub images (from different udp ports) have completeImage
    set to false in the JSON header. This is set if therea are any missing 
    packets for that udp port on slsReceiver/slsMultiReceiver. 
    
    The different subimages are anyway not synchronized. This errs when
    there are different missing images across multiple UDP ports. 

    The Gui does not show "complete image" in the status bar anymore. 
    If any of the udp ports have missing packets for that current disaplayed 
    image, then the "missing packets" will show in red in the status bar.


Detector Server
---------------


*   [Mythen3] Only run clock can be set
    Clock 0 is now the run clock and the only one that can be set. 
    The others are be read only.
    This affects the following commands:
    Command line or python API: clkdiv, clkfreq, clkphase, maxclkphaseshift
    C++ API: get/setClockDivider, getClockFrequency, get/setClockPhase, 
    getMaxClockPhaseShift


*   [Jungfrau] Temperature Control
    Temperature control is enabled by default at on-board detector server 
    startup. 
    As before, the default temperature threshold is 65°C and crossing this
    value will set a temperature event.

2.2 Resolved or Changed Features

Compilation
-----------


*   cmake_source_dir
    Fixed compilation error when using python and adding the slsDetectorPackage 
    as a subfolder due to cmake source directory changing.


Client
------


*   Command line Code Generation
    The command line parsing code is now generated from a yaml file. This is
    transparent to the user.


*   Clearer error message about freeing shared memory.


Detector Server
---------------


*   [Gotthard2] Chip reconfiguration

        -   Powering off/on the chip will now switch off chip configuration 
            property/ configure the chip every time.

        -   Switching off high voltage from a non zero value will now wait 
            10s to return for safety reasons.

        -   Powering off the chip requires high voltage to have been 
            switched off prior.

        -   Acquisition requires chip to have been configured prior.


*   [Gotthard2] Burst mode options restricted
    Burst mode external and continuous mode internal are not allowed to be set
    anymore as they are anyway not implemented.


Receiver
--------


*   [Gotthard I] fixed header stripping fixing segfault.


*   Error or help message for invalid arguments to slsMultiReceiver.


Simulator
---------


*   Refactored stop server to have better start up.


*   Fixed possible memory leak when taking non blocking acquisitions.


*   [Jungfrau] Valid gain values in data sent out. Previously, 2 was also sent out.


ZMQ
---


*   Publiser socket constructor

    -   enables keep alive socket options to send heartbeat messages to prevent
        discarded TCP flows if there is no packet for a longer period.

    -   enables IPv6 interfaces

*   Prints specific error for ENOENT (endpoint does not exist)

2.3 New Features

Client
------


*   Auto completion
    bash_autocomplete.sh or zsh_autocomplete.sh must be sourced from the 
    main package folder to enable auto completion of commands and arguments 
    for the command line on that shell.


*   sls_detector
    New executable that can be used instead of 'sls_detector_get' and 
    'sls_detector_put' for most commands. It will infer from the number of 
    arguments, which executable (sls_detector_put or sls_detector_get) to use. 
    For the rare commands that cannot be inferred from the number of arguments,
    it will complain accordingly.  


*   [Jungfrau] Timing Info Decoder (Advanced configuration)
    Command line or python API: timing_info_decoder
    C++ API: get/setTimingInfoDecoder. Options: SWISSFEL (Default), SHINE


*   [Jungfrau] Collection Mode (Advanced configuration)
    Command line or python API: collectionmode 
    C++ API: get/setCollectionMode. Options: ELECTRON, HOLE (Default)
    If chip v1.1, also configures the chip afterwards. 
    
    
*   [Gotthard2] Next frame number
    'Stop' in G2 25um is not synchronous and hence might trigger an extra set
    of frames in the slave module, resulting in the next acquiistion starting
    with inconsistent frame numbers between master and slave. Solved by 
    setting next frame number to the larger value (max + 1) after a stop command. 
    Requires a firmware update.

    Command line or python API: nextframenumber
    C++ API: get/setNextFrameNumber
    Can set/get the starting frame number for the next acquistion.


*   [Mythen3] Readout speed
    Command line, python API: readoutspeed. Options: full_speed (10MHz), 
    half_speed (20MHz, default), quarter_speed (40MHz)
    C++ API: get/setReadoutSpeed
    Also affect: 
    Command line, python API: readoutspeedlist
    C++ API: getReadoutSpeedList


*   Sleep
    Command line, python/ C++ API:  sleep
    Client sleeps for required time. Advanced command mainly for firmware
    developers to use in config files.


*   Xilinx Chip Test Board added

2 On-board Detector Server Compatibility

Eiger       9.0.0
Jungfrau    9.0.0
Mythen3     9.0.0
Gotthard2   9.0.0
Gotthard    9.0.0
Moench      9.0.0


On-board Detector Server Upgrade
--------------------------------

From v6.1.0 (without tftp):
    update only on-board detector server
        Using command 'updatedetectorserver'


    udpate both on-board detector server and firmware simultaneously
        Using command 'update'

Instructions available at
    https://slsdetectorgroup.github.io/devdoc/serverupgrade.html

3 Firmware Requirements

Eiger       02.10.2023 (v32)                    (updated in 7.0.3)

Jungfrau    20.09.2023 (v1.5, HW v1.0)          (updated in 8.0.0)
            21.09.2023 (v2.5, HW v2.0)          (updated in 8.0.0)

Mythen3     13.11.2024 (v2.0)                   (updated in 9.0.0)

Gotthard2   03.10.2024 (v1.0)                   (updated in 9.0.0)

Moench      26.10.2023 (v2.0)                   (updated in 8.0.2)

Gotthard    08.02.2018 (50um and 25um Master)
            09.02.2018 (25 um Slave) 


Detector Upgrade
----------------

The following can be upgraded remotely:

Eiger      via bit files
Jungfrau   via command <.pof>
Mythen3    via command <.rbf>
Gotthard2  via command <.rbf>
Moench     via command <.pof>

Gotthard cannot be upgraded remotely  

Except Eiger, 
    upgrade 
        Using command 'programfpg...
Read more

Bug Fix Release: 8.0.2

18 Sep 14:26
4880f87
Compare
Choose a tag to compare

SLS Detector Package Bug Fix Release 8.0.2 released on 18.09.2024

This document describes the differences between v8.0.2 and v8.0.1

CONTENTS
--------
1           Resolved Issues
2           On-board Detector Server Compatibility
3           Firmware Requirements
4           Kernel Requirements
5           Download, Documentation & Support

1 Resolved Issues

Compilation
-----------


*   Rapidjson compilation with gcc 14
    Fixed a compile issue with gcc 14. Same fix in later commits to rapidjson.


Client
------


*   getenv("HOME") returning nullptr
    When this happens, especially for systemd, it segfaults. Protection 
    provided by using empty string in this case.


*   [Mythen3] Bad channel list for multi module
    Exception thrown when loading multi module bad channel file skipping 
    modules in between. Fixed.


*   [Gotthard2] Stopping a blocking acquisition
    A check added in v8.0.0 to catch slaves that might be in waiting forever
    also catches Gotthard2 25um slaves that might only be in waiting 
    temporarily. This is fixed with a 50ms sleep before checking again 
    (upto 1s). 


*   [Moench] Acquire finished processing call back
    New executable 'sls_detector_acquire_zmq' added to listen to all zmq 
    packets from post processor or external process to signal end of post 
    processing. Post processor refactoring of zmq socket creation added.


Gui / Callback
--------------


*   [Gotthard2] Stopping a blocking acquisition
    From the previous issue, call back for acquisition finished status gives 
    error for inconsistent states. Again, a check every 50ms upto 1s is 
    added to let go the temporarily waiting slave.


*   Different file paths
    Fixes file path resetting when different modules have different fpath set.


Receiver
--------


*   HDF5 fill value
    Fix the fill value to accomodate all datatypes.


Firmware
--------


*   [Moench] Overflow with exptime of 0
    Fixed overflow when subtracting 1 clock cycle from exptime.


On-board Detector Server
------------------------


*   [Moench] Few changes in Server:
    - Max shifts of adc clock changed from 240 to 200. 

    - Fixed overflow when subtracting 2 clock cycles from exptime of 0ms.

    - Default readout speed to half speed from quarter.

    - Change default ADC phase to 150 for full readout speed.

    - Change default vipre_cds dac from 800 to 1280.


*   [Mythen3] Change Clk divider from 10 (100MHz) to 20 (50MHz) at startup.


*   [Jungfrau] Fix for HW v1.0 boards for unreliable ADC 2
    Issues sometimes seen on some HW v 1.0 boards are fixed with phase 
    relationship of 120 degrees. HW v2.0 boards are not affected.
    

Documentation
-------------


*   Updated troubleshooting documentaion to check links and disable firewall


*   Excluded non UTF-8 encoded libzmq documents due to machine dependent 
    compilation issues.

2 On-board Detector Server Compatibility

Eiger       8.0.0
Jungfrau    8.0.2
Mythen3     8.0.2
Gotthard2   8.0.0
Gotthard    8.0.0
Moench      8.0.2
Ctb         8.0.0


On-board Detector Server Upgrade
--------------------------------

From v6.1.0 (without tftp):
    Using command 'updatedetectorserver'

Instructions available at
    https://slsdetectorgroup.github.io/devdoc/serverupgrade.html

3 Firmware Requirements

Eiger       02.10.2023 (v32)                    (updated in 7.0.3)

Jungfrau    20.09.2023 (v1.5, HW v1.0)          (updated in 8.0.0)
            21.09.2023 (v2.5, HW v2.0)          (updated in 8.0.0)

Mythen3     24.01.2023 (v1.4)                   (updated in 7.0.0)

Gotthard2   23.11.2022 (v0.3)                   (updated in 7.0.0)

Gotthard    08.02.2018 (50um and 25um Master)
            09.02.2018 (25 um Slave) 

Moench      26.10.2023 (v0.3.2)                 (updated in 8.0.2, 
                                                under development)

Ctb         28.08.2023 (v1.2)                   (updated in 8.0.0)


Detector Upgrade
----------------

The following can be upgraded remotely:

Eiger      via bit files
Jungfrau   via command <.pof>
Mythen3    via command <.rbf>
Gotthard2  via command <.rbf>
Moench     via command <.pof>
Ctb        via command <.pof>

Gotthard cannot be upgraded remotely  

Except Eiger, 
    upgrade 
        using command 'programfpga' or

    udpate both server and firmware simultaneously
        using command 'update'


Instructions available at
    https://slsdetectorgroup.github.io/devdoc/firmware.html

4 Kernel Requirements

Blackfin 
--------
Latest version: Fri Oct 29 00:00:00 2021

Older ones will work, but might have issues with programming firmware via
the package.

Nios
-----
Compatible version: Mon May 10 18:00:21 CEST 2021

Kernel Upgrade
---------------
Eiger   via bit files
Others  via command

Commands: udpatekernel, kernelversion
Instructions available at
    https://slsdetectorgroup.github.io/devdoc/commandline.html
    https://slsdetectorgroup.github.io/devdoc/detector.html
    https://slsdetectorgroup.github.io/devdoc/pydetector.html

5 Download, Documentation & Support

Download
--------

The Source Code:
     https://github.com/slsdetectorgroup/slsDetectorPackage
        
Documentation
-------------

Installation:
    https://slsdetectorgroup.github.io/devdoc/installation.html

Quick Start Guide:
    https://slsdetectorgroup.github.io/devdoc/quick_start_guide.html
    
Firmware Upgrade:
    https://slsdetectorgroup.github.io/devdoc/firmware.html

Detector Server upgrade:
    https://slsdetectorgroup.github.io/devdoc/serverupgrade.html

Detector Simulators:
    https://slsdetectorgroup.github.io/devdoc/virtualserver.html

Consuming slsDetectorPackage:
    https://slsdetectorgroup.github.io/devdoc/consuming.html
    
API Examples:
    https://github.com/slsdetectorgroup/api-examples

Command Line Documentation:
    https://slsdetectorgroup.github.io/devdoc/commandline.html

C++ API Documentation:
    https://slsdetectorgroup.github.io/devdoc/detector.html
   
C++ API Example:
    https://slsdetectorgroup.github.io/devdoc/examples.html#
    
Python API Documentation:
    https://slsdetectorgroup.github.io/devdoc/pygettingstarted.html

Python API Example:
    https://slsdetectorgroup.github.io/devdoc/pyexamples.html

Receivers (including custom receiver):
    https://slsdetectorgroup.github.io/devdoc/receivers.html
    https://slsdetectorgroup.github.io/devdoc/slsreceiver.html

Detector UDP Header:
    https://slsdetectorgroup.github.io/devdoc/udpheader.html
    https://slsdetectorgroup.github.io/devdoc/udpdetspec.html

slsReceiver Zmq Format:
    https://slsdetectorgroup.github.io/devdoc/slsreceiver.html#zmq-json-header-format

TroubleShooting:
    https://slsdetectorgroup.github.io/devdoc/troubleshooting.html
    https://slsdetectorgroup.github.io/devdoc/troubleshooting.html#receiver-pc-tuning-options
    
Further Documentation:
    https://www.psi.ch/en/detectors/documentation
    
Info on Releases:
    https://www.psi.ch/en/detectors/software

Bug Fix Release: 8.0.1

16 Jan 14:38
97f0c1f
Compare
Choose a tag to compare

SLS Detector Package Major Release 8.0.1 released on 16.01.2024

This document describes the differences between v8.0.1 and v8.0.0

CONTENTS
--------
1           Resolved Issues
2           On-board Detector Server Compatibility
3           Firmware Requirements
4           Kernel Requirements
5           Download, Documentation & Support

1 Resolved Issues

Compilation
-----------


*   Fixed compilation error when building without zmq-devel installed
    and removed dependency on zeromq in conda build. 


*   Fixed libzmq compilation error to build the package as a submodule.


Calibration
-----------


*   [Moench] Fixed Moench calibration

2 On-board Detector Server Compatibility

Eiger       8.0.0
Jungfrau    8.0.0
Mythen3     8.0.0
Gotthard2   8.0.0
Gotthard    8.0.0
Moench      8.0.0
Ctb         8.0.0


On-board Detector Server Upgrade
--------------------------------

From v6.1.0 (without tftp):
    Using command 'updatedetectorserver'
From 5.0.0 (with tftp):
    Using command 'copydetectorserver'

Instructions available at
    https://slsdetectorgroup.github.io/devdoc/serverupgrade.html

3 Firmware Requirements

Eiger       02.10.2023 (v32)                    (updated in 7.0.3)

Jungfrau    20.09.2023 (v1.5, HW v1.0)          (updated in 8.0.0)
            21.09.2023 (v2.5, HW v2.0)          (updated in 8.0.0)

Mythen3     24.01.2023 (v1.4)                   (updated in 7.0.0)

Gotthard2   23.11.2022 (v0.3)                   (updated in 7.0.0)

Gotthard    08.02.2018 (50um and 25um Master)
            09.02.2018 (25 um Slave) 

Moench      10.07.2023 (v0.3.2)                 (updated in 8.0.0, under development)

Ctb         28.08.2023 (v1.2)                   (updated in 8.0.0)


Detector Upgrade
----------------

The following can be upgraded remotely:

Eiger      via bit files
Jungfrau   via command <.pof>
Mythen3    via command <.rbf>
Gotthard2  via command <.rbf>
Moench     via command <.pof>
Ctb        via command <.pof>

Gotthard cannot be upgraded remotely  

Except Eiger, 
    upgrade 
        Using command 'programfpga' or

    udpate both server and firmware simultaneously
        Using command 'update'


Instructions available at
    https://slsdetectorgroup.github.io/devdoc/firmware.html

4 Kernel Requirements

Blackfin 
--------
Latest version: Fri Oct 29 00:00:00 2021

Older ones will work, but might have issues with programming firmware via
the package.

Nios
-----
Compatible version: Mon May 10 18:00:21 CEST 2021

Kernel Upgrade
---------------
Eiger   via bit files
Others  via command

Commands: udpatekernel, kernelversion
Instructions available at
    https://slsdetectorgroup.github.io/devdoc/commandline.html
    https://slsdetectorgroup.github.io/devdoc/detector.html
    https://slsdetectorgroup.github.io/devdoc/pydetector.html

5 Download, Documentation & Support

Download
--------

The Source Code:
     https://github.com/slsdetectorgroup/slsDetectorPackage
        
Documentation
-------------

Installation:
    https://slsdetectorgroup.github.io/devdoc/installation.html

Quick Start Guide:
    https://slsdetectorgroup.github.io/devdoc/quick_start_guide.html
    
Firmware Upgrade:
    https://slsdetectorgroup.github.io/devdoc/firmware.html

Detector Server upgrade:
    https://slsdetectorgroup.github.io/devdoc/serverupgrade.html

Detector Simulators:
    https://slsdetectorgroup.github.io/devdoc/virtualserver.html

Consuming slsDetectorPackage:
    https://slsdetectorgroup.github.io/devdoc/consuming.html
    
API Examples:
    https://github.com/slsdetectorgroup/api-examples

Command Line Documentation:
    https://slsdetectorgroup.github.io/devdoc/commandline.html

C++ API Documentation:
    https://slsdetectorgroup.github.io/devdoc/detector.html
   
C++ API Example:
    https://slsdetectorgroup.github.io/devdoc/examples.html#
    
Python API Documentation:
    https://slsdetectorgroup.github.io/devdoc/pygettingstarted.html

Python API Example:
    https://slsdetectorgroup.github.io/devdoc/pyexamples.html

Receivers (including custom receiver):
    https://slsdetectorgroup.github.io/devdoc/receivers.html
    https://slsdetectorgroup.github.io/devdoc/slsreceiver.html

Detector UDP Header:
    https://slsdetectorgroup.github.io/devdoc/udpheader.html
    https://slsdetectorgroup.github.io/devdoc/udpdetspec.html

slsReceiver Zmq Format:
    https://slsdetectorgroup.github.io/devdoc/slsreceiver.html#zmq-json-header-format

TroubleShooting:
    https://slsdetectorgroup.github.io/devdoc/troubleshooting.html
    https://slsdetectorgroup.github.io/devdoc/troubleshooting.html#receiver-pc-tuning-options
    
Further Documentation:
    https://www.psi.ch/en/detectors/documentation
    
Info on Releases:
    https://www.psi.ch/en/detectors/software


Support
-------

    [email protected]
    [email protected]

Bug Fix Release: 7.0.3

15 Nov 13:54
Compare
Choose a tag to compare

SLS Detector Package Major Release 7.0.3 released on 14.11.2023

This document describes the differences between v7.0.3 and v7.0.2

CONTENTS
--------
1   Resolved Issues
2   On-board Detector Server Compatibility
3   Firmware Requirements
4   Kernel Requirements
5   Download, Documentation & Support

1 Resolved Issues

Firmware
--------


*   [Eiger] Blocking trigger on quad
    Previously, blocking software trigger on a quad was not blocking. Fixed
    with firmware v32.


Client
------


*   Limit port number max to 65535
    Previously, one could set the port numbers (TCP, UDP, ZMQ) to values 
    higher than 65535 and also to 0. However, it was truncated to 16 bit
    in the background, but not relayed to the user. 
    Now, it will throw if it is 0 or greater than 65535 (16 bit).


*   Stopping acqusition for a single or subset of modules
    The Detector API previously stopped all modules.
    Now, it takes into account which modules the user wanted to stop.


*   [Jungfrau] Stop in sync mode
    When stopping acquisition in sync mode, only the master module sometimes 
    returns 'Idle' state instead of 'Stopped'. The software threw an 
    exception for the different states then.
    Now, it does not throw and a fix will be added to the next firmware 
    release for the different states (with SW release: v8.0.0).


*   [Eiger] Incorrect error message in Stop
    When stopping acquisition, if a half module were to give an error in a 
    rare case while the others succeeded, this would result in an re-attempt 
    to stop 9 more times before throwing an incorrect exception messsage that 
    it could not stop.
    Now, it is handled and will throw an exception of the error status
    immediately.


Receiver
--------


*   Limit TCP port number (command line) to max of 65535
    Refer issue under 'Client'.


Detector Simulator
------------------


*   Limit TCP port number (command line) to max of 65535
    Refer issue under 'Client'.


*   Some commands such as 'readnrows' would complain that it cannot be set 
    because the detector is not idle, but was setting it anyway. Fixed.


Gui/ Client Callback
--------------------


*   [Jungfrau] Gui: corrected color map of gain plot
    Previously, color on the gain plot did not update after the first image, 
    unless there were x/y min/max changes or window resizing. Fixed.


*   [Jungfrau] Acquisition finished callback error status in sync mode
    When stopping acquisition in multi module Jungfrau sync mode, 
    different status (master 'idle' and slaves 'stopped' in 
    firmware 2.4.1 or 1.4.1) show as 'error' in acquisition finished call 
    back (mainly used for gui). This is fixed.


*   [Jungfrau] Gui: Next frame number shown as 0 for inconsistency
    When stopping an acquisition in a multi module Jungfrau, the next 
    frame numbers might be different, for which the Gui shows an error message
    but keeps the number as 0. Now, it is fixed to show -1 for inconsistency 
    and error message shown. So, setting 0 will also prompt an error message
    that 0 is an invalid input.


Data Processing
---------------


*   [Moench] Segmentation fault with moench03RawDataPrcess
    Previously, it crashed when nframes > 0. Fixed.


*   [Moench] Interpolation issues fixed.


*   [Moench] When receiver in discard_partial mode and gets an empty frame,
    it sends a zmq packet with header and no data. This is handled in post
    processing as a temporary solution.

2 On-board Detector Server Compatibility

Eiger       7.0.3
Jungfrau    7.0.3
Mythen3     7.0.3
Gotthard2   7.0.3
Gotthard    7.0.3
Moench      7.0.3
Ctb         7.0.3


On-board Detector Server Upgrade
--------------------------------

From v6.1.0 (without tftp):
    Using command 'updatedetectorserver'
From 5.0.0 (with tftp):
    Using command 'copydetectorserver'

Instructions available at
    https://slsdetectorgroup.github.io/devdoc/serverupgrade.html

3 Firmware Requirements

Eiger       02.10.2023 (v32)                    (updated in 7.0.3)

Jungfrau    16.05.2023 (v1.4.1, HW v1.0)        (updated in 7.0.2)
            15.05.2023 (v2.4.1, HW v2.0)        (updated in 7.0.2)

Mythen3     24.01.2023 (v1.4)                   (updated in 7.0.0)

Gotthard2   23.11.2022 (v0.3)                   (updated in 7.0.0)

Gotthard    08.02.2018 (50um and 25um Master)
            09.02.2018 (25 um Slave) 

Moench      05.12.2022 (v0.3)                   (updated in 7.0.0)

Ctb         05.12.2022 (v1.1)                   (updated in 7.0.0)


Detector Upgrade
----------------

The following can be upgraded remotely:

Eiger      via bit files
Jungfrau   via command <.pof>
Mythen3    via command <.rbf>
Gotthard2  via command <.rbf>
Moench     via command <.pof>
Ctb        via command <.pof>

Gotthard cannot be upgraded remotely  

Except Eiger, 
    upgrade 
        Using command 'programfpga' or

    udpate both server and firmware simultaneously
        Using command 'update'


Instructions available at
    https://slsdetectorgroup.github.io/devdoc/firmware.html

4 Kernel Requirements

Blackfin 
--------
Latest version: Fri Oct 29 00:00:00 2021

Older ones will work, but might have issues with programming firmware via
the package.

Nios
-----
Compatible version: Mon May 10 18:00:21 CEST 2021

Kernel Upgrade
---------------
Eiger   via bit files
Others  via command

Commands: udpatekernel, kernelversion
Instructions available at
    https://slsdetectorgroup.github.io/devdoc/commandline.html
    https://slsdetectorgroup.github.io/devdoc/detector.html
    https://slsdetectorgroup.github.io/devdoc/pydetector.html

5 Download, Documentation & Support

Download
--------

The Source Code:
     https://github.com/slsdetectorgroup/slsDetectorPackage
        
Documentation
-------------

Installation:
    https://slsdetectorgroup.github.io/devdoc/installation.html

Quick Start Guide:
    https://slsdetectorgroup.github.io/devdoc/quick_start_guide.html
    
Firmware Upgrade:
    https://slsdetectorgroup.github.io/devdoc/firmware.html

Detector Server upgrade:
    https://slsdetectorgroup.github.io/devdoc/serverupgrade.html

Detector Simulators:
    https://slsdetectorgroup.github.io/devdoc/virtualserver.html

Consuming slsDetectorPackage:
    https://slsdetectorgroup.github.io/devdoc/consuming.html
    
API Examples:
    https://github.com/slsdetectorgroup/api-examples

Command Line Documentation:
    https://slsdetectorgroup.github.io/devdoc/commandline.html

C++ API Documentation:
    https://slsdetectorgroup.github.io/devdoc/detector.html
   
C++ API Example:
    https://slsdetectorgroup.github.io/devdoc/examples.html#
    
Python API Documentation:
    https://slsdetectorgroup.github.io/devdoc/pygettingstarted.html

Python API Example:
    https://slsdetectorgroup.github.io/devdoc/pyexamples.html

Receivers (including custom receiver):
    https://slsdetectorgroup.github.io/devdoc/receivers.html
    https://slsdetectorgroup.github.io/devdoc/slsreceiver.html

Detector UDP Header:
    https://slsdetectorgroup.github.io/devdoc/udpheader.html
    https://slsdetectorgroup.github.io/devdoc/udpdetspec.html

slsReceiver Zmq Format:
    https://slsdetectorgroup.github.io/devdoc/slsreceiver.html#zmq-json-header-format

TroubleShooting:
    https://slsdetectorgroup.github.io/devdoc/troubleshooting.html
    https://slsdetectorgroup.github.io/devdoc/troubleshooting.html#receiver-pc-tuning-options
    
Further Documentation:
    https://www.psi.ch/en/detectors/documentation
    
Info on Releases:
    https://www.psi.ch/en/detectors/software


Support
-------

    [email protected]
    [email protected]

Major Release: 8.0.0

15 Nov 13:55
Compare
Choose a tag to compare

SLS Detector Package Major Release 8.0.0 released on 13.11.2023

This document describes the differences between v8.0.0 and v7.0.3

CONTENTS
--------
1           Compilation Changes
2           New or Changed Features
    2.1         Breaking API
    2.2         Resolved or Changed Features
    2.3         New Features
3           On-board Detector Server Compatibility
4           Firmware Requirements
5           Kernel Requirements
6           Download, Documentation & Support

2 Compilation Changes

*   Minimum CMake version changed from 3.12 to 3.14


*   Internal zmq lib
    Building zmq from tar file in repo (libs/libzmq/libzmq-4.3.4.tar.gz), 
    but added option (SLS_FETCH_ZMQ_FROM_GITHUB) to pull zmq version (v4.3.4) 
    from github (https://github.com/zeromq/libzmq.git)


*   Internal pybind11 lib
    Building pybind11 from tar file in repo (libs/pybind11/v2.11.0.tar.gz), 
    but added option (SLS_FETCH_PYBIND11_FROM_GITHUB) to pull pybind11 version 
    (v2.11.0) from github (https://github.com/pybind/pybind11)        

2 New, Changed or Resolved Features

2.1 Breaking API

Firmware
--------

*   [Jungfrau] Status register and Sync mode fix
    The regiser bit definition changed and fixes for stable control in sync mode.
    Effect: Master and slaves give same status (previously master is sometimes 'idle' 
    when acquisition is stopped), same #frames left and #nextframenumber.
    Also ERROR status connected, but never noticed to occur.

    For user, everything is transparent unless one touches status register
    using advanced commands. 


*   [Moench] Status: Development mode
    Moench is now being made compatible with Jungfrau v2.0 readout boards. 
    Hence, firmware and software is in development mode. 
    7.x.x will continue to have fixes for Moench until this version is deployed.


*   [Ctb] Fixes and features described later on.


Client
======


*   Datatype change of port numbers from int to uint16_t   
    API: setVirtualDetectorServers, 
    get/setRxPort, get/setControlPort, get/setStopPort,
    get/setDestinationUDPPort(2), get/setRxZmqPort, get/setClientZmqPort


*   [Eiger] versions, hardware version, febl/r firmware version 
    Versions command modified to give more info about hardware version
    ['fx30', 'fx70'] and Febl/r firmware versions.
    Command line: versions (output modified), hardwareversion (added for Eiger)
    API added for Eiger: getHardwareVersion, getFrontEndFirmwareVersion
    Enums added: fpgaPosition {FRONT_LEFT, FRONT_RIGHT}


*   [Ctb] Voltage->Power name change
    Command line: voltagelist ->powerlist
    API: get/setVoltage -> get/setPower, get/setVoltageList -> get/setPowerList,
    getMeasuredVoltage -> getMeasuredPower

2.2 Resolved or Changed Features

Detector Server
---------------


*   Set bit and clear bit validation
    Previously, validation expected all the other bits in the register to 
    not change. Now, it only validates the selected bit.


*   [Jungfrau] Electron collection mode (bit 14 of 0x5D register)
    Affected Command line: setbit, clearbit, reg
    Affected API: setBit, clearBit, writeRegister
    Electron collection mode and requires chip reconfiguration. 
    Temporary fix added that touching this bit will reconfigure chip if chip 
    is v1.1 and powered on. Permanent fix by introducing a command for the 
    same in future release.


*   [Ctb] Fixes

    -   Patioctrl, patsetbit, patbitmask
        MSB (64 bit unsigned) could not be set as a value of -1 was interpreted 
        as a 'get'. Fixed in server. 

    -   Allow dac tristate when v_limit is set. Fixed.

    -   Changing fw bit from disable analog to enable analog

    -   Allow adc enable for 1 GbE and 10GbE to be 0.

    -   Slow ADCs previously misread (a high 5k+ value). Firmware updated 
        and software adjusted now.

    -   Allow non blocking acquire for 1GbE. Added Transmitting status when it
        might still be reading from fifo.

    -   Clean memory before reading from fifo in 1GbE mode. Read fifo then
        RD strobe (corresponding firmware fix) fixes number of reads, but 
        increases all pipelines by 1.
    
    -   Fixed pattern viewer (auto legend buf without wait and loop), allow 
        pyat files. (/patterngenerator)


Simulator
---------


*   Unique TCP port for multiple simulators
    Checks include unique TCP port-hostname combo.


Receiver
--------


*   Unique TCP port for multiple receivers
    7.x.x already has automatically increasing TCP ports in shared memory 
    for multiple receivers. Now, checks include unique TCP port-hostname 
    combo.


*   [Ctb] Fixes

    -   Readout mode updated
        'rx_hostname' should configure the receiver with parameters from detector,
        but readout mode in receiver always configured at start up to Analog only. 
        Fixed.

    -   Incorrect image size in zmq header, which happens when dbit list is 
        less than 64 bits. Fixed.

    -   Rearranging digital data when dbit list less than 64 bits fixed.


Client
------


*   [Jungfrau][Mythen3][Gotthard2] Sync mode should have at least one master
    Multi module synced detectors should have at least one master when 
    starting acquisition, else it will throw. Once master is done acquiring
    (blocking mode), status of all modules checked to ensure none of the 
    slaves in waiting due to hardware issues such as cabling.

2.3 New Features

Client
------


*   [Jungfrau] Pedestal mode
    Command line: pedestalmode
    API: get/setPedestalMode
    Example: 
        pedestalmode 0 # turns off pedestal mode
        pedestalmode 50 10 # turns on pedestal mode (50 pedestal frames, 10 loops)
    
    In pedestal mode, number of frames/triggers
    is overwritten by '#pedestal_frames x #pedestal_loops x 2'.
    In auto timing mode or trigger mode with #frames > 1, #frames is overwritten
    with #triggers is 1. Otherwise, #triggers is overwritten with #frames is 1.
    In pedestal mode, one cannot set #frames, #triggers or timing mode (exception).

    Disabling pedestal mode will set back to normal mode with normal previous
    values of #frames and #triggers.


*   Source UDP IP: Auto
    Command line: udp_srcip, udp_srcip2
    API: get/setSourceUDPIP(2)
    Allow 'auto' for udp_srcip to pick up IP from detector hostname. Not allowed
    for Gotthard1.


*   Custom row and column for detector UDP header
    Command line: row, column
    API: get/setRow, get/setColumn
    By default, row and column of module is determined in a pre-determined 
    manner or by custom detector size (Command line: detsize).
    This is useful if user accesses row and column in multi- detector UDP header 
    or for the GUI to rearrange for complete image.
    Option now added to set custom row and column. 


*   [Ctb] Features

    -   List for ADC, signal, power, slowadc 
        Also allow their list to set names and to obtain their indices and values.

        Command line: dacname, dacindex, 
        adclist, adcname, adcindex, 
        signallist, signalname,signalindex, 
        powerlist, powername, powerindex, powervalues,
        slowadclist, slowadcname, slowadcindex, slowadcvalues

        API: get/setDacName, getDacIndex, 
        get/setAdcNames, getAdcIndex, get/setAdcName,
        get/setSignalNames, getSignalIndex, get/setSignalName,
        get/setPowerNames, getPowerIndex, get/setPowerName, getPowerList,
        get/setSlowADCNames, getSlowADCIndex, get/setSlowADCName, getSlowADCList

    -   Added more modes for transceiver in read out mode.
        Allow to set number of samples and enable mask for transceiver.

        Command line: romode (more modes: 'transceiver', 'digital_transceiver'),
        tsamples, transceiverenable
        API: get/setTransceiverEnableMask, get/setNumberOfTransceiverSamples,
        get/setReadoutMode (more enums: TRANSCEIVER_ONLY, DIGITAL_AND_TRANSCEIVER)


    -   Command to get file name with path of last pattern uploaded.
        Command line: patfname
        API: getPatterFileName


*   Automatic test script for all virtual simulators added.

2 On-board Detector Server Compatibility

Eiger       8.0.0
Jungfrau    8.0.0
Mythen3     8.0.0
Gotthard2   8.0.0
Gotthard    8.0.0
Moench      8.0.0
Ctb         8.0.0


On-board Detector Server Upgrade
--------------------------------

From v6.1.0 (without tftp):
    Using command 'updatedetectorserver'
From 5.0.0 (with tftp):
    Using command 'copydetectorserver'

Instructions available at
    https://slsdetectorgroup.github.io/devdoc/serverupgrade.html

3 Firmware Requirements

Eiger       02.10.2023 (v32)                    (updated in 7.0.3)

Jungfrau    20.09...
Read more

Bug Fix Release: 7.0.2

12 Jul 14:58
Compare
Choose a tag to compare
CONTENTS
--------
1   Resolved Issues
2   On-board Detector Server Compatibility
3   Firmware Requirements
4   Kernel Requirements
5   Download, Documentation & Support

1 Resolved Issues

Firmware
--------

*   [Jungfrau] Stopping acquisition in sync mode
    Previously, stopping acquisition in sync mode would result in the slave
    status remaining in Running status for next acquisition and framesl (frames
    left) would be stuck from the previous acquisition. This is fixed in firmware.



Detector Server
---------------

*   [Jungfrau] Changing master to slave in sync mode
    When in sync mode, changing from master to slave would change the status
    to Running in firmware. A workaround in the detector server fixes this.

*   [Jungfrau] Row and column for multi module Jungfrau 
    This mainly affected only the GUI, unless one was using the row and column
    sent out by the detector. Row and column values were mixed up, but fixed now.

*   [Jungfrau] Timing in sync mode
    When sync is enabled, setting or getting timing would give an error. This 
    is fixed now.


Client
------

*   [Jungfrau] Multi module sync mode
    For start, stop and trigger acquisition, the procedure to start the slaves
    (or the master for stop acquisition) first had to be obeyed. This is fixed
    now.


ZMQ
---

*   [Jungfrau][Gotthard2] Client ZMQ port when using 2 interfaces
    When switching between 1 and 2 interfaces, the client or gui zmq port
    was not set properly and resulted in dummy streaming forever. This is
    fixed now.

*   Rx_roi
    This parameter is now also streamed in the zmq header to be able to use in 
    external GUIs.


GUI
---

*   [Jungfrau] Show Fix_G0 in expert mode
    Fix_G0 was only shown when expert mode was enabled from Settings Tab. Now, 
    fixed to show when expert mode enabled from any tab.

2 On-board Detector Server Compatibility

Eiger       7.0.0
Jungfrau    7.0.2
Mythen3     7.0.0
Gotthard2   7.0.0
Gotthard    7.0.0
Moench      7.0.0
Ctb         7.0.0


On-board Detector Server Upgrade
--------------------------------

From v6.1.0 (without tftp):
    Using command 'updatedetectorserver'
From 5.0.0 (with tftp):
    Using command 'copydetectorserver'

Instructions available at
    https://slsdetectorgroup.github.io/devdoc/serverupgrade.html

3 Firmware Requirements

Eiger       20.02.2023 (v31)

Jungfrau    16.05.2023 (v1.4.1, HW v1.0) 
            15.05.2023 (v2.4.1, HW v2.0)

Mythen3     24.01.2023 (v1.4)

Gotthard2   23.11.2022 (v0.3)

Gotthard    08.02.2018 (50um and 25um Master)
            09.02.2018 (25 um Slave) 

Moench      05.12.2022 (v0.3)

Ctb         05.12.2022 (v1.1)


Detector Upgrade
----------------

The following can be upgraded remotely:

Eiger      via bit files
Jungfrau   via command <.pof>
Mythen3    via command <.rbf>
Gotthard2  via command <.rbf>
Moench     via command <.pof>
Ctb        via command <.pof>

Gotthard cannot be upgraded remotely  

Except Eiger, 
    upgrade 
        Using command 'programfpga' or

    udpate both server and firmware simultaneously
        Using command 'update'


Instructions available at
    https://slsdetectorgroup.github.io/devdoc/firmware.html

4 Kernel Requirements

Blackfin 
--------
Latest version: Fri Oct 29 00:00:00 2021

Older ones will work, but might have issues with programming firmware via
the package.

Nios
-----
Compatible version: Mon May 10 18:00:21 CEST 2021

Kernel Upgrade
---------------
Eiger   via bit files
Others  via command

Commands: udpatekernel, kernelversion
Instructions available at
    https://slsdetectorgroup.github.io/devdoc/commandline.html
    https://slsdetectorgroup.github.io/devdoc/detector.html
    https://slsdetectorgroup.github.io/devdoc/pydetector.html

Bug Fix Release: 7.0.1

24 Mar 15:16
Compare
Choose a tag to compare
CONTENTS
--------
1   Resolved Issues
2   On-board Detector Server Compatibility
3   Firmware Requirements
4   Kernel Requirements
5   Download, Documentation & Support

1 Resolved Issues

Receiver
--------


*   HDF5 Compilation
    Compilation issues from 7.0.0 fixed.


*   Arping error
    Cmdline: rx_arping
    API: setRxArping/ getRxArping
    Even if arping was successful, it gave an error. Fixed.



Client
------


*   Detector Server Version from previous Releases
    Hostname command would hang with 7.0.0 client if the detector server
    was from a previous release (eg. 6.1.2). In this case, the user cannot
    get the detector server version.
    
    Fixed that the hostname command will throw an exception about 
    incompatible server with its version in the message. Now, the user can 
    get the version number without having to telnet or ssh to the detector.
    With this info, one can then update to matching client for that server
    and start the detector updation process.

2 On-board Detector Server Compatibility

Eiger       7.0.0
Jungfrau    7.0.0
Mythen3     7.0.0
Gotthard2   7.0.0
Gotthard    7.0.0
Moench      7.0.0
Ctb         7.0.0


On-board Detector Server Upgrade
--------------------------------

From v6.1.0 (without tftp):
    Using command 'updatedetectorserver'
From 5.0.0 (with tftp):
    Using command 'copydetectorserver'

Instructions available at
    https://slsdetectorgroup.github.io/devdoc/serverupgrade.html

3 Firmware Requirements

Eiger       20.02.2023 (v31)

Jungfrau    04.11.2022 (v1.4, HW v1.0) 
            03.11.2022 (v2.4, HW v2.0)

Mythen3     24.01.2023 (v1.4)

Gotthard2   23.11.2022 (v0.3)

Gotthard    08.02.2018 (50um and 25um Master)
            09.02.2018 (25 um Slave) 

Moench      05.12.2022 (v0.3)

Ctb         05.12.2022 (v1.1)


Detector Upgrade
----------------

The following can be upgraded remotely:

Eiger      via bit files
Jungfrau   via command <.pof>
Mythen3    via command <.rbf>
Gotthard2  via command <.rbf>
Moench     via command <.pof>
Ctb        via command <.pof>

Gotthard cannot be upgraded remotely  

Except Eiger, 
    upgrade 
        Using command 'programfpga' or

    udpate both server and firmware simultaneously
        Using command 'update'


Instructions available at
    https://slsdetectorgroup.github.io/devdoc/firmware.html

4 Kernel Requirements

Blackfin 
--------
Latest version: Fri Oct 29 00:00:00 2021

Older ones will work, but might have issues with programming firmware via
the package.

Nios
-----
Compatible version: Mon May 10 18:00:21 CEST 2021

Kernel Upgrade
---------------
Eiger   via bit files
Others  via command

Commands: udpatekernel, kernelversion
Instructions available at
    https://slsdetectorgroup.github.io/devdoc/commandline.html
    https://slsdetectorgroup.github.io/devdoc/detector.html
    https://slsdetectorgroup.github.io/devdoc/pydetector.html

Major Release: 7.0.0

24 Feb 13:32
Compare
Choose a tag to compare
CONTENTS
--------
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
    1.8     Gui
2           On-board Detector Server Compatibility
3           Firmware Requirements
4           Kernel Requirements
5           Download, Documentation & Support

1 New, Changed or Resolved Features

1.1 Compilation

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 
    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



Gui:
----


*   Qt5 and in-built compressed Qwt 6.1.5
    Ported from Qt4 to Qt5. Minimum requirement: Qt 5.9
    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 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
    Removed conda packages for python 3.6 and 3.7. Added for python 3.11.

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

*   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.


*   Defines in sls_detector_defs
    sls_detetor_defs parsed and #defines extracted into defines.py
    For exmaple, one can use slsdet.LOCALHOST_IP


*   Concatenated hostnames
    Hostnames concatenated using '+' was not split up in Python API. Fixed.


*   Added many commands to python API

1.4 Client

Breaking API:
-------------


*   Versioning
    The client, receiver and detector servers now have semantic Versioning
    along with the date and are managed with the Version class.

    --version argument to the executable gives the complete versioning with date.

    Using the client to get versions gives only the semantic version. An older
    server will still give date. Hence, the return type is a string, breaking API.

    Compatibility checks at hostname or rx_hostname command will only be for
    backwards compatibility (ie. it only checks for the major version number).
    If its an old server, then its expected to have the exact same date (as
    before)

    Setting intitialchecks to 0 also bypasses the receiver compatibility check.


*   Detector Specific fields
    bunchid ->detSpec1
    reserved->detSpec2
    debug->detSpec3
    roundRnumber->detSpec4

    Header version number stays the same in the UDP header as there is no
    difference in the format from the detector. Only the structure memeber names
    have changed in sls_detector_defs.h

    Further details about each detector specific field can be found at:
    https://slsdetectorgroup.github.io/devdoc/udpdetspec.html


*   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
    Command line: numinterfaces, API: getNumberofUDPInterfaces
    This command now reflects the actual number of udp interfaces for Eiger,
    which is 2.


*   [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
    txndelay_frame -> txdelay_frame
    txndelay_left -> txdelay_left
    txndelay_right -> txdelay_right


*   [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
    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.


*   [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. 

    Old commands work with warning, but the server expects the new ones
    such as a default pattern file to be loaded at startup for Moench.

    Renamed patternParameters struct member from 'loop' to 'startloop' and 
    'stoploop'.


*   [Mythen3] Clock Divider 4 and 5
    Cannot be set anymore. Only read back.



New commands:
-------------


*   [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.
    
    This can also be set up on the detector server. Please refer to notes
    on that section.


*   [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. Please refer to notes
    on that section.


*   [Mythen3][Eiger] Save settings file
    Command line: trimbits (sls_detector_get), API: saveTrimbits
    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
    Command line: trigger, API: sendSoftwareTrigger
    Send software trigger instead of harware 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

...

Read more

Major Release Candidate: 7.0.0.rc1

12 Dec 11:47
Compare
Choose a tag to compare
Pre-release
  1. New or Changed Features

1.1. Compilation

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 
    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



Gui:


*   Qt5 and in-built compressed Qwt 6.1.5
    Ported from Qt4 to Qt5. Minimum requirement: Qt 5.9
    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 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
    Removed conda packages for python 3.6 and 3.7. Added for python 3.11.

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.

    A get using API now returns in DurationWrapper, instead of datetime.
    Refer exptime help for examples.

1.4. Client

Breaking API:


*   Versioning
    The client, receiver and detector servers now have semantic Versioning
    along with the date and are managed with the Version class.

    --version argument to the executable gives the complete versioning with date.

    Using the client to get versions gives only the semantic version. An older
    server will still give date. Hence, the return type is a string, breaking API.

    Compatibility checks at hostname or rx_hostname command will only be for
    backwards compatibility (ie. it only checks for the major version number).
    If its an old server, then its expected to have the exact same date (as
    before)

    Setting intitialchecks to 0 also bypasses the receiver compatibility check.


*   Detector Specific fields
    bunchid ->detSpec1
    reserved->detSpec2
    debug->detSpec3
    roundRnumber->detSpec4

    Header version number stays the same in the UDP header as there is no
    difference in the format from the detector. Only the structure memeber names
    have changed in sls_detector_defs.h

    Further details about each detector specific field can be found at:
    https://slsdetectorgroup.github.io/devdoc/udpdetspec.html


*   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
    Command line: numinterfaces, API: getNumberofUDPInterfaces
    This command now reflects the actual number of udp interfaces for Eiger,
    which is 2.


*   [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
    txndelay_frame -> txdelay_frame
    txndelay_left -> txdelay_left
    txndelay_right -> txdelay_right


*   [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
    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.


*   [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. 

    Old commands work with warning, but the server expects the new ones
    such as a default pattern file to be loaded at startup for Moench.

    Renamed patternParameters struct member from 'loop' to 'startloop' and 
    'stoploop'.


*   [Mythen3] Clock Divider 4 and 5
    Cannot be set anymore. Only read back.



New commands:


*   [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.
    
    This can also be set up on the detector server. Please refer to notes
    on that section.


*   [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. Please refer to notes
    on that section.


*   [Mythen3][Eiger] Save settings file
    Command line: trimbits (sls_detector_get), API: saveTrimbits
    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
    Command line: trigger, API: sendSoftwareTrigger
    Send software trigger instead of harware 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
    Command line: sync, API: getSynchronization/ setSynchronization
    Enables or disables synchronization between modules


*   [Gotthard2][Mythen3] Temperature readout
    Command line: temp_fpga, API: getTemperature with TEMPERATURE_FPGA enum
    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
    Command line: moduleid, API: getModuleId
    16 bit value (ideally unique) that is streamed out in the udp header of 
    the detector. The on-board det...
Read more

Bug Fix Release: 6.1.2

25 Nov 15:17
Compare
Choose a tag to compare
  1. Resolved Issues
    ==================

    Detector Server

    1. [Jungfrau, Moench, Ctb]
      Programming Firmware
      Updating kernel was not enough to ensure seamless programming of FPGA.
      nCe signal now made high before programming blackfin.

      Updating the on-board detector server to this version is recommended
      before updating firmware for future releases.

      Also removed the unnecessary test to check if it is allowed to update
      kernel or on-board detector server, depending on the current kernel
      version.

    2. [Eiger] locking for start and stop
      Since the start and stop has a few commands within the server itself,
      they are locked to ensure they dont disturb the other to have undefined
      behavior.

    3. [Eiger] Quad Trimbits or threshold
      Loading trimbits or setting threshold will throw an incorrect exception
      for a quad as the left and right register values will not match. The fix
      only sets and monitors right fpga for chip trim signals in quad.

    4. [Eiger] Minor refactoring
      Inconsistent reads between left and right register for read/write
      register commands now give clear error messages.

      Fixed some minor functions returned empty error messages when failing.

    Client

    1. [Eiger] Stop command freezes server
      It is apparent in large detectors.

      For example, if module A got a "stop" during an acquisition,
      it stops to an 'Idle' state. If module B gets a "stop" before an
      acquisition, it will return it is in 'Idle' state and continue
      to start the next acquisition, but module B then waits for "ready
      for trigger" synchronization from module A, which it will never get.

      Since module B missed the asynchronous stop command, the workaround
      in the client is to send another "stop" command (upto 10 retries)
      till it returns Idle.

    2. [Eiger][Jungfrau][Moench][Ctb]
      Stop results in different frame numbers
      A "stop" command will also now check for inconsistent 'nextframenumber'
      between the modules and set it to the max + 1 to ensure that they
      all start with the same frame number for the next acquisition.

    Python

    1. Conda package
      Removed conda pkgs for python 3.6 and 3.7
      Added conda pkgs for python 3.11

    2. Pybind11
      Updated pybind11 from 2.6.2 to 2.10.11

    Test

    1. Updated catch to latest 2.x version due do build failure on fedora