Skip to content

Commit 7be66c0

Browse files
committed
Reformat files and fix some inconsistencies
1 parent 09682b9 commit 7be66c0

File tree

6 files changed

+62
-44
lines changed

6 files changed

+62
-44
lines changed

examples/hems/main.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func (h *hems) run() {
9393
configuration.SetAlternateIdentifier("Demo-HEMS-123456789")
9494

9595
h.myService = service.NewService(configuration, h)
96-
//h.myService.SetLogging(h)
96+
h.myService.SetLogging(h)
9797

9898
if err = h.myService.Setup(); err != nil {
9999
fmt.Println(err)
@@ -161,7 +161,7 @@ func (h *hems) OnLPCEvent(ski string, device spineapi.DeviceRemoteInterface, ent
161161
}
162162
for msgCounter, configs := range pendingDeviceConfigWrites {
163163
fmt.Printf("Approving LPC device config write with msgCounter %d for features: ", msgCounter)
164-
for _, config := range(configs) {
164+
for _, config := range configs {
165165
fmt.Printf("%s ", *config.Description.KeyName)
166166
}
167167
fmt.Print("\n")
@@ -182,15 +182,15 @@ func (h *hems) OnLPPEvent(ski string, device spineapi.DeviceRemoteInterface, ent
182182
// get pending writes
183183
pendingWrites := h.uccslpp.PendingProductionLimits()
184184
pendingDeviceConfigWrites := h.uccslpp.PendingDeviceConfigurations()
185-
185+
186186
// approve any write
187187
for msgCounter, write := range pendingWrites {
188188
fmt.Println("Approving LPP limit write with msgCounter", msgCounter, "and limit", write.Value, "W")
189189
h.uccslpp.ApproveOrDenyProductionLimit(msgCounter, true, "")
190190
}
191191
for msgCounter, configs := range pendingDeviceConfigWrites {
192192
fmt.Printf("Approving LPP device config write with msgCounter %d for features: ", msgCounter)
193-
for _, config := range(configs) {
193+
for _, config := range configs {
194194
fmt.Printf("%s ", *config.Description.KeyName)
195195
}
196196
fmt.Print("\n")

usecases/api/types.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ type DurationSlotValue struct {
168168
}
169169

170170
type PendingDeviceConfiguration struct {
171-
Description *model.DeviceConfigurationKeyValueDescriptionDataType `json:"description,omitempty"`
172-
Value *model.DeviceConfigurationKeyValueValueType `json:"value,omitempty"`
173-
IsValueChangeable *bool `json:"isValueChangeable,omitempty" eebus:"writecheck"`
174-
}
171+
Description *model.DeviceConfigurationKeyValueDescriptionDataType `json:"description,omitempty"`
172+
Value *model.DeviceConfigurationKeyValueValueType `json:"value,omitempty"`
173+
IsValueChangeable *bool `json:"isValueChangeable,omitempty" eebus:"writecheck"`
174+
}

usecases/cs/lpc/public.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ func (e *LPC) SetFailsafeDurationMinimum(duration time.Duration, changeable bool
269269
// return the currently pending incoming failsafe consumption limit writes
270270
func (e *LPC) PendingDeviceConfigurations() map[model.MsgCounterType][]ucapi.PendingDeviceConfiguration {
271271
result := make(map[model.MsgCounterType][]ucapi.PendingDeviceConfiguration)
272-
272+
273273
e.pendingDeviceConfigMux.Lock()
274274
defer e.pendingDeviceConfigMux.Unlock()
275275

@@ -285,10 +285,10 @@ func (e *LPC) PendingDeviceConfigurations() map[model.MsgCounterType][]ucapi.Pen
285285
if err != nil {
286286
continue
287287
}
288-
288+
289289
pendingConfigData := ucapi.PendingDeviceConfiguration{
290-
Description: description,
291-
Value: configKeyValueData.Value,
290+
Description: description,
291+
Value: configKeyValueData.Value,
292292
IsValueChangeable: configKeyValueData.IsValueChangeable,
293293
}
294294

usecases/cs/lpc/usecase.go

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package lpc
22

33
import (
4+
"slices"
45
"sync"
56

67
"github.com/enbility/eebus-go/api"
@@ -21,8 +22,8 @@ type LPC struct {
2122
pendingMux sync.Mutex
2223
pendingLimits map[model.MsgCounterType]*spineapi.Message
2324

24-
pendingDeviceConfigMux sync.Mutex
25-
pendingDeviceConfigs map[model.MsgCounterType]*spineapi.Message
25+
pendingDeviceConfigMux sync.Mutex
26+
pendingDeviceConfigs map[model.MsgCounterType]*spineapi.Message
2627

2728
heartbeatDiag *features.DeviceDiagnosis
2829

@@ -77,8 +78,8 @@ func NewLPC(localEntity spineapi.EntityLocalInterface, eventCB api.EntityEventCa
7778
)
7879

7980
uc := &LPC{
80-
UseCaseBase: usecase,
81-
pendingLimits: make(map[model.MsgCounterType]*spineapi.Message),
81+
UseCaseBase: usecase,
82+
pendingLimits: make(map[model.MsgCounterType]*spineapi.Message),
8283
pendingDeviceConfigs: make(map[model.MsgCounterType]*spineapi.Message),
8384
}
8485

@@ -197,17 +198,25 @@ func (e *LPC) approveOrDenyDeviceConfiguration(msg *spineapi.Message, approve bo
197198
// approves all others
198199
func (e *LPC) deviceConfigurationWriteCB(msg *spineapi.Message) {
199200
if msg.RequestHeader == nil || msg.RequestHeader.MsgCounter == nil ||
200-
msg.Cmd.DeviceConfigurationKeyValueListData == nil {
201+
msg.Cmd.DeviceConfigurationKeyValueListData == nil {
201202
logging.Log().Debug("LPC deviceConfigurationWriteCB: invalid message")
202203
return
203204
}
204205

205206
data := msg.Cmd.DeviceConfigurationKeyValueListData
206207

207-
if len(data.DeviceConfigurationKeyValueData) == 0 || data.DeviceConfigurationKeyValueData[0].KeyId == nil {
208-
logging.Log().Debug("LPC deviceConfigurationWriteCB: no data")
209-
return
210-
}
208+
if data == nil || data.DeviceConfigurationKeyValueData == nil || len(data.DeviceConfigurationKeyValueData) == 0 {
209+
logging.Log().Debug("LPC deviceConfigurationWriteCB: no data")
210+
return
211+
}
212+
213+
// all DeviceConfigurationKeyValueData must have keyId set as primary identifier
214+
if slices.ContainsFunc(data.DeviceConfigurationKeyValueData, func(i model.DeviceConfigurationKeyValueDataType) bool {
215+
return i.KeyId == nil
216+
}) {
217+
logging.Log().Debug("LPC deviceConfigurationWriteCB: invalid message")
218+
return
219+
}
211220

212221
dc, err := server.NewDeviceConfiguration(e.LocalEntity)
213222
if err != nil {
@@ -216,7 +225,7 @@ func (e *LPC) deviceConfigurationWriteCB(msg *spineapi.Message) {
216225

217226
configsToApprove := map[model.DeviceConfigurationKeyNameType]struct{}{
218227
model.DeviceConfigurationKeyNameTypeFailsafeConsumptionActivePowerLimit: {},
219-
model.DeviceConfigurationKeyNameTypeFailsafeDurationMinimum: {},
228+
model.DeviceConfigurationKeyNameTypeFailsafeDurationMinimum: {},
220229
}
221230
for _, deviceKeyValueData := range data.DeviceConfigurationKeyValueData {
222231
description, err := dc.GetKeyValueDescriptionFoKeyId(*deviceKeyValueData.KeyId)
@@ -235,12 +244,12 @@ func (e *LPC) deviceConfigurationWriteCB(msg *spineapi.Message) {
235244
return
236245
}
237246
e.pendingDeviceConfigMux.Unlock()
238-
}
247+
}
239248
}
240249

241250
// If neither a failsafe duration nor a failsafe limit were set this message does not pertain to this callback so we accept
242-
e.approveOrDenyDeviceConfiguration(msg, true, "")
243-
}
251+
go e.approveOrDenyDeviceConfiguration(msg, true, "")
252+
}
244253

245254
func (e *LPC) AddFeatures() {
246255
// client features
@@ -280,7 +289,7 @@ func (e *LPC) AddFeatures() {
280289
f.AddFunctionType(model.FunctionTypeDeviceConfigurationKeyValueDescriptionListData, true, false)
281290
f.AddFunctionType(model.FunctionTypeDeviceConfigurationKeyValueListData, true, true)
282291
_ = f.AddWriteApprovalCallback(e.deviceConfigurationWriteCB)
283-
292+
284293
if dcs, err := server.NewDeviceConfiguration(e.LocalEntity); err == nil {
285294
dcs.AddKeyValueDescription(
286295
model.DeviceConfigurationKeyValueDescriptionDataType{

usecases/cs/lpp/public.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ func (e *LPP) SetFailsafeDurationMinimum(duration time.Duration, changeable bool
270270
// return the currently pending incoming failsafe consumption limit writes
271271
func (e *LPP) PendingDeviceConfigurations() map[model.MsgCounterType][]ucapi.PendingDeviceConfiguration {
272272
result := make(map[model.MsgCounterType][]ucapi.PendingDeviceConfiguration)
273-
273+
274274
e.pendingDeviceConfigMux.Lock()
275275
defer e.pendingDeviceConfigMux.Unlock()
276276

@@ -286,10 +286,10 @@ func (e *LPP) PendingDeviceConfigurations() map[model.MsgCounterType][]ucapi.Pen
286286
if err != nil {
287287
continue
288288
}
289-
289+
290290
pendingConfigData := ucapi.PendingDeviceConfiguration{
291-
Description: description,
292-
Value: configKeyValueData.Value,
291+
Description: description,
292+
Value: configKeyValueData.Value,
293293
IsValueChangeable: configKeyValueData.IsValueChangeable,
294294
}
295295

usecases/cs/lpp/usecase.go

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package lpp
22

33
import (
4+
"slices"
45
"sync"
56

67
"github.com/enbility/eebus-go/api"
@@ -21,8 +22,8 @@ type LPP struct {
2122
pendingMux sync.Mutex
2223
pendingLimits map[model.MsgCounterType]*spineapi.Message
2324

24-
pendingDeviceConfigMux sync.Mutex
25-
pendingDeviceConfigs map[model.MsgCounterType]*spineapi.Message
25+
pendingDeviceConfigMux sync.Mutex
26+
pendingDeviceConfigs map[model.MsgCounterType]*spineapi.Message
2627

2728
heartbeatDiag *features.DeviceDiagnosis
2829

@@ -76,8 +77,8 @@ func NewLPP(localEntity spineapi.EntityLocalInterface, eventCB api.EntityEventCa
7677
)
7778

7879
uc := &LPP{
79-
UseCaseBase: usecase,
80-
pendingLimits: make(map[model.MsgCounterType]*spineapi.Message),
80+
UseCaseBase: usecase,
81+
pendingLimits: make(map[model.MsgCounterType]*spineapi.Message),
8182
pendingDeviceConfigs: make(map[model.MsgCounterType]*spineapi.Message),
8283
}
8384

@@ -197,28 +198,36 @@ func (e *LPP) approveOrDenyDeviceConfiguration(msg *spineapi.Message, approve bo
197198
// approves all others
198199
func (e *LPP) deviceConfigurationWriteCB(msg *spineapi.Message) {
199200
if msg.RequestHeader == nil || msg.RequestHeader.MsgCounter == nil ||
200-
msg.Cmd.DeviceConfigurationKeyValueListData == nil {
201+
msg.Cmd.DeviceConfigurationKeyValueListData == nil {
201202
logging.Log().Debug("LPP deviceConfigurationWriteCB: invalid message")
202203
return
203204
}
204205

205206
data := msg.Cmd.DeviceConfigurationKeyValueListData
206207

207-
if len(data.DeviceConfigurationKeyValueData) == 0 || data.DeviceConfigurationKeyValueData[0].KeyId == nil {
208-
logging.Log().Debug("LPP deviceConfigurationWriteCB: no data")
209-
return
210-
}
208+
if data == nil || data.DeviceConfigurationKeyValueData == nil || len(data.DeviceConfigurationKeyValueData) == 0 {
209+
logging.Log().Debug("LPP deviceConfigurationWriteCB: no data")
210+
return
211+
}
212+
213+
// all DeviceConfigurationKeyValueData must have keyId set as primary identifier
214+
if slices.ContainsFunc(data.DeviceConfigurationKeyValueData, func(i model.DeviceConfigurationKeyValueDataType) bool {
215+
return i.KeyId == nil
216+
}) {
217+
logging.Log().Debug("LPP deviceConfigurationWriteCB: invalid message")
218+
return
219+
}
211220

212221
dc, err := server.NewDeviceConfiguration(e.LocalEntity)
213222
if err != nil {
214223
return
215224
}
225+
216226
configsToApprove := map[model.DeviceConfigurationKeyNameType]struct{}{
217227
model.DeviceConfigurationKeyNameTypeFailsafeProductionActivePowerLimit: {},
218-
model.DeviceConfigurationKeyNameTypeFailsafeDurationMinimum: {},
228+
model.DeviceConfigurationKeyNameTypeFailsafeDurationMinimum: {},
219229
}
220230
for _, deviceKeyValueData := range data.DeviceConfigurationKeyValueData {
221-
222231
description, err := dc.GetKeyValueDescriptionFoKeyId(*deviceKeyValueData.KeyId)
223232
if description == nil || err != nil {
224233
logging.Log().Debug("LPP deviceConfigurationWriteCB: no device configuration for KeyID %d found")
@@ -235,12 +244,12 @@ func (e *LPP) deviceConfigurationWriteCB(msg *spineapi.Message) {
235244
return
236245
}
237246
e.pendingDeviceConfigMux.Unlock()
238-
}
247+
}
239248
}
240249

241250
// If neither a failsafe duration nor a failsafe limit were set this message does not pertain to this callback so we accept
242-
e.approveOrDenyDeviceConfiguration(msg, true, "")
243-
}
251+
go e.approveOrDenyDeviceConfiguration(msg, true, "")
252+
}
244253

245254
func (e *LPP) AddFeatures() {
246255
// client features

0 commit comments

Comments
 (0)