From 0e5549aee87b98310eaba7dd3bba9828d2331eab Mon Sep 17 00:00:00 2001 From: Nikita Kostovsky Date: Sun, 26 Jan 2025 19:14:47 +0100 Subject: add gain control, laser level (strobe span) control --- main.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 23 deletions(-) (limited to 'main.cpp') diff --git a/main.cpp b/main.cpp index 53fb08b..df80796 100644 --- a/main.cpp +++ b/main.cpp @@ -143,7 +143,7 @@ int main(int argc, char* argv[]) InnoMakerOV9281 innoMakerCam; qDebug() << "init:" << innoMakerCam.init(); qDebug() << "set exposure:" << innoMakerCam.setExposureTimeUs(3000); - qDebug() << "set gain:" << innoMakerCam.setGain(3000); + qDebug() << "set gain:" << innoMakerCam.setGain(0); innoMakerCam.startStream(); QThread::sleep(3); @@ -552,7 +552,7 @@ int main(int argc, char* argv[]) qHttpServer.route( "/v1/sensor/params", [&](const QHttpServerRequest& request) -> QHttpServerResponse { - std::cout << "http: params" << std::endl; + // std::cout << "http: params" << std::endl; switch (request.method()) { case QHttpServerRequest::Method::Get: { @@ -587,7 +587,7 @@ int main(int argc, char* argv[]) } case QHttpServerRequest::Method::Post: { - qDebug() << "request body:" << request.body(); + // qDebug() << "request body:" << request.body(); auto json = QJsonDocument::fromJson(request.body()).object(); @@ -599,7 +599,7 @@ int main(int argc, char* argv[]) return QHttpServerResponse::StatusCode:: RequestRangeNotSatisfiable; - qDebug() << "set new exposure time:" << value; + // qDebug() << "set new exposure time:" << value; // requested_params.exposureTime = value; if (!camera->setExposureTimeUs(value)) @@ -607,37 +607,57 @@ int main(int argc, char* argv[]) RequestRangeNotSatisfiable; } + if (json.contains(gainKey)) + { + const int32_t value{json[gainKey].toInt()}; + + if (value == 0) + return QHttpServerResponse::StatusCode:: + RequestRangeNotSatisfiable; + + // qDebug() << "set gain:" << value; + + // requested_params.exposureTime = value; + if (!camera->setGain(value)) + return QHttpServerResponse::StatusCode:: + RequestRangeNotSatisfiable; + } + if (json.contains(laserLevelKey)) { const int32_t value{json[laserLevelKey].toInt()}; - if (value == 0) - { - return QHttpServerResponse::StatusCode::NotFound; - } + // if (value == 0) + // { + // return QHttpServerResponse::StatusCode::NotFound; + // } + + // qDebug() << "set new laserLevel:" << value; + if (!camera->setLaserLevel(value)) + return QHttpServerResponse::StatusCode:: + RequestRangeNotSatisfiable; - qDebug() << "set new laserLevel:" << value; requested_params.laserLevel = value; - const QString laserLevelFile{ - "/sys/class/pwm/pwmchip2/pwm1/duty_cycle"}; - QFile f{laserLevelFile}; + // const QString laserLevelFile{ + // "/sys/class/pwm/pwmchip2/pwm1/duty_cycle"}; + // QFile f{laserLevelFile}; - if (!f.open(QFile::ReadWrite)) - { - qDebug() << "cannot open laser level file:" - << f.errorString(); - qDebug() << "file path is" << f.fileName(); - return QHttpServerResponse::StatusCode::InternalServerError; - } + // if (!f.open(QFile::ReadWrite)) + // { + // qDebug() << "cannot open laser level file:" + // << f.errorString(); + // qDebug() << "file path is" << f.fileName(); + // return QHttpServerResponse::StatusCode::InternalServerError; + // } - QTextStream s{&f}; + // QTextStream s{&f}; - s << value; + // s << value; - s >> requested_params.laserLevel; + // s >> requested_params.laserLevel; - qDebug() << "done with laser level"; + // qDebug() << "done with laser level"; } return QHttpServerResponse(request.body()); -- cgit v1.2.3-70-g09d2