| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #ifndef SCPI_CORE_STATE__PROCESSDATA
- #define SCPI_CORE_STATE__PROCESSDATA
- #include "app/scpi/scpi_core.h"
- #include "app/scpi/scpi_numeric_types.h"
- #include "app/nfm/nfm_base.h" // xACMGetFreqPoints_t
- extern const fFSeqVTable_t fsqvbl_ProcessProgramData;
- #ifndef SCPI_CORE_STATE__PROCESSDATA_GUARD
- extern void ctx_ProcessProgramData;
- #endif
- #define SCPI_STATE_PROCESSDATA\
- DECLARE_SCPI_STATE_ENTRY( fsqvbl_ProcessProgramData, \
- &ctx_ProcessProgramData )
- // =================================================================================
- // @eProcessProgramDataStatus_t
- typedef enum
- {
- eProgramDataRuntimeError, // Request failed (run-time, execution error)
- eProgramDataSyntaxError, // Request failed (syntax error)
- eProgramDataArgumentSyntax,// Request failed (argument syntax error), sParser.xCtxObj contains error details
- eProgramDataArgumentValue, // Request failed (argument data error, invalid range or value)
- eProgramDataArgumentType, // Request failed (argument data error, invalid data type conversion)
- eProgramDataArgumentRange, // Request failed (argument value range error, invalid range or value)
- eProgramDataIllegalArgument,//Request failed (illegal argument value)
- eProgramData_SpecificError,// Request failed (no error message is required to generate because it is already done by handler)
- eProgramDataNeedData, // Request is being processed, need more data to be written using 'eScpiEventWrite' to continue
- eProgramDataNeedRead, // Request processed, but the response must be read using 'eScpiEventRead'
- eProgramDataDone, // Request completely processed, no more call is needed
- }
- eProcessProgramDataStatus_t;
- // =================================================================================
- // @eProcessProgramHandlerEvent_t
- typedef enum
- {
- eProgramData_Event_Write, // First call of command/query
- eProgramData_Event_Read, // Second call of query
- eProgramData_Event_Done, // Formal code: no I/O operations shall be performed
- }
- eProcessProgramHandlerEvent_t;
- // =================================================================================
- // @sProcessProgramDataSubGlobalContext_t
- // Common global context for each SCPI command
- typedef struct
- {
- void * global_ctx;
- const void * handler_ctx;
- bool needParseEndOfCommand; // End-of-command parser indicator
- bool isQuery; // mirror of @sScpiParserContext_t::sMessage.bQuery
- sProcessNumericEntry_t numericProcessContext; // @processNumericArgument context
- int8_t status; // program data handler status, @eProcessProgramDataStatus_t
- int8_t event; // program data handler event code, @eProcessProgramHandlerEvent_t
- int8_t argsParserStatus; // argument parser status, @eScpiStatus_t
- uint8_t argEntityTypes[ SCPI_MAX_ARGS ]; // Processed argument entity types, @eScpiEntityType_t
- uint8_t args; // Parsed arguments count, see @parseArguments_helper
- uint8_t argErrIdx; // erroneous argument index, the value >=SCPI_MAX_ARGS means this value is not specified (default)
- sStrToken_t argTokens[ SCPI_MAX_ARGS ]; // Argument tokens for @parseArguments, see @parseArguments_helper
- char tempBuffer[ SCPI_MAX_CMD_TEMP_BUFFER ]; // common general purpose command buffer
- //sStrToken_t argArray[ SCPI_MAX_ARRAY_ARG_BUFFER ]; // Array of Argument tokens for @parseArrayArguments
- uint8_t argArray[SCPI_MAX_ARRAY_ARG_BUFFER];
- union
- {
- struct { size_t idx; } IDN;
- struct { size_t idx; size_t N; size_t MAX_N; } TEST;
- struct { int dummy; } MEM_TABLE_DATA;
- struct { size_t idx; bool error; } SYSTemERRor;
- struct { size_t idx; } SYSTemVERSion;
- struct { size_t idx; } ESRSTB;
- struct { size_t idx; } ESESRE;
- struct { size_t idx; } OPC;
- struct { size_t idx; int32_t port; int32_t bank; } MemTableCommon;
- struct { size_t idx; } MemTableThermoCorrCommon;
- struct { size_t idx; int32_t state; } MeasAndSwitch;
- struct { size_t idx; int32_t state; } SwitchState;
- struct { size_t idx; size_t nchs; int32_t bank; xNFMGetFreqPoints_t getctx; double dFreqPoints[6]; bool init; bool isdone; } MemTableFreqData;
- struct { size_t idx; size_t nchs; int32_t bank; size_t iSeg; size_t nSeg; bool init; bool isdone; sEcalSegment_t Segment; } MemTableFreqSegmData;
- struct { size_t idx; } IntSwitch;
- struct { size_t idx; size_t nchs; int32_t bank; int32_t comb; int32_t state; xNFMGetPointsSimplified_t getctx; sNFMChrzPoint_t dDataPoints[3]; bool init; bool isdone; } MemTableData;
- struct { size_t idx; size_t nchs; int32_t comb; int32_t state; xNFMGetPointsSimplified_t getctx; sNFMChrzPoint_t dDataPoints[6]; bool init; bool isdone; } MemTableThermoCorrectionData;
- struct { size_t idx; size_t nchs; int32_t bank; xSWGetTablePoints_t getctx; sSWTablePoint_t dTablePoints[10]; bool init; bool isdone; } MemTablePlanData;
- };
- }
- sProcessProgramDataCommonContext_t;
- // =================================================================================
- #endif
|