Subarray Device

@startuml
class StationsResourceManager
StationsResourceManager : +__init__()
StationsResourceManager : +items()
StationsResourceManager : +add_to_managed()
StationsResourceManager : +release_all()
StationsResourceManager : +station_trls()
StationsResourceManager : +station_ids()
class StationBeamsResourceManager
StationBeamsResourceManager : +__init__()
StationBeamsResourceManager : +__len__()
StationBeamsResourceManager : +assign()
StationBeamsResourceManager : +configure()
StationBeamsResourceManager : +scan()
StationBeamsResourceManager : +release()
StationBeamsResourceManager : +release_all()
StationBeamsResourceManager : +station_beam_trls()
StationBeamsResourceManager : +station_trls()
class TransientBufferManager
TransientBufferManager : +__init__()
TransientBufferManager : +send()
class MccsSubarray
MccsSubarray : +__init__()
MccsSubarray : +do()
MccsSubarray : -_initialise_connections()
MccsSubarray : -_initialise_health_monitoring()
MccsSubarray : -_initialise_resource_management()
MccsSubarray : +init_command_objects()
MccsSubarray : +always_executed_hook()
MccsSubarray : +delete_device()
MccsSubarray : +health_changed()
MccsSubarray : +commandResult()
MccsSubarray : +scanId()
MccsSubarray : +stationTRLs()
MccsSubarray : +succeeded()
MccsSubarray : +check_allowed()
MccsSubarray : +Abort()
MccsSubarray : +ObsReset()
MccsSubarray : +SendTransientBuffer()
StationsResourceManager : -_devices
StationBeamsResourceManager : -_stations
MccsSubarray : -_thread
MccsSubarray : -_lock
MccsSubarray : -_interrupt
MccsSubarray : -_health_state
MccsSubarray : -_scan_id
MccsSubarray : -_command_result

ResourceManager <|-- StationsResourceManager
ResourceManager <|-- StationBeamsResourceManager
SKASubarray <|-- MccsSubarray
MccsSubarray -- TransientBufferManager
@enduml

This module implements MCCS functionality for monitoring and control of subarrays.

class MccsSubarray(*args: Any, **kwargs: Any)[source]

MccsSubarray is the Tango device class for the MCCS Subarray prototype.

AbortDevice() tuple[list[ska_control_model.ResultCode], list[Optional[str]]][source]

Abort any long-running command such as Configure() or Scan().

This will only cancel commands on this device, not further down the hierarchy, use Abort() for that use case.

Returns:

A tuple containing a return code and a string message indicating status. The message is for information purpose only.

class AbortDeviceCommand(*args: Any, **kwargs: Any)[source]

A class for MccsSubarray’s AbortDevice() command.

__init__(command_tracker: ska_tango_base.base.CommandTracker, component_manager: SubarrayComponentManager, callback: Callable[[bool], None], logger: Logger | None = None) None[source]

Initialise a new AbortCommand instance.

Parameters:
  • command_tracker – the device’s command tracker

  • component_manager – the device’s component manager

  • callback – callback to be called when this command states and finishes

  • logger – a logger for this command object to yuse

do(*args: Any, **kwargs: Any) tuple[ska_control_model.ResultCode, str][source]

Stateless hook for AbortDevice() command functionality.

Parameters:
  • args – positional arguments to the command. This command does not take any, so this should be empty.

  • kwargs – keyword arguments to the command. This command does not take any, so this should be empty.

Returns:

A tuple containing a return code and a string message indicating status. The message is for information purpose only.

class AssignResourcesCommand(*args: Any, **kwargs: Any)[source]

A class for SKASubarray’s AssignResources() command.

__init__(command_tracker: ska_tango_base.base.CommandTracker, component_manager: SubarrayComponentManager, callback: Callable | None = None, logger: Logger | None = None) None[source]

Initialise a new instance.

Parameters:
  • command_tracker – the device’s command tracker

  • component_manager – the device’s component manager

  • callback – an optional callback to be called when this command starts and finishes.

  • logger – a logger for this command to log with.

class ConfigureCommand(*args: Any, **kwargs: Any)[source]

A class for SKASubarray’s Configure() command.

__init__(command_tracker: ska_tango_base.base.CommandTracker, component_manager: SubarrayComponentManager, callback: Callable | None = None, logger: Logger | None = None) None[source]

Initialise a new instance.

Parameters:
  • command_tracker – the device’s command tracker

  • component_manager – the device’s component manager

  • callback – an optional callback to be called when this command starts and finishes.

  • logger – a logger for this command to log with.

End() tuple[list[ska_control_model.ResultCode], list[Optional[str]]][source]

Deconfigure resources.

Returns:

A tuple containing a return code and a string message indicating status.

EndScan() tuple[list[ska_control_model.ResultCode], list[Optional[str]]][source]

Stop scanning.

Returns:

A tuple containing a return code and a string message indicating status.

class InitCommand(*args: Any, **kwargs: Any)[source]

Command class for device initialisation.

do() tuple[ska_control_model.ResultCode, str][source]

Initialise the attributes and properties of MccsSubarray.

Returns:

A tuple containing a return code and a string message indicating status. The message is for information purpose only.

ObsReset() tuple[list[ska_control_model.ResultCode], list[Optional[str]]][source]

Reset the observation by returning to unconfigured state.

Returns:

A tuple containing a return code and a string message indicating status.

ReleaseAllResources() tuple[list[ska_control_model.ResultCode], list[Optional[str]]][source]

Release all resources from this subarray.

Returns:

A tuple containing a return code and a string message indicating status.

ReleaseResources(argin: str) tuple[list[ska_control_model.ResultCode], list[Optional[str]]][source]

Release resources from this subarray.

Parameters:

argin – the resources to be released

Returns:

A tuple containing a return code and a string message indicating status.

Restart() tuple[list[ska_control_model.ResultCode], list[Optional[str]]][source]

Restart the subarray by returning to unresourced state.

Returns:

A tuple containing a return code and a string message indicating status.

Scan(argin: str) tuple[list[ska_control_model.ResultCode], list[Optional[str]]][source]

Start scanning.

Parameters:

argin – Json string containing scan_id and start_time.

Returns:

A tuple containing a return code and a string message indicating status.

class ScanCommand(*args: Any, **kwargs: Any)[source]

A class for SKASubarray’s Scan() command.

__init__(command_tracker: ska_tango_base.base.CommandTracker, component_manager: SubarrayComponentManager, callback: Callable | None = None, logger: Logger | None = None) None[source]

Initialise a new instance.

Parameters:
  • command_tracker – the device’s command tracker

  • component_manager – the device’s component manager

  • callback – an optional callback to be called when this command starts and finishes.

  • logger – a logger for this command to log with.

SendTransientBuffer(argin: list[int]) tuple[list[ska_control_model.ResultCode], list[Optional[str]]][source]

Cause the subarray to send the requested segment of the transient buffer to SDP.

The requested segment is specified by:

  1. Start time (timestamp: milliseconds since UNIX epoch)

  2. End time (timestamp: milliseconds since UNIX epoch)

  3. Dispersion measure

Together, these parameters narrow the selection of transient buffer data to the period of time and frequencies that are of interest.

Additional metadata, such as the ID of a triggering Scheduling Block, may need to be supplied to allow SDP to assign data ownership correctly (TBD75).

Todo:

This method is a stub that does nothing but return a dummy string.

Parameters:

argin – Specification of the segment of the transient buffer to send

Returns:

ASCII String that indicates status, for information purposes only

__init__(*args: Any, **kwargs: Any) None[source]

Initialise this device object.

Parameters:
  • args – positional args to the init

  • kwargs – keyword args to the init

assignedResources() str[source]

Return this subarray’s assigned resources.

Returns:

this subarray’s assigned resources.

create_component_manager() SubarrayComponentManager[source]

Create and return a component manager for this device.

Returns:

a component manager for this device.

healthModelParams(argin: str) None[source]

Set the params for health transition rules.

Parameters:

argin – JSON-string of dictionary of health states

healthReport() str[source]

Get the health report.

Returns:

the health report.

init_command_objects() None[source]

Initialise the command handlers for commands supported by this device.

init_device() None[source]

Initialise the device.

missedEvents() int[source]

Get the amount of missed change events.

Some commands rely on change events from sub-devices, sometime we miss these events, this attribute keeps track of how many we know we have missed.

Returns:

the amount of missed change events

scanId(scan_id) None[source]

Set the scanId attribute.

Parameters:

scan_id – the new scanId

stationBeamTrls() list[str][source]

Return the TRLs of station beams assigned to this subarray.

Returns:

TRLs of station beams assigned to this subarray

stationTrls() list[str][source]

Return the TRLs of stations assigned to this subarray.

Returns:

TRLs of stations assigned to this subarray

subarrayBeamTrls() list[str][source]

Return the TRLs of subarray beams assigned to this subarray.

Returns:

TRLs of subarray beams assigned to this subarray

main(*args: str, **kwargs: str) int[source]

Entry point for module.

Parameters:
  • args – positional arguments

  • kwargs – named arguments

Returns:

exit code