| | |
| | | #include "scpi/parser.h" |
| | | #include "scpi/units.h" |
| | | #include "utils_private.h" |
| | | #include "scpi/utils.h" |
| | | #include "scpi/error.h" |
| | | #include "lexer_private.h" |
| | | |
| | |
| | | * @param mandatory if the parameter is mandatory |
| | | * @return |
| | | */ |
| | | scpi_bool_t SCPI_ParamNumber(scpi_t * context, const scpi_choice_def_t * special, scpi_number_t * value, scpi_bool_t mandatory) |
| | | { |
| | | scpi_bool_t SCPI_ParamNumber(scpi_t * context, const scpi_choice_def_t * special, scpi_number_t * value, scpi_bool_t mandatory) { |
| | | scpi_token_t token; |
| | | lex_state_t state; |
| | | scpi_parameter_t param; |
| | |
| | | state.pos = state.buffer; |
| | | state.len = param.len; |
| | | |
| | | switch(param.type) { |
| | | switch (param.type) { |
| | | case SCPI_TOKEN_DECIMAL_NUMERIC_PROGRAM_DATA: |
| | | case SCPI_TOKEN_HEXNUM: |
| | | case SCPI_TOKEN_OCTNUM: |
| | |
| | | value->special = FALSE; |
| | | result = TRUE; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | switch(param.type) { |
| | | switch (param.type) { |
| | | case SCPI_TOKEN_DECIMAL_NUMERIC_PROGRAM_DATA: |
| | | case SCPI_TOKEN_DECIMAL_NUMERIC_PROGRAM_DATA_WITH_SUFFIX: |
| | | case SCPI_TOKEN_PROGRAM_MNEMONIC: |
| | |
| | | case SCPI_TOKEN_OCTNUM: |
| | | value->base = 8; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | switch(param.type) { |
| | | switch (param.type) { |
| | | case SCPI_TOKEN_DECIMAL_NUMERIC_PROGRAM_DATA: |
| | | SCPI_ParamToDouble(context, ¶m, &(value->value)); |
| | | break; |
| | |
| | | scpiLex_CharacterProgramData(&state, &token); |
| | | |
| | | /* convert string to special number type */ |
| | | SCPI_ParamToChoice(context, &token, special, &tag); |
| | | result = SCPI_ParamToChoice(context, &token, special, &tag); |
| | | |
| | | value->special = TRUE; |
| | | value->tag = tag; |
| | |
| | | } |
| | | } |
| | | |
| | | result = doubleToStr(value->value, str, len); |
| | | result = SCPI_DoubleToStr(value->value, str, len); |
| | | |
| | | unit = translateUnitInverse(context->units, value->unit); |
| | | |