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/05/10 14:42:50 UTC

[plc4x] branch develop updated: feat(bacnet): introduced BACnetUnconfirmedServiceChoice enum

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 d5d7a1eab5 feat(bacnet): introduced BACnetUnconfirmedServiceChoice enum
d5d7a1eab5 is described below

commit d5d7a1eab5286884d3992739403195b819fb1e0c
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue May 10 16:42:44 2022 +0200

    feat(bacnet): introduced BACnetUnconfirmedServiceChoice enum
    
    + clean up of BACnetUnconfirmedServiceRequest
---
 .../protocols/bacnet/ParserSerializerTestsuite.xml | 114 +++++++++---
 .../model/BACnetUnconfirmedServiceChoice.go        | 201 +++++++++++++++++++++
 .../model/BACnetUnconfirmedServiceRequest.go       |  45 +++--
 .../model/BACnetUnconfirmedServiceRequestIAm.go    |   4 +-
 .../model/BACnetUnconfirmedServiceRequestIHave.go  |   4 +-
 ...UnconfirmedServiceRequestTimeSynchronization.go |   4 +-
 ...onfirmedServiceRequestUTCTimeSynchronization.go |   4 +-
 ...rmedServiceRequestUnconfirmedCOVNotification.go |   4 +-
 ...iceRequestUnconfirmedCOVNotificationMultiple.go |   4 +-
 ...edServiceRequestUnconfirmedEventNotification.go |   4 +-
 ...rmedServiceRequestUnconfirmedPrivateTransfer.go |   4 +-
 ...onfirmedServiceRequestUnconfirmedTextMessage.go |   4 +-
 ...tUnconfirmedServiceRequestUnconfirmedUnknown.go |   2 +-
 .../model/BACnetUnconfirmedServiceRequestWhoHas.go |   4 +-
 .../model/BACnetUnconfirmedServiceRequestWhoIs.go  |   4 +-
 .../BACnetUnconfirmedServiceRequestWriteGroup.go   |   4 +-
 .../plc4x/java/bacnetip/RandomPackagesTest.java    |   4 +-
 .../resources/protocols/bacnetip/bacnetip.mspec    |  46 +++--
 .../protocols/bacnet/ParserSerializerTestsuite.xml | 112 +++++++++---
 19 files changed, 459 insertions(+), 113 deletions(-)

diff --git a/plc4go/assets/testing/protocols/bacnet/ParserSerializerTestsuite.xml b/plc4go/assets/testing/protocols/bacnet/ParserSerializerTestsuite.xml
index 68afbb46e8..984e70161a 100644
--- a/plc4go/assets/testing/protocols/bacnet/ParserSerializerTestsuite.xml
+++ b/plc4go/assets/testing/protocols/bacnet/ParserSerializerTestsuite.xml
@@ -112,7 +112,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">7</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_HAS">7</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoHas>
                           <objectName>
                             <BACnetContextTag>
@@ -188,7 +190,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">1</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_HAVE">1</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIHave>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -309,7 +313,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">7</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_HAS">7</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoHas>
                           <objectIdentifier>
                             <BACnetContextTag>
@@ -385,7 +391,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">1</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_HAVE">1</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIHave>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -506,7 +514,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">6</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="TIME_SYNCHRONIZATION">6</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestTimeSynchronization>
                           <synchronizedDate>
                             <BACnetApplicationTag>
@@ -607,7 +617,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -705,7 +717,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -2942,7 +2956,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -3040,7 +3056,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -3386,7 +3404,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -3484,7 +3504,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -3825,7 +3847,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -3923,7 +3947,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -4264,7 +4290,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -4362,7 +4390,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -5013,7 +5043,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">2</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="UNCONFIRMED_COV_NOTIFICATION">2</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification>
                           <subscriberProcessIdentifier>
                             <BACnetContextTag>
@@ -5268,7 +5300,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -5366,7 +5400,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -5762,7 +5798,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -5860,7 +5898,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -6166,7 +6206,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -6264,7 +6306,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -6616,7 +6660,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -7216,7 +7262,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -7734,7 +7782,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -7877,7 +7927,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">6</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="TIME_SYNCHRONIZATION">6</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestTimeSynchronization>
                           <synchronizedDate>
                             <BACnetApplicationTag>
@@ -7981,7 +8033,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">7</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_HAS">7</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoHas>
                           <objectIdentifier>
                             <BACnetContextTag>
@@ -8057,7 +8111,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">1</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_HAVE">1</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIHave>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -10147,7 +10203,7 @@ Test "BACnet Applicat</value>
               </destinationAddress>
               <sourceNetworkAddress dataType="uint" bitLength="16">13</sourceNetworkAddress>
               <sourceLength dataType="uint" bitLength="8">1</sourceLength>
-              <sourceAddress isList="true">BACnetConfirmedServiceRequest
+              <sourceAddress isList="true">
                 <value dataType="uint" bitLength="8">61</value>
               </sourceAddress>
               <apdu>
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceChoice.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceChoice.go
new file mode 100644
index 0000000000..913080f45a
--- /dev/null
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceChoice.go
@@ -0,0 +1,201 @@
+/*
+ * 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.
+
+type BACnetUnconfirmedServiceChoice uint8
+
+type IBACnetUnconfirmedServiceChoice interface {
+	Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+const (
+	BACnetUnconfirmedServiceChoice_I_AM                                  BACnetUnconfirmedServiceChoice = 0x00
+	BACnetUnconfirmedServiceChoice_I_HAVE                                BACnetUnconfirmedServiceChoice = 0x01
+	BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION          BACnetUnconfirmedServiceChoice = 0x02
+	BACnetUnconfirmedServiceChoice_UNCONFIRMED_EVENT_NOTIFICATION        BACnetUnconfirmedServiceChoice = 0x03
+	BACnetUnconfirmedServiceChoice_UNCONFIRMED_PRIVATE_TRANSFER          BACnetUnconfirmedServiceChoice = 0x04
+	BACnetUnconfirmedServiceChoice_UNCONFIRMED_TEXT_MESSAGE              BACnetUnconfirmedServiceChoice = 0x05
+	BACnetUnconfirmedServiceChoice_TIME_SYNCHRONIZATION                  BACnetUnconfirmedServiceChoice = 0x06
+	BACnetUnconfirmedServiceChoice_WHO_HAS                               BACnetUnconfirmedServiceChoice = 0x07
+	BACnetUnconfirmedServiceChoice_WHO_IS                                BACnetUnconfirmedServiceChoice = 0x08
+	BACnetUnconfirmedServiceChoice_UTC_TIME_SYNCHRONIZATION              BACnetUnconfirmedServiceChoice = 0x09
+	BACnetUnconfirmedServiceChoice_WRITE_GROUP                           BACnetUnconfirmedServiceChoice = 0x0A
+	BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION_MULTIPLE BACnetUnconfirmedServiceChoice = 0x0B
+)
+
+var BACnetUnconfirmedServiceChoiceValues []BACnetUnconfirmedServiceChoice
+
+func init() {
+	_ = errors.New
+	BACnetUnconfirmedServiceChoiceValues = []BACnetUnconfirmedServiceChoice{
+		BACnetUnconfirmedServiceChoice_I_AM,
+		BACnetUnconfirmedServiceChoice_I_HAVE,
+		BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION,
+		BACnetUnconfirmedServiceChoice_UNCONFIRMED_EVENT_NOTIFICATION,
+		BACnetUnconfirmedServiceChoice_UNCONFIRMED_PRIVATE_TRANSFER,
+		BACnetUnconfirmedServiceChoice_UNCONFIRMED_TEXT_MESSAGE,
+		BACnetUnconfirmedServiceChoice_TIME_SYNCHRONIZATION,
+		BACnetUnconfirmedServiceChoice_WHO_HAS,
+		BACnetUnconfirmedServiceChoice_WHO_IS,
+		BACnetUnconfirmedServiceChoice_UTC_TIME_SYNCHRONIZATION,
+		BACnetUnconfirmedServiceChoice_WRITE_GROUP,
+		BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION_MULTIPLE,
+	}
+}
+
+func BACnetUnconfirmedServiceChoiceByValue(value uint8) BACnetUnconfirmedServiceChoice {
+	switch value {
+	case 0x00:
+		return BACnetUnconfirmedServiceChoice_I_AM
+	case 0x01:
+		return BACnetUnconfirmedServiceChoice_I_HAVE
+	case 0x02:
+		return BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION
+	case 0x03:
+		return BACnetUnconfirmedServiceChoice_UNCONFIRMED_EVENT_NOTIFICATION
+	case 0x04:
+		return BACnetUnconfirmedServiceChoice_UNCONFIRMED_PRIVATE_TRANSFER
+	case 0x05:
+		return BACnetUnconfirmedServiceChoice_UNCONFIRMED_TEXT_MESSAGE
+	case 0x06:
+		return BACnetUnconfirmedServiceChoice_TIME_SYNCHRONIZATION
+	case 0x07:
+		return BACnetUnconfirmedServiceChoice_WHO_HAS
+	case 0x08:
+		return BACnetUnconfirmedServiceChoice_WHO_IS
+	case 0x09:
+		return BACnetUnconfirmedServiceChoice_UTC_TIME_SYNCHRONIZATION
+	case 0x0A:
+		return BACnetUnconfirmedServiceChoice_WRITE_GROUP
+	case 0x0B:
+		return BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION_MULTIPLE
+	}
+	return 0
+}
+
+func BACnetUnconfirmedServiceChoiceByName(value string) BACnetUnconfirmedServiceChoice {
+	switch value {
+	case "I_AM":
+		return BACnetUnconfirmedServiceChoice_I_AM
+	case "I_HAVE":
+		return BACnetUnconfirmedServiceChoice_I_HAVE
+	case "UNCONFIRMED_COV_NOTIFICATION":
+		return BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION
+	case "UNCONFIRMED_EVENT_NOTIFICATION":
+		return BACnetUnconfirmedServiceChoice_UNCONFIRMED_EVENT_NOTIFICATION
+	case "UNCONFIRMED_PRIVATE_TRANSFER":
+		return BACnetUnconfirmedServiceChoice_UNCONFIRMED_PRIVATE_TRANSFER
+	case "UNCONFIRMED_TEXT_MESSAGE":
+		return BACnetUnconfirmedServiceChoice_UNCONFIRMED_TEXT_MESSAGE
+	case "TIME_SYNCHRONIZATION":
+		return BACnetUnconfirmedServiceChoice_TIME_SYNCHRONIZATION
+	case "WHO_HAS":
+		return BACnetUnconfirmedServiceChoice_WHO_HAS
+	case "WHO_IS":
+		return BACnetUnconfirmedServiceChoice_WHO_IS
+	case "UTC_TIME_SYNCHRONIZATION":
+		return BACnetUnconfirmedServiceChoice_UTC_TIME_SYNCHRONIZATION
+	case "WRITE_GROUP":
+		return BACnetUnconfirmedServiceChoice_WRITE_GROUP
+	case "UNCONFIRMED_COV_NOTIFICATION_MULTIPLE":
+		return BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION_MULTIPLE
+	}
+	return 0
+}
+
+func BACnetUnconfirmedServiceChoiceKnows(value uint8) bool {
+	for _, typeValue := range BACnetUnconfirmedServiceChoiceValues {
+		if uint8(typeValue) == value {
+			return true
+		}
+	}
+	return false
+}
+
+func CastBACnetUnconfirmedServiceChoice(structType interface{}) BACnetUnconfirmedServiceChoice {
+	castFunc := func(typ interface{}) BACnetUnconfirmedServiceChoice {
+		if sBACnetUnconfirmedServiceChoice, ok := typ.(BACnetUnconfirmedServiceChoice); ok {
+			return sBACnetUnconfirmedServiceChoice
+		}
+		return 0
+	}
+	return castFunc(structType)
+}
+
+func (m BACnetUnconfirmedServiceChoice) GetLengthInBits() uint16 {
+	return 8
+}
+
+func (m BACnetUnconfirmedServiceChoice) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func BACnetUnconfirmedServiceChoiceParse(readBuffer utils.ReadBuffer) (BACnetUnconfirmedServiceChoice, error) {
+	val, err := readBuffer.ReadUint8("BACnetUnconfirmedServiceChoice", 8)
+	if err != nil {
+		return 0, nil
+	}
+	return BACnetUnconfirmedServiceChoiceByValue(val), nil
+}
+
+func (e BACnetUnconfirmedServiceChoice) Serialize(writeBuffer utils.WriteBuffer) error {
+	return writeBuffer.WriteUint8("BACnetUnconfirmedServiceChoice", 8, uint8(e), utils.WithAdditionalStringRepresentation(e.name()))
+}
+
+func (e BACnetUnconfirmedServiceChoice) name() string {
+	switch e {
+	case BACnetUnconfirmedServiceChoice_I_AM:
+		return "I_AM"
+	case BACnetUnconfirmedServiceChoice_I_HAVE:
+		return "I_HAVE"
+	case BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION:
+		return "UNCONFIRMED_COV_NOTIFICATION"
+	case BACnetUnconfirmedServiceChoice_UNCONFIRMED_EVENT_NOTIFICATION:
+		return "UNCONFIRMED_EVENT_NOTIFICATION"
+	case BACnetUnconfirmedServiceChoice_UNCONFIRMED_PRIVATE_TRANSFER:
+		return "UNCONFIRMED_PRIVATE_TRANSFER"
+	case BACnetUnconfirmedServiceChoice_UNCONFIRMED_TEXT_MESSAGE:
+		return "UNCONFIRMED_TEXT_MESSAGE"
+	case BACnetUnconfirmedServiceChoice_TIME_SYNCHRONIZATION:
+		return "TIME_SYNCHRONIZATION"
+	case BACnetUnconfirmedServiceChoice_WHO_HAS:
+		return "WHO_HAS"
+	case BACnetUnconfirmedServiceChoice_WHO_IS:
+		return "WHO_IS"
+	case BACnetUnconfirmedServiceChoice_UTC_TIME_SYNCHRONIZATION:
+		return "UTC_TIME_SYNCHRONIZATION"
+	case BACnetUnconfirmedServiceChoice_WRITE_GROUP:
+		return "WRITE_GROUP"
+	case BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION_MULTIPLE:
+		return "UNCONFIRMED_COV_NOTIFICATION_MULTIPLE"
+	}
+	return ""
+}
+
+func (e BACnetUnconfirmedServiceChoice) String() string {
+	return e.name()
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
index cabd871fd0..c73b7413ad 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
@@ -37,7 +37,7 @@ type BACnetUnconfirmedServiceRequest struct {
 // IBACnetUnconfirmedServiceRequest is the corresponding interface of BACnetUnconfirmedServiceRequest
 type IBACnetUnconfirmedServiceRequest interface {
 	// GetServiceChoice returns ServiceChoice (discriminator field)
-	GetServiceChoice() uint8
+	GetServiceChoice() BACnetUnconfirmedServiceChoice
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -110,7 +110,14 @@ func BACnetUnconfirmedServiceRequestParse(readBuffer utils.ReadBuffer, serviceRe
 	_ = currentPos
 
 	// Discriminator Field (serviceChoice) (Used as input to a switch field)
-	serviceChoice, _serviceChoiceErr := readBuffer.ReadUint8("serviceChoice", 8)
+	if pullErr := readBuffer.PullContext("serviceChoice"); pullErr != nil {
+		return nil, pullErr
+	}
+	serviceChoice_temp, _serviceChoiceErr := BACnetUnconfirmedServiceChoiceParse(readBuffer)
+	var serviceChoice BACnetUnconfirmedServiceChoice = serviceChoice_temp
+	if closeErr := readBuffer.CloseContext("serviceChoice"); closeErr != nil {
+		return nil, closeErr
+	}
 	if _serviceChoiceErr != nil {
 		return nil, errors.Wrap(_serviceChoiceErr, "Error parsing 'serviceChoice' field")
 	}
@@ -123,29 +130,29 @@ func BACnetUnconfirmedServiceRequestParse(readBuffer utils.ReadBuffer, serviceRe
 	var _child BACnetUnconfirmedServiceRequestChild
 	var typeSwitchError error
 	switch {
-	case serviceChoice == 0x00: // BACnetUnconfirmedServiceRequestIAm
+	case serviceChoice == BACnetUnconfirmedServiceChoice_I_AM: // BACnetUnconfirmedServiceRequestIAm
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestIAmParse(readBuffer, serviceRequestLength)
-	case serviceChoice == 0x01: // BACnetUnconfirmedServiceRequestIHave
+	case serviceChoice == BACnetUnconfirmedServiceChoice_I_HAVE: // BACnetUnconfirmedServiceRequestIHave
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestIHaveParse(readBuffer, serviceRequestLength)
-	case serviceChoice == 0x02: // BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification
+	case serviceChoice == BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION: // BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationParse(readBuffer, serviceRequestLength)
-	case serviceChoice == 0x03: // BACnetUnconfirmedServiceRequestUnconfirmedEventNotification
+	case serviceChoice == BACnetUnconfirmedServiceChoice_UNCONFIRMED_EVENT_NOTIFICATION: // BACnetUnconfirmedServiceRequestUnconfirmedEventNotification
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestUnconfirmedEventNotificationParse(readBuffer, serviceRequestLength)
-	case serviceChoice == 0x04: // BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer
+	case serviceChoice == BACnetUnconfirmedServiceChoice_UNCONFIRMED_PRIVATE_TRANSFER: // BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransferParse(readBuffer, serviceRequestLength)
-	case serviceChoice == 0x05: // BACnetUnconfirmedServiceRequestUnconfirmedTextMessage
+	case serviceChoice == BACnetUnconfirmedServiceChoice_UNCONFIRMED_TEXT_MESSAGE: // BACnetUnconfirmedServiceRequestUnconfirmedTextMessage
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestUnconfirmedTextMessageParse(readBuffer, serviceRequestLength)
-	case serviceChoice == 0x06: // BACnetUnconfirmedServiceRequestTimeSynchronization
+	case serviceChoice == BACnetUnconfirmedServiceChoice_TIME_SYNCHRONIZATION: // BACnetUnconfirmedServiceRequestTimeSynchronization
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestTimeSynchronizationParse(readBuffer, serviceRequestLength)
-	case serviceChoice == 0x07: // BACnetUnconfirmedServiceRequestWhoHas
+	case serviceChoice == BACnetUnconfirmedServiceChoice_WHO_HAS: // BACnetUnconfirmedServiceRequestWhoHas
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestWhoHasParse(readBuffer, serviceRequestLength)
-	case serviceChoice == 0x08: // BACnetUnconfirmedServiceRequestWhoIs
+	case serviceChoice == BACnetUnconfirmedServiceChoice_WHO_IS: // BACnetUnconfirmedServiceRequestWhoIs
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestWhoIsParse(readBuffer, serviceRequestLength)
-	case serviceChoice == 0x09: // BACnetUnconfirmedServiceRequestUTCTimeSynchronization
+	case serviceChoice == BACnetUnconfirmedServiceChoice_UTC_TIME_SYNCHRONIZATION: // BACnetUnconfirmedServiceRequestUTCTimeSynchronization
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestUTCTimeSynchronizationParse(readBuffer, serviceRequestLength)
-	case serviceChoice == 0x0A: // BACnetUnconfirmedServiceRequestWriteGroup
+	case serviceChoice == BACnetUnconfirmedServiceChoice_WRITE_GROUP: // BACnetUnconfirmedServiceRequestWriteGroup
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestWriteGroupParse(readBuffer, serviceRequestLength)
-	case serviceChoice == 0x0B: // BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple
+	case serviceChoice == BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION_MULTIPLE: // BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultipleParse(readBuffer, serviceRequestLength)
 	case true: // BACnetUnconfirmedServiceRequestUnconfirmedUnknown
 		_child, typeSwitchError = BACnetUnconfirmedServiceRequestUnconfirmedUnknownParse(readBuffer, serviceRequestLength)
@@ -176,8 +183,14 @@ func (m *BACnetUnconfirmedServiceRequest) SerializeParent(writeBuffer utils.Writ
 	}
 
 	// Discriminator Field (serviceChoice) (Used as input to a switch field)
-	serviceChoice := uint8(child.GetServiceChoice())
-	_serviceChoiceErr := writeBuffer.WriteUint8("serviceChoice", 8, (serviceChoice))
+	serviceChoice := BACnetUnconfirmedServiceChoice(child.GetServiceChoice())
+	if pushErr := writeBuffer.PushContext("serviceChoice"); pushErr != nil {
+		return pushErr
+	}
+	_serviceChoiceErr := serviceChoice.Serialize(writeBuffer)
+	if popErr := writeBuffer.PopContext("serviceChoice"); popErr != nil {
+		return popErr
+	}
 
 	if _serviceChoiceErr != nil {
 		return errors.Wrap(_serviceChoiceErr, "Error serializing 'serviceChoice' field")
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
index f68fcf93c4..0ffa5be81f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
@@ -62,8 +62,8 @@ type IBACnetUnconfirmedServiceRequestIAm interface {
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestIAm) GetServiceChoice() uint8 {
-	return 0x00
+func (m *BACnetUnconfirmedServiceRequestIAm) GetServiceChoice() BACnetUnconfirmedServiceChoice {
+	return BACnetUnconfirmedServiceChoice_I_AM
 }
 
 ///////////////////////
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go
index 03e55050e1..04afdff283 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go
@@ -59,8 +59,8 @@ type IBACnetUnconfirmedServiceRequestIHave interface {
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestIHave) GetServiceChoice() uint8 {
-	return 0x01
+func (m *BACnetUnconfirmedServiceRequestIHave) GetServiceChoice() BACnetUnconfirmedServiceChoice {
+	return BACnetUnconfirmedServiceChoice_I_HAVE
 }
 
 ///////////////////////
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go
index fee5ca47b8..b992346ca3 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go
@@ -56,8 +56,8 @@ type IBACnetUnconfirmedServiceRequestTimeSynchronization interface {
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestTimeSynchronization) GetServiceChoice() uint8 {
-	return 0x06
+func (m *BACnetUnconfirmedServiceRequestTimeSynchronization) GetServiceChoice() BACnetUnconfirmedServiceChoice {
+	return BACnetUnconfirmedServiceChoice_TIME_SYNCHRONIZATION
 }
 
 ///////////////////////
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go
index 67a88c9fb4..331fd588b6 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go
@@ -49,8 +49,8 @@ type IBACnetUnconfirmedServiceRequestUTCTimeSynchronization interface {
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestUTCTimeSynchronization) GetServiceChoice() uint8 {
-	return 0x09
+func (m *BACnetUnconfirmedServiceRequestUTCTimeSynchronization) GetServiceChoice() BACnetUnconfirmedServiceChoice {
+	return BACnetUnconfirmedServiceChoice_UTC_TIME_SYNCHRONIZATION
 }
 
 ///////////////////////
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
index 522e561c81..a985167f68 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
@@ -65,8 +65,8 @@ type IBACnetUnconfirmedServiceRequestUnconfirmedCOVNotification interface {
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) GetServiceChoice() uint8 {
-	return 0x02
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) GetServiceChoice() BACnetUnconfirmedServiceChoice {
+	return BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION
 }
 
 ///////////////////////
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go
index fbab8bdce4..19206fe365 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go
@@ -49,8 +49,8 @@ type IBACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple interfac
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple) GetServiceChoice() uint8 {
-	return 0x0B
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple) GetServiceChoice() BACnetUnconfirmedServiceChoice {
+	return BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION_MULTIPLE
 }
 
 ///////////////////////
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go
index 3f0a28745e..336246ffa0 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go
@@ -49,8 +49,8 @@ type IBACnetUnconfirmedServiceRequestUnconfirmedEventNotification interface {
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestUnconfirmedEventNotification) GetServiceChoice() uint8 {
-	return 0x03
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedEventNotification) GetServiceChoice() BACnetUnconfirmedServiceChoice {
+	return BACnetUnconfirmedServiceChoice_UNCONFIRMED_EVENT_NOTIFICATION
 }
 
 ///////////////////////
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
index 892f3373af..0562a8c1a6 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
@@ -60,8 +60,8 @@ type IBACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer interface {
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer) GetServiceChoice() uint8 {
-	return 0x04
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer) GetServiceChoice() BACnetUnconfirmedServiceChoice {
+	return BACnetUnconfirmedServiceChoice_UNCONFIRMED_PRIVATE_TRANSFER
 }
 
 ///////////////////////
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go
index 625b70492b..c7a211504a 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go
@@ -49,8 +49,8 @@ type IBACnetUnconfirmedServiceRequestUnconfirmedTextMessage interface {
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestUnconfirmedTextMessage) GetServiceChoice() uint8 {
-	return 0x05
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedTextMessage) GetServiceChoice() BACnetUnconfirmedServiceChoice {
+	return BACnetUnconfirmedServiceChoice_UNCONFIRMED_TEXT_MESSAGE
 }
 
 ///////////////////////
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedUnknown.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedUnknown.go
index 6334db0d9f..1ce8320a59 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedUnknown.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedUnknown.go
@@ -53,7 +53,7 @@ type IBACnetUnconfirmedServiceRequestUnconfirmedUnknown interface {
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestUnconfirmedUnknown) GetServiceChoice() uint8 {
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedUnknown) GetServiceChoice() BACnetUnconfirmedServiceChoice {
 	return 0
 }
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
index 9fab52bfbe..2b94460881 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
@@ -63,8 +63,8 @@ type IBACnetUnconfirmedServiceRequestWhoHas interface {
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestWhoHas) GetServiceChoice() uint8 {
-	return 0x07
+func (m *BACnetUnconfirmedServiceRequestWhoHas) GetServiceChoice() BACnetUnconfirmedServiceChoice {
+	return BACnetUnconfirmedServiceChoice_WHO_HAS
 }
 
 ///////////////////////
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
index f4dfac5270..1bbc43250f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
@@ -57,8 +57,8 @@ type IBACnetUnconfirmedServiceRequestWhoIs interface {
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestWhoIs) GetServiceChoice() uint8 {
-	return 0x08
+func (m *BACnetUnconfirmedServiceRequestWhoIs) GetServiceChoice() BACnetUnconfirmedServiceChoice {
+	return BACnetUnconfirmedServiceChoice_WHO_IS
 }
 
 ///////////////////////
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go
index 5129a76b83..d8afebac78 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go
@@ -49,8 +49,8 @@ type IBACnetUnconfirmedServiceRequestWriteGroup interface {
 /////////////////////// Accessors for discriminator values.
 ///////////////////////
 
-func (m *BACnetUnconfirmedServiceRequestWriteGroup) GetServiceChoice() uint8 {
-	return 0x0A
+func (m *BACnetUnconfirmedServiceRequestWriteGroup) GetServiceChoice() BACnetUnconfirmedServiceChoice {
+	return BACnetUnconfirmedServiceChoice_WRITE_GROUP
 }
 
 ///////////////////////
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 14674e3284..528f67279f 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
@@ -88,7 +88,7 @@ public class RandomPackagesTest {
                     BVLC bvlc = pcapEvaluator.nextBVLC();
                     dump(bvlc);
                     APDUUnconfirmedRequest apduUnconfirmedRequest = (APDUUnconfirmedRequest) ((BVLCDistributeBroadcastToNetwork) bvlc).getNpdu().getApdu();
-                    assertEquals((short) 0x8, apduUnconfirmedRequest.getServiceRequest().getServiceChoice());
+                    assertEquals(BACnetUnconfirmedServiceChoice.WHO_IS, apduUnconfirmedRequest.getServiceRequest().getServiceChoice());
                 }),
             DynamicTest.dynamicTest("No. 3 - BACnet Virtual Link Control BVLC Function BVLC-Results",
                 () -> {
@@ -101,7 +101,7 @@ public class RandomPackagesTest {
                     BVLC bvlc = pcapEvaluator.nextBVLC();
                     dump(bvlc);
                     APDUUnconfirmedRequest apduUnconfirmedRequest = (APDUUnconfirmedRequest) ((BVLCForwardedNPDU) bvlc).getNpdu().getApdu();
-                    assertEquals((short) 0x8, apduUnconfirmedRequest.getServiceRequest().getServiceChoice());
+                    assertEquals(BACnetUnconfirmedServiceChoice.WHO_IS, apduUnconfirmedRequest.getServiceRequest().getServiceChoice());
                 }),
             DynamicTest.dynamicTest("No. 5 - Unconfirmed-REQ i-Am device,123",
                 () -> {
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
index 54fc330a62..12b152adac 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -629,54 +629,59 @@
 ]
 
 [discriminatedType BACnetUnconfirmedServiceRequest(uint 16 serviceRequestLength)
-    [discriminator uint 8 serviceChoice]
+    [discriminator BACnetUnconfirmedServiceChoice serviceChoice]
     [typeSwitch serviceChoice
-        ['0x00' BACnetUnconfirmedServiceRequestIAm
+        ['I_AM' BACnetUnconfirmedServiceRequestIAm
             [simple     BACnetApplicationTagObjectIdentifier    deviceIdentifier                ]
             [simple     BACnetApplicationTagUnsignedInteger     maximumApduLengthAcceptedLength ]
             [simple     BACnetSegmentation                      segmentationSupported           ]
             [simple     BACnetApplicationTagUnsignedInteger     vendorId                        ] // TODO: vendor list?
         ]
-        ['0x01' BACnetUnconfirmedServiceRequestIHave
+        ['I_HAVE' BACnetUnconfirmedServiceRequestIHave
             [simple     BACnetApplicationTagObjectIdentifier    deviceIdentifier    ]
             [simple     BACnetApplicationTagObjectIdentifier    objectIdentifier    ]
             [simple     BACnetApplicationTagCharacterString     objectName          ]
         ]
-        ['0x02' BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification
+        ['UNCONFIRMED_COV_NOTIFICATION' BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification
             [simple     BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')          subscriberProcessIdentifier ]
             [simple     BACnetContextTagObjectIdentifier('1', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') initiatingDeviceIdentifier   ]
             [simple     BACnetContextTagObjectIdentifier('2', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') monitoredObjectIdentifier   ]
             [simple     BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER')          lifetimeInSeconds           ]
             [simple     BACnetPropertyValues('4', 'monitoredObjectIdentifier.objectType')                listOfValues                ]
         ]
-        ['0x03' BACnetUnconfirmedServiceRequestUnconfirmedEventNotification
+        ['UNCONFIRMED_EVENT_NOTIFICATION' BACnetUnconfirmedServiceRequestUnconfirmedEventNotification
+            // TODO: implement me
         ]
-        ['0x04' BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer
+        ['UNCONFIRMED_PRIVATE_TRANSFER' BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer
             [simple     BACnetContextTagUnsignedInteger('1', 'BACnetDataType.UNSIGNED_INTEGER')          vendorId                    ]// TODO: vendor list?
             [simple     BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER')          serviceNumber               ]
             [optional   BACnetPropertyValues('2', 'BACnetObjectType.VENDOR_PROPRIETARY_VALUE')           serviceParameters           ] //TODO: what should we use as object identifier here?
         ]
-        ['0x05' BACnetUnconfirmedServiceRequestUnconfirmedTextMessage
+        ['UNCONFIRMED_TEXT_MESSAGE' BACnetUnconfirmedServiceRequestUnconfirmedTextMessage
+            // TODO: implement me
         ]
-        ['0x06' BACnetUnconfirmedServiceRequestTimeSynchronization
+        ['TIME_SYNCHRONIZATION' BACnetUnconfirmedServiceRequestTimeSynchronization
             [simple BACnetApplicationTagDate synchronizedDate]
             [simple BACnetApplicationTagTime synchronizedTime]
         ]
-        ['0x07' BACnetUnconfirmedServiceRequestWhoHas
+        ['WHO_HAS' BACnetUnconfirmedServiceRequestWhoHas
             [optional BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')           deviceInstanceRangeLowLimit                                         ]
             [optional BACnetContextTagUnsignedInteger('1', 'BACnetDataType.UNSIGNED_INTEGER')           deviceInstanceRangeHighLimit  'deviceInstanceRangeLowLimit != null' ]
             [optional BACnetContextTagObjectIdentifier('2', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')  objectIdentifier                                                    ]
             [optional BACnetContextTagOctetString('3', 'BACnetDataType.OCTET_STRING')                   objectName                    'objectIdentifier == null'            ]
         ]
-        ['0x08' BACnetUnconfirmedServiceRequestWhoIs
+        ['WHO_IS' BACnetUnconfirmedServiceRequestWhoIs
             [optional BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')   deviceInstanceRangeLowLimit                                                 ]
             [optional BACnetContextTagUnsignedInteger('1', 'BACnetDataType.UNSIGNED_INTEGER')   deviceInstanceRangeHighLimit  'deviceInstanceRangeLowLimit != null'         ]
         ]
-        ['0x09' BACnetUnconfirmedServiceRequestUTCTimeSynchronization
+        ['UTC_TIME_SYNCHRONIZATION' BACnetUnconfirmedServiceRequestUTCTimeSynchronization
+            // TODO: implement me
         ]
-        ['0x0A' BACnetUnconfirmedServiceRequestWriteGroup
+        ['WRITE_GROUP' BACnetUnconfirmedServiceRequestWriteGroup
+            // TODO: implement me
         ]
-        ['0x0B' BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple
+        ['UNCONFIRMED_COV_NOTIFICATION_MULTIPLE' BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple
+            // TODO: implement me
         ]
         [BACnetUnconfirmedServiceRequestUnconfirmedUnknown
             [array  byte    unknownBytes length '(serviceRequestLength>0)?(serviceRequestLength - 1):0']
@@ -684,6 +689,21 @@
     ]
 ]
 
+[enum uint 8 BACnetUnconfirmedServiceChoice
+    ['0x00' I_AM                                        ]
+    ['0x01' I_HAVE                                      ]
+    ['0x02' UNCONFIRMED_COV_NOTIFICATION                ]
+    ['0x03' UNCONFIRMED_EVENT_NOTIFICATION              ]
+    ['0x04' UNCONFIRMED_PRIVATE_TRANSFER                ]
+    ['0x05' UNCONFIRMED_TEXT_MESSAGE                    ]
+    ['0x06' TIME_SYNCHRONIZATION                        ]
+    ['0x07' WHO_HAS                                     ]
+    ['0x08' WHO_IS                                      ]
+    ['0x09' UTC_TIME_SYNCHRONIZATION                    ]
+    ['0x0A' WRITE_GROUP                                 ]
+    ['0x0B' UNCONFIRMED_COV_NOTIFICATION_MULTIPLE       ]
+]
+
 // TODO: this is a enum so we should build a static call which maps a enum (could be solved by using only the tag header with a length validation and the enum itself)
 [type BACnetSegmentation
     [simple BACnetApplicationTagEnumerated          rawData ]
diff --git a/protocols/bacnetip/src/test/resources/protocols/bacnet/ParserSerializerTestsuite.xml b/protocols/bacnetip/src/test/resources/protocols/bacnet/ParserSerializerTestsuite.xml
index 2384c29544..984e70161a 100644
--- a/protocols/bacnetip/src/test/resources/protocols/bacnet/ParserSerializerTestsuite.xml
+++ b/protocols/bacnetip/src/test/resources/protocols/bacnet/ParserSerializerTestsuite.xml
@@ -112,7 +112,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">7</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_HAS">7</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoHas>
                           <objectName>
                             <BACnetContextTag>
@@ -188,7 +190,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">1</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_HAVE">1</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIHave>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -309,7 +313,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">7</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_HAS">7</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoHas>
                           <objectIdentifier>
                             <BACnetContextTag>
@@ -385,7 +391,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">1</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_HAVE">1</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIHave>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -506,7 +514,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">6</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="TIME_SYNCHRONIZATION">6</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestTimeSynchronization>
                           <synchronizedDate>
                             <BACnetApplicationTag>
@@ -607,7 +617,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -705,7 +717,9 @@
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -2942,7 +2956,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -3040,7 +3056,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -3386,7 +3404,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -3484,7 +3504,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -3825,7 +3847,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -3923,7 +3947,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -4264,7 +4290,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -4362,7 +4390,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -5013,7 +5043,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">2</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="UNCONFIRMED_COV_NOTIFICATION">2</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification>
                           <subscriberProcessIdentifier>
                             <BACnetContextTag>
@@ -5268,7 +5300,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -5366,7 +5400,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -5762,7 +5798,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -5860,7 +5898,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -6166,7 +6206,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">8</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_IS">8</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoIs>
                           <deviceInstanceRangeLowLimit>
                             <BACnetContextTag>
@@ -6264,7 +6306,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -6616,7 +6660,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -7216,7 +7262,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -7734,7 +7782,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">0</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_AM">0</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIAm>
                           <deviceIdentifier>
                             <BACnetApplicationTag>
@@ -7877,7 +7927,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">6</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="TIME_SYNCHRONIZATION">6</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestTimeSynchronization>
                           <synchronizedDate>
                             <BACnetApplicationTag>
@@ -7981,7 +8033,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">7</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="WHO_HAS">7</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestWhoHas>
                           <objectIdentifier>
                             <BACnetContextTag>
@@ -8057,7 +8111,9 @@ make -f wp.mak clean</value>
                     <reserved dataType="uint" bitLength="4">0</reserved>
                     <serviceRequest>
                       <BACnetUnconfirmedServiceRequest>
-                        <serviceChoice dataType="uint" bitLength="8">1</serviceChoice>
+                        <serviceChoice>
+                          <BACnetUnconfirmedServiceChoice dataType="uint" bitLength="8" stringRepresentation="I_HAVE">1</BACnetUnconfirmedServiceChoice>
+                        </serviceChoice>
                         <BACnetUnconfirmedServiceRequestIHave>
                           <deviceIdentifier>
                             <BACnetApplicationTag>