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/24 14:47:27 UTC
[plc4x] 06/07: feat(bacnet): implement BACnetConfirmedServiceRequestVTData
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 e6b90c69f32aa88873bb908cad56c8cd66668c4e
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue May 24 16:34:53 2022 +0200
feat(bacnet): implement BACnetConfirmedServiceRequestVTData
---
.../model/BACnetConfirmedServiceRequestVTData.go | 125 ++++++++++++++++++++-
.../resources/protocols/bacnetip/bacnetip.mspec | 7 +-
2 files changed, 124 insertions(+), 8 deletions(-)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
index 8a9009dbe1..299022f835 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +29,9 @@ import (
// BACnetConfirmedServiceRequestVTData is the data-structure of this message
type BACnetConfirmedServiceRequestVTData struct {
*BACnetConfirmedServiceRequest
+ VtSessionIdentifier *BACnetApplicationTagUnsignedInteger
+ VtNewData *BACnetApplicationTagOctetString
+ VtDataFlag *BACnetApplicationTagUnsignedInteger
// Arguments.
ServiceRequestLength uint16
@@ -36,6 +40,12 @@ type BACnetConfirmedServiceRequestVTData struct {
// IBACnetConfirmedServiceRequestVTData is the corresponding interface of BACnetConfirmedServiceRequestVTData
type IBACnetConfirmedServiceRequestVTData interface {
IBACnetConfirmedServiceRequest
+ // GetVtSessionIdentifier returns VtSessionIdentifier (property field)
+ GetVtSessionIdentifier() *BACnetApplicationTagUnsignedInteger
+ // GetVtNewData returns VtNewData (property field)
+ GetVtNewData() *BACnetApplicationTagOctetString
+ // GetVtDataFlag returns VtDataFlag (property field)
+ GetVtDataFlag() *BACnetApplicationTagUnsignedInteger
// GetLengthInBytes returns the length in bytes
GetLengthInBytes() uint16
// GetLengthInBits returns the length in bits
@@ -65,9 +75,34 @@ func (m *BACnetConfirmedServiceRequestVTData) GetParent() *BACnetConfirmedServic
return m.BACnetConfirmedServiceRequest
}
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestVTData) GetVtSessionIdentifier() *BACnetApplicationTagUnsignedInteger {
+ return m.VtSessionIdentifier
+}
+
+func (m *BACnetConfirmedServiceRequestVTData) GetVtNewData() *BACnetApplicationTagOctetString {
+ return m.VtNewData
+}
+
+func (m *BACnetConfirmedServiceRequestVTData) GetVtDataFlag() *BACnetApplicationTagUnsignedInteger {
+ return m.VtDataFlag
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
// NewBACnetConfirmedServiceRequestVTData factory function for BACnetConfirmedServiceRequestVTData
-func NewBACnetConfirmedServiceRequestVTData(serviceRequestLength uint16) *BACnetConfirmedServiceRequestVTData {
+func NewBACnetConfirmedServiceRequestVTData(vtSessionIdentifier *BACnetApplicationTagUnsignedInteger, vtNewData *BACnetApplicationTagOctetString, vtDataFlag *BACnetApplicationTagUnsignedInteger, serviceRequestLength uint16) *BACnetConfirmedServiceRequestVTData {
_result := &BACnetConfirmedServiceRequestVTData{
+ VtSessionIdentifier: vtSessionIdentifier,
+ VtNewData: vtNewData,
+ VtDataFlag: vtDataFlag,
BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(serviceRequestLength),
}
_result.Child = _result
@@ -101,6 +136,15 @@ func (m *BACnetConfirmedServiceRequestVTData) GetLengthInBits() uint16 {
func (m *BACnetConfirmedServiceRequestVTData) GetLengthInBitsConditional(lastItem bool) uint16 {
lengthInBits := uint16(m.GetParentLengthInBits())
+ // Simple field (vtSessionIdentifier)
+ lengthInBits += m.VtSessionIdentifier.GetLengthInBits()
+
+ // Simple field (vtNewData)
+ lengthInBits += m.VtNewData.GetLengthInBits()
+
+ // Simple field (vtDataFlag)
+ lengthInBits += m.VtDataFlag.GetLengthInBits()
+
return lengthInBits
}
@@ -117,9 +161,43 @@ func BACnetConfirmedServiceRequestVTDataParse(readBuffer utils.ReadBuffer, servi
currentPos := positionAware.GetPos()
_ = currentPos
- // Validation
- if !(bool((1) == (2))) {
- return nil, utils.ParseValidationError{"TODO: implement me"}
+ // Simple Field (vtSessionIdentifier)
+ if pullErr := readBuffer.PullContext("vtSessionIdentifier"); pullErr != nil {
+ return nil, pullErr
+ }
+ _vtSessionIdentifier, _vtSessionIdentifierErr := BACnetApplicationTagParse(readBuffer)
+ if _vtSessionIdentifierErr != nil {
+ return nil, errors.Wrap(_vtSessionIdentifierErr, "Error parsing 'vtSessionIdentifier' field")
+ }
+ vtSessionIdentifier := CastBACnetApplicationTagUnsignedInteger(_vtSessionIdentifier)
+ if closeErr := readBuffer.CloseContext("vtSessionIdentifier"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Simple Field (vtNewData)
+ if pullErr := readBuffer.PullContext("vtNewData"); pullErr != nil {
+ return nil, pullErr
+ }
+ _vtNewData, _vtNewDataErr := BACnetApplicationTagParse(readBuffer)
+ if _vtNewDataErr != nil {
+ return nil, errors.Wrap(_vtNewDataErr, "Error parsing 'vtNewData' field")
+ }
+ vtNewData := CastBACnetApplicationTagOctetString(_vtNewData)
+ if closeErr := readBuffer.CloseContext("vtNewData"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Simple Field (vtDataFlag)
+ if pullErr := readBuffer.PullContext("vtDataFlag"); pullErr != nil {
+ return nil, pullErr
+ }
+ _vtDataFlag, _vtDataFlagErr := BACnetApplicationTagParse(readBuffer)
+ if _vtDataFlagErr != nil {
+ return nil, errors.Wrap(_vtDataFlagErr, "Error parsing 'vtDataFlag' field")
+ }
+ vtDataFlag := CastBACnetApplicationTagUnsignedInteger(_vtDataFlag)
+ if closeErr := readBuffer.CloseContext("vtDataFlag"); closeErr != nil {
+ return nil, closeErr
}
if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestVTData"); closeErr != nil {
@@ -128,6 +206,9 @@ func BACnetConfirmedServiceRequestVTDataParse(readBuffer utils.ReadBuffer, servi
// Create a partially initialized instance
_child := &BACnetConfirmedServiceRequestVTData{
+ VtSessionIdentifier: CastBACnetApplicationTagUnsignedInteger(vtSessionIdentifier),
+ VtNewData: CastBACnetApplicationTagOctetString(vtNewData),
+ VtDataFlag: CastBACnetApplicationTagUnsignedInteger(vtDataFlag),
BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
}
_child.BACnetConfirmedServiceRequest.Child = _child
@@ -142,6 +223,42 @@ func (m *BACnetConfirmedServiceRequestVTData) Serialize(writeBuffer utils.WriteB
return pushErr
}
+ // Simple Field (vtSessionIdentifier)
+ if pushErr := writeBuffer.PushContext("vtSessionIdentifier"); pushErr != nil {
+ return pushErr
+ }
+ _vtSessionIdentifierErr := m.VtSessionIdentifier.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("vtSessionIdentifier"); popErr != nil {
+ return popErr
+ }
+ if _vtSessionIdentifierErr != nil {
+ return errors.Wrap(_vtSessionIdentifierErr, "Error serializing 'vtSessionIdentifier' field")
+ }
+
+ // Simple Field (vtNewData)
+ if pushErr := writeBuffer.PushContext("vtNewData"); pushErr != nil {
+ return pushErr
+ }
+ _vtNewDataErr := m.VtNewData.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("vtNewData"); popErr != nil {
+ return popErr
+ }
+ if _vtNewDataErr != nil {
+ return errors.Wrap(_vtNewDataErr, "Error serializing 'vtNewData' field")
+ }
+
+ // Simple Field (vtDataFlag)
+ if pushErr := writeBuffer.PushContext("vtDataFlag"); pushErr != nil {
+ return pushErr
+ }
+ _vtDataFlagErr := m.VtDataFlag.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("vtDataFlag"); popErr != nil {
+ return popErr
+ }
+ if _vtDataFlagErr != nil {
+ return errors.Wrap(_vtDataFlagErr, "Error serializing 'vtDataFlag' field")
+ }
+
if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestVTData"); 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 08565249df..6654a86daf 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -197,7 +197,6 @@
[optional BACnetConfirmedServiceRequest('apduLength - (4 + (segmentedMessage ? 2 : 0))')
serviceRequest '!segmentedMessage' ]
[validation '(!segmentedMessage && serviceRequest != null) || segmentedMessage' "service request should be set" ]
- // TODO: maybe we should put this in the discriminated types below
[optional uint 8 segmentServiceChoice
'segmentedMessage && sequenceNumber != 0']
[array byte segment
@@ -224,7 +223,6 @@
[optional BACnetServiceAck('apduLength - (3 + (segmentedMessage ? 2 : 0))')
serviceAck '!segmentedMessage' ]
[validation '(!segmentedMessage && serviceAck != null) || segmentedMessage' "service ack should be set" ]
- // TODO: maybe we should put this in the discriminated types below
[optional uint 8 segmentServiceChoice 'segmentedMessage && sequenceNumber != 0']
[array byte segment
length
@@ -503,8 +501,9 @@
length '(serviceRequestLength>0)?(serviceRequestLength - 1):0' ]
]
['VT_DATA' BACnetConfirmedServiceRequestVTData
- // TODO: implement me
- [validation '1 == 2' "TODO: implement me"]
+ [simple BACnetApplicationTagUnsignedInteger vtSessionIdentifier ]
+ [simple BACnetApplicationTagOctetString vtNewData ]
+ [simple BACnetApplicationTagUnsignedInteger vtDataFlag ]
]
//
////