| | |
| | | {/* name */ "NAN", /* type */ SCPI_NUM_NAN}, |
| | | {/* name */ "INFinity", /* type */ SCPI_NUM_INF}, |
| | | {/* name */ "NINF", /* type */ SCPI_NUM_NINF}, |
| | | {/* name */ "AUTO", /* type */ SCPI_NUM_AUTO}, |
| | | SCPI_CHOICE_LIST_END, |
| | | }; |
| | | |
| | |
| | | lex_state_t state; |
| | | scpi_parameter_t param; |
| | | scpi_bool_t result; |
| | | int32_t intval; |
| | | int32_t tag; |
| | | |
| | | if (!value) { |
| | | SCPI_ErrorPush(context, SCPI_ERROR_SYSTEM_ERROR); |
| | |
| | | case SCPI_TOKEN_DECIMAL_NUMERIC_PROGRAM_DATA_WITH_SUFFIX: |
| | | case SCPI_TOKEN_PROGRAM_MNEMONIC: |
| | | value->unit = SCPI_UNIT_NONE; |
| | | value->type = SCPI_NUM_NUMBER; |
| | | value->special = FALSE; |
| | | result = TRUE; |
| | | break; |
| | | } |
| | |
| | | scpiLex_CharacterProgramData(&state, &token); |
| | | |
| | | /* convert string to special number type */ |
| | | SCPI_ParamToChoice(context, &token, special, &intval); |
| | | SCPI_ParamToChoice(context, &token, special, &tag); |
| | | |
| | | value->type = intval; |
| | | value->value = 0; |
| | | value->special = TRUE; |
| | | value->tag = tag; |
| | | |
| | | break; |
| | | default: |
| | |
| | | return 0; |
| | | } |
| | | |
| | | if (SCPI_ChoiceToName(special, value->type, &type)) { |
| | | strncpy(str, type, len); |
| | | return min(strlen(type), len); |
| | | if (value->special) { |
| | | if (SCPI_ChoiceToName(special, value->tag, &type)) { |
| | | strncpy(str, type, len); |
| | | return min(strlen(type), len); |
| | | } else { |
| | | str[0] = 0; |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | result = doubleToStr(value->value, str, len); |