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/07/28 14:27:35 UTC

[plc4x] branch develop updated: refactor(cbus): streamline network routing

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


The following commit(s) were added to refs/heads/develop by this push:
     new b93e7bffc refactor(cbus): streamline network routing
b93e7bffc is described below

commit b93e7bffc520d527b4e59c6efee0ff563e40bc39
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jul 28 16:26:58 2022 +0200

    refactor(cbus): streamline network routing
---
 .../protocols/cbus/readwrite/model/NetworkRoute.go | 119 +++--------
 .../protocols/cbus/readwrite/model/ReplyNetwork.go | 169 +++------------
 plc4go/protocols/cbus/readwrite/model/RouteType.go | 227 ---------------------
 .../src/main/resources/protocols/cbus/c-bus.mspec  |  36 +---
 4 files changed, 63 insertions(+), 488 deletions(-)

diff --git a/plc4go/protocols/cbus/readwrite/model/NetworkRoute.go b/plc4go/protocols/cbus/readwrite/model/NetworkRoute.go
index 1d87f15e7..f5981a34f 100644
--- a/plc4go/protocols/cbus/readwrite/model/NetworkRoute.go
+++ b/plc4go/protocols/cbus/readwrite/model/NetworkRoute.go
@@ -22,7 +22,6 @@ package model
 import (
 	"github.com/apache/plc4x/plc4go/internal/spi/utils"
 	"github.com/pkg/errors"
-	"github.com/rs/zerolog/log"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -31,10 +30,8 @@ import (
 type NetworkRoute interface {
 	utils.LengthAware
 	utils.Serializable
-	// GetReverseRouteType returns ReverseRouteType (property field)
-	GetReverseRouteType() RouteType
-	// GetRouteType returns RouteType (property field)
-	GetRouteType() RouteType
+	// GetNetworkPCI returns NetworkPCI (property field)
+	GetNetworkPCI() NetworkProtocolControlInformation
 	// GetAdditionalBridgeAddresses returns AdditionalBridgeAddresses (property field)
 	GetAdditionalBridgeAddresses() []BridgeAddress
 }
@@ -48,8 +45,7 @@ type NetworkRouteExactly interface {
 
 // _NetworkRoute is the data-structure of this message
 type _NetworkRoute struct {
-	ReverseRouteType          RouteType
-	RouteType                 RouteType
+	NetworkPCI                NetworkProtocolControlInformation
 	AdditionalBridgeAddresses []BridgeAddress
 }
 
@@ -58,12 +54,8 @@ type _NetworkRoute struct {
 /////////////////////// Accessors for property fields.
 ///////////////////////
 
-func (m *_NetworkRoute) GetReverseRouteType() RouteType {
-	return m.ReverseRouteType
-}
-
-func (m *_NetworkRoute) GetRouteType() RouteType {
-	return m.RouteType
+func (m *_NetworkRoute) GetNetworkPCI() NetworkProtocolControlInformation {
+	return m.NetworkPCI
 }
 
 func (m *_NetworkRoute) GetAdditionalBridgeAddresses() []BridgeAddress {
@@ -76,8 +68,8 @@ func (m *_NetworkRoute) GetAdditionalBridgeAddresses() []BridgeAddress {
 ///////////////////////////////////////////////////////////
 
 // NewNetworkRoute factory function for _NetworkRoute
-func NewNetworkRoute(reverseRouteType RouteType, routeType RouteType, additionalBridgeAddresses []BridgeAddress) *_NetworkRoute {
-	return &_NetworkRoute{ReverseRouteType: reverseRouteType, RouteType: routeType, AdditionalBridgeAddresses: additionalBridgeAddresses}
+func NewNetworkRoute(networkPCI NetworkProtocolControlInformation, additionalBridgeAddresses []BridgeAddress) *_NetworkRoute {
+	return &_NetworkRoute{NetworkPCI: networkPCI, AdditionalBridgeAddresses: additionalBridgeAddresses}
 }
 
 // Deprecated: use the interface for direct cast
@@ -102,14 +94,8 @@ func (m *_NetworkRoute) GetLengthInBits() uint16 {
 func (m *_NetworkRoute) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
-	// Reserved Field (reserved)
-	lengthInBits += 2
-
-	// Simple field (reverseRouteType)
-	lengthInBits += 3
-
-	// Simple field (routeType)
-	lengthInBits += 3
+	// Simple field (networkPCI)
+	lengthInBits += m.NetworkPCI.GetLengthInBits()
 
 	// Array field
 	if len(m.AdditionalBridgeAddresses) > 0 {
@@ -135,44 +121,17 @@ func NetworkRouteParse(readBuffer utils.ReadBuffer) (NetworkRoute, error) {
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := readBuffer.ReadUint8("reserved", 2)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of NetworkRoute")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]interface{}{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-		}
-	}
-
-	// Simple Field (reverseRouteType)
-	if pullErr := readBuffer.PullContext("reverseRouteType"); pullErr != nil {
-		return nil, errors.Wrap(pullErr, "Error pulling for reverseRouteType")
+	// Simple Field (networkPCI)
+	if pullErr := readBuffer.PullContext("networkPCI"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for networkPCI")
 	}
-	_reverseRouteType, _reverseRouteTypeErr := RouteTypeParse(readBuffer)
-	if _reverseRouteTypeErr != nil {
-		return nil, errors.Wrap(_reverseRouteTypeErr, "Error parsing 'reverseRouteType' field of NetworkRoute")
+	_networkPCI, _networkPCIErr := NetworkProtocolControlInformationParse(readBuffer)
+	if _networkPCIErr != nil {
+		return nil, errors.Wrap(_networkPCIErr, "Error parsing 'networkPCI' field of NetworkRoute")
 	}
-	reverseRouteType := _reverseRouteType
-	if closeErr := readBuffer.CloseContext("reverseRouteType"); closeErr != nil {
-		return nil, errors.Wrap(closeErr, "Error closing for reverseRouteType")
-	}
-
-	// Simple Field (routeType)
-	if pullErr := readBuffer.PullContext("routeType"); pullErr != nil {
-		return nil, errors.Wrap(pullErr, "Error pulling for routeType")
-	}
-	_routeType, _routeTypeErr := RouteTypeParse(readBuffer)
-	if _routeTypeErr != nil {
-		return nil, errors.Wrap(_routeTypeErr, "Error parsing 'routeType' field of NetworkRoute")
-	}
-	routeType := _routeType
-	if closeErr := readBuffer.CloseContext("routeType"); closeErr != nil {
-		return nil, errors.Wrap(closeErr, "Error closing for routeType")
+	networkPCI := _networkPCI.(NetworkProtocolControlInformation)
+	if closeErr := readBuffer.CloseContext("networkPCI"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for networkPCI")
 	}
 
 	// Array field (additionalBridgeAddresses)
@@ -180,13 +139,13 @@ func NetworkRouteParse(readBuffer utils.ReadBuffer) (NetworkRoute, error) {
 		return nil, errors.Wrap(pullErr, "Error pulling for additionalBridgeAddresses")
 	}
 	// Count array
-	additionalBridgeAddresses := make([]BridgeAddress, routeType.AdditionalBridges())
+	additionalBridgeAddresses := make([]BridgeAddress, uint16(networkPCI.GetStackDepth())-uint16(uint16(1)))
 	// This happens when the size is set conditional to 0
 	if len(additionalBridgeAddresses) == 0 {
 		additionalBridgeAddresses = nil
 	}
 	{
-		for curItem := uint16(0); curItem < uint16(routeType.AdditionalBridges()); curItem++ {
+		for curItem := uint16(0); curItem < uint16(uint16(networkPCI.GetStackDepth())-uint16(uint16(1))); curItem++ {
 			_item, _err := BridgeAddressParse(readBuffer)
 			if _err != nil {
 				return nil, errors.Wrap(_err, "Error parsing 'additionalBridgeAddresses' field of NetworkRoute")
@@ -203,7 +162,7 @@ func NetworkRouteParse(readBuffer utils.ReadBuffer) (NetworkRoute, error) {
 	}
 
 	// Create the instance
-	return NewNetworkRoute(reverseRouteType, routeType, additionalBridgeAddresses), nil
+	return NewNetworkRoute(networkPCI, additionalBridgeAddresses), nil
 }
 
 func (m *_NetworkRoute) Serialize(writeBuffer utils.WriteBuffer) error {
@@ -213,36 +172,16 @@ func (m *_NetworkRoute) Serialize(writeBuffer utils.WriteBuffer) error {
 		return errors.Wrap(pushErr, "Error pushing for NetworkRoute")
 	}
 
-	// Reserved Field (reserved)
-	{
-		_err := writeBuffer.WriteUint8("reserved", 2, uint8(0x00))
-		if _err != nil {
-			return errors.Wrap(_err, "Error serializing 'reserved' field")
-		}
-	}
-
-	// Simple Field (reverseRouteType)
-	if pushErr := writeBuffer.PushContext("reverseRouteType"); pushErr != nil {
-		return errors.Wrap(pushErr, "Error pushing for reverseRouteType")
-	}
-	_reverseRouteTypeErr := writeBuffer.WriteSerializable(m.GetReverseRouteType())
-	if popErr := writeBuffer.PopContext("reverseRouteType"); popErr != nil {
-		return errors.Wrap(popErr, "Error popping for reverseRouteType")
-	}
-	if _reverseRouteTypeErr != nil {
-		return errors.Wrap(_reverseRouteTypeErr, "Error serializing 'reverseRouteType' field")
-	}
-
-	// Simple Field (routeType)
-	if pushErr := writeBuffer.PushContext("routeType"); pushErr != nil {
-		return errors.Wrap(pushErr, "Error pushing for routeType")
+	// Simple Field (networkPCI)
+	if pushErr := writeBuffer.PushContext("networkPCI"); pushErr != nil {
+		return errors.Wrap(pushErr, "Error pushing for networkPCI")
 	}
-	_routeTypeErr := writeBuffer.WriteSerializable(m.GetRouteType())
-	if popErr := writeBuffer.PopContext("routeType"); popErr != nil {
-		return errors.Wrap(popErr, "Error popping for routeType")
+	_networkPCIErr := writeBuffer.WriteSerializable(m.GetNetworkPCI())
+	if popErr := writeBuffer.PopContext("networkPCI"); popErr != nil {
+		return errors.Wrap(popErr, "Error popping for networkPCI")
 	}
-	if _routeTypeErr != nil {
-		return errors.Wrap(_routeTypeErr, "Error serializing 'routeType' field")
+	if _networkPCIErr != nil {
+		return errors.Wrap(_networkPCIErr, "Error serializing 'networkPCI' field")
 	}
 
 	// Array Field (additionalBridgeAddresses)
diff --git a/plc4go/protocols/cbus/readwrite/model/ReplyNetwork.go b/plc4go/protocols/cbus/readwrite/model/ReplyNetwork.go
index 5e9596534..77f153106 100644
--- a/plc4go/protocols/cbus/readwrite/model/ReplyNetwork.go
+++ b/plc4go/protocols/cbus/readwrite/model/ReplyNetwork.go
@@ -22,7 +22,6 @@ package model
 import (
 	"github.com/apache/plc4x/plc4go/internal/spi/utils"
 	"github.com/pkg/errors"
-	"github.com/rs/zerolog/log"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -31,12 +30,8 @@ import (
 type ReplyNetwork interface {
 	utils.LengthAware
 	utils.Serializable
-	// GetReverseRouteType returns ReverseRouteType (property field)
-	GetReverseRouteType() RouteType
-	// GetRouteType returns RouteType (property field)
-	GetRouteType() RouteType
-	// GetAdditionalBridgeAddresses returns AdditionalBridgeAddresses (property field)
-	GetAdditionalBridgeAddresses() []BridgeAddress
+	// GetNetworkRoute returns NetworkRoute (property field)
+	GetNetworkRoute() NetworkRoute
 	// GetUnitAddress returns UnitAddress (property field)
 	GetUnitAddress() UnitAddress
 }
@@ -50,10 +45,8 @@ type ReplyNetworkExactly interface {
 
 // _ReplyNetwork is the data-structure of this message
 type _ReplyNetwork struct {
-	ReverseRouteType          RouteType
-	RouteType                 RouteType
-	AdditionalBridgeAddresses []BridgeAddress
-	UnitAddress               UnitAddress
+	NetworkRoute NetworkRoute
+	UnitAddress  UnitAddress
 }
 
 ///////////////////////////////////////////////////////////
@@ -61,16 +54,8 @@ type _ReplyNetwork struct {
 /////////////////////// Accessors for property fields.
 ///////////////////////
 
-func (m *_ReplyNetwork) GetReverseRouteType() RouteType {
-	return m.ReverseRouteType
-}
-
-func (m *_ReplyNetwork) GetRouteType() RouteType {
-	return m.RouteType
-}
-
-func (m *_ReplyNetwork) GetAdditionalBridgeAddresses() []BridgeAddress {
-	return m.AdditionalBridgeAddresses
+func (m *_ReplyNetwork) GetNetworkRoute() NetworkRoute {
+	return m.NetworkRoute
 }
 
 func (m *_ReplyNetwork) GetUnitAddress() UnitAddress {
@@ -83,8 +68,8 @@ func (m *_ReplyNetwork) GetUnitAddress() UnitAddress {
 ///////////////////////////////////////////////////////////
 
 // NewReplyNetwork factory function for _ReplyNetwork
-func NewReplyNetwork(reverseRouteType RouteType, routeType RouteType, additionalBridgeAddresses []BridgeAddress, unitAddress UnitAddress) *_ReplyNetwork {
-	return &_ReplyNetwork{ReverseRouteType: reverseRouteType, RouteType: routeType, AdditionalBridgeAddresses: additionalBridgeAddresses, UnitAddress: unitAddress}
+func NewReplyNetwork(networkRoute NetworkRoute, unitAddress UnitAddress) *_ReplyNetwork {
+	return &_ReplyNetwork{NetworkRoute: networkRoute, UnitAddress: unitAddress}
 }
 
 // Deprecated: use the interface for direct cast
@@ -109,22 +94,8 @@ func (m *_ReplyNetwork) GetLengthInBits() uint16 {
 func (m *_ReplyNetwork) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
-	// Reserved Field (reserved)
-	lengthInBits += 2
-
-	// Simple field (reverseRouteType)
-	lengthInBits += 3
-
-	// Simple field (routeType)
-	lengthInBits += 3
-
-	// Array field
-	if len(m.AdditionalBridgeAddresses) > 0 {
-		for i, element := range m.AdditionalBridgeAddresses {
-			last := i == len(m.AdditionalBridgeAddresses)-1
-			lengthInBits += element.(interface{ GetLengthInBitsConditional(bool) uint16 }).GetLengthInBitsConditional(last)
-		}
-	}
+	// Simple field (networkRoute)
+	lengthInBits += m.NetworkRoute.GetLengthInBits()
 
 	// Simple field (unitAddress)
 	lengthInBits += m.UnitAddress.GetLengthInBits()
@@ -145,67 +116,17 @@ func ReplyNetworkParse(readBuffer utils.ReadBuffer) (ReplyNetwork, error) {
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := readBuffer.ReadUint8("reserved", 2)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ReplyNetwork")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]interface{}{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-		}
+	// Simple Field (networkRoute)
+	if pullErr := readBuffer.PullContext("networkRoute"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for networkRoute")
 	}
-
-	// Simple Field (reverseRouteType)
-	if pullErr := readBuffer.PullContext("reverseRouteType"); pullErr != nil {
-		return nil, errors.Wrap(pullErr, "Error pulling for reverseRouteType")
-	}
-	_reverseRouteType, _reverseRouteTypeErr := RouteTypeParse(readBuffer)
-	if _reverseRouteTypeErr != nil {
-		return nil, errors.Wrap(_reverseRouteTypeErr, "Error parsing 'reverseRouteType' field of ReplyNetwork")
+	_networkRoute, _networkRouteErr := NetworkRouteParse(readBuffer)
+	if _networkRouteErr != nil {
+		return nil, errors.Wrap(_networkRouteErr, "Error parsing 'networkRoute' field of ReplyNetwork")
 	}
-	reverseRouteType := _reverseRouteType
-	if closeErr := readBuffer.CloseContext("reverseRouteType"); closeErr != nil {
-		return nil, errors.Wrap(closeErr, "Error closing for reverseRouteType")
-	}
-
-	// Simple Field (routeType)
-	if pullErr := readBuffer.PullContext("routeType"); pullErr != nil {
-		return nil, errors.Wrap(pullErr, "Error pulling for routeType")
-	}
-	_routeType, _routeTypeErr := RouteTypeParse(readBuffer)
-	if _routeTypeErr != nil {
-		return nil, errors.Wrap(_routeTypeErr, "Error parsing 'routeType' field of ReplyNetwork")
-	}
-	routeType := _routeType
-	if closeErr := readBuffer.CloseContext("routeType"); closeErr != nil {
-		return nil, errors.Wrap(closeErr, "Error closing for routeType")
-	}
-
-	// Array field (additionalBridgeAddresses)
-	if pullErr := readBuffer.PullContext("additionalBridgeAddresses", utils.WithRenderAsList(true)); pullErr != nil {
-		return nil, errors.Wrap(pullErr, "Error pulling for additionalBridgeAddresses")
-	}
-	// Count array
-	additionalBridgeAddresses := make([]BridgeAddress, routeType.AdditionalBridges())
-	// This happens when the size is set conditional to 0
-	if len(additionalBridgeAddresses) == 0 {
-		additionalBridgeAddresses = nil
-	}
-	{
-		for curItem := uint16(0); curItem < uint16(routeType.AdditionalBridges()); curItem++ {
-			_item, _err := BridgeAddressParse(readBuffer)
-			if _err != nil {
-				return nil, errors.Wrap(_err, "Error parsing 'additionalBridgeAddresses' field of ReplyNetwork")
-			}
-			additionalBridgeAddresses[curItem] = _item.(BridgeAddress)
-		}
-	}
-	if closeErr := readBuffer.CloseContext("additionalBridgeAddresses", utils.WithRenderAsList(true)); closeErr != nil {
-		return nil, errors.Wrap(closeErr, "Error closing for additionalBridgeAddresses")
+	networkRoute := _networkRoute.(NetworkRoute)
+	if closeErr := readBuffer.CloseContext("networkRoute"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for networkRoute")
 	}
 
 	// Simple Field (unitAddress)
@@ -226,7 +147,7 @@ func ReplyNetworkParse(readBuffer utils.ReadBuffer) (ReplyNetwork, error) {
 	}
 
 	// Create the instance
-	return NewReplyNetwork(reverseRouteType, routeType, additionalBridgeAddresses, unitAddress), nil
+	return NewReplyNetwork(networkRoute, unitAddress), nil
 }
 
 func (m *_ReplyNetwork) Serialize(writeBuffer utils.WriteBuffer) error {
@@ -236,50 +157,16 @@ func (m *_ReplyNetwork) Serialize(writeBuffer utils.WriteBuffer) error {
 		return errors.Wrap(pushErr, "Error pushing for ReplyNetwork")
 	}
 
-	// Reserved Field (reserved)
-	{
-		_err := writeBuffer.WriteUint8("reserved", 2, uint8(0x00))
-		if _err != nil {
-			return errors.Wrap(_err, "Error serializing 'reserved' field")
-		}
-	}
-
-	// Simple Field (reverseRouteType)
-	if pushErr := writeBuffer.PushContext("reverseRouteType"); pushErr != nil {
-		return errors.Wrap(pushErr, "Error pushing for reverseRouteType")
-	}
-	_reverseRouteTypeErr := writeBuffer.WriteSerializable(m.GetReverseRouteType())
-	if popErr := writeBuffer.PopContext("reverseRouteType"); popErr != nil {
-		return errors.Wrap(popErr, "Error popping for reverseRouteType")
-	}
-	if _reverseRouteTypeErr != nil {
-		return errors.Wrap(_reverseRouteTypeErr, "Error serializing 'reverseRouteType' field")
-	}
-
-	// Simple Field (routeType)
-	if pushErr := writeBuffer.PushContext("routeType"); pushErr != nil {
-		return errors.Wrap(pushErr, "Error pushing for routeType")
-	}
-	_routeTypeErr := writeBuffer.WriteSerializable(m.GetRouteType())
-	if popErr := writeBuffer.PopContext("routeType"); popErr != nil {
-		return errors.Wrap(popErr, "Error popping for routeType")
-	}
-	if _routeTypeErr != nil {
-		return errors.Wrap(_routeTypeErr, "Error serializing 'routeType' field")
-	}
-
-	// Array Field (additionalBridgeAddresses)
-	if pushErr := writeBuffer.PushContext("additionalBridgeAddresses", utils.WithRenderAsList(true)); pushErr != nil {
-		return errors.Wrap(pushErr, "Error pushing for additionalBridgeAddresses")
+	// Simple Field (networkRoute)
+	if pushErr := writeBuffer.PushContext("networkRoute"); pushErr != nil {
+		return errors.Wrap(pushErr, "Error pushing for networkRoute")
 	}
-	for _, _element := range m.GetAdditionalBridgeAddresses() {
-		_elementErr := writeBuffer.WriteSerializable(_element)
-		if _elementErr != nil {
-			return errors.Wrap(_elementErr, "Error serializing 'additionalBridgeAddresses' field")
-		}
+	_networkRouteErr := writeBuffer.WriteSerializable(m.GetNetworkRoute())
+	if popErr := writeBuffer.PopContext("networkRoute"); popErr != nil {
+		return errors.Wrap(popErr, "Error popping for networkRoute")
 	}
-	if popErr := writeBuffer.PopContext("additionalBridgeAddresses", utils.WithRenderAsList(true)); popErr != nil {
-		return errors.Wrap(popErr, "Error popping for additionalBridgeAddresses")
+	if _networkRouteErr != nil {
+		return errors.Wrap(_networkRouteErr, "Error serializing 'networkRoute' field")
 	}
 
 	// Simple Field (unitAddress)
diff --git a/plc4go/protocols/cbus/readwrite/model/RouteType.go b/plc4go/protocols/cbus/readwrite/model/RouteType.go
deleted file mode 100644
index 0dab9da24..000000000
--- a/plc4go/protocols/cbus/readwrite/model/RouteType.go
+++ /dev/null
@@ -1,227 +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
- *
- *   https://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/spi/utils"
-	"github.com/pkg/errors"
-	"github.com/rs/zerolog/log"
-)
-
-// Code generated by code-generation. DO NOT EDIT.
-
-// RouteType is an enum
-type RouteType uint8
-
-type IRouteType interface {
-	AdditionalBridges() uint8
-	Serialize(writeBuffer utils.WriteBuffer) error
-}
-
-const (
-	RouteType_NoBridgeAtAll         RouteType = 0x0
-	RouteType_NoAdditionalBridge    RouteType = 0x1
-	RouteType_OneAdditionalBridge   RouteType = 0x2
-	RouteType_TwoAdditionalBridge   RouteType = 0x3
-	RouteType_ThreeAdditionalBridge RouteType = 0x4
-	RouteType_FourAdditionalBridge  RouteType = 0x5
-	RouteType_FiveAdditionalBridge  RouteType = 0x6
-	RouteType_SixAdditionalBridge   RouteType = 0x7
-)
-
-var RouteTypeValues []RouteType
-
-func init() {
-	_ = errors.New
-	RouteTypeValues = []RouteType{
-		RouteType_NoBridgeAtAll,
-		RouteType_NoAdditionalBridge,
-		RouteType_OneAdditionalBridge,
-		RouteType_TwoAdditionalBridge,
-		RouteType_ThreeAdditionalBridge,
-		RouteType_FourAdditionalBridge,
-		RouteType_FiveAdditionalBridge,
-		RouteType_SixAdditionalBridge,
-	}
-}
-
-func (e RouteType) AdditionalBridges() uint8 {
-	switch e {
-	case 0x0:
-		{ /* '0x0' */
-			return 0
-		}
-	case 0x1:
-		{ /* '0x1' */
-			return 0
-		}
-	case 0x2:
-		{ /* '0x2' */
-			return 1
-		}
-	case 0x3:
-		{ /* '0x3' */
-			return 2
-		}
-	case 0x4:
-		{ /* '0x4' */
-			return 3
-		}
-	case 0x5:
-		{ /* '0x5' */
-			return 4
-		}
-	case 0x6:
-		{ /* '0x6' */
-			return 5
-		}
-	case 0x7:
-		{ /* '0x7' */
-			return 6
-		}
-	default:
-		{
-			return 0
-		}
-	}
-}
-
-func RouteTypeFirstEnumForFieldAdditionalBridges(value uint8) (RouteType, error) {
-	for _, sizeValue := range RouteTypeValues {
-		if sizeValue.AdditionalBridges() == value {
-			return sizeValue, nil
-		}
-	}
-	return 0, errors.Errorf("enum for %v describing AdditionalBridges not found", value)
-}
-func RouteTypeByValue(value uint8) (enum RouteType, ok bool) {
-	switch value {
-	case 0x0:
-		return RouteType_NoBridgeAtAll, true
-	case 0x1:
-		return RouteType_NoAdditionalBridge, true
-	case 0x2:
-		return RouteType_OneAdditionalBridge, true
-	case 0x3:
-		return RouteType_TwoAdditionalBridge, true
-	case 0x4:
-		return RouteType_ThreeAdditionalBridge, true
-	case 0x5:
-		return RouteType_FourAdditionalBridge, true
-	case 0x6:
-		return RouteType_FiveAdditionalBridge, true
-	case 0x7:
-		return RouteType_SixAdditionalBridge, true
-	}
-	return 0, false
-}
-
-func RouteTypeByName(value string) (enum RouteType, ok bool) {
-	switch value {
-	case "NoBridgeAtAll":
-		return RouteType_NoBridgeAtAll, true
-	case "NoAdditionalBridge":
-		return RouteType_NoAdditionalBridge, true
-	case "OneAdditionalBridge":
-		return RouteType_OneAdditionalBridge, true
-	case "TwoAdditionalBridge":
-		return RouteType_TwoAdditionalBridge, true
-	case "ThreeAdditionalBridge":
-		return RouteType_ThreeAdditionalBridge, true
-	case "FourAdditionalBridge":
-		return RouteType_FourAdditionalBridge, true
-	case "FiveAdditionalBridge":
-		return RouteType_FiveAdditionalBridge, true
-	case "SixAdditionalBridge":
-		return RouteType_SixAdditionalBridge, true
-	}
-	return 0, false
-}
-
-func RouteTypeKnows(value uint8) bool {
-	for _, typeValue := range RouteTypeValues {
-		if uint8(typeValue) == value {
-			return true
-		}
-	}
-	return false
-}
-
-func CastRouteType(structType interface{}) RouteType {
-	castFunc := func(typ interface{}) RouteType {
-		if sRouteType, ok := typ.(RouteType); ok {
-			return sRouteType
-		}
-		return 0
-	}
-	return castFunc(structType)
-}
-
-func (m RouteType) GetLengthInBits() uint16 {
-	return 3
-}
-
-func (m RouteType) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
-}
-
-func RouteTypeParse(readBuffer utils.ReadBuffer) (RouteType, error) {
-	val, err := readBuffer.ReadUint8("RouteType", 3)
-	if err != nil {
-		return 0, errors.Wrap(err, "error reading RouteType")
-	}
-	if enum, ok := RouteTypeByValue(val); !ok {
-		log.Debug().Msgf("no value %x found for RequestType", val)
-		return RouteType(val), nil
-	} else {
-		return enum, nil
-	}
-}
-
-func (e RouteType) Serialize(writeBuffer utils.WriteBuffer) error {
-	return writeBuffer.WriteUint8("RouteType", 3, uint8(e), utils.WithAdditionalStringRepresentation(e.PLC4XEnumName()))
-}
-
-// PLC4XEnumName returns the name that is used in code to identify this enum
-func (e RouteType) PLC4XEnumName() string {
-	switch e {
-	case RouteType_NoBridgeAtAll:
-		return "NoBridgeAtAll"
-	case RouteType_NoAdditionalBridge:
-		return "NoAdditionalBridge"
-	case RouteType_OneAdditionalBridge:
-		return "OneAdditionalBridge"
-	case RouteType_TwoAdditionalBridge:
-		return "TwoAdditionalBridge"
-	case RouteType_ThreeAdditionalBridge:
-		return "ThreeAdditionalBridge"
-	case RouteType_FourAdditionalBridge:
-		return "FourAdditionalBridge"
-	case RouteType_FiveAdditionalBridge:
-		return "FiveAdditionalBridge"
-	case RouteType_SixAdditionalBridge:
-		return "SixAdditionalBridge"
-	}
-	return ""
-}
-
-func (e RouteType) String() string {
-	return e.PLC4XEnumName()
-}
diff --git a/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec b/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec
index da627a0b1..2b27f891a 100644
--- a/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec
+++ b/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec
@@ -193,29 +193,8 @@
 ]
 
 [type NetworkRoute
-    [reserved uint 2      '0x00'                                                       ]
-    [simple RouteType     reverseRouteType                                             ]
-    [simple RouteType     routeType                                                    ]
-    [array  BridgeAddress additionalBridgeAddresses count 'routeType.additionalBridges']
-]
-
-// The last 3 bits are the total number of bridges ... subtracting 1 results in the number of additional bridges.
-// It also seems as if these are generally 2 empty bits and then twice the number of bridges as 3-bit numbers.
-// The block of 3 in bit's 3..5 seem to be the reverse route.
-//
-// Observations on failing packets:
-// - In the first case the first two bits are not empty, but 01 ... the first block of bridges is then increased by one.
-// - In another packet the first two bits are 0, but the first group ist set to 111 and the number of bridges is set to 000.
-// - In another packet the first two bits are 0, the first group is set to 001 and the second to 101
-[enum uint 3 RouteType(uint 3 additionalBridges)
-    ['0x0' NoBridgeAtAll         ['0']]
-    ['0x1' NoAdditionalBridge    ['0']]
-    ['0x2' OneAdditionalBridge   ['1']]
-    ['0x3' TwoAdditionalBridge   ['2']]
-    ['0x4' ThreeAdditionalBridge ['3']]
-    ['0x5' FourAdditionalBridge  ['4']]
-    ['0x6' FiveAdditionalBridge  ['5']]
-    ['0x7' SixAdditionalBridge   ['6']]
+    [simple NetworkProtocolControlInformation networkPCI                                ]
+    [array  BridgeAddress additionalBridgeAddresses count 'networkPCI.stackDepth-1'     ] // We substract 1 as when a route is used we always have one prefixed
 ]
 
 [discriminatedType CBusPointToPointCommand(CBusOptions cBusOptions)
@@ -1519,11 +1498,8 @@
 ]
 
 [type ReplyNetwork
-    [reserved uint 2      '0x00'                                                       ]
-    [simple RouteType     reverseRouteType                                             ]
-    [simple RouteType     routeType                                                    ]
-    [array  BridgeAddress additionalBridgeAddresses count 'routeType.additionalBridges']
-    [simple UnitAddress   unitAddress                                                  ]
+    [simple NetworkRoute  networkRoute                              ]
+    [simple UnitAddress   unitAddress                               ]
 ]
 
 [type Checksum
@@ -1642,8 +1618,8 @@
 
 [type NetworkProtocolControlInformation
     [reserved   uint 2  '0x0'           ]
-    [simple     uint 3  stackCounter    ]
-    [simple     uint 3  stackDepth      ]
+    [simple     uint 3  stackCounter    ] // Number of bridges required to transmit information from source to destination
+    [simple     uint 3  stackDepth      ] // Number of bridges required to complete the transmission from source to destination
 ]
 
 [type RequestTermination