According to the standard, BACnetLogData is a choice of log-status, log-data or time-change.
However, looking at com.serotonin.bacnet4j.type.constructed.LogData.java:```
public LogData(ByteQueue queue) throws BACnetException {
logStatus = read(queue, LogStatus.class, 0);
logData = readSequenceOfChoice(queue, classes, 1);
timeChange = read(queue, Real.class, 2);
}
@Override
public void write(ByteQueue queue) {
write(queue, logStatus, 0);
write(queue, logData, 1);
write(queue, timeChange, 2);
}
By changing
public LogData(ByteQueue queue) throws BACnetException {
logStatus = read(queue, LogStatus.class, 0);
logData = readSequenceOfChoice(queue, classes, 1);
timeChange = read(queue, Real.class, 2);
}
public LogData(ByteQueue queue) throws BACnetException {
int tag = peekTagNumber(queue);
if (tag == 0)
{
logStatus = read(queue, LogStatus.class, 0);
logData = null;
timeChange = null;
}
else if (tag == 1)
{
logStatus = null;
logData = readSequenceOfChoice(queue, classes, 1);
timeChange = null;
}
else if (tag == 2)
{
logStatus = null;
logData = null;
timeChange = read(queue, Real.class, 2);
}
else
{
throw new BACnetErrorException(ErrorClass.property, ErrorCode.missingRequiredParameter);
}
}