private void GetUa(GXByteBuffer data, GXDLMSTranslatorStructure xml)
{
xml.AppendStartTag(Command.Ua);
data.GetUInt8(); // Skip FromatID
data.GetUInt8(); // Skip Group ID.
data.GetUInt8(); // Skip Group len
Object val;
while (data.Position < data.Size)
{
HDLCInfo id = (HDLCInfo)data.GetUInt8();
short len = data.GetUInt8();
switch (len)
{
case 1:
val = data.GetUInt8();
break;
case 2:
val = data.GetUInt16();
break;
case 4:
val = data.GetUInt32();
break;
default:
throw new GXDLMSException("Invalid Exception.");
}
// RX / TX are delivered from the partner's point of view =>
// reversed to ours
switch (id)
{
case HDLCInfo.MaxInfoTX:
xml.AppendLine("<MaxInfoRX Value=\"" + val.ToString() + "\" />");
break;
case HDLCInfo.MaxInfoRX:
xml.AppendLine("<MaxInfoTX Value=\"" + val.ToString() + "\" />");
break;
case HDLCInfo.WindowSizeTX:
xml.AppendLine("<WindowSizeRX Value=\"" + val.ToString() + "\" />");
break;
case HDLCInfo.WindowSizeRX:
xml.AppendLine("<WindowSizeTX Value=\"" + val.ToString() + "\" />");
break;
default:
throw new GXDLMSException("Invalid UA response.");
}
}
xml.AppendEndTag(Command.Ua);
}