diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetAccumulatorRecord.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetAccumulatorRecord.go index 3e0dadd43c2..ff8c1c45093 100644 --- a/plc4go/protocols/bacnetip/readwrite/model/BACnetAccumulatorRecord.go +++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetAccumulatorRecord.go @@ -175,7 +175,7 @@ func BACnetAccumulatorRecordParse(readBuffer utils.ReadBuffer) (*BACnetAccumulat if pullErr := readBuffer.PullContext("accumulatorStatus"); pullErr != nil { return nil, pullErr } - _accumulatorStatus, _accumulatorStatusErr := BACnetAccumulatorRecordAccumulatorStatusTaggedParse(readBuffer, uint8(uint8(0)), TagClass(TagClass_APPLICATION_TAGS)) + _accumulatorStatus, _accumulatorStatusErr := BACnetAccumulatorRecordAccumulatorStatusTaggedParse(readBuffer, uint8(uint8(3)), TagClass(TagClass_CONTEXT_SPECIFIC_TAGS)) if _accumulatorStatusErr != nil { return nil, errors.Wrap(_accumulatorStatusErr, "Error parsing 'accumulatorStatus' field") } diff --git a/plc4go/protocols/bacnetip/readwrite/model/StaticHelper.go b/plc4go/protocols/bacnetip/readwrite/model/StaticHelper.go index f0b8468045d..720c55079f5 100644 --- a/plc4go/protocols/bacnetip/readwrite/model/StaticHelper.go +++ b/plc4go/protocols/bacnetip/readwrite/model/StaticHelper.go @@ -95,6 +95,11 @@ func ReadEnumGenericFailing(readBuffer utils.ReadBuffer, actualLength uint32, te return 0, errors.Errorf("unmapped value %d", rawValue) } return BACnetFileAccessMethod(rawValue), nil + case BACnetAccumulatorRecordAccumulatorStatus: + if value := uint8(rawValue); rawValue > math.MaxUint8 || !BACnetAccumulatorRecordAccumulatorStatusKnows(value) { + return 0, errors.Errorf("unmapped value %d", rawValue) + } + return BACnetAccumulatorRecordAccumulatorStatus(rawValue), nil default: panic(fmt.Sprintf("support for %T not yet implemented", template)) } diff --git a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java index a062db24111..b6543e0e004 100644 --- a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java +++ b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java @@ -94,6 +94,10 @@ public static Object readEnumGenericFailing(ReadBuffer readBuffer, Long actualLe if (!BACnetFileAccessMethod.isDefined((short) rawValue)) throw new ParseException("Invalid value " + rawValue + " for " + BACnetFileAccessMethod.class.getSimpleName()); return BACnetFileAccessMethod.enumForValue((short) rawValue); + }else if (declaringClass == BACnetAccumulatorRecordAccumulatorStatus.class) { + if (!BACnetAccumulatorRecordAccumulatorStatus.isDefined((short) rawValue)) + throw new ParseException("Invalid value " + rawValue + " for " + BACnetAccumulatorRecordAccumulatorStatus.class.getSimpleName()); + return BACnetAccumulatorRecordAccumulatorStatus.enumForValue((short) rawValue); } throw new ParseException("Unmapped type " + declaringClass); } diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec index 8e93e680f4b..a623cd83bd9 100644 --- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec +++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec @@ -5440,6 +5440,6 @@ presentValue ] [simple BACnetContextTagSignedInteger('2', 'BACnetDataType.SIGNED_INTEGER') accumulatedValue ] - [simple BACnetAccumulatorRecordAccumulatorStatusTagged('0', 'TagClass.APPLICATION_TAGS') + [simple BACnetAccumulatorRecordAccumulatorStatusTagged('3', 'TagClass.CONTEXT_SPECIFIC_TAGS') accumulatorStatus ] ]