CGXDLMS::GetPdu does not get the return value for HandleGloDedRequest and consequently loses track of the error, in my case it did not return the DLMS_ERROR_INVALID_DECIPHERING_ERROR.
int CGXDLMS::GetPdu(
CGXDLMSSettings& settings,
CGXReplyData& data)
{
/* .......... */
case DLMS_COMMAND_GENERAL_DED_CIPHERING:
if (settings.IsServer())
{
HandleGloDedRequest(settings, data);
// ^---- this should be: ret = HandleGloDedRequest(settings, data);
}
else
{
HandleGloDedResponse(settings, data, index);
// ^---- this should be: ret = HandleGloDedResponse(settings, data, index);
}
break;