You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/01/13 10:42:52 UTC

[plc4x] branch develop updated (9bcde37 -> 335a35f)

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git.


    from 9bcde37  test(bacnet): added possibility to ignore malformed packages
     new 18f7ac7  feat(bacnet): implemented BVLCWriteBroadcastDistributionTable
     new 335a35f  test(bacnet): set filtering on remaining tests

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 plc4go/internal/plc4go/ads/fieldtype_string.go     |  17 --
 .../plc4go/bacnetip/readwrite/ParserHelper.go      |   2 +
 .../plc4go/bacnetip/readwrite/XmlParserHelper.go   |   2 +
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |  83 +++---
 .../model/BVLCDeleteForeignDeviceTableEntry.go     |  21 +-
 .../model/BVLCDistributeBroadcastToNetwork.go      |  47 ++--
 .../bacnetip/readwrite/model/BVLCForwardedNPDU.go  |  95 ++++---
 .../readwrite/model/BVLCOriginalBroadcastNPDU.go   |  47 ++--
 .../readwrite/model/BVLCOriginalUnicastNPDU.go     |  47 ++--
 .../model/BVLCReadBroadcastDistributionTable.go    |  21 +-
 .../model/BVLCReadBroadcastDistributionTableAck.go |  21 +-
 .../readwrite/model/BVLCReadForeignDeviceTable.go  |  21 +-
 .../model/BVLCReadForeignDeviceTableAck.go         |  21 +-
 .../readwrite/model/BVLCRegisterForeignDevice.go   |  41 +--
 .../plc4go/bacnetip/readwrite/model/BVLCResult.go  |  45 +--
 .../bacnetip/readwrite/model/BVLCSecureBVLL.go     |  21 +-
 .../model/BVLCWideBroadcastDistributionTable.go    | 133 ---------
 .../model/BVLCWriteBroadcastDistributionTable.go   | 186 +++++++++++++
 .../BVLCWriteBroadcastDistributionTableEntry.go    | 206 ++++++++++++++
 plc4go/internal/plc4go/modbus/fieldtype_string.go  |  17 --
 plc4go/internal/plc4go/s7/fieldtype_string.go      |  17 --
 .../plc4go/spi/testutils/steptype_string.go        |  17 --
 .../plc4x/java/bacnetip/RandomPackagesTest.java    | 306 +++++++++------------
 .../resources/protocols/bacnetip/bacnetip.mspec    |  34 ++-
 24 files changed, 850 insertions(+), 618 deletions(-)
 delete mode 100644 plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go
 create mode 100644 plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWriteBroadcastDistributionTable.go
 create mode 100644 plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWriteBroadcastDistributionTableEntry.go

[plc4x] 01/02: feat(bacnet): implemented BVLCWriteBroadcastDistributionTable

Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 18f7ac7c8ef0bfc5c7a75d76f0529bcbaae07194
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jan 13 10:46:49 2022 +0100

    feat(bacnet): implemented BVLCWriteBroadcastDistributionTable
---
 plc4go/internal/plc4go/ads/fieldtype_string.go     |  17 --
 .../plc4go/bacnetip/readwrite/ParserHelper.go      |   2 +
 .../plc4go/bacnetip/readwrite/XmlParserHelper.go   |   2 +
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |  83 +++++----
 .../model/BVLCDeleteForeignDeviceTableEntry.go     |  21 ++-
 .../model/BVLCDistributeBroadcastToNetwork.go      |  47 ++---
 .../bacnetip/readwrite/model/BVLCForwardedNPDU.go  |  95 +++++-----
 .../readwrite/model/BVLCOriginalBroadcastNPDU.go   |  47 ++---
 .../readwrite/model/BVLCOriginalUnicastNPDU.go     |  47 ++---
 .../model/BVLCReadBroadcastDistributionTable.go    |  21 ++-
 .../model/BVLCReadBroadcastDistributionTableAck.go |  21 ++-
 .../readwrite/model/BVLCReadForeignDeviceTable.go  |  21 ++-
 .../model/BVLCReadForeignDeviceTableAck.go         |  21 ++-
 .../readwrite/model/BVLCRegisterForeignDevice.go   |  41 ++--
 .../plc4go/bacnetip/readwrite/model/BVLCResult.go  |  45 +++--
 .../bacnetip/readwrite/model/BVLCSecureBVLL.go     |  21 ++-
 .../model/BVLCWideBroadcastDistributionTable.go    | 133 -------------
 .../model/BVLCWriteBroadcastDistributionTable.go   | 186 +++++++++++++++++++
 .../BVLCWriteBroadcastDistributionTableEntry.go    | 206 +++++++++++++++++++++
 plc4go/internal/plc4go/modbus/fieldtype_string.go  |  17 --
 plc4go/internal/plc4go/s7/fieldtype_string.go      |  17 --
 .../plc4go/spi/testutils/steptype_string.go        |  17 --
 .../plc4x/java/bacnetip/RandomPackagesTest.java    |   5 +-
 .../resources/protocols/bacnetip/bacnetip.mspec    |  34 ++--
 24 files changed, 723 insertions(+), 444 deletions(-)

diff --git a/plc4go/internal/plc4go/ads/fieldtype_string.go b/plc4go/internal/plc4go/ads/fieldtype_string.go
index 4b0da39..6c2fa73 100644
--- a/plc4go/internal/plc4go/ads/fieldtype_string.go
+++ b/plc4go/internal/plc4go/ads/fieldtype_string.go
@@ -1,20 +1,3 @@
-// Licensed to Apache Software Foundation (ASF) under one or more contributor
-// license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright
-// ownership. Apache Software Foundation (ASF) licenses this file to you under
-// the Apache License, Version 2.0 (the "License"); you may
-// not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
 // Code generated by "stringer -type FieldType"; DO NOT EDIT.
 
 package ads
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/ParserHelper.go b/plc4go/internal/plc4go/bacnetip/readwrite/ParserHelper.go
index 8c3ae3d..e6e37e1 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/ParserHelper.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/ParserHelper.go
@@ -157,6 +157,8 @@ func (m BacnetipParserHelper) Parse(typeName string, arguments []string, io util
 			return nil, errors.Wrap(err, "Error parsing")
 		}
 		return model.NPDUParse(io, npduLength)
+	case "BVLCWriteBroadcastDistributionTableEntry":
+		return model.BVLCWriteBroadcastDistributionTableEntryParse(io)
 	}
 	return nil, errors.Errorf("Unsupported type %s", typeName)
 }
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/XmlParserHelper.go b/plc4go/internal/plc4go/bacnetip/readwrite/XmlParserHelper.go
index e3dfa21..1c30f00 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/XmlParserHelper.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/XmlParserHelper.go
@@ -184,6 +184,8 @@ func (m BacnetipXmlParserHelper) Parse(typeName string, xmlString string, parser
 		}
 		npduLength := uint16(parsedUint0)
 		return model.NPDUParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), npduLength)
+	case "BVLCWriteBroadcastDistributionTableEntry":
+		return model.BVLCWriteBroadcastDistributionTableEntryParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	}
 	return nil, errors.Errorf("Unsupported type %s", typeName)
 }
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
index fc1252f..3dc618d 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
@@ -19,19 +19,22 @@
 
 package model
 
+
 import (
 	"fmt"
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // Constant values.
 const BVLC_BACNETTYPE uint8 = 0x81
 
 // The data-structure of this message
 type BVLC struct {
+        BvlcPayloadLength uint16
 	Child IBVLCChild
 }
 
@@ -50,13 +53,12 @@ type IBVLCParent interface {
 
 type IBVLCChild interface {
 	Serialize(writeBuffer utils.WriteBuffer) error
-	InitializeParent(parent *BVLC)
+	InitializeParent(parent *BVLCbvlcPayloadLength uint16)
 	GetTypeName() string
 	IBVLC
 }
 
-func NewBVLC() *BVLC {
-	return &BVLC{}
+func NewBVLC( bvlcPayloadLength uint16 ) *BVLC {	return &BVLC{BvlcPayloadLength: bvlcPayloadLength}
 }
 
 func CastBVLC(structType interface{}) *BVLC {
@@ -90,11 +92,13 @@ func (m *BVLC) ParentLengthInBits() uint16 {
 	// Const Field (bacnetType)
 	lengthInBits += 8
 	// Discriminator Field (bvlcFunction)
-	lengthInBits += 8
+	lengthInBits += 8;
 
 	// Implicit Field (bvlcLength)
 	lengthInBits += 16
 
+	// A virtual field doesn't have any in- or output.
+
 	return lengthInBits
 }
 
@@ -119,7 +123,7 @@ func BVLCParse(readBuffer utils.ReadBuffer) (*BVLC, error) {
 	// Discriminator Field (bvlcFunction) (Used as input to a switch field)
 	bvlcFunction, _bvlcFunctionErr := readBuffer.ReadUint8("bvlcFunction", 8)
 	if _bvlcFunctionErr != nil {
-		return nil, errors.Wrap(_bvlcFunctionErr, "Error parsing 'bvlcFunction' field")
+	return nil, errors.Wrap(_bvlcFunctionErr, "Error parsing 'bvlcFunction' field")
 	}
 
 	// Implicit Field (bvlcLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -129,36 +133,40 @@ func BVLCParse(readBuffer utils.ReadBuffer) (*BVLC, error) {
 		return nil, errors.Wrap(_bvlcLengthErr, "Error parsing 'bvlcLength' field")
 	}
 
+	// Virtual field
+	_bvlcPayloadLength := uint16(bvlcLength) - uint16(uint16(4))
+	bvlcPayloadLength := uint16(_bvlcPayloadLength)
+
 	// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
 	var _parent *BVLC
 	var typeSwitchError error
 	switch {
-	case bvlcFunction == 0x00: // BVLCResult
-		_parent, typeSwitchError = BVLCResultParse(readBuffer)
-	case bvlcFunction == 0x01: // BVLCWideBroadcastDistributionTable
-		_parent, typeSwitchError = BVLCWideBroadcastDistributionTableParse(readBuffer)
-	case bvlcFunction == 0x02: // BVLCReadBroadcastDistributionTable
-		_parent, typeSwitchError = BVLCReadBroadcastDistributionTableParse(readBuffer)
-	case bvlcFunction == 0x03: // BVLCReadBroadcastDistributionTableAck
-		_parent, typeSwitchError = BVLCReadBroadcastDistributionTableAckParse(readBuffer)
-	case bvlcFunction == 0x04: // BVLCForwardedNPDU
-		_parent, typeSwitchError = BVLCForwardedNPDUParse(readBuffer, bvlcLength)
-	case bvlcFunction == 0x05: // BVLCRegisterForeignDevice
-		_parent, typeSwitchError = BVLCRegisterForeignDeviceParse(readBuffer)
-	case bvlcFunction == 0x06: // BVLCReadForeignDeviceTable
-		_parent, typeSwitchError = BVLCReadForeignDeviceTableParse(readBuffer)
-	case bvlcFunction == 0x07: // BVLCReadForeignDeviceTableAck
-		_parent, typeSwitchError = BVLCReadForeignDeviceTableAckParse(readBuffer)
-	case bvlcFunction == 0x08: // BVLCDeleteForeignDeviceTableEntry
-		_parent, typeSwitchError = BVLCDeleteForeignDeviceTableEntryParse(readBuffer)
-	case bvlcFunction == 0x09: // BVLCDistributeBroadcastToNetwork
-		_parent, typeSwitchError = BVLCDistributeBroadcastToNetworkParse(readBuffer, bvlcLength)
-	case bvlcFunction == 0x0A: // BVLCOriginalUnicastNPDU
-		_parent, typeSwitchError = BVLCOriginalUnicastNPDUParse(readBuffer, bvlcLength)
-	case bvlcFunction == 0x0B: // BVLCOriginalBroadcastNPDU
-		_parent, typeSwitchError = BVLCOriginalBroadcastNPDUParse(readBuffer, bvlcLength)
-	case bvlcFunction == 0x0C: // BVLCSecureBVLL
-		_parent, typeSwitchError = BVLCSecureBVLLParse(readBuffer)
+case bvlcFunction == 0x00 : // BVLCResult
+		_parent, typeSwitchError = BVLCResultParse(readBuffer, )
+case bvlcFunction == 0x01 : // BVLCWriteBroadcastDistributionTable
+		_parent, typeSwitchError = BVLCWriteBroadcastDistributionTableParse(readBuffer, bvlcPayloadLength)
+case bvlcFunction == 0x02 : // BVLCReadBroadcastDistributionTable
+		_parent, typeSwitchError = BVLCReadBroadcastDistributionTableParse(readBuffer, )
+case bvlcFunction == 0x03 : // BVLCReadBroadcastDistributionTableAck
+		_parent, typeSwitchError = BVLCReadBroadcastDistributionTableAckParse(readBuffer, )
+case bvlcFunction == 0x04 : // BVLCForwardedNPDU
+		_parent, typeSwitchError = BVLCForwardedNPDUParse(readBuffer, bvlcPayloadLength)
+case bvlcFunction == 0x05 : // BVLCRegisterForeignDevice
+		_parent, typeSwitchError = BVLCRegisterForeignDeviceParse(readBuffer, )
+case bvlcFunction == 0x06 : // BVLCReadForeignDeviceTable
+		_parent, typeSwitchError = BVLCReadForeignDeviceTableParse(readBuffer, )
+case bvlcFunction == 0x07 : // BVLCReadForeignDeviceTableAck
+		_parent, typeSwitchError = BVLCReadForeignDeviceTableAckParse(readBuffer, )
+case bvlcFunction == 0x08 : // BVLCDeleteForeignDeviceTableEntry
+		_parent, typeSwitchError = BVLCDeleteForeignDeviceTableEntryParse(readBuffer, )
+case bvlcFunction == 0x09 : // BVLCDistributeBroadcastToNetwork
+		_parent, typeSwitchError = BVLCDistributeBroadcastToNetworkParse(readBuffer, bvlcPayloadLength)
+case bvlcFunction == 0x0A : // BVLCOriginalUnicastNPDU
+		_parent, typeSwitchError = BVLCOriginalUnicastNPDUParse(readBuffer, bvlcPayloadLength)
+case bvlcFunction == 0x0B : // BVLCOriginalBroadcastNPDU
+		_parent, typeSwitchError = BVLCOriginalBroadcastNPDUParse(readBuffer, bvlcPayloadLength)
+case bvlcFunction == 0x0C : // BVLCSecureBVLL
+		_parent, typeSwitchError = BVLCSecureBVLLParse(readBuffer, )
 	default:
 		// TODO: return actual type
 		typeSwitchError = errors.New("Unmapped type")
@@ -172,7 +180,7 @@ func BVLCParse(readBuffer utils.ReadBuffer) (*BVLC, error) {
 	}
 
 	// Finish initializing
-	_parent.Child.InitializeParent(_parent)
+	_parent.Child.InitializeParent(_parentbvlcPayloadLength)
 	return _parent, nil
 }
 
@@ -181,7 +189,7 @@ func (m *BVLC) Serialize(writeBuffer utils.WriteBuffer) error {
 }
 
 func (m *BVLC) SerializeParent(writeBuffer utils.WriteBuffer, child IBVLC, serializeChildFunction func() error) error {
-	if pushErr := writeBuffer.PushContext("BVLC"); pushErr != nil {
+	if pushErr :=writeBuffer.PushContext("BVLC"); pushErr != nil {
 		return pushErr
 	}
 
@@ -205,6 +213,10 @@ func (m *BVLC) SerializeParent(writeBuffer utils.WriteBuffer, child IBVLC, seria
 	if _bvlcLengthErr != nil {
 		return errors.Wrap(_bvlcLengthErr, "Error serializing 'bvlcLength' field")
 	}
+	// Virtual field
+	if _bvlcPayloadLengthErr := writeBuffer.WriteVirtual("bvlcPayloadLength", m.BvlcPayloadLength); _bvlcPayloadLengthErr != nil {
+		return errors.Wrap(_bvlcPayloadLengthErr, "Error serializing 'bvlcPayloadLength' field")
+	}
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
 	if _typeSwitchErr := serializeChildFunction(); _typeSwitchErr != nil {
@@ -225,3 +237,6 @@ func (m *BVLC) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
index b9d36dc..61314a5 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
@@ -19,11 +19,13 @@
 
 package model
 
+
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // The data-structure of this message
 type BVLCDeleteForeignDeviceTableEntry struct {
@@ -41,15 +43,14 @@ type IBVLCDeleteForeignDeviceTableEntry interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *BVLCDeleteForeignDeviceTableEntry) BvlcFunction() uint8 {
-	return 0x08
-}
+return 0x08}
+
 
-func (m *BVLCDeleteForeignDeviceTableEntry) InitializeParent(parent *BVLC) {
+func (m *BVLCDeleteForeignDeviceTableEntry) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
 }
 
-func NewBVLCDeleteForeignDeviceTableEntry() *BVLC {
-	child := &BVLCDeleteForeignDeviceTableEntry{
-		BVLC: NewBVLC(),
+func NewBVLCDeleteForeignDeviceTableEntry( bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCDeleteForeignDeviceTableEntry{
+    	BVLC: NewBVLC(bvlcPayloadLength),
 	}
 	child.Child = child
 	return child.BVLC
@@ -88,6 +89,7 @@ func (m *BVLCDeleteForeignDeviceTableEntry) LengthInBitsConditional(lastItem boo
 	return lengthInBits
 }
 
+
 func (m *BVLCDeleteForeignDeviceTableEntry) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
@@ -103,7 +105,7 @@ func BVLCDeleteForeignDeviceTableEntryParse(readBuffer utils.ReadBuffer) (*BVLC,
 
 	// Create a partially initialized instance
 	_child := &BVLCDeleteForeignDeviceTableEntry{
-		BVLC: &BVLC{},
+        BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
 	return _child.BVLC, nil
@@ -131,3 +133,6 @@ func (m *BVLCDeleteForeignDeviceTableEntry) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
index 4bcd58e..091c82f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
@@ -19,12 +19,14 @@
 
 package model
 
+
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // The data-structure of this message
 type BVLCDistributeBroadcastToNetwork struct {
@@ -43,16 +45,15 @@ type IBVLCDistributeBroadcastToNetwork interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *BVLCDistributeBroadcastToNetwork) BvlcFunction() uint8 {
-	return 0x09
-}
+return 0x09}
 
-func (m *BVLCDistributeBroadcastToNetwork) InitializeParent(parent *BVLC) {
+
+func (m *BVLCDistributeBroadcastToNetwork) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
 }
 
-func NewBVLCDistributeBroadcastToNetwork(npdu *NPDU) *BVLC {
-	child := &BVLCDistributeBroadcastToNetwork{
+func NewBVLCDistributeBroadcastToNetwork( npdu *NPDU , bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCDistributeBroadcastToNetwork{
 		Npdu: npdu,
-		BVLC: NewBVLC(),
+    	BVLC: NewBVLC(bvlcPayloadLength),
 	}
 	child.Child = child
 	return child.BVLC
@@ -94,11 +95,12 @@ func (m *BVLCDistributeBroadcastToNetwork) LengthInBitsConditional(lastItem bool
 	return lengthInBits
 }
 
+
 func (m *BVLCDistributeBroadcastToNetwork) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BVLCDistributeBroadcastToNetworkParse(readBuffer utils.ReadBuffer, bvlcLength uint16) (*BVLC, error) {
+func BVLCDistributeBroadcastToNetworkParse(readBuffer utils.ReadBuffer, bvlcPayloadLength uint16) (*BVLC, error) {
 	if pullErr := readBuffer.PullContext("BVLCDistributeBroadcastToNetwork"); pullErr != nil {
 		return nil, pullErr
 	}
@@ -107,7 +109,7 @@ func BVLCDistributeBroadcastToNetworkParse(readBuffer utils.ReadBuffer, bvlcLeng
 	if pullErr := readBuffer.PullContext("npdu"); pullErr != nil {
 		return nil, pullErr
 	}
-	_npdu, _npduErr := NPDUParse(readBuffer, uint16(bvlcLength)-uint16(uint16(4)))
+_npdu, _npduErr := NPDUParse(readBuffer , bvlcPayloadLength )
 	if _npduErr != nil {
 		return nil, errors.Wrap(_npduErr, "Error parsing 'npdu' field")
 	}
@@ -123,7 +125,7 @@ func BVLCDistributeBroadcastToNetworkParse(readBuffer utils.ReadBuffer, bvlcLeng
 	// Create a partially initialized instance
 	_child := &BVLCDistributeBroadcastToNetwork{
 		Npdu: CastNPDU(npdu),
-		BVLC: &BVLC{},
+        BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
 	return _child.BVLC, nil
@@ -135,17 +137,17 @@ func (m *BVLCDistributeBroadcastToNetwork) Serialize(writeBuffer utils.WriteBuff
 			return pushErr
 		}
 
-		// Simple Field (npdu)
-		if pushErr := writeBuffer.PushContext("npdu"); pushErr != nil {
-			return pushErr
-		}
-		_npduErr := m.Npdu.Serialize(writeBuffer)
-		if popErr := writeBuffer.PopContext("npdu"); popErr != nil {
-			return popErr
-		}
-		if _npduErr != nil {
-			return errors.Wrap(_npduErr, "Error serializing 'npdu' field")
-		}
+	// Simple Field (npdu)
+	if pushErr := writeBuffer.PushContext("npdu"); pushErr != nil {
+		return pushErr
+	}
+	_npduErr := m.Npdu.Serialize(writeBuffer)
+	if popErr := writeBuffer.PopContext("npdu"); popErr != nil {
+		return popErr
+	}
+	if _npduErr != nil {
+		return errors.Wrap(_npduErr, "Error serializing 'npdu' field")
+	}
 
 		if popErr := writeBuffer.PopContext("BVLCDistributeBroadcastToNetwork"); popErr != nil {
 			return popErr
@@ -163,3 +165,6 @@ func (m *BVLCDistributeBroadcastToNetwork) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go
index 6ea69ba..0d0765b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go
@@ -19,17 +19,19 @@
 
 package model
 
+
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // The data-structure of this message
 type BVLCForwardedNPDU struct {
 	*BVLC
-	Ip   []uint8
+	Ip []uint8
 	Port uint16
 	Npdu *NPDU
 }
@@ -45,18 +47,17 @@ type IBVLCForwardedNPDU interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *BVLCForwardedNPDU) BvlcFunction() uint8 {
-	return 0x04
-}
+return 0x04}
+
 
-func (m *BVLCForwardedNPDU) InitializeParent(parent *BVLC) {
+func (m *BVLCForwardedNPDU) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
 }
 
-func NewBVLCForwardedNPDU(ip []uint8, port uint16, npdu *NPDU) *BVLC {
-	child := &BVLCForwardedNPDU{
-		Ip:   ip,
+func NewBVLCForwardedNPDU( ip []uint8 , port uint16 , npdu *NPDU , bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCForwardedNPDU{
+		Ip: ip,
 		Port: port,
 		Npdu: npdu,
-		BVLC: NewBVLC(),
+    	BVLC: NewBVLC(bvlcPayloadLength),
 	}
 	child.Child = child
 	return child.BVLC
@@ -98,7 +99,7 @@ func (m *BVLCForwardedNPDU) LengthInBitsConditional(lastItem bool) uint16 {
 	}
 
 	// Simple field (port)
-	lengthInBits += 16
+	lengthInBits += 16;
 
 	// Simple field (npdu)
 	lengthInBits += m.Npdu.LengthInBits()
@@ -106,11 +107,12 @@ func (m *BVLCForwardedNPDU) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
+
 func (m *BVLCForwardedNPDU) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BVLCForwardedNPDUParse(readBuffer utils.ReadBuffer, bvlcLength uint16) (*BVLC, error) {
+func BVLCForwardedNPDUParse(readBuffer utils.ReadBuffer, bvlcPayloadLength uint16) (*BVLC, error) {
 	if pullErr := readBuffer.PullContext("BVLCForwardedNPDU"); pullErr != nil {
 		return nil, pullErr
 	}
@@ -135,7 +137,7 @@ func BVLCForwardedNPDUParse(readBuffer utils.ReadBuffer, bvlcLength uint16) (*BV
 	}
 
 	// Simple Field (port)
-	_port, _portErr := readBuffer.ReadUint16("port", 16)
+_port, _portErr := readBuffer.ReadUint16("port", 16)
 	if _portErr != nil {
 		return nil, errors.Wrap(_portErr, "Error parsing 'port' field")
 	}
@@ -145,7 +147,7 @@ func BVLCForwardedNPDUParse(readBuffer utils.ReadBuffer, bvlcLength uint16) (*BV
 	if pullErr := readBuffer.PullContext("npdu"); pullErr != nil {
 		return nil, pullErr
 	}
-	_npdu, _npduErr := NPDUParse(readBuffer, uint16(bvlcLength)-uint16(uint16(10)))
+_npdu, _npduErr := NPDUParse(readBuffer , uint16(bvlcPayloadLength) - uint16(uint16(6)) )
 	if _npduErr != nil {
 		return nil, errors.Wrap(_npduErr, "Error parsing 'npdu' field")
 	}
@@ -160,10 +162,10 @@ func BVLCForwardedNPDUParse(readBuffer utils.ReadBuffer, bvlcLength uint16) (*BV
 
 	// Create a partially initialized instance
 	_child := &BVLCForwardedNPDU{
-		Ip:   ip,
+		Ip: ip,
 		Port: port,
 		Npdu: CastNPDU(npdu),
-		BVLC: &BVLC{},
+        BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
 	return _child.BVLC, nil
@@ -175,40 +177,40 @@ func (m *BVLCForwardedNPDU) Serialize(writeBuffer utils.WriteBuffer) error {
 			return pushErr
 		}
 
-		// Array Field (ip)
-		if m.Ip != nil {
-			if pushErr := writeBuffer.PushContext("ip", utils.WithRenderAsList(true)); pushErr != nil {
-				return pushErr
-			}
-			for _, _element := range m.Ip {
-				_elementErr := writeBuffer.WriteUint8("", 8, _element)
-				if _elementErr != nil {
-					return errors.Wrap(_elementErr, "Error serializing 'ip' field")
-				}
-			}
-			if popErr := writeBuffer.PopContext("ip", utils.WithRenderAsList(true)); popErr != nil {
-				return popErr
-			}
-		}
-
-		// Simple Field (port)
-		port := uint16(m.Port)
-		_portErr := writeBuffer.WriteUint16("port", 16, (port))
-		if _portErr != nil {
-			return errors.Wrap(_portErr, "Error serializing 'port' field")
-		}
-
-		// Simple Field (npdu)
-		if pushErr := writeBuffer.PushContext("npdu"); pushErr != nil {
+	// Array Field (ip)
+	if m.Ip != nil {
+		if pushErr := writeBuffer.PushContext("ip", utils.WithRenderAsList(true)); pushErr != nil {
 			return pushErr
 		}
-		_npduErr := m.Npdu.Serialize(writeBuffer)
-		if popErr := writeBuffer.PopContext("npdu"); popErr != nil {
-			return popErr
+		for _, _element := range m.Ip {
+			_elementErr := writeBuffer.WriteUint8("", 8, _element)
+			if _elementErr != nil {
+				return errors.Wrap(_elementErr, "Error serializing 'ip' field")
+			}
 		}
-		if _npduErr != nil {
-			return errors.Wrap(_npduErr, "Error serializing 'npdu' field")
+		if popErr := writeBuffer.PopContext("ip", utils.WithRenderAsList(true)); popErr != nil {
+			return popErr
 		}
+	}
+
+	// Simple Field (port)
+	port := uint16(m.Port)
+	_portErr := writeBuffer.WriteUint16("port", 16, (port))
+	if _portErr != nil {
+		return errors.Wrap(_portErr, "Error serializing 'port' field")
+	}
+
+	// Simple Field (npdu)
+	if pushErr := writeBuffer.PushContext("npdu"); pushErr != nil {
+		return pushErr
+	}
+	_npduErr := m.Npdu.Serialize(writeBuffer)
+	if popErr := writeBuffer.PopContext("npdu"); popErr != nil {
+		return popErr
+	}
+	if _npduErr != nil {
+		return errors.Wrap(_npduErr, "Error serializing 'npdu' field")
+	}
 
 		if popErr := writeBuffer.PopContext("BVLCForwardedNPDU"); popErr != nil {
 			return popErr
@@ -226,3 +228,6 @@ func (m *BVLCForwardedNPDU) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go
index 6498899..ccec798 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go
@@ -19,12 +19,14 @@
 
 package model
 
+
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // The data-structure of this message
 type BVLCOriginalBroadcastNPDU struct {
@@ -43,16 +45,15 @@ type IBVLCOriginalBroadcastNPDU interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *BVLCOriginalBroadcastNPDU) BvlcFunction() uint8 {
-	return 0x0B
-}
+return 0x0B}
 
-func (m *BVLCOriginalBroadcastNPDU) InitializeParent(parent *BVLC) {
+
+func (m *BVLCOriginalBroadcastNPDU) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
 }
 
-func NewBVLCOriginalBroadcastNPDU(npdu *NPDU) *BVLC {
-	child := &BVLCOriginalBroadcastNPDU{
+func NewBVLCOriginalBroadcastNPDU( npdu *NPDU , bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCOriginalBroadcastNPDU{
 		Npdu: npdu,
-		BVLC: NewBVLC(),
+    	BVLC: NewBVLC(bvlcPayloadLength),
 	}
 	child.Child = child
 	return child.BVLC
@@ -94,11 +95,12 @@ func (m *BVLCOriginalBroadcastNPDU) LengthInBitsConditional(lastItem bool) uint1
 	return lengthInBits
 }
 
+
 func (m *BVLCOriginalBroadcastNPDU) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BVLCOriginalBroadcastNPDUParse(readBuffer utils.ReadBuffer, bvlcLength uint16) (*BVLC, error) {
+func BVLCOriginalBroadcastNPDUParse(readBuffer utils.ReadBuffer, bvlcPayloadLength uint16) (*BVLC, error) {
 	if pullErr := readBuffer.PullContext("BVLCOriginalBroadcastNPDU"); pullErr != nil {
 		return nil, pullErr
 	}
@@ -107,7 +109,7 @@ func BVLCOriginalBroadcastNPDUParse(readBuffer utils.ReadBuffer, bvlcLength uint
 	if pullErr := readBuffer.PullContext("npdu"); pullErr != nil {
 		return nil, pullErr
 	}
-	_npdu, _npduErr := NPDUParse(readBuffer, uint16(bvlcLength)-uint16(uint16(4)))
+_npdu, _npduErr := NPDUParse(readBuffer , bvlcPayloadLength )
 	if _npduErr != nil {
 		return nil, errors.Wrap(_npduErr, "Error parsing 'npdu' field")
 	}
@@ -123,7 +125,7 @@ func BVLCOriginalBroadcastNPDUParse(readBuffer utils.ReadBuffer, bvlcLength uint
 	// Create a partially initialized instance
 	_child := &BVLCOriginalBroadcastNPDU{
 		Npdu: CastNPDU(npdu),
-		BVLC: &BVLC{},
+        BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
 	return _child.BVLC, nil
@@ -135,17 +137,17 @@ func (m *BVLCOriginalBroadcastNPDU) Serialize(writeBuffer utils.WriteBuffer) err
 			return pushErr
 		}
 
-		// Simple Field (npdu)
-		if pushErr := writeBuffer.PushContext("npdu"); pushErr != nil {
-			return pushErr
-		}
-		_npduErr := m.Npdu.Serialize(writeBuffer)
-		if popErr := writeBuffer.PopContext("npdu"); popErr != nil {
-			return popErr
-		}
-		if _npduErr != nil {
-			return errors.Wrap(_npduErr, "Error serializing 'npdu' field")
-		}
+	// Simple Field (npdu)
+	if pushErr := writeBuffer.PushContext("npdu"); pushErr != nil {
+		return pushErr
+	}
+	_npduErr := m.Npdu.Serialize(writeBuffer)
+	if popErr := writeBuffer.PopContext("npdu"); popErr != nil {
+		return popErr
+	}
+	if _npduErr != nil {
+		return errors.Wrap(_npduErr, "Error serializing 'npdu' field")
+	}
 
 		if popErr := writeBuffer.PopContext("BVLCOriginalBroadcastNPDU"); popErr != nil {
 			return popErr
@@ -163,3 +165,6 @@ func (m *BVLCOriginalBroadcastNPDU) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go
index e0d4096..40c2245 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go
@@ -19,12 +19,14 @@
 
 package model
 
+
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // The data-structure of this message
 type BVLCOriginalUnicastNPDU struct {
@@ -43,16 +45,15 @@ type IBVLCOriginalUnicastNPDU interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *BVLCOriginalUnicastNPDU) BvlcFunction() uint8 {
-	return 0x0A
-}
+return 0x0A}
 
-func (m *BVLCOriginalUnicastNPDU) InitializeParent(parent *BVLC) {
+
+func (m *BVLCOriginalUnicastNPDU) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
 }
 
-func NewBVLCOriginalUnicastNPDU(npdu *NPDU) *BVLC {
-	child := &BVLCOriginalUnicastNPDU{
+func NewBVLCOriginalUnicastNPDU( npdu *NPDU , bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCOriginalUnicastNPDU{
 		Npdu: npdu,
-		BVLC: NewBVLC(),
+    	BVLC: NewBVLC(bvlcPayloadLength),
 	}
 	child.Child = child
 	return child.BVLC
@@ -94,11 +95,12 @@ func (m *BVLCOriginalUnicastNPDU) LengthInBitsConditional(lastItem bool) uint16
 	return lengthInBits
 }
 
+
 func (m *BVLCOriginalUnicastNPDU) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BVLCOriginalUnicastNPDUParse(readBuffer utils.ReadBuffer, bvlcLength uint16) (*BVLC, error) {
+func BVLCOriginalUnicastNPDUParse(readBuffer utils.ReadBuffer, bvlcPayloadLength uint16) (*BVLC, error) {
 	if pullErr := readBuffer.PullContext("BVLCOriginalUnicastNPDU"); pullErr != nil {
 		return nil, pullErr
 	}
@@ -107,7 +109,7 @@ func BVLCOriginalUnicastNPDUParse(readBuffer utils.ReadBuffer, bvlcLength uint16
 	if pullErr := readBuffer.PullContext("npdu"); pullErr != nil {
 		return nil, pullErr
 	}
-	_npdu, _npduErr := NPDUParse(readBuffer, uint16(bvlcLength)-uint16(uint16(4)))
+_npdu, _npduErr := NPDUParse(readBuffer , bvlcPayloadLength )
 	if _npduErr != nil {
 		return nil, errors.Wrap(_npduErr, "Error parsing 'npdu' field")
 	}
@@ -123,7 +125,7 @@ func BVLCOriginalUnicastNPDUParse(readBuffer utils.ReadBuffer, bvlcLength uint16
 	// Create a partially initialized instance
 	_child := &BVLCOriginalUnicastNPDU{
 		Npdu: CastNPDU(npdu),
-		BVLC: &BVLC{},
+        BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
 	return _child.BVLC, nil
@@ -135,17 +137,17 @@ func (m *BVLCOriginalUnicastNPDU) Serialize(writeBuffer utils.WriteBuffer) error
 			return pushErr
 		}
 
-		// Simple Field (npdu)
-		if pushErr := writeBuffer.PushContext("npdu"); pushErr != nil {
-			return pushErr
-		}
-		_npduErr := m.Npdu.Serialize(writeBuffer)
-		if popErr := writeBuffer.PopContext("npdu"); popErr != nil {
-			return popErr
-		}
-		if _npduErr != nil {
-			return errors.Wrap(_npduErr, "Error serializing 'npdu' field")
-		}
+	// Simple Field (npdu)
+	if pushErr := writeBuffer.PushContext("npdu"); pushErr != nil {
+		return pushErr
+	}
+	_npduErr := m.Npdu.Serialize(writeBuffer)
+	if popErr := writeBuffer.PopContext("npdu"); popErr != nil {
+		return popErr
+	}
+	if _npduErr != nil {
+		return errors.Wrap(_npduErr, "Error serializing 'npdu' field")
+	}
 
 		if popErr := writeBuffer.PopContext("BVLCOriginalUnicastNPDU"); popErr != nil {
 			return popErr
@@ -163,3 +165,6 @@ func (m *BVLCOriginalUnicastNPDU) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go
index d5c1ef8..63eb1eb 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go
@@ -19,11 +19,13 @@
 
 package model
 
+
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // The data-structure of this message
 type BVLCReadBroadcastDistributionTable struct {
@@ -41,15 +43,14 @@ type IBVLCReadBroadcastDistributionTable interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *BVLCReadBroadcastDistributionTable) BvlcFunction() uint8 {
-	return 0x02
-}
+return 0x02}
+
 
-func (m *BVLCReadBroadcastDistributionTable) InitializeParent(parent *BVLC) {
+func (m *BVLCReadBroadcastDistributionTable) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
 }
 
-func NewBVLCReadBroadcastDistributionTable() *BVLC {
-	child := &BVLCReadBroadcastDistributionTable{
-		BVLC: NewBVLC(),
+func NewBVLCReadBroadcastDistributionTable( bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCReadBroadcastDistributionTable{
+    	BVLC: NewBVLC(bvlcPayloadLength),
 	}
 	child.Child = child
 	return child.BVLC
@@ -88,6 +89,7 @@ func (m *BVLCReadBroadcastDistributionTable) LengthInBitsConditional(lastItem bo
 	return lengthInBits
 }
 
+
 func (m *BVLCReadBroadcastDistributionTable) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
@@ -103,7 +105,7 @@ func BVLCReadBroadcastDistributionTableParse(readBuffer utils.ReadBuffer) (*BVLC
 
 	// Create a partially initialized instance
 	_child := &BVLCReadBroadcastDistributionTable{
-		BVLC: &BVLC{},
+        BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
 	return _child.BVLC, nil
@@ -131,3 +133,6 @@ func (m *BVLCReadBroadcastDistributionTable) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
index 70fa2c2..402528c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
@@ -19,11 +19,13 @@
 
 package model
 
+
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // The data-structure of this message
 type BVLCReadBroadcastDistributionTableAck struct {
@@ -41,15 +43,14 @@ type IBVLCReadBroadcastDistributionTableAck interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *BVLCReadBroadcastDistributionTableAck) BvlcFunction() uint8 {
-	return 0x03
-}
+return 0x03}
+
 
-func (m *BVLCReadBroadcastDistributionTableAck) InitializeParent(parent *BVLC) {
+func (m *BVLCReadBroadcastDistributionTableAck) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
 }
 
-func NewBVLCReadBroadcastDistributionTableAck() *BVLC {
-	child := &BVLCReadBroadcastDistributionTableAck{
-		BVLC: NewBVLC(),
+func NewBVLCReadBroadcastDistributionTableAck( bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCReadBroadcastDistributionTableAck{
+    	BVLC: NewBVLC(bvlcPayloadLength),
 	}
 	child.Child = child
 	return child.BVLC
@@ -88,6 +89,7 @@ func (m *BVLCReadBroadcastDistributionTableAck) LengthInBitsConditional(lastItem
 	return lengthInBits
 }
 
+
 func (m *BVLCReadBroadcastDistributionTableAck) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
@@ -103,7 +105,7 @@ func BVLCReadBroadcastDistributionTableAckParse(readBuffer utils.ReadBuffer) (*B
 
 	// Create a partially initialized instance
 	_child := &BVLCReadBroadcastDistributionTableAck{
-		BVLC: &BVLC{},
+        BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
 	return _child.BVLC, nil
@@ -131,3 +133,6 @@ func (m *BVLCReadBroadcastDistributionTableAck) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go
index 158a8a8..4d0df01 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go
@@ -19,11 +19,13 @@
 
 package model
 
+
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // The data-structure of this message
 type BVLCReadForeignDeviceTable struct {
@@ -41,15 +43,14 @@ type IBVLCReadForeignDeviceTable interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *BVLCReadForeignDeviceTable) BvlcFunction() uint8 {
-	return 0x06
-}
+return 0x06}
+
 
-func (m *BVLCReadForeignDeviceTable) InitializeParent(parent *BVLC) {
+func (m *BVLCReadForeignDeviceTable) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
 }
 
-func NewBVLCReadForeignDeviceTable() *BVLC {
-	child := &BVLCReadForeignDeviceTable{
-		BVLC: NewBVLC(),
+func NewBVLCReadForeignDeviceTable( bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCReadForeignDeviceTable{
+    	BVLC: NewBVLC(bvlcPayloadLength),
 	}
 	child.Child = child
 	return child.BVLC
@@ -88,6 +89,7 @@ func (m *BVLCReadForeignDeviceTable) LengthInBitsConditional(lastItem bool) uint
 	return lengthInBits
 }
 
+
 func (m *BVLCReadForeignDeviceTable) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
@@ -103,7 +105,7 @@ func BVLCReadForeignDeviceTableParse(readBuffer utils.ReadBuffer) (*BVLC, error)
 
 	// Create a partially initialized instance
 	_child := &BVLCReadForeignDeviceTable{
-		BVLC: &BVLC{},
+        BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
 	return _child.BVLC, nil
@@ -131,3 +133,6 @@ func (m *BVLCReadForeignDeviceTable) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
index fac1255..a5f5559 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
@@ -19,11 +19,13 @@
 
 package model
 
+
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // The data-structure of this message
 type BVLCReadForeignDeviceTableAck struct {
@@ -41,15 +43,14 @@ type IBVLCReadForeignDeviceTableAck interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *BVLCReadForeignDeviceTableAck) BvlcFunction() uint8 {
-	return 0x07
-}
+return 0x07}
+
 
-func (m *BVLCReadForeignDeviceTableAck) InitializeParent(parent *BVLC) {
+func (m *BVLCReadForeignDeviceTableAck) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
 }
 
-func NewBVLCReadForeignDeviceTableAck() *BVLC {
-	child := &BVLCReadForeignDeviceTableAck{
-		BVLC: NewBVLC(),
+func NewBVLCReadForeignDeviceTableAck( bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCReadForeignDeviceTableAck{
+    	BVLC: NewBVLC(bvlcPayloadLength),
 	}
 	child.Child = child
 	return child.BVLC
@@ -88,6 +89,7 @@ func (m *BVLCReadForeignDeviceTableAck) LengthInBitsConditional(lastItem bool) u
 	return lengthInBits
 }
 
+
 func (m *BVLCReadForeignDeviceTableAck) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
@@ -103,7 +105,7 @@ func BVLCReadForeignDeviceTableAckParse(readBuffer utils.ReadBuffer) (*BVLC, err
 
 	// Create a partially initialized instance
 	_child := &BVLCReadForeignDeviceTableAck{
-		BVLC: &BVLC{},
+        BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
 	return _child.BVLC, nil
@@ -131,3 +133,6 @@ func (m *BVLCReadForeignDeviceTableAck) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go
index fc7c1d8..b70d598 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go
@@ -19,12 +19,14 @@
 
 package model
 
+
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // The data-structure of this message
 type BVLCRegisterForeignDevice struct {
@@ -43,16 +45,15 @@ type IBVLCRegisterForeignDevice interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *BVLCRegisterForeignDevice) BvlcFunction() uint8 {
-	return 0x05
-}
+return 0x05}
 
-func (m *BVLCRegisterForeignDevice) InitializeParent(parent *BVLC) {
+
+func (m *BVLCRegisterForeignDevice) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
 }
 
-func NewBVLCRegisterForeignDevice(ttl uint16) *BVLC {
-	child := &BVLCRegisterForeignDevice{
-		Ttl:  ttl,
-		BVLC: NewBVLC(),
+func NewBVLCRegisterForeignDevice( ttl uint16 , bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCRegisterForeignDevice{
+		Ttl: ttl,
+    	BVLC: NewBVLC(bvlcPayloadLength),
 	}
 	child.Child = child
 	return child.BVLC
@@ -89,11 +90,12 @@ func (m *BVLCRegisterForeignDevice) LengthInBitsConditional(lastItem bool) uint1
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// Simple field (ttl)
-	lengthInBits += 16
+	lengthInBits += 16;
 
 	return lengthInBits
 }
 
+
 func (m *BVLCRegisterForeignDevice) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
@@ -104,7 +106,7 @@ func BVLCRegisterForeignDeviceParse(readBuffer utils.ReadBuffer) (*BVLC, error)
 	}
 
 	// Simple Field (ttl)
-	_ttl, _ttlErr := readBuffer.ReadUint16("ttl", 16)
+_ttl, _ttlErr := readBuffer.ReadUint16("ttl", 16)
 	if _ttlErr != nil {
 		return nil, errors.Wrap(_ttlErr, "Error parsing 'ttl' field")
 	}
@@ -116,8 +118,8 @@ func BVLCRegisterForeignDeviceParse(readBuffer utils.ReadBuffer) (*BVLC, error)
 
 	// Create a partially initialized instance
 	_child := &BVLCRegisterForeignDevice{
-		Ttl:  ttl,
-		BVLC: &BVLC{},
+		Ttl: ttl,
+        BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
 	return _child.BVLC, nil
@@ -129,12 +131,12 @@ func (m *BVLCRegisterForeignDevice) Serialize(writeBuffer utils.WriteBuffer) err
 			return pushErr
 		}
 
-		// Simple Field (ttl)
-		ttl := uint16(m.Ttl)
-		_ttlErr := writeBuffer.WriteUint16("ttl", 16, (ttl))
-		if _ttlErr != nil {
-			return errors.Wrap(_ttlErr, "Error serializing 'ttl' field")
-		}
+	// Simple Field (ttl)
+	ttl := uint16(m.Ttl)
+	_ttlErr := writeBuffer.WriteUint16("ttl", 16, (ttl))
+	if _ttlErr != nil {
+		return errors.Wrap(_ttlErr, "Error serializing 'ttl' field")
+	}
 
 		if popErr := writeBuffer.PopContext("BVLCRegisterForeignDevice"); popErr != nil {
 			return popErr
@@ -152,3 +154,6 @@ func (m *BVLCRegisterForeignDevice) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go
index 147b9d1..a859775 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go
@@ -19,12 +19,14 @@
 
 package model
 
+
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // The data-structure of this message
 type BVLCResult struct {
@@ -43,16 +45,15 @@ type IBVLCResult interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *BVLCResult) BvlcFunction() uint8 {
-	return 0x00
-}
+return 0x00}
 
-func (m *BVLCResult) InitializeParent(parent *BVLC) {
+
+func (m *BVLCResult) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
 }
 
-func NewBVLCResult(code BVLCResultCode) *BVLC {
-	child := &BVLCResult{
+func NewBVLCResult( code BVLCResultCode , bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCResult{
 		Code: code,
-		BVLC: NewBVLC(),
+    	BVLC: NewBVLC(bvlcPayloadLength),
 	}
 	child.Child = child
 	return child.BVLC
@@ -94,6 +95,7 @@ func (m *BVLCResult) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
+
 func (m *BVLCResult) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
@@ -107,7 +109,7 @@ func BVLCResultParse(readBuffer utils.ReadBuffer) (*BVLC, error) {
 	if pullErr := readBuffer.PullContext("code"); pullErr != nil {
 		return nil, pullErr
 	}
-	_code, _codeErr := BVLCResultCodeParse(readBuffer)
+_code, _codeErr := BVLCResultCodeParse(readBuffer)
 	if _codeErr != nil {
 		return nil, errors.Wrap(_codeErr, "Error parsing 'code' field")
 	}
@@ -123,7 +125,7 @@ func BVLCResultParse(readBuffer utils.ReadBuffer) (*BVLC, error) {
 	// Create a partially initialized instance
 	_child := &BVLCResult{
 		Code: code,
-		BVLC: &BVLC{},
+        BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
 	return _child.BVLC, nil
@@ -135,17 +137,17 @@ func (m *BVLCResult) Serialize(writeBuffer utils.WriteBuffer) error {
 			return pushErr
 		}
 
-		// Simple Field (code)
-		if pushErr := writeBuffer.PushContext("code"); pushErr != nil {
-			return pushErr
-		}
-		_codeErr := m.Code.Serialize(writeBuffer)
-		if popErr := writeBuffer.PopContext("code"); popErr != nil {
-			return popErr
-		}
-		if _codeErr != nil {
-			return errors.Wrap(_codeErr, "Error serializing 'code' field")
-		}
+	// Simple Field (code)
+	if pushErr := writeBuffer.PushContext("code"); pushErr != nil {
+		return pushErr
+	}
+	_codeErr := m.Code.Serialize(writeBuffer)
+	if popErr := writeBuffer.PopContext("code"); popErr != nil {
+		return popErr
+	}
+	if _codeErr != nil {
+		return errors.Wrap(_codeErr, "Error serializing 'code' field")
+	}
 
 		if popErr := writeBuffer.PopContext("BVLCResult"); popErr != nil {
 			return popErr
@@ -163,3 +165,6 @@ func (m *BVLCResult) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go
index c39b9c9..4514f03 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go
@@ -19,11 +19,13 @@
 
 package model
 
+
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
-// Code generated by code-generation. DO NOT EDIT.
+	// Code generated by code-generation. DO NOT EDIT.
+
 
 // The data-structure of this message
 type BVLCSecureBVLL struct {
@@ -41,15 +43,14 @@ type IBVLCSecureBVLL interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *BVLCSecureBVLL) BvlcFunction() uint8 {
-	return 0x0C
-}
+return 0x0C}
+
 
-func (m *BVLCSecureBVLL) InitializeParent(parent *BVLC) {
+func (m *BVLCSecureBVLL) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
 }
 
-func NewBVLCSecureBVLL() *BVLC {
-	child := &BVLCSecureBVLL{
-		BVLC: NewBVLC(),
+func NewBVLCSecureBVLL( bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCSecureBVLL{
+    	BVLC: NewBVLC(bvlcPayloadLength),
 	}
 	child.Child = child
 	return child.BVLC
@@ -88,6 +89,7 @@ func (m *BVLCSecureBVLL) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
+
 func (m *BVLCSecureBVLL) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
@@ -103,7 +105,7 @@ func BVLCSecureBVLLParse(readBuffer utils.ReadBuffer) (*BVLC, error) {
 
 	// Create a partially initialized instance
 	_child := &BVLCSecureBVLL{
-		BVLC: &BVLC{},
+        BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
 	return _child.BVLC, nil
@@ -131,3 +133,6 @@ func (m *BVLCSecureBVLL) String() string {
 	m.Serialize(buffer)
 	return buffer.GetBox().String()
 }
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go
deleted file mode 100644
index 855503f..0000000
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package model
-
-import (
-	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
-)
-
-// Code generated by code-generation. DO NOT EDIT.
-
-// The data-structure of this message
-type BVLCWideBroadcastDistributionTable struct {
-	*BVLC
-}
-
-// The corresponding interface
-type IBVLCWideBroadcastDistributionTable interface {
-	LengthInBytes() uint16
-	LengthInBits() uint16
-	Serialize(writeBuffer utils.WriteBuffer) error
-}
-
-///////////////////////////////////////////////////////////
-// Accessors for discriminator values.
-///////////////////////////////////////////////////////////
-func (m *BVLCWideBroadcastDistributionTable) BvlcFunction() uint8 {
-	return 0x01
-}
-
-func (m *BVLCWideBroadcastDistributionTable) InitializeParent(parent *BVLC) {
-}
-
-func NewBVLCWideBroadcastDistributionTable() *BVLC {
-	child := &BVLCWideBroadcastDistributionTable{
-		BVLC: NewBVLC(),
-	}
-	child.Child = child
-	return child.BVLC
-}
-
-func CastBVLCWideBroadcastDistributionTable(structType interface{}) *BVLCWideBroadcastDistributionTable {
-	castFunc := func(typ interface{}) *BVLCWideBroadcastDistributionTable {
-		if casted, ok := typ.(BVLCWideBroadcastDistributionTable); ok {
-			return &casted
-		}
-		if casted, ok := typ.(*BVLCWideBroadcastDistributionTable); ok {
-			return casted
-		}
-		if casted, ok := typ.(BVLC); ok {
-			return CastBVLCWideBroadcastDistributionTable(casted.Child)
-		}
-		if casted, ok := typ.(*BVLC); ok {
-			return CastBVLCWideBroadcastDistributionTable(casted.Child)
-		}
-		return nil
-	}
-	return castFunc(structType)
-}
-
-func (m *BVLCWideBroadcastDistributionTable) GetTypeName() string {
-	return "BVLCWideBroadcastDistributionTable"
-}
-
-func (m *BVLCWideBroadcastDistributionTable) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
-}
-
-func (m *BVLCWideBroadcastDistributionTable) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
-
-	return lengthInBits
-}
-
-func (m *BVLCWideBroadcastDistributionTable) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
-}
-
-func BVLCWideBroadcastDistributionTableParse(readBuffer utils.ReadBuffer) (*BVLC, error) {
-	if pullErr := readBuffer.PullContext("BVLCWideBroadcastDistributionTable"); pullErr != nil {
-		return nil, pullErr
-	}
-
-	if closeErr := readBuffer.CloseContext("BVLCWideBroadcastDistributionTable"); closeErr != nil {
-		return nil, closeErr
-	}
-
-	// Create a partially initialized instance
-	_child := &BVLCWideBroadcastDistributionTable{
-		BVLC: &BVLC{},
-	}
-	_child.BVLC.Child = _child
-	return _child.BVLC, nil
-}
-
-func (m *BVLCWideBroadcastDistributionTable) Serialize(writeBuffer utils.WriteBuffer) error {
-	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BVLCWideBroadcastDistributionTable"); pushErr != nil {
-			return pushErr
-		}
-
-		if popErr := writeBuffer.PopContext("BVLCWideBroadcastDistributionTable"); popErr != nil {
-			return popErr
-		}
-		return nil
-	}
-	return m.SerializeParent(writeBuffer, m, ser)
-}
-
-func (m *BVLCWideBroadcastDistributionTable) String() string {
-	if m == nil {
-		return "<nil>"
-	}
-	buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
-	m.Serialize(buffer)
-	return buffer.GetBox().String()
-}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWriteBroadcastDistributionTable.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWriteBroadcastDistributionTable.go
new file mode 100644
index 0000000..290fdd3
--- /dev/null
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWriteBroadcastDistributionTable.go
@@ -0,0 +1,186 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+	// Code generated by code-generation. DO NOT EDIT.
+
+
+// The data-structure of this message
+type BVLCWriteBroadcastDistributionTable struct {
+	*BVLC
+	Table []*BVLCWriteBroadcastDistributionTableEntry
+}
+
+// The corresponding interface
+type IBVLCWriteBroadcastDistributionTable interface {
+	LengthInBytes() uint16
+	LengthInBits() uint16
+	Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+// Accessors for discriminator values.
+///////////////////////////////////////////////////////////
+func (m *BVLCWriteBroadcastDistributionTable) BvlcFunction() uint8 {
+return 0x01}
+
+
+func (m *BVLCWriteBroadcastDistributionTable) InitializeParent(parent *BVLCbvlcPayloadLength uint16) {
+}
+
+func NewBVLCWriteBroadcastDistributionTable( table []*BVLCWriteBroadcastDistributionTableEntry , bvlcPayloadLength uint16 ) *BVLC {	child := &BVLCWriteBroadcastDistributionTable{
+		Table: table,
+    	BVLC: NewBVLC(bvlcPayloadLength),
+	}
+	child.Child = child
+	return child.BVLC
+}
+
+func CastBVLCWriteBroadcastDistributionTable(structType interface{}) *BVLCWriteBroadcastDistributionTable {
+	castFunc := func(typ interface{}) *BVLCWriteBroadcastDistributionTable {
+		if casted, ok := typ.(BVLCWriteBroadcastDistributionTable); ok {
+			return &casted
+		}
+		if casted, ok := typ.(*BVLCWriteBroadcastDistributionTable); ok {
+			return casted
+		}
+		if casted, ok := typ.(BVLC); ok {
+			return CastBVLCWriteBroadcastDistributionTable(casted.Child)
+		}
+		if casted, ok := typ.(*BVLC); ok {
+			return CastBVLCWriteBroadcastDistributionTable(casted.Child)
+		}
+		return nil
+	}
+	return castFunc(structType)
+}
+
+func (m *BVLCWriteBroadcastDistributionTable) GetTypeName() string {
+	return "BVLCWriteBroadcastDistributionTable"
+}
+
+func (m *BVLCWriteBroadcastDistributionTable) LengthInBits() uint16 {
+	return m.LengthInBitsConditional(false)
+}
+
+func (m *BVLCWriteBroadcastDistributionTable) LengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.ParentLengthInBits())
+
+	// Array field
+	if len(m.Table) > 0 {
+		for _, element := range m.Table {
+			lengthInBits += element.LengthInBits()
+		}
+	}
+
+	return lengthInBits
+}
+
+
+func (m *BVLCWriteBroadcastDistributionTable) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
+}
+
+func BVLCWriteBroadcastDistributionTableParse(readBuffer utils.ReadBuffer, bvlcPayloadLength uint16) (*BVLC, error) {
+	if pullErr := readBuffer.PullContext("BVLCWriteBroadcastDistributionTable"); pullErr != nil {
+		return nil, pullErr
+	}
+
+	// Array field (table)
+	if pullErr := readBuffer.PullContext("table", utils.WithRenderAsList(true)); pullErr != nil {
+		return nil, pullErr
+	}
+	// Length array
+	table := make([]*BVLCWriteBroadcastDistributionTableEntry, 0)
+	{
+		_tableLength := bvlcPayloadLength
+		_tableEndPos := readBuffer.GetPos() + uint16(_tableLength)
+		for ;readBuffer.GetPos() < _tableEndPos; {
+			_item, _err := BVLCWriteBroadcastDistributionTableEntryParse(readBuffer)
+			if _err != nil {
+				return nil, errors.Wrap(_err, "Error parsing 'table' field")
+			}
+			table = append(table, _item)
+		}
+	}
+	if closeErr := readBuffer.CloseContext("table", utils.WithRenderAsList(true)); closeErr != nil {
+		return nil, closeErr
+	}
+
+	if closeErr := readBuffer.CloseContext("BVLCWriteBroadcastDistributionTable"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Create a partially initialized instance
+	_child := &BVLCWriteBroadcastDistributionTable{
+		Table: table,
+        BVLC: &BVLC{},
+	}
+	_child.BVLC.Child = _child
+	return _child.BVLC, nil
+}
+
+func (m *BVLCWriteBroadcastDistributionTable) Serialize(writeBuffer utils.WriteBuffer) error {
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("BVLCWriteBroadcastDistributionTable"); pushErr != nil {
+			return pushErr
+		}
+
+	// Array Field (table)
+	if m.Table != nil {
+		if pushErr := writeBuffer.PushContext("table", utils.WithRenderAsList(true)); pushErr != nil {
+			return pushErr
+		}
+		for _, _element := range m.Table {
+			_elementErr := _element.Serialize(writeBuffer)
+			if _elementErr != nil {
+				return errors.Wrap(_elementErr, "Error serializing 'table' field")
+			}
+		}
+		if popErr := writeBuffer.PopContext("table", utils.WithRenderAsList(true)); popErr != nil {
+			return popErr
+		}
+	}
+
+		if popErr := writeBuffer.PopContext("BVLCWriteBroadcastDistributionTable"); popErr != nil {
+			return popErr
+		}
+		return nil
+	}
+	return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BVLCWriteBroadcastDistributionTable) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	m.Serialize(buffer)
+	return buffer.GetBox().String()
+}
+
+
+
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWriteBroadcastDistributionTableEntry.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWriteBroadcastDistributionTableEntry.go
new file mode 100644
index 0000000..93a8d30
--- /dev/null
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWriteBroadcastDistributionTableEntry.go
@@ -0,0 +1,206 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// The data-structure of this message
+type BVLCWriteBroadcastDistributionTableEntry struct {
+	Ip                       []uint8
+	Port                     uint16
+	BroadcastDistributionMap []uint8
+}
+
+// The corresponding interface
+type IBVLCWriteBroadcastDistributionTableEntry interface {
+	LengthInBytes() uint16
+	LengthInBits() uint16
+	Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+func NewBVLCWriteBroadcastDistributionTableEntry(ip []uint8, port uint16, broadcastDistributionMap []uint8) *BVLCWriteBroadcastDistributionTableEntry {
+	return &BVLCWriteBroadcastDistributionTableEntry{Ip: ip, Port: port, BroadcastDistributionMap: broadcastDistributionMap}
+}
+
+func CastBVLCWriteBroadcastDistributionTableEntry(structType interface{}) *BVLCWriteBroadcastDistributionTableEntry {
+	castFunc := func(typ interface{}) *BVLCWriteBroadcastDistributionTableEntry {
+		if casted, ok := typ.(BVLCWriteBroadcastDistributionTableEntry); ok {
+			return &casted
+		}
+		if casted, ok := typ.(*BVLCWriteBroadcastDistributionTableEntry); ok {
+			return casted
+		}
+		return nil
+	}
+	return castFunc(structType)
+}
+
+func (m *BVLCWriteBroadcastDistributionTableEntry) GetTypeName() string {
+	return "BVLCWriteBroadcastDistributionTableEntry"
+}
+
+func (m *BVLCWriteBroadcastDistributionTableEntry) LengthInBits() uint16 {
+	return m.LengthInBitsConditional(false)
+}
+
+func (m *BVLCWriteBroadcastDistributionTableEntry) LengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(0)
+
+	// Array field
+	if len(m.Ip) > 0 {
+		lengthInBits += 8 * uint16(len(m.Ip))
+	}
+
+	// Simple field (port)
+	lengthInBits += 16
+
+	// Array field
+	if len(m.BroadcastDistributionMap) > 0 {
+		lengthInBits += 8 * uint16(len(m.BroadcastDistributionMap))
+	}
+
+	return lengthInBits
+}
+
+func (m *BVLCWriteBroadcastDistributionTableEntry) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
+}
+
+func BVLCWriteBroadcastDistributionTableEntryParse(readBuffer utils.ReadBuffer) (*BVLCWriteBroadcastDistributionTableEntry, error) {
+	if pullErr := readBuffer.PullContext("BVLCWriteBroadcastDistributionTableEntry"); pullErr != nil {
+		return nil, pullErr
+	}
+
+	// Array field (ip)
+	if pullErr := readBuffer.PullContext("ip", utils.WithRenderAsList(true)); pullErr != nil {
+		return nil, pullErr
+	}
+	// Count array
+	ip := make([]uint8, uint16(4))
+	{
+		for curItem := uint16(0); curItem < uint16(uint16(4)); curItem++ {
+			_item, _err := readBuffer.ReadUint8("", 8)
+			if _err != nil {
+				return nil, errors.Wrap(_err, "Error parsing 'ip' field")
+			}
+			ip[curItem] = _item
+		}
+	}
+	if closeErr := readBuffer.CloseContext("ip", utils.WithRenderAsList(true)); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Simple Field (port)
+	_port, _portErr := readBuffer.ReadUint16("port", 16)
+	if _portErr != nil {
+		return nil, errors.Wrap(_portErr, "Error parsing 'port' field")
+	}
+	port := _port
+
+	// Array field (broadcastDistributionMap)
+	if pullErr := readBuffer.PullContext("broadcastDistributionMap", utils.WithRenderAsList(true)); pullErr != nil {
+		return nil, pullErr
+	}
+	// Count array
+	broadcastDistributionMap := make([]uint8, uint16(4))
+	{
+		for curItem := uint16(0); curItem < uint16(uint16(4)); curItem++ {
+			_item, _err := readBuffer.ReadUint8("", 8)
+			if _err != nil {
+				return nil, errors.Wrap(_err, "Error parsing 'broadcastDistributionMap' field")
+			}
+			broadcastDistributionMap[curItem] = _item
+		}
+	}
+	if closeErr := readBuffer.CloseContext("broadcastDistributionMap", utils.WithRenderAsList(true)); closeErr != nil {
+		return nil, closeErr
+	}
+
+	if closeErr := readBuffer.CloseContext("BVLCWriteBroadcastDistributionTableEntry"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Create the instance
+	return NewBVLCWriteBroadcastDistributionTableEntry(ip, port, broadcastDistributionMap), nil
+}
+
+func (m *BVLCWriteBroadcastDistributionTableEntry) Serialize(writeBuffer utils.WriteBuffer) error {
+	if pushErr := writeBuffer.PushContext("BVLCWriteBroadcastDistributionTableEntry"); pushErr != nil {
+		return pushErr
+	}
+
+	// Array Field (ip)
+	if m.Ip != nil {
+		if pushErr := writeBuffer.PushContext("ip", utils.WithRenderAsList(true)); pushErr != nil {
+			return pushErr
+		}
+		for _, _element := range m.Ip {
+			_elementErr := writeBuffer.WriteUint8("", 8, _element)
+			if _elementErr != nil {
+				return errors.Wrap(_elementErr, "Error serializing 'ip' field")
+			}
+		}
+		if popErr := writeBuffer.PopContext("ip", utils.WithRenderAsList(true)); popErr != nil {
+			return popErr
+		}
+	}
+
+	// Simple Field (port)
+	port := uint16(m.Port)
+	_portErr := writeBuffer.WriteUint16("port", 16, (port))
+	if _portErr != nil {
+		return errors.Wrap(_portErr, "Error serializing 'port' field")
+	}
+
+	// Array Field (broadcastDistributionMap)
+	if m.BroadcastDistributionMap != nil {
+		if pushErr := writeBuffer.PushContext("broadcastDistributionMap", utils.WithRenderAsList(true)); pushErr != nil {
+			return pushErr
+		}
+		for _, _element := range m.BroadcastDistributionMap {
+			_elementErr := writeBuffer.WriteUint8("", 8, _element)
+			if _elementErr != nil {
+				return errors.Wrap(_elementErr, "Error serializing 'broadcastDistributionMap' field")
+			}
+		}
+		if popErr := writeBuffer.PopContext("broadcastDistributionMap", utils.WithRenderAsList(true)); popErr != nil {
+			return popErr
+		}
+	}
+
+	if popErr := writeBuffer.PopContext("BVLCWriteBroadcastDistributionTableEntry"); popErr != nil {
+		return popErr
+	}
+	return nil
+}
+
+func (m *BVLCWriteBroadcastDistributionTableEntry) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	m.Serialize(buffer)
+	return buffer.GetBox().String()
+}
diff --git a/plc4go/internal/plc4go/modbus/fieldtype_string.go b/plc4go/internal/plc4go/modbus/fieldtype_string.go
index ec3ec50..4ef728b 100644
--- a/plc4go/internal/plc4go/modbus/fieldtype_string.go
+++ b/plc4go/internal/plc4go/modbus/fieldtype_string.go
@@ -1,20 +1,3 @@
-// Licensed to Apache Software Foundation (ASF) under one or more contributor
-// license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright
-// ownership. Apache Software Foundation (ASF) licenses this file to you under
-// the Apache License, Version 2.0 (the "License"); you may
-// not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
 // Code generated by "stringer -type FieldType"; DO NOT EDIT.
 
 package modbus
diff --git a/plc4go/internal/plc4go/s7/fieldtype_string.go b/plc4go/internal/plc4go/s7/fieldtype_string.go
index 3045fc1..02ae83f 100644
--- a/plc4go/internal/plc4go/s7/fieldtype_string.go
+++ b/plc4go/internal/plc4go/s7/fieldtype_string.go
@@ -1,20 +1,3 @@
-// Licensed to Apache Software Foundation (ASF) under one or more contributor
-// license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright
-// ownership. Apache Software Foundation (ASF) licenses this file to you under
-// the Apache License, Version 2.0 (the "License"); you may
-// not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
 // Code generated by "stringer -type FieldType"; DO NOT EDIT.
 
 package s7
diff --git a/plc4go/internal/plc4go/spi/testutils/steptype_string.go b/plc4go/internal/plc4go/spi/testutils/steptype_string.go
index c99ce3e..8506728 100644
--- a/plc4go/internal/plc4go/spi/testutils/steptype_string.go
+++ b/plc4go/internal/plc4go/spi/testutils/steptype_string.go
@@ -1,20 +1,3 @@
-// Licensed to Apache Software Foundation (ASF) under one or more contributor
-// license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright
-// ownership. Apache Software Foundation (ASF) licenses this file to you under
-// the Apache License, Version 2.0 (the "License"); you may
-// not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
 // Code generated by "stringer -type StepType"; DO NOT EDIT.
 
 package testutils
diff --git a/plc4j/drivers/bacnet/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java b/plc4j/drivers/bacnet/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
index d6d8aae..2e64cd5 100644
--- a/plc4j/drivers/bacnet/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
+++ b/plc4j/drivers/bacnet/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
@@ -318,12 +318,11 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly llc so we don't use that here for now")
     @TestFactory
     @DisplayName("BBMD_Results")
     Collection<DynamicNode> BBMD_Results() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("BBMD_Results.pcap");
-        return null;
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("BBMD_Results.pcap", BACNET_BPF_FILTER);
+        return List.of(pcapEvaluator.parseEmAll());
     }
 
     @TestFactory
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
index 1ee9069..63a7827 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -18,25 +18,29 @@
  */
 
 [discriminatedType BVLC byteOrder='BIG_ENDIAN'
-    [const         uint 8   bacnetType   0x81         ]
-    [discriminator uint 8   bvlcFunction              ]
-    [implicit      uint 16  bvlcLength 'lengthInBytes']
+    [const         uint 8   bacnetType   0x81                   ]
+    [discriminator uint 8   bvlcFunction                        ]
+    [implicit      uint 16  bvlcLength          'lengthInBytes' ]
+    [virtual       uint 16  bvlcPayloadLength   'bvlcLength-4'  ]
     [typeSwitch bvlcFunction
         ['0x00' BVLCResult
             [simple BVLCResultCode
                             code
             ]
         ]
-        ['0x01' BVLCWideBroadcastDistributionTable
+        ['0x01' BVLCWriteBroadcastDistributionTable(uint 16 bvlcPayloadLength)
+            [array  BVLCWriteBroadcastDistributionTableEntry
+                            table
+                            length 'bvlcPayloadLength'         ]
         ]
         ['0x02' BVLCReadBroadcastDistributionTable
         ]
         ['0x03' BVLCReadBroadcastDistributionTableAck
         ]
-        ['0x04' BVLCForwardedNPDU(uint 16 bvlcLength)
+        ['0x04' BVLCForwardedNPDU(uint 16 bvlcPayloadLength)
             [array  uint 8  ip    count '4'         ]
             [simple uint 16 port                    ]
-            [simple NPDU('bvlcLength - 10')
+            [simple NPDU('bvlcPayloadLength - 6')
                             npdu
             ]
         ]
@@ -49,18 +53,18 @@
         ]
         ['0x08' BVLCDeleteForeignDeviceTableEntry
         ]
-        ['0x09' BVLCDistributeBroadcastToNetwork(uint 16 bvlcLength)
-            [simple NPDU('bvlcLength - 4')
+        ['0x09' BVLCDistributeBroadcastToNetwork(uint 16 bvlcPayloadLength)
+            [simple NPDU('bvlcPayloadLength')
                             npdu
             ]
         ]
-        ['0x0A' BVLCOriginalUnicastNPDU(uint 16 bvlcLength)
-            [simple NPDU('bvlcLength - 4')
+        ['0x0A' BVLCOriginalUnicastNPDU(uint 16 bvlcPayloadLength)
+            [simple NPDU('bvlcPayloadLength')
                             npdu
             ]
         ]
-        ['0x0B' BVLCOriginalBroadcastNPDU(uint 16 bvlcLength)
-            [simple NPDU('bvlcLength - 4')
+        ['0x0B' BVLCOriginalBroadcastNPDU(uint 16 bvlcPayloadLength)
+            [simple NPDU('bvlcPayloadLength')
                             npdu
             ]
         ]
@@ -69,6 +73,12 @@
     ]
 ]
 
+[type BVLCWriteBroadcastDistributionTableEntry
+    [array  uint 8      ip                          count '4'       ]
+    [simple uint 16     port                                        ]
+    [array  uint 8      broadcastDistributionMap    count '4'       ]
+]
+
 [type NPDU(uint 16 npduLength)
     [simple   uint 8        protocolVersionNumber]
     [simple   bit           messageTypeFieldPresent]

[plc4x] 02/02: test(bacnet): set filtering on remaining tests

Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 335a35f5bd713c1351e5fbb82117cb90b625a4fa
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jan 13 11:40:30 2022 +0100

    test(bacnet): set filtering on remaining tests
---
 .../plc4x/java/bacnetip/RandomPackagesTest.java    | 303 +++++++++------------
 1 file changed, 128 insertions(+), 175 deletions(-)

diff --git a/plc4j/drivers/bacnet/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java b/plc4j/drivers/bacnet/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
index 2e64cd5..73de546 100644
--- a/plc4j/drivers/bacnet/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
+++ b/plc4j/drivers/bacnet/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
@@ -59,7 +59,7 @@ public class RandomPackagesTest {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(RandomPackagesTest.class);
 
-    public static final String BACNET_BPF_FILTER = "udp port 47808";
+    public static final String BACNET_BPF_FILTER_UDP = "udp port 47808";
 
     @BeforeAll
     static void setUp() {
@@ -256,7 +256,7 @@ public class RandomPackagesTest {
     @TestFactory
     @DisplayName("BACnet-MSTP-SNAP-Mixed")
     Collection<DynamicNode> BACnet_MSTP_SNAP_Mixed() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("BACnet-MSTP-SNAP-Mixed.cap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("BACnet-MSTP-SNAP-Mixed.cap", BACNET_BPF_FILTER_UDP);
         return List.of(
             pcapEvaluator.parseEmAll()
         );
@@ -314,14 +314,14 @@ public class RandomPackagesTest {
     @TestFactory
     @DisplayName("BACnetIP-MSTP-Mix")
     Collection<DynamicNode> BACnet_MSTP_Mix() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("BACnetIP-MSTP-Mix.cap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("BACnetIP-MSTP-Mix.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
     @TestFactory
     @DisplayName("BBMD_Results")
     Collection<DynamicNode> BBMD_Results() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("BBMD_Results.pcap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("BBMD_Results.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1171,11 +1171,11 @@ public class RandomPackagesTest {
         );
     }
 
-    @Disabled("no ip packages here")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("MSTP_Malformed_Packets")
     Collection<DynamicNode> MSTP_Malformed_Packets() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("MSTP_Malformed_Packets.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("MSTP_Malformed_Packets.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1307,11 +1307,10 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("Sysco-1")
     Collection<DynamicNode> Sysco_1() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("Sysco-1.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("Sysco-1.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1329,19 +1328,19 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("TA02 MST")
     Collection<DynamicNode> TA02_MST() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TA02%20MST.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TA02%20MST.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("TAO2 TES.39A")
     Collection<DynamicNode> TAO2_TES_39_A() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TAO2%20TES.39A.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TAO2%20TES.39A.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1359,19 +1358,17 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non ip")
     @TestFactory
     @DisplayName("TestRun4 - Internal side of Router")
     Collection<DynamicNode> TestRun4___Internal_side_of_Router() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TestRun4%20-%20Internal%20side%20of%20Router.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TestRun4%20-%20Internal%20side%20of%20Router.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("TestRun4 - Outside of Router")
     Collection<DynamicNode> TestRun4___Outside_of_Router() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TestRun4%20-%20Outside%20of%20Router.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TestRun4%20-%20Outside%20of%20Router.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1382,11 +1379,10 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("TestRun5 - Outside of Router")
     Collection<DynamicNode> TestRun5___Outside_of_Router() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TestRun5%20-%20Outside%20of%20Router.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TestRun5%20-%20Outside%20of%20Router.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1397,27 +1393,24 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("TestRun8 - Outside of Router")
     Collection<DynamicNode> TestRun8___Outside_of_Router() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TestRun8%20-%20Outside%20of%20Router.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TestRun8%20-%20Outside%20of%20Router.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("TimeSync_Decode_Noon")
     Collection<DynamicNode> TimeSync_Decode_Noon() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TimeSync_Decode_Noon.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("TimeSync_Decode_Noon.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("needs filtering")
     @TestFactory
     @DisplayName("Tower333 lighting 5min IP")
     Collection<DynamicNode> Tower333_lighting_5min_IP() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("Tower333%20lighting%205min%20IP.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("Tower333%20lighting%205min%20IP.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1474,11 +1467,10 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("WhoIs_I-Am_Epics")
     Collection<DynamicNode> WhoIs_I_Am_Epics() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("WhoIs_I-Am_Epics.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("WhoIs_I-Am_Epics.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1514,7 +1506,7 @@ public class RandomPackagesTest {
     @TestFactory
     @DisplayName("WireSharkOfNewObjects")
     Collection<DynamicNode> WireSharkOfNewObjects() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("WireSharkOfNewObjects.pcap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("WireSharkOfNewObjects.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1548,18 +1540,18 @@ public class RandomPackagesTest {
         );
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("aha_220_to_20_lost_b")
     Collection<DynamicNode> aha_220_to_20_lost_b() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("aha_220_to_20_lost_b.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("aha_220_to_20_lost_b.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
     @TestFactory
     @DisplayName("alerton-plugfest-2")
     Collection<DynamicNode> alerton_plugfest_2() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("alerton-plugfest-2.cap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("alerton-plugfest-2.cap", BACNET_BPF_FILTER_UDP);
         return Arrays.asList(
             DynamicTest.dynamicTest("Complex-ACK readProperty[155] device,42222 protocol-version",
                 () -> {
@@ -1586,19 +1578,18 @@ public class RandomPackagesTest {
         );
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("alerton-plugfest-3")
     Collection<DynamicNode> alerton_plugfest_3() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("alerton-plugfest-3.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("alerton-plugfest-3.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("too fat will crash ide (250k entries)")
     @TestFactory
     @DisplayName("alerton-plugfest")
     Collection<DynamicNode> alerton_plugfest() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("alerton-plugfest.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("alerton-plugfest.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1672,19 +1663,17 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("atomic-write-file-480")
     Collection<DynamicNode> atomic_write_file_480() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("atomic-write-file-480.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("atomic-write-file-480.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("atomic-write-file-seg")
     Collection<DynamicNode> atomic_write_file_seg() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("atomic-write-file-seg.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("atomic-write-file-seg.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1709,27 +1698,25 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("bacnet-arcnet")
     Collection<DynamicNode> bacnet_arcnet() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bacnet-arcnet.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bacnet-arcnet.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("bacnet-ethernet-device")
     Collection<DynamicNode> bacnet_ethernet_device() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bacnet-ethernet-device.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bacnet-ethernet-device.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("bacnet-ethernet")
     Collection<DynamicNode> bacnet_ethernet() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bacnet-ethernet.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bacnet-ethernet.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1740,26 +1727,24 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("bacnet-properties")
     Collection<DynamicNode> bacnet_properties() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bacnet-properties.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bacnet-properties.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
     @TestFactory
     @DisplayName("bacnet-services")
     Collection<DynamicNode> bacnet_services() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bacnet-services.cap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bacnet-services.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("bacnet-stack-services")
     Collection<DynamicNode> bacnet_stack_services() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bacnet-stack-services.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bacnet-stack-services.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1770,19 +1755,18 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("needs filtering")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("bad_hub_restart")
     Collection<DynamicNode> bad_hub_restart() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bad_hub_restart.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bad_hub_restart.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("bip-discover")
     Collection<DynamicNode> bip_discover() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bip-discover.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bip-discover.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1807,11 +1791,11 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("bo_command_failure")
     Collection<DynamicNode> bo_command_failure() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bo_command_failure.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bo_command_failure.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1910,11 +1894,11 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("many broken packages")
     @TestFactory
     @DisplayName("bvlc-loop")
     Collection<DynamicNode> bvlc_loop() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bvlc-loop.cap");
+        String filterBrokenUDPPackages = "udp[4:2] > 29";
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("bvlc-loop.cap", BACNET_BPF_FILTER_UDP + " and " + filterBrokenUDPPackages);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -1926,19 +1910,18 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("cimetrics_mstp")
     Collection<DynamicNode> cimetrics_mstp() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("cimetrics_mstp.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("cimetrics_mstp.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("config-tool-discover")
     Collection<DynamicNode> config_tool_discover() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("config-tool-discover.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("config-tool-discover.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -2044,18 +2027,18 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("Needs filtering")
     @TestFactory
     @DisplayName("foreign-device-npdu")
     Collection<DynamicNode> foreign_device_npdu() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("foreign-device-npdu.cap");
+        String filterBrokenUDPPackages = "udp[4:2] > 29";
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("foreign-device-npdu.cap", BACNET_BPF_FILTER_UDP + " and " + filterBrokenUDPPackages);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
     @TestFactory
     @DisplayName("getEventInformation")
     Collection<DynamicNode> getEventInformation() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("getEventInformation.pcap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("getEventInformation.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -2066,11 +2049,11 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("lmbc-300-bootload")
     Collection<DynamicNode> lmbc_300_bootload() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("lmbc-300-bootload.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("lmbc-300-bootload.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -2102,34 +2085,32 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp-cimetrics")
     Collection<DynamicNode> mstp_cimetrics() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp-cimetrics.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp-cimetrics.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("mstp-test-4")
     Collection<DynamicNode> mstp_test_4() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp-test-4.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp-test-4.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
     @TestFactory
     @DisplayName("mstp-whois-basrt-mix")
     Collection<DynamicNode> mstp_whois_basrt_mix() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp-whois-basrt-mix.cap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp-whois-basrt-mix.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("mstp-whois-basrt-mix2")
     Collection<DynamicNode> mstp_whois_basrt_mix2() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp-whois-basrt-mix2.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp-whois-basrt-mix2.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -2140,147 +2121,147 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("Only non udp packages")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20090227094623")
     Collection<DynamicNode> mstp_20090227094623() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20090227094623.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20090227094623.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20090304105820")
     Collection<DynamicNode> mstp_20090304105820() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20090304105820.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20090304105820.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20090304110410")
     Collection<DynamicNode> mstp_20090304110410() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20090304110410.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20090304110410.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20090807145500")
     Collection<DynamicNode> mstp_20090807145500() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20090807145500.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20090807145500.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20091013121352")
     Collection<DynamicNode> mstp_20091013121352() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013121352.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013121352.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20091013121410")
     Collection<DynamicNode> mstp_20091013121410() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013121410.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013121410.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20091013122053")
     Collection<DynamicNode> mstp_20091013122053() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013122053.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013122053.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20091013122451")
     Collection<DynamicNode> mstp_20091013122451() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013122451.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013122451.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20091013123108")
     Collection<DynamicNode> mstp_20091013123108() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013123108.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013123108.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20091013124218")
     Collection<DynamicNode> mstp_20091013124218() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013124218.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013124218.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20091013130259")
     Collection<DynamicNode> mstp_20091013130259() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013130259.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013130259.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20091013162906")
     Collection<DynamicNode> mstp_20091013162906() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013162906.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091013162906.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20091014093519")
     Collection<DynamicNode> mstp_20091014093519() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091014093519.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091014093519.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20091014112427")
     Collection<DynamicNode> mstp_20091014112427() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091014112427.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20091014112427.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_20140225214217")
     Collection<DynamicNode> mstp_20140225214217() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20140225214217.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_20140225214217.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("mstp_mix_basrt_V124")
     Collection<DynamicNode> mstp_mix_basrt_V124() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_mix_basrt_V124.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_mix_basrt_V124.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    // TODO: fixme needs more support in the protocols
+    @Disabled("fixme: more protocol support")
     @TestFactory
     @DisplayName("mstp_mix_basrt_V124_bad")
     Collection<DynamicNode> mstp_mix_basrt_V124_bad() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_mix_basrt_V124_bad.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_mix_basrt_V124_bad.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non ip")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("mstp_wtap")
     Collection<DynamicNode> mstp_wtap() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_wtap.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("mstp_wtap.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -2291,27 +2272,27 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("plugfest-2011-delta-1")
     Collection<DynamicNode> plugfest_2011_delta_1() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-2011-delta-1.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-2011-delta-1.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("plugfest-2011-delta-2")
     Collection<DynamicNode> plugfest_2011_delta_2() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-2011-delta-2.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-2011-delta-2.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("plugfest-2011-delta-3")
     Collection<DynamicNode> plugfest_2011_delta_3() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-2011-delta-3.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-2011-delta-3.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -2329,18 +2310,17 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("needs filtering")
     @TestFactory
     @DisplayName("plugfest-2011-siemens-1")
     Collection<DynamicNode> plugfest_2011_siemens_1() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-2011-siemens-1.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-2011-siemens-1.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
     @TestFactory
     @DisplayName("plugfest-2011-trane-1")
     Collection<DynamicNode> plugfest_2011_trane_1() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-2011-trane-1.pcap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-2011-trane-1.pcap", BACNET_BPF_FILTER_UDP);
         return Arrays.asList(
             DynamicTest.dynamicTest("Unconfirmed REQ who-Is",
                 () -> {
@@ -2359,28 +2339,28 @@ public class RandomPackagesTest {
     @TestFactory
     @DisplayName("plugfest-delta-2")
     Collection<DynamicNode> plugfest_delta_2() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-delta-2.cap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-delta-2.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
     @TestFactory
     @DisplayName("plugfest-delta-2b")
     Collection<DynamicNode> plugfest_delta_2b() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-delta-2b.cap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-delta-2b.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
     @TestFactory
     @DisplayName("plugfest-tridium-1")
     Collection<DynamicNode> plugfest_tridium_1() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-tridium-1.pcap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-tridium-1.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
     @TestFactory
     @DisplayName("plugfest-tridium-2")
     Collection<DynamicNode> plugfest_tridium_2() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-tridium-2.pcap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-tridium-2.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -2391,19 +2371,17 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("polarsoft-free-range-router")
     Collection<DynamicNode> polarsoft_free_range_router() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("polarsoft-free-range-router.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("polarsoft-free-range-router.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("properties")
     Collection<DynamicNode> properties() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("properties.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("properties.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -4082,11 +4060,11 @@ public class RandomPackagesTest {
         );
     }
 
-    @Disabled("mostly llc messages")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("read-property-bad")
     Collection<DynamicNode> read_property_bad() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("read-property-bad.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("read-property-bad.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -4097,19 +4075,19 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("read-property-synergy")
     Collection<DynamicNode> read_property_synergy() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("read-property-synergy.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("read-property-synergy.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("read-property")
     Collection<DynamicNode> read_property() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("read-property.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("read-property.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -4127,11 +4105,10 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("reinit-device")
     Collection<DynamicNode> reinit_device() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("reinit-device.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("reinit-device.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -4146,25 +4123,7 @@ public class RandomPackagesTest {
     @DisplayName("routers")
     Collection<DynamicNode> routers() throws Exception {
         TestPcapEvaluator pcapEvaluator = pcapEvaluator("routers.cap");
-        return Arrays.asList(
-            DynamicTest.dynamicTest("TODO",
-                () -> {
-                    assumeTrue(false, "not properly implemented. Check manually and add asserts");
-                    BVLC bvlc = pcapEvaluator.nextBVLC();
-                    dump(bvlc);
-                    // TODO:
-                    assumeTrue(false, "not properly implemented. Check manually and add asserts");
-                }),
-            DynamicTest.dynamicTest("TODO",
-                () -> {
-                    assumeTrue(false, "not properly implemented. Check manually and add asserts");
-                    BVLC bvlc = pcapEvaluator.nextBVLC();
-                    dump(bvlc);
-                    // TODO:
-                    assumeTrue(false, "not properly implemented. Check manually and add asserts");
-                }),
-            pcapEvaluator.parseEmAll()
-        );
+        return List.of(pcapEvaluator.parseEmAll());
     }
 
     @TestFactory
@@ -4197,11 +4156,10 @@ public class RandomPackagesTest {
         );
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("rp")
     Collection<DynamicNode> rp() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("rp.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("rp.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -4247,19 +4205,18 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("too many packages 293726... needs splitup")
     @TestFactory
     @DisplayName("softdel-BTL")
     Collection<DynamicNode> softdel_BTL() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("softdel-BTL.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("softdel-BTL.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("Needs filtering")
     @TestFactory
     @DisplayName("special-events")
     Collection<DynamicNode> special_events() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("special-events.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("special-events.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -4319,34 +4276,32 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("Needs filtering")
     @TestFactory
     @DisplayName("tridium jace2")
     Collection<DynamicNode> tridium_jace2() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("tridium%20jace2.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("tridium%20jace2.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("u+4_MSTP")
     Collection<DynamicNode> u_4_MSTP() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("u+4_MSTP.pcap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("u+4_MSTP.pcap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("weekend")
     Collection<DynamicNode> weekend() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("weekend.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("weekend.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
     @TestFactory
     @DisplayName("who-has-I-have")
     Collection<DynamicNode> who_has_I_have() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("who-has-I-have.cap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("who-has-I-have.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -4502,27 +4457,26 @@ public class RandomPackagesTest {
         );
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("who-is-i-am")
     Collection<DynamicNode> who_is_i_am() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("who-is-i-am.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("who-is-i-am.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non ip")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("whois-basrtp-b-1")
     Collection<DynamicNode> whois_basrtp_b_1() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("whois-basrtp-b-1.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("whois-basrtp-b-1.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non ip")
+    @Disabled("no udp packages")
     @TestFactory
     @DisplayName("whois-basrtp-b-2")
     Collection<DynamicNode> whois_basrtp_b_2() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("whois-basrtp-b-2.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("whois-basrtp-b-2.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -4547,11 +4501,10 @@ public class RandomPackagesTest {
         return List.of(pcapEvaluator.parseEmAll());
     }
 
-    @Disabled("mostly non udp")
     @TestFactory
     @DisplayName("wp-rp-index")
     Collection<DynamicNode> wp_rp_index() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("wp-rp-index.cap");
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("wp-rp-index.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll());
     }
 
@@ -4600,7 +4553,7 @@ public class RandomPackagesTest {
     @TestFactory
     @DisplayName("write-property")
     Collection<DynamicNode> write_property() throws Exception {
-        TestPcapEvaluator pcapEvaluator = pcapEvaluator("write-property.cap", BACNET_BPF_FILTER);
+        TestPcapEvaluator pcapEvaluator = pcapEvaluator("write-property.cap", BACNET_BPF_FILTER_UDP);
         return List.of(pcapEvaluator.parseEmAll(
             1594, // Malformed Package
             1595,   // Malformed Package