コード例 #1
0
ファイル: ieee488.c プロジェクト: zuban/scpi-parser
/**
 * Update STB register according to value and its mask register
 * @param context
 * @param val value of register
 * @param mask name of mask register (enable register)
 * @param stbBits bits to clear or set in STB
 */
static void regUpdateSTB(scpi_t * context, scpi_reg_val_t val, scpi_reg_name_t mask, scpi_reg_val_t stbBits) {
    if (val & SCPI_RegGet(context, mask)) {
        SCPI_RegSetBits(context, SCPI_REG_STB, stbBits);
    } else {
        SCPI_RegClearBits(context, SCPI_REG_STB, stbBits);
    }
}
コード例 #2
0
ファイル: error.c プロジェクト: glocklueng/stm32-dds
/**
 * Emit error
 * @param context scpi context
 * @param err Error to emit
 */
static void SCPI_ErrorEmit(scpi_t * context, int16_t err) {
    SCPI_RegSetBits(context, SCPI_REG_STB, STB_QMA);

    if (context->interface && context->interface->error) {
        context->interface->error(context, err);
    }
}
コード例 #3
0
ファイル: scpiparser.cpp プロジェクト: Zaher220/scpi-parser
/**
 * Update STB register according to value and its mask register
 * @param context
 * @param val value of register
 * @param mask name of mask register (enable register)
 * @param stbBits bits to clear or set in STB
 */
void SCPIParser::regUpdateSTB(scpi_reg_val_t val, scpi_reg_name_t mask, scpi_reg_val_t stbBits) {
    if (val & SCPI_RegGet(mask)) {
        SCPI_RegSetBits(SCPI_REG_STB, stbBits);
    } else {
        SCPI_RegClearBits(SCPI_REG_STB, stbBits);
    }
}
コード例 #4
0
ファイル: error.c プロジェクト: jsr38/psu-firmware
/**
 * Push error to queue
 * @param context - scpi context
 * @param err - error number
 */
void SCPI_ErrorPush(scpi_t * context, int16_t err) {

    int i;

    SCPI_ErrorAddInternal(context, err);

    for (i = 0; i < ERROR_DEFS_N; i++) {
        if ((err <= errs[i].from) && (err >= errs[i].to)) {
            SCPI_RegSetBits(context, SCPI_REG_ESR, errs[i].bit);
        }
    }

    SCPI_ErrorEmit(context, err);

    if (context) {
        context->cmd_error = TRUE;
    }
}
コード例 #5
0
ファイル: scpiparser.cpp プロジェクト: Zaher220/scpi-parser
/**
 * Push error to queue
 * @param context - scpi context
 * @param err - error number
 */
void SCPIParser::SCPI_ErrorPush(int16_t err) {

    int i;

    SCPI_ErrorAddInternal(err);

    for(i = 0; i < ERROR_DEFS_N; i++) {
        if ((err <= errs[i].from) && (err >= errs[i].to)) {
            SCPI_RegSetBits(SCPI_REG_ESR, errs[i].bit);
        }
    }

    //if (context) {
    if (context.interface && context.interface->error) {
        SCPI_Error(err);
        //context.interface->error(err);
    }

    context.cmd_error = TRUE;
    // }
}
コード例 #6
0
ファイル: error.c プロジェクト: glocklueng/stm32-dds
/**
 * Push error to queue
 * @param context
 * @param err - error number
 * @param info - additional text information or NULL for no text
 * @param info_len - length of text or 0 for automatic length
 */
void SCPI_ErrorPushEx(scpi_t * context, int16_t err, char * info, size_t info_len) {
    int i;
    /* automatic calculation of length */
    if (info && info_len == 0) {
        info_len = SCPIDEFINE_strnlen(info, SCPI_STD_ERROR_DESC_MAX_STRING_LENGTH);
    }
    scpi_bool_t queue_overflow = !SCPI_ErrorAddInternal(context, err, info, info_len);

    for (i = 0; i < ERROR_DEFS_N; i++) {
        if ((err <= errs[i].from) && (err >= errs[i].to)) {
            SCPI_RegSetBits(context, SCPI_REG_ESR, errs[i].esrBit);
        }
    }

    SCPI_ErrorEmit(context, err);
    if (queue_overflow) {
        SCPI_ErrorEmit(context, SCPI_ERROR_QUEUE_OVERFLOW);
    }

    if (context) {
        context->cmd_error = TRUE;
    }
}
コード例 #7
0
ファイル: ieee488.c プロジェクト: zuban/scpi-parser
/**
 * *OPC
 * @param context
 * @return 
 */
scpi_result_t SCPI_CoreOpc(scpi_t * context) {
    SCPI_RegSetBits(context, SCPI_REG_ESR, ESR_OPC);
    return SCPI_RES_OK;
}
コード例 #8
0
ファイル: scpiparser.cpp プロジェクト: Zaher220/scpi-parser
/**
 * *OPC
 * @param context
 * @return
 */
scpi_result_t SCPIParser::SCPI_CoreOpc() {
    SCPI_RegSetBits(SCPI_REG_ESR, ESR_OPC);
    return SCPI_RES_OK;
}