private byte[] ReportError(Command cmd, ErrorCode error)
{
switch (cmd)
{
case Command.ReadRequest:
cmd = Command.ReadResponse;
break;
case Command.WriteRequest:
cmd = Command.WriteResponse;
break;
case Command.GetRequest:
cmd = Command.GetResponse;
break;
case Command.SetRequest:
cmd = Command.SetResponse;
break;
case Command.MethodRequest:
cmd = Command.MethodResponse;
break;
default:
//Return HW error and close connection..
break;
}
if (Settings.UseLogicalNameReferencing)
{
GXDLMS.GetLNPdu(new GXDLMSLNParameters(Settings, cmd, 1, null, null, (byte)error), replyData);
}
else
{
GXByteBuffer bb = new GXByteBuffer();
bb.SetUInt8(error);
GXDLMSSNParameters p = new GXDLMSSNParameters(Settings, cmd, 1, (byte)error, null, bb);
GXDLMS.GetSNPdu(p, replyData);
}
if (this.InterfaceType == Enums.InterfaceType.WRAPPER)
{
return GXDLMS.GetWrapperFrame(Settings, replyData);
}
else
{
return GXDLMS.GetHdlcFrame(Settings, 0, replyData);
}
}