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/08/12 13:44:40 UTC
[plc4x] 02/05: refactor(cbus): small adjustments on reset and optional alpha on direct command
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 cbce5d212b9ee7e0a335ef372c4982f74c20f55f
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Aug 12 15:24:40 2022 +0200
refactor(cbus): small adjustments on reset and optional alpha on direct command
---
.../readwrite/model/RequestDirectCommandAccess.go | 58 +++++++++++++++++++++-
.../protocols/cbus/readwrite/model/RequestReset.go | 54 ++++++++++++++------
.../src/main/resources/protocols/cbus/c-bus.mspec | 5 +-
3 files changed, 99 insertions(+), 18 deletions(-)
diff --git a/plc4go/protocols/cbus/readwrite/model/RequestDirectCommandAccess.go b/plc4go/protocols/cbus/readwrite/model/RequestDirectCommandAccess.go
index 2e7ee6e17..8dc3cb1e8 100644
--- a/plc4go/protocols/cbus/readwrite/model/RequestDirectCommandAccess.go
+++ b/plc4go/protocols/cbus/readwrite/model/RequestDirectCommandAccess.go
@@ -23,6 +23,8 @@ import (
"fmt"
"github.com/apache/plc4x/plc4go/spi/utils"
"github.com/pkg/errors"
+ "github.com/rs/zerolog/log"
+ "io"
)
// Code generated by code-generation. DO NOT EDIT.
@@ -37,6 +39,8 @@ type RequestDirectCommandAccess interface {
Request
// GetCalData returns CalData (property field)
GetCalData() CALData
+ // GetAlpha returns Alpha (property field)
+ GetAlpha() Alpha
// GetCalDataDecoded returns CalDataDecoded (virtual field)
GetCalDataDecoded() CALData
}
@@ -52,6 +56,7 @@ type RequestDirectCommandAccessExactly interface {
type _RequestDirectCommandAccess struct {
*_Request
CalData CALData
+ Alpha Alpha
}
///////////////////////////////////////////////////////////
@@ -85,6 +90,10 @@ func (m *_RequestDirectCommandAccess) GetCalData() CALData {
return m.CalData
}
+func (m *_RequestDirectCommandAccess) GetAlpha() Alpha {
+ return m.Alpha
+}
+
///////////////////////
///////////////////////
///////////////////////////////////////////////////////////
@@ -95,6 +104,8 @@ func (m *_RequestDirectCommandAccess) GetCalData() CALData {
///////////////////////
func (m *_RequestDirectCommandAccess) GetCalDataDecoded() CALData {
+ alpha := m.Alpha
+ _ = alpha
return CastCALData(m.GetCalData())
}
@@ -117,9 +128,10 @@ func (m *_RequestDirectCommandAccess) GetAt() byte {
///////////////////////////////////////////////////////////
// NewRequestDirectCommandAccess factory function for _RequestDirectCommandAccess
-func NewRequestDirectCommandAccess(calData CALData, peekedByte RequestType, startingCR *RequestType, resetMode *RequestType, secondPeek RequestType, termination RequestTermination, cBusOptions CBusOptions) *_RequestDirectCommandAccess {
+func NewRequestDirectCommandAccess(calData CALData, alpha Alpha, peekedByte RequestType, startingCR *RequestType, resetMode *RequestType, secondPeek RequestType, termination RequestTermination, cBusOptions CBusOptions) *_RequestDirectCommandAccess {
_result := &_RequestDirectCommandAccess{
CalData: calData,
+ Alpha: alpha,
_Request: NewRequest(peekedByte, startingCR, resetMode, secondPeek, termination, cBusOptions),
}
_result._Request._RequestChildRequirements = _result
@@ -156,6 +168,11 @@ func (m *_RequestDirectCommandAccess) GetLengthInBitsConditional(lastItem bool)
// A virtual field doesn't have any in- or output.
+ // Optional Field (alpha)
+ if m.Alpha != nil {
+ lengthInBits += m.Alpha.GetLengthInBits()
+ }
+
return lengthInBits
}
@@ -196,6 +213,28 @@ func RequestDirectCommandAccessParse(readBuffer utils.ReadBuffer, cBusOptions CB
calDataDecoded := _calDataDecoded
_ = calDataDecoded
+ // Optional Field (alpha) (Can be skipped, if a given expression evaluates to false)
+ var alpha Alpha = nil
+ {
+ currentPos = positionAware.GetPos()
+ if pullErr := readBuffer.PullContext("alpha"); pullErr != nil {
+ return nil, errors.Wrap(pullErr, "Error pulling for alpha")
+ }
+ _val, _err := AlphaParse(readBuffer)
+ switch {
+ case errors.Is(_err, utils.ParseAssertError{}) || errors.Is(_err, io.EOF):
+ log.Debug().Err(_err).Msg("Resetting position because optional threw an error")
+ readBuffer.Reset(currentPos)
+ case _err != nil:
+ return nil, errors.Wrap(_err, "Error parsing 'alpha' field of RequestDirectCommandAccess")
+ default:
+ alpha = _val.(Alpha)
+ if closeErr := readBuffer.CloseContext("alpha"); closeErr != nil {
+ return nil, errors.Wrap(closeErr, "Error closing for alpha")
+ }
+ }
+ }
+
if closeErr := readBuffer.CloseContext("RequestDirectCommandAccess"); closeErr != nil {
return nil, errors.Wrap(closeErr, "Error closing for RequestDirectCommandAccess")
}
@@ -206,6 +245,7 @@ func RequestDirectCommandAccessParse(readBuffer utils.ReadBuffer, cBusOptions CB
CBusOptions: cBusOptions,
},
CalData: calData,
+ Alpha: alpha,
}
_child._Request._RequestChildRequirements = _child
return _child, nil
@@ -235,6 +275,22 @@ func (m *_RequestDirectCommandAccess) Serialize(writeBuffer utils.WriteBuffer) e
return errors.Wrap(_calDataDecodedErr, "Error serializing 'calDataDecoded' field")
}
+ // Optional Field (alpha) (Can be skipped, if the value is null)
+ var alpha Alpha = nil
+ if m.GetAlpha() != nil {
+ if pushErr := writeBuffer.PushContext("alpha"); pushErr != nil {
+ return errors.Wrap(pushErr, "Error pushing for alpha")
+ }
+ alpha = m.GetAlpha()
+ _alphaErr := writeBuffer.WriteSerializable(alpha)
+ if popErr := writeBuffer.PopContext("alpha"); popErr != nil {
+ return errors.Wrap(popErr, "Error popping for alpha")
+ }
+ if _alphaErr != nil {
+ return errors.Wrap(_alphaErr, "Error serializing 'alpha' field")
+ }
+ }
+
if popErr := writeBuffer.PopContext("RequestDirectCommandAccess"); popErr != nil {
return errors.Wrap(popErr, "Error popping for RequestDirectCommandAccess")
}
diff --git a/plc4go/protocols/cbus/readwrite/model/RequestReset.go b/plc4go/protocols/cbus/readwrite/model/RequestReset.go
index 6ce42e07d..e53293a0f 100644
--- a/plc4go/protocols/cbus/readwrite/model/RequestReset.go
+++ b/plc4go/protocols/cbus/readwrite/model/RequestReset.go
@@ -34,11 +34,11 @@ type RequestReset interface {
// GetTildePeek returns TildePeek (property field)
GetTildePeek() RequestType
// GetSecondTilde returns SecondTilde (property field)
- GetSecondTilde() *byte
+ GetSecondTilde() *RequestType
// GetTildePeek2 returns TildePeek2 (property field)
GetTildePeek2() RequestType
// GetThirdTilde returns ThirdTilde (property field)
- GetThirdTilde() *byte
+ GetThirdTilde() *RequestType
}
// RequestResetExactly can be used when we want exactly this type and not a type which fulfills RequestReset.
@@ -52,9 +52,9 @@ type RequestResetExactly interface {
type _RequestReset struct {
*_Request
TildePeek RequestType
- SecondTilde *byte
+ SecondTilde *RequestType
TildePeek2 RequestType
- ThirdTilde *byte
+ ThirdTilde *RequestType
}
///////////////////////////////////////////////////////////
@@ -88,7 +88,7 @@ func (m *_RequestReset) GetTildePeek() RequestType {
return m.TildePeek
}
-func (m *_RequestReset) GetSecondTilde() *byte {
+func (m *_RequestReset) GetSecondTilde() *RequestType {
return m.SecondTilde
}
@@ -96,7 +96,7 @@ func (m *_RequestReset) GetTildePeek2() RequestType {
return m.TildePeek2
}
-func (m *_RequestReset) GetThirdTilde() *byte {
+func (m *_RequestReset) GetThirdTilde() *RequestType {
return m.ThirdTilde
}
@@ -106,7 +106,7 @@ func (m *_RequestReset) GetThirdTilde() *byte {
///////////////////////////////////////////////////////////
// NewRequestReset factory function for _RequestReset
-func NewRequestReset(tildePeek RequestType, secondTilde *byte, tildePeek2 RequestType, thirdTilde *byte, peekedByte RequestType, startingCR *RequestType, resetMode *RequestType, secondPeek RequestType, termination RequestTermination, cBusOptions CBusOptions) *_RequestReset {
+func NewRequestReset(tildePeek RequestType, secondTilde *RequestType, tildePeek2 RequestType, thirdTilde *RequestType, peekedByte RequestType, startingCR *RequestType, resetMode *RequestType, secondPeek RequestType, termination RequestTermination, cBusOptions CBusOptions) *_RequestReset {
_result := &_RequestReset{
TildePeek: tildePeek,
SecondTilde: secondTilde,
@@ -182,13 +182,19 @@ func RequestResetParse(readBuffer utils.ReadBuffer, cBusOptions CBusOptions) (Re
readBuffer.Reset(currentPos)
// Optional Field (secondTilde) (Can be skipped, if a given expression evaluates to false)
- var secondTilde *byte = nil
+ var secondTilde *RequestType = nil
if bool((tildePeek) == (RequestType_RESET)) {
- _val, _err := readBuffer.ReadByte("secondTilde")
+ if pullErr := readBuffer.PullContext("secondTilde"); pullErr != nil {
+ return nil, errors.Wrap(pullErr, "Error pulling for secondTilde")
+ }
+ _val, _err := RequestTypeParse(readBuffer)
if _err != nil {
return nil, errors.Wrap(_err, "Error parsing 'secondTilde' field of RequestReset")
}
secondTilde = &_val
+ if closeErr := readBuffer.CloseContext("secondTilde"); closeErr != nil {
+ return nil, errors.Wrap(closeErr, "Error closing for secondTilde")
+ }
}
// Peek Field (tildePeek2)
@@ -207,13 +213,19 @@ func RequestResetParse(readBuffer utils.ReadBuffer, cBusOptions CBusOptions) (Re
readBuffer.Reset(currentPos)
// Optional Field (thirdTilde) (Can be skipped, if a given expression evaluates to false)
- var thirdTilde *byte = nil
+ var thirdTilde *RequestType = nil
if bool((tildePeek2) == (RequestType_RESET)) {
- _val, _err := readBuffer.ReadByte("thirdTilde")
+ if pullErr := readBuffer.PullContext("thirdTilde"); pullErr != nil {
+ return nil, errors.Wrap(pullErr, "Error pulling for thirdTilde")
+ }
+ _val, _err := RequestTypeParse(readBuffer)
if _err != nil {
return nil, errors.Wrap(_err, "Error parsing 'thirdTilde' field of RequestReset")
}
thirdTilde = &_val
+ if closeErr := readBuffer.CloseContext("thirdTilde"); closeErr != nil {
+ return nil, errors.Wrap(closeErr, "Error closing for thirdTilde")
+ }
}
if closeErr := readBuffer.CloseContext("RequestReset"); closeErr != nil {
@@ -243,20 +255,32 @@ func (m *_RequestReset) Serialize(writeBuffer utils.WriteBuffer) error {
}
// Optional Field (secondTilde) (Can be skipped, if the value is null)
- var secondTilde *byte = nil
+ var secondTilde *RequestType = nil
if m.GetSecondTilde() != nil {
+ if pushErr := writeBuffer.PushContext("secondTilde"); pushErr != nil {
+ return errors.Wrap(pushErr, "Error pushing for secondTilde")
+ }
secondTilde = m.GetSecondTilde()
- _secondTildeErr := writeBuffer.WriteByte("secondTilde", *(secondTilde))
+ _secondTildeErr := writeBuffer.WriteSerializable(secondTilde)
+ if popErr := writeBuffer.PopContext("secondTilde"); popErr != nil {
+ return errors.Wrap(popErr, "Error popping for secondTilde")
+ }
if _secondTildeErr != nil {
return errors.Wrap(_secondTildeErr, "Error serializing 'secondTilde' field")
}
}
// Optional Field (thirdTilde) (Can be skipped, if the value is null)
- var thirdTilde *byte = nil
+ var thirdTilde *RequestType = nil
if m.GetThirdTilde() != nil {
+ if pushErr := writeBuffer.PushContext("thirdTilde"); pushErr != nil {
+ return errors.Wrap(pushErr, "Error pushing for thirdTilde")
+ }
thirdTilde = m.GetThirdTilde()
- _thirdTildeErr := writeBuffer.WriteByte("thirdTilde", *(thirdTilde))
+ _thirdTildeErr := writeBuffer.WriteSerializable(thirdTilde)
+ if popErr := writeBuffer.PopContext("thirdTilde"); popErr != nil {
+ return errors.Wrap(popErr, "Error popping for thirdTilde")
+ }
if _thirdTildeErr != nil {
return errors.Wrap(_thirdTildeErr, "Error serializing 'thirdTilde' field")
}
diff --git a/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec b/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec
index e76267854..fdcc00327 100644
--- a/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec
+++ b/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec
@@ -74,9 +74,9 @@
]
['RESET' *Reset
[peek RequestType tildePeek ]
- [optional byte secondTilde 'tildePeek == RequestType.RESET' ]
+ [optional RequestType secondTilde 'tildePeek == RequestType.RESET' ]
[peek RequestType tildePeek2 ]
- [optional byte thirdTilde 'tildePeek2 == RequestType.RESET' ]
+ [optional RequestType thirdTilde 'tildePeek2 == RequestType.RESET' ]
]
['DIRECT_COMMAND' *DirectCommandAccess
[const byte at 0x40 ]
@@ -87,6 +87,7 @@
'(calData.lengthInBytes*2)*8' ]
[virtual CALData
calDataDecoded 'calData' ]
+ [optional Alpha alpha ]
]
['REQUEST_COMMAND' *Command
[const byte initiator 0x5C ] // 0x5C == "\"