summaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp111
1 files changed, 57 insertions, 54 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 2d86dac..c717c7e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -95,6 +95,36 @@ int main(int argc, char *argv[])
qDebug() << "size of raw profile" << sizeof(Pixels);
+ QElapsedTimer t;
+ t.start();
+
+ // FIXME: don't use one var for everything
+ int ret;
+
+ auto cameras = VeyeIMX287m::search();
+
+ if (cameras.empty()) {
+ std::cerr << "No cameras were identified on the system." << std::endl;
+
+ return EXIT_FAILURE;
+ }
+
+ auto camera = cameras.at(0);
+
+ std::cout << "connect everything" << std::endl;
+
+ for (auto &i : initializers)
+ i.waitForFinished();
+ std::cout << "loaded calibration tables" << std::endl;
+
+ if (!camera->startStream()) {
+ return EXIT_FAILURE;
+ }
+
+ // TODO: refactor: scanner and http server depend on each other
+ const auto scanner = std::make_shared<Scanner>(camera);
+ auto httpServer = std::make_shared<HttpServer>(scanner);
+
// Pixels p;
// p.counters.encoderPosition = 123;
// if (!p.save("/tmp/tmp.pixels")) {
@@ -115,7 +145,7 @@ int main(int argc, char *argv[])
if (!openCalibrationTable(QStringLiteral("/home/%1/dumps/binz.calibration_table")
.arg(user),
// "/tmp/binz.calibration_table",
- ::calibrationTableZ)) {
+ scanner->calibrationTableZ())) {
exit(EXIT_FAILURE);
}
});
@@ -124,7 +154,7 @@ int main(int argc, char *argv[])
if (!openCalibrationTable(QStringLiteral("/home/%1/dumps/binx.calibration_table")
.arg(user),
// "/tmp/binx.calibration_table",
- ::calibrationTableX)) {
+ scanner->calibrationTableX())) {
exit(EXIT_FAILURE);
}
});
@@ -136,12 +166,11 @@ int main(int argc, char *argv[])
// qDebug() << "height" << calibrationColumnHeight;
auto filteredRawProfiles = filter(std::move(rawProfiles));
- qDebug() << "filtered x-profiles count is"
- << filteredRawProfiles.count();
+ qDebug() << "filtered x-profiles count is" << filteredRawProfiles.count();
- ::calibrationTableX = calibrateX(std::move(filteredRawProfiles));
+ calibrateX(std::move(filteredRawProfiles), scanner->calibrationTableX());
- interpolate(::calibrationTableX);
+ interpolate(scanner->calibrationTableX());
}
// load binary calibration dumps and calibrate
@@ -154,79 +183,53 @@ int main(int argc, char *argv[])
return EXIT_FAILURE;
}
+ std::sort(rawProfiles.begin(), rawProfiles.end(), [](const auto &a, const auto &b) {
+ return a.counters.encoderPosition < b.counters.encoderPosition;
+ });
auto filteredRawProfiles = filter(std::move(rawProfiles));
- qDebug() << "filtered z-profiles count is"
- << filteredRawProfiles.count();
+ qDebug() << "filtered z-profiles count is" << filteredRawProfiles.count();
- ::calibrationTableZ = calibrateZ(std::move(filteredRawProfiles),
- requested_params.stepsPerMm);
+ if (!calibrateZ(std::move(filteredRawProfiles),
+ requested_params.stepsPerMm,
+ scanner->calibrationTableZ())) {
+ qCritical() << "Z calibration failed, exiting";
+ exit(EXIT_FAILURE);
+ }
// DEBUG
- ::calibrationTableX = CalibrationTablePtr{new CalibrationTable{{0}}};
- memset(::calibrationTableX.get(), 0, sizeof(CalibrationTable));
- interpolate(::calibrationTableZ);
+ interpolate(scanner->calibrationTableZ());
- if (!dump(::calibrationTableZ,
+ if (!dump(scanner->calibrationTableZ(),
QStringLiteral("/home/%1/dumps/binz.calibration_table").arg(user))) {
qApp->exit(EXIT_FAILURE);
}
}
- qDebug()
- << "--------------------------------------------------------";
+ qDebug() << "--------------------------------------------------------";
if (false) {
auto rawProfiles = openDump(QStringLiteral("/home/%1/dumps/binx").arg(user));
qDebug() << "raw x-profiles count is" << rawProfiles.size();
auto filteredRawProfiles = filter(std::move(rawProfiles));
- qDebug() << "filtered x-profiles count is"
- << filteredRawProfiles.count();
+ qDebug() << "filtered x-profiles count is" << filteredRawProfiles.count();
- ::calibrationTableX = calibrateX(std::move(filteredRawProfiles));
+ if (!calibrateX(std::move(filteredRawProfiles), scanner->calibrationTableX())) {
+ qCritical() << "X calibration failed, exiting";
+ exit(EXIT_FAILURE);
+ }
- interpolate(::calibrationTableX);
+ interpolate(scanner->calibrationTableX());
- if (!dump(::calibrationTableX,
+ if (!dump(scanner->calibrationTableX(),
QStringLiteral("/home/%1/dumps/binx.calibration_table").arg(user))) {
qApp->exit(EXIT_FAILURE);
}
}
}
+ // exit(EXIT_SUCCESS);
}
- // exit(EXIT_SUCCESS);
-
- QElapsedTimer t;
- t.start();
-
- // FIXME: don't use one var for everything
- int ret;
-
- auto cameras = VeyeIMX287m::search();
-
- if (cameras.empty()) {
- std::cerr << "No cameras were identified on the system." << std::endl;
-
- return EXIT_FAILURE;
- }
-
- auto camera = cameras.at(0);
-
- std::cout << "connect everything" << std::endl;
-
- for (auto &i : initializers)
- i.waitForFinished();
- std::cout << "loaded calibration tables" << std::endl;
-
- if (!camera->startStream()) {
- return EXIT_FAILURE;
- }
-
- // TODO: refactor: scanner and http server depend on each other
- const auto scanner = std::make_shared<Scanner>(camera);
- auto httpServer = std::make_shared<HttpServer>(scanner);
-
scanner->startAllProtocols();
httpServer->start();
@@ -242,7 +245,7 @@ int main(int argc, char *argv[])
// if (!::calibrationTableZ || !::calibrationTableX)
// return QHttpServerResponse::StatusCode::ServiceUnavailable;
- const Profile profile{::pixels, ::calibrationTableZ, ::calibrationTableX};
+ const Profile profile{::pixels, scanner->calibrationTableZ(), scanner->calibrationTableX()};
const QJsonObject json{{"profile", QJsonObject(profile)}};
// qDebug() << "profile:" << QJsonDocument(json).toJson();