LMC to MCS

MCS provides commands and attributes to turn MCS on and off (through the CBF Controller) as well as commands needed to configure and execute scans through the subarrays. (CBF Subarray)

The sequence diagram below shows the interactions between LMC and MCS to assign receptors to a subarray, configure a scan, and run a scan. It shows configuration of one Mid.CBF subarray followed by running a scan on that subarray. It ends with no receptors assigned to the subarray. The calls to write the frequency offset K and frequency offset delta F values only need to be written when there are updates to the values. They must be written to the CBF Controller before the scan configuration.

@startuml
'https://plantuml.com/sequence-diagram

skinparam backgroundColor #EEEBDC
skinparam sequence {
ParticipantBorderColor DodgerBlue
ParticipantBackgroundColor DeepSkyBlue
ActorBorderColor DarkGreen
ActorBackgroundColor Green
BoxBorderColor LightBlue
BoxBackgroundColor #F0FFFF
}

title TMC and Mid_CBF.LMC Scan Sequence\n

participant "\nTMC" as tmc
participant "CSP_Mid\n.LMC" as lmc

box "MCS"
participant "Mid.CBF\nController" as controller
participant "Mid.CBF\nSubarray" as subarray
end box

lmc         -> controller   : write frequencyOffsetK(ints)
controller  -> subarray     : write frequencyOffsetK(ints)
lmc         -> controller   : write frequencyOffsetDeltaF(int)
controller  -> subarray     : write frequencyOffsetDeltaF(int)
lmc         -> subarray     : AddReceptors(strs)
subarray    -> subarray     : obs state IDLE
subarray   --> lmc          : success
lmc         -> subarray     : ConfigureScan(json_str)
subarray    -> tmc          : unsubscribe all events

group Delay model subscription point
subarray    -> tmc          : subscribe delay model
end group

group Doppler subscription point
subarray    -> tmc          : subscribe Doppler phase correction
end group

group Jones matrix subscription point
subarray    -> tmc          : subscribe Jones matrix
end group

group Timing beam subscription point
subarray    -> tmc          : subscribe timing beam weights
end group

subarray    -> subarray     : obs state READY
subarray   --> lmc          : success

lmc         -> subarray     : Scan()
subarray    -> subarray     : obs state SCANNING
subarray   --> lmc          : success

lmc         -> subarray     : EndScan()
subarray    -> subarray     : obs state READY
subarray   --> lmc          : success

lmc         -> subarray     : RemoveAllReceptors()
subarray    -> subarray     : obs state EMPTY
subarray   --> lmc          : success

@enduml

Commands for CbfController and CbfSubarray are below. For full details of MCS Controller see CbfController. For full details of MCS Subarray see CbfSubarray.

CbfController Commands

On

class ska_mid_cbf_mcs.controller.controller_device.CbfController.OnCommand(*args: Any, **kwargs: Any)

A class for the CbfController’s On() command.

do() Tuple[ska_tango_base.commands.ResultCode, str]

Stateless hook for On() command functionality.

Returns:

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

Return type:

(ResultCode, str)

Off

class ska_mid_cbf_mcs.controller.controller_device.CbfController.OffCommand(*args: Any, **kwargs: Any)

A class for the CbfController’s Off() command.

do() Tuple[ska_tango_base.commands.ResultCode, str]

Stateless hook for Off() command functionality.

Returns:

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

Return type:

(ResultCode, str)

Standby

class ska_mid_cbf_mcs.controller.controller_device.CbfController.StandbyCommand(*args: Any, **kwargs: Any)

A class for the CbfController’s Standby() command.

do() Tuple[ska_tango_base.commands.ResultCode, str]

Stateless hook for Standby() command functionality. Turn off subarray, vcc, fsp, turn CbfController to standby

Returns:

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

Return type:

(ResultCode, str)

CbfSubarray Commands

Add Receptors

class ska_mid_cbf_mcs.subarray.subarray_device.CbfSubarray.AddReceptorsCommand(*args: Any, **kwargs: Any)

A class for CbfSubarray’s AddReceptors() command.

do(argin: List[str]) Tuple[ska_tango_base.commands.ResultCode, str]

Stateless hook for AddReceptors() command functionality.

Parameters:

argin – The receptors to be assigned

Returns:

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

Return type:

(ResultCode, str)

Configure Scan

class ska_mid_cbf_mcs.subarray.subarray_device.CbfSubarray.ConfigureScanCommand(*args: Any, **kwargs: Any)

A class for CbfSubarray’s ConfigureScan() command.

do(argin: str) Tuple[ska_tango_base.commands.ResultCode, str]

Stateless hook for ConfigureScan() command functionality.

Parameters:

argin – The configuration as JSON formatted string.

Returns:

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

Return type:

(ResultCode, str)

validate_input(argin: str) Tuple[bool, str]

Validate scan configuration.

Parameters:

argin – The configuration as JSON formatted string.

Returns:

A tuple containing a boolean indicating if the configuration is valid and a string message. The message is for information purpose only.

Return type:

(bool, str)

Scan

class ska_mid_cbf_mcs.subarray.subarray_device.CbfSubarray.ScanCommand(*args: Any, **kwargs: Any)

A class for CbfSubarray’s Scan() command.

do(argin: str) Tuple[ska_tango_base.commands.ResultCode, str]

Stateless hook for Scan() command functionality.

Parameters:

argin (str) – The scan ID as JSON formatted string.

Returns:

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

Return type:

(ResultCode, str)

Remove Receptors

class ska_mid_cbf_mcs.subarray.subarray_device.CbfSubarray.RemoveReceptorsCommand(*args: Any, **kwargs: Any)

A class for CbfSubarray’s RemoveReceptors() command. Equivalent to the ReleaseResourcesCommand in ADR-8.

do(argin: List[str]) Tuple[ska_tango_base.commands.ResultCode, str]

Stateless hook for RemoveReceptors() command functionality.

Parameters:

argin – The receptors to be released

Returns:

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

Return type:

(ResultCode, str)

Remove All Receptors

class ska_mid_cbf_mcs.subarray.subarray_device.CbfSubarray.RemoveAllReceptorsCommand(*args: Any, **kwargs: Any)

A class for CbfSubarray’s RemoveAllReceptors() command.

do() Tuple[ska_tango_base.commands.ResultCode, str]

Stateless hook for RemoveAllReceptors() command functionality.

Returns:

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

Return type:

(ResultCode, str)

End Scan

class ska_mid_cbf_mcs.subarray.subarray_device.CbfSubarray.EndScanCommand(*args: Any, **kwargs: Any)

A class for CbfSubarray’s EndScan() command.

do() Tuple[ska_tango_base.commands.ResultCode, str]

Stateless hook for EndScan() command functionality.

Returns:

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

Return type:

(ResultCode, str)