You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2026/09/20 20:29:23 UTC

(plc4x) branch develop updated (81a01006e0 -> 74e4e71972)

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

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


    from 81a01006e0 fix: Tried fixing the python build.
     new 4b9564b9f1 chore: Updated the knx vendors
     new a1d964f15b chore: Updated the bacnet vendors
     new 74e4e71972 fix: Hopefully resolved the issues with the python build.

The 3 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:
 .../python/complex-type-template.python.ftlh       |  25 ++++
 .../bacnetip/readwrite/model/BACnetVendorId.go     | 144 +++++++++++++++++++--
 .../knxnetip/readwrite/model/KnxManufacturer.go    |  92 ++++++++++++-
 .../java/bacnetip/readwrite/BACnetVendorId.java    |  18 ++-
 .../java/knxnetip/readwrite/KnxManufacturer.java   |  16 ++-
 .../knxnetip/readwrite/model/KnxManufacturer.cs    |  49 ++++++-
 .../plc4py/protocols/modbus/readwrite/ModbusPDU.py |   4 +
 .../plc4py/protocols/umas/readwrite/ModbusPDU.py   |   2 +
 .../plc4py/protocols/umas/readwrite/UmasPDUItem.py |   2 +
 .../protocols/bacnetip/bacnet-vendorids.mspec      |  10 +-
 .../protocols/knxnetip/knx-master-data.mspec       |  11 +-
 11 files changed, 344 insertions(+), 29 deletions(-)


(plc4x) 01/03: chore: Updated the knx vendors

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

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

commit 4b9564b9f1c5efcf74c89639176da0ba7b499e77
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sun Sep 20 22:28:35 2026 +0200

    chore: Updated the knx vendors
---
 .../knxnetip/readwrite/model/KnxManufacturer.go    | 92 ++++++++++++++++++++--
 .../java/knxnetip/readwrite/KnxManufacturer.java   | 16 +++-
 .../knxnetip/readwrite/model/KnxManufacturer.cs    | 49 ++++++++++--
 .../protocols/knxnetip/knx-master-data.mspec       | 11 ++-
 4 files changed, 149 insertions(+), 19 deletions(-)

diff --git a/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go b/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
index 4e80eb4891..6bfd52dc6e 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
@@ -873,8 +873,13 @@ const (
 	KnxManufacturer_M_RUEDIGER_WOLF_AB                                   KnxManufacturer = 827
 	KnxManufacturer_M_KOLORS_INDIA_PRIVATE_LIMITED                       KnxManufacturer = 828
 	KnxManufacturer_M_GERALD_DOCENKO                                     KnxManufacturer = 829
-	KnxManufacturer_M_ABB___RESERVED                                     KnxManufacturer = 830
-	KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED                    KnxManufacturer = 831
+	KnxManufacturer_M_VK_SYSTEMS_OY                                      KnxManufacturer = 830
+	KnxManufacturer_M_GXCIT                                              KnxManufacturer = 831
+	KnxManufacturer_M_SCHWARZ_WORKS_GMBH                                 KnxManufacturer = 832
+	KnxManufacturer_M_LTECH                                              KnxManufacturer = 833
+	KnxManufacturer_M_LE_ETS_AI                                          KnxManufacturer = 834
+	KnxManufacturer_M_ABB___RESERVED                                     KnxManufacturer = 835
+	KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED                    KnxManufacturer = 836
 )
 
 var KnxManufacturerValues []KnxManufacturer
@@ -1712,6 +1717,11 @@ func init() {
 		KnxManufacturer_M_RUEDIGER_WOLF_AB,
 		KnxManufacturer_M_KOLORS_INDIA_PRIVATE_LIMITED,
 		KnxManufacturer_M_GERALD_DOCENKO,
+		KnxManufacturer_M_VK_SYSTEMS_OY,
+		KnxManufacturer_M_GXCIT,
+		KnxManufacturer_M_SCHWARZ_WORKS_GMBH,
+		KnxManufacturer_M_LTECH,
+		KnxManufacturer_M_LE_ETS_AI,
 		KnxManufacturer_M_ABB___RESERVED,
 		KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED,
 	}
@@ -4973,10 +4983,30 @@ func (e KnxManufacturer) Number() uint16 {
 		}
 	case 830:
 		{ /* '830' */
-			return 43954
+			return 892
 		}
 	case 831:
 		{ /* '831' */
+			return 893
+		}
+	case 832:
+		{ /* '832' */
+			return 894
+		}
+	case 833:
+		{ /* '833' */
+			return 895
+		}
+	case 834:
+		{ /* '834' */
+			return 896
+		}
+	case 835:
+		{ /* '835' */
+			return 43954
+		}
+	case 836:
+		{ /* '836' */
 			return 43959
 		}
 	case 84:
@@ -8255,7 +8285,7 @@ func (e KnxManufacturer) Name() string {
 		}
 	case 816:
 		{ /* '816' */
-			return "Haar-Informatik"
+			return "Haar Informatik"
 		}
 	case 817:
 		{ /* '817' */
@@ -8319,10 +8349,30 @@ func (e KnxManufacturer) Name() string {
 		}
 	case 830:
 		{ /* '830' */
-			return "ABB - reserved"
+			return "VK Systems Oy"
 		}
 	case 831:
 		{ /* '831' */
+			return "GXCIT"
+		}
+	case 832:
+		{ /* '832' */
+			return "Schwarz Works GmbH"
+		}
+	case 833:
+		{ /* '833' */
+			return "LTECH"
+		}
+	case 834:
+		{ /* '834' */
+			return "LE-ETS-AI"
+		}
+	case 835:
+		{ /* '835' */
+			return "ABB - reserved"
+		}
+	case 836:
+		{ /* '836' */
 			return "Busch-Jaeger Elektro - reserved"
 		}
 	case 84:
@@ -10037,8 +10087,18 @@ func KnxManufacturerByValue(value uint16) (enum KnxManufacturer, ok bool) {
 	case 83:
 		return KnxManufacturer_M_DURABLE_TECHNOLOGIES, true
 	case 830:
-		return KnxManufacturer_M_ABB___RESERVED, true
+		return KnxManufacturer_M_VK_SYSTEMS_OY, true
 	case 831:
+		return KnxManufacturer_M_GXCIT, true
+	case 832:
+		return KnxManufacturer_M_SCHWARZ_WORKS_GMBH, true
+	case 833:
+		return KnxManufacturer_M_LTECH, true
+	case 834:
+		return KnxManufacturer_M_LE_ETS_AI, true
+	case 835:
+		return KnxManufacturer_M_ABB___RESERVED, true
+	case 836:
 		return KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED, true
 	case 84:
 		return KnxManufacturer_M_INNOTEAM, true
@@ -11706,6 +11766,16 @@ func KnxManufacturerByName(value string) (enum KnxManufacturer, ok bool) {
 		return KnxManufacturer_M_GERALD_DOCENKO, true
 	case "M_DURABLE_TECHNOLOGIES":
 		return KnxManufacturer_M_DURABLE_TECHNOLOGIES, true
+	case "M_VK_SYSTEMS_OY":
+		return KnxManufacturer_M_VK_SYSTEMS_OY, true
+	case "M_GXCIT":
+		return KnxManufacturer_M_GXCIT, true
+	case "M_SCHWARZ_WORKS_GMBH":
+		return KnxManufacturer_M_SCHWARZ_WORKS_GMBH, true
+	case "M_LTECH":
+		return KnxManufacturer_M_LTECH, true
+	case "M_LE_ETS_AI":
+		return KnxManufacturer_M_LE_ETS_AI, true
 	case "M_ABB___RESERVED":
 		return KnxManufacturer_M_ABB___RESERVED, true
 	case "M_BUSCH_JAEGER_ELEKTRO___RESERVED":
@@ -13448,6 +13518,16 @@ func (e KnxManufacturer) PLC4XEnumName() string {
 		return "M_GERALD_DOCENKO"
 	case KnxManufacturer_M_DURABLE_TECHNOLOGIES:
 		return "M_DURABLE_TECHNOLOGIES"
+	case KnxManufacturer_M_VK_SYSTEMS_OY:
+		return "M_VK_SYSTEMS_OY"
+	case KnxManufacturer_M_GXCIT:
+		return "M_GXCIT"
+	case KnxManufacturer_M_SCHWARZ_WORKS_GMBH:
+		return "M_SCHWARZ_WORKS_GMBH"
+	case KnxManufacturer_M_LTECH:
+		return "M_LTECH"
+	case KnxManufacturer_M_LE_ETS_AI:
+		return "M_LE_ETS_AI"
 	case KnxManufacturer_M_ABB___RESERVED:
 		return "M_ABB___RESERVED"
 	case KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED:
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxManufacturer.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxManufacturer.java
index 1ec20a0989..2258bc71af 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxManufacturer.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxManufacturer.java
@@ -1657,7 +1657,7 @@ public enum KnxManufacturer {
 
   M_SYNCPRO((int) 815, (int) 876, "SYNCPRO"),
 
-  M_HAAR_INFORMATIK((int) 816, (int) 877, "Haar-Informatik"),
+  M_HAAR_INFORMATIK((int) 816, (int) 877, "Haar Informatik"),
 
   M_DIE_BILDUNGSMANUFAKTUR_GMBH((int) 817, (int) 878, "DIE-Bildungsmanufaktur GmbH"),
 
@@ -1685,9 +1685,19 @@ public enum KnxManufacturer {
 
   M_GERALD_DOCENKO((int) 829, (int) 891, "Gerald Docenko"),
 
-  M_ABB___RESERVED((int) 830, (int) 43954, "ABB - reserved"),
+  M_VK_SYSTEMS_OY((int) 830, (int) 892, "VK Systems Oy"),
 
-  M_BUSCH_JAEGER_ELEKTRO___RESERVED((int) 831, (int) 43959, "Busch-Jaeger Elektro - reserved");
+  M_GXCIT((int) 831, (int) 893, "GXCIT"),
+
+  M_SCHWARZ_WORKS_GMBH((int) 832, (int) 894, "Schwarz Works GmbH"),
+
+  M_LTECH((int) 833, (int) 895, "LTECH"),
+
+  M_LE_ETS_AI((int) 834, (int) 896, "LE-ETS-AI"),
+
+  M_ABB___RESERVED((int) 835, (int) 43954, "ABB - reserved"),
+
+  M_BUSCH_JAEGER_ELEKTRO___RESERVED((int) 836, (int) 43959, "Busch-Jaeger Elektro - reserved");
 
   private static final Map<Integer, KnxManufacturer> map;
 
diff --git a/plc4net/drivers/knxnetip/src/drivers/knxnetip/readwrite/model/KnxManufacturer.cs b/plc4net/drivers/knxnetip/src/drivers/knxnetip/readwrite/model/KnxManufacturer.cs
index c34ba35cfe..0152a97f05 100644
--- a/plc4net/drivers/knxnetip/src/drivers/knxnetip/readwrite/model/KnxManufacturer.cs
+++ b/plc4net/drivers/knxnetip/src/drivers/knxnetip/readwrite/model/KnxManufacturer.cs
@@ -855,8 +855,13 @@ namespace org.apache.plc4net.drivers.knxnetip.readwrite.model
         M_RUEDIGER_WOLF_AB = 827,
         M_KOLORS_INDIA_PRIVATE_LIMITED = 828,
         M_GERALD_DOCENKO = 829,
-        M_ABB___RESERVED = 830,
-        M_BUSCH_JAEGER_ELEKTRO___RESERVED = 831,
+        M_VK_SYSTEMS_OY = 830,
+        M_GXCIT = 831,
+        M_SCHWARZ_WORKS_GMBH = 832,
+        M_LTECH = 833,
+        M_LE_ETS_AI = 834,
+        M_ABB___RESERVED = 835,
+        M_BUSCH_JAEGER_ELEKTRO___RESERVED = 836,
     }
 
     public static class KnxManufacturerInfo
@@ -3305,10 +3310,25 @@ namespace org.apache.plc4net.drivers.knxnetip.readwrite.model
                 case KnxManufacturer.M_DURABLE_TECHNOLOGIES: { /* '83' */
                     return 122;
                 }
-                case KnxManufacturer.M_ABB___RESERVED: { /* '830' */
+                case KnxManufacturer.M_VK_SYSTEMS_OY: { /* '830' */
+                    return 892;
+                }
+                case KnxManufacturer.M_GXCIT: { /* '831' */
+                    return 893;
+                }
+                case KnxManufacturer.M_SCHWARZ_WORKS_GMBH: { /* '832' */
+                    return 894;
+                }
+                case KnxManufacturer.M_LTECH: { /* '833' */
+                    return 895;
+                }
+                case KnxManufacturer.M_LE_ETS_AI: { /* '834' */
+                    return 896;
+                }
+                case KnxManufacturer.M_ABB___RESERVED: { /* '835' */
                     return 43954;
                 }
-                case KnxManufacturer.M_BUSCH_JAEGER_ELEKTRO___RESERVED: { /* '831' */
+                case KnxManufacturer.M_BUSCH_JAEGER_ELEKTRO___RESERVED: { /* '836' */
                     return 43959;
                 }
                 case KnxManufacturer.M_INNOTEAM: { /* '84' */
@@ -5764,7 +5784,7 @@ namespace org.apache.plc4net.drivers.knxnetip.readwrite.model
                     return "SYNCPRO";
                 }
                 case KnxManufacturer.M_HAAR_INFORMATIK: { /* '816' */
-                    return "Haar-Informatik";
+                    return "Haar Informatik";
                 }
                 case KnxManufacturer.M_DIE_BILDUNGSMANUFAKTUR_GMBH: { /* '817' */
                     return "DIE-Bildungsmanufaktur GmbH";
@@ -5811,10 +5831,25 @@ namespace org.apache.plc4net.drivers.knxnetip.readwrite.model
                 case KnxManufacturer.M_DURABLE_TECHNOLOGIES: { /* '83' */
                     return "Durable Technologies";
                 }
-                case KnxManufacturer.M_ABB___RESERVED: { /* '830' */
+                case KnxManufacturer.M_VK_SYSTEMS_OY: { /* '830' */
+                    return "VK Systems Oy";
+                }
+                case KnxManufacturer.M_GXCIT: { /* '831' */
+                    return "GXCIT";
+                }
+                case KnxManufacturer.M_SCHWARZ_WORKS_GMBH: { /* '832' */
+                    return "Schwarz Works GmbH";
+                }
+                case KnxManufacturer.M_LTECH: { /* '833' */
+                    return "LTECH";
+                }
+                case KnxManufacturer.M_LE_ETS_AI: { /* '834' */
+                    return "LE-ETS-AI";
+                }
+                case KnxManufacturer.M_ABB___RESERVED: { /* '835' */
                     return "ABB - reserved";
                 }
-                case KnxManufacturer.M_BUSCH_JAEGER_ELEKTRO___RESERVED: { /* '831' */
+                case KnxManufacturer.M_BUSCH_JAEGER_ELEKTRO___RESERVED: { /* '836' */
                     return "Busch-Jaeger Elektro - reserved";
                 }
                 case KnxManufacturer.M_INNOTEAM: { /* '84' */
diff --git a/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec b/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec
index 4951ff54d6..bcaad1914e 100644
--- a/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec
+++ b/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec
@@ -1569,7 +1569,7 @@
     ['813' M_SMARTOMATIC_GMBH ['874', '"Smartomatic GmbH"']]
     ['814' M_T_MAC_TECHNOLOGIES_LTD ['875', '"t-mac Technologies Ltd"']]
     ['815' M_SYNCPRO ['876', '"SYNCPRO"']]
-    ['816' M_HAAR_INFORMATIK ['877', '"Haar-Informatik"']]
+    ['816' M_HAAR_INFORMATIK ['877', '"Haar Informatik"']]
     ['817' M_DIE_BILDUNGSMANUFAKTUR_GMBH ['878', '"DIE-Bildungsmanufaktur GmbH"']]
     ['818' M_READYKNX ['879', '"readyKNX"']]
     ['819' M_SMARTVOS ['880', '"smartVOS"']]
@@ -1583,8 +1583,13 @@
     ['827' M_RUEDIGER_WOLF_AB ['889', '"RĂ¼diger Wolf AB"']]
     ['828' M_KOLORS_INDIA_PRIVATE_LIMITED ['890', '"KOLORS INDIA PRIVATE LIMITED"']]
     ['829' M_GERALD_DOCENKO ['891', '"Gerald Docenko"']]
-    ['830' M_ABB___RESERVED ['43954', '"ABB - reserved"']]
-    ['831' M_BUSCH_JAEGER_ELEKTRO___RESERVED ['43959', '"Busch-Jaeger Elektro - reserved"']]
+    ['830' M_VK_SYSTEMS_OY ['892', '"VK Systems Oy"']]
+    ['831' M_GXCIT ['893', '"GXCIT"']]
+    ['832' M_SCHWARZ_WORKS_GMBH ['894', '"Schwarz Works GmbH"']]
+    ['833' M_LTECH ['895', '"LTECH"']]
+    ['834' M_LE_ETS_AI ['896', '"LE-ETS-AI"']]
+    ['835' M_ABB___RESERVED ['43954', '"ABB - reserved"']]
+    ['836' M_BUSCH_JAEGER_ELEKTRO___RESERVED ['43959', '"Busch-Jaeger Elektro - reserved"']]
     
 ]
 


(plc4x) 02/03: chore: Updated the bacnet vendors

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

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

commit a1d964f15b18cce8f74c31966c91f429497a9cbc
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sun Sep 20 22:28:49 2026 +0200

    chore: Updated the bacnet vendors
---
 .../bacnetip/readwrite/model/BACnetVendorId.go     | 144 +++++++++++++++++++--
 .../java/bacnetip/readwrite/BACnetVendorId.java    |  18 ++-
 .../protocols/bacnetip/bacnet-vendorids.mspec      |  10 +-
 3 files changed, 162 insertions(+), 10 deletions(-)

diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetVendorId.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetVendorId.go
index de2eaeb8be..cc3b7d2ccb 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetVendorId.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetVendorId.go
@@ -336,7 +336,7 @@ const (
 	BACnetVendorId_ROMUTEC_STEUERU_REGELSYSTEME_GMBH                                            BACnetVendorId = 290
 	BACnetVendorId_PRIBUSIN_INC                                                                 BACnetVendorId = 291
 	BACnetVendorId_ADVANTAGE_CONTROLS                                                           BACnetVendorId = 292
-	BACnetVendorId_CRITICAL_ROOM_CONTROL                                                        BACnetVendorId = 293
+	BACnetVendorId_CRC                                                                          BACnetVendorId = 293
 	BACnetVendorId_LEGRAND                                                                      BACnetVendorId = 294
 	BACnetVendorId_TONGDY_CONTROL_TECHNOLOGY_CO_LTD                                             BACnetVendorId = 295
 	BACnetVendorId_ISSARO_INTEGRIERTE_SYSTEMTECHNIK                                             BACnetVendorId = 296
@@ -1689,6 +1689,14 @@ const (
 	BACnetVendorId_CORE_CONTROLS_AILLC                                                          BACnetVendorId = 1654
 	BACnetVendorId_MODUTROL_PTY_LTD                                                             BACnetVendorId = 1655
 	BACnetVendorId_KAESER_KOMPRESSORENSE                                                        BACnetVendorId = 1656
+	BACnetVendorId_CUNNECT_GMBH                                                                 BACnetVendorId = 1657
+	BACnetVendorId_BENNETT_AUTOMATIONLLC                                                        BACnetVendorId = 1658
+	BACnetVendorId_LESOPHISTIQUE_TECH_PVT_LTD                                                   BACnetVendorId = 1659
+	BACnetVendorId_EBMPAPSTNEO_GMBH_COKG                                                        BACnetVendorId = 1660
+	BACnetVendorId_AVYANNA_TECH_PVT_LTD                                                         BACnetVendorId = 1661
+	BACnetVendorId_CONTROL_BY_WEB                                                               BACnetVendorId = 1662
+	BACnetVendorId_COOLER_MASTER_CO_LTD                                                         BACnetVendorId = 1663
+	BACnetVendorId_BES_TECH_INC                                                                 BACnetVendorId = 1664
 	BACnetVendorId_UNKNOWN_VENDOR                                                               BACnetVendorId = 0xFFFF
 )
 
@@ -1990,7 +1998,7 @@ func init() {
 		BACnetVendorId_ROMUTEC_STEUERU_REGELSYSTEME_GMBH,
 		BACnetVendorId_PRIBUSIN_INC,
 		BACnetVendorId_ADVANTAGE_CONTROLS,
-		BACnetVendorId_CRITICAL_ROOM_CONTROL,
+		BACnetVendorId_CRC,
 		BACnetVendorId_LEGRAND,
 		BACnetVendorId_TONGDY_CONTROL_TECHNOLOGY_CO_LTD,
 		BACnetVendorId_ISSARO_INTEGRIERTE_SYSTEMTECHNIK,
@@ -3343,6 +3351,14 @@ func init() {
 		BACnetVendorId_CORE_CONTROLS_AILLC,
 		BACnetVendorId_MODUTROL_PTY_LTD,
 		BACnetVendorId_KAESER_KOMPRESSORENSE,
+		BACnetVendorId_CUNNECT_GMBH,
+		BACnetVendorId_BENNETT_AUTOMATIONLLC,
+		BACnetVendorId_LESOPHISTIQUE_TECH_PVT_LTD,
+		BACnetVendorId_EBMPAPSTNEO_GMBH_COKG,
+		BACnetVendorId_AVYANNA_TECH_PVT_LTD,
+		BACnetVendorId_CONTROL_BY_WEB,
+		BACnetVendorId_COOLER_MASTER_CO_LTD,
+		BACnetVendorId_BES_TECH_INC,
 		BACnetVendorId_UNKNOWN_VENDOR,
 	}
 }
@@ -6261,10 +6277,42 @@ func (e BACnetVendorId) VendorId() uint16 {
 		{ /* '1656' */
 			return 1656
 		}
+	case 1657:
+		{ /* '1657' */
+			return 1657
+		}
+	case 1658:
+		{ /* '1658' */
+			return 1658
+		}
+	case 1659:
+		{ /* '1659' */
+			return 1659
+		}
 	case 166:
 		{ /* '166' */
 			return 166
 		}
+	case 1660:
+		{ /* '1660' */
+			return 1660
+		}
+	case 1661:
+		{ /* '1661' */
+			return 1661
+		}
+	case 1662:
+		{ /* '1662' */
+			return 1662
+		}
+	case 1663:
+		{ /* '1663' */
+			return 1663
+		}
+	case 1664:
+		{ /* '1664' */
+			return 1664
+		}
 	case 167:
 		{ /* '167' */
 			return 167
@@ -12867,10 +12915,42 @@ func (e BACnetVendorId) VendorName() string {
 		{ /* '1656' */
 			return "Kaeser Kompressoren SE"
 		}
+	case 1657:
+		{ /* '1657' */
+			return "cunnect GmbH"
+		}
+	case 1658:
+		{ /* '1658' */
+			return "Bennett Automation, LLC"
+		}
+	case 1659:
+		{ /* '1659' */
+			return "Lesophistique Tech Pvt Ltd"
+		}
 	case 166:
 		{ /* '166' */
 			return "Cooper Controls"
 		}
+	case 1660:
+		{ /* '1660' */
+			return "Ebm-papst neo GmbH & Co. KG"
+		}
+	case 1661:
+		{ /* '1661' */
+			return "Avyanna Tech Pvt Ltd"
+		}
+	case 1662:
+		{ /* '1662' */
+			return "ControlByWeb"
+		}
+	case 1663:
+		{ /* '1663' */
+			return "Cooler Master Co., Ltd."
+		}
+	case 1664:
+		{ /* '1664' */
+			return "Bes-Tech, Inc."
+		}
 	case 167:
 		{ /* '167' */
 			return "Duksan Mecasys Co., Ltd."
@@ -13433,7 +13513,7 @@ func (e BACnetVendorId) VendorName() string {
 		}
 	case 293:
 		{ /* '293' */
-			return "Critical Room Control"
+			return "CRC"
 		}
 	case 294:
 		{ /* '294' */
@@ -18016,8 +18096,24 @@ func BACnetVendorIdByValue(value uint16) (enum BACnetVendorId, ok bool) {
 		return BACnetVendorId_MODUTROL_PTY_LTD, true
 	case 1656:
 		return BACnetVendorId_KAESER_KOMPRESSORENSE, true
+	case 1657:
+		return BACnetVendorId_CUNNECT_GMBH, true
+	case 1658:
+		return BACnetVendorId_BENNETT_AUTOMATIONLLC, true
+	case 1659:
+		return BACnetVendorId_LESOPHISTIQUE_TECH_PVT_LTD, true
 	case 166:
 		return BACnetVendorId_COOPER_CONTROLS, true
+	case 1660:
+		return BACnetVendorId_EBMPAPSTNEO_GMBH_COKG, true
+	case 1661:
+		return BACnetVendorId_AVYANNA_TECH_PVT_LTD, true
+	case 1662:
+		return BACnetVendorId_CONTROL_BY_WEB, true
+	case 1663:
+		return BACnetVendorId_COOLER_MASTER_CO_LTD, true
+	case 1664:
+		return BACnetVendorId_BES_TECH_INC, true
 	case 167:
 		return BACnetVendorId_DUKSAN_MECASYS_CO_LTD, true
 	case 168:
@@ -18299,7 +18395,7 @@ func BACnetVendorIdByValue(value uint16) (enum BACnetVendorId, ok bool) {
 	case 292:
 		return BACnetVendorId_ADVANTAGE_CONTROLS, true
 	case 293:
-		return BACnetVendorId_CRITICAL_ROOM_CONTROL, true
+		return BACnetVendorId_CRC, true
 	case 294:
 		return BACnetVendorId_LEGRAND, true
 	case 295:
@@ -21316,8 +21412,24 @@ func BACnetVendorIdByName(value string) (enum BACnetVendorId, ok bool) {
 		return BACnetVendorId_MODUTROL_PTY_LTD, true
 	case "KAESER_KOMPRESSORENSE":
 		return BACnetVendorId_KAESER_KOMPRESSORENSE, true
+	case "CUNNECT_GMBH":
+		return BACnetVendorId_CUNNECT_GMBH, true
+	case "BENNETT_AUTOMATIONLLC":
+		return BACnetVendorId_BENNETT_AUTOMATIONLLC, true
+	case "LESOPHISTIQUE_TECH_PVT_LTD":
+		return BACnetVendorId_LESOPHISTIQUE_TECH_PVT_LTD, true
 	case "COOPER_CONTROLS":
 		return BACnetVendorId_COOPER_CONTROLS, true
+	case "EBMPAPSTNEO_GMBH_COKG":
+		return BACnetVendorId_EBMPAPSTNEO_GMBH_COKG, true
+	case "AVYANNA_TECH_PVT_LTD":
+		return BACnetVendorId_AVYANNA_TECH_PVT_LTD, true
+	case "CONTROL_BY_WEB":
+		return BACnetVendorId_CONTROL_BY_WEB, true
+	case "COOLER_MASTER_CO_LTD":
+		return BACnetVendorId_COOLER_MASTER_CO_LTD, true
+	case "BES_TECH_INC":
+		return BACnetVendorId_BES_TECH_INC, true
 	case "DUKSAN_MECASYS_CO_LTD":
 		return BACnetVendorId_DUKSAN_MECASYS_CO_LTD, true
 	case "FUJIIT_CO_LTD":
@@ -21598,8 +21710,8 @@ func BACnetVendorIdByName(value string) (enum BACnetVendorId, ok bool) {
 		return BACnetVendorId_PRIBUSIN_INC, true
 	case "ADVANTAGE_CONTROLS":
 		return BACnetVendorId_ADVANTAGE_CONTROLS, true
-	case "CRITICAL_ROOM_CONTROL":
-		return BACnetVendorId_CRITICAL_ROOM_CONTROL, true
+	case "CRC":
+		return BACnetVendorId_CRC, true
 	case "LEGRAND":
 		return BACnetVendorId_LEGRAND, true
 	case "TONGDY_CONTROL_TECHNOLOGY_CO_LTD":
@@ -24688,8 +24800,24 @@ func (e BACnetVendorId) PLC4XEnumName() string {
 		return "MODUTROL_PTY_LTD"
 	case BACnetVendorId_KAESER_KOMPRESSORENSE:
 		return "KAESER_KOMPRESSORENSE"
+	case BACnetVendorId_CUNNECT_GMBH:
+		return "CUNNECT_GMBH"
+	case BACnetVendorId_BENNETT_AUTOMATIONLLC:
+		return "BENNETT_AUTOMATIONLLC"
+	case BACnetVendorId_LESOPHISTIQUE_TECH_PVT_LTD:
+		return "LESOPHISTIQUE_TECH_PVT_LTD"
 	case BACnetVendorId_COOPER_CONTROLS:
 		return "COOPER_CONTROLS"
+	case BACnetVendorId_EBMPAPSTNEO_GMBH_COKG:
+		return "EBMPAPSTNEO_GMBH_COKG"
+	case BACnetVendorId_AVYANNA_TECH_PVT_LTD:
+		return "AVYANNA_TECH_PVT_LTD"
+	case BACnetVendorId_CONTROL_BY_WEB:
+		return "CONTROL_BY_WEB"
+	case BACnetVendorId_COOLER_MASTER_CO_LTD:
+		return "COOLER_MASTER_CO_LTD"
+	case BACnetVendorId_BES_TECH_INC:
+		return "BES_TECH_INC"
 	case BACnetVendorId_DUKSAN_MECASYS_CO_LTD:
 		return "DUKSAN_MECASYS_CO_LTD"
 	case BACnetVendorId_FUJIIT_CO_LTD:
@@ -24970,8 +25098,8 @@ func (e BACnetVendorId) PLC4XEnumName() string {
 		return "PRIBUSIN_INC"
 	case BACnetVendorId_ADVANTAGE_CONTROLS:
 		return "ADVANTAGE_CONTROLS"
-	case BACnetVendorId_CRITICAL_ROOM_CONTROL:
-		return "CRITICAL_ROOM_CONTROL"
+	case BACnetVendorId_CRC:
+		return "CRC"
 	case BACnetVendorId_LEGRAND:
 		return "LEGRAND"
 	case BACnetVendorId_TONGDY_CONTROL_TECHNOLOGY_CO_LTD:
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java
index 799cad7e40..1291ff6c0f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java
@@ -611,7 +611,7 @@ public enum BACnetVendorId {
 
   ADVANTAGE_CONTROLS((int) 292, (int) 292, "Advantage Controls"),
 
-  CRITICAL_ROOM_CONTROL((int) 293, (int) 293, "Critical Room Control"),
+  CRC((int) 293, (int) 293, "CRC"),
 
   LEGRAND((int) 294, (int) 294, "LEGRAND"),
 
@@ -3317,6 +3317,22 @@ public enum BACnetVendorId {
 
   KAESER_KOMPRESSORENSE((int) 1656, (int) 1656, "Kaeser Kompressoren SE"),
 
+  CUNNECT_GMBH((int) 1657, (int) 1657, "cunnect GmbH"),
+
+  BENNETT_AUTOMATIONLLC((int) 1658, (int) 1658, "Bennett Automation, LLC"),
+
+  LESOPHISTIQUE_TECH_PVT_LTD((int) 1659, (int) 1659, "Lesophistique Tech Pvt Ltd"),
+
+  EBMPAPSTNEO_GMBH_COKG((int) 1660, (int) 1660, "Ebm-papst neo GmbH & Co. KG"),
+
+  AVYANNA_TECH_PVT_LTD((int) 1661, (int) 1661, "Avyanna Tech Pvt Ltd"),
+
+  CONTROL_BY_WEB((int) 1662, (int) 1662, "ControlByWeb"),
+
+  COOLER_MASTER_CO_LTD((int) 1663, (int) 1663, "Cooler Master Co., Ltd."),
+
+  BES_TECH_INC((int) 1664, (int) 1664, "Bes-Tech, Inc."),
+
   UNKNOWN_VENDOR((int) 0xFFFF, (int) 0xFFFF, "Unknown");
 
   private static final Map<Integer, BACnetVendorId> map;
diff --git a/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-vendorids.mspec b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-vendorids.mspec
index f573861e4e..426c51659b 100644
--- a/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-vendorids.mspec
+++ b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-vendorids.mspec
@@ -314,7 +314,7 @@
   ['290' ROMUTEC_STEUERU_REGELSYSTEME_GMBH ['290', '"Romutec Steuer-u. Regelsysteme GmbH"']]
   ['291' PRIBUSIN_INC ['291', '"Pribusin, Inc."']]
   ['292' ADVANTAGE_CONTROLS ['292', '"Advantage Controls"']]
-  ['293' CRITICAL_ROOM_CONTROL ['293', '"Critical Room Control"']]
+  ['293' CRC ['293', '"CRC"']]
   ['294' LEGRAND ['294', '"LEGRAND"']]
   ['295' TONGDY_CONTROL_TECHNOLOGY_CO_LTD ['295', '"Tongdy Control Technology Co., Ltd."']]
   ['296' ISSARO_INTEGRIERTE_SYSTEMTECHNIK ['296', '"ISSARO Integrierte Systemtechnik"']]
@@ -1667,6 +1667,14 @@
   ['1654' CORE_CONTROLS_AILLC ['1654', '"CoreControlsAi, LLC"']]
   ['1655' MODUTROL_PTY_LTD ['1655', '"Modutrol Pty Ltd"']]
   ['1656' KAESER_KOMPRESSORENSE ['1656', '"Kaeser Kompressoren SE"']]
+  ['1657' CUNNECT_GMBH ['1657', '"cunnect GmbH"']]
+  ['1658' BENNETT_AUTOMATIONLLC ['1658', '"Bennett Automation, LLC"']]
+  ['1659' LESOPHISTIQUE_TECH_PVT_LTD ['1659', '"Lesophistique Tech Pvt Ltd"']]
+  ['1660' EBMPAPSTNEO_GMBH_COKG ['1660', '"Ebm-papst neo GmbH & Co. KG"']]
+  ['1661' AVYANNA_TECH_PVT_LTD ['1661', '"Avyanna Tech Pvt Ltd"']]
+  ['1662' CONTROL_BY_WEB ['1662', '"ControlByWeb"']]
+  ['1663' COOLER_MASTER_CO_LTD ['1663', '"Cooler Master Co., Ltd."']]
+  ['1664' BES_TECH_INC ['1664', '"Bes-Tech, Inc."']]
  
   ['0xFFFF' UNKNOWN_VENDOR ['0xFFFF', '"Unknown"']]
 ]


(plc4x) 03/03: fix: Hopefully resolved the issues with the python build.

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

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

commit 74e4e71972923e1dd5faa81659d099aba288cdde
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sun Sep 20 22:29:14 2026 +0200

    fix: Hopefully resolved the issues with the python build.
---
 .../python/complex-type-template.python.ftlh       | 25 ++++++++++++++++++++++
 .../plc4py/protocols/modbus/readwrite/ModbusPDU.py |  4 ++++
 .../plc4py/protocols/umas/readwrite/ModbusPDU.py   |  2 ++
 .../plc4py/protocols/umas/readwrite/UmasPDUItem.py |  2 ++
 4 files changed, 33 insertions(+)

diff --git a/code-generation/language/python/src/main/resources/templates/python/complex-type-template.python.ftlh b/code-generation/language/python/src/main/resources/templates/python/complex-type-template.python.ftlh
index 10a98c6a29..8c677faa77 100644
--- a/code-generation/language/python/src/main/resources/templates/python/complex-type-template.python.ftlh
+++ b/code-generation/language/python/src/main/resources/templates/python/complex-type-template.python.ftlh
@@ -732,6 +732,24 @@ class ${type.name}<#if type.isDiscriminatedParentTypeDefinition()></#if>(<#if ty
 
         # Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
         builder: ${type.name}Builder = None
+                <#-- A case that does not pin a discriminator down to a value inherits whatever was read
+                     from the wire. Collect those here and hand them to the instance after it was built,
+                     the same way the Java code-generator retains them. -->
+                <#assign retainedDiscriminatorNames=[]>
+                <#list switchField.cases as case>
+                    <#list switchField.discriminatorExpressions as discriminatorExpression>
+                        <#assign discriminatorName=discriminatorExpression.asLiteral().orElseThrow().asVariableLiteral().orElseThrow().discriminatorName>
+                        <#if type.isDiscriminatorField(discriminatorName) && !case.isNonDiscriminatorField(discriminatorName)
+                             && (!(case.discriminatorValueTerms?size > discriminatorExpression?index) || helper.isWildcard(case.discriminatorValueTerms[discriminatorExpression?index]))>
+                            <#if !retainedDiscriminatorNames?seq_contains(discriminatorName)>
+                                <#assign retainedDiscriminatorNames=retainedDiscriminatorNames + [discriminatorName]>
+                            </#if>
+                        </#if>
+                    </#list>
+                </#list>
+                <#list retainedDiscriminatorNames as retainedDiscriminatorName>
+        _retained_${helper.camelCaseToSnakeCase(retainedDiscriminatorName)} = ${helper.camelCaseToSnakeCase(retainedDiscriminatorName)}
+                </#list>
                 <#list switchField.cases as case>
                     <#if case.discriminatorValueTerms?has_content>
         from plc4py.protocols.${protocolName}.${outputFlavor?replace('-', '')}.${case.name} import ${case.name}
@@ -824,6 +842,13 @@ class ${type.name}<#if type.isDiscriminatedParentTypeDefinition()></#if>(<#if ty
         <#list reservedFields as reservedField>
         _${helper.camelCaseToSnakeCase(type.name)}.reserved_field${reservedField?index} = reserved_field_${reservedField?index}
         </#list>
+        <#-- Discriminators the chosen sub-type does not pin down keep the value read from the wire,
+             instead of the sub-type's placeholder default. -->
+        <#if retainedDiscriminatorNames??>
+            <#list retainedDiscriminatorNames as retainedDiscriminatorName>
+        _${helper.camelCaseToSnakeCase(type.name)}.${helper.camelCaseToSnakeCase(retainedDiscriminatorName)} = _retained_${helper.camelCaseToSnakeCase(retainedDiscriminatorName)}
+            </#list>
+        </#if>
         return _${helper.camelCaseToSnakeCase(type.name)}
     <#else>
         _${helper.camelCaseToSnakeCase(type.name)}: ${type.name} = ${type.name}(<@compress single_line=true>
diff --git a/plc4py/plc4py/protocols/modbus/readwrite/ModbusPDU.py b/plc4py/plc4py/protocols/modbus/readwrite/ModbusPDU.py
index e03ec11f67..34cc848ec3 100644
--- a/plc4py/plc4py/protocols/modbus/readwrite/ModbusPDU.py
+++ b/plc4py/plc4py/protocols/modbus/readwrite/ModbusPDU.py
@@ -122,6 +122,8 @@ class ModbusPDU(ABC, PlcMessage):
 
         # Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
         builder: ModbusPDUBuilder = None
+        _retained_function_flag = function_flag
+        _retained_response = response
         from plc4py.protocols.modbus.readwrite.ModbusPDUError import ModbusPDUError
 
         if error_flag == bool(True):
@@ -647,6 +649,8 @@ class ModbusPDU(ABC, PlcMessage):
         read_buffer.pop_context("ModbusPDU")
         # Create the instance
         _modbus_pdu: ModbusPDU = builder.build()
+        _modbus_pdu.function_flag = _retained_function_flag
+        _modbus_pdu.response = _retained_response
         return _modbus_pdu
 
     def equals(self, o: object) -> bool:
diff --git a/plc4py/plc4py/protocols/umas/readwrite/ModbusPDU.py b/plc4py/plc4py/protocols/umas/readwrite/ModbusPDU.py
index 6c10ec76d6..3530557383 100644
--- a/plc4py/plc4py/protocols/umas/readwrite/ModbusPDU.py
+++ b/plc4py/plc4py/protocols/umas/readwrite/ModbusPDU.py
@@ -145,6 +145,7 @@ class ModbusPDU(ABC, PlcMessage):
 
         # Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
         builder: ModbusPDUBuilder = None
+        _retained_function_flag = function_flag
         from plc4py.protocols.umas.readwrite.ModbusPDUError import ModbusPDUError
 
         if error_flag == bool(True):
@@ -174,6 +175,7 @@ class ModbusPDU(ABC, PlcMessage):
         read_buffer.pop_context("ModbusPDU")
         # Create the instance
         _modbus_pdu: ModbusPDU = builder.build(umas_request_function_key, byte_length)
+        _modbus_pdu.function_flag = _retained_function_flag
         return _modbus_pdu
 
     def equals(self, o: object) -> bool:
diff --git a/plc4py/plc4py/protocols/umas/readwrite/UmasPDUItem.py b/plc4py/plc4py/protocols/umas/readwrite/UmasPDUItem.py
index f12e9cc73f..b4d132e8cd 100644
--- a/plc4py/plc4py/protocols/umas/readwrite/UmasPDUItem.py
+++ b/plc4py/plc4py/protocols/umas/readwrite/UmasPDUItem.py
@@ -153,6 +153,7 @@ class UmasPDUItem(ABC, PlcMessage):
 
         # Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
         builder: UmasPDUItemBuilder = None
+        _retained_umas_request_function_key = umas_request_function_key
         from plc4py.protocols.umas.readwrite.UmasInitCommsRequest import (
             UmasInitCommsRequest,
         )
@@ -312,6 +313,7 @@ class UmasPDUItem(ABC, PlcMessage):
         read_buffer.pop_context("UmasPDUItem")
         # Create the instance
         _umas_pduitem: UmasPDUItem = builder.build(pairing_key, byte_length)
+        _umas_pduitem.umas_request_function_key = _retained_umas_request_function_key
         return _umas_pduitem
 
     def equals(self, o: object) -> bool: