- IEC 61850/MMS Client: Handle MMS service error object-constraint-conflict and added IED_ERROR_OBJECT_CONSTRAINT_CONFLICT

pull/494/head
Michael Zillgith 2 years ago
parent e57dcc7214
commit b695192e56

@ -1,7 +1,7 @@
/* /*
* ied_connection.c * ied_connection.c
* *
* Copyright 2013-2022 Michael Zillgith * Copyright 2013-2023 Michael Zillgith
* *
* This file is part of libIEC61850. * This file is part of libIEC61850.
* *
@ -108,6 +108,9 @@ iedConnection_mapMmsErrorToIedError(MmsError mmsError)
case MMS_ERROR_ACCESS_TEMPORARILY_UNAVAILABLE: case MMS_ERROR_ACCESS_TEMPORARILY_UNAVAILABLE:
return IED_ERROR_TEMPORARILY_UNAVAILABLE; return IED_ERROR_TEMPORARILY_UNAVAILABLE;
case MMS_ERROR_SERVICE_OBJECT_CONSTRAINT_CONFLICT:
return IED_ERROR_OBJECT_CONSTRAINT_CONFLICT;
default: default:
return IED_ERROR_UNKNOWN; return IED_ERROR_UNKNOWN;
} }

@ -768,7 +768,6 @@ MmsMapping_ObjectReferenceToVariableAccessSpec(char* objectReference)
return accessSpec; return accessSpec;
} }
static int static int
getNumberOfDigits(int value) getNumberOfDigits(int value)
{ {

@ -162,6 +162,9 @@ typedef enum {
/** Received an invalid response message from the server */ /** Received an invalid response message from the server */
IED_ERROR_MALFORMED_MESSAGE = 34, IED_ERROR_MALFORMED_MESSAGE = 34,
/** Service was not executed because required resource is still in use */
IED_ERROR_OBJECT_CONSTRAINT_CONFLICT = 35,
/** Service not implemented */ /** Service not implemented */
IED_ERROR_SERVICE_NOT_IMPLEMENTED = 98, IED_ERROR_SERVICE_NOT_IMPLEMENTED = 98,

@ -436,8 +436,18 @@ convertServiceErrorToMmsError(MmsServiceError serviceError)
break; break;
case 4: /* class: service */ case 4: /* class: service */
switch (serviceError.errorCode)
{
case 5:
mmsError = MMS_ERROR_SERVICE_OBJECT_CONSTRAINT_CONFLICT;
break;
default:
mmsError = MMS_ERROR_SERVICE_OTHER; mmsError = MMS_ERROR_SERVICE_OTHER;
break; break;
}
break;
case 5: /* class: service-preempt */ case 5: /* class: service-preempt */
mmsError = MMS_ERROR_SERVICE_PREEMPT_OTHER; mmsError = MMS_ERROR_SERVICE_PREEMPT_OTHER;

Loading…
Cancel
Save