REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
Loading...
Searching...
No Matches
loop.cpp
Go to the documentation of this file.
1#include <proto/main.pb.h>
2#include <Arduino.h>
3#include "carrier/carrier.h"
4#include "entity/entity_manager.h" // only for native code
5
6void setup();
7void loop();
8
9// This was straightforwardly extracted from the test_prepare_eeproms:
10using namespace entities;
11using namespace metadata;
12using namespace blocks;
13
14auto system_type = carrier::Carrier::TYPES::LUCIDAC; // Set this to LUCIDAC or mREDAC depending on your system
15
16// Overwrite all existing EEPROM data (usually not what you want)
17bool force_overwrite = false;
18
19// Carrier Module
20Version carrier_version(1, 0, 0);
21EntityClassifier carrier_classifier{EntityClass::CARRIER, static_cast<uint8_t>(system_type), carrier_version};
22// CTRL-Block
23Version ctrl_version(1, 0, 2);
24EntityClassifier ctrl_classifier{EntityClass::CTRL_BLOCK, EntityClassifier::DEFAULT_, ctrl_version};
25// Front Panel
26Version fp_version(1, 1, 2);
27EntityClassifier fp_classifier{EntityClass::FRONT_PANEL, EntityClassifier::DEFAULT_, fp_version};
28// Back Panel
29Version bp_version(1, 2, 3); // random
30EntityClassifier bp_classifier{EntityClass::BACK_PANEL, EntityClassifier::DEFAULT_, bp_version};
31// T-Block
32Version t_version(1, 0, 2);
33EntityClassifier t_classifier{EntityClass::T_BLOCK, EntityClassifier::DEFAULT_, t_version};
34
35// U-Block
36Version u_version(1, 2, 1);
37EntityClassifier u_classifier{EntityClass::U_BLOCK, EntityClassifier::DEFAULT_, u_version};
38// C-Block
39Version c_version(1, 0, 0);
40EntityClassifier c_classifier{EntityClass::C_BLOCK, EntityClassifier::DEFAULT_, c_version};
41// I-Block
42Version i_version(1, 2, 0);
43EntityClassifier i_classifier{EntityClass::I_BLOCK, EntityClassifier::DEFAULT_, i_version};
44// SH-Block
45Version sh_version(0, 1, 0);
46EntityClassifier sh_classifier{EntityClass::SH_BLOCK, EntityClassifier::DEFAULT_, sh_version};
47// M0-Block
48Version m0_version(1, 1, 1);
49EntityClassifier m0_classifier{EntityClass::M_BLOCK, (uint8_t)(MBlock::TYPES::M_INT8_BLOCK), m0_version};
50// M1-Block
51Version m1_version(1, 1, 0);
52EntityClassifier m1_classifier{EntityClass::M_BLOCK, (uint8_t)(MBlock::TYPES::M_MUL4_BLOCK), m1_version};
53
55 using namespace entities;
56
57 EntityManager.addClassifier(bus::address_from_tuple(bus::CARRIER_BADDR, 0), carrier_classifier);
58 EntityManager.addClassifier(bus::address_from_tuple(bus::CTRL_BLOCK_BADDR, 0), ctrl_classifier);
59
60 if (system_type == carrier::Carrier::TYPES::LUCIDAC) {
61 EntityManager.addClassifier(bus::address_from_tuple(bus::FRONTPLANE_BADDR, 0), fp_classifier);
62 }
63
64 // skipping everything just to concentrate on what is interesting
65
66 for (int cluster = 0; cluster < 3; cluster++) {
67 EntityManager.addClassifier(bus::I_BLOCK_BADDR(cluster), i_classifier);
68 EntityManager.addClassifier(bus::C_BLOCK_BADDR(cluster), c_classifier);
69 EntityManager.addClassifier(bus::U_BLOCK_BADDR(cluster), u_classifier);
70 EntityManager.addClassifier(bus::M0_BLOCK_BADDR(cluster), m0_classifier);
71 EntityManager.addClassifier(bus::M1_BLOCK_BADDR(cluster), m1_classifier);
72 EntityManager.addClassifier(bus::SH_BLOCK_BADDR(cluster), sh_classifier);
73 }
74
75 if (system_type == carrier::Carrier::TYPES::mREDAC) {
76 EntityManager.addClassifier(bus::address_from_tuple(bus::CARRIER_T_BLOCK_BADDR, 0), t_classifier);
77 EntityManager.addClassifier(bus::address_from_tuple(bus::BPL_T0_BLOCK_BADDR, 0), t_classifier);
78 EntityManager.addClassifier(bus::address_from_tuple(bus::BPL_T1_BLOCK_BADDR, 0), t_classifier);
79 EntityManager.addClassifier(bus::address_from_tuple(bus::BPL_T2_BLOCK_BADDR, 0), t_classifier);
80 EntityManager.addClassifier(bus::address_from_tuple(bus::BACKPLANE_BADDR, 0), bp_classifier);
81 }
82
83 EntityManager.addClassifier(bus::address_from_tuple(bus::CTRL_BLOCK_BADDR, 0), bp_classifier);
84}
85
86int main() {
88
89 auto &carrier = carrier::Carrier::get();
90
91 carrier.init();
92 setup();
93 while (true) {
94 loop();
95 }
96 return 0;
97}
EntityClassifier t_classifier
Definition loop.cpp:33
Version m0_version(1, 1, 1)
Version bp_version(1, 2, 3)
Version t_version(1, 0, 2)
EntityClassifier i_classifier
Definition loop.cpp:43
EntityClassifier fp_classifier
Definition loop.cpp:27
EntityClassifier ctrl_classifier
Definition loop.cpp:24
Version m1_version(1, 1, 0)
EntityClassifier m0_classifier
Definition loop.cpp:49
void setup()
EntityClassifier bp_classifier
Definition loop.cpp:30
Version carrier_version(1, 0, 0)
EntityClassifier c_classifier
Definition loop.cpp:40
auto system_type
Definition loop.cpp:14
Version fp_version(1, 1, 2)
EntityClassifier sh_classifier
Definition loop.cpp:46
EntityClassifier carrier_classifier
Definition loop.cpp:21
void register_simulated_entities()
Definition loop.cpp:54
Version c_version(1, 0, 0)
EntityClassifier u_classifier
Definition loop.cpp:37
Version sh_version(0, 1, 0)
EntityClassifier m1_classifier
Definition loop.cpp:52
bool force_overwrite
Definition loop.cpp:17
Version i_version(1, 2, 0)
Version u_version(1, 2, 1)
int main()
Definition loop.cpp:86
Version ctrl_version(1, 0, 2)
void loop()
Definition daq.h:14
EntityManager_ EntityManager