From bd781764fb8eff2928138d79f8f20960fec04b0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Sun, 7 Apr 2024 14:39:27 +0200 Subject: [PATCH] CLS/ESE/ESR commands --- Software/PC_Application/LibreVNA-GUI/scpi.cpp | 37 +++++++++++++++++-- Software/PC_Application/LibreVNA-GUI/scpi.h | 3 +- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/Software/PC_Application/LibreVNA-GUI/scpi.cpp b/Software/PC_Application/LibreVNA-GUI/scpi.cpp index 3357f03..b731df8 100644 --- a/Software/PC_Application/LibreVNA-GUI/scpi.cpp +++ b/Software/PC_Application/LibreVNA-GUI/scpi.cpp @@ -8,12 +8,41 @@ SCPI::SCPI() : WAIexecuting = false; OPCQueryScheduled = false; OCAS = false; - ESR = 0x00; + SESR = 0x00; + ESE = 0xFF; + + add(new SCPICommand("*CLS", [=](QStringList) { + SESR = 0x00; + OCAS = false; + OPCQueryScheduled = false; + return SCPI::getResultName(SCPI::Result::Empty); + }, nullptr)); + + add(new SCPICommand("*ESE", [=](QStringList params){ + unsigned long long newval; + if(!SCPI::paramToULongLong(params, 0, newval) || newval >= 256) { + return SCPI::getResultName(SCPI::Result::Error); + } else { + ESE = newval; + return SCPI::getResultName(SCPI::Result::Empty); + } + }, [=](QStringList){ + return QString::number(ESE); + })); + + add(new SCPICommand("*ESR", nullptr, [=](QStringList){ + auto ret = QString::number(SESR); + SESR = 0x00; + return ret; + })); add(new SCPICommand("*OPC", [=](QStringList){ // OPC command if(isOperationPending()) { OCAS = true; + } else { + // operation already complete + setFlag(Flag::OPC); } return SCPI::getResultName(SCPI::Result::Empty); }, [=](QStringList) -> QString { @@ -194,17 +223,17 @@ void SCPI::someOperationCompleted() void SCPI::setFlag(Flag flag) { - ESR |= ((int) flag); + SESR |= ((int) flag); } void SCPI::clearFlag(Flag flag) { - ESR &= ~((int) flag); + SESR &= ~((int) flag); } bool SCPI::getFlag(Flag flag) { - return ESR & (int) flag; + return SESR & (int) flag; } SCPINode::~SCPINode() diff --git a/Software/PC_Application/LibreVNA-GUI/scpi.h b/Software/PC_Application/LibreVNA-GUI/scpi.h index bf74951..182b8b6 100644 --- a/Software/PC_Application/LibreVNA-GUI/scpi.h +++ b/Software/PC_Application/LibreVNA-GUI/scpi.h @@ -112,7 +112,8 @@ private: void clearFlag(Flag flag); bool getFlag(Flag flag); - unsigned int ESR; + unsigned int SESR; + unsigned int ESE; bool OCAS; bool OPCQueryScheduled;