| | |
| | | } |
| | | |
| | | /** |
| | | * Update latching event register value based on bit transitions from 0 -> 1 |
| | | * in the condition register |
| | | * @param context |
| | | * @param condReg - condition register name |
| | | * @param eventReg - event register name |
| | | */ |
| | | static void regUpdateEvent(scpi_t * context, scpi_reg_val_t oldCondVal, scpi_reg_val_t newCondVal, scpi_reg_name_t eventReg) { |
| | | SCPI_RegSet(context, eventReg, ((oldCondVal ^ newCondVal) & newCondVal) | SCPI_RegGet(context, eventReg)); |
| | | } |
| | | |
| | | /** |
| | | * Update STB register according to value and its mask register |
| | | * @param context |
| | | * @param val value of register |
| | |
| | | * @return register value |
| | | */ |
| | | scpi_reg_val_t SCPI_RegGet(scpi_t * context, scpi_reg_name_t name) { |
| | | if ((name < SCPI_REG_COUNT) && (context->registers != NULL)) { |
| | | if ((name < SCPI_REG_COUNT) && context) { |
| | | return context->registers[name]; |
| | | } else { |
| | | return 0; |
| | |
| | | scpi_reg_val_t mask; |
| | | scpi_reg_val_t old_val; |
| | | |
| | | if ((name >= SCPI_REG_COUNT) || (context->registers == NULL)) { |
| | | if ((name >= SCPI_REG_COUNT) || (context == NULL)) { |
| | | return; |
| | | } |
| | | |
| | |
| | | break; |
| | | case SCPI_REG_OPERE: |
| | | regUpdate(context, SCPI_REG_OPER); |
| | | break; |
| | | case SCPI_REG_OPERC: |
| | | regUpdateEvent(context, old_val, val, SCPI_REG_OPER); |
| | | break; |
| | | |
| | | |
| | |
| | | int32_t new_ESE; |
| | | if (SCPI_ParamInt32(context, &new_ESE, TRUE)) { |
| | | SCPI_RegSet(context, SCPI_REG_ESE, (scpi_reg_val_t) new_ESE); |
| | | return SCPI_RES_OK; |
| | | } |
| | | return SCPI_RES_OK; |
| | | return SCPI_RES_ERR; |
| | | } |
| | | |
| | | /** |
| | |
| | | int32_t new_SRE; |
| | | if (SCPI_ParamInt32(context, &new_SRE, TRUE)) { |
| | | SCPI_RegSet(context, SCPI_REG_SRE, (scpi_reg_val_t) new_SRE); |
| | | return SCPI_RES_OK; |
| | | } |
| | | return SCPI_RES_OK; |
| | | return SCPI_RES_ERR; |
| | | } |
| | | |
| | | /** |