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/07/19 13:31:50 UTC

[plc4x] branch develop updated: feat(cbus): implemented air conditioning application

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/develop by this push:
     new f9a1dfcc7 feat(cbus): implemented air conditioning application
f9a1dfcc7 is described below

commit f9a1dfcc7731d43ea89d82713480e61ec41a05be
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Jul 19 15:31:43 2022 +0200

    feat(cbus): implemented air conditioning application
---
 .../cbus/readwrite/model/SALDataAirConditioning.go | 54 +++++++++++++++++++---
 .../src/main/resources/protocols/cbus/c-bus.mspec  |  2 +-
 2 files changed, 49 insertions(+), 7 deletions(-)

diff --git a/plc4go/protocols/cbus/readwrite/model/SALDataAirConditioning.go b/plc4go/protocols/cbus/readwrite/model/SALDataAirConditioning.go
index f55e860df..98f2d51b0 100644
--- a/plc4go/protocols/cbus/readwrite/model/SALDataAirConditioning.go
+++ b/plc4go/protocols/cbus/readwrite/model/SALDataAirConditioning.go
@@ -31,6 +31,8 @@ type SALDataAirConditioning interface {
 	utils.LengthAware
 	utils.Serializable
 	SALData
+	// GetAirConditioningData returns AirConditioningData (property field)
+	GetAirConditioningData() AirConditioningData
 }
 
 // SALDataAirConditioningExactly can be used when we want exactly this type and not a type which fulfills SALDataAirConditioning.
@@ -43,6 +45,7 @@ type SALDataAirConditioningExactly interface {
 // _SALDataAirConditioning is the data-structure of this message
 type _SALDataAirConditioning struct {
 	*_SALData
+	AirConditioningData AirConditioningData
 }
 
 ///////////////////////////////////////////////////////////
@@ -67,10 +70,25 @@ func (m *_SALDataAirConditioning) GetParent() SALData {
 	return m._SALData
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *_SALDataAirConditioning) GetAirConditioningData() AirConditioningData {
+	return m.AirConditioningData
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewSALDataAirConditioning factory function for _SALDataAirConditioning
-func NewSALDataAirConditioning(salData SALData) *_SALDataAirConditioning {
+func NewSALDataAirConditioning(airConditioningData AirConditioningData, salData SALData) *_SALDataAirConditioning {
 	_result := &_SALDataAirConditioning{
-		_SALData: NewSALData(salData),
+		AirConditioningData: airConditioningData,
+		_SALData:            NewSALData(salData),
 	}
 	_result._SALData._SALDataChildRequirements = _result
 	return _result
@@ -98,6 +116,9 @@ func (m *_SALDataAirConditioning) GetLengthInBits() uint16 {
 func (m *_SALDataAirConditioning) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
+	// Simple field (airConditioningData)
+	lengthInBits += m.AirConditioningData.GetLengthInBits()
+
 	return lengthInBits
 }
 
@@ -114,9 +135,17 @@ func SALDataAirConditioningParse(readBuffer utils.ReadBuffer, applicationId Appl
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	// Validation
-	if !(bool((1) == (2))) {
-		return nil, errors.WithStack(utils.ParseValidationError{"AIR_CONDITIONING Not yet implemented"})
+	// Simple Field (airConditioningData)
+	if pullErr := readBuffer.PullContext("airConditioningData"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for airConditioningData")
+	}
+	_airConditioningData, _airConditioningDataErr := AirConditioningDataParse(readBuffer)
+	if _airConditioningDataErr != nil {
+		return nil, errors.Wrap(_airConditioningDataErr, "Error parsing 'airConditioningData' field of SALDataAirConditioning")
+	}
+	airConditioningData := _airConditioningData.(AirConditioningData)
+	if closeErr := readBuffer.CloseContext("airConditioningData"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for airConditioningData")
 	}
 
 	if closeErr := readBuffer.CloseContext("SALDataAirConditioning"); closeErr != nil {
@@ -125,7 +154,8 @@ func SALDataAirConditioningParse(readBuffer utils.ReadBuffer, applicationId Appl
 
 	// Create a partially initialized instance
 	_child := &_SALDataAirConditioning{
-		_SALData: &_SALData{},
+		AirConditioningData: airConditioningData,
+		_SALData:            &_SALData{},
 	}
 	_child._SALData._SALDataChildRequirements = _child
 	return _child, nil
@@ -139,6 +169,18 @@ func (m *_SALDataAirConditioning) Serialize(writeBuffer utils.WriteBuffer) error
 			return errors.Wrap(pushErr, "Error pushing for SALDataAirConditioning")
 		}
 
+		// Simple Field (airConditioningData)
+		if pushErr := writeBuffer.PushContext("airConditioningData"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for airConditioningData")
+		}
+		_airConditioningDataErr := writeBuffer.WriteSerializable(m.GetAirConditioningData())
+		if popErr := writeBuffer.PopContext("airConditioningData"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for airConditioningData")
+		}
+		if _airConditioningDataErr != nil {
+			return errors.Wrap(_airConditioningDataErr, "Error serializing 'airConditioningData' field")
+		}
+
 		if popErr := writeBuffer.PopContext("SALDataAirConditioning"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for SALDataAirConditioning")
 		}
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 0e03f53e4..ece525360 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
@@ -1328,7 +1328,7 @@
             [validation '1==2' "HEATING Not yet implemented"] // TODO: implement me
         ]
         ['AIR_CONDITIONING'                     *AirConditioning
-            [validation '1==2' "AIR_CONDITIONING Not yet implemented"] // TODO: implement me
+            [simple AirConditioningData airConditioningData]
         ]
         ['TRIGGER_CONTROL'                      *TriggerControl
             [simple TriggerControlData triggerControlData]