68def main(det_name, source_id, det_id, sid_suffix, channel_map):
69
70
71 if channel_map:
72 mapping = get_mapping_from_channel_map(channel_map)
73 else:
74 mapping = get_mapping(det_id, source_id)
75 print(mapping)
76
77 db = create_db(f"crp23-det-senders", get_includes())
78
79 sid_counters = {i : i * 100 for i in pd.unique(mapping["CRP"])}
80 for cg in [[0, 1, 2, 6, 7], [3, 4, 5, 8, 9]]:
81 streams = []
82 for crate in cg:
83 crate_map = mapping[mapping["Crate"] == crate]
84 amcs = pd.unique(crate_map["AMC"])
85 for amc in amcs:
86 name = f"crate{crate}-slot{amc}"
87 base_sid = pd.unique(crate_map[crate_map["AMC"] == amc]["CRP"])[0]
88 sid_counters[base_sid] += 1
89
90 amc_net_info = calculate_amc_net_info(crate, amc)
91 geo = db.create_obj(class_name = "GeoId", uid = f"geoId-{det_name}-amc-{sid_counters[base_sid]}")
92 geo["detector_id"] = det_id
93 geo["crate_id"] = crate
94 geo["slot_id"] = amc
95
96 ds = db.create_obj(class_name = "DetectorStream", uid = f"DetStream-{sid_counters[base_sid]}")
97 ds["source_id"] = sid_counters[base_sid]
98 ds["geo_id"] = geo
99
100 nw_send = db.create_obj(class_name = "NetworkInterface", uid = f"nw-{det_name}-amc-{name}-10g")
101 nw_send["mac_address"] = amc_net_info["mac_10g"]
102 nw_send["ip_address"] = [amc_net_info["ip_10g"]]
103 nw_send["network_name"] = "Data"
104
105 nw_rec = db.create_obj(class_name = "NetworkInterface", uid = f"nw-{det_name}-amc-{name}-1g")
106 nw_rec["mac_address"] = amc_net_info["mac_1g"]
107 nw_rec["ip_address"] = [amc_net_info["ip_1g"]]
108 nw_rec["network_name"] = "Control"
109
110 sender_names = sid_counters[base_sid] if sid_suffix else name
111 dds = db.create_obj(class_name = "TdeAmcDetDataSender", uid = f"dds-{det_name}-amc-{sender_names}")
112 dds["port"] = 54321 + amc + 1
113 dds["control_host"] = f"np02-amc-{sid_counters[base_sid]}"
114 dds["uses"] = nw_send
115 dds["control_endpoint"] = nw_rec
116 dds["streams"] = [ds]
117 streams.append(dds)
118 db.commit()
119 return
120
121
int main(int argc, char *argv[])