From de3f3c092af8cc9d78294ffb6fa3a38cd7bdeec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Sun, 7 Apr 2024 14:22:57 +0200 Subject: [PATCH] omit response to commands --- Software/PC_Application/LibreVNA-GUI/scpi.cpp | 34 ++++++++++++++++--- Software/PC_Application/LibreVNA-GUI/scpi.h | 3 ++ 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/Software/PC_Application/LibreVNA-GUI/scpi.cpp b/Software/PC_Application/LibreVNA-GUI/scpi.cpp index 15a7e89..3357f03 100644 --- a/Software/PC_Application/LibreVNA-GUI/scpi.cpp +++ b/Software/PC_Application/LibreVNA-GUI/scpi.cpp @@ -120,6 +120,12 @@ QString SCPI::getResultName(SCPI::Result r) case Result::Error: default: return "ERROR"; + case Result::CmdError: + return "CMD_ERROR"; + case Result::QueryError: + return "QUERY_ERROR"; + case Result::ExecError: + return "EXEC_ERROR"; case Result::False: return "FALSE"; case Result::True: @@ -150,7 +156,17 @@ void SCPI::process() cmd.remove(0, 1); } auto response = lastNode->parse(cmd, lastNode); - emit output(response); + if(response == getResultName(Result::Error)) { + setFlag(Flag::CME); + } else if(response == getResultName(Result::QueryError)) { + setFlag(Flag::QYE); + } else if(response == getResultName(Result::ExecError)) { + setFlag(Flag::EXE); + } else if(response == getResultName(Result::Empty)) { + // do nothing + } else { + emit output(response); + } } } } @@ -425,17 +441,25 @@ QString SCPINode::parse(QString cmd, SCPINode* &lastNode) QString SCPICommand::execute(QStringList params) { if(fn_cmd == nullptr) { - return SCPI::getResultName(SCPI::Result::Error); + return SCPI::getResultName(SCPI::Result::CmdError); } else { - return fn_cmd(params); + auto ret = fn_cmd(params); + if(ret == SCPI::getResultName(SCPI::Result::Error)) { + ret = SCPI::getResultName(SCPI::Result::CmdError); + } + return ret; } } QString SCPICommand::query(QStringList params) { if(fn_query == nullptr) { - return SCPI::getResultName(SCPI::Result::Error); + return SCPI::getResultName(SCPI::Result::QueryError); } else { - return fn_query(params); + auto ret = fn_query(params); + if(ret == SCPI::getResultName(SCPI::Result::Error)) { + ret = SCPI::getResultName(SCPI::Result::QueryError); + } + return ret; } } diff --git a/Software/PC_Application/LibreVNA-GUI/scpi.h b/Software/PC_Application/LibreVNA-GUI/scpi.h index 5c5bb62..bf74951 100644 --- a/Software/PC_Application/LibreVNA-GUI/scpi.h +++ b/Software/PC_Application/LibreVNA-GUI/scpi.h @@ -77,6 +77,9 @@ public: enum class Result { Empty, Error, + CmdError, + QueryError, + ExecError, False, True };