From b9972c6b63937373ea9db39249b3f23985758425 Mon Sep 17 00:00:00 2001 From: Iztok Jeras <iztok.jeras@redpitaya.com> Date: ćšć, 08 10æ 2015 03:00:34 +0800 Subject: [PATCH] integer parser: added 64 bit Param* functions --- libscpi/src/error.c | 37 +++++++++++++++++++++++++++++++++---- 1 files changed, 33 insertions(+), 4 deletions(-) diff --git a/libscpi/src/error.c b/libscpi/src/error.c index d856db3..34735d2 100644 --- a/libscpi/src/error.c +++ b/libscpi/src/error.c @@ -61,6 +61,33 @@ } /** + * Emit no error + * @param context scpi context + */ +static void SCPI_ErrorEmitEmpty(scpi_t * context) { + if ((SCPI_ErrorCount(context) == 0) && (SCPI_RegGet(context, SCPI_REG_STB) & STB_QMA)) { + SCPI_RegClearBits(context, SCPI_REG_STB, STB_QMA); + + if (context->interface && context->interface->error) { + context->interface->error(context, 0); + } + } +} + +/** + * 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); + } +} + +/** * Clear error queue * @param context - scpi context */ @@ -72,6 +99,8 @@ /* basic FIFO */ fifo_clear((scpi_fifo_t *)context->error_queue); + + SCPI_ErrorEmitEmpty(context); } /** @@ -91,6 +120,8 @@ /* basic FIFO */ fifo_remove((scpi_fifo_t *)context->error_queue, &result); + + SCPI_ErrorEmitEmpty(context); return result; } @@ -161,11 +192,9 @@ } } - if (context) { - if (context->interface && context->interface->error) { - context->interface->error(context, err); - } + SCPI_ErrorEmit(context, err); + if (context) { context->cmd_error = TRUE; } } -- Gitblit v1.9.1