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

Merge branch 'L2SS-643-calculate-beamlet-bfweights' into 'master'

Resolve L2SS-643 "Calculate beamlet bfweights"

Closes L2SS-643

See merge request !294
parents e6e421ed 4f9e6603
No related branches found
No related tags found
1 merge request!294Resolve L2SS-643 "Calculate beamlet bfweights"
......@@ -8,10 +8,10 @@
"""
# PyTango imports
from tango.server import device_property
from tango import AttrWriteType
# Additional import
from tango.server import device_property, command
from tango import AttrWriteType, DevVarFloatArray, DevVarULongArray
# Additional import
from tangostationcontrol.common.entrypoint import entry
from tangostationcontrol.clients.attribute_wrapper import attribute_wrapper
from tangostationcontrol.devices.opcua_device import opcua_device
......@@ -140,9 +140,33 @@ class Beamlet(opcua_device):
# Overloaded functions
# --------
# --------
# internal functions
# --------
def _calculate_bf_weights(self, phases: numpy.ndarray):
""" Helper function that converts a difference in phase (in radiants)
to a FPGA weight (in complex number) """
# Convert array values in complex numbers
unit = numpy.power(2,14)
real = numpy.array(unit * numpy.cos(phases), dtype=numpy.short)
imag = numpy.array(unit * numpy.sin(phases), dtype=numpy.short)
# join 16 bits of imaginary part (MSB) with 16 bits of real part (LSB)
bf_weights = numpy.array( numpy.frombuffer( b''.join([imag,real]), dtype=numpy.uint32 ) )
return bf_weights
# --------
# Commands
# --------
@command(dtype_in=DevVarFloatArray, dtype_out=DevVarULongArray)
def calculate_bf_weights(self, phases: numpy.ndarray):
""" converts a difference in phase (in radiants) to a FPGA weight (in complex number) """
# Calculate the FPGA weight array
bf_weights = self._calculate_bf_weights(phases)
return bf_weights
# ----------
# Run server
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment