9def add_daphne_conf(oksfile:str, object_name:str, json_file:str, timeout_ms:int = 1500):
10 """Script to add a new DaphneConf object from a given json file"""
12 print(
"Adding file", json_file,
"to object", object_name)
16 with open(json_file,
'r')
as file:
17 data = json.load(file)
21 schemafile=
'schema/appmodel/PDS.schema.xml'
27 def_channel = dal.DaphneV2Channel(
"daphne-v2-default-channel",
32 db.update_dal(def_channel)
35 def_adc = dal.DaphneV2ADC(
"daphne-v2-default-adc",
37 output_offset_binary=
True,
39 db.update_dal(def_adc)
41 def_pga = dal.DaphneV2PGA(
"daphne-v2-default-pga",
43 integrator_disable=
True,
45 db.update_dal(def_pga)
47 def_lna = dal.DaphneV2LNA(
"daphne-v2-default-lna",
49 integrator_disable=
True,
51 db.update_dal(def_lna)
53 def_afe = dal.DaphneV2AFE(
"daphne-v2-default-afe",
60 db.update_dal(def_afe)
62 def_board = dal.DaphneV2BoardConf(
"daphne-v2-default-board",
64 self_trigger_threshold=0,
65 default_channel=def_channel,
67 db.update_dal(def_board)
72 for key, value
in data.items() :
77 raw_channels = value[
"channel_analog_conf"]
78 raw_ids = raw_channels[
"ids"]
79 raw_gains = raw_channels[
"gains"]
80 raw_offsets = raw_channels[
"offsets"]
81 raw_trims = raw_channels[
"trims"]
82 for i, idx
in enumerate(raw_ids):
83 c=dal.DaphneV2Channel( f
"{object_name}-daphne-{key}-channel-{idx}",
86 offset=raw_offsets[i],
92 raw_afes = value[
"afes"]
93 raw_afe_ids = raw_afes[
"ids"]
94 raw_afe_attenuators = raw_afes[
"attenuators"]
95 raw_afe_biases = raw_afes[
"v_biases"]
96 raw_adcs = raw_afes[
"adcs"]
97 raw_adc_res = raw_adcs[
"resolution"]
98 raw_adc_format = raw_adcs[
"output_format"]
99 raw_adc_SB = raw_adcs[
"SB_first"]
100 raw_lnas = raw_afes[
"lnas"]
101 raw_lna_clamps = raw_lnas[
"clamp"]
102 raw_lna_gains = raw_lnas[
"gain"]
103 raw_lna_integrators = raw_lnas[
"integrator_disable"]
104 raw_pgas = raw_afes[
"pgas"]
105 raw_pga_cuts = raw_pgas[
"lpf_cut_frequency"]
106 raw_pga_integrators = raw_pgas[
"integrator_disable"]
107 raw_pga_gains = raw_pgas[
"gain"]
108 for i, idx
in enumerate(raw_afe_ids):
109 adc = dal.DaphneV2ADC( f
"{object_name}-daphne-{key}-adc-{idx}",
110 low_resolution = raw_adc_res[i],
111 output_offset_binary = raw_adc_format[i],
112 MSB_first=raw_adc_SB[i] )
115 lna = dal.DaphneV2LNA(f
"{object_name}-daphne-{key}-lna-{idx}",
116 clamp=raw_lna_clamps[i],
117 gain=raw_lna_gains[i],
118 integrator_disable=raw_lna_integrators[i] )
121 pga = dal.DaphneV2PGA(f
"{object_name}-daphne-{key}-pga-{idx}",
122 lpf_cut_frequency=raw_pga_cuts[i],
123 gain=raw_pga_gains[i],
124 integrator_disable=raw_pga_integrators[i] )
127 afe = dal.DaphneV2AFE( f
"{object_name}-daphne-{key}-afe-{idx}",
129 attenuator=raw_afe_attenuators[i],
130 v_bias=raw_afe_biases[i],
138 name = f
"{object_name}-daphne-{key}-conf"
139 detector = value[
"detector_id"]
140 crate = value[
"crate_id"]
141 slot = value[
"slot_id"]
142 board = dal.DaphneV2BoardConf( name,
143 bias_ctrl=value[
"bias_ctrl"],
144 self_trigger_threshold=value[
"self_trigger_threshold"],
145 full_stream_channels=value[
"full_stream_channels"],
146 self_trigger_xcorr=value[
"self_trigger_xcorr"],
147 tp_conf=value[
"tp_conf"],
148 compensator=value[
"compensator"],
149 inverter=value[
"inverter"],
150 active_channels=channels,
153 detector_id=detector,
156 default_channel=def_channel,
157 default_afe=def_afe )
160 link=dal.DaphneMapEntry(name,
161 key=f
"{detector}.{crate}.{slot}",
171 new_conf = dal.DaphneConf(object_name,
172 timeout_ms=timeout_ms,
174 default_v2_settings=def_board,
175 default_v3_settings=def_board )
177 db.update_dal(new_conf)