66{
67
68
69
70
71
72
73
74
75
78
79 string bString;
81
82 for (
auto& el :
j.items())
83 {
84
85 for (auto& subel : el.value().items())
86 {
87 string jsonStr = subel.value().dump();
88
89
90 if (el.key() =="scifi")
91 {
92 info_scifi = nlohmann::json::parse(jsonStr);
93
94 if (info_scifi.
Class !=
"multiboard" || info_scifi.
type !=
"snd_scifi")
95 {
96 cout <<
"Wrong class/type: " << info_scifi.
Class <<
"/" << info_scifi.
type << endl;
97 break;
98 }
99
100 for (
int i = 0;
i < info_scifi.
boards.size();
i++)
101 {
102 bString = Form(
"board_%i", info_scifi.
boards.at(i));
103 c =::toupper(subel.key()[1]);
104 boardMaps[
"Scifi"][bString][Form(
"M%c%c", subel.key()[0], c )] =
i;
105 }
106 }
107 else if (el.key() =="veto")
108 {
109 info = nlohmann::json::parse(jsonStr);
110
111 if (
info.Class !=
"multislot" ||
info.type !=
"snd_veto")
112 {
113 cout <<
"Wrong class/type: " <<
info.Class <<
"/" <<
info.type << endl;
114 break;
115 }
116
117 bString = Form(
"board_%i",
info.board);
119 {
121 }
122
123 for (
int i = 0;
i <
info.slots.size();
i++)
124 {
125 bString = Form(
"board_%i",
info.board);
126 if (stoi(subel.key())<3){
127 if (i==0)
boardMapsMu[
"MuFilter"][bString][
info.slots.at(i)] = Form(
"Veto_%iLeft", stoi(subel.key()));
128 else if (i==1)
boardMapsMu[
"MuFilter"][bString][
info.slots.at(i)] = Form(
"Veto_%iRight", stoi(subel.key()));
129 }
130 if (stoi(subel.key())==3)
boardMapsMu[
"MuFilter"][bString][
info.slots.at(i)] = Form(
"Veto_%iVert", stoi(subel.key()));
131 }
132 }
133 else if (el.key() =="us")
134 {
135 info = nlohmann::json::parse(jsonStr);
136
137 if (
info.Class !=
"multislot" ||
info.type !=
"snd_us")
138 {
139 cout <<
"Wrong class/type: " <<
info.Class <<
"/" <<
info.type << endl;
140 break;
141 }
142
143 bString = Form(
"board_%i",
info.board);
145 {
147 }
148
149 for (
int i = 0;
i <
info.slots.size();
i++)
150 {
151 bString = Form(
"board_%i",
info.board);
152 if (i==0)
boardMapsMu[
"MuFilter"][bString][
info.slots.at(i)] = Form(
"US_%iLeft", stoi(subel.key()));
153 else if (i==1)
boardMapsMu[
"MuFilter"][bString][
info.slots.at(i)] = Form(
"US_%iRight", stoi(subel.key()));
154 }
155 }
156 else if (el.key() =="ds")
157 {
158 info = nlohmann::json::parse(jsonStr);
159
160 if (
info.Class !=
"multislot" || (
info.type !=
"snd_dsh" &&
info.type !=
"snd_dsv"))
161 {
162 cout <<
"Wrong class/type: " <<
info.Class <<
"/" <<
info.type << endl;
163 break;
164 }
165
166 bString = Form(
"board_%i",
info.board);
168 {
170 }
171
172
173 if(
info.type ==
"snd_dsh")
174 {
175
176 for (
int i = 0;
i <
info.slots.size();
i++)
177 {
178 bString = Form(
"board_%i",
info.board);
179 if (i==0)
boardMapsMu[
"MuFilter"][bString][
info.slots.at(i)] = Form(
"DS_%iLeft", stoi(subel.key()));
180 else if (i==1)
boardMapsMu[
"MuFilter"][bString][
info.slots.at(i)] = Form(
"DS_%iRight", stoi(subel.key()));
181 }
182 }
183 else
184 {
185 boardMapsMu[
"MuFilter"][bString][
info.slots.at(0)] = Form(
"DS_%iVert", stoi(subel.key()));
186 }
187 }
188 else
189 {
190 cout << "Unknown subsystem " << el.key() <<endl;
191 break;
192 }
193 }
194 }
196}
map< string, map< string, map< string, int > > > boardMaps
map< string, map< string, map< string, string > > > boardMapsMu