From 25c8f6c6058c44ba10a8e0ef488f3051b90a3218 Mon Sep 17 00:00:00 2001 From: Nffj84 Date: Thu, 4 Jul 2024 11:29:39 +0300 Subject: [PATCH] Small improvements. --- misc/camera/a8/a8.pro | 8 ++++---- misc/camera/a8/remoteControl.cpp | 23 +++++++++++++---------- misc/camera/a8_remote/a8_remote.pro | 8 ++++---- misc/camera/a8_remote/remoteControl.cpp | 12 +++++++++--- 4 files changed, 30 insertions(+), 21 deletions(-) diff --git a/misc/camera/a8/a8.pro b/misc/camera/a8/a8.pro index 8359cac..ac0d747 100644 --- a/misc/camera/a8/a8.pro +++ b/misc/camera/a8/a8.pro @@ -9,13 +9,13 @@ TARGET = a8 QMAKE_CXXFLAGS = -O0 -g -ggdb -fsanitize=undefined,address,bounds,float-divide-by-zero,integer-divide-by-zero,null,return,signed-integer-overflow,unreachable,shift,alignment,nonnull-attribute,returns-nonnull-attribute,enum QMAKE_LFLAGS = -O0 -g -ggdb -fsanitize=undefined,address,bounds,float-divide-by-zero,integer-divide-by-zero,null,return,signed-integer-overflow,unreachable,shift,alignment,nonnull-attribute,returns-nonnull-attribute,enum -#QMAKE_CXX = clang++ -#QMAKE_CC = clang +QMAKE_CXX = g++ +QMAKE_CC = gcc # Not nice, but for some reason QtCreator doesn't use /usr/lib/ccache/g++ from the PATH linux-g++ { -# QMAKE_CXX = clang++ -# QMAKE_CC = clang + QMAKE_CXX = g++ + QMAKE_CC = gcc } SOURCES += \ diff --git a/misc/camera/a8/remoteControl.cpp b/misc/camera/a8/remoteControl.cpp index 8983515..3b2df8a 100644 --- a/misc/camera/a8/remoteControl.cpp +++ b/misc/camera/a8/remoteControl.cpp @@ -84,9 +84,11 @@ void RemoteControl::sendResponse(void) QJsonDocument responseDocument(mResponseObject); std::string response = responseDocument.toJson(QJsonDocument::Compact).toStdString(); -// qDebug().noquote().nospace() << "Sending responce: " << response; - - write(mFifoFdOut, response.c_str(), response.size()); + size_t bytesWritten = write(mFifoFdOut, response.c_str(), response.size()); + if (bytesWritten < 1) { + qWarning().noquote().nospace() << "Error writing response: " << bytesWritten; + } + qDebug().noquote().nospace() << "Responded: " << response; mIsBusy = false; } @@ -255,22 +257,24 @@ void RemoteControl::run() buffer[bytesRead] = '\0'; QJsonDocument commandDoc = QJsonDocument::fromJson(buffer); + QString message = QString::fromUtf8(buffer); // Ignore non json messages if (commandDoc.isNull() == false) { + qDebug().noquote().nospace() << "Received: " << message; + QJsonObject commandObject = commandDoc.object(); - // Ignore own messages and messages that don't have sender - if (commandObject.contains("sender") == false || commandObject["sender"] == FIFO_WHO_AM_I) { + // Ignore messages that don't have sender + if (commandObject.contains("sender") == false) { + qDebug().noquote().nospace() << "No sender info: " << message; mIsBusy = false; continue; } - QString message = QString::fromUtf8(buffer); - qDebug().noquote().nospace() << "Received: " << message; - // Exit with exit message if (commandObject.contains("extra") == true && commandObject["extra"] == "EXIT") { + qDebug().noquote().nospace() << "Exit message received: Exiting..."; exit(EXIT_SUCCESS); } @@ -296,8 +300,6 @@ void RemoteControl::run() qInfo() << "target_pixel_height: " << commandObject["target_pixel_height"]; qInfo() << "target_pixel_width: " << commandObject["target_pixel_width"]; - mIsBusy = true; - // Prepare responce object mResponseObject = QJsonObject(); mResponseObject["sender"] = FIFO_WHO_AM_I; @@ -308,6 +310,7 @@ void RemoteControl::run() QTimer::singleShot(0, this, [this, commandObject]() mutable { turnToTarget(commandObject); }); } else { + qDebug().noquote().nospace() << "Non JSON message received: " << message; mIsBusy = false; } } else { diff --git a/misc/camera/a8_remote/a8_remote.pro b/misc/camera/a8_remote/a8_remote.pro index 1ab9f30..93436ea 100644 --- a/misc/camera/a8_remote/a8_remote.pro +++ b/misc/camera/a8_remote/a8_remote.pro @@ -8,13 +8,13 @@ TARGET = a8_remote QMAKE_CXXFLAGS = -O0 -g -ggdb -fsanitize=undefined,address,bounds,float-divide-by-zero,integer-divide-by-zero,null,return,signed-integer-overflow,unreachable,shift,alignment,nonnull-attribute,returns-nonnull-attribute,enum QMAKE_LFLAGS = -O0 -g -ggdb -fsanitize=undefined,address,bounds,float-divide-by-zero,integer-divide-by-zero,null,return,signed-integer-overflow,unreachable,shift,alignment,nonnull-attribute,returns-nonnull-attribute,enum -QMAKE_CXX = clang++ -QMAKE_CC = clang +QMAKE_CXX = g++ +QMAKE_CC = gcc # Not nice, but for some reason QtCreator doesn't use /usr/lib/ccache/g++ from the PATH linux-g++ { - QMAKE_CXX = clang++ - QMAKE_CC = clang + QMAKE_CXX = g++ + QMAKE_CC = gcc } SOURCES += \ diff --git a/misc/camera/a8_remote/remoteControl.cpp b/misc/camera/a8_remote/remoteControl.cpp index 0719680..130b9a7 100644 --- a/misc/camera/a8_remote/remoteControl.cpp +++ b/misc/camera/a8_remote/remoteControl.cpp @@ -88,8 +88,11 @@ void RemoteControl::sendData(uint16_t top, uint16_t left, uint16_t bottom, uint1 QJsonObject commandObject = {{"sender", FIFO_WHO_AM_I}, {"top", top}, {"left", left}, {"bottom", bottom}, {"right", right}}; QJsonDocument commandDocument(commandObject); std::string command = commandDocument.toJson(QJsonDocument::Compact).toStdString(); - write(mFifoFdOut, command.c_str(), command.size()); - //qDebug().noquote().nospace() << "Sent: " << command; + size_t bytesWritten = write(mFifoFdOut, command.c_str(), command.size()); + if (bytesWritten < 1) { + qWarning().noquote().nospace() << "Error writing data: " << bytesWritten; + } + qDebug().noquote().nospace() << "Sent: " << command; } #ifdef FIFO_TEST @@ -124,7 +127,10 @@ void RemoteControl::startTest() QJsonDocument commandDocument(commandObject); std::string command = commandDocument.toJson(QJsonDocument::Compact).toStdString(); - write(mFifoFdOut, command.c_str(), command.size()); + size_t bytesWritten = write(mFifoFdOut, command.c_str(), command.size()); + if (bytesWritten < 1) { + qWarning().noquote().nospace() << "Error writing data: " << bytesWritten; + } qDebug().noquote().nospace() << "Sent: " << command; }