From ed8ccbd5ad8b03dac4b1030d1065a3d69e33b4f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20K=C3=BCnsem=C3=B6ller?=
 <jkuensem@physik.uni-bielefeld.de>
Date: Mon, 5 Jul 2021 12:24:13 +0200
Subject: [PATCH] TMSS-708: Support creating pulp dp SIPs

---
 .../backend/src/tmss/tmssapp/adapters/sip.py  | 31 +++++++++----------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/sip.py b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/sip.py
index b666ddadfca..c968a40737e 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/sip.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/sip.py
@@ -420,23 +420,22 @@ def create_sip_representation_for_dataproduct(dataproduct: Dataproduct):
     elif dataproduct.dataformat.value == Dataformat.Choices.PULP_ANALYSIS.value:
         sip_dataproduct = siplib.PulpDataProduct(
             dataproduct_map,
-            filecontent = ["content_a", "content_b"],
-            datatype = "CoherentStokes",
+            filecontent = dataproduct.feedback_doc['files'],
+            datatype = "CoherentStokes" if dataproduct.feedback_doc['target']['coherent'] else "IncoherentStokes",  # todo: correct? what about complex voltages?
             arraybeam = siplib.SimpleArrayBeam(siplib.ArrayBeamMap(
-                subarraypointing_identifier = point_id,
-                beamnumber = 4,
-                dispersionmeasure = 16,
-                numberofsubbands = 3,
-                stationsubbands = [1, 2, 3],
-                samplingtime = 3,
-                samplingtimeunit = "ms",
-                centralfrequencies = "",
-                centralfrequencies_unit = "MHz",
-                channelwidth_frequency = 160,
-                channelwidth_frequencyunit = "MHz",
-                channelspersubband = 5,
-                stokes = ["I", "Q"]
-            ))
+                subarraypointing_identifier=get_siplib_identifier(dataproduct.sap.global_identifier, "SAP %s" % dataproduct.sap.id),
+                beamnumber=dataproduct.specifications_doc['identifiers']['tab_index'] if 'identifiers' in dataproduct.specifications_doc else 0,  # todo: verify
+                dispersionmeasure=0,  # fixed
+                numberofsubbands=len(dataproduct.feedback_doc['frequency']['subbands']),
+                stationsubbands=dataproduct.feedback_doc['frequency']['subbands'],
+                samplingtime=dataproduct.feedback_doc['time']['sample_width'],
+                samplingtimeunit="s",
+                centralfrequencies=dataproduct.feedback_doc['frequency']['central_frequencies'],
+                centralfrequencies_unit="Hz",
+                channelwidth_frequency=dataproduct.feedback_doc['frequency']['channel_width'],
+                channelwidth_frequencyunit="Hz",
+                channelspersubband=dataproduct.feedback_doc['frequency']['channels_per_subband'],
+                stokes=dataproduct.feedback_doc['samples']['polarisations']))
             )
 
     # todo: distinguish and create other dataproduct types. Probably most of these can be filled in over time as needed,
-- 
GitLab