Skip to content

Commit 80409c9

Browse files
Share LPC and LPP failsafe duration minimum (#99)
If LPC and LPP in a controllable system are used in the same entity, then the failsafe duration minimum is a shared data point and will be used from both use cases. Also fix minor typo in comments
2 parents 2cedc85 + 2fdd830 commit 80409c9

File tree

3 files changed

+28
-14
lines changed

3 files changed

+28
-14
lines changed

usecases/cs/lpc/usecase.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,19 @@ func (e *LPC) AddFeatures() {
189189
Unit: util.Ptr(model.UnitOfMeasurementTypeW),
190190
},
191191
)
192-
dcs.AddKeyValueDescription(
193-
model.DeviceConfigurationKeyValueDescriptionDataType{
194-
KeyName: util.Ptr(model.DeviceConfigurationKeyNameTypeFailsafeDurationMinimum),
195-
ValueType: util.Ptr(model.DeviceConfigurationKeyValueTypeTypeDuration),
196-
},
197-
)
192+
193+
// only add if it doesn't exist yet
194+
filter := model.DeviceConfigurationKeyValueDescriptionDataType{
195+
KeyName: util.Ptr(model.DeviceConfigurationKeyNameTypeFailsafeDurationMinimum),
196+
}
197+
if data, err := dcs.GetKeyValueDescriptionsForFilter(filter); err == nil && len(data) == 0 {
198+
dcs.AddKeyValueDescription(
199+
model.DeviceConfigurationKeyValueDescriptionDataType{
200+
KeyName: util.Ptr(model.DeviceConfigurationKeyNameTypeFailsafeDurationMinimum),
201+
ValueType: util.Ptr(model.DeviceConfigurationKeyValueTypeTypeDuration),
202+
},
203+
)
204+
}
198205

199206
value := &model.DeviceConfigurationKeyValueValueType{
200207
ScaledNumber: model.NewScaledNumberType(0),

usecases/cs/lpp/public.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func (e *LPP) SetProductionLimit(limit ucapi.LoadLimit) (resultErr error) {
7979
return loadControlf.UpdateLimitDataForId(limitData, deleteTimePeriod, limidId)
8080
}
8181

82-
// return the currently pending incoming consumption write limits
82+
// return the currently pending incoming production write limits
8383
func (e *LPP) PendingProductionLimits() map[model.MsgCounterType]ucapi.LoadLimit {
8484
result := make(map[model.MsgCounterType]ucapi.LoadLimit)
8585

@@ -127,7 +127,7 @@ func (e *LPP) PendingProductionLimits() map[model.MsgCounterType]ucapi.LoadLimit
127127
return result
128128
}
129129

130-
// accept or deny an incoming consumption write limit
130+
// accept or deny an incoming production write limit
131131
//
132132
// use PendingProductionLimits to get the list of currently pending requests
133133
func (e *LPP) ApproveOrDenyProductionLimit(msgCounter model.MsgCounterType, approve bool, reason string) {

usecases/cs/lpp/usecase.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,19 @@ func (e *LPP) AddFeatures() {
189189
Unit: util.Ptr(model.UnitOfMeasurementTypeW),
190190
},
191191
)
192-
dcs.AddKeyValueDescription(
193-
model.DeviceConfigurationKeyValueDescriptionDataType{
194-
KeyName: util.Ptr(model.DeviceConfigurationKeyNameTypeFailsafeDurationMinimum),
195-
ValueType: util.Ptr(model.DeviceConfigurationKeyValueTypeTypeDuration),
196-
},
197-
)
192+
193+
// only add if it doesn't exist yet
194+
filter := model.DeviceConfigurationKeyValueDescriptionDataType{
195+
KeyName: util.Ptr(model.DeviceConfigurationKeyNameTypeFailsafeDurationMinimum),
196+
}
197+
if data, err := dcs.GetKeyValueDescriptionsForFilter(filter); err == nil && len(data) == 0 {
198+
dcs.AddKeyValueDescription(
199+
model.DeviceConfigurationKeyValueDescriptionDataType{
200+
KeyName: util.Ptr(model.DeviceConfigurationKeyNameTypeFailsafeDurationMinimum),
201+
ValueType: util.Ptr(model.DeviceConfigurationKeyValueTypeTypeDuration),
202+
},
203+
)
204+
}
198205

199206
value := &model.DeviceConfigurationKeyValueValueType{
200207
ScaledNumber: model.NewScaledNumberType(0),

0 commit comments

Comments
 (0)