Jan Breuer
2013-06-18 4cd8a68a0ed6a5714fb05c51dde8c9da814a5731
libscpi/src/ieee488.c
@@ -100,11 +100,14 @@
void SCPI_RegSet(scpi_t * context, scpi_reg_name_t name, scpi_reg_val_t val) {
    bool_t srq = FALSE;
    scpi_reg_val_t mask;
    scpi_reg_val_t old_val;
    if ((name >= SCPI_REG_COUNT) || (context->registers == NULL)) {
        return;
    }
    
    /* store old register value */
    old_val = context->registers[name];
    /* set register value */
    context->registers[name] = val;
@@ -116,7 +119,10 @@
            mask &= ~STB_SRQ;
            if (val & mask) {
                val |= STB_SRQ;
                srq = TRUE;
                /* avoid sending SRQ if nothing has changed */
                if (old_val != val) {
                    srq = TRUE;
                }
            } else {
                val &= ~STB_SRQ;
            }
@@ -145,11 +151,11 @@
            
            
        case SCPI_REG_COUNT:
            // nothing to do
            /* nothing to do */
            break;
    }
    // set updated register value
    /* set updated register value */
    context->registers[name] = val;
    if (srq) {
@@ -180,7 +186,7 @@
 * @param context
 */
void SCPI_EventClear(scpi_t * context) {
    // TODO
    /* TODO */
    SCPI_RegSet(context, SCPI_REG_ESR, 0);
}
@@ -260,7 +266,7 @@
 * @return 
 */
scpi_result_t SCPI_CoreOpcQ(scpi_t * context) {
    // Operation is always completed
    /* Operation is always completed */
    SCPI_ResultInt(context, 1);
    return SCPI_RES_OK;
}
@@ -319,7 +325,7 @@
    int result = 0;
    if (context && context->interface && context->interface->test) {
        result = context->interface->test(context);
    }
    }
    SCPI_ResultInt(context, result);
    return SCPI_RES_OK;
}
@@ -331,7 +337,7 @@
 */
scpi_result_t SCPI_CoreWai(scpi_t * context) {
    (void) context;
    // NOP
    /* NOP */
    return SCPI_RES_OK;
}