Skip to content
Snippets Groups Projects
Commit 6a69b0e8 authored by Stefano Di Frischia's avatar Stefano Di Frischia
Browse files

Merge branch 'master' into L2SS-480-delays-to-beam-weights

parents 60230273 087f29ca
Branches
Tags
1 merge request!220Resolve L2SS-480 "Delays to beam weights"
Subproject commit dddb23ff587f6e9c837cdb77e7955e94272eca6f Subproject commit 6e48f0fddf5541bc66d9f57e31297c0027ea97b7
...@@ -62,6 +62,8 @@ Waveform Generator ...@@ -62,6 +62,8 @@ Waveform Generator
The antenna input of SDP can be replaced by an internal waveform generator for debugging and testing purposes. The generator is configured per antenna per FPGA: The antenna input of SDP can be replaced by an internal waveform generator for debugging and testing purposes. The generator is configured per antenna per FPGA:
.. note:: The Waveform Generator needs to be toggled off and on using ``FPGA_wg_enable_RW`` for new settings to become active on the station.
:FPGA_wg_enable_RW: Whether the waveform generator is enabled for each input. :FPGA_wg_enable_RW: Whether the waveform generator is enabled for each input.
:type: ``bool[N_fpgas][N_ants_per_fpga]`` :type: ``bool[N_fpgas][N_ants_per_fpga]``
...@@ -91,5 +93,6 @@ For example, the following code inserts a wave on LBA subband 102 on FPGAs 8 - 1 ...@@ -91,5 +93,6 @@ For example, the following code inserts a wave on LBA subband 102 on FPGAs 8 - 1
sdp.FPGA_wg_amplitude_RW = [[0.1] * 12] * 16 sdp.FPGA_wg_amplitude_RW = [[0.1] * 12] * 16
sdp.FPGA_wg_frequency_RW = [[102 * 200e6/1024] * 12] * 16 sdp.FPGA_wg_frequency_RW = [[102 * 200e6/1024] * 12] * 16
# enable waveform generator # toggle and enable waveform generator
sdp.FPGA_wg_enable_RW = [[False] * 12] * 16
sdp.FPGA_wg_enable_RW = [[True] * 12] * 16 sdp.FPGA_wg_enable_RW = [[True] * 12] * 16
...@@ -8,6 +8,8 @@ The statistics are exposed in two ways, as: ...@@ -8,6 +8,8 @@ The statistics are exposed in two ways, as:
- *Attributes*, representing the most recently received values, - *Attributes*, representing the most recently received values,
- *TCP stream*, to allow the capture and recording of the statistics over any period of time. - *TCP stream*, to allow the capture and recording of the statistics over any period of time.
If the statistics are not received or zero, see :ref:`statistics-debugging`.
See the following links for a full description of the SST and XST monitoring and control points: See the following links for a full description of the SST and XST monitoring and control points:
- https://support.astron.nl/confluence/pages/viewpage.action?spaceKey=L2M&title=L2+STAT+Decision%3A+SC+-+SDP+OPC-UA+interface - https://support.astron.nl/confluence/pages/viewpage.action?spaceKey=L2M&title=L2+STAT+Decision%3A+SC+-+SDP+OPC-UA+interface
...@@ -76,6 +78,25 @@ Conversely, to calculate the block index for an antenna pair ``(a,b)``, use:: ...@@ -76,6 +78,25 @@ Conversely, to calculate the block index for an antenna pair ``(a,b)``, use::
def block_nr(a: int, b: int) -> int: def block_nr(a: int, b: int) -> int:
return baseline_index(a // 12, b // 12) return baseline_index(a // 12, b // 12)
Configuring the XSTs
`````````````````````````````
The XSTs can be configured with several settings:
.. note:: The XST processing needs to be toggled off and on using ``FPGA_xst_processing_enable_RW`` for new settings to become active on the station.
:FPGA_xst_processing_enable_RW: Whether XSTs are computed on each FPGA.
:type: ``bool[N_fpgas]``
:FPGA_xst_integration_interval_RW: The time interval to integrate over, per FPGA, in seconds.
:type: ``float[N_fpgas]``
:FPGA_xst_subband_select_RW: The subband to cross correlate, per FPGA. Note: only the entries ``[x][1]`` should be set, the rest should be zero.
:type: ``uint32[N_fpgas][8]``
Subscribe to statistics streams Subscribe to statistics streams
--------------------------------- ---------------------------------
......
...@@ -147,6 +147,17 @@ Let's see where the packets get stuck. Let us assume your MTU=9000 network inter ...@@ -147,6 +147,17 @@ Let's see where the packets get stuck. Let us assume your MTU=9000 network inter
- If still on error was found, you've likely hit a bug in our software. - If still on error was found, you've likely hit a bug in our software.
Inspecting SST/XST packets
``````````````````````````````````````````````````````````````````````````````````````````````````````````````
The fields ``sst.last_packet_R`` and ``xst.last_packet_R`` contain a raw dump of the last received packet for that statistic. Parsing these packets is aided greatly by using our packet parser::
from tangostationcontrol.devices.sdp.statistics_packet import SSTPacket, XSTPacket
# print the headers of the last received packets
print(SSTPacket(bytes(sst.last_packet_R)).header())
print(XSTPacket(bytes(xst.last_packet_R)).header())
Other containers Other containers
-------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------
......
...@@ -125,6 +125,9 @@ def configure_logger(logger: logging.Logger=None, log_extra=None, debug=False): ...@@ -125,6 +125,9 @@ def configure_logger(logger: logging.Logger=None, log_extra=None, debug=False):
# don't spam errors for git, as we use it in our log handler, which would result in an infinite loop # don't spam errors for git, as we use it in our log handler, which would result in an infinite loop
logging.getLogger("git").setLevel(logging.ERROR) logging.getLogger("git").setLevel(logging.ERROR)
# don't spam debug messages when fetching URLs
logging.getLogger("urllib3").setLevel(logging.INFO)
# for now, also log to stderr # for now, also log to stderr
# Set up logging in a way that it can be understood by a human reader, be # Set up logging in a way that it can be understood by a human reader, be
# easily grep'ed, be parsed with a couple of shell commands and # easily grep'ed, be parsed with a couple of shell commands and
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment