plc4go/protocols/cbus/readwrite/model/SecurityData.go (940 lines of code) (raw):
/*
* 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
*
* https://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 (
"context"
"fmt"
"github.com/pkg/errors"
"github.com/rs/zerolog"
. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
. "github.com/apache/plc4x/plc4go/spi/codegen/io"
"github.com/apache/plc4x/plc4go/spi/utils"
)
// Code generated by code-generation. DO NOT EDIT.
// SecurityData is the corresponding interface of SecurityData
type SecurityData interface {
SecurityDataContract
SecurityDataRequirements
fmt.Stringer
utils.LengthAware
utils.Serializable
utils.Copyable
// IsSecurityData is a marker method to prevent unintentional type checks (interfaces of same signature)
IsSecurityData()
// CreateBuilder creates a SecurityDataBuilder
CreateSecurityDataBuilder() SecurityDataBuilder
}
// SecurityDataContract provides a set of functions which can be overwritten by a sub struct
type SecurityDataContract interface {
// GetCommandTypeContainer returns CommandTypeContainer (property field)
GetCommandTypeContainer() SecurityCommandTypeContainer
// GetArgument returns Argument (property field)
GetArgument() byte
// GetCommandType returns CommandType (virtual field)
GetCommandType() SecurityCommandType
// IsSecurityData is a marker method to prevent unintentional type checks (interfaces of same signature)
IsSecurityData()
// CreateBuilder creates a SecurityDataBuilder
CreateSecurityDataBuilder() SecurityDataBuilder
}
// SecurityDataRequirements provides a set of functions which need to be implemented by a sub struct
type SecurityDataRequirements interface {
GetLengthInBits(ctx context.Context) uint16
GetLengthInBytes(ctx context.Context) uint16
// GetArgument returns Argument (discriminator field)
GetArgument() byte
// GetCommandType returns CommandType (discriminator field)
GetCommandType() SecurityCommandType
}
// _SecurityData is the data-structure of this message
type _SecurityData struct {
_SubType interface {
SecurityDataContract
SecurityDataRequirements
}
CommandTypeContainer SecurityCommandTypeContainer
Argument byte
}
var _ SecurityDataContract = (*_SecurityData)(nil)
// NewSecurityData factory function for _SecurityData
func NewSecurityData(commandTypeContainer SecurityCommandTypeContainer, argument byte) *_SecurityData {
return &_SecurityData{CommandTypeContainer: commandTypeContainer, Argument: argument}
}
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
/////////////////////// Builder
///////////////////////
// SecurityDataBuilder is a builder for SecurityData
type SecurityDataBuilder interface {
utils.Copyable
// WithMandatoryFields adds all mandatory fields (convenience for using multiple builder calls)
WithMandatoryFields(commandTypeContainer SecurityCommandTypeContainer, argument byte) SecurityDataBuilder
// WithCommandTypeContainer adds CommandTypeContainer (property field)
WithCommandTypeContainer(SecurityCommandTypeContainer) SecurityDataBuilder
// WithArgument adds Argument (property field)
WithArgument(byte) SecurityDataBuilder
// AsSecurityDataSystemArmedDisarmed converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataSystemArmedDisarmed() SecurityDataSystemArmedDisarmedBuilder
// AsSecurityDataSystemDisarmed converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataSystemDisarmed() SecurityDataSystemDisarmedBuilder
// AsSecurityDataExitDelayStarted converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataExitDelayStarted() SecurityDataExitDelayStartedBuilder
// AsSecurityDataEntryDelayStarted converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataEntryDelayStarted() SecurityDataEntryDelayStartedBuilder
// AsSecurityDataAlarmOn converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataAlarmOn() SecurityDataAlarmOnBuilder
// AsSecurityDataAlarmOff converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataAlarmOff() SecurityDataAlarmOffBuilder
// AsSecurityDataTamperOn converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataTamperOn() SecurityDataTamperOnBuilder
// AsSecurityDataTamperOff converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataTamperOff() SecurityDataTamperOffBuilder
// AsSecurityDataPanicActivated converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataPanicActivated() SecurityDataPanicActivatedBuilder
// AsSecurityDataPanicCleared converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataPanicCleared() SecurityDataPanicClearedBuilder
// AsSecurityDataZoneUnsealed converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataZoneUnsealed() SecurityDataZoneUnsealedBuilder
// AsSecurityDataZoneSealed converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataZoneSealed() SecurityDataZoneSealedBuilder
// AsSecurityDataZoneOpen converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataZoneOpen() SecurityDataZoneOpenBuilder
// AsSecurityDataZoneShort converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataZoneShort() SecurityDataZoneShortBuilder
// AsSecurityDataZoneIsolated converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataZoneIsolated() SecurityDataZoneIsolatedBuilder
// AsSecurityDataLowBatteryDetected converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataLowBatteryDetected() SecurityDataLowBatteryDetectedBuilder
// AsSecurityDataLowBatteryCorrected converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataLowBatteryCorrected() SecurityDataLowBatteryCorrectedBuilder
// AsSecurityDataLowBatteryCharging converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataLowBatteryCharging() SecurityDataLowBatteryChargingBuilder
// AsSecurityDataZoneName converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataZoneName() SecurityDataZoneNameBuilder
// AsSecurityDataStatusReport1 converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataStatusReport1() SecurityDataStatusReport1Builder
// AsSecurityDataStatusReport2 converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataStatusReport2() SecurityDataStatusReport2Builder
// AsSecurityDataPasswordEntryStatus converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataPasswordEntryStatus() SecurityDataPasswordEntryStatusBuilder
// AsSecurityDataMainsFailure converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataMainsFailure() SecurityDataMainsFailureBuilder
// AsSecurityDataMainsRestoredOrApplied converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataMainsRestoredOrApplied() SecurityDataMainsRestoredOrAppliedBuilder
// AsSecurityDataArmReadyNotReady converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataArmReadyNotReady() SecurityDataArmReadyNotReadyBuilder
// AsSecurityDataCurrentAlarmType converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataCurrentAlarmType() SecurityDataCurrentAlarmTypeBuilder
// AsSecurityDataLineCutAlarmRaised converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataLineCutAlarmRaised() SecurityDataLineCutAlarmRaisedBuilder
// AsSecurityDataLineCutAlarmCleared converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataLineCutAlarmCleared() SecurityDataLineCutAlarmClearedBuilder
// AsSecurityDataArmFailedRaised converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataArmFailedRaised() SecurityDataArmFailedRaisedBuilder
// AsSecurityDataArmFailedCleared converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataArmFailedCleared() SecurityDataArmFailedClearedBuilder
// AsSecurityDataFireAlarmRaised converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataFireAlarmRaised() SecurityDataFireAlarmRaisedBuilder
// AsSecurityDataFireAlarmCleared converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataFireAlarmCleared() SecurityDataFireAlarmClearedBuilder
// AsSecurityDataGasAlarmRaised converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataGasAlarmRaised() SecurityDataGasAlarmRaisedBuilder
// AsSecurityDataGasAlarmCleared converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataGasAlarmCleared() SecurityDataGasAlarmClearedBuilder
// AsSecurityDataOtherAlarmRaised converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataOtherAlarmRaised() SecurityDataOtherAlarmRaisedBuilder
// AsSecurityDataOtherAlarmCleared converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataOtherAlarmCleared() SecurityDataOtherAlarmClearedBuilder
// AsSecurityDataStatus1Request converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataStatus1Request() SecurityDataStatus1RequestBuilder
// AsSecurityDataStatus2Request converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataStatus2Request() SecurityDataStatus2RequestBuilder
// AsSecurityDataArmSystem converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataArmSystem() SecurityDataArmSystemBuilder
// AsSecurityDataRaiseTamper converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataRaiseTamper() SecurityDataRaiseTamperBuilder
// AsSecurityDataDropTamper converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataDropTamper() SecurityDataDropTamperBuilder
// AsSecurityDataRaiseAlarm converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataRaiseAlarm() SecurityDataRaiseAlarmBuilder
// AsSecurityDataEmulatedKeypad converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataEmulatedKeypad() SecurityDataEmulatedKeypadBuilder
// AsSecurityDataDisplayMessage converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataDisplayMessage() SecurityDataDisplayMessageBuilder
// AsSecurityDataRequestZoneName converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataRequestZoneName() SecurityDataRequestZoneNameBuilder
// AsSecurityDataOff converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataOff() SecurityDataOffBuilder
// AsSecurityDataOn converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataOn() SecurityDataOnBuilder
// AsSecurityDataEvent converts this build to a subType of SecurityData. It is always possible to return to current builder using Done()
AsSecurityDataEvent() SecurityDataEventBuilder
// Build builds the SecurityData or returns an error if something is wrong
PartialBuild() (SecurityDataContract, error)
// MustBuild does the same as Build but panics on error
PartialMustBuild() SecurityDataContract
// Build builds the SecurityData or returns an error if something is wrong
Build() (SecurityData, error)
// MustBuild does the same as Build but panics on error
MustBuild() SecurityData
}
// NewSecurityDataBuilder() creates a SecurityDataBuilder
func NewSecurityDataBuilder() SecurityDataBuilder {
return &_SecurityDataBuilder{_SecurityData: new(_SecurityData)}
}
type _SecurityDataChildBuilder interface {
utils.Copyable
setParent(SecurityDataContract)
buildForSecurityData() (SecurityData, error)
}
type _SecurityDataBuilder struct {
*_SecurityData
childBuilder _SecurityDataChildBuilder
err *utils.MultiError
}
var _ (SecurityDataBuilder) = (*_SecurityDataBuilder)(nil)
func (b *_SecurityDataBuilder) WithMandatoryFields(commandTypeContainer SecurityCommandTypeContainer, argument byte) SecurityDataBuilder {
return b.WithCommandTypeContainer(commandTypeContainer).WithArgument(argument)
}
func (b *_SecurityDataBuilder) WithCommandTypeContainer(commandTypeContainer SecurityCommandTypeContainer) SecurityDataBuilder {
b.CommandTypeContainer = commandTypeContainer
return b
}
func (b *_SecurityDataBuilder) WithArgument(argument byte) SecurityDataBuilder {
b.Argument = argument
return b
}
func (b *_SecurityDataBuilder) PartialBuild() (SecurityDataContract, error) {
if b.err != nil {
return nil, errors.Wrap(b.err, "error occurred during build")
}
return b._SecurityData.deepCopy(), nil
}
func (b *_SecurityDataBuilder) PartialMustBuild() SecurityDataContract {
build, err := b.PartialBuild()
if err != nil {
panic(err)
}
return build
}
func (b *_SecurityDataBuilder) AsSecurityDataSystemArmedDisarmed() SecurityDataSystemArmedDisarmedBuilder {
if cb, ok := b.childBuilder.(SecurityDataSystemArmedDisarmedBuilder); ok {
return cb
}
cb := NewSecurityDataSystemArmedDisarmedBuilder().(*_SecurityDataSystemArmedDisarmedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataSystemDisarmed() SecurityDataSystemDisarmedBuilder {
if cb, ok := b.childBuilder.(SecurityDataSystemDisarmedBuilder); ok {
return cb
}
cb := NewSecurityDataSystemDisarmedBuilder().(*_SecurityDataSystemDisarmedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataExitDelayStarted() SecurityDataExitDelayStartedBuilder {
if cb, ok := b.childBuilder.(SecurityDataExitDelayStartedBuilder); ok {
return cb
}
cb := NewSecurityDataExitDelayStartedBuilder().(*_SecurityDataExitDelayStartedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataEntryDelayStarted() SecurityDataEntryDelayStartedBuilder {
if cb, ok := b.childBuilder.(SecurityDataEntryDelayStartedBuilder); ok {
return cb
}
cb := NewSecurityDataEntryDelayStartedBuilder().(*_SecurityDataEntryDelayStartedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataAlarmOn() SecurityDataAlarmOnBuilder {
if cb, ok := b.childBuilder.(SecurityDataAlarmOnBuilder); ok {
return cb
}
cb := NewSecurityDataAlarmOnBuilder().(*_SecurityDataAlarmOnBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataAlarmOff() SecurityDataAlarmOffBuilder {
if cb, ok := b.childBuilder.(SecurityDataAlarmOffBuilder); ok {
return cb
}
cb := NewSecurityDataAlarmOffBuilder().(*_SecurityDataAlarmOffBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataTamperOn() SecurityDataTamperOnBuilder {
if cb, ok := b.childBuilder.(SecurityDataTamperOnBuilder); ok {
return cb
}
cb := NewSecurityDataTamperOnBuilder().(*_SecurityDataTamperOnBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataTamperOff() SecurityDataTamperOffBuilder {
if cb, ok := b.childBuilder.(SecurityDataTamperOffBuilder); ok {
return cb
}
cb := NewSecurityDataTamperOffBuilder().(*_SecurityDataTamperOffBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataPanicActivated() SecurityDataPanicActivatedBuilder {
if cb, ok := b.childBuilder.(SecurityDataPanicActivatedBuilder); ok {
return cb
}
cb := NewSecurityDataPanicActivatedBuilder().(*_SecurityDataPanicActivatedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataPanicCleared() SecurityDataPanicClearedBuilder {
if cb, ok := b.childBuilder.(SecurityDataPanicClearedBuilder); ok {
return cb
}
cb := NewSecurityDataPanicClearedBuilder().(*_SecurityDataPanicClearedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataZoneUnsealed() SecurityDataZoneUnsealedBuilder {
if cb, ok := b.childBuilder.(SecurityDataZoneUnsealedBuilder); ok {
return cb
}
cb := NewSecurityDataZoneUnsealedBuilder().(*_SecurityDataZoneUnsealedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataZoneSealed() SecurityDataZoneSealedBuilder {
if cb, ok := b.childBuilder.(SecurityDataZoneSealedBuilder); ok {
return cb
}
cb := NewSecurityDataZoneSealedBuilder().(*_SecurityDataZoneSealedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataZoneOpen() SecurityDataZoneOpenBuilder {
if cb, ok := b.childBuilder.(SecurityDataZoneOpenBuilder); ok {
return cb
}
cb := NewSecurityDataZoneOpenBuilder().(*_SecurityDataZoneOpenBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataZoneShort() SecurityDataZoneShortBuilder {
if cb, ok := b.childBuilder.(SecurityDataZoneShortBuilder); ok {
return cb
}
cb := NewSecurityDataZoneShortBuilder().(*_SecurityDataZoneShortBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataZoneIsolated() SecurityDataZoneIsolatedBuilder {
if cb, ok := b.childBuilder.(SecurityDataZoneIsolatedBuilder); ok {
return cb
}
cb := NewSecurityDataZoneIsolatedBuilder().(*_SecurityDataZoneIsolatedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataLowBatteryDetected() SecurityDataLowBatteryDetectedBuilder {
if cb, ok := b.childBuilder.(SecurityDataLowBatteryDetectedBuilder); ok {
return cb
}
cb := NewSecurityDataLowBatteryDetectedBuilder().(*_SecurityDataLowBatteryDetectedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataLowBatteryCorrected() SecurityDataLowBatteryCorrectedBuilder {
if cb, ok := b.childBuilder.(SecurityDataLowBatteryCorrectedBuilder); ok {
return cb
}
cb := NewSecurityDataLowBatteryCorrectedBuilder().(*_SecurityDataLowBatteryCorrectedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataLowBatteryCharging() SecurityDataLowBatteryChargingBuilder {
if cb, ok := b.childBuilder.(SecurityDataLowBatteryChargingBuilder); ok {
return cb
}
cb := NewSecurityDataLowBatteryChargingBuilder().(*_SecurityDataLowBatteryChargingBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataZoneName() SecurityDataZoneNameBuilder {
if cb, ok := b.childBuilder.(SecurityDataZoneNameBuilder); ok {
return cb
}
cb := NewSecurityDataZoneNameBuilder().(*_SecurityDataZoneNameBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataStatusReport1() SecurityDataStatusReport1Builder {
if cb, ok := b.childBuilder.(SecurityDataStatusReport1Builder); ok {
return cb
}
cb := NewSecurityDataStatusReport1Builder().(*_SecurityDataStatusReport1Builder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataStatusReport2() SecurityDataStatusReport2Builder {
if cb, ok := b.childBuilder.(SecurityDataStatusReport2Builder); ok {
return cb
}
cb := NewSecurityDataStatusReport2Builder().(*_SecurityDataStatusReport2Builder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataPasswordEntryStatus() SecurityDataPasswordEntryStatusBuilder {
if cb, ok := b.childBuilder.(SecurityDataPasswordEntryStatusBuilder); ok {
return cb
}
cb := NewSecurityDataPasswordEntryStatusBuilder().(*_SecurityDataPasswordEntryStatusBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataMainsFailure() SecurityDataMainsFailureBuilder {
if cb, ok := b.childBuilder.(SecurityDataMainsFailureBuilder); ok {
return cb
}
cb := NewSecurityDataMainsFailureBuilder().(*_SecurityDataMainsFailureBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataMainsRestoredOrApplied() SecurityDataMainsRestoredOrAppliedBuilder {
if cb, ok := b.childBuilder.(SecurityDataMainsRestoredOrAppliedBuilder); ok {
return cb
}
cb := NewSecurityDataMainsRestoredOrAppliedBuilder().(*_SecurityDataMainsRestoredOrAppliedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataArmReadyNotReady() SecurityDataArmReadyNotReadyBuilder {
if cb, ok := b.childBuilder.(SecurityDataArmReadyNotReadyBuilder); ok {
return cb
}
cb := NewSecurityDataArmReadyNotReadyBuilder().(*_SecurityDataArmReadyNotReadyBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataCurrentAlarmType() SecurityDataCurrentAlarmTypeBuilder {
if cb, ok := b.childBuilder.(SecurityDataCurrentAlarmTypeBuilder); ok {
return cb
}
cb := NewSecurityDataCurrentAlarmTypeBuilder().(*_SecurityDataCurrentAlarmTypeBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataLineCutAlarmRaised() SecurityDataLineCutAlarmRaisedBuilder {
if cb, ok := b.childBuilder.(SecurityDataLineCutAlarmRaisedBuilder); ok {
return cb
}
cb := NewSecurityDataLineCutAlarmRaisedBuilder().(*_SecurityDataLineCutAlarmRaisedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataLineCutAlarmCleared() SecurityDataLineCutAlarmClearedBuilder {
if cb, ok := b.childBuilder.(SecurityDataLineCutAlarmClearedBuilder); ok {
return cb
}
cb := NewSecurityDataLineCutAlarmClearedBuilder().(*_SecurityDataLineCutAlarmClearedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataArmFailedRaised() SecurityDataArmFailedRaisedBuilder {
if cb, ok := b.childBuilder.(SecurityDataArmFailedRaisedBuilder); ok {
return cb
}
cb := NewSecurityDataArmFailedRaisedBuilder().(*_SecurityDataArmFailedRaisedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataArmFailedCleared() SecurityDataArmFailedClearedBuilder {
if cb, ok := b.childBuilder.(SecurityDataArmFailedClearedBuilder); ok {
return cb
}
cb := NewSecurityDataArmFailedClearedBuilder().(*_SecurityDataArmFailedClearedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataFireAlarmRaised() SecurityDataFireAlarmRaisedBuilder {
if cb, ok := b.childBuilder.(SecurityDataFireAlarmRaisedBuilder); ok {
return cb
}
cb := NewSecurityDataFireAlarmRaisedBuilder().(*_SecurityDataFireAlarmRaisedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataFireAlarmCleared() SecurityDataFireAlarmClearedBuilder {
if cb, ok := b.childBuilder.(SecurityDataFireAlarmClearedBuilder); ok {
return cb
}
cb := NewSecurityDataFireAlarmClearedBuilder().(*_SecurityDataFireAlarmClearedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataGasAlarmRaised() SecurityDataGasAlarmRaisedBuilder {
if cb, ok := b.childBuilder.(SecurityDataGasAlarmRaisedBuilder); ok {
return cb
}
cb := NewSecurityDataGasAlarmRaisedBuilder().(*_SecurityDataGasAlarmRaisedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataGasAlarmCleared() SecurityDataGasAlarmClearedBuilder {
if cb, ok := b.childBuilder.(SecurityDataGasAlarmClearedBuilder); ok {
return cb
}
cb := NewSecurityDataGasAlarmClearedBuilder().(*_SecurityDataGasAlarmClearedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataOtherAlarmRaised() SecurityDataOtherAlarmRaisedBuilder {
if cb, ok := b.childBuilder.(SecurityDataOtherAlarmRaisedBuilder); ok {
return cb
}
cb := NewSecurityDataOtherAlarmRaisedBuilder().(*_SecurityDataOtherAlarmRaisedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataOtherAlarmCleared() SecurityDataOtherAlarmClearedBuilder {
if cb, ok := b.childBuilder.(SecurityDataOtherAlarmClearedBuilder); ok {
return cb
}
cb := NewSecurityDataOtherAlarmClearedBuilder().(*_SecurityDataOtherAlarmClearedBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataStatus1Request() SecurityDataStatus1RequestBuilder {
if cb, ok := b.childBuilder.(SecurityDataStatus1RequestBuilder); ok {
return cb
}
cb := NewSecurityDataStatus1RequestBuilder().(*_SecurityDataStatus1RequestBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataStatus2Request() SecurityDataStatus2RequestBuilder {
if cb, ok := b.childBuilder.(SecurityDataStatus2RequestBuilder); ok {
return cb
}
cb := NewSecurityDataStatus2RequestBuilder().(*_SecurityDataStatus2RequestBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataArmSystem() SecurityDataArmSystemBuilder {
if cb, ok := b.childBuilder.(SecurityDataArmSystemBuilder); ok {
return cb
}
cb := NewSecurityDataArmSystemBuilder().(*_SecurityDataArmSystemBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataRaiseTamper() SecurityDataRaiseTamperBuilder {
if cb, ok := b.childBuilder.(SecurityDataRaiseTamperBuilder); ok {
return cb
}
cb := NewSecurityDataRaiseTamperBuilder().(*_SecurityDataRaiseTamperBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataDropTamper() SecurityDataDropTamperBuilder {
if cb, ok := b.childBuilder.(SecurityDataDropTamperBuilder); ok {
return cb
}
cb := NewSecurityDataDropTamperBuilder().(*_SecurityDataDropTamperBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataRaiseAlarm() SecurityDataRaiseAlarmBuilder {
if cb, ok := b.childBuilder.(SecurityDataRaiseAlarmBuilder); ok {
return cb
}
cb := NewSecurityDataRaiseAlarmBuilder().(*_SecurityDataRaiseAlarmBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataEmulatedKeypad() SecurityDataEmulatedKeypadBuilder {
if cb, ok := b.childBuilder.(SecurityDataEmulatedKeypadBuilder); ok {
return cb
}
cb := NewSecurityDataEmulatedKeypadBuilder().(*_SecurityDataEmulatedKeypadBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataDisplayMessage() SecurityDataDisplayMessageBuilder {
if cb, ok := b.childBuilder.(SecurityDataDisplayMessageBuilder); ok {
return cb
}
cb := NewSecurityDataDisplayMessageBuilder().(*_SecurityDataDisplayMessageBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataRequestZoneName() SecurityDataRequestZoneNameBuilder {
if cb, ok := b.childBuilder.(SecurityDataRequestZoneNameBuilder); ok {
return cb
}
cb := NewSecurityDataRequestZoneNameBuilder().(*_SecurityDataRequestZoneNameBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataOff() SecurityDataOffBuilder {
if cb, ok := b.childBuilder.(SecurityDataOffBuilder); ok {
return cb
}
cb := NewSecurityDataOffBuilder().(*_SecurityDataOffBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataOn() SecurityDataOnBuilder {
if cb, ok := b.childBuilder.(SecurityDataOnBuilder); ok {
return cb
}
cb := NewSecurityDataOnBuilder().(*_SecurityDataOnBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) AsSecurityDataEvent() SecurityDataEventBuilder {
if cb, ok := b.childBuilder.(SecurityDataEventBuilder); ok {
return cb
}
cb := NewSecurityDataEventBuilder().(*_SecurityDataEventBuilder)
cb.parentBuilder = b
b.childBuilder = cb
return cb
}
func (b *_SecurityDataBuilder) Build() (SecurityData, error) {
v, err := b.PartialBuild()
if err != nil {
return nil, errors.Wrap(err, "error occurred during partial build")
}
if b.childBuilder == nil {
return nil, errors.New("no child builder present")
}
b.childBuilder.setParent(v)
return b.childBuilder.buildForSecurityData()
}
func (b *_SecurityDataBuilder) MustBuild() SecurityData {
build, err := b.Build()
if err != nil {
panic(err)
}
return build
}
func (b *_SecurityDataBuilder) DeepCopy() any {
_copy := b.CreateSecurityDataBuilder().(*_SecurityDataBuilder)
_copy.childBuilder = b.childBuilder.DeepCopy().(_SecurityDataChildBuilder)
_copy.childBuilder.setParent(_copy)
if b.err != nil {
_copy.err = b.err.DeepCopy().(*utils.MultiError)
}
return _copy
}
// CreateSecurityDataBuilder creates a SecurityDataBuilder
func (b *_SecurityData) CreateSecurityDataBuilder() SecurityDataBuilder {
if b == nil {
return NewSecurityDataBuilder()
}
return &_SecurityDataBuilder{_SecurityData: b.deepCopy()}
}
///////////////////////
///////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
/////////////////////// Accessors for property fields.
///////////////////////
func (m *_SecurityData) GetCommandTypeContainer() SecurityCommandTypeContainer {
return m.CommandTypeContainer
}
func (m *_SecurityData) GetArgument() byte {
return m.Argument
}
///////////////////////
///////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
/////////////////////// Accessors for virtual fields.
///////////////////////
func (pm *_SecurityData) GetCommandType() SecurityCommandType {
m := pm._SubType
ctx := context.Background()
_ = ctx
return CastSecurityCommandType(m.GetCommandTypeContainer().CommandType())
}
///////////////////////
///////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
// Deprecated: use the interface for direct cast
func CastSecurityData(structType any) SecurityData {
if casted, ok := structType.(SecurityData); ok {
return casted
}
if casted, ok := structType.(*SecurityData); ok {
return *casted
}
return nil
}
func (m *_SecurityData) GetTypeName() string {
return "SecurityData"
}
func (m *_SecurityData) getLengthInBits(ctx context.Context) uint16 {
lengthInBits := uint16(0)
// Simple field (commandTypeContainer)
lengthInBits += 8
// A virtual field doesn't have any in- or output.
// Simple field (argument)
lengthInBits += 8
return lengthInBits
}
func (m *_SecurityData) GetLengthInBits(ctx context.Context) uint16 {
return m._SubType.GetLengthInBits(ctx)
}
func (m *_SecurityData) GetLengthInBytes(ctx context.Context) uint16 {
return m._SubType.GetLengthInBits(ctx) / 8
}
func SecurityDataParse[T SecurityData](ctx context.Context, theBytes []byte) (T, error) {
return SecurityDataParseWithBuffer[T](ctx, utils.NewReadBufferByteBased(theBytes))
}
func SecurityDataParseWithBufferProducer[T SecurityData]() func(ctx context.Context, readBuffer utils.ReadBuffer) (T, error) {
return func(ctx context.Context, readBuffer utils.ReadBuffer) (T, error) {
v, err := SecurityDataParseWithBuffer[T](ctx, readBuffer)
if err != nil {
var zero T
return zero, err
}
return v, nil
}
}
func SecurityDataParseWithBuffer[T SecurityData](ctx context.Context, readBuffer utils.ReadBuffer) (T, error) {
v, err := (&_SecurityData{}).parse(ctx, readBuffer)
if err != nil {
var zero T
return zero, err
}
vc, ok := v.(T)
if !ok {
var zero T
return zero, errors.Errorf("Unexpected type %T. Expected type %T", v, *new(T))
}
return vc, nil
}
func (m *_SecurityData) parse(ctx context.Context, readBuffer utils.ReadBuffer) (__securityData SecurityData, err error) {
positionAware := readBuffer
_ = positionAware
if pullErr := readBuffer.PullContext("SecurityData"); pullErr != nil {
return nil, errors.Wrap(pullErr, "Error pulling for SecurityData")
}
currentPos := positionAware.GetPos()
_ = currentPos
// Validation
if !(KnowsSecurityCommandTypeContainer(ctx, readBuffer)) {
return nil, errors.WithStack(utils.ParseAssertError{Message: "no command type could be found"})
}
commandTypeContainer, err := ReadEnumField[SecurityCommandTypeContainer](ctx, "commandTypeContainer", "SecurityCommandTypeContainer", ReadEnum(SecurityCommandTypeContainerByValue, ReadUnsignedByte(readBuffer, uint8(8))))
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'commandTypeContainer' field"))
}
m.CommandTypeContainer = commandTypeContainer
commandType, err := ReadVirtualField[SecurityCommandType](ctx, "commandType", (*SecurityCommandType)(nil), commandTypeContainer.CommandType())
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'commandType' field"))
}
_ = commandType
argument, err := ReadSimpleField(ctx, "argument", ReadByte(readBuffer, 8))
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'argument' field"))
}
m.Argument = argument
// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
var _child SecurityData
switch {
case commandType == SecurityCommandType_ON && argument == 0x80: // SecurityDataSystemArmedDisarmed
if _child, err = new(_SecurityDataSystemArmedDisarmed).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataSystemArmedDisarmed for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF && argument == 0x80: // SecurityDataSystemDisarmed
if _child, err = new(_SecurityDataSystemDisarmed).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataSystemDisarmed for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x81: // SecurityDataExitDelayStarted
if _child, err = new(_SecurityDataExitDelayStarted).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataExitDelayStarted for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x82: // SecurityDataEntryDelayStarted
if _child, err = new(_SecurityDataEntryDelayStarted).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataEntryDelayStarted for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0x83: // SecurityDataAlarmOn
if _child, err = new(_SecurityDataAlarmOn).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataAlarmOn for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF && argument == 0x83: // SecurityDataAlarmOff
if _child, err = new(_SecurityDataAlarmOff).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataAlarmOff for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0x84: // SecurityDataTamperOn
if _child, err = new(_SecurityDataTamperOn).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataTamperOn for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF && argument == 0x84: // SecurityDataTamperOff
if _child, err = new(_SecurityDataTamperOff).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataTamperOff for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0x85: // SecurityDataPanicActivated
if _child, err = new(_SecurityDataPanicActivated).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataPanicActivated for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF && argument == 0x85: // SecurityDataPanicCleared
if _child, err = new(_SecurityDataPanicCleared).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataPanicCleared for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x86: // SecurityDataZoneUnsealed
if _child, err = new(_SecurityDataZoneUnsealed).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataZoneUnsealed for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x87: // SecurityDataZoneSealed
if _child, err = new(_SecurityDataZoneSealed).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataZoneSealed for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x88: // SecurityDataZoneOpen
if _child, err = new(_SecurityDataZoneOpen).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataZoneOpen for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x89: // SecurityDataZoneShort
if _child, err = new(_SecurityDataZoneShort).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataZoneShort for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x89: // SecurityDataZoneIsolated
if _child, err = new(_SecurityDataZoneIsolated).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataZoneIsolated for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0x8B: // SecurityDataLowBatteryDetected
if _child, err = new(_SecurityDataLowBatteryDetected).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataLowBatteryDetected for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF && argument == 0x8B: // SecurityDataLowBatteryCorrected
if _child, err = new(_SecurityDataLowBatteryCorrected).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataLowBatteryCorrected for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x8C: // SecurityDataLowBatteryCharging
if _child, err = new(_SecurityDataLowBatteryCharging).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataLowBatteryCharging for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x8D: // SecurityDataZoneName
if _child, err = new(_SecurityDataZoneName).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataZoneName for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x8E: // SecurityDataStatusReport1
if _child, err = new(_SecurityDataStatusReport1).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataStatusReport1 for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x8F: // SecurityDataStatusReport2
if _child, err = new(_SecurityDataStatusReport2).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataStatusReport2 for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x90: // SecurityDataPasswordEntryStatus
if _child, err = new(_SecurityDataPasswordEntryStatus).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataPasswordEntryStatus for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0x91: // SecurityDataMainsFailure
if _child, err = new(_SecurityDataMainsFailure).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataMainsFailure for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF && argument == 0x91: // SecurityDataMainsRestoredOrApplied
if _child, err = new(_SecurityDataMainsRestoredOrApplied).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataMainsRestoredOrApplied for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x92: // SecurityDataArmReadyNotReady
if _child, err = new(_SecurityDataArmReadyNotReady).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataArmReadyNotReady for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0x93: // SecurityDataCurrentAlarmType
if _child, err = new(_SecurityDataCurrentAlarmType).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataCurrentAlarmType for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0x94: // SecurityDataLineCutAlarmRaised
if _child, err = new(_SecurityDataLineCutAlarmRaised).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataLineCutAlarmRaised for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF && argument == 0x94: // SecurityDataLineCutAlarmCleared
if _child, err = new(_SecurityDataLineCutAlarmCleared).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataLineCutAlarmCleared for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0x95: // SecurityDataArmFailedRaised
if _child, err = new(_SecurityDataArmFailedRaised).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataArmFailedRaised for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF && argument == 0x95: // SecurityDataArmFailedCleared
if _child, err = new(_SecurityDataArmFailedCleared).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataArmFailedCleared for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0x96: // SecurityDataFireAlarmRaised
if _child, err = new(_SecurityDataFireAlarmRaised).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataFireAlarmRaised for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF && argument == 0x96: // SecurityDataFireAlarmCleared
if _child, err = new(_SecurityDataFireAlarmCleared).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataFireAlarmCleared for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0x97: // SecurityDataGasAlarmRaised
if _child, err = new(_SecurityDataGasAlarmRaised).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataGasAlarmRaised for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF && argument == 0x97: // SecurityDataGasAlarmCleared
if _child, err = new(_SecurityDataGasAlarmCleared).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataGasAlarmCleared for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0x98: // SecurityDataOtherAlarmRaised
if _child, err = new(_SecurityDataOtherAlarmRaised).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataOtherAlarmRaised for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF && argument == 0x98: // SecurityDataOtherAlarmCleared
if _child, err = new(_SecurityDataOtherAlarmCleared).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataOtherAlarmCleared for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0xA0: // SecurityDataStatus1Request
if _child, err = new(_SecurityDataStatus1Request).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataStatus1Request for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0xA1: // SecurityDataStatus2Request
if _child, err = new(_SecurityDataStatus2Request).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataStatus2Request for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0xA2: // SecurityDataArmSystem
if _child, err = new(_SecurityDataArmSystem).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataArmSystem for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0xA3: // SecurityDataRaiseTamper
if _child, err = new(_SecurityDataRaiseTamper).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataRaiseTamper for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF && argument == 0xA3: // SecurityDataDropTamper
if _child, err = new(_SecurityDataDropTamper).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataDropTamper for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0xA4: // SecurityDataRaiseAlarm
if _child, err = new(_SecurityDataRaiseAlarm).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataRaiseAlarm for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0xA5: // SecurityDataEmulatedKeypad
if _child, err = new(_SecurityDataEmulatedKeypad).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataEmulatedKeypad for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON && argument == 0xA6: // SecurityDataDisplayMessage
if _child, err = new(_SecurityDataDisplayMessage).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataDisplayMessage for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT && argument == 0xA7: // SecurityDataRequestZoneName
if _child, err = new(_SecurityDataRequestZoneName).parse(ctx, readBuffer, m); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataRequestZoneName for type-switch of SecurityData")
}
case commandType == SecurityCommandType_OFF: // SecurityDataOff
if _child, err = new(_SecurityDataOff).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataOff for type-switch of SecurityData")
}
case commandType == SecurityCommandType_ON: // SecurityDataOn
if _child, err = new(_SecurityDataOn).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataOn for type-switch of SecurityData")
}
case commandType == SecurityCommandType_EVENT: // SecurityDataEvent
if _child, err = new(_SecurityDataEvent).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataEvent for type-switch of SecurityData")
}
default:
return nil, errors.Errorf("Unmapped type for parameters [commandType=%v, argument=%v]", commandType, argument)
}
if closeErr := readBuffer.CloseContext("SecurityData"); closeErr != nil {
return nil, errors.Wrap(closeErr, "Error closing for SecurityData")
}
return _child, nil
}
func (pm *_SecurityData) serializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child SecurityData, serializeChildFunction func() error) error {
// We redirect all calls through client as some methods are only implemented there
m := child
_ = m
positionAware := writeBuffer
_ = positionAware
log := zerolog.Ctx(ctx)
_ = log
if pushErr := writeBuffer.PushContext("SecurityData"); pushErr != nil {
return errors.Wrap(pushErr, "Error pushing for SecurityData")
}
if err := WriteSimpleEnumField[SecurityCommandTypeContainer](ctx, "commandTypeContainer", "SecurityCommandTypeContainer", m.GetCommandTypeContainer(), WriteEnum[SecurityCommandTypeContainer, uint8](SecurityCommandTypeContainer.GetValue, SecurityCommandTypeContainer.PLC4XEnumName, WriteUnsignedByte(writeBuffer, 8))); err != nil {
return errors.Wrap(err, "Error serializing 'commandTypeContainer' field")
}
// Virtual field
commandType := m.GetCommandType()
_ = commandType
if _commandTypeErr := writeBuffer.WriteVirtual(ctx, "commandType", m.GetCommandType()); _commandTypeErr != nil {
return errors.Wrap(_commandTypeErr, "Error serializing 'commandType' field")
}
if err := WriteSimpleField[byte](ctx, "argument", m.GetArgument(), WriteByte(writeBuffer, 8)); err != nil {
return errors.Wrap(err, "Error serializing 'argument' field")
}
// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
if _typeSwitchErr := serializeChildFunction(); _typeSwitchErr != nil {
return errors.Wrap(_typeSwitchErr, "Error serializing sub-type field")
}
if popErr := writeBuffer.PopContext("SecurityData"); popErr != nil {
return errors.Wrap(popErr, "Error popping for SecurityData")
}
return nil
}
func (m *_SecurityData) IsSecurityData() {}
func (m *_SecurityData) DeepCopy() any {
return m.deepCopy()
}
func (m *_SecurityData) deepCopy() *_SecurityData {
if m == nil {
return nil
}
_SecurityDataCopy := &_SecurityData{
nil, // will be set by child
m.CommandTypeContainer,
m.Argument,
}
return _SecurityDataCopy
}