Jan Breuer
2017-08-16 4f960d20c76cb67e206a62f0e6c7608d75693ddc
libscpi/src/ieee488.c
@@ -51,6 +51,17 @@
}
/**
 * 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
@@ -71,7 +82,7 @@
 * @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;
@@ -102,7 +113,7 @@
    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;
    }
@@ -148,6 +159,9 @@
        case SCPI_REG_OPERE:
            regUpdate(context, SCPI_REG_OPER);
            break;
        case SCPI_REG_OPERC:
            regUpdateEvent(context, old_val, val, SCPI_REG_OPER);
            break;
        case SCPI_REG_COUNT: