From b84e06eb1714faf5da5759499d85feb255d4ee85 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Fri, 26 Jan 2024 07:31:39 +0000 Subject: [PATCH] - added function IedClientError_toString --- src/iec61850/client/ied_connection.c | 94 ++++++++++++++++++++++++++++ src/iec61850/inc/iec61850_client.h | 8 +++ 2 files changed, 102 insertions(+) diff --git a/src/iec61850/client/ied_connection.c b/src/iec61850/client/ied_connection.c index d64fc595..e065cc10 100644 --- a/src/iec61850/client/ied_connection.c +++ b/src/iec61850/client/ied_connection.c @@ -53,6 +53,100 @@ struct sFileDirectoryEntry { uint64_t lastModified; }; +const char* +IedClientError_toString(IedClientError err) +{ + switch (err) + { + case IED_ERROR_OK: + return "ok"; + + case IED_ERROR_NOT_CONNECTED: + return "not-connected"; + + case IED_ERROR_ALREADY_CONNECTED: + return "already-connected"; + + case IED_ERROR_CONNECTION_LOST: + return "connection-lost"; + + case IED_ERROR_SERVICE_NOT_SUPPORTED: + return "service-not-supported"; + + case IED_ERROR_CONNECTION_REJECTED: + return "connection-rejected"; + + case IED_ERROR_OUTSTANDING_CALL_LIMIT_REACHED: + return "outstanding-call-limit-reached"; + + case IED_ERROR_USER_PROVIDED_INVALID_ARGUMENT: + return "invalid-argument"; + + case IED_ERROR_ENABLE_REPORT_FAILED_DATASET_MISMATCH: + return "enable-report-failed-due-to-dataset-mismatch"; + + case IED_ERROR_OBJECT_REFERENCE_INVALID: + return "object-reference-invalid"; + + case IED_ERROR_UNEXPECTED_VALUE_RECEIVED: + return "unexpected-value-received"; + + case IED_ERROR_TIMEOUT: + return "timeout"; + + case IED_ERROR_ACCESS_DENIED: + return "access-denied"; + + case IED_ERROR_OBJECT_DOES_NOT_EXIST: + return "object-does-not-exist"; + + case IED_ERROR_OBJECT_EXISTS: + return "object-exists"; + + case IED_ERROR_OBJECT_ACCESS_UNSUPPORTED: + return "object-access-unsupported"; + + case IED_ERROR_TYPE_INCONSISTENT: + return "type-inconsistent"; + + case IED_ERROR_TEMPORARILY_UNAVAILABLE: + return "temporary-unavailable"; + + case IED_ERROR_OBJECT_UNDEFINED: + return "object-undefined"; + + case IED_ERROR_INVALID_ADDRESS: + return "invalid-address"; + + case IED_ERROR_HARDWARE_FAULT: + return "hardware-fault"; + + case IED_ERROR_TYPE_UNSUPPORTED: + return "type-unsupported"; + + case IED_ERROR_OBJECT_ATTRIBUTE_INCONSISTENT: + return "object-attribute-inconsistent"; + + case IED_ERROR_OBJECT_VALUE_INVALID: + return "object-value-invalid"; + + case IED_ERROR_OBJECT_INVALIDATED: + return "object-invalidated"; + + case IED_ERROR_MALFORMED_MESSAGE: + return "malformed-message"; + + case IED_ERROR_OBJECT_CONSTRAINT_CONFLICT: + return "object-constraint-conflict"; + + case IED_ERROR_SERVICE_NOT_IMPLEMENTED: + return "service-not-implemented"; + + default: + return "unknown-error"; + } +} + IedClientError iedConnection_mapMmsErrorToIedError(MmsError mmsError) { diff --git a/src/iec61850/inc/iec61850_client.h b/src/iec61850/inc/iec61850_client.h index 5e53efe2..21adf9cf 100644 --- a/src/iec61850/inc/iec61850_client.h +++ b/src/iec61850/inc/iec61850_client.h @@ -172,6 +172,14 @@ typedef enum { IED_ERROR_UNKNOWN = 99 } IedClientError; +/** + * \brief Convert error value to string + * + * \return string constant representing the error + */ +LIB61850_API const char* +IedClientError_toString(IedClientError err); + /************************************************** * Connection creation and destruction **************************************************/