You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/01/17 18:43:17 UTC
[plc4x] 02/02: feat(bacnet): added BACnetConstructedDataEventTimestamps
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit b45dbcd591e15297edbd1386a51e98a5d5c3106c
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Mon Jan 17 19:12:26 2022 +0100
feat(bacnet): added BACnetConstructedDataEventTimestamps
---
.../plc4go/bacnetip/readwrite/model/APDUUnknown.go | 30 +-
...ACnetConfirmedServiceRequestConfirmedUnknown.go | 26 +-
.../readwrite/model/BACnetConstructedData.go | 29 +-
.../model/BACnetConstructedDataCommand.go | 10 +-
.../model/BACnetConstructedDataEventTimestamps.go | 233 ++++
.../model/BACnetConstructedDataLifeSafetyZone.go | 10 +-
.../model/BACnetConstructedDataUnspecified.go | 12 +-
.../model/BACnetUnconfirmedServiceRequest.go | 2 +
...tUnconfirmedServiceRequestUnconfirmedUnknown.go | 157 +++
.../readwrite/model/NLMRejectRouterToNetwork.go | 21 +-
.../model/NLMRejectRouterToNetworkRejectReason.go | 152 +++
.../knxnetip/readwrite/model/KnxManufacturer.go | 26 +-
.../plc4x/java/bacnetip/RandomPackagesTest.java | 146 +-
.../resources/protocols/bacnetip/bacnetip.mspec | 1425 ++++++++++----------
14 files changed, 1498 insertions(+), 781 deletions(-)
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnknown.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnknown.go
index 7c5a92c..98d6458 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnknown.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnknown.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +29,7 @@ import (
// The data-structure of this message
type APDUUnknown struct {
*APDU
+ UnknownBytes []byte
}
// The corresponding interface
@@ -46,9 +48,10 @@ func (m *APDUUnknown) ApduType() uint8 {
func (m *APDUUnknown) InitializeParent(parent *APDU) {}
-func NewAPDUUnknown() *APDU {
+func NewAPDUUnknown(unknownBytes []byte) *APDU {
child := &APDUUnknown{
- APDU: NewAPDU(),
+ UnknownBytes: unknownBytes,
+ APDU: NewAPDU(),
}
child.Child = child
return child.APDU
@@ -84,6 +87,11 @@ func (m *APDUUnknown) LengthInBits() uint16 {
func (m *APDUUnknown) LengthInBitsConditional(lastItem bool) uint16 {
lengthInBits := uint16(m.ParentLengthInBits())
+ // Array field
+ if len(m.UnknownBytes) > 0 {
+ lengthInBits += 8 * uint16(len(m.UnknownBytes))
+ }
+
return lengthInBits
}
@@ -95,6 +103,12 @@ func APDUUnknownParse(readBuffer utils.ReadBuffer, apduLength uint16) (*APDU, er
if pullErr := readBuffer.PullContext("APDUUnknown"); pullErr != nil {
return nil, pullErr
}
+ // Byte Array field (unknownBytes)
+ numberOfBytesunknownBytes := int(utils.InlineIf(bool(bool((apduLength) > (0))), func() interface{} { return uint16(uint16(uint16(apduLength) - uint16(uint16(1)))) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
+ unknownBytes, _readArrayErr := readBuffer.ReadByteArray("unknownBytes", numberOfBytesunknownBytes)
+ if _readArrayErr != nil {
+ return nil, errors.Wrap(_readArrayErr, "Error parsing 'unknownBytes' field")
+ }
if closeErr := readBuffer.CloseContext("APDUUnknown"); closeErr != nil {
return nil, closeErr
@@ -102,7 +116,8 @@ func APDUUnknownParse(readBuffer utils.ReadBuffer, apduLength uint16) (*APDU, er
// Create a partially initialized instance
_child := &APDUUnknown{
- APDU: &APDU{},
+ UnknownBytes: unknownBytes,
+ APDU: &APDU{},
}
_child.APDU.Child = _child
return _child.APDU, nil
@@ -114,6 +129,15 @@ func (m *APDUUnknown) Serialize(writeBuffer utils.WriteBuffer) error {
return pushErr
}
+ // Array Field (unknownBytes)
+ if m.UnknownBytes != nil {
+ // Byte Array field (unknownBytes)
+ _writeArrayErr := writeBuffer.WriteByteArray("unknownBytes", m.UnknownBytes)
+ if _writeArrayErr != nil {
+ return errors.Wrap(_writeArrayErr, "Error serializing 'unknownBytes' field")
+ }
+ }
+
if popErr := writeBuffer.PopContext("APDUUnknown"); popErr != nil {
return popErr
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedUnknown.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedUnknown.go
index c4b8678..ad31c06 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedUnknown.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedUnknown.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +29,7 @@ import (
// The data-structure of this message
type BACnetConfirmedServiceRequestConfirmedUnknown struct {
*BACnetConfirmedServiceRequest
+ UnknownBytes []byte
}
// The corresponding interface
@@ -47,8 +49,9 @@ func (m *BACnetConfirmedServiceRequestConfirmedUnknown) ServiceChoice() uint8 {
func (m *BACnetConfirmedServiceRequestConfirmedUnknown) InitializeParent(parent *BACnetConfirmedServiceRequest) {
}
-func NewBACnetConfirmedServiceRequestConfirmedUnknown() *BACnetConfirmedServiceRequest {
+func NewBACnetConfirmedServiceRequestConfirmedUnknown(unknownBytes []byte) *BACnetConfirmedServiceRequest {
child := &BACnetConfirmedServiceRequestConfirmedUnknown{
+ UnknownBytes: unknownBytes,
BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
}
child.Child = child
@@ -85,6 +88,11 @@ func (m *BACnetConfirmedServiceRequestConfirmedUnknown) LengthInBits() uint16 {
func (m *BACnetConfirmedServiceRequestConfirmedUnknown) LengthInBitsConditional(lastItem bool) uint16 {
lengthInBits := uint16(m.ParentLengthInBits())
+ // Array field
+ if len(m.UnknownBytes) > 0 {
+ lengthInBits += 8 * uint16(len(m.UnknownBytes))
+ }
+
return lengthInBits
}
@@ -96,6 +104,12 @@ func BACnetConfirmedServiceRequestConfirmedUnknownParse(readBuffer utils.ReadBuf
if pullErr := readBuffer.PullContext("BACnetConfirmedServiceRequestConfirmedUnknown"); pullErr != nil {
return nil, pullErr
}
+ // Byte Array field (unknownBytes)
+ numberOfBytesunknownBytes := int(utils.InlineIf(bool(bool((len) > (0))), func() interface{} { return uint16(uint16(uint16(len) - uint16(uint16(1)))) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
+ unknownBytes, _readArrayErr := readBuffer.ReadByteArray("unknownBytes", numberOfBytesunknownBytes)
+ if _readArrayErr != nil {
+ return nil, errors.Wrap(_readArrayErr, "Error parsing 'unknownBytes' field")
+ }
if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestConfirmedUnknown"); closeErr != nil {
return nil, closeErr
@@ -103,6 +117,7 @@ func BACnetConfirmedServiceRequestConfirmedUnknownParse(readBuffer utils.ReadBuf
// Create a partially initialized instance
_child := &BACnetConfirmedServiceRequestConfirmedUnknown{
+ UnknownBytes: unknownBytes,
BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
}
_child.BACnetConfirmedServiceRequest.Child = _child
@@ -115,6 +130,15 @@ func (m *BACnetConfirmedServiceRequestConfirmedUnknown) Serialize(writeBuffer ut
return pushErr
}
+ // Array Field (unknownBytes)
+ if m.UnknownBytes != nil {
+ // Byte Array field (unknownBytes)
+ _writeArrayErr := writeBuffer.WriteByteArray("unknownBytes", m.UnknownBytes)
+ if _writeArrayErr != nil {
+ return errors.Wrap(_writeArrayErr, "Error serializing 'unknownBytes' field")
+ }
+ }
+
if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestConfirmedUnknown"); popErr != nil {
return popErr
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedData.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedData.go
index 857d0a7..affc968 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedData.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedData.go
@@ -28,15 +28,16 @@ import (
// The data-structure of this message
type BACnetConstructedData struct {
- OpeningTag *BACnetOpeningTag
- ClosingTag *BACnetClosingTag
- Child IBACnetConstructedDataChild
+ OpeningTag *BACnetOpeningTag
+ ClosingTag *BACnetClosingTag
+ PropertyIdentifierEnum BACnetPropertyIdentifier
+ Child IBACnetConstructedDataChild
}
// The corresponding interface
type IBACnetConstructedData interface {
ObjectType() BACnetObjectType
- PropertyIdentifierArgument() IBACnetContextTagPropertyIdentifier
+ PropertyIdentifierEnum() BACnetPropertyIdentifier
LengthInBytes() uint16
LengthInBits() uint16
Serialize(writeBuffer utils.WriteBuffer) error
@@ -49,13 +50,13 @@ type IBACnetConstructedDataParent interface {
type IBACnetConstructedDataChild interface {
Serialize(writeBuffer utils.WriteBuffer) error
- InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag)
+ InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, propertyIdentifierEnum BACnetPropertyIdentifier)
GetTypeName() string
IBACnetConstructedData
}
-func NewBACnetConstructedData(openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) *BACnetConstructedData {
- return &BACnetConstructedData{OpeningTag: openingTag, ClosingTag: closingTag}
+func NewBACnetConstructedData(openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, propertyIdentifierEnum BACnetPropertyIdentifier) *BACnetConstructedData {
+ return &BACnetConstructedData{OpeningTag: openingTag, ClosingTag: closingTag, PropertyIdentifierEnum: propertyIdentifierEnum}
}
func CastBACnetConstructedData(structType interface{}) *BACnetConstructedData {
@@ -89,6 +90,8 @@ func (m *BACnetConstructedData) ParentLengthInBits() uint16 {
// Simple field (openingTag)
lengthInBits += m.OpeningTag.LengthInBits()
+ // A virtual field doesn't have any in- or output.
+
// Simple field (closingTag)
lengthInBits += m.ClosingTag.LengthInBits()
@@ -117,6 +120,10 @@ func BACnetConstructedDataParse(readBuffer utils.ReadBuffer, tagNumber uint8, ob
return nil, closeErr
}
+ // Virtual field
+ _propertyIdentifierEnum := propertyIdentifierArgument.PropertyIdentifier
+ propertyIdentifierEnum := BACnetPropertyIdentifier(_propertyIdentifierEnum)
+
// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
var _parent *BACnetConstructedData
var typeSwitchError error
@@ -125,6 +132,8 @@ func BACnetConstructedDataParse(readBuffer utils.ReadBuffer, tagNumber uint8, ob
_parent, typeSwitchError = BACnetConstructedDataCommandParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
case objectType == BACnetObjectType_LIFE_SAFETY_ZONE: // BACnetConstructedDataLifeSafetyZone
_parent, typeSwitchError = BACnetConstructedDataLifeSafetyZoneParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
+ case true && propertyIdentifierEnum == BACnetPropertyIdentifier_EVENT_TIME_STAMPS: // BACnetConstructedDataEventTimestamps
+ _parent, typeSwitchError = BACnetConstructedDataEventTimestampsParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
case true: // BACnetConstructedDataUnspecified
_parent, typeSwitchError = BACnetConstructedDataUnspecifiedParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
default:
@@ -153,7 +162,7 @@ func BACnetConstructedDataParse(readBuffer utils.ReadBuffer, tagNumber uint8, ob
}
// Finish initializing
- _parent.Child.InitializeParent(_parent, openingTag, closingTag)
+ _parent.Child.InitializeParent(_parent, openingTag, closingTag, propertyIdentifierEnum)
return _parent, nil
}
@@ -177,6 +186,10 @@ func (m *BACnetConstructedData) SerializeParent(writeBuffer utils.WriteBuffer, c
if _openingTagErr != nil {
return errors.Wrap(_openingTagErr, "Error serializing 'openingTag' field")
}
+ // Virtual field
+ if _propertyIdentifierEnumErr := writeBuffer.WriteVirtual("propertyIdentifierEnum", m.PropertyIdentifierEnum); _propertyIdentifierEnumErr != nil {
+ return errors.Wrap(_propertyIdentifierEnumErr, "Error serializing 'propertyIdentifierEnum' field")
+ }
// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
if _typeSwitchErr := serializeChildFunction(); _typeSwitchErr != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataCommand.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataCommand.go
index ab1528f..3a30b7d 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataCommand.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataCommand.go
@@ -48,21 +48,21 @@ func (m *BACnetConstructedDataCommand) ObjectType() BACnetObjectType {
return BACnetObjectType_COMMAND
}
-func (m *BACnetConstructedDataCommand) PropertyIdentifierArgument() IBACnetContextTagPropertyIdentifier {
- return nil
+func (m *BACnetConstructedDataCommand) PropertyIdentifierEnum() BACnetPropertyIdentifier {
+ return 0
}
-func (m *BACnetConstructedDataCommand) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
+func (m *BACnetConstructedDataCommand) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, propertyIdentifierEnum BACnetPropertyIdentifier) {
m.OpeningTag = openingTag
m.ClosingTag = closingTag
}
-func NewBACnetConstructedDataCommand(innerOpeningTag *BACnetOpeningTag, action []*BACnetActionCommand, innerClosingTag *BACnetClosingTag, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) *BACnetConstructedData {
+func NewBACnetConstructedDataCommand(innerOpeningTag *BACnetOpeningTag, action []*BACnetActionCommand, innerClosingTag *BACnetClosingTag, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, propertyIdentifierEnum BACnetPropertyIdentifier) *BACnetConstructedData {
child := &BACnetConstructedDataCommand{
InnerOpeningTag: innerOpeningTag,
Action: action,
InnerClosingTag: innerClosingTag,
- BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag),
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, propertyIdentifierEnum),
}
child.Child = child
return child.BACnetConstructedData
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataEventTimestamps.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataEventTimestamps.go
new file mode 100644
index 0000000..7a5977b
--- /dev/null
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataEventTimestamps.go
@@ -0,0 +1,233 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+ "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// The data-structure of this message
+type BACnetConstructedDataEventTimestamps struct {
+ *BACnetConstructedData
+ ToOffnormal *BACnetContextTagTime
+ ToFault *BACnetContextTagUnsignedInteger
+ ToNormal *BACnetDateTime
+}
+
+// The corresponding interface
+type IBACnetConstructedDataEventTimestamps interface {
+ LengthInBytes() uint16
+ LengthInBits() uint16
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+// Accessors for discriminator values.
+///////////////////////////////////////////////////////////
+func (m *BACnetConstructedDataEventTimestamps) ObjectType() BACnetObjectType {
+ return 0
+}
+
+func (m *BACnetConstructedDataEventTimestamps) PropertyIdentifierEnum() BACnetPropertyIdentifier {
+ return BACnetPropertyIdentifier_EVENT_TIME_STAMPS
+}
+
+func (m *BACnetConstructedDataEventTimestamps) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, propertyIdentifierEnum BACnetPropertyIdentifier) {
+ m.OpeningTag = openingTag
+ m.ClosingTag = closingTag
+}
+
+func NewBACnetConstructedDataEventTimestamps(toOffnormal *BACnetContextTagTime, toFault *BACnetContextTagUnsignedInteger, toNormal *BACnetDateTime, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, propertyIdentifierEnum BACnetPropertyIdentifier) *BACnetConstructedData {
+ child := &BACnetConstructedDataEventTimestamps{
+ ToOffnormal: toOffnormal,
+ ToFault: toFault,
+ ToNormal: toNormal,
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, propertyIdentifierEnum),
+ }
+ child.Child = child
+ return child.BACnetConstructedData
+}
+
+func CastBACnetConstructedDataEventTimestamps(structType interface{}) *BACnetConstructedDataEventTimestamps {
+ castFunc := func(typ interface{}) *BACnetConstructedDataEventTimestamps {
+ if casted, ok := typ.(BACnetConstructedDataEventTimestamps); ok {
+ return &casted
+ }
+ if casted, ok := typ.(*BACnetConstructedDataEventTimestamps); ok {
+ return casted
+ }
+ if casted, ok := typ.(BACnetConstructedData); ok {
+ return CastBACnetConstructedDataEventTimestamps(casted.Child)
+ }
+ if casted, ok := typ.(*BACnetConstructedData); ok {
+ return CastBACnetConstructedDataEventTimestamps(casted.Child)
+ }
+ return nil
+ }
+ return castFunc(structType)
+}
+
+func (m *BACnetConstructedDataEventTimestamps) GetTypeName() string {
+ return "BACnetConstructedDataEventTimestamps"
+}
+
+func (m *BACnetConstructedDataEventTimestamps) LengthInBits() uint16 {
+ return m.LengthInBitsConditional(false)
+}
+
+func (m *BACnetConstructedDataEventTimestamps) LengthInBitsConditional(lastItem bool) uint16 {
+ lengthInBits := uint16(m.ParentLengthInBits())
+
+ // Simple field (toOffnormal)
+ lengthInBits += m.ToOffnormal.LengthInBits()
+
+ // Simple field (toFault)
+ lengthInBits += m.ToFault.LengthInBits()
+
+ // Simple field (toNormal)
+ lengthInBits += m.ToNormal.LengthInBits()
+
+ return lengthInBits
+}
+
+func (m *BACnetConstructedDataEventTimestamps) LengthInBytes() uint16 {
+ return m.LengthInBits() / 8
+}
+
+func BACnetConstructedDataEventTimestampsParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType, propertyIdentifierArgument *BACnetContextTagPropertyIdentifier) (*BACnetConstructedData, error) {
+ if pullErr := readBuffer.PullContext("BACnetConstructedDataEventTimestamps"); pullErr != nil {
+ return nil, pullErr
+ }
+
+ // Simple Field (toOffnormal)
+ if pullErr := readBuffer.PullContext("toOffnormal"); pullErr != nil {
+ return nil, pullErr
+ }
+ _toOffnormal, _toOffnormalErr := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_TIME)
+ if _toOffnormalErr != nil {
+ return nil, errors.Wrap(_toOffnormalErr, "Error parsing 'toOffnormal' field")
+ }
+ toOffnormal := CastBACnetContextTagTime(_toOffnormal)
+ if closeErr := readBuffer.CloseContext("toOffnormal"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Simple Field (toFault)
+ if pullErr := readBuffer.PullContext("toFault"); pullErr != nil {
+ return nil, pullErr
+ }
+ _toFault, _toFaultErr := BACnetContextTagParse(readBuffer, uint8(1), BACnetDataType_UNSIGNED_INTEGER)
+ if _toFaultErr != nil {
+ return nil, errors.Wrap(_toFaultErr, "Error parsing 'toFault' field")
+ }
+ toFault := CastBACnetContextTagUnsignedInteger(_toFault)
+ if closeErr := readBuffer.CloseContext("toFault"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Simple Field (toNormal)
+ if pullErr := readBuffer.PullContext("toNormal"); pullErr != nil {
+ return nil, pullErr
+ }
+ _toNormal, _toNormalErr := BACnetDateTimeParse(readBuffer, uint8(2))
+ if _toNormalErr != nil {
+ return nil, errors.Wrap(_toNormalErr, "Error parsing 'toNormal' field")
+ }
+ toNormal := CastBACnetDateTime(_toNormal)
+ if closeErr := readBuffer.CloseContext("toNormal"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ if closeErr := readBuffer.CloseContext("BACnetConstructedDataEventTimestamps"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Create a partially initialized instance
+ _child := &BACnetConstructedDataEventTimestamps{
+ ToOffnormal: CastBACnetContextTagTime(toOffnormal),
+ ToFault: CastBACnetContextTagUnsignedInteger(toFault),
+ ToNormal: CastBACnetDateTime(toNormal),
+ BACnetConstructedData: &BACnetConstructedData{},
+ }
+ _child.BACnetConstructedData.Child = _child
+ return _child.BACnetConstructedData, nil
+}
+
+func (m *BACnetConstructedDataEventTimestamps) Serialize(writeBuffer utils.WriteBuffer) error {
+ ser := func() error {
+ if pushErr := writeBuffer.PushContext("BACnetConstructedDataEventTimestamps"); pushErr != nil {
+ return pushErr
+ }
+
+ // Simple Field (toOffnormal)
+ if pushErr := writeBuffer.PushContext("toOffnormal"); pushErr != nil {
+ return pushErr
+ }
+ _toOffnormalErr := m.ToOffnormal.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("toOffnormal"); popErr != nil {
+ return popErr
+ }
+ if _toOffnormalErr != nil {
+ return errors.Wrap(_toOffnormalErr, "Error serializing 'toOffnormal' field")
+ }
+
+ // Simple Field (toFault)
+ if pushErr := writeBuffer.PushContext("toFault"); pushErr != nil {
+ return pushErr
+ }
+ _toFaultErr := m.ToFault.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("toFault"); popErr != nil {
+ return popErr
+ }
+ if _toFaultErr != nil {
+ return errors.Wrap(_toFaultErr, "Error serializing 'toFault' field")
+ }
+
+ // Simple Field (toNormal)
+ if pushErr := writeBuffer.PushContext("toNormal"); pushErr != nil {
+ return pushErr
+ }
+ _toNormalErr := m.ToNormal.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("toNormal"); popErr != nil {
+ return popErr
+ }
+ if _toNormalErr != nil {
+ return errors.Wrap(_toNormalErr, "Error serializing 'toNormal' field")
+ }
+
+ if popErr := writeBuffer.PopContext("BACnetConstructedDataEventTimestamps"); popErr != nil {
+ return popErr
+ }
+ return nil
+ }
+ return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetConstructedDataEventTimestamps) String() string {
+ if m == nil {
+ return "<nil>"
+ }
+ buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+ m.Serialize(buffer)
+ return buffer.GetBox().String()
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyZone.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyZone.go
index 64b66c0..e660a2f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyZone.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyZone.go
@@ -46,19 +46,19 @@ func (m *BACnetConstructedDataLifeSafetyZone) ObjectType() BACnetObjectType {
return BACnetObjectType_LIFE_SAFETY_ZONE
}
-func (m *BACnetConstructedDataLifeSafetyZone) PropertyIdentifierArgument() IBACnetContextTagPropertyIdentifier {
- return nil
+func (m *BACnetConstructedDataLifeSafetyZone) PropertyIdentifierEnum() BACnetPropertyIdentifier {
+ return 0
}
-func (m *BACnetConstructedDataLifeSafetyZone) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
+func (m *BACnetConstructedDataLifeSafetyZone) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, propertyIdentifierEnum BACnetPropertyIdentifier) {
m.OpeningTag = openingTag
m.ClosingTag = closingTag
}
-func NewBACnetConstructedDataLifeSafetyZone(zones []*BACnetContextTagObjectIdentifier, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) *BACnetConstructedData {
+func NewBACnetConstructedDataLifeSafetyZone(zones []*BACnetContextTagObjectIdentifier, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, propertyIdentifierEnum BACnetPropertyIdentifier) *BACnetConstructedData {
child := &BACnetConstructedDataLifeSafetyZone{
Zones: zones,
- BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag),
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, propertyIdentifierEnum),
}
child.Child = child
return child.BACnetConstructedData
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataUnspecified.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataUnspecified.go
index fb3a423..9507a31 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataUnspecified.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedDataUnspecified.go
@@ -49,22 +49,22 @@ func (m *BACnetConstructedDataUnspecified) ObjectType() BACnetObjectType {
return 0
}
-func (m *BACnetConstructedDataUnspecified) PropertyIdentifierArgument() IBACnetContextTagPropertyIdentifier {
- return nil
+func (m *BACnetConstructedDataUnspecified) PropertyIdentifierEnum() BACnetPropertyIdentifier {
+ return 0
}
-func (m *BACnetConstructedDataUnspecified) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
+func (m *BACnetConstructedDataUnspecified) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, propertyIdentifierEnum BACnetPropertyIdentifier) {
m.OpeningTag = openingTag
m.ClosingTag = closingTag
}
-func NewBACnetConstructedDataUnspecified(data []*BACnetConstructedDataElement, propertyIdentifier *BACnetContextTagPropertyIdentifier, content *BACnetApplicationTag, hasData bool, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) *BACnetConstructedData {
+func NewBACnetConstructedDataUnspecified(data []*BACnetConstructedDataElement, propertyIdentifier *BACnetContextTagPropertyIdentifier, content *BACnetApplicationTag, hasData bool, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, propertyIdentifierEnum BACnetPropertyIdentifier) *BACnetConstructedData {
child := &BACnetConstructedDataUnspecified{
Data: data,
PropertyIdentifier: propertyIdentifier,
Content: content,
HasData: hasData,
- BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag),
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, propertyIdentifierEnum),
}
child.Child = child
return child.BACnetConstructedData
@@ -138,7 +138,7 @@ func BACnetConstructedDataUnspecifiedParse(readBuffer utils.ReadBuffer, tagNumbe
// Terminated array
data := make([]*BACnetConstructedDataElement, 0)
{
- for !bool(IsBACnetConstructedDataClosingTag(readBuffer, bool(bool((objectType) == (BACnetObjectType_LIFE_SAFETY_ZONE))) || bool(bool((objectType) == (BACnetObjectType_COMMAND))), tagNumber)) {
+ for !bool(IsBACnetConstructedDataClosingTag(readBuffer, false, tagNumber)) {
_item, _err := BACnetConstructedDataElementParse(readBuffer, objectType, propertyIdentifierArgument)
if _err != nil {
return nil, errors.Wrap(_err, "Error parsing 'data' field")
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
index d420559..8158060 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
@@ -131,6 +131,8 @@ func BACnetUnconfirmedServiceRequestParse(readBuffer utils.ReadBuffer, len uint1
_parent, typeSwitchError = BACnetUnconfirmedServiceRequestWriteGroupParse(readBuffer, len)
case serviceChoice == 0x0B: // BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple
_parent, typeSwitchError = BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultipleParse(readBuffer, len)
+ case true: // BACnetUnconfirmedServiceRequestUnconfirmedUnknown
+ _parent, typeSwitchError = BACnetUnconfirmedServiceRequestUnconfirmedUnknownParse(readBuffer, len)
default:
// TODO: return actual type
typeSwitchError = errors.New("Unmapped type")
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedUnknown.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedUnknown.go
new file mode 100644
index 0000000..7a24af9
--- /dev/null
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedUnknown.go
@@ -0,0 +1,157 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+ "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// The data-structure of this message
+type BACnetUnconfirmedServiceRequestUnconfirmedUnknown struct {
+ *BACnetUnconfirmedServiceRequest
+ UnknownBytes []byte
+}
+
+// The corresponding interface
+type IBACnetUnconfirmedServiceRequestUnconfirmedUnknown interface {
+ LengthInBytes() uint16
+ LengthInBits() uint16
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+// Accessors for discriminator values.
+///////////////////////////////////////////////////////////
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedUnknown) ServiceChoice() uint8 {
+ return 0
+}
+
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedUnknown) InitializeParent(parent *BACnetUnconfirmedServiceRequest) {
+}
+
+func NewBACnetUnconfirmedServiceRequestUnconfirmedUnknown(unknownBytes []byte) *BACnetUnconfirmedServiceRequest {
+ child := &BACnetUnconfirmedServiceRequestUnconfirmedUnknown{
+ UnknownBytes: unknownBytes,
+ BACnetUnconfirmedServiceRequest: NewBACnetUnconfirmedServiceRequest(),
+ }
+ child.Child = child
+ return child.BACnetUnconfirmedServiceRequest
+}
+
+func CastBACnetUnconfirmedServiceRequestUnconfirmedUnknown(structType interface{}) *BACnetUnconfirmedServiceRequestUnconfirmedUnknown {
+ castFunc := func(typ interface{}) *BACnetUnconfirmedServiceRequestUnconfirmedUnknown {
+ if casted, ok := typ.(BACnetUnconfirmedServiceRequestUnconfirmedUnknown); ok {
+ return &casted
+ }
+ if casted, ok := typ.(*BACnetUnconfirmedServiceRequestUnconfirmedUnknown); ok {
+ return casted
+ }
+ if casted, ok := typ.(BACnetUnconfirmedServiceRequest); ok {
+ return CastBACnetUnconfirmedServiceRequestUnconfirmedUnknown(casted.Child)
+ }
+ if casted, ok := typ.(*BACnetUnconfirmedServiceRequest); ok {
+ return CastBACnetUnconfirmedServiceRequestUnconfirmedUnknown(casted.Child)
+ }
+ return nil
+ }
+ return castFunc(structType)
+}
+
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedUnknown) GetTypeName() string {
+ return "BACnetUnconfirmedServiceRequestUnconfirmedUnknown"
+}
+
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedUnknown) LengthInBits() uint16 {
+ return m.LengthInBitsConditional(false)
+}
+
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedUnknown) LengthInBitsConditional(lastItem bool) uint16 {
+ lengthInBits := uint16(m.ParentLengthInBits())
+
+ // Array field
+ if len(m.UnknownBytes) > 0 {
+ lengthInBits += 8 * uint16(len(m.UnknownBytes))
+ }
+
+ return lengthInBits
+}
+
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedUnknown) LengthInBytes() uint16 {
+ return m.LengthInBits() / 8
+}
+
+func BACnetUnconfirmedServiceRequestUnconfirmedUnknownParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetUnconfirmedServiceRequest, error) {
+ if pullErr := readBuffer.PullContext("BACnetUnconfirmedServiceRequestUnconfirmedUnknown"); pullErr != nil {
+ return nil, pullErr
+ }
+ // Byte Array field (unknownBytes)
+ numberOfBytesunknownBytes := int(utils.InlineIf(bool(bool((len) > (0))), func() interface{} { return uint16(uint16(uint16(len) - uint16(uint16(1)))) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
+ unknownBytes, _readArrayErr := readBuffer.ReadByteArray("unknownBytes", numberOfBytesunknownBytes)
+ if _readArrayErr != nil {
+ return nil, errors.Wrap(_readArrayErr, "Error parsing 'unknownBytes' field")
+ }
+
+ if closeErr := readBuffer.CloseContext("BACnetUnconfirmedServiceRequestUnconfirmedUnknown"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Create a partially initialized instance
+ _child := &BACnetUnconfirmedServiceRequestUnconfirmedUnknown{
+ UnknownBytes: unknownBytes,
+ BACnetUnconfirmedServiceRequest: &BACnetUnconfirmedServiceRequest{},
+ }
+ _child.BACnetUnconfirmedServiceRequest.Child = _child
+ return _child.BACnetUnconfirmedServiceRequest, nil
+}
+
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedUnknown) Serialize(writeBuffer utils.WriteBuffer) error {
+ ser := func() error {
+ if pushErr := writeBuffer.PushContext("BACnetUnconfirmedServiceRequestUnconfirmedUnknown"); pushErr != nil {
+ return pushErr
+ }
+
+ // Array Field (unknownBytes)
+ if m.UnknownBytes != nil {
+ // Byte Array field (unknownBytes)
+ _writeArrayErr := writeBuffer.WriteByteArray("unknownBytes", m.UnknownBytes)
+ if _writeArrayErr != nil {
+ return errors.Wrap(_writeArrayErr, "Error serializing 'unknownBytes' field")
+ }
+ }
+
+ if popErr := writeBuffer.PopContext("BACnetUnconfirmedServiceRequestUnconfirmedUnknown"); popErr != nil {
+ return popErr
+ }
+ return nil
+ }
+ return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetUnconfirmedServiceRequestUnconfirmedUnknown) String() string {
+ if m == nil {
+ return "<nil>"
+ }
+ buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+ m.Serialize(buffer)
+ return buffer.GetBox().String()
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMRejectRouterToNetwork.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMRejectRouterToNetwork.go
index b5608ec..9eedeb9 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMRejectRouterToNetwork.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMRejectRouterToNetwork.go
@@ -29,7 +29,7 @@ import (
// The data-structure of this message
type NLMRejectRouterToNetwork struct {
*NLM
- RejectReason uint8
+ RejectReason NLMRejectRouterToNetworkRejectReason
DestinationNetworkAddress uint16
}
@@ -51,7 +51,7 @@ func (m *NLMRejectRouterToNetwork) InitializeParent(parent *NLM, vendorId *uint1
m.VendorId = vendorId
}
-func NewNLMRejectRouterToNetwork(rejectReason uint8, destinationNetworkAddress uint16, vendorId *uint16) *NLM {
+func NewNLMRejectRouterToNetwork(rejectReason NLMRejectRouterToNetworkRejectReason, destinationNetworkAddress uint16, vendorId *uint16) *NLM {
child := &NLMRejectRouterToNetwork{
RejectReason: rejectReason,
DestinationNetworkAddress: destinationNetworkAddress,
@@ -110,11 +110,17 @@ func NLMRejectRouterToNetworkParse(readBuffer utils.ReadBuffer, apduLength uint1
}
// Simple Field (rejectReason)
- _rejectReason, _rejectReasonErr := readBuffer.ReadUint8("rejectReason", 8)
+ if pullErr := readBuffer.PullContext("rejectReason"); pullErr != nil {
+ return nil, pullErr
+ }
+ _rejectReason, _rejectReasonErr := NLMRejectRouterToNetworkRejectReasonParse(readBuffer)
if _rejectReasonErr != nil {
return nil, errors.Wrap(_rejectReasonErr, "Error parsing 'rejectReason' field")
}
rejectReason := _rejectReason
+ if closeErr := readBuffer.CloseContext("rejectReason"); closeErr != nil {
+ return nil, closeErr
+ }
// Simple Field (destinationNetworkAddress)
_destinationNetworkAddress, _destinationNetworkAddressErr := readBuffer.ReadUint16("destinationNetworkAddress", 16)
@@ -144,8 +150,13 @@ func (m *NLMRejectRouterToNetwork) Serialize(writeBuffer utils.WriteBuffer) erro
}
// Simple Field (rejectReason)
- rejectReason := uint8(m.RejectReason)
- _rejectReasonErr := writeBuffer.WriteUint8("rejectReason", 8, (rejectReason))
+ if pushErr := writeBuffer.PushContext("rejectReason"); pushErr != nil {
+ return pushErr
+ }
+ _rejectReasonErr := m.RejectReason.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("rejectReason"); popErr != nil {
+ return popErr
+ }
if _rejectReasonErr != nil {
return errors.Wrap(_rejectReasonErr, "Error serializing 'rejectReason' field")
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMRejectRouterToNetworkRejectReason.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMRejectRouterToNetworkRejectReason.go
new file mode 100644
index 0000000..a063418
--- /dev/null
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMRejectRouterToNetworkRejectReason.go
@@ -0,0 +1,152 @@
+/*
+ * 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 NLMRejectRouterToNetworkRejectReason uint8
+
+type INLMRejectRouterToNetworkRejectReason interface {
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+const (
+ NLMRejectRouterToNetworkRejectReason_OTHER NLMRejectRouterToNetworkRejectReason = 0
+ NLMRejectRouterToNetworkRejectReason_NOT_DIRECTLY_CONNECTED NLMRejectRouterToNetworkRejectReason = 1
+ NLMRejectRouterToNetworkRejectReason_BUSY NLMRejectRouterToNetworkRejectReason = 2
+ NLMRejectRouterToNetworkRejectReason_UNKNOWN_NLMT NLMRejectRouterToNetworkRejectReason = 3
+ NLMRejectRouterToNetworkRejectReason_TOO_LONG NLMRejectRouterToNetworkRejectReason = 4
+ NLMRejectRouterToNetworkRejectReason_SECURITY_ERROR NLMRejectRouterToNetworkRejectReason = 5
+ NLMRejectRouterToNetworkRejectReason_ADDRESSING_ERROR NLMRejectRouterToNetworkRejectReason = 6
+)
+
+var NLMRejectRouterToNetworkRejectReasonValues []NLMRejectRouterToNetworkRejectReason
+
+func init() {
+ _ = errors.New
+ NLMRejectRouterToNetworkRejectReasonValues = []NLMRejectRouterToNetworkRejectReason{
+ NLMRejectRouterToNetworkRejectReason_OTHER,
+ NLMRejectRouterToNetworkRejectReason_NOT_DIRECTLY_CONNECTED,
+ NLMRejectRouterToNetworkRejectReason_BUSY,
+ NLMRejectRouterToNetworkRejectReason_UNKNOWN_NLMT,
+ NLMRejectRouterToNetworkRejectReason_TOO_LONG,
+ NLMRejectRouterToNetworkRejectReason_SECURITY_ERROR,
+ NLMRejectRouterToNetworkRejectReason_ADDRESSING_ERROR,
+ }
+}
+
+func NLMRejectRouterToNetworkRejectReasonByValue(value uint8) NLMRejectRouterToNetworkRejectReason {
+ switch value {
+ case 0:
+ return NLMRejectRouterToNetworkRejectReason_OTHER
+ case 1:
+ return NLMRejectRouterToNetworkRejectReason_NOT_DIRECTLY_CONNECTED
+ case 2:
+ return NLMRejectRouterToNetworkRejectReason_BUSY
+ case 3:
+ return NLMRejectRouterToNetworkRejectReason_UNKNOWN_NLMT
+ case 4:
+ return NLMRejectRouterToNetworkRejectReason_TOO_LONG
+ case 5:
+ return NLMRejectRouterToNetworkRejectReason_SECURITY_ERROR
+ case 6:
+ return NLMRejectRouterToNetworkRejectReason_ADDRESSING_ERROR
+ }
+ return 0
+}
+
+func NLMRejectRouterToNetworkRejectReasonByName(value string) NLMRejectRouterToNetworkRejectReason {
+ switch value {
+ case "OTHER":
+ return NLMRejectRouterToNetworkRejectReason_OTHER
+ case "NOT_DIRECTLY_CONNECTED":
+ return NLMRejectRouterToNetworkRejectReason_NOT_DIRECTLY_CONNECTED
+ case "BUSY":
+ return NLMRejectRouterToNetworkRejectReason_BUSY
+ case "UNKNOWN_NLMT":
+ return NLMRejectRouterToNetworkRejectReason_UNKNOWN_NLMT
+ case "TOO_LONG":
+ return NLMRejectRouterToNetworkRejectReason_TOO_LONG
+ case "SECURITY_ERROR":
+ return NLMRejectRouterToNetworkRejectReason_SECURITY_ERROR
+ case "ADDRESSING_ERROR":
+ return NLMRejectRouterToNetworkRejectReason_ADDRESSING_ERROR
+ }
+ return 0
+}
+
+func CastNLMRejectRouterToNetworkRejectReason(structType interface{}) NLMRejectRouterToNetworkRejectReason {
+ castFunc := func(typ interface{}) NLMRejectRouterToNetworkRejectReason {
+ if sNLMRejectRouterToNetworkRejectReason, ok := typ.(NLMRejectRouterToNetworkRejectReason); ok {
+ return sNLMRejectRouterToNetworkRejectReason
+ }
+ return 0
+ }
+ return castFunc(structType)
+}
+
+func (m NLMRejectRouterToNetworkRejectReason) LengthInBits() uint16 {
+ return 8
+}
+
+func (m NLMRejectRouterToNetworkRejectReason) LengthInBytes() uint16 {
+ return m.LengthInBits() / 8
+}
+
+func NLMRejectRouterToNetworkRejectReasonParse(readBuffer utils.ReadBuffer) (NLMRejectRouterToNetworkRejectReason, error) {
+ val, err := readBuffer.ReadUint8("NLMRejectRouterToNetworkRejectReason", 8)
+ if err != nil {
+ return 0, nil
+ }
+ return NLMRejectRouterToNetworkRejectReasonByValue(val), nil
+}
+
+func (e NLMRejectRouterToNetworkRejectReason) Serialize(writeBuffer utils.WriteBuffer) error {
+ return writeBuffer.WriteUint8("NLMRejectRouterToNetworkRejectReason", 8, uint8(e), utils.WithAdditionalStringRepresentation(e.name()))
+}
+
+func (e NLMRejectRouterToNetworkRejectReason) name() string {
+ switch e {
+ case NLMRejectRouterToNetworkRejectReason_OTHER:
+ return "OTHER"
+ case NLMRejectRouterToNetworkRejectReason_NOT_DIRECTLY_CONNECTED:
+ return "NOT_DIRECTLY_CONNECTED"
+ case NLMRejectRouterToNetworkRejectReason_BUSY:
+ return "BUSY"
+ case NLMRejectRouterToNetworkRejectReason_UNKNOWN_NLMT:
+ return "UNKNOWN_NLMT"
+ case NLMRejectRouterToNetworkRejectReason_TOO_LONG:
+ return "TOO_LONG"
+ case NLMRejectRouterToNetworkRejectReason_SECURITY_ERROR:
+ return "SECURITY_ERROR"
+ case NLMRejectRouterToNetworkRejectReason_ADDRESSING_ERROR:
+ return "ADDRESSING_ERROR"
+ }
+ return ""
+}
+
+func (e NLMRejectRouterToNetworkRejectReason) String() string {
+ return e.name()
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
index f15bb48..33d041f 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
@@ -612,8 +612,9 @@ const (
KnxManufacturer_M_MEX_ELECTRIC_TECHNOLOGY_SHANGHAI_CO___LTD KnxManufacturer = 574
KnxManufacturer_M_SUMAMO KnxManufacturer = 575
KnxManufacturer_M_SVIT KnxManufacturer = 576
- KnxManufacturer_M_ABB___RESERVED KnxManufacturer = 577
- KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED KnxManufacturer = 578
+ KnxManufacturer_M_TECGET KnxManufacturer = 577
+ KnxManufacturer_M_ABB___RESERVED KnxManufacturer = 578
+ KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED KnxManufacturer = 579
)
var KnxManufacturerValues []KnxManufacturer
@@ -1198,6 +1199,7 @@ func init() {
KnxManufacturer_M_MEX_ELECTRIC_TECHNOLOGY_SHANGHAI_CO___LTD,
KnxManufacturer_M_SUMAMO,
KnxManufacturer_M_SVIT,
+ KnxManufacturer_M_TECGET,
KnxManufacturer_M_ABB___RESERVED,
KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED,
}
@@ -3331,10 +3333,14 @@ func (e KnxManufacturer) Number() uint16 {
}
case 577:
{ /* '577' */
- return 43954
+ return 635
}
case 578:
{ /* '578' */
+ return 43954
+ }
+ case 579:
+ { /* '579' */
return 43959
}
case 58:
@@ -5665,10 +5671,14 @@ func (e KnxManufacturer) Name() string {
}
case 577:
{ /* '577' */
- return "ABB - reserved"
+ return "tecget"
}
case 578:
{ /* '578' */
+ return "ABB - reserved"
+ }
+ case 579:
+ { /* '579' */
return "Busch-Jaeger Elektro - reserved"
}
case 58:
@@ -6935,8 +6945,10 @@ func KnxManufacturerByValue(value uint16) KnxManufacturer {
case 576:
return KnxManufacturer_M_SVIT
case 577:
- return KnxManufacturer_M_ABB___RESERVED
+ return KnxManufacturer_M_TECGET
case 578:
+ return KnxManufacturer_M_ABB___RESERVED
+ case 579:
return KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED
case 58:
return KnxManufacturer_M_DAETWYLER
@@ -8098,6 +8110,8 @@ func KnxManufacturerByName(value string) KnxManufacturer {
return KnxManufacturer_M_SUMAMO
case "M_SVIT":
return KnxManufacturer_M_SVIT
+ case "M_TECGET":
+ return KnxManufacturer_M_TECGET
case "M_ABB___RESERVED":
return KnxManufacturer_M_ABB___RESERVED
case "M_BUSCH_JAEGER_ELEKTRO___RESERVED":
@@ -9292,6 +9306,8 @@ func (e KnxManufacturer) name() string {
return "M_SUMAMO"
case KnxManufacturer_M_SVIT:
return "M_SVIT"
+ case KnxManufacturer_M_TECGET:
+ return "M_TECGET"
case KnxManufacturer_M_ABB___RESERVED:
return "M_ABB___RESERVED"
case KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED:
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 eca7687..358e115 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
@@ -32,7 +32,6 @@ import org.apache.plc4x.java.spi.generation.WriteBufferBoxBased;
import org.apache.plc4x.java.spi.utils.Serializable;
import org.apache.plc4x.java.spi.utils.hex.Hex;
import org.assertj.core.api.InstanceOfAssertFactories;
-import org.assertj.core.api.InstanceOfAssertFactory;
import org.junit.jupiter.api.*;
import org.pcap4j.core.*;
import org.pcap4j.packet.Packet;
@@ -54,6 +53,7 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.from;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
@@ -539,7 +539,7 @@ public class RandomPackagesTest {
assertEquals(BACnetObjectType.ANALOG_OUTPUT, baCnetServiceAckReadProperty.getObjectIdentifier().getObjectType());
assertEquals(0, baCnetServiceAckReadProperty.getObjectIdentifier().getInstanceNumber());
assertEquals(BACnetPropertyIdentifier.PRESENT_VALUE, baCnetServiceAckReadProperty.getPropertyIdentifier().getPropertyIdentifier());
- BACnetApplicationTagReal baCnetApplicationTagReal = (BACnetApplicationTagReal) ((BACnetConstructedDataUnspecified) ((BACnetConstructedDataUnspecified) baCnetServiceAckReadProperty.getValues())).getData().get(0).getApplicationTag();
+ BACnetApplicationTagReal baCnetApplicationTagReal = (BACnetApplicationTagReal) ((BACnetConstructedDataUnspecified) baCnetServiceAckReadProperty.getValues()).getData().get(0).getApplicationTag();
assertEquals(0, baCnetApplicationTagReal.getValue());
}),
DynamicTest.dynamicTest("No. 19-26 - Skip Misc 8 packages",
@@ -693,7 +693,7 @@ public class RandomPackagesTest {
assertEquals(BACnetObjectType.DEVICE, baCnetServiceAckReadProperty.getObjectIdentifier().getObjectType());
assertEquals(12345, baCnetServiceAckReadProperty.getObjectIdentifier().getInstanceNumber());
assertEquals(BACnetPropertyIdentifier.OBJECT_IDENTIFIER, baCnetServiceAckReadProperty.getPropertyIdentifier().getPropertyIdentifier());
- BACnetApplicationTagObjectIdentifier objectIdentifier = (BACnetApplicationTagObjectIdentifier) ((BACnetConstructedDataUnspecified) ((BACnetConstructedDataUnspecified) baCnetServiceAckReadProperty.getValues())).getData().get(0).getApplicationTag();
+ BACnetApplicationTagObjectIdentifier objectIdentifier = (BACnetApplicationTagObjectIdentifier) ((BACnetConstructedDataUnspecified) baCnetServiceAckReadProperty.getValues()).getData().get(0).getApplicationTag();
assertEquals(BACnetObjectType.DEVICE, objectIdentifier.getObjectType());
assertEquals(12345, objectIdentifier.getInstanceNumber());
}),
@@ -1293,15 +1293,39 @@ public class RandomPackagesTest {
assertNotNull(baCnetServiceAckReadProperty);
assertThat(baCnetServiceAckReadProperty.getObjectIdentifier()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.STRUCTURED_VIEW, 1L);
assertEquals(BACnetPropertyIdentifier.SUBORDINATE_LIST, baCnetServiceAckReadProperty.getPropertyIdentifier().getPropertyIdentifier());
- List<BACnetConstructedDataElement> data = ((BACnetConstructedDataUnspecified) ((BACnetConstructedDataUnspecified) baCnetServiceAckReadProperty.getValues())).getData();
- assertThat(data.get(0).getContextTag()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.DEVICE, 128L);
- assertThat(data.get(1).getContextTag()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.ANALOG_INPUT, 1L);
- assertThat(data.get(2).getContextTag()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.DEVICE, 128L);
- assertThat(data.get(3).getContextTag()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.ANALOG_INPUT, 3L);
- assertThat(data.get(4).getContextTag()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.DEVICE, 128L);
- assertThat(data.get(5).getContextTag()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.ANALOG_OUTPUT, 1L);
- assertThat(data.get(6).getContextTag()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.DEVICE, 128L);
- assertThat(data.get(7).getContextTag()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.ANALOG_OUTPUT, 3L);
+ List<BACnetConstructedDataElement> data = ((BACnetConstructedDataUnspecified) baCnetServiceAckReadProperty.getValues()).getData();
+ assertThat(data)
+ .element(0)
+ .extracting(BACnetConstructedDataElement::getContextTag)
+ .extracting("objectType", "instanceNumber").contains(BACnetObjectType.DEVICE, 128L);
+ assertThat(data)
+ .element(1)
+ .extracting(BACnetConstructedDataElement::getContextTag)
+ .extracting("objectType", "instanceNumber").contains(BACnetObjectType.ANALOG_INPUT, 1L);
+ assertThat(data)
+ .element(2)
+ .extracting(BACnetConstructedDataElement::getContextTag)
+ .extracting("objectType", "instanceNumber").contains(BACnetObjectType.DEVICE, 128L);
+ assertThat(data)
+ .element(3)
+ .extracting(BACnetConstructedDataElement::getContextTag)
+ .extracting("objectType", "instanceNumber").contains(BACnetObjectType.ANALOG_INPUT, 3L);
+ assertThat(data)
+ .element(4)
+ .extracting(BACnetConstructedDataElement::getContextTag)
+ .extracting("objectType", "instanceNumber").contains(BACnetObjectType.DEVICE, 128L);
+ assertThat(data)
+ .element(5)
+ .extracting(BACnetConstructedDataElement::getContextTag)
+ .extracting("objectType", "instanceNumber").contains(BACnetObjectType.ANALOG_OUTPUT, 1L);
+ assertThat(data)
+ .element(6)
+ .extracting(BACnetConstructedDataElement::getContextTag)
+ .extracting("objectType", "instanceNumber").contains(BACnetObjectType.DEVICE, 128L);
+ assertThat(data)
+ .element(7)
+ .extracting(BACnetConstructedDataElement::getContextTag)
+ .extracting("objectType", "instanceNumber").contains(BACnetObjectType.ANALOG_OUTPUT, 3L);
})
);
}
@@ -1331,7 +1355,7 @@ public class RandomPackagesTest {
assertNotNull(baCnetServiceAckReadProperty);
assertThat(baCnetServiceAckReadProperty.getObjectIdentifier()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.STRUCTURED_VIEW, 1L);
assertEquals(BACnetPropertyIdentifier.SUBORDINATE_LIST, baCnetServiceAckReadProperty.getPropertyIdentifier().getPropertyIdentifier());
- List<BACnetConstructedDataElement> data = ((BACnetConstructedDataUnspecified) ((BACnetConstructedDataUnspecified) baCnetServiceAckReadProperty.getValues())).getData();
+ List<BACnetConstructedDataElement> data = ((BACnetConstructedDataUnspecified) baCnetServiceAckReadProperty.getValues()).getData();
assertThat(data.get(0).getContextTag()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.DEVICE, 4000L);
assertThat(data.get(1).getContextTag()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.ANALOG_INPUT, 1L);
assertThat(data.get(2).getContextTag()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.ANALOG_VALUE, 1L);
@@ -1358,7 +1382,7 @@ public class RandomPackagesTest {
assertNotNull(baCnetServiceAckReadProperty);
assertThat(baCnetServiceAckReadProperty.getObjectIdentifier()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.STRUCTURED_VIEW, 1L);
assertEquals(BACnetPropertyIdentifier.SUBORDINATE_ANNOTATIONS, baCnetServiceAckReadProperty.getPropertyIdentifier().getPropertyIdentifier());
- List<BACnetConstructedDataElement> data = ((BACnetConstructedDataUnspecified) ((BACnetConstructedDataUnspecified) baCnetServiceAckReadProperty.getValues())).getData();
+ List<BACnetConstructedDataElement> data = ((BACnetConstructedDataUnspecified) baCnetServiceAckReadProperty.getValues()).getData();
assertThat(data.get(0).getApplicationTag()).extracting("encoding", "value").contains(BACnetCharacterEncoding.ISO_10646, "Subordinate 1");
assertThat(data.get(1).getApplicationTag()).extracting("encoding", "value").contains(BACnetCharacterEncoding.ISO_10646, "Subordinate 2");
assertThat(data.get(2).getApplicationTag()).extracting("encoding", "value").contains(BACnetCharacterEncoding.ISO_10646, "Subordinate 3");
@@ -1624,7 +1648,7 @@ public class RandomPackagesTest {
assertNotNull(baCnetServiceAckReadProperty);
assertThat(baCnetServiceAckReadProperty.getObjectIdentifier()).extracting("objectType", "instanceNumber").contains(BACnetObjectType.SCHEDULE, 1L);
assertEquals(BACnetPropertyIdentifier.EXCEPTION_SCHEDULE, baCnetServiceAckReadProperty.getPropertyIdentifier().getPropertyIdentifier());
- List<BACnetConstructedDataElement> data = ((BACnetConstructedDataUnspecified) ((BACnetConstructedDataUnspecified) baCnetServiceAckReadProperty.getValues())).getData();
+ List<BACnetConstructedDataElement> data = ((BACnetConstructedDataUnspecified) baCnetServiceAckReadProperty.getValues()).getData();
assertThat(data.get(0).getApplicationTag()).extracting("actualValue").isEqualTo(0L);
})
);
@@ -1656,8 +1680,8 @@ public class RandomPackagesTest {
Collection<DynamicNode> action_list() throws Exception {
TestPcapEvaluator pcapEvaluator = pcapEvaluator("action-list.pcap");
return List.of(
- DynamicTest.dynamicTest("No. 1 - Confirmed-REQ readProperty[107] command,1 action", () -> {
- assertThat(pcapEvaluator.nextBVLC())
+ DynamicTest.dynamicTest("No. 1 - Confirmed-REQ readProperty[107] command,1 action",
+ () -> assertThat(pcapEvaluator.nextBVLC())
.asInstanceOf(InstanceOfAssertFactories.type(BVLCOriginalUnicastNPDU.class))
.extracting(BVLCOriginalUnicastNPDU::getNpdu)
.extracting(NPDU::getApdu)
@@ -1677,8 +1701,7 @@ public class RandomPackagesTest {
.extracting(BACnetConfirmedServiceRequestReadProperty::getArrayIndex)
.extracting(BACnetContextTagUnsignedInteger::getActualValue)
.isEqualTo(1L);
- });
- }),
+ })),
DynamicTest.dynamicTest("No. 2 - Complex-ACK readProperty[107] command,1 action binary-value,0 present-value device,0 analog-value,1 present-value binary-value,2 present-value device,0 analog-value,3 present-value binary-value,4 present-value device,0 analog-value,5 present-value binary-value,6 present-value device,0 analog-value,7 present-value binary-value,8 present-value device,0 analog-value,9 present-value",
() -> assertThat(pcapEvaluator.nextBVLC())
.asInstanceOf(InstanceOfAssertFactories.type(BVLCOriginalUnicastNPDU.class))
@@ -2311,20 +2334,79 @@ public class RandomPackagesTest {
TestPcapEvaluator pcapEvaluator = pcapEvaluator("eventTimeStamp_rp.pcap");
return Arrays.asList(
DynamicTest.dynamicTest("No. 1 - Confirmed-REQ readProperty[148] load-control,1 event-time-stamp",
- () -> {
- BVLC bvlc = pcapEvaluator.nextBVLC();
- dump(bvlc);
- // TODO:
- assumeTrue(false, "not properly implemented. Check manually and add asserts");
- }),
+ () -> assertThat(pcapEvaluator.nextBVLC())
+ .asInstanceOf(InstanceOfAssertFactories.type(BVLCOriginalUnicastNPDU.class))
+ .extracting(BVLCOriginalUnicastNPDU::getNpdu)
+ .extracting(NPDU::getApdu)
+ .asInstanceOf(InstanceOfAssertFactories.type(APDUConfirmedRequest.class))
+ .extracting(APDUConfirmedRequest::getServiceRequest)
+ .asInstanceOf(InstanceOfAssertFactories.type(BACnetConfirmedServiceRequestReadProperty.class))
+ .satisfies(baCnetConfirmedServiceRequestReadProperty -> {
+ assertThat(baCnetConfirmedServiceRequestReadProperty)
+ .extracting(BACnetConfirmedServiceRequestReadProperty::getObjectIdentifier)
+ .extracting(BACnetContextTagObjectIdentifier::getObjectType, BACnetContextTagObjectIdentifier::getInstanceNumber)
+ .containsExactly(BACnetObjectType.LOAD_CONTROL, 1L);
+ assertThat(baCnetConfirmedServiceRequestReadProperty)
+ .extracting(BACnetConfirmedServiceRequestReadProperty::getPropertyIdentifier)
+ .extracting(BACnetContextTagPropertyIdentifier::getPropertyIdentifier)
+ .isEqualTo(BACnetPropertyIdentifier.EVENT_TIME_STAMPS);
+ assertThat(baCnetConfirmedServiceRequestReadProperty)
+ .extracting(BACnetConfirmedServiceRequestReadProperty::getArrayIndex)
+ .isNull();
+ })),
DynamicTest.dynamicTest("No. 2 - Complex-ACK readProperty[148] load-control,1 event-time-stamp",
- () -> {
- BVLC bvlc = pcapEvaluator.nextBVLC();
- dump(bvlc);
- // TODO:
- assumeTrue(false, "not properly implemented. Check manually and add asserts");
- }),
- pcapEvaluator.parseFrom(3)
+ () -> assertThat(pcapEvaluator.nextBVLC())
+ .asInstanceOf(InstanceOfAssertFactories.type(BVLCOriginalUnicastNPDU.class))
+ .extracting(BVLCOriginalUnicastNPDU::getNpdu)
+ .extracting(NPDU::getApdu)
+ .asInstanceOf(InstanceOfAssertFactories.type(APDUComplexAck.class))
+ .extracting(APDUComplexAck::getServiceAck)
+ .asInstanceOf(InstanceOfAssertFactories.type(BACnetServiceAckReadProperty.class))
+ .satisfies(baCnetServiceAckReadProperty -> {
+ assertThat(baCnetServiceAckReadProperty)
+ .extracting(BACnetServiceAckReadProperty::getObjectIdentifier)
+ .extracting(BACnetContextTagObjectIdentifier::getObjectType, BACnetContextTagObjectIdentifier::getInstanceNumber)
+ .containsExactly(BACnetObjectType.LOAD_CONTROL, 1L);
+ assertThat(baCnetServiceAckReadProperty)
+ .extracting(BACnetServiceAckReadProperty::getPropertyIdentifier)
+ .extracting(BACnetContextTagPropertyIdentifier::getPropertyIdentifier)
+ .isEqualTo(BACnetPropertyIdentifier.EVENT_TIME_STAMPS);
+ assertThat(baCnetServiceAckReadProperty)
+ .extracting(BACnetServiceAckReadProperty::getArrayIndex)
+ .isNull();
+ assertThat(baCnetServiceAckReadProperty)
+ .extracting(BACnetServiceAckReadProperty::getValues)
+ .asInstanceOf(InstanceOfAssertFactories.type(BACnetConstructedDataEventTimestamps.class))
+ .satisfies(baCnetConstructedDataEventTimestamps ->
+ assertThat(baCnetConstructedDataEventTimestamps)
+ .extracting(BACnetConstructedDataEventTimestamps::getToOffnormal)
+ .extracting(BACnetContextTagTime::getHourIsWildcard, BACnetContextTagTime::getMinuteIsWildcard, BACnetContextTagTime::getSecondIsWildcard, BACnetContextTagTime::getFractionalIsWildcard)
+ .containsExactly(true, true, true, true)
+ )
+ .satisfies(baCnetConstructedDataEventTimestamps ->
+ assertThat(baCnetConstructedDataEventTimestamps)
+ .extracting(BACnetConstructedDataEventTimestamps::getToFault)
+ .extracting(BACnetContextTagUnsignedInteger::getActualValue)
+ .isEqualTo(0L)
+ )
+ .satisfies(baCnetConstructedDataEventTimestamps->
+ assertThat(baCnetConstructedDataEventTimestamps)
+ .extracting(BACnetConstructedDataEventTimestamps::getToNormal)
+ .satisfies(baCnetDateTime ->
+ assertThat(baCnetDateTime)
+ .extracting(BACnetDateTime::getDateValue)
+ .extracting(BACnetApplicationTagDate::getYearIsWildcard, BACnetApplicationTagDate::getMonthIsWildcard, BACnetApplicationTagDate::getDayOfMonthIsWildcard, BACnetApplicationTagDate::getDayOfWeekIsWildcard)
+ .containsExactly(true, true, true, true)
+ )
+ .satisfies(baCnetDateTime ->
+ assertThat(baCnetDateTime)
+ .extracting(BACnetDateTime::getTimeValue)
+ .extracting(BACnetApplicationTagTime::getFractionalIsWildcard, BACnetApplicationTagTime::getMinuteIsWildcard, BACnetApplicationTagTime::getSecondIsWildcard, BACnetApplicationTagTime::getFractionalIsWildcard)
+ .containsExactly(true, true, true, true)
+ )
+ )
+ ;
+ }))
);
}
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
index 01fd475..79e74dc 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -25,13 +25,12 @@
[typeSwitch bvlcFunction
['0x00' BVLCResult
[simple BVLCResultCode
- code
- ]
+ code ]
]
['0x01' BVLCWriteBroadcastDistributionTable(uint 16 bvlcPayloadLength)
[array BVLCWriteBroadcastDistributionTableEntry
table
- length 'bvlcPayloadLength' ]
+ length 'bvlcPayloadLength' ]
]
['0x02' BVLCReadBroadcastDistributionTable
]
@@ -41,8 +40,7 @@
[array uint 8 ip count '4' ]
[simple uint 16 port ]
[simple NPDU('bvlcPayloadLength - 6')
- npdu
- ]
+ npdu ]
]
['0x05' BVLCRegisterForeignDevice
[simple uint 16 ttl]
@@ -55,18 +53,15 @@
]
['0x09' BVLCDistributeBroadcastToNetwork(uint 16 bvlcPayloadLength)
[simple NPDU('bvlcPayloadLength')
- npdu
- ]
+ npdu ]
]
['0x0A' BVLCOriginalUnicastNPDU(uint 16 bvlcPayloadLength)
[simple NPDU('bvlcPayloadLength')
- npdu
- ]
+ npdu ]
]
['0x0B' BVLCOriginalBroadcastNPDU(uint 16 bvlcPayloadLength)
[simple NPDU('bvlcPayloadLength')
- npdu
- ]
+ npdu ]
]
['0x0C' BVLCSecureBVLL
]
@@ -94,12 +89,10 @@
[virtual uint 16 payloadSubtraction '2 + (sourceLengthAddon + destinationLengthAddon + ((control.destinationSpecified || control.sourceSpecified) ? 1 : 0))' ]
[optional NLM('npduLength - payloadSubtraction')
nlm
- 'control.messageTypeFieldPresent'
- ]
+ 'control.messageTypeFieldPresent' ]
[optional APDU('npduLength - payloadSubtraction')
apdu
- '!control.messageTypeFieldPresent'
- ]
+ '!control.messageTypeFieldPresent' ]
]
[type NPDUControl
@@ -136,7 +129,8 @@
[simple uint 8 performanceIndex ]
]
['0x03' NLMRejectRouterToNetwork(uint 8 messageType)
- [simple uint 8 rejectReason ] // TODO: introduce enum
+ [simple NLMRejectRouterToNetworkRejectReason
+ rejectReason ]
[simple uint 16 destinationNetworkAddress ]
]
['0x04' NLMRouterBusyToNetwork(uint 8 messageType)
@@ -149,15 +143,13 @@
[simple uint 8 numberOfPorts ]
[array NLMInitalizeRoutingTablePortMapping
portMappings
- count 'numberOfPorts'
- ]
+ count 'numberOfPorts' ]
]
['0x07' NLMInitalizeRoutingTableAck(uint 8 messageType)
[simple uint 8 numberOfPorts ]
[array NLMInitalizeRoutingTablePortMapping
portMappings
- count 'numberOfPorts'
- ]
+ count 'numberOfPorts' ]
]
['0x08' NLMEstablishConnectionToNetwork(uint 8 messageType)
[simple uint 16 destinationNetworkAddress ]
@@ -169,6 +161,16 @@
]
]
+[enum uint 8 NLMRejectRouterToNetworkRejectReason
+ ['0' OTHER]
+ ['1' NOT_DIRECTLY_CONNECTED]
+ ['2' BUSY]
+ ['3' UNKNOWN_NLMT]
+ ['4' TOO_LONG]
+ ['5' SECURITY_ERROR]
+ ['6' ADDRESSING_ERROR]
+]
+
[type NLMInitalizeRoutingTablePortMapping
[simple uint 16 destinationNetworkAddress ]
[simple uint 8 portId ]
@@ -180,67 +182,65 @@
[discriminator uint 4 apduType]
[typeSwitch apduType
['0x0' APDUConfirmedRequest
- [simple bit segmentedMessage ]
- [simple bit moreFollows ]
- [simple bit segmentedResponseAccepted ]
- [reserved uint 2 '0' ]
- [simple uint 3 maxSegmentsAccepted ]
- [simple uint 4 maxApduLengthAccepted ]
- [simple uint 8 invokeId ]
- [optional uint 8 sequenceNumber 'segmentedMessage']
- [optional uint 8 proposedWindowSize 'segmentedMessage']
- [simple BACnetConfirmedServiceRequest('apduLength - (3 + (segmentedMessage ? 2 : 0))') serviceRequest]
+ [simple bit segmentedMessage ]
+ [simple bit moreFollows ]
+ [simple bit segmentedResponseAccepted ]
+ [reserved uint 2 '0' ]
+ [simple uint 3 maxSegmentsAccepted ]
+ [simple uint 4 maxApduLengthAccepted ]
+ [simple uint 8 invokeId ]
+ [optional uint 8 sequenceNumber 'segmentedMessage' ]
+ [optional uint 8 proposedWindowSize 'segmentedMessage' ]
+ [simple BACnetConfirmedServiceRequest('apduLength - (3 + (segmentedMessage ? 2 : 0))')
+ serviceRequest ]
]
['0x1' APDUUnconfirmedRequest
- [reserved uint 4 '0' ]
+ [reserved uint 4 '0' ]
[simple BACnetUnconfirmedServiceRequest('apduLength - 1')
- serviceRequest
- ]
+ serviceRequest ]
]
['0x2' APDUSimpleAck
- [reserved uint 4 '0' ]
- [simple uint 8 originalInvokeId]
- [simple uint 8 serviceChoice ]
+ [reserved uint 4 '0' ]
+ [simple uint 8 originalInvokeId ]
+ [simple uint 8 serviceChoice ]
]
['0x3' APDUComplexAck
- [simple bit segmentedMessage ]
- [simple bit moreFollows ]
- [reserved uint 2 '0' ]
- [simple uint 8 originalInvokeId ]
- [optional uint 8 sequenceNumber 'segmentedMessage']
- [optional uint 8 proposedWindowSize 'segmentedMessage']
+ [simple bit segmentedMessage ]
+ [simple bit moreFollows ]
+ [reserved uint 2 '0' ]
+ [simple uint 8 originalInvokeId ]
+ [optional uint 8 sequenceNumber 'segmentedMessage' ]
+ [optional uint 8 proposedWindowSize 'segmentedMessage' ]
[simple BACnetServiceAck
- serviceAck
- ]
+ serviceAck ]
]
['0x4' APDUSegmentAck
- [reserved uint 2 '0x00' ]
- [simple bit negativeAck ]
- [simple bit server ]
- [simple uint 8 originalInvokeId ]
- [simple uint 8 sequenceNumber ]
- [simple uint 8 proposedWindowSize ]
+ [reserved uint 2 '0x00' ]
+ [simple bit negativeAck ]
+ [simple bit server ]
+ [simple uint 8 originalInvokeId ]
+ [simple uint 8 sequenceNumber ]
+ [simple uint 8 proposedWindowSize ]
]
['0x5' APDUError
- [reserved uint 4 '0x00' ]
+ [reserved uint 4 '0x00' ]
[simple uint 8 originalInvokeId]
[simple BACnetError
- error
- ]
+ error ]
]
['0x6' APDUReject
- [reserved uint 4 '0x00' ]
- [simple uint 8 originalInvokeId ]
- [simple uint 8 rejectReason ]
+ [reserved uint 4 '0x00' ]
+ [simple uint 8 originalInvokeId ]
+ [simple uint 8 rejectReason ]
]
['0x7' APDUAbort
- [reserved uint 3 '0x00' ]
- [simple bit server ]
- [simple uint 8 originalInvokeId ]
- [simple uint 8 abortReason ]
+ [reserved uint 3 '0x00' ]
+ [simple bit server ]
+ [simple uint 8 originalInvokeId ]
+ [simple uint 8 abortReason ]
]
[APDUUnknown
- // TODO: find a way to slurp all remaining bytes for analysis
+ [array byte unknownBytes length '(apduLength>0)?(apduLength - 1):0' ]
]
]
]
@@ -357,7 +357,7 @@
['0x1F' BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
]
[BACnetConfirmedServiceRequestConfirmedUnknown
- // TODO: slurp all bytes
+ [array byte unknownBytes length '(len>0)?(len - 1):0']
]
]
]
@@ -368,8 +368,8 @@
['0x00' BACnetUnconfirmedServiceRequestIAm
[simple BACnetApplicationTagObjectIdentifier deviceIdentifier ]
[simple BACnetApplicationTagUnsignedInteger maximumApduLengthAcceptedLength ]
- [simple BACnetSegmentation segmentationSupported ] // TODO: map to enum
- [simple BACnetApplicationTagUnsignedInteger vendorId ] // TODO: vendor list?
+ [simple BACnetSegmentation segmentationSupported ]
+ [simple BACnetApplicationTagUnsignedInteger vendorId ] // TODO: vendor list?
]
['0x01' BACnetUnconfirmedServiceRequestIHave
[simple BACnetApplicationTagObjectIdentifier deviceIdentifier ]
@@ -403,8 +403,8 @@
[optional BACnetContextTagOctetString('3', 'BACnetDataType.OCTET_STRING') objectName 'objectIdentifier == null' ]
]
['0x08' BACnetUnconfirmedServiceRequestWhoIs
- [optional BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER') deviceInstanceRangeLowLimit ]
- [optional BACnetContextTagUnsignedInteger('1', 'BACnetDataType.UNSIGNED_INTEGER') deviceInstanceRangeHighLimit 'deviceInstanceRangeLowLimit != null' ]
+ [optional BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER') deviceInstanceRangeLowLimit ]
+ [optional BACnetContextTagUnsignedInteger('1', 'BACnetDataType.UNSIGNED_INTEGER') deviceInstanceRangeHighLimit 'deviceInstanceRangeLowLimit != null' ]
]
['0x09' BACnetUnconfirmedServiceRequestUTCTimeSynchronization
]
@@ -412,10 +412,13 @@
]
['0x0B' BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple
]
+ [BACnetUnconfirmedServiceRequestUnconfirmedUnknown
+ [array byte unknownBytes length '(len>0)?(len - 1):0']
+ ]
]
]
-// TODO: this is a enum so we should build a static call which maps a enum
+// 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 ]
[virtual bit isSegmentedBoth 'rawData != null && COUNT(rawData.data) == 1 && rawData.data[0] == 0']
@@ -824,6 +827,7 @@
]
]
+// 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 BACnetStatusFlags(uint 8 tagNumber)
[simple BACnetContextTagBitString('tagNumber', 'BACnetDataType.BIT_STRING')
rawBits
@@ -834,7 +838,7 @@
[virtual bit outOfService 'rawBits.data[3]']
]
-// TODO: this is a enum so we should build a static call which maps a enum
+// 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 BACnetAction(uint 8 tagNumber)
[optional BACnetContextTagEnumerated('tagNumber', 'BACnetDataType.ENUMERATED')
rawData
@@ -873,7 +877,7 @@
]
]
-// TODO: this is a enum so we should build a static call which maps a enum
+// 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 BACnetBinaryPV(uint 8 tagNumber)
[optional BACnetContextTagEnumerated('tagNumber', 'BACnetDataType.ENUMERATED')
rawData
@@ -1235,57 +1239,56 @@
]
[type BACnetConstructedData(uint 8 tagNumber, BACnetObjectType objectType, BACnetContextTagPropertyIdentifier propertyIdentifierArgument)
- [simple BACnetOpeningTag('tagNumber', 'BACnetDataType.OPENING_TAG')
- openingTag
- ]
+ [simple BACnetOpeningTag('tagNumber', 'BACnetDataType.OPENING_TAG')
+ openingTag ]
+ [virtual BACnetPropertyIdentifier
+ propertyIdentifierEnum 'propertyIdentifierArgument.propertyIdentifier']
// TODO: maybe its better to typeswitch the elements
- [typeSwitch objectType, propertyIdentifierArgument
+ [typeSwitch objectType, propertyIdentifierEnum
['COMMAND' BACnetConstructedDataCommand
[simple BACnetOpeningTag('0', 'BACnetDataType.OPENING_TAG')
- innerOpeningTag
- ]
+ innerOpeningTag ]
[array BACnetActionCommand
action
terminated
- 'STATIC_CALL("isBACnetConstructedDataClosingTag", readBuffer, false, 0)'
- ]
+ 'STATIC_CALL("isBACnetConstructedDataClosingTag", readBuffer, false, 0)' ]
[simple BACnetClosingTag('0', 'BACnetDataType.CLOSING_TAG')
- innerClosingTag
- ]
+ innerClosingTag ]
]
['LIFE_SAFETY_ZONE' BACnetConstructedDataLifeSafetyZone
[array BACnetContextTagObjectIdentifier('1', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')
zones
terminated
- 'STATIC_CALL("isBACnetConstructedDataClosingTag", readBuffer, false, tagNumber)'
- ]
+ 'STATIC_CALL("isBACnetConstructedDataClosingTag", readBuffer, false, tagNumber)' ]
+ ]
+ [*, 'EVENT_TIME_STAMPS' BACnetConstructedDataEventTimestamps
+ [simple BACnetContextTagTime('0', 'BACnetDataType.TIME')
+ toOffnormal ]
+ [simple BACnetContextTagUnsignedInteger('1', 'BACnetDataType.UNSIGNED_INTEGER')
+ toFault ]
+ [simple BACnetDateTime('2')
+ toNormal ]
]
[BACnetConstructedDataUnspecified
[array BACnetConstructedDataElement('objectType', 'propertyIdentifierArgument')
data
terminated
- 'STATIC_CALL("isBACnetConstructedDataClosingTag", readBuffer, false, tagNumber)'
- ]
+ 'STATIC_CALL("isBACnetConstructedDataClosingTag", readBuffer, false, tagNumber)' ]
[virtual bit hasData 'COUNT(data) == 0']
[optional BACnetContextTagPropertyIdentifier('0', 'BACnetDataType.BACNET_PROPERTY_IDENTIFIER')
propertyIdentifier
-
- 'hasData'
- ]
+ 'hasData' ]
[optional BACnetApplicationTag
- content 'hasData'
- ]
+ content 'hasData' ]
]
]
[simple BACnetClosingTag('tagNumber', 'BACnetDataType.CLOSING_TAG')
- closingTag
- ]
+ closingTag ]
]
[type BACnetConstructedDataElement(BACnetObjectType objectType, BACnetContextTagPropertyIdentifier propertyIdentifier)
[peek BACnetTagHeader
- peekedTagHeader
- ]
+ peekedTagHeader ]
[virtual uint 8 peekedTagNumber 'peekedTagHeader.actualTagNumber']
[virtual bit isApplicationTag 'peekedTagHeader.tagClass == TagClass.APPLICATION_TAGS' ]
[virtual bit isConstructedData '!isApplicationTag && peekedTagHeader.actualLength == 0x6' ]
@@ -1310,669 +1313,669 @@
]
[enum uint 1 TagClass
- ['0x0' APPLICATION_TAGS ]
- ['0x1' CONTEXT_SPECIFIC_TAGS ]
+ ['0x0' APPLICATION_TAGS ]
+ ['0x1' CONTEXT_SPECIFIC_TAGS ]
]
[enum uint 8 BACnetDataType
- ['0' NULL ]
- ['1' BOOLEAN ]
- ['2' UNSIGNED_INTEGER ]
- ['3' SIGNED_INTEGER ]
- ['4' REAL ]
- ['5' DOUBLE ]
- ['6' OCTET_STRING ]
- ['7' CHARACTER_STRING ]
- ['8' BIT_STRING ]
- ['9' ENUMERATED ]
- ['10' DATE ]
- ['11' TIME ]
- ['12' BACNET_OBJECT_IDENTIFIER ]
+ ['0' NULL ]
+ ['1' BOOLEAN ]
+ ['2' UNSIGNED_INTEGER ]
+ ['3' SIGNED_INTEGER ]
+ ['4' REAL ]
+ ['5' DOUBLE ]
+ ['6' OCTET_STRING ]
+ ['7' CHARACTER_STRING ]
+ ['8' BIT_STRING ]
+ ['9' ENUMERATED ]
+ ['10' DATE ]
+ ['11' TIME ]
+ ['12' BACNET_OBJECT_IDENTIFIER ]
//////////
//////////
//
// Custom plc4x helper values below here
- ['16' BACNET_PROPERTY_IDENTIFIER ]
- ['17' BACNET_DEVICE_STATE ]
- ['20' OPENING_TAG ]
- ['21' CLOSING_TAG ]
+ ['16' BACNET_PROPERTY_IDENTIFIER ]
+ ['17' BACNET_DEVICE_STATE ]
+ ['20' OPENING_TAG ]
+ ['21' CLOSING_TAG ]
// Event Related tags
- ['30' EVENT_TYPE ]
- ['31' EVENT_STATE ]
- ['32' NOTIFY_TYPE ]
+ ['30' EVENT_TYPE ]
+ ['31' EVENT_STATE ]
+ ['32' NOTIFY_TYPE ]
//
//////////
//////////
]
[enum byte BACnetCharacterEncoding
- ['0x0' ISO_10646 ] // UTF-8
- ['0x1' IBM_Microsoft_DBCS ]
- ['0x2' JIS_X_0208 ]
- ['0x3' ISO_10646_4 ] // (UCS-4)
- ['0x4' ISO_10646_2 ] // (UCS-2)
- ['0x5' ISO_8859_1 ]
+ ['0x0' ISO_10646 ] // UTF-8
+ ['0x1' IBM_Microsoft_DBCS ]
+ ['0x2' JIS_X_0208 ]
+ ['0x3' ISO_10646_4 ] // (UCS-4)
+ ['0x4' ISO_10646_2 ] // (UCS-2)
+ ['0x5' ISO_8859_1 ]
]
[enum uint 4 BACnetNetworkType
- ['0x0' ETHERNET ]
- ['0x1' ARCNET ]
- ['0x2' MSTP ]
- ['0x3' PTP ]
- ['0x4' LONTALK ]
- ['0x5' IPV4 ]
- ['0x6' ZIGBEE ]
- ['0x7' VIRTUAL ]
- ['0x8' REMOVED_NON_BACNET ]
- ['0x9' IPV6 ]
- ['0xA' SERIAL ]
+ ['0x0' ETHERNET ]
+ ['0x1' ARCNET ]
+ ['0x2' MSTP ]
+ ['0x3' PTP ]
+ ['0x4' LONTALK ]
+ ['0x5' IPV4 ]
+ ['0x6' ZIGBEE ]
+ ['0x7' VIRTUAL ]
+ ['0x8' REMOVED_NON_BACNET ]
+ ['0x9' IPV6 ]
+ ['0xA' SERIAL ]
]
[enum uint 8 BACnetDeviceState
- ['0x0' COLDSTART ]
- ['0x1' WARMSTART ]
- ['0x2' ACTIVATE_CHANGES ]
- ['0x3' STARTBACKUP ]
- ['0x4' ENDBACKUP ]
- ['0x5' STARTRESTORE ]
- ['0x6' ENDRESTORE ]
- ['0x7' ABORTRESTORE ]
+ ['0x0' COLDSTART ]
+ ['0x1' WARMSTART ]
+ ['0x2' ACTIVATE_CHANGES ]
+ ['0x3' STARTBACKUP ]
+ ['0x4' ENDBACKUP ]
+ ['0x5' STARTRESTORE ]
+ ['0x6' ENDRESTORE ]
+ ['0x7' ABORTRESTORE ]
]
[enum uint 8 BACnetNodeType
- ['0x00' UNKNOWN ]
- ['0x01' SYSTEM ]
- ['0x02' NETWORK ]
- ['0x03' DEVICE ]
- ['0x04' ORGANIZATIONAL ]
- ['0x05' AREA ]
- ['0x06' EQUIPMENT ]
- ['0x07' POINT ]
- ['0x08' COLLECTION ]
- ['0x09' PROPERTY ]
- ['0x0A' FUNCTIONAL ]
- ['0x0B' OTHER ]
- ['0x0C' SUBSYSTEM ]
- ['0x0D' BUILDING ]
- ['0x0E' FLOOR ]
- ['0x0F' SECTION ]
- ['0x10' MODULE ]
- ['0x11' TREE ]
- ['0x12' MEMBER ]
- ['0x13' PROTOCOL ]
- ['0x14' ROOM ]
- ['0x15' ZONE ]
+ ['0x00' UNKNOWN ]
+ ['0x01' SYSTEM ]
+ ['0x02' NETWORK ]
+ ['0x03' DEVICE ]
+ ['0x04' ORGANIZATIONAL ]
+ ['0x05' AREA ]
+ ['0x06' EQUIPMENT ]
+ ['0x07' POINT ]
+ ['0x08' COLLECTION ]
+ ['0x09' PROPERTY ]
+ ['0x0A' FUNCTIONAL ]
+ ['0x0B' OTHER ]
+ ['0x0C' SUBSYSTEM ]
+ ['0x0D' BUILDING ]
+ ['0x0E' FLOOR ]
+ ['0x0F' SECTION ]
+ ['0x10' MODULE ]
+ ['0x11' TREE ]
+ ['0x12' MEMBER ]
+ ['0x13' PROTOCOL ]
+ ['0x14' ROOM ]
+ ['0x15' ZONE ]
]
[enum uint 8 BACnetNotifyType
- ['0x0' ALARM ]
- ['0x1' EVENT ]
- ['0x2' ACK_NOTIFICATION ]
+ ['0x0' ALARM ]
+ ['0x1' EVENT ]
+ ['0x2' ACK_NOTIFICATION ]
]
[enum uint 9 BACnetEventType
- ['0' CHANGE_OF_BITSTRING ]
- ['1' CHANGE_OF_STATE ]
- ['2' CHANGE_OF_VALUE ]
- ['3' COMMAND_FAILURE ]
- ['4' FLOATING_LIMIT ]
- ['5' OUT_OF_RANGE ]
- ['8' CHANGE_OF_LIFE_SAFETY ]
- ['9' EXTENDED ]
- ['10' BUFFER_READY ]
- ['11' UNSIGNED_RANGE ]
- ['13' ACCESS_EVENT ]
- ['14' DOUBLE_OUT_OF_RANGE ]
- ['15' SIGNED_OUT_OF_RANGE ]
- ['16' UNSIGNED_OUT_OF_RANGE ]
- ['17' CHANGE_OF_CHARACTERSTRING ]
- ['18' CHANGE_OF_STATUS_FLAGS ]
- ['19' CHANGE_OF_RELIABILITY ]
- ['20' NONE ]
- ['21' CHANGE_OF_DISCRETE_VALUE ]
- ['22' CHANGE_OF_TIMER ]
+ ['0' CHANGE_OF_BITSTRING ]
+ ['1' CHANGE_OF_STATE ]
+ ['2' CHANGE_OF_VALUE ]
+ ['3' COMMAND_FAILURE ]
+ ['4' FLOATING_LIMIT ]
+ ['5' OUT_OF_RANGE ]
+ ['8' CHANGE_OF_LIFE_SAFETY ]
+ ['9' EXTENDED ]
+ ['10' BUFFER_READY ]
+ ['11' UNSIGNED_RANGE ]
+ ['13' ACCESS_EVENT ]
+ ['14' DOUBLE_OUT_OF_RANGE ]
+ ['15' SIGNED_OUT_OF_RANGE ]
+ ['16' UNSIGNED_OUT_OF_RANGE ]
+ ['17' CHANGE_OF_CHARACTERSTRING ]
+ ['18' CHANGE_OF_STATUS_FLAGS ]
+ ['19' CHANGE_OF_RELIABILITY ]
+ ['20' NONE ]
+ ['21' CHANGE_OF_DISCRETE_VALUE ]
+ ['22' CHANGE_OF_TIMER ]
// plc4x definition
- ['0xFFFF' VENDOR_PROPRIETARY_VALUE]
+ ['0xFFFF' VENDOR_PROPRIETARY_VALUE ]
]
[enum uint 9 BACnetEventState
- ['0' NORMAL ]
- ['1' FAULT ]
- ['2' OFFNORMAL ]
- ['3' HIGH_LIMIT ]
- ['4' LOW_LIMIT ]
- ['5' LIFE_SAVETY_ALARM ]
+ ['0' NORMAL ]
+ ['1' FAULT ]
+ ['2' OFFNORMAL ]
+ ['3' HIGH_LIMIT ]
+ ['4' LOW_LIMIT ]
+ ['5' LIFE_SAVETY_ALARM ]
// plc4x definition
- ['0xFFFF' VENDOR_PROPRIETARY_VALUE]
+ ['0xFFFF' VENDOR_PROPRIETARY_VALUE ]
]
[enum uint 10 BACnetObjectType
- ['32' ACCESS_CREDENTIAL]
- ['30' ACCESS_DOOR]
- ['33' ACCESS_POINT]
- ['34' ACCESS_RIGHTS]
- ['35' ACCESS_USER]
- ['36' ACCESS_ZONE]
- ['23' ACCUMULATOR]
- ['52' ALERT_ENROLLMENT]
- ['0' ANALOG_INPUT]
- ['1' ANALOG_OUTPUT]
- ['2' ANALOG_VALUE]
- ['18' AVERAGING]
- ['3' BINARY_INPUT]
- ['55' BINARY_LIGHTING_OUTPUT]
- ['4' BINARY_OUTPUT]
- ['5' BINARY_VALUE]
- ['39' BITSTRING_VALUE]
- ['6' CALENDAR]
- ['53' CHANNEL]
- ['40' CHARACTERSTRING_VALUE]
- ['7' COMMAND]
- ['37' CREDENTIAL_DATA_INPUT]
- ['41' DATEPATTERN_VALUE]
- ['42' DATE_VALUE]
- ['43' DATETIMEPATTERN_VALUE]
- ['44' DATETIME_VALUE]
- ['8' DEVICE]
- ['57' ELEVATOR_GROUP]
- ['58' ESCALATOR]
- ['9' EVENT_ENROLLMENT]
- ['25' EVENT_LOG]
- ['10' FILE]
- ['26' GLOBAL_GROUP]
- ['11' GROUP]
- ['45' INTEGER_VALUE]
- ['46' LARGE_ANALOG_VALUE]
- ['21' LIFE_SAFETY_POINT]
- ['22' LIFE_SAFETY_ZONE]
- ['59' LIFT]
- ['54' LIGHTING_OUTPUT]
- ['28' LOAD_CONTROL]
- ['12' LOOP]
- ['13' MULTI_STATE_INPUT]
- ['14' MULTI_STATE_OUTPUT]
- ['19' MULTI_STATE_VALUE]
- ['56' NETWORK_PORT]
- ['38' NETWORK_SECURITY]
- ['15' NOTIFICATION_CLASS]
- ['51' NOTIFICATION_FORWARDER]
- ['47' OCTETSTRING_VALUE]
- ['48' POSITIVE_INTEGER_VALUE]
- ['16' PROGRAM]
- ['24' PULSE_CONVERTER]
- ['17' SCHEDULE]
- ['29' STRUCTURED_VIEW]
- ['49' TIMEPATTERN_VALUE]
- ['50' TIME_VALUE]
- ['31' TIMER]
- ['20' TREND_LOG]
- ['27' TREND_LOG_MULTIPLE]
+ ['32' ACCESS_CREDENTIAL ]
+ ['30' ACCESS_DOOR ]
+ ['33' ACCESS_POINT ]
+ ['34' ACCESS_RIGHTS ]
+ ['35' ACCESS_USER ]
+ ['36' ACCESS_ZONE ]
+ ['23' ACCUMULATOR ]
+ ['52' ALERT_ENROLLMENT ]
+ ['0' ANALOG_INPUT ]
+ ['1' ANALOG_OUTPUT ]
+ ['2' ANALOG_VALUE ]
+ ['18' AVERAGING ]
+ ['3' BINARY_INPUT ]
+ ['55' BINARY_LIGHTING_OUTPUT ]
+ ['4' BINARY_OUTPUT ]
+ ['5' BINARY_VALUE ]
+ ['39' BITSTRING_VALUE ]
+ ['6' CALENDAR ]
+ ['53' CHANNEL ]
+ ['40' CHARACTERSTRING_VALUE ]
+ ['7' COMMAND ]
+ ['37' CREDENTIAL_DATA_INPUT ]
+ ['41' DATEPATTERN_VALUE ]
+ ['42' DATE_VALUE ]
+ ['43' DATETIMEPATTERN_VALUE ]
+ ['44' DATETIME_VALUE ]
+ ['8' DEVICE ]
+ ['57' ELEVATOR_GROUP ]
+ ['58' ESCALATOR ]
+ ['9' EVENT_ENROLLMENT ]
+ ['25' EVENT_LOG ]
+ ['10' FILE ]
+ ['26' GLOBAL_GROUP ]
+ ['11' GROUP ]
+ ['45' INTEGER_VALUE ]
+ ['46' LARGE_ANALOG_VALUE ]
+ ['21' LIFE_SAFETY_POINT ]
+ ['22' LIFE_SAFETY_ZONE ]
+ ['59' LIFT ]
+ ['54' LIGHTING_OUTPUT ]
+ ['28' LOAD_CONTROL ]
+ ['12' LOOP ]
+ ['13' MULTI_STATE_INPUT ]
+ ['14' MULTI_STATE_OUTPUT ]
+ ['19' MULTI_STATE_VALUE ]
+ ['56' NETWORK_PORT ]
+ ['38' NETWORK_SECURITY ]
+ ['15' NOTIFICATION_CLASS ]
+ ['51' NOTIFICATION_FORWARDER ]
+ ['47' OCTETSTRING_VALUE ]
+ ['48' POSITIVE_INTEGER_VALUE ]
+ ['16' PROGRAM ]
+ ['24' PULSE_CONVERTER ]
+ ['17' SCHEDULE ]
+ ['29' STRUCTURED_VIEW ]
+ ['49' TIMEPATTERN_VALUE ]
+ ['50' TIME_VALUE ]
+ ['31' TIMER ]
+ ['20' TREND_LOG ]
+ ['27' TREND_LOG_MULTIPLE ]
// plc4x Value
- ['0x3FF' VENDOR_PROPRIETARY_VALUE]
+ ['0x3FF' VENDOR_PROPRIETARY_VALUE ]
]
[enum uint 32 BACnetPropertyIdentifier
- ['244' ABSENTEE_LIMIT]
- ['175' ACCEPTED_MODES]
- ['245' ACCESS_ALARM_EVENTS]
- ['246' ACCESS_DOORS]
- ['247' ACCESS_EVENT]
- ['248' ACCESS_EVENT_AUTHENTICATION_FACTOR]
- ['249' ACCESS_EVENT_CREDENTIAL]
- ['322' ACCESS_EVENT_TAG]
- ['250' ACCESS_EVENT_TIME]
- ['251' ACCESS_TRANSACTION_EVENTS]
- ['252' ACCOMPANIMENT]
- ['253' ACCOMPANIMENT_TIME]
- ['1' ACK_REQUIRED]
- ['0' ACKED_TRANSITIONS]
- ['2' ACTION]
- ['3' ACTION_TEXT]
- ['254' ACTIVATION_TIME]
- ['255' ACTIVE_AUTHENTICATION_POLICY]
- ['481' ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS]
- ['152' ACTIVE_COV_SUBSCRIPTIONS]
- ['4' ACTIVE_TEXT]
- ['5' ACTIVE_VT_SESSIONS]
- ['212' ACTUAL_SHED_LEVEL]
- ['176' ADJUST_VALUE]
- ['6' ALARM_VALUE]
- ['7' ALARM_VALUES]
- ['193' ALIGN_INTERVALS]
- ['8' ALL]
- ['9' ALL_WRITES_SUCCESSFUL]
- ['365' ALLOW_GROUP_DELAY_INHIBIT]
- ['399' APDU_LENGTH]
- ['10' APDU_SEGMENT_TIMEOUT]
- ['11' APDU_TIMEOUT]
- ['12' APPLICATION_SOFTWARE_VERSION]
- ['13' ARCHIVE]
- ['256' ASSIGNED_ACCESS_RIGHTS]
- ['447' ASSIGNED_LANDING_CALLS]
- ['124' ATTEMPTED_SAMPLES]
- ['257' AUTHENTICATION_FACTORS]
- ['258' AUTHENTICATION_POLICY_LIST]
- ['259' AUTHENTICATION_POLICY_NAMES]
- ['260' AUTHENTICATION_STATUS]
- ['364' AUTHORIZATION_EXEMPTIONS]
- ['261' AUTHORIZATION_MODE]
- ['169' AUTO_SLAVE_DISCOVERY]
- ['125' AVERAGE_VALUE]
- ['338' BACKUP_AND_RESTORE_STATE]
- ['153' BACKUP_FAILURE_TIMEOUT]
- ['339' BACKUP_PREPARATION_TIME]
- ['407' BACNET_IP_GLOBAL_ADDRESS]
- ['408' BACNET_IP_MODE]
- ['409' BACNET_IP_MULTICAST_ADDRESS]
- ['410' BACNET_IP_NAT_TRAVERSAL]
- ['412' BACNET_IP_UDP_PORT]
- ['435' BACNET_IPV6_MODE]
- ['438' BACNET_IPV6_UDP_PORT]
- ['440' BACNET_IPV6_MULTICAST_ADDRESS]
- ['327' BASE_DEVICE_SECURITY_POLICY]
- ['413' BBMD_ACCEPT_FD_REGISTRATIONS]
- ['414' BBMD_BROADCAST_DISTRIBUTION_TABLE]
- ['415' BBMD_FOREIGN_DEVICE_TABLE]
- ['262' BELONGS_TO]
- ['14' BIAS]
- ['342' BIT_MASK]
- ['343' BIT_TEXT]
- ['373' BLINK_WARN_ENABLE]
- ['126' BUFFER_SIZE]
- ['448' CAR_ASSIGNED_DIRECTION]
- ['449' CAR_DOOR_COMMAND]
- ['450' CAR_DOOR_STATUS]
- ['451' CAR_DOOR_TEXT]
- ['452' CAR_DOOR_ZONE]
- ['453' CAR_DRIVE_STATUS]
- ['454' CAR_LOAD]
- ['455' CAR_LOAD_UNITS]
- ['456' CAR_MODE]
- ['457' CAR_MOVING_DIRECTION]
- ['458' CAR_POSITION]
- ['15' CHANGE_OF_STATE_COUNT]
- ['16' CHANGE_OF_STATE_TIME]
- ['416' CHANGES_PENDING]
- ['366' CHANNEL_NUMBER]
- ['127' CLIENT_COV_INCREMENT]
- ['417' COMMAND]
- ['430' COMMAND_TIME_ARRAY]
- ['154' CONFIGURATION_FILES]
- ['367' CONTROL_GROUPS]
- ['19' CONTROLLED_VARIABLE_REFERENCE]
- ['20' CONTROLLED_VARIABLE_UNITS]
- ['21' CONTROLLED_VARIABLE_VALUE]
- ['177' COUNT]
- ['178' COUNT_BEFORE_CHANGE]
- ['179' COUNT_CHANGE_TIME]
- ['22' COV_INCREMENT]
- ['180' COV_PERIOD]
- ['128' COV_RESUBSCRIPTION_INTERVAL]
- ['349' COVU_PERIOD]
- ['350' COVU_RECIPIENTS]
- ['263' CREDENTIAL_DISABLE]
- ['264' CREDENTIAL_STATUS]
- ['265' CREDENTIALS]
- ['266' CREDENTIALS_IN_ZONE]
- ['431' CURRENT_COMMAND_PRIORITY]
- ['155' DATABASE_REVISION]
- ['23' DATE_LIST]
- ['24' DAYLIGHT_SAVINGS_STATUS]
- ['267' DAYS_REMAINING]
- ['25' DEADBAND]
- ['374' DEFAULT_FADE_TIME]
- ['375' DEFAULT_RAMP_RATE]
- ['376' DEFAULT_STEP_INCREMENT]
- ['490' DEFAULT_SUBORDINATE_RELATIONSHIP]
- ['393' DEFAULT_TIMEOUT]
- ['484' DEPLOYED_PROFILE_LOCATION]
- ['26' DERIVATIVE_CONSTANT]
- ['27' DERIVATIVE_CONSTANT_UNITS]
- ['28' DESCRIPTION]
- ['29' DESCRIPTION_OF_HALT]
- ['30' DEVICE_ADDRESS_BINDING]
- ['31' DEVICE_TYPE]
- ['156' DIRECT_READING]
- ['328' DISTRIBUTION_KEY_REVISION]
- ['329' DO_NOT_HIDE]
- ['226' DOOR_ALARM_STATE]
- ['227' DOOR_EXTENDED_PULSE_TIME]
- ['228' DOOR_MEMBERS]
- ['229' DOOR_OPEN_TOO_LONG_TIME]
- ['230' DOOR_PULSE_TIME]
- ['231' DOOR_STATUS]
- ['232' DOOR_UNLOCK_DELAY_TIME]
- ['213' DUTY_WINDOW]
- ['32' EFFECTIVE_PERIOD]
- ['386' EGRESS_ACTIVE]
- ['377' EGRESS_TIME]
- ['33' ELAPSED_ACTIVE_TIME]
- ['459' ELEVATOR_GROUP]
- ['133' ENABLE]
- ['460' ENERGY_METER]
- ['461' ENERGY_METER_REF]
- ['268' ENTRY_POINTS]
- ['34' ERROR_LIMIT]
- ['462' ESCALATOR_MODE]
- ['354' EVENT_ALGORITHM_INHIBIT]
- ['355' EVENT_ALGORITHM_INHIBIT_REF]
- ['353' EVENT_DETECTION_ENABLE]
- ['35' EVENT_ENABLE]
- ['351' EVENT_MESSAGE_TEXTS]
- ['352' EVENT_MESSAGE_TEXTS_CONFIG]
- ['83' EVENT_PARAMETERS]
- ['36' EVENT_STATE]
- ['130' EVENT_TIME_STAMPS]
- ['37' EVENT_TYPE]
- ['38' EXCEPTION_SCHEDULE]
- ['368' EXECUTION_DELAY]
- ['269' EXIT_POINTS]
- ['214' EXPECTED_SHED_LEVEL]
- ['270' EXPIRATION_TIME]
- ['271' EXTENDED_TIME_ENABLE]
- ['272' FAILED_ATTEMPT_EVENTS]
- ['273' FAILED_ATTEMPTS]
- ['274' FAILED_ATTEMPTS_TIME]
- ['388' FAULT_HIGH_LIMIT]
- ['389' FAULT_LOW_LIMIT]
- ['358' FAULT_PARAMETERS]
- ['463' FAULT_SIGNALS]
- ['359' FAULT_TYPE]
- ['39' FAULT_VALUES]
- ['418' FD_BBMD_ADDRESS]
- ['419' FD_SUBSCRIPTION_LIFETIME]
- ['40' FEEDBACK_VALUE]
- ['41' FILE_ACCESS_METHOD]
- ['42' FILE_SIZE]
- ['43' FILE_TYPE]
- ['44' FIRMWARE_REVISION]
- ['464' FLOOR_TEXT]
- ['215' FULL_DUTY_BASELINE]
- ['323' GLOBAL_IDENTIFIER]
- ['465' GROUP_ID]
- ['346' GROUP_MEMBER_NAMES]
- ['345' GROUP_MEMBERS]
- ['467' GROUP_MODE]
- ['45' HIGH_LIMIT]
- ['468' HIGHER_DECK]
- ['47' IN_PROCESS]
- ['378' IN_PROGRESS]
- ['46' INACTIVE_TEXT]
- ['394' INITIAL_TIMEOUT]
- ['181' INPUT_REFERENCE]
- ['469' INSTALLATION_ID]
- ['48' INSTANCE_OF]
- ['379' INSTANTANEOUS_POWER]
- ['49' INTEGRAL_CONSTANT]
- ['50' INTEGRAL_CONSTANT_UNITS]
- ['387' INTERFACE_VALUE]
- ['195' INTERVAL_OFFSET]
- ['400' IP_ADDRESS]
- ['401' IP_DEFAULT_GATEWAY]
- ['402' IP_DHCP_ENABLE]
- ['403' IP_DHCP_LEASE_TIME]
- ['404' IP_DHCP_LEASE_TIME_REMAINING]
- ['405' IP_DHCP_SERVER]
- ['406' IP_DNS_SERVER]
- ['411' IP_SUBNET_MASK]
- ['436' IPV6_ADDRESS]
- ['442' IPV6_AUTO_ADDRESSING_ENABLE]
- ['439' IPV6_DEFAULT_GATEWAY]
- ['443' IPV6_DHCP_LEASE_TIME]
- ['444' IPV6_DHCP_LEASE_TIME_REMAINING]
- ['445' IPV6_DHCP_SERVER]
- ['441' IPV6_DNS_SERVER]
- ['437' IPV6_PREFIX_LENGTH]
- ['446' IPV6_ZONE_INDEX]
- ['344' IS_UTC]
- ['330' KEY_SETS]
- ['471' LANDING_CALL_CONTROL]
- ['470' LANDING_CALLS]
- ['472' LANDING_DOOR_STATUS]
- ['275' LAST_ACCESS_EVENT]
- ['276' LAST_ACCESS_POINT]
- ['432' LAST_COMMAND_TIME]
- ['277' LAST_CREDENTIAL_ADDED]
- ['278' LAST_CREDENTIAL_ADDED_TIME]
- ['279' LAST_CREDENTIAL_REMOVED]
- ['280' LAST_CREDENTIAL_REMOVED_TIME]
- ['331' LAST_KEY_SERVER]
- ['173' LAST_NOTIFY_RECORD]
- ['369' LAST_PRIORITY]
- ['196' LAST_RESTART_REASON]
- ['157' LAST_RESTORE_TIME]
- ['395' LAST_STATE_CHANGE]
- ['281' LAST_USE_TIME]
- ['166' LIFE_SAFETY_ALARM_VALUES]
- ['380' LIGHTING_COMMAND]
- ['381' LIGHTING_COMMAND_DEFAULT_PRIORITY]
- ['52' LIMIT_ENABLE]
- ['182' LIMIT_MONITORING_INTERVAL]
- ['420' LINK_SPEED]
- ['422' LINK_SPEED_AUTONEGOTIATE]
- ['421' LINK_SPEEDS]
- ['53' LIST_OF_GROUP_MEMBERS]
- ['54' LIST_OF_OBJECT_PROPERTY_REFERENCES]
- ['56' LOCAL_DATE]
- ['360' LOCAL_FORWARDING_ONLY]
- ['57' LOCAL_TIME]
- ['58' LOCATION]
- ['233' LOCK_STATUS]
- ['282' LOCKOUT]
- ['283' LOCKOUT_RELINQUISH_TIME]
- ['131' LOG_BUFFER]
- ['132' LOG_DEVICE_OBJECT_PROPERTY]
- ['134' LOG_INTERVAL]
- ['183' LOGGING_OBJECT]
- ['184' LOGGING_RECORD]
- ['197' LOGGING_TYPE]
- ['390' LOW_DIFF_LIMIT]
- ['59' LOW_LIMIT]
- ['473' LOWER_DECK]
- ['423' MAC_ADDRESS]
- ['474' MACHINE_ROOM_ID]
- ['158' MAINTENANCE_REQUIRED]
- ['475' MAKING_CAR_CALL]
- ['60' MANIPULATED_VARIABLE_REFERENCE]
- ['170' MANUAL_SLAVE_ADDRESS_BINDING]
- ['234' MASKED_ALARM_VALUES]
- ['382' MAX_ACTUAL_VALUE]
- ['62' MAX_APDU_LENGTH_ACCEPTED]
- ['285' MAX_FAILED_ATTEMPTS]
- ['63' MAX_INFO_FRAMES]
- ['64' MAX_MASTER]
- ['65' MAX_PRES_VALUE]
- ['167' MAX_SEGMENTS_ACCEPTED]
- ['61' MAXIMUM_OUTPUT]
- ['135' MAXIMUM_VALUE]
- ['149' MAXIMUM_VALUE_TIMESTAMP]
- ['159' MEMBER_OF]
- ['347' MEMBER_STATUS_FLAGS]
- ['286' MEMBERS]
- ['383' MIN_ACTUAL_VALUE]
- ['69' MIN_PRES_VALUE]
- ['66' MINIMUM_OFF_TIME]
- ['67' MINIMUM_ON_TIME]
- ['68' MINIMUM_OUTPUT]
- ['136' MINIMUM_VALUE]
- ['150' MINIMUM_VALUE_TIMESTAMP]
- ['160' MODE]
- ['70' MODEL_NAME]
- ['71' MODIFICATION_DATE]
- ['287' MUSTER_POINT]
- ['288' NEGATIVE_ACCESS_RULES]
- ['332' NETWORK_ACCESS_SECURITY_POLICIES]
- ['424' NETWORK_INTERFACE_NAME]
- ['425' NETWORK_NUMBER]
- ['426' NETWORK_NUMBER_QUALITY]
- ['427' NETWORK_TYPE]
- ['476' NEXT_STOPPING_FLOOR]
- ['207' NODE_SUBTYPE]
- ['208' NODE_TYPE]
- ['17' NOTIFICATION_CLASS]
- ['137' NOTIFICATION_THRESHOLD]
- ['72' NOTIFY_TYPE]
- ['73' NUMBER_OF_APDU_RETRIES]
- ['289' NUMBER_OF_AUTHENTICATION_POLICIES]
- ['74' NUMBER_OF_STATES]
- ['75' OBJECT_IDENTIFIER]
- ['76' OBJECT_LIST]
- ['77' OBJECT_NAME]
- ['78' OBJECT_PROPERTY_REFERENCE]
- ['79' OBJECT_TYPE]
- ['290' OCCUPANCY_COUNT]
- ['291' OCCUPANCY_COUNT_ADJUST]
- ['292' OCCUPANCY_COUNT_ENABLE]
- ['294' OCCUPANCY_LOWER_LIMIT]
- ['295' OCCUPANCY_LOWER_LIMIT_ENFORCED]
- ['296' OCCUPANCY_STATE]
- ['297' OCCUPANCY_UPPER_LIMIT]
- ['298' OCCUPANCY_UPPER_LIMIT_ENFORCED]
- ['477' OPERATION_DIRECTION]
- ['161' OPERATION_EXPECTED]
- ['80' OPTIONAL]
- ['81' OUT_OF_SERVICE]
- ['82' OUTPUT_UNITS]
- ['333' PACKET_REORDER_TIME]
- ['300' PASSBACK_MODE]
- ['301' PASSBACK_TIMEOUT]
- ['478' PASSENGER_ALARM]
- ['84' POLARITY]
- ['363' PORT_FILTER]
- ['302' POSITIVE_ACCESS_RULES]
- ['384' POWER]
- ['479' POWER_MODE]
- ['185' PRESCALE]
- ['85' PRESENT_VALUE]
- ['86' PRIORITY]
- ['87' PRIORITY_ARRAY]
- ['88' PRIORITY_FOR_WRITING]
- ['89' PROCESS_IDENTIFIER]
- ['361' PROCESS_IDENTIFIER_FILTER]
- ['485' PROFILE_LOCATION]
- ['168' PROFILE_NAME]
- ['90' PROGRAM_CHANGE]
- ['91' PROGRAM_LOCATION]
- ['92' PROGRAM_STATE]
- ['371' PROPERTY_LIST]
- ['93' PROPORTIONAL_CONSTANT]
- ['94' PROPORTIONAL_CONSTANT_UNITS]
- ['482' PROTOCOL_LEVEL]
- ['95' PROTOCOL_CONFORMANCE_CLASS]
- ['96' PROTOCOL_OBJECT_TYPES_SUPPORTED]
- ['139' PROTOCOL_REVISION]
- ['97' PROTOCOL_SERVICES_SUPPORTED]
- ['98' PROTOCOL_VERSION]
- ['186' PULSE_RATE]
- ['99' READ_ONLY]
- ['303' REASON_FOR_DISABLE]
- ['100' REASON_FOR_HALT]
- ['102' RECIPIENT_LIST]
- ['141' RECORD_COUNT]
- ['140' RECORDS_SINCE_NOTIFICATION]
- ['483' REFERENCE_PORT]
- ['480' REGISTERED_CAR_CALL]
- ['103' RELIABILITY]
- ['357' RELIABILITY_EVALUATION_INHIBIT]
- ['104' RELINQUISH_DEFAULT]
- ['491' REPRESENTS]
- ['218' REQUESTED_SHED_LEVEL]
- ['348' REQUESTED_UPDATE_INTERVAL]
- ['105' REQUIRED]
- ['106' RESOLUTION]
- ['202' RESTART_NOTIFICATION_RECIPIENTS]
- ['340' RESTORE_COMPLETION_TIME]
- ['341' RESTORE_PREPARATION_TIME]
- ['428' ROUTING_TABLE]
- ['187' SCALE]
- ['188' SCALE_FACTOR]
- ['174' SCHEDULE_DEFAULT]
- ['235' SECURED_STATUS]
- ['334' SECURITY_PDU_TIMEOUT]
- ['335' SECURITY_TIME_WINDOW]
- ['107' SEGMENTATION_SUPPORTED]
- ['372' SERIAL_NUMBER]
- ['108' SETPOINT]
- ['109' SETPOINT_REFERENCE]
- ['162' SETTING]
- ['219' SHED_DURATION]
- ['220' SHED_LEVEL_DESCRIPTIONS]
- ['221' SHED_LEVELS]
- ['163' SILENCED]
- ['171' SLAVE_ADDRESS_BINDING]
- ['172' SLAVE_PROXY_ENABLE]
- ['142' START_TIME]
- ['396' STATE_CHANGE_VALUES]
- ['222' STATE_DESCRIPTION]
- ['110' STATE_TEXT]
- ['111' STATUS_FLAGS]
- ['143' STOP_TIME]
- ['144' STOP_WHEN_FULL]
- ['391' STRIKE_COUNT]
- ['209' STRUCTURED_OBJECT_LIST]
- ['210' SUBORDINATE_ANNOTATIONS]
- ['211' SUBORDINATE_LIST]
- ['487' SUBORDINATE_NODE_TYPES]
- ['489' SUBORDINATE_RELATIONSHIPS]
- ['488' SUBORDINATE_TAGS]
- ['362' SUBSCRIBED_RECIPIENTS]
- ['305' SUPPORTED_FORMAT_CLASSES]
- ['304' SUPPORTED_FORMATS]
- ['336' SUPPORTED_SECURITY_ALGORITHMS]
- ['112' SYSTEM_STATUS]
- ['486' TAGS]
- ['306' THREAT_AUTHORITY]
- ['307' THREAT_LEVEL]
- ['113' TIME_DELAY]
- ['356' TIME_DELAY_NORMAL]
- ['114' TIME_OF_ACTIVE_TIME_RESET]
- ['203' TIME_OF_DEVICE_RESTART]
- ['115' TIME_OF_STATE_COUNT_RESET]
- ['392' TIME_OF_STRIKE_COUNT_RESET]
- ['204' TIME_SYNCHRONIZATION_INTERVAL]
- ['116' TIME_SYNCHRONIZATION_RECIPIENTS]
- ['397' TIMER_RUNNING]
- ['398' TIMER_STATE]
- ['145' TOTAL_RECORD_COUNT]
- ['308' TRACE_FLAG]
- ['164' TRACKING_VALUE]
- ['309' TRANSACTION_NOTIFICATION_CLASS]
- ['385' TRANSITION]
- ['205' TRIGGER]
- ['117' UNITS]
- ['118' UPDATE_INTERVAL]
- ['337' UPDATE_KEY_SET_TIMEOUT]
- ['189' UPDATE_TIME]
- ['310' USER_EXTERNAL_IDENTIFIER]
- ['311' USER_INFORMATION_REFERENCE]
- ['317' USER_NAME]
- ['318' USER_TYPE]
- ['319' USES_REMAINING]
- ['119' UTC_OFFSET]
- ['206' UTC_TIME_SYNCHRONIZATION_RECIPIENTS]
- ['146' VALID_SAMPLES]
- ['190' VALUE_BEFORE_CHANGE]
- ['192' VALUE_CHANGE_TIME]
- ['191' VALUE_SET]
- ['433' VALUE_SOURCE]
- ['434' VALUE_SOURCE_ARRAY]
- ['151' VARIANCE_VALUE]
- ['120' VENDOR_IDENTIFIER]
- ['121' VENDOR_NAME]
- ['326' VERIFICATION_TIME]
- ['429' VIRTUAL_MAC_ADDRESS_TABLE]
- ['122' VT_CLASSES_SUPPORTED]
- ['123' WEEKLY_SCHEDULE]
- ['147' WINDOW_INTERVAL]
- ['148' WINDOW_SAMPLES]
- ['370' WRITE_STATUS]
- ['320' ZONE_FROM]
- ['165' ZONE_MEMBERS]
- ['321' ZONE_TO]
+ ['244' ABSENTEE_LIMIT ]
+ ['175' ACCEPTED_MODES ]
+ ['245' ACCESS_ALARM_EVENTS ]
+ ['246' ACCESS_DOORS ]
+ ['247' ACCESS_EVENT ]
+ ['248' ACCESS_EVENT_AUTHENTICATION_FACTOR ]
+ ['249' ACCESS_EVENT_CREDENTIAL ]
+ ['322' ACCESS_EVENT_TAG ]
+ ['250' ACCESS_EVENT_TIME ]
+ ['251' ACCESS_TRANSACTION_EVENTS ]
+ ['252' ACCOMPANIMENT ]
+ ['253' ACCOMPANIMENT_TIME ]
+ ['1' ACK_REQUIRED ]
+ ['0' ACKED_TRANSITIONS ]
+ ['2' ACTION ]
+ ['3' ACTION_TEXT ]
+ ['254' ACTIVATION_TIME ]
+ ['255' ACTIVE_AUTHENTICATION_POLICY ]
+ ['481' ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS ]
+ ['152' ACTIVE_COV_SUBSCRIPTIONS ]
+ ['4' ACTIVE_TEXT ]
+ ['5' ACTIVE_VT_SESSIONS ]
+ ['212' ACTUAL_SHED_LEVEL ]
+ ['176' ADJUST_VALUE ]
+ ['6' ALARM_VALUE ]
+ ['7' ALARM_VALUES ]
+ ['193' ALIGN_INTERVALS ]
+ ['8' ALL ]
+ ['9' ALL_WRITES_SUCCESSFUL ]
+ ['365' ALLOW_GROUP_DELAY_INHIBIT ]
+ ['399' APDU_LENGTH ]
+ ['10' APDU_SEGMENT_TIMEOUT ]
+ ['11' APDU_TIMEOUT ]
+ ['12' APPLICATION_SOFTWARE_VERSION ]
+ ['13' ARCHIVE ]
+ ['256' ASSIGNED_ACCESS_RIGHTS ]
+ ['447' ASSIGNED_LANDING_CALLS ]
+ ['124' ATTEMPTED_SAMPLES ]
+ ['257' AUTHENTICATION_FACTORS ]
+ ['258' AUTHENTICATION_POLICY_LIST ]
+ ['259' AUTHENTICATION_POLICY_NAMES ]
+ ['260' AUTHENTICATION_STATUS ]
+ ['364' AUTHORIZATION_EXEMPTIONS ]
+ ['261' AUTHORIZATION_MODE ]
+ ['169' AUTO_SLAVE_DISCOVERY ]
+ ['125' AVERAGE_VALUE ]
+ ['338' BACKUP_AND_RESTORE_STATE ]
+ ['153' BACKUP_FAILURE_TIMEOUT ]
+ ['339' BACKUP_PREPARATION_TIME ]
+ ['407' BACNET_IP_GLOBAL_ADDRESS ]
+ ['408' BACNET_IP_MODE ]
+ ['409' BACNET_IP_MULTICAST_ADDRESS ]
+ ['410' BACNET_IP_NAT_TRAVERSAL ]
+ ['412' BACNET_IP_UDP_PORT ]
+ ['435' BACNET_IPV6_MODE ]
+ ['438' BACNET_IPV6_UDP_PORT ]
+ ['440' BACNET_IPV6_MULTICAST_ADDRESS ]
+ ['327' BASE_DEVICE_SECURITY_POLICY ]
+ ['413' BBMD_ACCEPT_FD_REGISTRATIONS ]
+ ['414' BBMD_BROADCAST_DISTRIBUTION_TABLE ]
+ ['415' BBMD_FOREIGN_DEVICE_TABLE ]
+ ['262' BELONGS_TO ]
+ ['14' BIAS ]
+ ['342' BIT_MASK ]
+ ['343' BIT_TEXT ]
+ ['373' BLINK_WARN_ENABLE ]
+ ['126' BUFFER_SIZE ]
+ ['448' CAR_ASSIGNED_DIRECTION ]
+ ['449' CAR_DOOR_COMMAND ]
+ ['450' CAR_DOOR_STATUS ]
+ ['451' CAR_DOOR_TEXT ]
+ ['452' CAR_DOOR_ZONE ]
+ ['453' CAR_DRIVE_STATUS ]
+ ['454' CAR_LOAD ]
+ ['455' CAR_LOAD_UNITS ]
+ ['456' CAR_MODE ]
+ ['457' CAR_MOVING_DIRECTION ]
+ ['458' CAR_POSITION ]
+ ['15' CHANGE_OF_STATE_COUNT ]
+ ['16' CHANGE_OF_STATE_TIME ]
+ ['416' CHANGES_PENDING ]
+ ['366' CHANNEL_NUMBER ]
+ ['127' CLIENT_COV_INCREMENT ]
+ ['417' COMMAND ]
+ ['430' COMMAND_TIME_ARRAY ]
+ ['154' CONFIGURATION_FILES ]
+ ['367' CONTROL_GROUPS ]
+ ['19' CONTROLLED_VARIABLE_REFERENCE ]
+ ['20' CONTROLLED_VARIABLE_UNITS ]
+ ['21' CONTROLLED_VARIABLE_VALUE ]
+ ['177' COUNT ]
+ ['178' COUNT_BEFORE_CHANGE ]
+ ['179' COUNT_CHANGE_TIME ]
+ ['22' COV_INCREMENT ]
+ ['180' COV_PERIOD ]
+ ['128' COV_RESUBSCRIPTION_INTERVAL ]
+ ['349' COVU_PERIOD ]
+ ['350' COVU_RECIPIENTS ]
+ ['263' CREDENTIAL_DISABLE ]
+ ['264' CREDENTIAL_STATUS ]
+ ['265' CREDENTIALS ]
+ ['266' CREDENTIALS_IN_ZONE ]
+ ['431' CURRENT_COMMAND_PRIORITY ]
+ ['155' DATABASE_REVISION ]
+ ['23' DATE_LIST ]
+ ['24' DAYLIGHT_SAVINGS_STATUS ]
+ ['267' DAYS_REMAINING ]
+ ['25' DEADBAND ]
+ ['374' DEFAULT_FADE_TIME ]
+ ['375' DEFAULT_RAMP_RATE ]
+ ['376' DEFAULT_STEP_INCREMENT ]
+ ['490' DEFAULT_SUBORDINATE_RELATIONSHIP ]
+ ['393' DEFAULT_TIMEOUT ]
+ ['484' DEPLOYED_PROFILE_LOCATION ]
+ ['26' DERIVATIVE_CONSTANT ]
+ ['27' DERIVATIVE_CONSTANT_UNITS ]
+ ['28' DESCRIPTION ]
+ ['29' DESCRIPTION_OF_HALT ]
+ ['30' DEVICE_ADDRESS_BINDING ]
+ ['31' DEVICE_TYPE ]
+ ['156' DIRECT_READING ]
+ ['328' DISTRIBUTION_KEY_REVISION ]
+ ['329' DO_NOT_HIDE ]
+ ['226' DOOR_ALARM_STATE ]
+ ['227' DOOR_EXTENDED_PULSE_TIME ]
+ ['228' DOOR_MEMBERS ]
+ ['229' DOOR_OPEN_TOO_LONG_TIME ]
+ ['230' DOOR_PULSE_TIME ]
+ ['231' DOOR_STATUS ]
+ ['232' DOOR_UNLOCK_DELAY_TIME ]
+ ['213' DUTY_WINDOW ]
+ ['32' EFFECTIVE_PERIOD ]
+ ['386' EGRESS_ACTIVE ]
+ ['377' EGRESS_TIME ]
+ ['33' ELAPSED_ACTIVE_TIME ]
+ ['459' ELEVATOR_GROUP ]
+ ['133' ENABLE ]
+ ['460' ENERGY_METER ]
+ ['461' ENERGY_METER_REF ]
+ ['268' ENTRY_POINTS ]
+ ['34' ERROR_LIMIT ]
+ ['462' ESCALATOR_MODE ]
+ ['354' EVENT_ALGORITHM_INHIBIT ]
+ ['355' EVENT_ALGORITHM_INHIBIT_REF ]
+ ['353' EVENT_DETECTION_ENABLE ]
+ ['35' EVENT_ENABLE ]
+ ['351' EVENT_MESSAGE_TEXTS ]
+ ['352' EVENT_MESSAGE_TEXTS_CONFIG ]
+ ['83' EVENT_PARAMETERS ]
+ ['36' EVENT_STATE ]
+ ['130' EVENT_TIME_STAMPS ]
+ ['37' EVENT_TYPE ]
+ ['38' EXCEPTION_SCHEDULE ]
+ ['368' EXECUTION_DELAY ]
+ ['269' EXIT_POINTS ]
+ ['214' EXPECTED_SHED_LEVEL ]
+ ['270' EXPIRATION_TIME ]
+ ['271' EXTENDED_TIME_ENABLE ]
+ ['272' FAILED_ATTEMPT_EVENTS ]
+ ['273' FAILED_ATTEMPTS ]
+ ['274' FAILED_ATTEMPTS_TIME ]
+ ['388' FAULT_HIGH_LIMIT ]
+ ['389' FAULT_LOW_LIMIT ]
+ ['358' FAULT_PARAMETERS ]
+ ['463' FAULT_SIGNALS ]
+ ['359' FAULT_TYPE ]
+ ['39' FAULT_VALUES ]
+ ['418' FD_BBMD_ADDRESS ]
+ ['419' FD_SUBSCRIPTION_LIFETIME ]
+ ['40' FEEDBACK_VALUE ]
+ ['41' FILE_ACCESS_METHOD ]
+ ['42' FILE_SIZE ]
+ ['43' FILE_TYPE ]
+ ['44' FIRMWARE_REVISION ]
+ ['464' FLOOR_TEXT ]
+ ['215' FULL_DUTY_BASELINE ]
+ ['323' GLOBAL_IDENTIFIER ]
+ ['465' GROUP_ID ]
+ ['346' GROUP_MEMBER_NAMES ]
+ ['345' GROUP_MEMBERS ]
+ ['467' GROUP_MODE ]
+ ['45' HIGH_LIMIT ]
+ ['468' HIGHER_DECK ]
+ ['47' IN_PROCESS ]
+ ['378' IN_PROGRESS ]
+ ['46' INACTIVE_TEXT ]
+ ['394' INITIAL_TIMEOUT ]
+ ['181' INPUT_REFERENCE ]
+ ['469' INSTALLATION_ID ]
+ ['48' INSTANCE_OF ]
+ ['379' INSTANTANEOUS_POWER ]
+ ['49' INTEGRAL_CONSTANT ]
+ ['50' INTEGRAL_CONSTANT_UNITS ]
+ ['387' INTERFACE_VALUE ]
+ ['195' INTERVAL_OFFSET ]
+ ['400' IP_ADDRESS ]
+ ['401' IP_DEFAULT_GATEWAY ]
+ ['402' IP_DHCP_ENABLE ]
+ ['403' IP_DHCP_LEASE_TIME ]
+ ['404' IP_DHCP_LEASE_TIME_REMAINING ]
+ ['405' IP_DHCP_SERVER ]
+ ['406' IP_DNS_SERVER ]
+ ['411' IP_SUBNET_MASK ]
+ ['436' IPV6_ADDRESS ]
+ ['442' IPV6_AUTO_ADDRESSING_ENABLE ]
+ ['439' IPV6_DEFAULT_GATEWAY ]
+ ['443' IPV6_DHCP_LEASE_TIME ]
+ ['444' IPV6_DHCP_LEASE_TIME_REMAINING ]
+ ['445' IPV6_DHCP_SERVER ]
+ ['441' IPV6_DNS_SERVER ]
+ ['437' IPV6_PREFIX_LENGTH ]
+ ['446' IPV6_ZONE_INDEX ]
+ ['344' IS_UTC ]
+ ['330' KEY_SETS ]
+ ['471' LANDING_CALL_CONTROL ]
+ ['470' LANDING_CALLS ]
+ ['472' LANDING_DOOR_STATUS ]
+ ['275' LAST_ACCESS_EVENT ]
+ ['276' LAST_ACCESS_POINT ]
+ ['432' LAST_COMMAND_TIME ]
+ ['277' LAST_CREDENTIAL_ADDED ]
+ ['278' LAST_CREDENTIAL_ADDED_TIME ]
+ ['279' LAST_CREDENTIAL_REMOVED ]
+ ['280' LAST_CREDENTIAL_REMOVED_TIME ]
+ ['331' LAST_KEY_SERVER ]
+ ['173' LAST_NOTIFY_RECORD ]
+ ['369' LAST_PRIORITY ]
+ ['196' LAST_RESTART_REASON ]
+ ['157' LAST_RESTORE_TIME ]
+ ['395' LAST_STATE_CHANGE ]
+ ['281' LAST_USE_TIME ]
+ ['166' LIFE_SAFETY_ALARM_VALUES ]
+ ['380' LIGHTING_COMMAND ]
+ ['381' LIGHTING_COMMAND_DEFAULT_PRIORITY ]
+ ['52' LIMIT_ENABLE ]
+ ['182' LIMIT_MONITORING_INTERVAL ]
+ ['420' LINK_SPEED ]
+ ['422' LINK_SPEED_AUTONEGOTIATE ]
+ ['421' LINK_SPEEDS ]
+ ['53' LIST_OF_GROUP_MEMBERS ]
+ ['54' LIST_OF_OBJECT_PROPERTY_REFERENCES ]
+ ['56' LOCAL_DATE ]
+ ['360' LOCAL_FORWARDING_ONLY ]
+ ['57' LOCAL_TIME ]
+ ['58' LOCATION ]
+ ['233' LOCK_STATUS ]
+ ['282' LOCKOUT ]
+ ['283' LOCKOUT_RELINQUISH_TIME ]
+ ['131' LOG_BUFFER ]
+ ['132' LOG_DEVICE_OBJECT_PROPERTY ]
+ ['134' LOG_INTERVAL ]
+ ['183' LOGGING_OBJECT ]
+ ['184' LOGGING_RECORD ]
+ ['197' LOGGING_TYPE ]
+ ['390' LOW_DIFF_LIMIT ]
+ ['59' LOW_LIMIT ]
+ ['473' LOWER_DECK ]
+ ['423' MAC_ADDRESS ]
+ ['474' MACHINE_ROOM_ID ]
+ ['158' MAINTENANCE_REQUIRED ]
+ ['475' MAKING_CAR_CALL ]
+ ['60' MANIPULATED_VARIABLE_REFERENCE ]
+ ['170' MANUAL_SLAVE_ADDRESS_BINDING ]
+ ['234' MASKED_ALARM_VALUES ]
+ ['382' MAX_ACTUAL_VALUE ]
+ ['62' MAX_APDU_LENGTH_ACCEPTED ]
+ ['285' MAX_FAILED_ATTEMPTS ]
+ ['63' MAX_INFO_FRAMES ]
+ ['64' MAX_MASTER ]
+ ['65' MAX_PRES_VALUE ]
+ ['167' MAX_SEGMENTS_ACCEPTED ]
+ ['61' MAXIMUM_OUTPUT ]
+ ['135' MAXIMUM_VALUE ]
+ ['149' MAXIMUM_VALUE_TIMESTAMP ]
+ ['159' MEMBER_OF ]
+ ['347' MEMBER_STATUS_FLAGS ]
+ ['286' MEMBERS ]
+ ['383' MIN_ACTUAL_VALUE ]
+ ['69' MIN_PRES_VALUE ]
+ ['66' MINIMUM_OFF_TIME ]
+ ['67' MINIMUM_ON_TIME ]
+ ['68' MINIMUM_OUTPUT ]
+ ['136' MINIMUM_VALUE ]
+ ['150' MINIMUM_VALUE_TIMESTAMP ]
+ ['160' MODE ]
+ ['70' MODEL_NAME ]
+ ['71' MODIFICATION_DATE ]
+ ['287' MUSTER_POINT ]
+ ['288' NEGATIVE_ACCESS_RULES ]
+ ['332' NETWORK_ACCESS_SECURITY_POLICIES ]
+ ['424' NETWORK_INTERFACE_NAME ]
+ ['425' NETWORK_NUMBER ]
+ ['426' NETWORK_NUMBER_QUALITY ]
+ ['427' NETWORK_TYPE ]
+ ['476' NEXT_STOPPING_FLOOR ]
+ ['207' NODE_SUBTYPE ]
+ ['208' NODE_TYPE ]
+ ['17' NOTIFICATION_CLASS ]
+ ['137' NOTIFICATION_THRESHOLD ]
+ ['72' NOTIFY_TYPE ]
+ ['73' NUMBER_OF_APDU_RETRIES ]
+ ['289' NUMBER_OF_AUTHENTICATION_POLICIES ]
+ ['74' NUMBER_OF_STATES ]
+ ['75' OBJECT_IDENTIFIER ]
+ ['76' OBJECT_LIST ]
+ ['77' OBJECT_NAME ]
+ ['78' OBJECT_PROPERTY_REFERENCE ]
+ ['79' OBJECT_TYPE ]
+ ['290' OCCUPANCY_COUNT ]
+ ['291' OCCUPANCY_COUNT_ADJUST ]
+ ['292' OCCUPANCY_COUNT_ENABLE ]
+ ['294' OCCUPANCY_LOWER_LIMIT ]
+ ['295' OCCUPANCY_LOWER_LIMIT_ENFORCED ]
+ ['296' OCCUPANCY_STATE ]
+ ['297' OCCUPANCY_UPPER_LIMIT ]
+ ['298' OCCUPANCY_UPPER_LIMIT_ENFORCED ]
+ ['477' OPERATION_DIRECTION ]
+ ['161' OPERATION_EXPECTED ]
+ ['80' OPTIONAL ]
+ ['81' OUT_OF_SERVICE ]
+ ['82' OUTPUT_UNITS ]
+ ['333' PACKET_REORDER_TIME ]
+ ['300' PASSBACK_MODE ]
+ ['301' PASSBACK_TIMEOUT ]
+ ['478' PASSENGER_ALARM ]
+ ['84' POLARITY ]
+ ['363' PORT_FILTER ]
+ ['302' POSITIVE_ACCESS_RULES ]
+ ['384' POWER ]
+ ['479' POWER_MODE ]
+ ['185' PRESCALE ]
+ ['85' PRESENT_VALUE ]
+ ['86' PRIORITY ]
+ ['87' PRIORITY_ARRAY ]
+ ['88' PRIORITY_FOR_WRITING ]
+ ['89' PROCESS_IDENTIFIER ]
+ ['361' PROCESS_IDENTIFIER_FILTER ]
+ ['485' PROFILE_LOCATION ]
+ ['168' PROFILE_NAME ]
+ ['90' PROGRAM_CHANGE ]
+ ['91' PROGRAM_LOCATION ]
+ ['92' PROGRAM_STATE ]
+ ['371' PROPERTY_LIST ]
+ ['93' PROPORTIONAL_CONSTANT ]
+ ['94' PROPORTIONAL_CONSTANT_UNITS ]
+ ['482' PROTOCOL_LEVEL ]
+ ['95' PROTOCOL_CONFORMANCE_CLASS ]
+ ['96' PROTOCOL_OBJECT_TYPES_SUPPORTED ]
+ ['139' PROTOCOL_REVISION ]
+ ['97' PROTOCOL_SERVICES_SUPPORTED ]
+ ['98' PROTOCOL_VERSION ]
+ ['186' PULSE_RATE ]
+ ['99' READ_ONLY ]
+ ['303' REASON_FOR_DISABLE ]
+ ['100' REASON_FOR_HALT ]
+ ['102' RECIPIENT_LIST ]
+ ['141' RECORD_COUNT ]
+ ['140' RECORDS_SINCE_NOTIFICATION ]
+ ['483' REFERENCE_PORT ]
+ ['480' REGISTERED_CAR_CALL ]
+ ['103' RELIABILITY ]
+ ['357' RELIABILITY_EVALUATION_INHIBIT ]
+ ['104' RELINQUISH_DEFAULT ]
+ ['491' REPRESENTS ]
+ ['218' REQUESTED_SHED_LEVEL ]
+ ['348' REQUESTED_UPDATE_INTERVAL ]
+ ['105' REQUIRED ]
+ ['106' RESOLUTION ]
+ ['202' RESTART_NOTIFICATION_RECIPIENTS ]
+ ['340' RESTORE_COMPLETION_TIME ]
+ ['341' RESTORE_PREPARATION_TIME ]
+ ['428' ROUTING_TABLE ]
+ ['187' SCALE ]
+ ['188' SCALE_FACTOR ]
+ ['174' SCHEDULE_DEFAULT ]
+ ['235' SECURED_STATUS ]
+ ['334' SECURITY_PDU_TIMEOUT ]
+ ['335' SECURITY_TIME_WINDOW ]
+ ['107' SEGMENTATION_SUPPORTED ]
+ ['372' SERIAL_NUMBER ]
+ ['108' SETPOINT ]
+ ['109' SETPOINT_REFERENCE ]
+ ['162' SETTING ]
+ ['219' SHED_DURATION ]
+ ['220' SHED_LEVEL_DESCRIPTIONS ]
+ ['221' SHED_LEVELS ]
+ ['163' SILENCED ]
+ ['171' SLAVE_ADDRESS_BINDING ]
+ ['172' SLAVE_PROXY_ENABLE ]
+ ['142' START_TIME ]
+ ['396' STATE_CHANGE_VALUES ]
+ ['222' STATE_DESCRIPTION ]
+ ['110' STATE_TEXT ]
+ ['111' STATUS_FLAGS ]
+ ['143' STOP_TIME ]
+ ['144' STOP_WHEN_FULL ]
+ ['391' STRIKE_COUNT ]
+ ['209' STRUCTURED_OBJECT_LIST ]
+ ['210' SUBORDINATE_ANNOTATIONS ]
+ ['211' SUBORDINATE_LIST ]
+ ['487' SUBORDINATE_NODE_TYPES ]
+ ['489' SUBORDINATE_RELATIONSHIPS ]
+ ['488' SUBORDINATE_TAGS ]
+ ['362' SUBSCRIBED_RECIPIENTS ]
+ ['305' SUPPORTED_FORMAT_CLASSES ]
+ ['304' SUPPORTED_FORMATS ]
+ ['336' SUPPORTED_SECURITY_ALGORITHMS ]
+ ['112' SYSTEM_STATUS ]
+ ['486' TAGS ]
+ ['306' THREAT_AUTHORITY ]
+ ['307' THREAT_LEVEL ]
+ ['113' TIME_DELAY ]
+ ['356' TIME_DELAY_NORMAL ]
+ ['114' TIME_OF_ACTIVE_TIME_RESET ]
+ ['203' TIME_OF_DEVICE_RESTART ]
+ ['115' TIME_OF_STATE_COUNT_RESET ]
+ ['392' TIME_OF_STRIKE_COUNT_RESET ]
+ ['204' TIME_SYNCHRONIZATION_INTERVAL ]
+ ['116' TIME_SYNCHRONIZATION_RECIPIENTS ]
+ ['397' TIMER_RUNNING ]
+ ['398' TIMER_STATE ]
+ ['145' TOTAL_RECORD_COUNT ]
+ ['308' TRACE_FLAG ]
+ ['164' TRACKING_VALUE ]
+ ['309' TRANSACTION_NOTIFICATION_CLASS ]
+ ['385' TRANSITION ]
+ ['205' TRIGGER ]
+ ['117' UNITS ]
+ ['118' UPDATE_INTERVAL ]
+ ['337' UPDATE_KEY_SET_TIMEOUT ]
+ ['189' UPDATE_TIME ]
+ ['310' USER_EXTERNAL_IDENTIFIER ]
+ ['311' USER_INFORMATION_REFERENCE ]
+ ['317' USER_NAME ]
+ ['318' USER_TYPE ]
+ ['319' USES_REMAINING ]
+ ['119' UTC_OFFSET ]
+ ['206' UTC_TIME_SYNCHRONIZATION_RECIPIENTS ]
+ ['146' VALID_SAMPLES ]
+ ['190' VALUE_BEFORE_CHANGE ]
+ ['192' VALUE_CHANGE_TIME ]
+ ['191' VALUE_SET ]
+ ['433' VALUE_SOURCE ]
+ ['434' VALUE_SOURCE_ARRAY ]
+ ['151' VARIANCE_VALUE ]
+ ['120' VENDOR_IDENTIFIER ]
+ ['121' VENDOR_NAME ]
+ ['326' VERIFICATION_TIME ]
+ ['429' VIRTUAL_MAC_ADDRESS_TABLE ]
+ ['122' VT_CLASSES_SUPPORTED ]
+ ['123' WEEKLY_SCHEDULE ]
+ ['147' WINDOW_INTERVAL ]
+ ['148' WINDOW_SAMPLES ]
+ ['370' WRITE_STATUS ]
+ ['320' ZONE_FROM ]
+ ['165' ZONE_MEMBERS ]
+ ['321' ZONE_TO ]
// plc4x definition
- ['9999' VENDOR_PROPRIETARY_VALUE]
+ ['9999' VENDOR_PROPRIETARY_VALUE ]
]