From 4e9a266f5025f89b5df300c5e4b2b72003eca1e3 Mon Sep 17 00:00:00 2001 From: Jack Harper Date: Fri, 18 Oct 2024 14:14:59 +0100 Subject: [PATCH 1/2] this sort of fixes the issue --- adsApp/src/ADSPortDriver.cpp | 10 ++++++---- adsApp/src/ADSPortDriver.h | 4 +++- adsApp/src/epics-ads/SumReadRequest.cpp | 8 ++++---- adsApp/src/err.cpp | 2 +- adsApp/src/err.h | 8 ++++---- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/adsApp/src/ADSPortDriver.cpp b/adsApp/src/ADSPortDriver.cpp index 3f4f92b..d56ca92 100644 --- a/adsApp/src/ADSPortDriver.cpp +++ b/adsApp/src/ADSPortDriver.cpp @@ -329,10 +329,11 @@ asynStatus ADSPortDriver::ADSConnect(asynUser *pasynUser) { status = static_cast( adsConnection->resolve_variables(ads_read_vars)); - if (status) { + if (status && lastReadError != status) { LOG_ERR_ASYN(pasynUser, "Could not resolve ADS read variable names (%i): %s", status, ads_errors[status].c_str()); + lastReadError = status; return status; } } @@ -341,11 +342,11 @@ asynStatus ADSPortDriver::ADSConnect(asynUser *pasynUser) { status = static_cast( adsConnection->resolve_variables(ads_write_vars)); - if (status && lastError != status) { + if (status && lastWriteError != status) { LOG_ERR_ASYN(pasynUser, "Could not resolve ADS write variable names(%i): %s", status, ads_errors[status].c_str()); - lastError = status; + lastWriteError = status; return status; } } @@ -354,10 +355,11 @@ asynStatus ADSPortDriver::ADSConnect(asynUser *pasynUser) { // initialize sum-read buffers status = static_cast(SumRead.initialize()); - if (status) { + if (status && lastSumReadError != status) { LOG_ERR_ASYN(pasynUser, "Error initializing sum-read request buffers (%i): %s", status, ads_errors[status].c_str()); + lastSumReadError = status; return status; } diff --git a/adsApp/src/ADSPortDriver.h b/adsApp/src/ADSPortDriver.h index 389dc13..99311a8 100644 --- a/adsApp/src/ADSPortDriver.h +++ b/adsApp/src/ADSPortDriver.h @@ -82,7 +82,9 @@ class ADSPortDriver : public Autoparam::Driver { uint32_t const adsFunctionTimeout; const std::shared_ptr adsConnection; const std::chrono::milliseconds sumReadPeriod; - long lastError; + long lastReadError; + long lastWriteError; + long lastSumReadError; SumReadRequest SumRead; diff --git a/adsApp/src/epics-ads/SumReadRequest.cpp b/adsApp/src/epics-ads/SumReadRequest.cpp index 19273b9..56bd111 100644 --- a/adsApp/src/epics-ads/SumReadRequest.cpp +++ b/adsApp/src/epics-ads/SumReadRequest.cpp @@ -143,8 +143,8 @@ int SumReadRequest::allocate( std::shared_ptr chunk = *chunk_itr; int rc = chunk->sum_read_data_buffer->initialize_buffer(); if (rc != 0) { - LOG_ERR("failed to initialize sum-read data buffer (%i): %s", - rc, ads_errors[rc].c_str()); + //LOG_ERR("failed to initialize sum-read data buffer (%i): %s", + // rc, ads_errors[rc].c_str()); goto ALLOC_ERROR; } } @@ -207,8 +207,8 @@ int SumReadRequest::initialize() { for (size_t i_var = 0; i_var < chunk->variables.size(); i_var++) { std::shared_ptr var = chunk->variables[i_var]; if (var->addr->is_resolved() == false) { - LOG_ERR("variable name is not resolved: '%s'", - var->addr->get_var_name().c_str()); +// LOG_ERR("variable name is not resolved: '%s'", + // var->addr->get_var_name().c_str()); return EPICSADS_NOT_RESOLVED; } diff --git a/adsApp/src/err.cpp b/adsApp/src/err.cpp index 29e4345..0f33056 100644 --- a/adsApp/src/err.cpp +++ b/adsApp/src/err.cpp @@ -159,7 +159,7 @@ std::map errorMap = int ads_rc_to_epicsads_error(long ads_rc) { auto it = ads_rc_to_epicsads_error_map.find(ads_rc); if (it == ads_rc_to_epicsads_error_map.end()) { - LOG_ERR("unhandled ADS return code '%li'", ads_rc); + //LOG_ERR("unhandled ADS return code '%li'", ads_rc); return EPICSADS_UNHANDLED_RC; } diff --git a/adsApp/src/err.h b/adsApp/src/err.h index e5c7871..25b740a 100644 --- a/adsApp/src/err.h +++ b/adsApp/src/err.h @@ -32,10 +32,10 @@ LOG_MSG_ASYN(asyn_user, ASYN_TRACE_ERROR, "ERROR", format, ##__VA_ARGS__) #define LOG_WARN_ASYN(asyn_user, format, ...) \ - LOG_MSG_ASYN(asyn_user, ASYN_TRACE_WARNING, "WARNING", format, ##__VA_ARGS__) + //LOG_MSG_ASYN(asyn_user, ASYN_TRACE_WARNING, "WARNING", format, ##__VA_ARGS__) #define LOG_TRACE_ASYN(asyn_user, format, ...) \ - LOG_MSG_ASYN(asyn_user, ASYN_TRACE_FLOW, "TRACE", format, ##__VA_ARGS__) + //LOG_MSG_ASYN(asyn_user, ASYN_TRACE_FLOW, "TRACE", format, ##__VA_ARGS__) /* Error logging macros for use when asyn_user is not available */ #define LOG_MSG(log_level_str, format, ...) \ @@ -45,10 +45,10 @@ LOG_MSG("ERROR", format, ##__VA_ARGS__) #define LOG_WARN(format, ...) \ - LOG_MSG("WARNING", format, ##__VA_ARGS__) + //LOG_MSG("WARNING", format, ##__VA_ARGS__) #define LOG_TRACE(format, ...) \ - LOG_MSG("TRACE", format, ##__VA_ARGS__) + //LOG_MSG("TRACE", format, ##__VA_ARGS__) /* EPICS ADS specific return codes */ #define EPICSADS_BASE 1000 From b7350f4fc30a916b733fbdc2797e6d00b446c3ca Mon Sep 17 00:00:00 2001 From: Jack Harper Date: Fri, 18 Oct 2024 15:03:15 +0100 Subject: [PATCH 2/2] remove uncommented LOG_ERR lines --- adsApp/src/epics-ads/SumReadRequest.cpp | 8 ++++---- adsApp/src/err.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/adsApp/src/epics-ads/SumReadRequest.cpp b/adsApp/src/epics-ads/SumReadRequest.cpp index 56bd111..19273b9 100644 --- a/adsApp/src/epics-ads/SumReadRequest.cpp +++ b/adsApp/src/epics-ads/SumReadRequest.cpp @@ -143,8 +143,8 @@ int SumReadRequest::allocate( std::shared_ptr chunk = *chunk_itr; int rc = chunk->sum_read_data_buffer->initialize_buffer(); if (rc != 0) { - //LOG_ERR("failed to initialize sum-read data buffer (%i): %s", - // rc, ads_errors[rc].c_str()); + LOG_ERR("failed to initialize sum-read data buffer (%i): %s", + rc, ads_errors[rc].c_str()); goto ALLOC_ERROR; } } @@ -207,8 +207,8 @@ int SumReadRequest::initialize() { for (size_t i_var = 0; i_var < chunk->variables.size(); i_var++) { std::shared_ptr var = chunk->variables[i_var]; if (var->addr->is_resolved() == false) { -// LOG_ERR("variable name is not resolved: '%s'", - // var->addr->get_var_name().c_str()); + LOG_ERR("variable name is not resolved: '%s'", + var->addr->get_var_name().c_str()); return EPICSADS_NOT_RESOLVED; } diff --git a/adsApp/src/err.cpp b/adsApp/src/err.cpp index 0f33056..29e4345 100644 --- a/adsApp/src/err.cpp +++ b/adsApp/src/err.cpp @@ -159,7 +159,7 @@ std::map errorMap = int ads_rc_to_epicsads_error(long ads_rc) { auto it = ads_rc_to_epicsads_error_map.find(ads_rc); if (it == ads_rc_to_epicsads_error_map.end()) { - //LOG_ERR("unhandled ADS return code '%li'", ads_rc); + LOG_ERR("unhandled ADS return code '%li'", ads_rc); return EPICSADS_UNHANDLED_RC; }