Open
Description
An example SCPI command:
CONFigure:VOLTage:DC {0.2|2|20|AUTO}
when implemented using the current interface it creates a complex code, getting a SCPI_Parameter first, then implementing two cases based on whether the parameter type is SCPI_TOKEN_PROGRAM_MNEMONIC for SCPI_ParamToChoice or SCPI_ParamToFloat. Additional validation code to match ranges also necessary.
However, a much simpler hack is possible:
const scpi_choice_def_t scpi_range[] = {
{"0.2", 1},
{"2", 2},
{"20", 3},
{"AUTO", 0},
SCPI_CHOICE_LIST_END
};
bool res = SCPI_Parameter(context, ¶m, true);
if (res) {
param.type = SCPI_TOKEN_PROGRAM_MNEMONIC;
res = SCPI_ParamToChoice(context, ¶m, scpi_range, &range);
if (!res) {
return SCPI_RES_ERR;
}
} else {
return SCPI_RES_ERR;
}
The ask is to be able to express choices as numerics without forcibly overwriting the parameter type.
Metadata
Metadata
Assignees
Labels
No labels