diff --git a/plc4go/protocols/bacnetip/readwrite/ParserHelper.go b/plc4go/protocols/bacnetip/readwrite/ParserHelper.go index 759d1cc0396..aef24671298 100644 --- a/plc4go/protocols/bacnetip/readwrite/ParserHelper.go +++ b/plc4go/protocols/bacnetip/readwrite/ParserHelper.go @@ -654,13 +654,6 @@ func (m BacnetipParserHelper) Parse(typeName string, arguments []string, io util } tagClass, _ := model.TagClassByName(arguments[1]) return model.BACnetLiftFaultTaggedParseWithBuffer(io, tagNumber, tagClass) - case "MaxApduLengthAcceptedTagged": - tagNumber, err := utils.StrToUint8(arguments[0]) - if err != nil { - return nil, errors.Wrap(err, "Error parsing") - } - tagClass, _ := model.TagClassByName(arguments[1]) - return model.MaxApduLengthAcceptedTaggedParseWithBuffer(io, tagNumber, tagClass) case "BACnetPropertyStatesEnclosed": tagNumber, err := utils.StrToUint8(arguments[0]) if err != nil { @@ -1399,13 +1392,6 @@ func (m BacnetipParserHelper) Parse(typeName string, arguments []string, io util return model.SubscribeCOVPropertyMultipleErrorFirstFailedSubscriptionParseWithBuffer(io, tagNumber) case "BACnetAuthenticationFactor": return model.BACnetAuthenticationFactorParseWithBuffer(io) - case "MaxSegmentsAcceptedTagged": - tagNumber, err := utils.StrToUint8(arguments[0]) - if err != nil { - return nil, errors.Wrap(err, "Error parsing") - } - tagClass, _ := model.TagClassByName(arguments[1]) - return model.MaxSegmentsAcceptedTaggedParseWithBuffer(io, tagNumber, tagClass) case "BACnetWriteAccessSpecification": return model.BACnetWriteAccessSpecificationParseWithBuffer(io) case "BACnetLightingCommandEnclosed": diff --git a/plc4go/protocols/bacnetip/readwrite/XmlParserHelper.go b/plc4go/protocols/bacnetip/readwrite/XmlParserHelper.go index 9a748421afd..dc6b33ad592 100644 --- a/plc4go/protocols/bacnetip/readwrite/XmlParserHelper.go +++ b/plc4go/protocols/bacnetip/readwrite/XmlParserHelper.go @@ -748,14 +748,6 @@ func (m BacnetipXmlParserHelper) Parse(typeName string, xmlString string, parser tagNumber := uint8(parsedUint0) tagClass, _ := model.TagClassByName(parserArguments[1]) return model.BACnetLiftFaultTaggedParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumber, tagClass) - case "MaxApduLengthAcceptedTagged": - parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 8) - if err != nil { - return nil, err - } - tagNumber := uint8(parsedUint0) - tagClass, _ := model.TagClassByName(parserArguments[1]) - return model.MaxApduLengthAcceptedTaggedParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumber, tagClass) case "BACnetPropertyStatesEnclosed": parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 8) if err != nil { @@ -1585,14 +1577,6 @@ func (m BacnetipXmlParserHelper) Parse(typeName string, xmlString string, parser return model.SubscribeCOVPropertyMultipleErrorFirstFailedSubscriptionParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumber) case "BACnetAuthenticationFactor": return model.BACnetAuthenticationFactorParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString))) - case "MaxSegmentsAcceptedTagged": - parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 8) - if err != nil { - return nil, err - } - tagNumber := uint8(parsedUint0) - tagClass, _ := model.TagClassByName(parserArguments[1]) - return model.MaxSegmentsAcceptedTaggedParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumber, tagClass) case "BACnetWriteAccessSpecification": return model.BACnetWriteAccessSpecificationParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString))) case "BACnetLightingCommandEnclosed": diff --git a/plc4go/protocols/bacnetip/readwrite/model/MaxApduLengthAccepted.go b/plc4go/protocols/bacnetip/readwrite/model/MaxApduLengthAccepted.go index 6f9ce330583..a43a7f70f90 100644 --- a/plc4go/protocols/bacnetip/readwrite/model/MaxApduLengthAccepted.go +++ b/plc4go/protocols/bacnetip/readwrite/model/MaxApduLengthAccepted.go @@ -33,6 +33,7 @@ type MaxApduLengthAccepted uint8 type IMaxApduLengthAccepted interface { utils.Serializable + NumberOfOctets() uint16 } const ( @@ -78,6 +79,87 @@ func init() { } } +func (e MaxApduLengthAccepted) NumberOfOctets() uint16 { + switch e { + case 0x0: + { /* '0x0' */ + return 50 + } + case 0x1: + { /* '0x1' */ + return 128 + } + case 0x2: + { /* '0x2' */ + return 206 + } + case 0x3: + { /* '0x3' */ + return 480 + } + case 0x4: + { /* '0x4' */ + return 1024 + } + case 0x5: + { /* '0x5' */ + return 1476 + } + case 0x6: + { /* '0x6' */ + return 0 + } + case 0x7: + { /* '0x7' */ + return 0 + } + case 0x8: + { /* '0x8' */ + return 0 + } + case 0x9: + { /* '0x9' */ + return 0 + } + case 0xA: + { /* '0xA' */ + return 0 + } + case 0xB: + { /* '0xB' */ + return 0 + } + case 0xC: + { /* '0xC' */ + return 0 + } + case 0xD: + { /* '0xD' */ + return 0 + } + case 0xE: + { /* '0xE' */ + return 0 + } + case 0xF: + { /* '0xF' */ + return 0 + } + default: + { + return 0 + } + } +} + +func MaxApduLengthAcceptedFirstEnumForFieldNumberOfOctets(value uint16) (MaxApduLengthAccepted, error) { + for _, sizeValue := range MaxApduLengthAcceptedValues { + if sizeValue.NumberOfOctets() == value { + return sizeValue, nil + } + } + return 0, errors.Errorf("enum for %v describing NumberOfOctets not found", value) +} func MaxApduLengthAcceptedByValue(value uint8) (enum MaxApduLengthAccepted, ok bool) { switch value { case 0x0: diff --git a/plc4go/protocols/bacnetip/readwrite/model/MaxSegmentsAccepted.go b/plc4go/protocols/bacnetip/readwrite/model/MaxSegmentsAccepted.go index bc454bc7bc9..2bf9d41fa6a 100644 --- a/plc4go/protocols/bacnetip/readwrite/model/MaxSegmentsAccepted.go +++ b/plc4go/protocols/bacnetip/readwrite/model/MaxSegmentsAccepted.go @@ -33,6 +33,7 @@ type MaxSegmentsAccepted uint8 type IMaxSegmentsAccepted interface { utils.Serializable + MaxSegments() uint8 } const ( @@ -62,6 +63,55 @@ func init() { } } +func (e MaxSegmentsAccepted) MaxSegments() uint8 { + switch e { + case 0x0: + { /* '0x0' */ + return 255 + } + case 0x1: + { /* '0x1' */ + return 2 + } + case 0x2: + { /* '0x2' */ + return 4 + } + case 0x3: + { /* '0x3' */ + return 8 + } + case 0x4: + { /* '0x4' */ + return 16 + } + case 0x5: + { /* '0x5' */ + return 32 + } + case 0x6: + { /* '0x6' */ + return 64 + } + case 0x7: + { /* '0x7' */ + return 255 + } + default: + { + return 0 + } + } +} + +func MaxSegmentsAcceptedFirstEnumForFieldMaxSegments(value uint8) (MaxSegmentsAccepted, error) { + for _, sizeValue := range MaxSegmentsAcceptedValues { + if sizeValue.MaxSegments() == value { + return sizeValue, nil + } + } + return 0, errors.Errorf("enum for %v describing MaxSegments not found", value) +} func MaxSegmentsAcceptedByValue(value uint8) (enum MaxSegmentsAccepted, ok bool) { switch value { case 0x0: diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnet-private-enums.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnet-private-enums.mspec index 640ca53ed40..2d2670f09a4 100644 --- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnet-private-enums.mspec +++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnet-private-enums.mspec @@ -488,35 +488,35 @@ ] // Attention: No proprietary extension allowed -[enum uint 3 MaxSegmentsAccepted - ['0x0' UNSPECIFIED ] - ['0x1' NUM_SEGMENTS_02 ] - ['0x2' NUM_SEGMENTS_04 ] - ['0x3' NUM_SEGMENTS_08 ] - ['0x4' NUM_SEGMENTS_16 ] - ['0x5' NUM_SEGMENTS_32 ] - ['0x6' NUM_SEGMENTS_64 ] - ['0x7' MORE_THAN_64_SEGMENTS ] -] - -// Attention: No proprietary extension allowed -[enum uint 4 MaxApduLengthAccepted - ['0x0' MINIMUM_MESSAGE_SIZE ] // 50 octets - ['0x1' NUM_OCTETS_128 ] - ['0x2' NUM_OCTETS_206 ] // fits in a LonTalk frame - ['0x3' NUM_OCTETS_480 ] // fits in an ARCNET frame - ['0x4' NUM_OCTETS_1024 ] - ['0x5' NUM_OCTETS_1476 ] // fits in an Ethernet frame - ['0x6' RESERVED_BY_ASHRAE_01 ] - ['0x7' RESERVED_BY_ASHRAE_02 ] - ['0x8' RESERVED_BY_ASHRAE_03 ] - ['0x9' RESERVED_BY_ASHRAE_04 ] - ['0xA' RESERVED_BY_ASHRAE_05 ] - ['0xB' RESERVED_BY_ASHRAE_06 ] - ['0xC' RESERVED_BY_ASHRAE_07 ] - ['0xD' RESERVED_BY_ASHRAE_08 ] - ['0xE' RESERVED_BY_ASHRAE_09 ] - ['0xF' RESERVED_BY_ASHRAE_10 ] +[enum uint 3 MaxSegmentsAccepted(uint 8 maxSegments) + ['0x0' UNSPECIFIED ['255']] + ['0x1' NUM_SEGMENTS_02 [ '2']] + ['0x2' NUM_SEGMENTS_04 [ '4']] + ['0x3' NUM_SEGMENTS_08 [ '8']] + ['0x4' NUM_SEGMENTS_16 [ '16']] + ['0x5' NUM_SEGMENTS_32 [ '32']] + ['0x6' NUM_SEGMENTS_64 [ '64']] + ['0x7' MORE_THAN_64_SEGMENTS ['255']] +] + +// Attention: No proprietary extension allowed +[enum uint 4 MaxApduLengthAccepted(uint 16 numberOfOctets) + ['0x0' MINIMUM_MESSAGE_SIZE [ '50']] // 50 octets + ['0x1' NUM_OCTETS_128 [ '128']] + ['0x2' NUM_OCTETS_206 [ '206']] // fits in a LonTalk frame + ['0x3' NUM_OCTETS_480 [ '480']] // fits in an ARCNET frame + ['0x4' NUM_OCTETS_1024 ['1024']] + ['0x5' NUM_OCTETS_1476 ['1476']] // fits in an Ethernet frame + ['0x6' RESERVED_BY_ASHRAE_01 [ '0']] + ['0x7' RESERVED_BY_ASHRAE_02 [ '0']] + ['0x8' RESERVED_BY_ASHRAE_03 [ '0']] + ['0x9' RESERVED_BY_ASHRAE_04 [ '0']] + ['0xA' RESERVED_BY_ASHRAE_05 [ '0']] + ['0xB' RESERVED_BY_ASHRAE_06 [ '0']] + ['0xC' RESERVED_BY_ASHRAE_07 [ '0']] + ['0xD' RESERVED_BY_ASHRAE_08 [ '0']] + ['0xE' RESERVED_BY_ASHRAE_09 [ '0']] + ['0xF' RESERVED_BY_ASHRAE_10 [ '0']] ] // Attention: No proprietary extension allowed