You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/05/17 10:16:36 UTC
[plc4x] 01/02: feat(bacnet): implemented BACnetConfirmedServiceRequestSubscribeCOVProperty
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 9a623d16f9a4c2c832ed53803243dfcbde69f724
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue May 17 11:47:41 2022 +0200
feat(bacnet): implemented BACnetConfirmedServiceRequestSubscribeCOVProperty
---
...tConfirmedServiceRequestSubscribeCOVProperty.go | 279 ++++++++++++++++++++-
.../resources/protocols/bacnetip/bacnetip.mspec | 18 +-
2 files changed, 286 insertions(+), 11 deletions(-)
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go
index d0d114ee48..1523775e83 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go
@@ -21,6 +21,8 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
+ "io"
)
// Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +30,12 @@ import (
// BACnetConfirmedServiceRequestSubscribeCOVProperty is the data-structure of this message
type BACnetConfirmedServiceRequestSubscribeCOVProperty struct {
*BACnetConfirmedServiceRequest
+ SubscriberProcessIdentifier *BACnetContextTagUnsignedInteger
+ MonitoredObjectIdentifier *BACnetContextTagObjectIdentifier
+ IssueConfirmedNotifications *BACnetContextTagBoolean
+ Lifetime *BACnetContextTagUnsignedInteger
+ MonitoredPropertyIdentifier *BACnetPropertyReferenceEnclosed
+ CovIncrement *BACnetContextTagReal
// Arguments.
ServiceRequestLength uint16
@@ -36,6 +44,18 @@ type BACnetConfirmedServiceRequestSubscribeCOVProperty struct {
// IBACnetConfirmedServiceRequestSubscribeCOVProperty is the corresponding interface of BACnetConfirmedServiceRequestSubscribeCOVProperty
type IBACnetConfirmedServiceRequestSubscribeCOVProperty interface {
IBACnetConfirmedServiceRequest
+ // GetSubscriberProcessIdentifier returns SubscriberProcessIdentifier (property field)
+ GetSubscriberProcessIdentifier() *BACnetContextTagUnsignedInteger
+ // GetMonitoredObjectIdentifier returns MonitoredObjectIdentifier (property field)
+ GetMonitoredObjectIdentifier() *BACnetContextTagObjectIdentifier
+ // GetIssueConfirmedNotifications returns IssueConfirmedNotifications (property field)
+ GetIssueConfirmedNotifications() *BACnetContextTagBoolean
+ // GetLifetime returns Lifetime (property field)
+ GetLifetime() *BACnetContextTagUnsignedInteger
+ // GetMonitoredPropertyIdentifier returns MonitoredPropertyIdentifier (property field)
+ GetMonitoredPropertyIdentifier() *BACnetPropertyReferenceEnclosed
+ // GetCovIncrement returns CovIncrement (property field)
+ GetCovIncrement() *BACnetContextTagReal
// GetLengthInBytes returns the length in bytes
GetLengthInBytes() uint16
// GetLengthInBits returns the length in bits
@@ -65,9 +85,49 @@ func (m *BACnetConfirmedServiceRequestSubscribeCOVProperty) GetParent() *BACnetC
return m.BACnetConfirmedServiceRequest
}
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestSubscribeCOVProperty) GetSubscriberProcessIdentifier() *BACnetContextTagUnsignedInteger {
+ return m.SubscriberProcessIdentifier
+}
+
+func (m *BACnetConfirmedServiceRequestSubscribeCOVProperty) GetMonitoredObjectIdentifier() *BACnetContextTagObjectIdentifier {
+ return m.MonitoredObjectIdentifier
+}
+
+func (m *BACnetConfirmedServiceRequestSubscribeCOVProperty) GetIssueConfirmedNotifications() *BACnetContextTagBoolean {
+ return m.IssueConfirmedNotifications
+}
+
+func (m *BACnetConfirmedServiceRequestSubscribeCOVProperty) GetLifetime() *BACnetContextTagUnsignedInteger {
+ return m.Lifetime
+}
+
+func (m *BACnetConfirmedServiceRequestSubscribeCOVProperty) GetMonitoredPropertyIdentifier() *BACnetPropertyReferenceEnclosed {
+ return m.MonitoredPropertyIdentifier
+}
+
+func (m *BACnetConfirmedServiceRequestSubscribeCOVProperty) GetCovIncrement() *BACnetContextTagReal {
+ return m.CovIncrement
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
// NewBACnetConfirmedServiceRequestSubscribeCOVProperty factory function for BACnetConfirmedServiceRequestSubscribeCOVProperty
-func NewBACnetConfirmedServiceRequestSubscribeCOVProperty(serviceRequestLength uint16) *BACnetConfirmedServiceRequestSubscribeCOVProperty {
+func NewBACnetConfirmedServiceRequestSubscribeCOVProperty(subscriberProcessIdentifier *BACnetContextTagUnsignedInteger, monitoredObjectIdentifier *BACnetContextTagObjectIdentifier, issueConfirmedNotifications *BACnetContextTagBoolean, lifetime *BACnetContextTagUnsignedInteger, monitoredPropertyIdentifier *BACnetPropertyReferenceEnclosed, covIncrement *BACnetContextTagReal, serviceRequestLength uint16) *BACnetConfirmedServiceRequestSubscribeCOVProperty {
_result := &BACnetConfirmedServiceRequestSubscribeCOVProperty{
+ SubscriberProcessIdentifier: subscriberProcessIdentifier,
+ MonitoredObjectIdentifier: monitoredObjectIdentifier,
+ IssueConfirmedNotifications: issueConfirmedNotifications,
+ Lifetime: lifetime,
+ MonitoredPropertyIdentifier: monitoredPropertyIdentifier,
+ CovIncrement: covIncrement,
BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(serviceRequestLength),
}
_result.Child = _result
@@ -101,6 +161,30 @@ func (m *BACnetConfirmedServiceRequestSubscribeCOVProperty) GetLengthInBits() ui
func (m *BACnetConfirmedServiceRequestSubscribeCOVProperty) GetLengthInBitsConditional(lastItem bool) uint16 {
lengthInBits := uint16(m.GetParentLengthInBits())
+ // Simple field (subscriberProcessIdentifier)
+ lengthInBits += m.SubscriberProcessIdentifier.GetLengthInBits()
+
+ // Simple field (monitoredObjectIdentifier)
+ lengthInBits += m.MonitoredObjectIdentifier.GetLengthInBits()
+
+ // Optional Field (issueConfirmedNotifications)
+ if m.IssueConfirmedNotifications != nil {
+ lengthInBits += (*m.IssueConfirmedNotifications).GetLengthInBits()
+ }
+
+ // Optional Field (lifetime)
+ if m.Lifetime != nil {
+ lengthInBits += (*m.Lifetime).GetLengthInBits()
+ }
+
+ // Simple field (monitoredPropertyIdentifier)
+ lengthInBits += m.MonitoredPropertyIdentifier.GetLengthInBits()
+
+ // Optional Field (covIncrement)
+ if m.CovIncrement != nil {
+ lengthInBits += (*m.CovIncrement).GetLengthInBits()
+ }
+
return lengthInBits
}
@@ -117,9 +201,106 @@ func BACnetConfirmedServiceRequestSubscribeCOVPropertyParse(readBuffer utils.Rea
currentPos := positionAware.GetPos()
_ = currentPos
- // Validation
- if !(bool((1) == (2))) {
- return nil, utils.ParseValidationError{"TODO: implement me"}
+ // Simple Field (subscriberProcessIdentifier)
+ if pullErr := readBuffer.PullContext("subscriberProcessIdentifier"); pullErr != nil {
+ return nil, pullErr
+ }
+ _subscriberProcessIdentifier, _subscriberProcessIdentifierErr := BACnetContextTagParse(readBuffer, uint8(uint8(0)), BACnetDataType(BACnetDataType_UNSIGNED_INTEGER))
+ if _subscriberProcessIdentifierErr != nil {
+ return nil, errors.Wrap(_subscriberProcessIdentifierErr, "Error parsing 'subscriberProcessIdentifier' field")
+ }
+ subscriberProcessIdentifier := CastBACnetContextTagUnsignedInteger(_subscriberProcessIdentifier)
+ if closeErr := readBuffer.CloseContext("subscriberProcessIdentifier"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Simple Field (monitoredObjectIdentifier)
+ if pullErr := readBuffer.PullContext("monitoredObjectIdentifier"); pullErr != nil {
+ return nil, pullErr
+ }
+ _monitoredObjectIdentifier, _monitoredObjectIdentifierErr := BACnetContextTagParse(readBuffer, uint8(uint8(1)), BACnetDataType(BACnetDataType_BACNET_OBJECT_IDENTIFIER))
+ if _monitoredObjectIdentifierErr != nil {
+ return nil, errors.Wrap(_monitoredObjectIdentifierErr, "Error parsing 'monitoredObjectIdentifier' field")
+ }
+ monitoredObjectIdentifier := CastBACnetContextTagObjectIdentifier(_monitoredObjectIdentifier)
+ if closeErr := readBuffer.CloseContext("monitoredObjectIdentifier"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Optional Field (issueConfirmedNotifications) (Can be skipped, if a given expression evaluates to false)
+ var issueConfirmedNotifications *BACnetContextTagBoolean = nil
+ {
+ currentPos = positionAware.GetPos()
+ if pullErr := readBuffer.PullContext("issueConfirmedNotifications"); pullErr != nil {
+ return nil, pullErr
+ }
+ _val, _err := BACnetContextTagParse(readBuffer, uint8(2), BACnetDataType_BOOLEAN)
+ switch {
+ case errors.Is(_err, utils.ParseAssertError{}) || errors.Is(_err, io.EOF):
+ readBuffer.Reset(currentPos)
+ case _err != nil:
+ return nil, errors.Wrap(_err, "Error parsing 'issueConfirmedNotifications' field")
+ default:
+ issueConfirmedNotifications = CastBACnetContextTagBoolean(_val)
+ if closeErr := readBuffer.CloseContext("issueConfirmedNotifications"); closeErr != nil {
+ return nil, closeErr
+ }
+ }
+ }
+
+ // Optional Field (lifetime) (Can be skipped, if a given expression evaluates to false)
+ var lifetime *BACnetContextTagUnsignedInteger = nil
+ {
+ currentPos = positionAware.GetPos()
+ if pullErr := readBuffer.PullContext("lifetime"); pullErr != nil {
+ return nil, pullErr
+ }
+ _val, _err := BACnetContextTagParse(readBuffer, uint8(3), BACnetDataType_UNSIGNED_INTEGER)
+ switch {
+ case errors.Is(_err, utils.ParseAssertError{}) || errors.Is(_err, io.EOF):
+ readBuffer.Reset(currentPos)
+ case _err != nil:
+ return nil, errors.Wrap(_err, "Error parsing 'lifetime' field")
+ default:
+ lifetime = CastBACnetContextTagUnsignedInteger(_val)
+ if closeErr := readBuffer.CloseContext("lifetime"); closeErr != nil {
+ return nil, closeErr
+ }
+ }
+ }
+
+ // Simple Field (monitoredPropertyIdentifier)
+ if pullErr := readBuffer.PullContext("monitoredPropertyIdentifier"); pullErr != nil {
+ return nil, pullErr
+ }
+ _monitoredPropertyIdentifier, _monitoredPropertyIdentifierErr := BACnetPropertyReferenceEnclosedParse(readBuffer, uint8(uint8(4)))
+ if _monitoredPropertyIdentifierErr != nil {
+ return nil, errors.Wrap(_monitoredPropertyIdentifierErr, "Error parsing 'monitoredPropertyIdentifier' field")
+ }
+ monitoredPropertyIdentifier := CastBACnetPropertyReferenceEnclosed(_monitoredPropertyIdentifier)
+ if closeErr := readBuffer.CloseContext("monitoredPropertyIdentifier"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Optional Field (covIncrement) (Can be skipped, if a given expression evaluates to false)
+ var covIncrement *BACnetContextTagReal = nil
+ {
+ currentPos = positionAware.GetPos()
+ if pullErr := readBuffer.PullContext("covIncrement"); pullErr != nil {
+ return nil, pullErr
+ }
+ _val, _err := BACnetContextTagParse(readBuffer, uint8(5), BACnetDataType_REAL)
+ switch {
+ case errors.Is(_err, utils.ParseAssertError{}) || errors.Is(_err, io.EOF):
+ readBuffer.Reset(currentPos)
+ case _err != nil:
+ return nil, errors.Wrap(_err, "Error parsing 'covIncrement' field")
+ default:
+ covIncrement = CastBACnetContextTagReal(_val)
+ if closeErr := readBuffer.CloseContext("covIncrement"); closeErr != nil {
+ return nil, closeErr
+ }
+ }
}
if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestSubscribeCOVProperty"); closeErr != nil {
@@ -128,6 +309,12 @@ func BACnetConfirmedServiceRequestSubscribeCOVPropertyParse(readBuffer utils.Rea
// Create a partially initialized instance
_child := &BACnetConfirmedServiceRequestSubscribeCOVProperty{
+ SubscriberProcessIdentifier: CastBACnetContextTagUnsignedInteger(subscriberProcessIdentifier),
+ MonitoredObjectIdentifier: CastBACnetContextTagObjectIdentifier(monitoredObjectIdentifier),
+ IssueConfirmedNotifications: CastBACnetContextTagBoolean(issueConfirmedNotifications),
+ Lifetime: CastBACnetContextTagUnsignedInteger(lifetime),
+ MonitoredPropertyIdentifier: CastBACnetPropertyReferenceEnclosed(monitoredPropertyIdentifier),
+ CovIncrement: CastBACnetContextTagReal(covIncrement),
BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
}
_child.BACnetConfirmedServiceRequest.Child = _child
@@ -142,6 +329,90 @@ func (m *BACnetConfirmedServiceRequestSubscribeCOVProperty) Serialize(writeBuffe
return pushErr
}
+ // Simple Field (subscriberProcessIdentifier)
+ if pushErr := writeBuffer.PushContext("subscriberProcessIdentifier"); pushErr != nil {
+ return pushErr
+ }
+ _subscriberProcessIdentifierErr := m.SubscriberProcessIdentifier.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("subscriberProcessIdentifier"); popErr != nil {
+ return popErr
+ }
+ if _subscriberProcessIdentifierErr != nil {
+ return errors.Wrap(_subscriberProcessIdentifierErr, "Error serializing 'subscriberProcessIdentifier' field")
+ }
+
+ // Simple Field (monitoredObjectIdentifier)
+ if pushErr := writeBuffer.PushContext("monitoredObjectIdentifier"); pushErr != nil {
+ return pushErr
+ }
+ _monitoredObjectIdentifierErr := m.MonitoredObjectIdentifier.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("monitoredObjectIdentifier"); popErr != nil {
+ return popErr
+ }
+ if _monitoredObjectIdentifierErr != nil {
+ return errors.Wrap(_monitoredObjectIdentifierErr, "Error serializing 'monitoredObjectIdentifier' field")
+ }
+
+ // Optional Field (issueConfirmedNotifications) (Can be skipped, if the value is null)
+ var issueConfirmedNotifications *BACnetContextTagBoolean = nil
+ if m.IssueConfirmedNotifications != nil {
+ if pushErr := writeBuffer.PushContext("issueConfirmedNotifications"); pushErr != nil {
+ return pushErr
+ }
+ issueConfirmedNotifications = m.IssueConfirmedNotifications
+ _issueConfirmedNotificationsErr := issueConfirmedNotifications.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("issueConfirmedNotifications"); popErr != nil {
+ return popErr
+ }
+ if _issueConfirmedNotificationsErr != nil {
+ return errors.Wrap(_issueConfirmedNotificationsErr, "Error serializing 'issueConfirmedNotifications' field")
+ }
+ }
+
+ // Optional Field (lifetime) (Can be skipped, if the value is null)
+ var lifetime *BACnetContextTagUnsignedInteger = nil
+ if m.Lifetime != nil {
+ if pushErr := writeBuffer.PushContext("lifetime"); pushErr != nil {
+ return pushErr
+ }
+ lifetime = m.Lifetime
+ _lifetimeErr := lifetime.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("lifetime"); popErr != nil {
+ return popErr
+ }
+ if _lifetimeErr != nil {
+ return errors.Wrap(_lifetimeErr, "Error serializing 'lifetime' field")
+ }
+ }
+
+ // Simple Field (monitoredPropertyIdentifier)
+ if pushErr := writeBuffer.PushContext("monitoredPropertyIdentifier"); pushErr != nil {
+ return pushErr
+ }
+ _monitoredPropertyIdentifierErr := m.MonitoredPropertyIdentifier.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("monitoredPropertyIdentifier"); popErr != nil {
+ return popErr
+ }
+ if _monitoredPropertyIdentifierErr != nil {
+ return errors.Wrap(_monitoredPropertyIdentifierErr, "Error serializing 'monitoredPropertyIdentifier' field")
+ }
+
+ // Optional Field (covIncrement) (Can be skipped, if the value is null)
+ var covIncrement *BACnetContextTagReal = nil
+ if m.CovIncrement != nil {
+ if pushErr := writeBuffer.PushContext("covIncrement"); pushErr != nil {
+ return pushErr
+ }
+ covIncrement = m.CovIncrement
+ _covIncrementErr := covIncrement.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("covIncrement"); popErr != nil {
+ return popErr
+ }
+ if _covIncrementErr != nil {
+ return errors.Wrap(_covIncrementErr, "Error serializing 'covIncrement' field")
+ }
+ }
+
if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestSubscribeCOVProperty"); popErr != nil {
return popErr
}
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
index 0e4fee2a6d..41debe3a0c 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -402,21 +402,25 @@
[validation '1 == 2' "TODO: implement me"]
]
['GET_EVENT_INFORMATION' BACnetConfirmedServiceRequestGetEventInformation
- [optional BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') lastReceivedObjectIdentifier ]
+ [optional BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') lastReceivedObjectIdentifier ]
]
['LIFE_SAFETY_OPERATION' BACnetConfirmedServiceRequestLifeSafetyOperation
// TODO: implement me
[validation '1 == 2' "TODO: implement me"]
]
['SUBSCRIBE_COV' BACnetConfirmedServiceRequestSubscribeCOV
- [simple BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER') subscriberProcessIdentifier ]
- [simple BACnetContextTagObjectIdentifier('1', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') monitoredObjectIdentifier ]
- [simple BACnetContextTagBoolean('2', 'BACnetDataType.BOOLEAN') issueConfirmed ]
- [simple BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER') lifetimeInSeconds ]
+ [simple BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER') subscriberProcessIdentifier ]
+ [simple BACnetContextTagObjectIdentifier('1', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') monitoredObjectIdentifier ]
+ [simple BACnetContextTagBoolean('2', 'BACnetDataType.BOOLEAN') issueConfirmed ]
+ [simple BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER') lifetimeInSeconds ]
]
['SUBSCRIBE_COV_PROPERTY' BACnetConfirmedServiceRequestSubscribeCOVProperty
- // TODO: implement me
- [validation '1 == 2' "TODO: implement me"]
+ [simple BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER') subscriberProcessIdentifier ]
+ [simple BACnetContextTagObjectIdentifier('1', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') monitoredObjectIdentifier ]
+ [optional BACnetContextTagBoolean('2', 'BACnetDataType.BOOLEAN') issueConfirmedNotifications ]
+ [optional BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER') lifetime ]
+ [simple BACnetPropertyReferenceEnclosed('4') monitoredPropertyIdentifier ]
+ [optional BACnetContextTagReal('5', 'BACnetDataType.REAL') covIncrement ]
]
['SUBSCRIBE_COV_PROPERTY_MULTIPLE' BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
// TODO: implement me