10 using namespace std::chrono;
11 using namespace std::chrono_literals;
18 vector<thread> threads;
19 vector<tuple<shared_ptr<dai::Device>,
int>> devices;
20 int deviceCounter = 0;
24 auto t1 = steady_clock::now();
25 vector<dai::DeviceInfo> availableDevices;
28 this_thread::sleep_for(500ms);
29 }
while(availableDevices.size() <= 1 && steady_clock::now() - t1 <= 3s);
31 for(
const auto& dev : availableDevices) {
32 threads.push_back(thread([&
mtx, &devices, dev, deviceCounter]() {
40 xoutRgb->setStreamName(
"rgb");
46 camRgb->setInterleaved(
false);
50 camRgb->preview.link(xoutRgb->input);
54 std::ignore = deviceCounter;
57 device->getOutputQueue(
"rgb", 4,
false);
59 cout <<
"MXID: " << device->getMxId() << endl;
60 cout <<
"Connected cameras: ";
61 for(
const auto& cam : device->getConnectedCameras()) {
66 unique_lock<std::mutex> l(
mtx);
67 devices.push_back({device, 0});
74 for(
auto& thread : threads) {
78 bool finished =
false;
79 t1 = steady_clock::now();
82 std::unique_lock<std::mutex> l(
mtx);
84 finished = devices.size() > 0;
85 for(
auto& devCounter : devices) {
86 auto& dev = get<0>(devCounter);
87 auto& counter = get<1>(devCounter);
89 cout <<
"Device " << dev->getMxId() <<
" message arrived (" << counter + 1 <<
"/" <<
NUM_MESSAGES <<
")\n";
99 std::this_thread::sleep_for(1ms);
100 }
while(!finished && steady_clock::now() - t1 <
TEST_TIMEOUT);
102 return finished == 0;