/** * 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); } }
/** * 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); } }
/** * 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); } }
/** * 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; } }
/** * 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; // } }
/** * 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; } }
/** * *OPC * @param context * @return */ scpi_result_t SCPI_CoreOpc(scpi_t * context) { SCPI_RegSetBits(context, SCPI_REG_ESR, ESR_OPC); return SCPI_RES_OK; }
/** * *OPC * @param context * @return */ scpi_result_t SCPIParser::SCPI_CoreOpc() { SCPI_RegSetBits(SCPI_REG_ESR, ESR_OPC); return SCPI_RES_OK; }