81 BOOST_TEST(regs.hasRegister(
"/SomeTopLevelRegister"));
82 BOOST_TEST(regs.hasRegister(
"BSP.VERSION"));
83 BOOST_TEST(regs.hasRegister(
"/BSP/VERSION"));
84 BOOST_TEST(regs.hasRegister(
"DAQ.SIMPLE2D.A"));
87 auto reg = regs.getBackendRegister(
"/SomeTopLevelRegister");
88 BOOST_TEST(reg.pathName ==
"/SomeTopLevelRegister");
89 BOOST_TEST(reg.nElements == 1);
90 BOOST_TEST(reg.elementPitchBits == 4 * 8);
91 BOOST_TEST(reg.bar == 0);
92 BOOST_TEST(reg.address == 32);
93 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_WRITE);
94 BOOST_REQUIRE(reg.channels.size() == 1);
95 BOOST_TEST(reg.channels[0].bitOffset == 0);
96 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
97 BOOST_TEST(reg.channels[0].width == 32);
98 BOOST_TEST(reg.channels[0].nFractionalBits == 8);
99 BOOST_TEST(reg.channels[0].signedFlag ==
true);
100 BOOST_TEST(reg.isBitRange ==
false);
101 BOOST_TEST(reg.description ==
"This is an example register");
102 BOOST_TEST(reg.engineeringUnit ==
"mV");
105 auto reg = regs.getBackendRegister(
"BSP.VERSION");
106 BOOST_TEST(reg.pathName ==
"/BSP/VERSION");
107 BOOST_TEST(reg.nElements == 1);
108 BOOST_TEST(reg.elementPitchBits == 4 * 8);
109 BOOST_TEST(reg.bar == 0);
110 BOOST_TEST(reg.address == 4);
111 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
112 BOOST_REQUIRE(reg.channels.size() == 1);
113 BOOST_TEST(reg.channels[0].bitOffset == 0);
114 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
115 BOOST_TEST(reg.channels[0].width == 32);
116 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
117 BOOST_TEST(reg.channels[0].signedFlag ==
false);
118 BOOST_TEST(reg.isBitRange ==
false);
121 auto reg = regs.getBackendRegister(
"BSP");
122 BOOST_TEST(reg.pathName ==
"/BSP");
123 BOOST_TEST(reg.nElements == 19201);
124 BOOST_TEST(reg.elementPitchBits == 4 * 8);
125 BOOST_TEST(reg.bar == 0);
126 BOOST_TEST(reg.address == 0);
127 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_WRITE);
128 BOOST_REQUIRE(reg.channels.size() == 1);
129 BOOST_TEST(reg.channels[0].bitOffset == 0);
130 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
131 BOOST_TEST(reg.channels[0].width == 32);
132 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
133 BOOST_TEST(reg.channels[0].signedFlag ==
false);
134 BOOST_TEST(reg.isBitRange ==
false);
137 auto reg = regs.getBackendRegister(
"APP.STATUS");
138 BOOST_TEST(reg.pathName ==
"/APP/STATUS");
139 BOOST_TEST(reg.nElements == 1);
140 BOOST_TEST(reg.elementPitchBits == 4 * 8);
141 BOOST_TEST(reg.bar == 2);
142 BOOST_TEST(reg.address == 0x8000);
143 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
144 BOOST_REQUIRE(reg.channels.size() == 1);
145 BOOST_TEST(reg.channels[0].bitOffset == 0);
146 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
148 BOOST_TEST(reg.channels[0].width == 32);
149 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
150 BOOST_TEST(reg.channels[0].signedFlag ==
false);
151 BOOST_TEST(reg.isBitRange ==
false);
154 BOOST_TEST(regs.hasRegister(
"/SCALAR"));
155 auto reg = regs.getBackendRegister(
"/SCALAR");
156 BOOST_TEST(reg.nElements == 1);
157 BOOST_REQUIRE(reg.channels.size() == 1);
158 BOOST_REQUIRE(reg.channels[0].selectedBy);
159 BOOST_TEST(reg.channels[0].selectedBy->regPath ==
"/MUX");
160 BOOST_TEST(reg.channels[0].selectedBy->val == 0);
163 auto reg = regs.getBackendRegister(
"APP.STATUS.ProbeLimiter");
164 BOOST_TEST(reg.pathName ==
"/APP/STATUS/ProbeLimiter");
165 BOOST_TEST(reg.nElements == 1);
166 BOOST_TEST(reg.elementPitchBits == 4 * 8);
167 BOOST_TEST(reg.bar == 2);
168 BOOST_TEST(reg.address == 0x8000);
169 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
170 BOOST_TEST(reg.channels.size() == 1);
171 BOOST_REQUIRE(reg.channels.size() == 1);
172 BOOST_TEST(reg.channels[0].bitOffset == 0);
173 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
175 BOOST_TEST(reg.channels[0].width == 1);
176 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
177 BOOST_TEST(reg.channels[0].signedFlag ==
false);
178 BOOST_TEST(reg.isBitRange ==
true);
181 auto reg = regs.getBackendRegister(
"APP.STATUS.ExternalInterlock");
182 BOOST_TEST(reg.pathName ==
"/APP/STATUS/ExternalInterlock");
183 BOOST_TEST(reg.nElements == 1);
184 BOOST_TEST(reg.elementPitchBits == 4 * 8);
185 BOOST_TEST(reg.bar == 2);
186 BOOST_TEST(reg.address == 0x8000);
187 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
188 BOOST_REQUIRE(reg.channels.size() == 1);
189 BOOST_TEST(reg.channels[0].bitOffset == 1);
190 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
192 BOOST_TEST(reg.channels[0].width == 1);
193 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
194 BOOST_TEST(reg.channels[0].signedFlag ==
false);
195 BOOST_TEST(reg.isBitRange ==
true);
198 auto reg = regs.getBackendRegister(
"APP.STATUS.ErrorCounter");
199 BOOST_TEST(reg.pathName ==
"/APP/STATUS/ErrorCounter");
200 BOOST_TEST(reg.nElements == 1);
201 BOOST_TEST(reg.elementPitchBits == 4 * 8);
202 BOOST_TEST(reg.bar == 2);
203 BOOST_TEST(reg.address == 0x8000);
204 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
205 BOOST_REQUIRE(reg.channels.size() == 1);
206 BOOST_TEST(reg.channels[0].bitOffset == 2);
207 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
209 BOOST_TEST(reg.channels[0].width == 3);
210 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
211 BOOST_TEST(reg.channels[0].signedFlag ==
false);
212 BOOST_TEST(reg.isBitRange ==
true);
215 auto reg = regs.getBackendRegister(
"APP.LARGE_STATUS");
216 BOOST_TEST(reg.pathName ==
"/APP/LARGE_STATUS");
217 BOOST_TEST(reg.nElements == 1);
218 BOOST_TEST(reg.elementPitchBits == 8 * 8);
219 BOOST_TEST(reg.bar == 2);
220 BOOST_TEST(reg.address == 0x8004);
221 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
222 BOOST_REQUIRE(reg.channels.size() == 1);
223 BOOST_TEST(reg.channels[0].bitOffset == 0);
224 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
226 BOOST_TEST(reg.channels[0].width == 64);
227 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
228 BOOST_TEST(reg.channels[0].signedFlag ==
false);
229 BOOST_TEST(reg.isBitRange ==
false);
232 auto reg = regs.getBackendRegister(
"APP.LARGE_STATUS.ProbeLimiter");
233 BOOST_TEST(reg.pathName ==
"/APP/LARGE_STATUS/ProbeLimiter");
234 BOOST_TEST(reg.nElements == 1);
235 BOOST_TEST(reg.elementPitchBits == 8 * 8);
236 BOOST_TEST(reg.bar == 2);
237 BOOST_TEST(reg.address == 0x8004);
238 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
239 BOOST_TEST(reg.channels.size() == 1);
240 BOOST_REQUIRE(reg.channels.size() == 1);
241 BOOST_TEST(reg.channels[0].bitOffset == 0);
242 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
244 BOOST_TEST(reg.channels[0].width == 1);
245 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
246 BOOST_TEST(reg.channels[0].signedFlag ==
false);
247 BOOST_TEST(reg.isBitRange ==
true);
250 auto reg = regs.getBackendRegister(
"APP.LARGE_STATUS.ExternalInterlock");
251 BOOST_TEST(reg.pathName ==
"/APP/LARGE_STATUS/ExternalInterlock");
252 BOOST_TEST(reg.nElements == 1);
253 BOOST_TEST(reg.elementPitchBits == 8 * 8);
254 BOOST_TEST(reg.bar == 2);
255 BOOST_TEST(reg.address == 0x8004);
256 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
257 BOOST_REQUIRE(reg.channels.size() == 1);
258 BOOST_TEST(reg.channels[0].bitOffset == 34);
259 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
261 BOOST_TEST(reg.channels[0].width == 1);
262 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
263 BOOST_TEST(reg.channels[0].signedFlag ==
false);
264 BOOST_TEST(reg.isBitRange ==
true);
267 auto reg = regs.getBackendRegister(
"APP.LARGE_STATUS.ErrorCounter");
268 BOOST_TEST(reg.pathName ==
"/APP/LARGE_STATUS/ErrorCounter");
269 BOOST_TEST(reg.nElements == 1);
270 BOOST_TEST(reg.elementPitchBits == 8 * 8);
271 BOOST_TEST(reg.bar == 2);
272 BOOST_TEST(reg.address == 0x8004);
273 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
274 BOOST_REQUIRE(reg.channels.size() == 1);
275 BOOST_TEST(reg.channels[0].bitOffset == 2);
276 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
278 BOOST_TEST(reg.channels[0].width == 3);
279 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
280 BOOST_TEST(reg.channels[0].signedFlag ==
false);
281 BOOST_TEST(reg.isBitRange ==
true);
284 auto reg = regs.getBackendRegister(
"APP.SomeTable");
285 BOOST_TEST(reg.pathName ==
"/APP/SomeTable");
286 BOOST_TEST(reg.nElements == 16384);
287 BOOST_TEST(reg.elementPitchBits == 2 * 8);
288 BOOST_TEST(reg.bar == 0);
289 BOOST_TEST(reg.address == 2048);
290 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::WRITE_ONLY);
291 BOOST_REQUIRE(reg.channels.size() == 1);
292 BOOST_TEST(reg.channels[0].bitOffset == 0);
293 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
294 BOOST_TEST(reg.channels[0].width == 14);
295 BOOST_TEST(reg.channels[0].nFractionalBits == 10);
296 BOOST_TEST(reg.channels[0].signedFlag ==
true);
297 BOOST_TEST(!reg.doubleBuffer.has_value());
298 BOOST_TEST(reg.isBitRange ==
false);
301 auto reg = regs.getBackendRegister(
"DAQ.CTRL");
302 BOOST_TEST(reg.pathName ==
"/DAQ/CTRL");
303 BOOST_TEST(reg.nElements == 16384);
304 BOOST_TEST(reg.elementPitchBits == 64 * 8);
305 BOOST_TEST(reg.bar == 13);
306 BOOST_TEST(reg.address == 0x40000);
307 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::INTERRUPT);
308 BOOST_TEST(reg.interruptId == std::vector<size_t>({3, 0, 1}), boost::test_tools::per_element());
309 BOOST_TEST(reg.doubleBuffer.has_value());
310 BOOST_TEST(reg.doubleBuffer->address == 0x40200);
311 BOOST_TEST(reg.doubleBuffer->inactiveBufferRegisterPath ==
"/DAQ.DOUBLE_BUF.INACTIVE_BUF_ID");
312 BOOST_TEST(reg.doubleBuffer->enableRegisterPath ==
"/DAQ.DOUBLE_BUF.ENA");
314 BOOST_REQUIRE(reg.channels.size() == 5);
316 for(
const auto& channel : reg.channels) {
317 BOOST_TEST(!channel.selectedBy);
320 BOOST_TEST(reg.channels[0].bitOffset == 0);
321 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
322 BOOST_TEST(reg.channels[0].width == 16);
323 BOOST_TEST(reg.channels[0].nFractionalBits == -2);
324 BOOST_TEST(reg.channels[0].signedFlag ==
true);
326 BOOST_TEST(reg.channels[1].bitOffset == 2 * 8);
327 BOOST_CHECK(reg.channels[1].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
328 BOOST_TEST(reg.channels[1].width == 16);
329 BOOST_TEST(reg.channels[1].nFractionalBits == -2);
330 BOOST_TEST(reg.channels[1].signedFlag ==
true);
332 BOOST_TEST(reg.channels[2].bitOffset == 4 * 8);
333 BOOST_CHECK(reg.channels[2].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
334 BOOST_TEST(reg.channels[2].width == 32);
335 BOOST_TEST(reg.channels[2].nFractionalBits == 0);
336 BOOST_TEST(reg.channels[2].signedFlag ==
false);
337 BOOST_TEST(reg.isBitRange ==
false);
343 auto reg = regs.getBackendRegister(
"DAQ.CTRL.errorI");
344 BOOST_TEST(reg.pathName ==
"/DAQ/CTRL/errorI");
345 BOOST_TEST(reg.engineeringUnit ==
"bits");
346 BOOST_TEST(reg.description ==
"Error signal in I");
347 BOOST_TEST(reg.nElements == 16384);
348 BOOST_TEST(reg.elementPitchBits == 64 * 8);
349 BOOST_TEST(reg.bar == 13);
350 BOOST_TEST(reg.address == 0x40000);
351 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::INTERRUPT);
353 BOOST_REQUIRE(reg.channels.size() == 1);
354 BOOST_TEST(reg.channels[0].bitOffset == 0);
355 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
356 BOOST_TEST(reg.channels[0].width == 16);
357 BOOST_TEST(reg.channels[0].nFractionalBits == -2);
358 BOOST_TEST(reg.channels[0].signedFlag ==
true);
361 BOOST_TEST(!reg.channels[0].selectedBy);
362 BOOST_TEST(reg.doubleBuffer.has_value());
363 BOOST_TEST(reg.doubleBuffer->address == 0x40200);
364 BOOST_TEST(reg.doubleBuffer->enableRegisterPath ==
"/DAQ.DOUBLE_BUF.ENA");
365 BOOST_TEST(reg.doubleBuffer->inactiveBufferRegisterPath ==
"/DAQ.DOUBLE_BUF.INACTIVE_BUF_ID");
366 BOOST_TEST(reg.doubleBuffer->index == 0);
369 auto reg = regs.getBackendRegister(
"DAQ.CTRL.errorQ");
370 BOOST_TEST(reg.pathName ==
"/DAQ/CTRL/errorQ");
371 BOOST_TEST(reg.engineeringUnit ==
"bits");
372 BOOST_TEST(reg.description ==
"Error signal in Q");
373 BOOST_TEST(reg.nElements == 16384);
374 BOOST_TEST(reg.elementPitchBits == 64 * 8);
375 BOOST_TEST(reg.bar == 13);
376 BOOST_TEST(reg.address == 0x40000 + 2);
377 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::INTERRUPT);
379 BOOST_REQUIRE(reg.channels.size() == 1);
380 BOOST_TEST(reg.channels[0].bitOffset == 0);
381 BOOST_TEST(reg.channels[0].width == 16);
383 BOOST_TEST(reg.doubleBuffer.has_value());
384 BOOST_TEST(reg.doubleBuffer->address == 0x40200 + 2);
385 BOOST_TEST(reg.doubleBuffer->enableRegisterPath ==
"/DAQ.DOUBLE_BUF.ENA");
386 BOOST_TEST(reg.doubleBuffer->inactiveBufferRegisterPath ==
"/DAQ.DOUBLE_BUF.INACTIVE_BUF_ID");
387 BOOST_TEST(reg.doubleBuffer->index == 0);
393 auto reg = regs.getBackendRegister(
"DAQ.CTRL.errorI.BUF0");
394 BOOST_TEST(reg.pathName ==
"/DAQ/CTRL/errorI/BUF0");
395 BOOST_TEST(reg.nElements == 16384);
396 BOOST_TEST(reg.elementPitchBits == 64 * 8);
397 BOOST_TEST(reg.bar == 13);
398 BOOST_TEST(reg.address == 0x40000);
399 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
400 BOOST_CHECK(!reg.doubleBuffer.has_value());
401 BOOST_REQUIRE(reg.channels.size() == 1);
402 BOOST_TEST(reg.channels[0].bitOffset == 0);
403 BOOST_TEST(reg.channels[0].width == 16);
407 auto reg = regs.getBackendRegister(
"DAQ.CTRL.errorI.BUF1");
408 BOOST_TEST(reg.pathName ==
"/DAQ/CTRL/errorI/BUF1");
409 BOOST_TEST(reg.nElements == 16384);
410 BOOST_TEST(reg.elementPitchBits == 64 * 8);
411 BOOST_TEST(reg.bar == 13);
412 BOOST_TEST(reg.address == 0x40200);
413 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
414 BOOST_CHECK(!reg.doubleBuffer.has_value());
415 BOOST_REQUIRE(reg.channels.size() == 1);
416 BOOST_TEST(reg.channels[0].bitOffset == 0);
417 BOOST_TEST(reg.channels[0].width == 16);
422 auto reg0 = regs.getBackendRegister(
"DAQ.CTRL.errorQ.BUF0");
423 BOOST_TEST(reg0.address == 0x40000 + 2);
424 auto reg1 = regs.getBackendRegister(
"DAQ.CTRL.errorQ.BUF1");
425 BOOST_TEST(reg1.address == 0x40200 + 2);
430 auto reg = regs.getBackendRegister(
"DAQ.SIMPLE2D.A");
431 BOOST_TEST(reg.pathName ==
"/DAQ/SIMPLE2D/A");
432 BOOST_TEST(reg.bar == 13);
433 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
436 BOOST_REQUIRE(reg.channels.size() == 1);
437 BOOST_TEST(reg.channels[0].bitOffset == 0);
438 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
439 BOOST_TEST(reg.channels[0].width == 16);
442 BOOST_TEST(!reg.channels[0].selectedBy);
445 auto reg = regs.getBackendRegister(
"DAQ.FD");
446 BOOST_TEST(reg.pathName ==
"/DAQ/FD");
447 BOOST_TEST(reg.nElements == 16384);
448 BOOST_TEST(reg.elementPitchBits == 64 * 8);
449 BOOST_TEST(reg.bar == 13);
450 BOOST_TEST(reg.address == 0x81000);
451 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::INTERRUPT);
452 BOOST_TEST(reg.interruptId == std::vector<size_t>({0}), boost::test_tools::per_element());
454 BOOST_REQUIRE(reg.channels.size() == 4);
456 BOOST_TEST(reg.channels[0].bitOffset == 0);
457 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
458 BOOST_TEST(reg.channels[0].width == 16);
459 BOOST_TEST(reg.channels[0].nFractionalBits == -2);
460 BOOST_TEST(reg.channels[0].signedFlag ==
true);
461 BOOST_REQUIRE(reg.channels[0].selectedBy);
462 BOOST_TEST(reg.channels[0].selectedBy->regPath ==
"/DAQ/MUX_SEL");
463 BOOST_TEST(reg.channels[0].selectedBy->val == 0);
465 BOOST_TEST(reg.channels[1].bitOffset == 0);
466 BOOST_CHECK(reg.channels[1].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
467 BOOST_TEST(reg.channels[1].width == 32);
468 BOOST_TEST(reg.channels[1].nFractionalBits == 0);
469 BOOST_TEST(reg.channels[1].signedFlag ==
true);
470 BOOST_REQUIRE(reg.channels[1].selectedBy);
471 BOOST_TEST(reg.channels[1].selectedBy->regPath ==
"/DAQ/MUX_SEL");
472 BOOST_TEST(reg.channels[1].selectedBy->val == 1);
474 BOOST_TEST(reg.channels[2].bitOffset == 2 * 8);
475 BOOST_CHECK(reg.channels[2].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
476 BOOST_TEST(reg.channels[2].width == 16);
477 BOOST_TEST(reg.channels[2].nFractionalBits == -2);
478 BOOST_TEST(reg.channels[2].signedFlag ==
true);
479 BOOST_REQUIRE(reg.channels[2].selectedBy);
480 BOOST_TEST(reg.channels[2].selectedBy->regPath ==
"/DAQ/MUX_SEL");
481 BOOST_TEST(reg.channels[2].selectedBy->val == 0);
483 BOOST_TEST(reg.channels[3].bitOffset == 4 * 8);
484 BOOST_CHECK(reg.channels[3].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
485 BOOST_TEST(reg.channels[3].width == 32);
486 BOOST_TEST(reg.channels[3].nFractionalBits == 0);
487 BOOST_TEST(reg.channels[3].signedFlag ==
true);
488 BOOST_REQUIRE(reg.channels[3].selectedBy);
489 BOOST_TEST(reg.channels[3].selectedBy->regPath ==
"/DAQ/MUX_SEL");
490 BOOST_TEST(reg.channels[3].selectedBy->val == 1);
491 BOOST_TEST(reg.isBitRange ==
false);
494 auto reg = regs.getBackendRegister(
"DAQ.DOUBLE_BUF.ENA");
495 BOOST_TEST(reg.pathName ==
"/DAQ/DOUBLE_BUF/ENA");
496 BOOST_TEST(reg.nElements == 3);
497 BOOST_TEST(reg.elementPitchBits == 4 * 8);
498 BOOST_TEST(reg.bar == 0);
499 BOOST_TEST(reg.address == 1236);
500 BOOST_REQUIRE(reg.channels.size() == 1);
501 BOOST_TEST(reg.channels[0].bitOffset == 0);
502 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
503 BOOST_TEST(reg.channels[0].width == 1);
504 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
505 BOOST_TEST(reg.channels[0].signedFlag ==
false);
506 BOOST_TEST(reg.isBitRange ==
false);
509 auto reg = regs.getBackendRegister(
"DAQ.DOUBLE_BUF.INACTIVE_BUF_ID");
510 BOOST_TEST(reg.pathName ==
"/DAQ/DOUBLE_BUF/INACTIVE_BUF_ID");
511 BOOST_TEST(reg.nElements == 3);
512 BOOST_TEST(reg.elementPitchBits == 4 * 8);
513 BOOST_TEST(reg.bar == 0);
514 BOOST_TEST(reg.address == 1240);
515 BOOST_REQUIRE(reg.channels.size() == 1);
516 BOOST_TEST(reg.channels[0].bitOffset == 0);
517 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
518 BOOST_TEST(reg.channels[0].width == 1);
519 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
520 BOOST_TEST(reg.channels[0].signedFlag ==
false);
521 BOOST_TEST(reg.isBitRange ==
false);
524 auto reg = regs.getBackendRegister(
"DAQ.FD.BUF0");
525 BOOST_TEST(reg.pathName ==
"/DAQ/FD/BUF0");
526 BOOST_TEST(reg.nElements == 16384);
527 BOOST_TEST(reg.elementPitchBits == 64 * 8);
528 BOOST_TEST(reg.bar == 13);
529 BOOST_TEST(reg.address == 0x81000);
531 BOOST_REQUIRE(reg.channels.size() == 4);
533 BOOST_TEST(reg.channels[0].bitOffset == 0);
534 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
535 BOOST_TEST(reg.channels[0].width == 16);
536 BOOST_TEST(reg.channels[0].nFractionalBits == -2);
537 BOOST_TEST(reg.channels[0].signedFlag ==
true);
538 BOOST_REQUIRE(reg.channels[0].selectedBy);
539 BOOST_TEST(reg.channels[0].selectedBy->regPath ==
"/DAQ/MUX_SEL");
540 BOOST_TEST(reg.channels[0].selectedBy->val == 0);
542 BOOST_TEST(reg.channels[1].bitOffset == 0);
543 BOOST_CHECK(reg.channels[1].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
544 BOOST_TEST(reg.channels[1].width == 32);
545 BOOST_TEST(reg.channels[1].nFractionalBits == 0);
546 BOOST_TEST(reg.channels[1].signedFlag ==
true);
547 BOOST_REQUIRE(reg.channels[0].selectedBy);
548 BOOST_TEST(reg.channels[1].selectedBy->regPath ==
"/DAQ/MUX_SEL");
549 BOOST_TEST(reg.channels[1].selectedBy->val == 1);
551 BOOST_TEST(reg.channels[2].bitOffset == 2 * 8);
552 BOOST_CHECK(reg.channels[2].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
553 BOOST_TEST(reg.channels[2].width == 16);
554 BOOST_TEST(reg.channels[2].nFractionalBits == -2);
555 BOOST_TEST(reg.channels[2].signedFlag ==
true);
556 BOOST_REQUIRE(reg.channels[0].selectedBy);
557 BOOST_TEST(reg.channels[2].selectedBy->regPath ==
"/DAQ/MUX_SEL");
558 BOOST_TEST(reg.channels[2].selectedBy->val == 0);
560 BOOST_TEST(reg.channels[3].bitOffset == 4 * 8);
561 BOOST_CHECK(reg.channels[3].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
562 BOOST_TEST(reg.channels[3].width == 32);
563 BOOST_TEST(reg.channels[3].nFractionalBits == 0);
564 BOOST_TEST(reg.channels[3].signedFlag ==
true);
565 BOOST_REQUIRE(reg.channels[0].selectedBy);
566 BOOST_TEST(reg.channels[3].selectedBy->regPath ==
"/DAQ/MUX_SEL");
567 BOOST_TEST(reg.channels[3].selectedBy->val == 1);
568 BOOST_TEST(reg.isBitRange ==
false);
571 auto reg = regs.getBackendRegister(
"DAQ.FD.BUF1");
572 BOOST_TEST(reg.pathName ==
"/DAQ/FD/BUF1");
573 BOOST_TEST(reg.nElements == 16384);
574 BOOST_TEST(reg.elementPitchBits == 64 * 8);
575 BOOST_TEST(reg.bar == 13);
577 BOOST_REQUIRE(reg.channels.size() == 4);
579 BOOST_TEST(reg.channels[0].bitOffset == 0);
580 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
581 BOOST_TEST(reg.channels[0].width == 16);
582 BOOST_TEST(reg.channels[0].nFractionalBits == -2);
583 BOOST_TEST(reg.channels[0].signedFlag ==
true);
584 BOOST_REQUIRE(reg.channels[0].selectedBy);
585 BOOST_TEST(reg.channels[0].selectedBy->regPath ==
"/DAQ/MUX_SEL");
586 BOOST_TEST(reg.channels[0].selectedBy->val == 0);
588 BOOST_TEST(reg.channels[1].bitOffset == 0);
589 BOOST_CHECK(reg.channels[1].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
590 BOOST_TEST(reg.channels[1].width == 32);
591 BOOST_TEST(reg.channels[1].nFractionalBits == 0);
592 BOOST_TEST(reg.channels[1].signedFlag ==
true);
593 BOOST_REQUIRE(reg.channels[0].selectedBy);
594 BOOST_TEST(reg.channels[1].selectedBy->regPath ==
"/DAQ/MUX_SEL");
595 BOOST_TEST(reg.channels[1].selectedBy->val == 1);
597 BOOST_TEST(reg.channels[2].bitOffset == 2 * 8);
598 BOOST_CHECK(reg.channels[2].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
599 BOOST_TEST(reg.channels[2].width == 16);
600 BOOST_TEST(reg.channels[2].nFractionalBits == -2);
601 BOOST_TEST(reg.channels[2].signedFlag ==
true);
602 BOOST_REQUIRE(reg.channels[0].selectedBy);
603 BOOST_TEST(reg.channels[2].selectedBy->regPath ==
"/DAQ/MUX_SEL");
604 BOOST_TEST(reg.channels[2].selectedBy->val == 0);
606 BOOST_TEST(reg.channels[3].bitOffset == 4 * 8);
607 BOOST_CHECK(reg.channels[3].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
608 BOOST_TEST(reg.channels[3].width == 32);
609 BOOST_TEST(reg.channels[3].nFractionalBits == 0);
610 BOOST_TEST(reg.channels[3].signedFlag ==
true);
611 BOOST_REQUIRE(reg.channels[0].selectedBy);
612 BOOST_TEST(reg.channels[3].selectedBy->regPath ==
"/DAQ/MUX_SEL");
613 BOOST_TEST(reg.channels[3].selectedBy->val == 1);
614 BOOST_TEST(reg.isBitRange ==
false);
617 auto reg = regs.getBackendRegister(
"DAQ.MUX_SEL");
618 BOOST_TEST(reg.pathName ==
"/DAQ/MUX_SEL");
619 BOOST_TEST(reg.nElements == 1);
620 BOOST_TEST(reg.elementPitchBits == 4 * 8);
621 BOOST_TEST(reg.bar == 0);
622 BOOST_TEST(reg.address == 1244);
623 BOOST_REQUIRE(reg.channels.size() == 1);
624 BOOST_TEST(reg.channels[0].bitOffset == 0);
625 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
626 BOOST_TEST(reg.channels[0].width == 2);
627 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
628 BOOST_TEST(reg.channels[0].signedFlag ==
false);
629 BOOST_TEST(reg.isBitRange ==
false);
632 auto reg = regs.getBackendRegister(
"DAQ.MACRO_PULSE_NUMBER");
633 BOOST_TEST(reg.pathName ==
"/DAQ/MACRO_PULSE_NUMBER");
634 BOOST_TEST(reg.nElements == 1);
635 BOOST_TEST(reg.elementPitchBits == 4 * 8);
636 BOOST_TEST(reg.bar == 13);
637 BOOST_TEST(reg.address == 0x8103C);
638 BOOST_REQUIRE(reg.channels.size() == 1);
639 BOOST_TEST(reg.channels[0].bitOffset == 0);
640 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
641 BOOST_TEST(reg.channels[0].width == 32);
642 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
643 BOOST_TEST(reg.channels[0].signedFlag ==
false);
644 BOOST_TEST(reg.isBitRange ==
false);
647 auto reg = regs.getBackendRegister(
"BSP.SOME_INFO");
648 BOOST_TEST(reg.pathName ==
"/BSP/SOME_INFO");
649 BOOST_TEST(reg.nElements == 1);
650 BOOST_TEST(reg.elementPitchBits == 40 * 8);
651 BOOST_TEST(reg.bar == 0);
652 BOOST_TEST(reg.address == 8);
653 BOOST_REQUIRE(reg.channels.size() == 1);
654 BOOST_TEST(reg.channels[0].bitOffset == 0);
655 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::ASCII);
656 BOOST_TEST(reg.channels[0].width == 32);
657 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
658 BOOST_TEST(reg.channels[0].signedFlag ==
false);
659 BOOST_TEST(reg.isBitRange ==
false);
662 auto reg = regs.getBackendRegister(
"APP.SomeFloat");
663 BOOST_TEST(reg.pathName ==
"/APP/SomeFloat");
664 BOOST_TEST(reg.nElements == 1);
665 BOOST_TEST(reg.elementPitchBits == 4 * 8);
666 BOOST_TEST(reg.bar == 0);
667 BOOST_TEST(reg.address == 4096);
668 BOOST_REQUIRE(reg.channels.size() == 1);
669 BOOST_TEST(reg.channels[0].bitOffset == 0);
670 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::IEEE754);
671 BOOST_TEST(reg.channels[0].width == 32);
672 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
673 BOOST_TEST(reg.channels[0].signedFlag ==
true);
674 BOOST_TEST(reg.isBitRange ==
false);
677 auto reg = regs.getBackendRegister(
"BSP.VOID_INTERRUPT_0");
678 BOOST_TEST(reg.pathName ==
"/BSP/VOID_INTERRUPT_0");
679 BOOST_TEST(reg.nElements == 0);
680 BOOST_REQUIRE(reg.channels.size() == 1);
681 BOOST_TEST(reg.channels[0].bitOffset == 0);
682 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::VOID);
683 BOOST_TEST(reg.channels[0].width == 0);
684 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
685 BOOST_TEST(reg.channels[0].signedFlag ==
false);
686 BOOST_TEST(reg.isBitRange ==
false);
689 BOOST_TEST(metas.getNumberOfMetadata() == 6);
691 BOOST_TEST(metas.getMetadata(
"mapfileRevision") ==
"1.8.3-0-gdeadbeef");
692 BOOST_TEST(metas.getMetadata(
"someRandomEntry") ==
"some random value");
694 BOOST_TEST(metas.getMetadata(
"![0]") == R
"({"INTC":{"path":"DAQ","version":1}})");
695 BOOST_TEST(metas.getMetadata("![3]") == R
"({"INTC":{"options":["MER"],"path":"MY_INTC","version":1}})");
696 BOOST_TEST(metas.getMetadata("![3,0]") == R
"({"INTC":{"options":[],"path":"MY_INTC.SUB0","version":1}})");
697 BOOST_TEST(metas.getMetadata("![3,1]") == R
"({"INTC":{"options":["MER"],"path":"MY_INTC.SUB1","version":1}})");
699 auto loi = regs.getListOfInterrupts();
700 BOOST_TEST(loi.size() == 3);
701 BOOST_CHECK(loi.find({0}) != loi.end());
702 BOOST_CHECK(loi.find({3, 0, 1}) != loi.end());
703 BOOST_CHECK(loi.find({1}) != loi.end());