# Version History This list is in reverse-chronological order (the latest change is at the top). Different heading levels are used for Major, Minor, and Patch releases - in Markdown syntax, that's `#` for Major, `##` for Minor, and `###` for Patch. # Unreleased * Add better handling for Tango events that arrive right after attribute change subscription call * Add `Subarray.pstJonesAppliedPercent` Tango attribute indicating what percentage of PST Jones applied (Not yet ready). * Add `Subarray.pssJonesAppliedPercent` Tango attribute indicating what percentage of PSS Jones applied (Not yet ready). * Add `Subarray.pstJonesAge` Tango attribute indicating the age of applied PST Jones matrices (Not yet ready). * Add `Subarray.pssJonesAge` Tango attribute indicating the age of applied PSS Jones matrices (Not yet ready). ## 2.3.0 * Add attributes reporting SPS statistics (RMS levels, flagging percentage). Requires latest processor software, otherwise will crash trying to access attributes only available in the latest processor. Processor software needed will be version 0.22.0 when it's released. * Increase Tango timeout from 3 to 10 seconds for Subarray's Processor proxies * ADR-111 compliance with following quality attributes: * `spsLinkUpPercent` in the controller representing the percentage of SPS links up. * `sdpHostsResolvedPercent` in the subarray representing the percentage of PSS hosts resolved. * `pstHostsResolvedPercent` in the subarray representing the percentage of PST hosts resolved. * `sdpHostsResolvedPercent` in the subarray representing the percentage of SDP hosts resolved. * Add `Subarray.processorsReadyPercent` Tango attribute indicating what percentage of processors are ready for subarray scan. * Add `Subarray.processorEthernetLockedPercent` Tango attribute indicating what percentage of Ethernet ports are locked and ready for subarray scan. ### 2.2.2 * For LowCbfSubarray and LowCbfController enable health reporting when in ENGINEERING mode - use Connector Tango DB when getting DeviceProxy for Connector device - allign LowCbfController health calculation with that of Processor and Subarray - report `HealthState.UNKNOWN` when in OFFLINE, NOT_FITTED and RESERVED `adminMode` - relevant Jira issues [SKB-1037](https://jira.skatelescope.org/browse/SKB-1037) [PERENTIE-3193](https://jira.skatelescope.org/browse/PERENTIE-3193) ### 2.2.1 * fix skb-1082 (allocator crash with PST+VIS config and no firmware) * [SKB-1085](https://jira.skatelescope.org/browse/SKB-1085) (also Jira [PERENTIE-3191](https://jira.skatelescope.org/browse/PERENTIE-3191)) flag `delaysValid` Tango attribute value as UNUSED (value of 2) once the subarray is deconfigured # 2.2.0 * New subarray-config item "sps_rfi_threshold_db" supported * Fix SKB-1049 in which PSS routing does not function as expected # 2.1.0 * New Realtime calibration emulator (used for perentie tests of PST Jones updates) # 2.0.0 * Change Allocator's internal_alveo attribute format. The "fw" value is now a dictionary with "personality" and "url" keys. ### 1.0.4 * Allocate PSS in blocks of 4 stations because FPGA works in 4-station blocks (SKB-817) * Update `ska-tango-base` and `ska-tango-util` chart dependencies to `~0.4.23` ### 1.0.3 * remove allocator.stationbeams attr and make subarray.stationbeams function (skb-940) * remove some restrictions on multiple host destinations for correlator ### 1.0.2 * [Jira PERENTIE-3117](https://jira.skatelescope.org/browse/PERENTIE-3117) separate thread to process Tango events in Subarray device ### 1.0.1 * Fix SKB-964 PST routes not configured for some beam frequencies # 1.0.0 * Container image based on ska-tango-images-tango-python:0.3.0 (was previously ska-tango-images-pytango-runtime:9.5.0) * Update to Tango v10 * allocator is now updating 2 new attributes: * switch_routes, containing the list of IP routing * ip_to_resolve, containing the list of IP address to resolve with ARP * Relax SPS channel restriction for station beams. Now accepts 0–511, with a warning message if outside the expected range of 64–447. * Relax frequency restriction for coarse zooms. Now accepts 0 - top of SPS channel 511, with a warning if outside SPS channel 64–447. * Deprecation notice: Allocator attribute `sdp_routes` ## 0.14.0 * BREAKING change: Support for Zoom correlation by extending Allocator and Subarray devices. This change also extends the Allocator-Processor interface with extra data related to zoom correlation. Requires updated Processor to read the extra info: old processor will log a crash if used. * fix Allocator crash in no-hardware mode ### 0.13.3 * Fix alveo auto-registration crash when using no-processor-hardware mode for SW testing ### 0.13.2 * Flag allocator.internalAlveoLimit attribute as READ_WRITE ### 0.13.1 * Reformat Tango attributes which Sphinx documetation generator finds hard to parse - replace `attr_name = attribute(...)` with `@attribute(...)` - replace `@attribute.write` with `def write_attrName` * Allow Delay Device reconfiguration without emptying Subarray first ## 0.13.0 * `LowCbfController._unavaliable_alveos` didn't corectly update once Alveos were made available; condition variable lock was held too long which lead to deadlock when multiple Alveos got registered with Allocator in a quick succession. * Suppress "missing subarray id" log messages when processing `internal_alveo` updates that contain empty register dictionaries (e.g. PST when only one pipeline configured) * Prevent unnecessary Allocator & Connector attribute subscription if subscribed already * `healthState` updated only when `adminMode` is **ONLINE** or **ENGINEERING** (see also `ENGINEERING_MODE_IGNORE_HEALTH`) * add `ENGINEERING_MODE_IGNORE_HEALTH` environment variable; when set to 'True' the health state won't propagate to Low CBF Controller * Add `assigned_processors` Tango attribute to `LowCbfSubarray` device ## 0.12.0 * Controller device exposes two new Tango attributes: `all_alveos` and `available_alveos`; updated Taranta dashboard `Low CBF Controller - Status.wj` * Remove FSPs from allocator. Deprecate FSPs in subarray configure command * Update Taranta dashboards that allow setting subarray and processor `adminMode` to ENGINEERING. * Add tool to calculate Alveo usage by any proposed subarray configuration (see src/allocator/extimation_tool.py) ## 0.11.1 * Add `cbf.telmodel_source_uri` Helm variable, mapped to new `DelayDevice` Tango property `TelmodelSourceURI` * Delay-poly simulator changed to publish station-beam delays last. This means PSS/PST test output will begin with both validity flags "valid" for large numbers of stations. Note: For large numbers of stations, katpoint takes significant time to calculate delays. Expect delay-poly attributes to update slowly. * ObsState behaviour no longer rejects subarray.Configure() commands when a subarray is already configured (in ObsState.READY) * Apply known FPGA allocation limits by default. * Add new FPGA limit for PST number of channels (to work around PST FPGA 2k entry first-frequency table with 16 entries used per channel 2k/16 = 128 SPS chans max) ## 0.11.0 * Avoid Allocator crash when using no Processors, by using a dummy tango device URI when auto-registering processors * Make Allocator per-personality limits adjustable via tango attribute * DelayDevice: Add `ypol_offset_ns` attribute * Update to pytango 9.5.0 * DelayDevice: Polynomial updates enabled/disabled by 'enable_poly_updates' attribute * DelayDevice: Polynomial validity interval configurable by 'validity_seconds' attribute * Increase delay emulator CPU & memory limits ## 0.10.0 * add support for PSS personality in the Allocator and Subarray devices * fix SKB-316: Make subarray configuration wait for processor firmware download * fix SKB-442: Sort stations in subarray configuration by station/substation ID as per CBF/SDP ICD ## 0.9.0 * new subarray NO_HEALTH_ROLLUP environment variable stops subarray from including external Tango devices in its health roll-up (switches and processors) * new allocator ALLOW_AUTO_REGISTER_PROCESSORS environment variable - bugfix for undesired auto-registration with large depolyments * delay-polynomial simulator changed to produce PST beam polynomials that are differences from the polynomials for the corresponding station beam * delay-polynomial simulator changed to have initial empty scan_id string (matching CspLeafNode change), allowing processor to decide when to discard * properties related to subscriptions to the connector are configurable via helm chart * fix PERENTIE-2422 allocator-resubscribe-to-connector-ARP bug that occurs if connector is deleted/respawned * update delay polynomial validity Grafana panel ### 0.8.1 * fix SKB-317 subarray healthState race condition ## 0.8.0 * Three new Delay polynomial generator commands for PST delay generation: PstOffsetRaDec, PstOffsetAzEl, PstOffsetDelay * add `delaysValid` attribute to indicate/summarise whether all delay polynomials in this subarray are valid; used by a Grafana dashboard * Breaking Change: Delay polynomial generator updated to produce delay polynomials using the new Telmodel CSP_LOW_DELAYMODEL_1_0 format (https://gitlab.com/ska-telescope/ska-telmodel/-/blob/master/src/ska_telmodel/csp/examples.py?ref_type=heads#L1878-1914) ## 0.7.0 * **Separate Low CBF Helm charts** - downstream users will need to add `ska-low-cbf-proc` and `ska-low-cbf-conn` sub-charts as required. * Added P4 switch interaction to allow for ARP of SDP hosts * Added calculation of P4 switch routes needed to get visibilities to SDP hosts * Internal interface to Correlator/Processor changed (not backward compatible) * Correlator allocation algorithm reworked to use both available Matrix Correlators in Correlator FPGA * New and updated tests to verify Correlator allocation with 2 Matrix Correlators * Propagate healthState attribute change: processor -> subarray -> controller * Fix allocator confusion of station beams when multiple station beams present * Delay polynomial epoch changed from 1970 to SKA-epoch (midnight, 1 January 2000 TAI) * Fix LowCbfController where opMode was DISABLED regardless of ONLINE/OFFLINE adminMode ([Jira PERENTIE-2192](https://jira.skatelescope.org/browse/PERENTIE-2192)) ### 0.6.1 * bugfixes * fixes allocator-proxy-failure in subarray device (now uses mccsdeviceproxy) * fixes allocator-crash-when-no-fsps-available (now logs and returns error message) * updated ska-tango-base to v0.18.1 * updated ska-* charts to latest versions for which events work (at 2023-06-09) * Added skeleton delay-polynomial simulator device (to enable processor development that uses delay-polynomials) ## 0.6.0 * Added processor registration command and "fsps" attribute listing alveos of registered processors * Updated subarray AssignResources command: * FSP, P4, sharing-mode arguments removed * Now takes an empty JSON string argument * Updated subarray ConfigureScan command: * Now includes FSP selection and FSP firmware selection in ConfigureScan arguments * SDP destination address format updated to match Telmodel * PST destination address format updated to match PST "Channel Blocks" given to LMC * Fix for Abort-from-scanning-obsstate bug where it was impossible to scan again afterwards * Add psi-low-test CI job, which uses real harwdare in the Low PSI (currently only a CNIC-CNIC via P4/Connector test is performed) * Amend `psi-low-test` CI job with a call to switch's `LoadPorts()` method which reportedly enables associated Alveo card * Switch to Xilinx platform/shell version 3 (XDMA 3) - `helm` charts and dependant packages (`processor`) * Use the latest [Taranta versions](https://developer.skao.int/projects/ska-tango-taranta-suite/en/latest/) 1.3.8/1.3.6 (Taranta and TangoGQL respectively). * Pin the [CI runner version to 9.3.32](https://skao.slack.com/archives/CEMF9HXUZ/p1675900607781289?thread_ts=1675869473.554859&cid=CEMF9HXUZ) until PyTango upgrade to 9.3.6 ### 0.5.7 * Use `pyproject.toml` as source of software version number * Include `ska-low-cbf-conn` and `ska-low-cbf-fpga` sub-charts in our Helm chart (currently disabled by our `test-parent` chart for running local/CI tests) * Add `charts/psi-low.values.yaml` for enabling hardware in Low PSI * Add `VALUES_FILE` variable to Makefile ### 0.5.6 * Allow Subarray On, Off, Standby commands to complete (response is "rejected", except On which is handled by base classes) * Background work towards calculating Connector routing table entries & Processor virtual channel tables as Subarrays are configured ### 0.5.5 * Implement AssignResources command to work with FSP & P4 resources in Low.CBF * Stubbed implementation of ConfigureScan command ### 0.5.4 * Restructure src directory * Convert from setup.py to pyproject.toml * Replace allocation algorithm with allocator/resources.py ("resource tables") * Update to ska-tango-base v0.13.2 * Various edits to improve lint score ### 0.5.3 * Subarray: Update attribute names used on Processor device * Allocation Algorithm * calculate routes from LFAA to FPGAs and from FPGAs to PST * calculate virtual channel tables ### 0.5.2 * Allocation Algorithm can report allocated FPGAs for a subarray * Allocator device RequestAllocation command return value is derived from allocation (Processor devices only) * A very rough implementation, needs work on mapping ID to FQDN ### 0.5.1 * Add tests for Allocator device * test-parent chart: add ska-low-cbf-proc chart, for integration tests ## 0.5.0 * Allocator TANGO device created * `RequestAllocation` return value is hard-coded * Subarray passes on information from resource assignment requests to Allocator, expects to receive details of assigned Processor devices in response ## 0.4.0 * Subarray can assign (hard-coded) Processor resource for 1 PST beam and turn on PSR test packet generation ### 0.3.4 * Move FPGA-related code to [ska-low-cbf-proc](https://gitlab.com/ska-telescope/ska-low-cbf-proc)