diff --git a/CDB/LOFAR_ConfigDb.json b/CDB/LOFAR_ConfigDb.json index 5b3617b2aec3485b7eec93235a26fa911b22677d..a092a5a0a8974c478881690832d32b78ee838294 100644 --- a/CDB/LOFAR_ConfigDb.json +++ b/CDB/LOFAR_ConfigDb.json @@ -12,108 +12,166 @@ "RCUSCC": { "PTS/RCUSCC/1": { "attribute_properties": { - "ADC_JESD_R": { + "RCU_ADC_CML_R": { + "archive_rel_change": [ + "-1", + "1" + ], "rel_change": [ "-1", "1" ] }, - "Attenuator_R": { - "event_period": [ - "0" + "RCU_ADC_JESD_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "Attenuator_RW": { - "event_period": [ - "0" + "RCU_ADC_SYNC_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "Band_R": { - "event_period": [ - "0" + "RCU_ADC_lock_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "Band_RW": { - "event_period": [ - "0" + "RCU_ID_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "CLK_PLL_locked_R": { - "event_period": [ - "0" + "RCU_LED0_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "Dither_Frequency_R": { - "event_period": [ - "0" + "RCU_LED0_RW": { + "archive_rel_change": [ + "-1", + "1" ], - "format": [ - "%6.8f" + "rel_change": [ + "-1", + "1" + ] + }, + "RCU_OUT1_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ - "-0.1", - "0.1" + "-1", + "1" ] }, - "Dither_Frequency_RW": { - "event_period": [ - "0" + "RCU_OUT2_R": { + "archive_rel_change": [ + "-1", + "1" + ], + "rel_change": [ + "-1", + "1" + ] + }, + "RCU_Pwr_dig_R": { + "archive_rel_change": [ + "-1", + "1" ], - "format": [ - "%6.8f" + "rel_change": [ + "-1", + "1" + ] + }, + "RCU_attenuator_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ - "-0.1", - "0.1" + "-1", + "1" ] }, - "LED_R": { - "event_period": [ - "0" + "RCU_attenuator_RW": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "LED_RW": { - "event_period": [ - "0" + "RCU_band_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "Pwr_dig_R": { - "event_period": [ - "0" + "RCU_band_RW": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, + "RCU_monitor_rate_RW": { + "archive_rel_change": [ + "-1.0", + "1.0" + ], + "rel_change": [ + "-1.0", + "1.0" + ] + }, + "RCU_temperature_R": { + "archive_rel_change": [ + "-1.0", + "1.0" + ], + "rel_change": [ + "-1.0", + "1.0" + ] + }, "State": { "event_period": [ "0" @@ -123,20 +181,11 @@ "event_period": [ "0" ] - }, - "Temperature_R": { - "event_period": [ - "0" - ], - "rel_change": [ - "-0.1", - "0.1" - ] } }, "properties": { "OPC_Server_Name": [ - "10.87.6.23" + "ltspi.astron.nl" ], "OPC_Server_Port": [ "4842" @@ -145,29 +194,47 @@ "5.0" ], "polled_attr": [ - "pwr_dig_r", - "1000", "state", "1000", "status", "1000", - "temperature_r", + "ant_mask_rw", + "1000", + "rcu_adc_cml_r", + "1000", + "rcu_adc_jesd_r", + "1000", + "rcu_adc_lock_r", + "1000", + "rcu_adc_sync_r", + "1000", + "rcu_attenuator_r", + "1000", + "rcu_attenuator_rw", + "1000", + "rcu_band_r", + "1000", + "rcu_band_rw", + "1000", + "rcu_id_r", + "1000", + "rcu_led0_r", "1000", - "attenuator_r", + "rcu_led0_rw", "1000", - "attenuator_rw", + "rcu_mask_rw", "1000", - "band_r", + "rcu_monitor_rate_rw", "1000", - "band_rw", + "rcu_out1_r", "1000", - "clk_pll_locked_r", + "rcu_out2_r", "1000", - "led_r", + "rcu_pwr_dig_r", "1000", - "led_rw", + "rcu_temperature_r", "1000", - "adc_jesd_r", + "rcu_version_r", "1000" ] } diff --git a/CDB/thomas_ConfigDb.json b/CDB/thomas_ConfigDb.json index f77a8f9a4067ea0f6a1a84cebc4a250f01c32455..2d4870f730e5cf0db5d3ac5953e250155943accd 100644 --- a/CDB/thomas_ConfigDb.json +++ b/CDB/thomas_ConfigDb.json @@ -12,108 +12,166 @@ "RCUSCC": { "PTS/RCUSCC/1": { "attribute_properties": { - "ADC_JESD_R": { + "RCU_ADC_CML_R": { + "archive_rel_change": [ + "-1", + "1" + ], "rel_change": [ "-1", "1" ] }, - "Attenuator_R": { - "event_period": [ - "0" + "RCU_ADC_JESD_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "Attenuator_RW": { - "event_period": [ - "0" + "RCU_ADC_SYNC_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "Band_R": { - "event_period": [ - "0" + "RCU_ADC_lock_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "Band_RW": { - "event_period": [ - "0" + "RCU_ID_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "CLK_PLL_locked_R": { - "event_period": [ - "0" + "RCU_LED0_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "Dither_Frequency_R": { - "event_period": [ - "0" + "RCU_LED0_RW": { + "archive_rel_change": [ + "-1", + "1" ], - "format": [ - "%6.8f" + "rel_change": [ + "-1", + "1" + ] + }, + "RCU_OUT1_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ - "-0.1", - "0.1" + "-1", + "1" ] }, - "Dither_Frequency_RW": { - "event_period": [ - "0" + "RCU_OUT2_R": { + "archive_rel_change": [ + "-1", + "1" + ], + "rel_change": [ + "-1", + "1" + ] + }, + "RCU_Pwr_dig_R": { + "archive_rel_change": [ + "-1", + "1" ], - "format": [ - "%6.8f" + "rel_change": [ + "-1", + "1" + ] + }, + "RCU_attenuator_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ - "-0.1", - "0.1" + "-1", + "1" ] }, - "LED_R": { - "event_period": [ - "0" + "RCU_attenuator_RW": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "LED_RW": { - "event_period": [ - "0" + "RCU_band_R": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, - "Pwr_dig_R": { - "event_period": [ - "0" + "RCU_band_RW": { + "archive_rel_change": [ + "-1", + "1" ], "rel_change": [ "-1", "1" ] }, + "RCU_monitor_rate_RW": { + "archive_rel_change": [ + "-1.0", + "1.0" + ], + "rel_change": [ + "-1.0", + "1.0" + ] + }, + "RCU_temperature_R": { + "archive_rel_change": [ + "-1.0", + "1.0" + ], + "rel_change": [ + "-1.0", + "1.0" + ] + }, "State": { "event_period": [ "0" @@ -123,15 +181,6 @@ "event_period": [ "0" ] - }, - "Temperature_R": { - "event_period": [ - "0" - ], - "rel_change": [ - "-0.1", - "0.1" - ] } }, "properties": { @@ -139,35 +188,53 @@ "okeanos" ], "OPC_Server_Port": [ - "50000" + "4842" ], "OPC_Time_Out": [ "5.0" ], "polled_attr": [ - "pwr_dig_r", - "1000", "state", "1000", "status", "1000", - "temperature_r", + "ant_mask_rw", + "1000", + "rcu_adc_cml_r", + "1000", + "rcu_adc_jesd_r", + "1000", + "rcu_adc_lock_r", + "1000", + "rcu_adc_sync_r", + "1000", + "rcu_attenuator_r", + "1000", + "rcu_attenuator_rw", + "1000", + "rcu_band_r", + "1000", + "rcu_band_rw", + "1000", + "rcu_id_r", + "1000", + "rcu_led0_r", "1000", - "attenuator_r", + "rcu_led0_rw", "1000", - "attenuator_rw", + "rcu_mask_rw", "1000", - "band_r", + "rcu_monitor_rate_rw", "1000", - "band_rw", + "rcu_out1_r", "1000", - "clk_pll_locked_r", + "rcu_out2_r", "1000", - "led_r", + "rcu_pwr_dig_r", "1000", - "led_rw", + "rcu_temperature_r", "1000", - "adc_jesd_r", + "rcu_version_r", "1000" ] } diff --git a/RCUSCC/RCUSCC/RCUSCC.py b/RCUSCC/RCUSCC/RCUSCC.py index eec910de17bde6678de7e4a6dbef8da558f405de..40b816bf303b9e5ead47236e934a47fb1a3e4558 100644 --- a/RCUSCC/RCUSCC/RCUSCC.py +++ b/RCUSCC/RCUSCC/RCUSCC.py @@ -89,69 +89,105 @@ class RCUSCC(Device): # Attributes # ---------- - Attenuator_R = attribute( + RCU_mask_RW = attribute( + dtype=('DevBoolean',), + max_dim_x=32, + access=AttrWriteType.READ_WRITE, + ) + + Ant_mask_RW = attribute( + dtype=(('DevBoolean',),), + max_dim_x=3, max_dim_y=32, + access=AttrWriteType.READ_WRITE, + ) + + RCU_attenuator_R = attribute( dtype=(('DevLong64',),), - max_dim_x=32, max_dim_y=3, + max_dim_x=3, max_dim_y=32, ) - Attenuator_RW = attribute( + RCU_attenuator_RW = attribute( dtype=(('DevLong64',),), - max_dim_x=32, max_dim_y=3, + max_dim_x=3, max_dim_y=32, access=AttrWriteType.READ_WRITE, ) - Band_R = attribute( + RCU_band_R = attribute( dtype=(('DevLong64',),), - max_dim_x=32, max_dim_y=3, + max_dim_x=3, max_dim_y=32, ) - Band_RW = attribute( + RCU_band_RW = attribute( dtype=(('DevLong64',),), - max_dim_x=32, max_dim_y=3, + max_dim_x=3, max_dim_y=32, access=AttrWriteType.READ_WRITE, ) - ADC_JESD_R = attribute( - dtype=(('DevDouble',),), - max_dim_x=32, max_dim_y=3, + RCU_temperature_R = attribute( + dtype=('DevDouble',), + max_dim_x=32, ) - CLK_PLL_locked_R = attribute( - dtype='DevLong64', + RCU_Pwr_dig_R = attribute( + dtype=('DevLong64',), + max_dim_x=32, ) -# Dither_Frequency_R = attribute( -# dtype=(('DevDouble',),), -# max_dim_x=32, max_dim_y=2, -# ) -# -# Dither_Frequency_RW = attribute( -# dtype=(('DevDouble',),), -# max_dim_x=32, max_dim_y=2, -# access=AttrWriteType.READ_WRITE, -# ) - - LED_R = attribute( + RCU_LED0_R = attribute( dtype=('DevLong64',), max_dim_x=32, ) - LED_RW = attribute( + RCU_LED0_RW = attribute( dtype=('DevLong64',), max_dim_x=32, access=AttrWriteType.READ_WRITE, ) - Pwr_dig_R = attribute( + RCU_ADC_lock_R = attribute( + dtype=(('DevLong64',),), + max_dim_x=3, max_dim_y=32, + ) + + RCU_ADC_SYNC_R = attribute( + dtype=(('DevLong64',),), + max_dim_x=3, max_dim_y=32, + ) + + RCU_ADC_JESD_R = attribute( + dtype=(('DevLong64',),), + max_dim_x=3, max_dim_y=32, + ) + + RCU_ADC_CML_R = attribute( + dtype=(('DevLong64',),), + max_dim_x=3, max_dim_y=32, + ) + + RCU_OUT1_R = attribute( + dtype=(('DevLong64',),), + max_dim_x=3, max_dim_y=32, + ) + + RCU_OUT2_R = attribute( + dtype=(('DevLong64',),), + max_dim_x=3, max_dim_y=32, + ) + + RCU_ID_R = attribute( dtype=('DevLong64',), max_dim_x=32, ) - Temperature_R = attribute( - dtype=('DevDouble',), + RCU_version_R = attribute( + dtype=('DevString',), max_dim_x=32, ) + RCU_monitor_rate_RW = attribute( + dtype='DevDouble', + ) + # --------------- # General methods @@ -178,49 +214,51 @@ class RCUSCC(Device): self.debug_stream("Mapping OPC-UA MP/CP to attributes...") - # 2020-11-27, thomas - # TODO - # Modify as soon as we have a real multi-dimensional array - self.attribute_mapping["Attenuator_R"] = (self.get_pcc_node("RCUs_Attenuator1_R"), self.get_pcc_node("RCUs_Attenuator2_R"), self.get_pcc_node("RCUs_Attenuator3_R")) + self.attribute_mapping["RCU_mask_RW"] = self.get_pcc_node("RCU_mask_RW") - # 2020-11-27, thomas - # TODO - # Modify as soon as we have a real multi-dimensional array - self.attribute_mapping["Attenuator_RW"] = (self.get_pcc_node("RCUs_Attenuator1_RW"), self.get_pcc_node("RCUs_Attenuator2_RW"), self.get_pcc_node("RCUs_Attenuator3_RW")) + self.attribute_mapping["Ant_mask_RW"] = self.get_pcc_node("Ant_mask_RW") - # 2020-11-27, thomas - # TODO - # Modify as soon as we have a real multi-dimensional array - self.attribute_mapping["Band_R"] = (self.get_pcc_node("RCUs_Band1_R"), self.get_pcc_node("RCUs_Band2_R"), self.get_pcc_node("RCUs_Band3_R")) + self.attribute_mapping["RCU_attenuator_R"] = self.get_pcc_node("RCU_attenuator_R") - # 2020-11-27, thomas - # TODO - # Modify as soon as we have a real multi-dimensional array - self.attribute_mapping["Band_RW"] = (self.get_pcc_node("RCUs_Band1_RW"), self.get_pcc_node("RCUs_Band2_RW"), self.get_pcc_node("RCUs_Band3_RW")) + self.attribute_mapping["RCU_attenuator_RW"] = self.get_pcc_node("RCU_attenuator_RW") - # 2020-11-27, thomas - # TODO - # Modify as soon as we have a real multi-dimensional array - self.attribute_mapping["ADC_JESD_R"] = (self.get_pcc_node("RCUs_ADC1_JESD_R"), self.get_pcc_node("RCUs_ADC2_JESD_R"), self.get_pcc_node("RCUs_ADC3_JESD_R")) + self.attribute_mapping["RCU_band_R"] = self.get_pcc_node("RCU_band_R") + + self.attribute_mapping["RCU_band_RW"] = self.get_pcc_node("RCU_band_RW") + self.attribute_mapping["RCU_temperature_R"] = self.get_pcc_node("RCU_temperature_R") - self.attribute_mapping["CLK_PLL_locked_R"] = self.get_pcc_node("CLK_PLL_locked_R") + self.attribute_mapping["RCU_Pwr_dig_R"] = self.get_pcc_node("RCU_Pwr_dig_R") -# self.attribute_mapping["Dither_Frequency_R"] = self.get_pcc_node("RCUs_Dither_Frequency_R") + self.attribute_mapping["RCU_LED0_R"] = self.get_pcc_node("RCU_LED0_R") -# self.attribute_mapping["Dither_Frequency_RW"] = self.get_pcc_node("RCUs_Dither_Frequency_RW") + self.attribute_mapping["RCU_LED0_RW"] = self.get_pcc_node("RCU_LED0_RW") - self.attribute_mapping["LED_R"] = self.get_pcc_node("RCUs_LED0_R") + self.attribute_mapping["RCU_ADC_lock_R"] = self.get_pcc_node("RCU_ADC_lock_R") - self.attribute_mapping["LED_RW"] = self.get_pcc_node("RCUs_LED0_RW") + self.attribute_mapping["RCU_ADC_SYNC_R"] = self.get_pcc_node("RCU_ADC_SYNC_R") - self.attribute_mapping["Pwr_dig_R"] = self.get_pcc_node("RCUs_Pwr_dig_R") + self.attribute_mapping["RCU_ADC_CML_R"] = self.get_pcc_node("RCU_ADC_CML_R") - self.attribute_mapping["Temperature_R"] = self.get_pcc_node("RCUs_Temperature_R") + self.attribute_mapping["RCU_ADC_JESD_R"] = self.get_pcc_node("RCU_ADC_JESD_R") -# self.attribute_mapping["RCU_off"] = self.get_pcc_node("RCUs_RCU_off") + self.attribute_mapping["RCU_OUT1_R"] = self.get_pcc_node("RCU_OUT1_R") -# self.attribute_mapping["RCU_on"] = self.get_pcc_node("RCUs_RCU_on") + self.attribute_mapping["RCU_OUT2_R"] = self.get_pcc_node("RCU_OUT2_R") + + self.attribute_mapping["RCU_ID_R"] = self.get_pcc_node("RCU_ID_R") + + self.attribute_mapping["RCU_version_R"] = self.get_pcc_node("RCU_version_R") + + self.attribute_mapping["RCU_monitor_rate_RW"] = self.get_pcc_node("RCU_monitor_rate_RW") + + self.function_mapping["RCU_off"] = self.get_pcc_node("RCU_off") + + self.function_mapping["RCU_on"] = self.get_pcc_node("RCU_on") + + self.function_mapping["ADC_on"] = self.get_pcc_node("ADC_on") + + self.function_mapping["RCU_update"] = self.get_pcc_node("RCU_update") self.debug_stream("Mapping OPC-UA MP/CP to attributes done.") @@ -243,41 +281,69 @@ class RCUSCC(Device): # Set default values in the RW/R attributes and add them to # the mapping. - self._Attenuator_R = ((0,),) - self.attribute_mapping["Attenuator_R"] = {} + self._RCU_mask_RW = numpy.full(32, False) + self.attribute_mapping["RCU_mask_RW"] = {} + + self._Ant_mask_RW = numpy.full((32, 3), False) + self.attribute_mapping["Ant_mask_RW"] = {} + + self._RCU_attenuator_R = numpy.full((32, 3), 0) + self.attribute_mapping["RCU_attenuator_R"] = {} + + self._RCU_attenuator_RW = numpy.full((32, 3), 0) + self.attribute_mapping["RCU_attenuator_RW"] = {} + + self._RCU_band_R = numpy.full((32, 3), 0) + self.attribute_mapping["RCU_band_R"] = {} + + self._RCU_band_RW = numpy.full((32, 3), 0) + self.attribute_mapping["RCU_band_RW"] = {} + + self._RCU_temperature_R = numpy.full((32, 3), 0.0) + self.attribute_mapping["RCU_temperature_R"] = {} - self._Attenuator_RW = ((0,),) - self.attribute_mapping["Attenuator_RW"] = {} + self._RCU_Pwr_dig_R = numpy.full(32, 0) + self.attribute_mapping["RCU_Pwr_dig_R"] = {} - self._CLK_PLL_locked_R = 0 - self.attribute_mapping["CLK_PLL_locked_R"] = {} + self._RCU_LED0_R = numpy.full(32, 0) + self.attribute_mapping["RCU_LED0_R"] = {} - self._Band_R = ((0,),) - self.attribute_mapping["Band_R"] = {} + self._RCU_LED0_RW = numpy.full(32, 0) + self.attribute_mapping["RCU_LED0_RW"] = {} - self._Band_RW = ((0,),) - self.attribute_mapping["Band_RW"] = {} + self._RCU_ADC_lock_R = numpy.full((32, 3), 0) + self.attribute_mapping["RCU_ADC_lock_R"] = {} - self._ADC_JESD_R = ((0,),) - self.attribute_mapping["ADC_JESD_R"] = {} + self._RCU_ADC_SYNC_R = numpy.full((32, 3), 0) + self.attribute_mapping["RCU_ADC_SYNC_R"] = {} - self._Dither_Frequency_R = ((0.0,),) - self.attribute_mapping["Dither_Frequency_R"] = {} + self._RCU_ADC_JESD_R = numpy.full((32, 3), 0) + self.attribute_mapping["RCU_ADC_JESD_R"] = {} - self._Dither_Frequency_RW = ((0.0,),) - self.attribute_mapping["Dither_Frequency_RW"] = {} + self._RCU_ADC_CML_R = numpy.full((32, 3), 0) + self.attribute_mapping["RCU_ADC_CML_R"] = {} - self._LED_R = ((0,),) - self.attribute_mapping["LED_R"] = {} + self._RCU_OUT1_R = numpy.full((32, 3), 0) + self.attribute_mapping["RCU_OUT1_R"] = {} - self._LED0_RW = ((0,),) - self.attribute_mapping["LED_RW"] = {} + self._RCU_OUT2_R = numpy.full((32, 3), 0) + self.attribute_mapping["RCU_OUT2_R"] = {} - self._Pwr_dig_R = (0,) - self.attribute_mapping["Pwr_dig_R"] = {} + self._RCU_ID_R = numpy.full(32, 0) + self.attribute_mapping["RCU_ID_R"] = {} - self._Temperature_R = (0.0,) - self.attribute_mapping["Temperature_R"] = {} + self._RCU_version_R = numpy.full(32, "1234567890") + self.attribute_mapping["RCU_version_R"] = {} + + self._RCU_monitor_rate_RW = 60.0 + self.attribute_mapping["RCU_monitor_rate_RW"] = {} + + # Init the dict that contains function to OPC-UA function mappings. + self.function_mapping = {} + self.function_mapping["RCU_on"] = {} + self.function_mapping["RCU_off"] = {} + self.function_mapping["ADC_on"] = {} + self.function_mapping["RCU_update"] = {} self.client = opcua.Client("opc.tcp://{}:{}/".format(self.OPC_Server_Name, self.OPC_Server_Port), self.OPC_Time_Out) # timeout in seconds @@ -301,6 +367,12 @@ class RCUSCC(Device): # Start keep-alive self.opcua_connection.start() + # Set the masks + # TODO + # Read default masks from config DB + self.write_RCU_mask_RW(self._RCU_mask_RW) + self.write_Ant_mask_RW(self._Ant_mask_RW) + # Everything went ok -- go standby. self.set_state(DevState.STANDBY) @@ -327,120 +399,199 @@ class RCUSCC(Device): @only_when_on @fault_on_error - def read_Attenuator_R(self): - """Return the Attenuator_R attribute.""" - self._Attenuator_R = numpy.array([self.attribute_mapping["Attenuator_R"][0].get_value(), self.attribute_mapping["Attenuator_R"][1].get_value(), self.attribute_mapping["Attenuator_R"][2].get_value()]) - return self._Attenuator_R + def read_RCU_mask_R(self): + """Return the RCU_mask_R attribute.""" + self._RCU_mask_R = numpy.array(self.attribute_mapping["RCU_mask_R"].get_value()) + return self._RCU_mask_R + + @only_when_on + @fault_on_error + def read_RCU_mask_RW(self): + """Return the RCU_mask_RW attribute.""" + return self._RCU_mask_RW @only_when_on @fault_on_error - def read_Attenuator_RW(self): - """Return the Attenuator_R attribute.""" - self._Attenuator_RW = numpy.array([self.attribute_mapping["Attenuator_RW"][0].get_value(), self.attribute_mapping["Attenuator_RW"][1].get_value(), self.attribute_mapping["Attenuator_RW"][2].get_value()]) - return self._Attenuator_RW + def write_RCU_mask_RW(self, value): + """Set the RCU_mask_RW attribute.""" + self.attribute_mapping["RCU_mask_RW"].set_value(value.tolist()) + self._RCU_mask_RW = value @only_when_on @fault_on_error - def write_Attenuator_RW(self, value): - """Set the Attenuator_RW attribute.""" - self.attribute_mapping["Attenuator_RW"][0].set_value(value[0].tolist()) - self.attribute_mapping["Attenuator_RW"][1].set_value(value[1].tolist()) - self.attribute_mapping["Attenuator_RW"][2].set_value(value[2].tolist()) - self._Attenuator_RW = value + def read_Ant_mask_R(self): + """Return the Ant_mask_R attribute.""" + value = numpy.array(self.attribute_mapping["Ant_mask_R"].get_value()) + self._Ant_mask_R = numpy.array(numpy.split(value, indices_or_sections = 32)) + return self._Ant_mask_R @only_when_on @fault_on_error - def read_Band_R(self): - """Return the Band_R attribute.""" - self._Band_R = numpy.array([self.attribute_mapping["Band_R"][0].get_value(), self.attribute_mapping["Band_R"][1].get_value(), self.attribute_mapping["Band_R"][2].get_value()]) - return self._Band_R + def read_Ant_mask_RW(self): + """Return the Ant_mask_RW attribute.""" + return self._Ant_mask_RW @only_when_on @fault_on_error - def read_Band_RW(self): - """Return the Band_R attribute.""" - self._Band_RW = numpy.array([self.attribute_mapping["Band_RW"][0].get_value(), self.attribute_mapping["Band_RW"][1].get_value(), self.attribute_mapping["Band_RW"][2].get_value()]) - return self._Band_RW + def write_Ant_mask_RW(self, value): + """Set the Ant_mask_RW attribute.""" + v = numpy.concatenate(value) + self.attribute_mapping["Ant_mask_RW"].set_value(v.tolist()) + self._Ant_mask_RW = value @only_when_on @fault_on_error - def write_Band_RW(self, value): - """Set the Band_RW attribute.""" - self.attribute_mapping["Band_RW"][0].set_value(value[0].tolist()) - self.attribute_mapping["Band_RW"][1].set_value(value[1].tolist()) - self.attribute_mapping["Band_RW"][2].set_value(value[2].tolist()) - self._Band_RW = value + def read_RCU_attenuator_R(self): + """Return the RCU_attenuator_R attribute.""" + value = numpy.array(self.attribute_mapping["RCU_attenuator_R"].get_value()) + self._RCU_attenuator_R = numpy.array(numpy.split(value, indices_or_sections = 32)) + return self._RCU_attenuator_R @only_when_on @fault_on_error - def read_ADC_JESD_R(self): - """Return the ADC_JESD_R attribute.""" - self._ADC_JESD_R = numpy.array([self.attribute_mapping["ADC_JESD_R"][0].get_value(), self.attribute_mapping["ADC_JESD_R"][1].get_value(), self.attribute_mapping["ADC_JESD_R"][2].get_value()]) - return self._ADC_JESD_R + def read_RCU_attenuator_RW(self): + """Return the RCU_attenuator_RW attribute.""" + return self._RCU_attenuator_RW @only_when_on @fault_on_error - def read_Dither_Frequency_R(self): - """Return the Dither_Frequency_R attribute.""" - self._Dither_Frequency_R = numpy.array([self.attribute_mapping["Dither_Frequency_R"][0].get_value(), self.attribute_mapping["Dither_Frequency_R"][1].get_value()]) - return self._Dither_Frequency_R + def write_RCU_attenuator_RW(self, value): + """Set the RCU_attenuator_RW attribute.""" + v = numpy.concatenate(value) + self.attribute_mapping["RCU_attenuator_RW"].set_value(v.tolist()) + self._RCU_attenuator_RW = value @only_when_on @fault_on_error - def read_Dither_Frequency_RW(self): - """Return the Dither_Frequency_R attribute.""" - self._Dither_Frequency_RW = numpy.array([self.attribute_mapping["Dither_Frequency_RW"][0].get_value(), self.attribute_mapping["Dither_Frequency_RW"][1].get_value()]) - return self._Dither_Frequency_RW + def read_RCU_band_R(self): + """Return the RCU_band_R attribute.""" + value = numpy.array(self.attribute_mapping["RCU_band_R"].get_value()) + self._RCU_band_R = numpy.array(numpy.split(value, indices_or_sections = 32)) + return self._RCU_band_R @only_when_on @fault_on_error - def write_Dither_Frequency_RW(self, value): - """Set the Dither_Frequency_RW attribute.""" - self.attribute_mapping["Dither_Frequency_RW"][0].set_value(value[0].tolist()) - self.attribute_mapping["Dither_Frequency_RW"][1].set_value(value[1].tolist()) - self._Dither_Frequency_RW = value + def read_RCU_band_RW(self): + """Return the RCU_band_RW attribute.""" + return self._RCU_band_RW @only_when_on @fault_on_error - def read_LED_R(self): - """Return the LED_R attribute.""" - self._LED_R = self.attribute_mapping["LED_R"].get_value() - return self._LED_R + def write_RCU_band_RW(self, value): + """Set the RCU_band_RW attribute.""" + v = numpy.concatenate(value) + self.attribute_mapping["RCU_band_RW"].set_value(v.tolist()) + self._RCU_band_RW = value @only_when_on @fault_on_error - def read_LED_RW(self): - """Return the LED_RW attribute.""" - self._LED_RW = self.attribute_mapping["LED_RW"].get_value() - return self._LED_RW + def read_RCU_temperature_R(self): + """Return the RCU_temperature_R attribute.""" + self._RCU_temperature_R = numpy.array(self.attribute_mapping["RCU_temperature_R"].get_value()) + return self._RCU_temperature_R @only_when_on @fault_on_error - def write_LED_RW(self, value): - """Set the LED_RW attribute.""" - self.attribute_mapping["LED_RW"].set_value(value.tolist()) - self._LED_RW = value + def read_RCU_Pwr_dig_R(self): + """Return the RCU_Pwr_dig_R attribute.""" + self._RCU_Pwr_dig_R = numpy.array(self.attribute_mapping["RCU_Pwr_dig_R"].get_value()) + return self._RCU_Pwr_dig_R @only_when_on @fault_on_error - def read_Pwr_dig_R(self): - """Return the Pwr_dig_R attribute.""" - self._Pwr_dig_R = self.attribute_mapping["Pwr_dig_R"].get_value() - return self._Pwr_dig_R + def read_RCU_LED0_R(self): + """Return the RCU_LED0_R attribute.""" + self._RCU_LED0_R = numpy.array(self.attribute_mapping["RCU_LED0_R"].get_value()) + return self._RCU_LED0_R @only_when_on @fault_on_error - def read_Temperature_R(self): - """Return the Temperature_R attribute.""" - self._Temperature_R = self.attribute_mapping["Temperature_R"].get_value() - return self._Temperature_R + def read_RCU_LED0_RW(self): + """Return the RCU_LED0_RW attribute.""" + return self._RCU_LED0_RW @only_when_on @fault_on_error - def read_CLK_PLL_locked_R(self): - """Return the CLK_PLL_locked_R attribute.""" - self._CLK_PLL_locked_R = self.attribute_mapping["CLK_PLL_locked_R"].get_value() - return self._CLK_PLL_locked_R + def write_RCU_LED0_RW(self, value): + """Set the RCU_LED0_RW attribute.""" + self.attribute_mapping["RCU_LED0_RW"].set_value(value.tolist()) + self._RCU_LED0_RW = value + + @only_when_on + @fault_on_error + def read_RCU_ADC_lock_R(self): + """Return the RCU_ADC_lock_R attribute.""" + value = numpy.array(self.attribute_mapping["RCU_ADC_lock_R"].get_value()) + self._RCU_ADC_lock_R = numpy.array(numpy.split(value, indices_or_sections = 32)) + return self._RCU_ADC_lock_R + + @only_when_on + @fault_on_error + def read_RCU_ADC_SYNC_R(self): + """Return the RCU_ADC_SYNC_R attribute.""" + value = numpy.array(self.attribute_mapping["RCU_ADC_SYNC_R"].get_value()) + self._RCU_ADC_SYNC_R = numpy.array(numpy.split(value, indices_or_sections = 32)) + return self._RCU_ADC_SYNC_R + + @only_when_on + @fault_on_error + def read_RCU_ADC_JESD_R(self): + """Return the RCU_ADC_JESD_R attribute.""" + value = numpy.array(self.attribute_mapping["RCU_ADC_JESD_R"].get_value()) + self._RCU_ADC_JESD_R = numpy.array(numpy.split(value, indices_or_sections = 32)) + return self._RCU_ADC_JESD_R + + @only_when_on + @fault_on_error + def read_RCU_ADC_CML_R(self): + """Return the RCU_ADC_CML_R attribute.""" + value = numpy.array(self.attribute_mapping["RCU_ADC_CML_R"].get_value()) + self._RCU_ADC_CML_R = numpy.array(numpy.split(value, indices_or_sections = 32)) + return self._RCU_ADC_CML_R + + @only_when_on + @fault_on_error + def read_RCU_OUT1_R(self): + """Return the RCU_OUT1_R attribute.""" + value = numpy.array(self.attribute_mapping["RCU_OUT1_R"].get_value()) + self._RCU_OUT1_R = numpy.array(numpy.split(value, indices_or_sections = 32)) + return self._RCU_OUT1_R + + @only_when_on + @fault_on_error + def read_RCU_OUT2_R(self): + """Return the RCU_OUT2_R attribute.""" + value = numpy.array(self.attribute_mapping["RCU_OUT2_R"].get_value()) + self._RCU_OUT2_R = numpy.array(numpy.split(value, indices_or_sections = 32)) + return self._RCU_OUT2_R + + @only_when_on + @fault_on_error + def read_RCU_ID_R(self): + """Return the RCU_ID_R attribute.""" + self._RCU_ID_R = numpy.array(self.attribute_mapping["RCU_ID_R"].get_value()) + return self._RCU_ID_R + + @only_when_on + @fault_on_error + def read_RCU_version_R(self): + """Return the RCU_version_R attribute.""" + value = self.attribute_mapping["RCU_version_R"].get_value() + self._RCU_version_R = numpy.array(value) + return self._RCU_version_R + + @only_when_on + @fault_on_error + def read_RCU_monitor_rate_RW(self): + """Return the RCU_monitor_rate_RW attribute.""" + return self._RCU_monitor_rate_RW + + @only_when_on + @fault_on_error + def write_RCU_monitor_rate_RW(self, value): + """Set the RCU_monitor_rate_RW attribute.""" + self.attribute_mapping["RCU_monitor_rate_RW"].set_value(value) + self._RCU_monitor_rate_RW = value # -------- @@ -529,7 +680,7 @@ class RCUSCC(Device): :return:None """ -# self.attribute_mapping["RCU_off"]() + self.function_mapping["RCU_off"]() @command( ) @@ -539,7 +690,27 @@ class RCUSCC(Device): :return:None """ -# self.attribute_mapping["RCU_on"]() + self.function_mapping["RCU_on"]() + + @command( + ) + @DebugIt() + def ADC_on(self): + """ + + :return:None + """ + self.function_mapping["ADC_on"]() + + @command( + ) + @DebugIt() + def RCU_update(self): + """ + + :return:None + """ + self.function_mapping["RCU_update"]() # ----------