Skip to content
This repository was archived by the owner on Jun 29, 2024. It is now read-only.

Commit cc8278a

Browse files
committed
Update eebus, spine and adopt API changes
1 parent d051bb0 commit cc8278a

29 files changed

+79
-170
lines changed

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ module github.com/enbility/cemd
33
go 1.21.1
44

55
require (
6-
github.com/enbility/eebus-go v0.0.0-20240309182657-90c4d4f160f0
6+
github.com/enbility/eebus-go v0.0.0-20240311152814-5a60b22b2f4c
77
github.com/enbility/ship-go v0.0.0-20240304152211-acb2920b6711
8-
github.com/enbility/spine-go v0.0.0-20240310083958-60c482a7d94f
8+
github.com/enbility/spine-go v0.0.0-20240311152248-880d656d4654
99
github.com/stretchr/testify v1.8.4
1010
)
1111

go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ github.com/ahmetb/go-linq/v3 v3.2.0/go.mod h1:haQ3JfOeWK8HpVxMtHHEMPVgBKiYyQ+f1/
33
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
44
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
55
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6-
github.com/enbility/eebus-go v0.0.0-20240309182657-90c4d4f160f0 h1:gX45I8v5bel3KyFDsqgtUEZx7ZOh/i4hEI4tkxBefFY=
7-
github.com/enbility/eebus-go v0.0.0-20240309182657-90c4d4f160f0/go.mod h1:+tNdP83/zUufClY2y4r3iCeE+mHpDalbWgo5VmRT3fs=
6+
github.com/enbility/eebus-go v0.0.0-20240311152814-5a60b22b2f4c h1:oZm/DU0q1nFdk3l+H6CuZNIbzbKRfIV7py+q0u+17Wo=
7+
github.com/enbility/eebus-go v0.0.0-20240311152814-5a60b22b2f4c/go.mod h1:nMbsMRf+Sw5M8hpz9XHs+3S7GXtMC9sHsCF3HBBFpvo=
88
github.com/enbility/ship-go v0.0.0-20240304152211-acb2920b6711 h1:gne+vZK4BEEzLdh4fHtYqKDlSgIG3nI1jnlRxQLGG0M=
99
github.com/enbility/ship-go v0.0.0-20240304152211-acb2920b6711/go.mod h1:ovyrJE3oPnGT5+eQnOqWut80gFDQ0XHn3ZWU2fHV9xQ=
10-
github.com/enbility/spine-go v0.0.0-20240310083958-60c482a7d94f h1:JEFBR3+G/1TGEBmTLZv9VZBAI3O4UtxrQ44sqIhx418=
11-
github.com/enbility/spine-go v0.0.0-20240310083958-60c482a7d94f/go.mod h1:2SXeC20kPX23mTnsudvPq9qprgo7GKDiNiVdX0ebovw=
10+
github.com/enbility/spine-go v0.0.0-20240311152248-880d656d4654 h1:5oHCw3s4igUttQwEpf5yRNly3GNSQtMX9V652b9VWlU=
11+
github.com/enbility/spine-go v0.0.0-20240311152248-880d656d4654/go.mod h1:2SXeC20kPX23mTnsudvPq9qprgo7GKDiNiVdX0ebovw=
1212
github.com/enbility/zeroconf/v2 v2.0.0-20240210101930-d0004078577b h1:sg3c6LJ4eWffwtt9SW0lgcIX4Oh274vwdJnNFNNrDco=
1313
github.com/enbility/zeroconf/v2 v2.0.0-20240210101930-d0004078577b/go.mod h1:BjzRRiYX6mWdOgku1xxDE+NsV8PijTby7Q7BkYVdfDU=
1414
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=

uccevc/results.go

-8
This file was deleted.

uccevc/uccevc.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ func (e *UCCEVC) AddFeatures() {
4949
model.FeatureTypeTypeElectricalConnection,
5050
}
5151
for _, feature := range clientFeatures {
52-
f := localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
53-
f.AddResultHandler(e)
52+
_ = localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
5453
}
5554
}
5655

ucevcc/results.go

+28-16
Original file line numberDiff line numberDiff line change
@@ -7,43 +7,55 @@ import (
77
"github.com/enbility/spine-go/model"
88
)
99

10-
func (e *UCEVCC) HandleResult(errorMsg api.ResultMessage) {
10+
func (e *UCEVCC) HandleResponse(responseMsg api.ResponseMessage) {
1111
// before SPINE 1.3 the heartbeats are on the EVSE entity
12-
if errorMsg.EntityRemote == nil ||
13-
(errorMsg.EntityRemote.EntityType() != model.EntityTypeTypeEV &&
14-
errorMsg.EntityRemote.EntityType() != model.EntityTypeTypeEVSE) {
12+
if responseMsg.EntityRemote == nil ||
13+
(responseMsg.EntityRemote.EntityType() != model.EntityTypeTypeEV &&
14+
responseMsg.EntityRemote.EntityType() != model.EntityTypeTypeEVSE) {
1515
return
1616
}
1717

1818
// handle errors coming from the remote EVSE entity
19-
if errorMsg.FeatureLocal.Type() == model.FeatureTypeTypeDeviceDiagnosis {
20-
e.handleResultDeviceDiagnosis(errorMsg)
19+
if responseMsg.FeatureLocal.Type() == model.FeatureTypeTypeDeviceDiagnosis {
20+
e.handleResultDeviceDiagnosis(responseMsg)
2121
}
2222
}
2323

2424
// Handle DeviceDiagnosis Results
25-
func (e *UCEVCC) handleResultDeviceDiagnosis(resultMsg api.ResultMessage) {
25+
func (e *UCEVCC) handleResultDeviceDiagnosis(responseMsg api.ResponseMessage) {
2626
// is this an error for a heartbeat message?
27-
if resultMsg.DeviceRemote == nil ||
28-
resultMsg.Result == nil ||
29-
resultMsg.Result.ErrorNumber == nil ||
30-
*resultMsg.Result.ErrorNumber == model.ErrorNumberTypeNoError {
27+
if responseMsg.DeviceRemote == nil ||
28+
responseMsg.Data == nil {
29+
return
30+
}
31+
32+
var result *model.ResultDataType
33+
34+
switch responseMsg.Data.(type) {
35+
case *model.ResultDataType:
36+
result = responseMsg.Data.(*model.ResultDataType)
37+
default:
38+
return
39+
}
40+
41+
if result.ErrorNumber == nil ||
42+
*result.ErrorNumber == model.ErrorNumberTypeNoError {
3143
return
3244
}
3345

3446
// check if this is for a cached notify message
35-
datagram, err := resultMsg.DeviceRemote.Sender().DatagramForMsgCounter(resultMsg.MsgCounterReference)
47+
datagram, err := responseMsg.DeviceRemote.Sender().DatagramForMsgCounter(responseMsg.MsgCounterReference)
3648
if err != nil {
3749
return
3850
}
3951

4052
if len(datagram.Payload.Cmd) > 0 &&
4153
datagram.Payload.Cmd[0].DeviceDiagnosisHeartbeatData != nil {
4254
// something is horribly wrong, disconnect and hope a new connection will fix it
43-
errorText := fmt.Sprintf("Error Code: %d", resultMsg.Result.ErrorNumber)
44-
if resultMsg.Result.Description != nil {
45-
errorText = fmt.Sprintf("%s - %s", errorText, string(*resultMsg.Result.Description))
55+
errorText := fmt.Sprintf("Error Code: %d", result.ErrorNumber)
56+
if result.Description != nil {
57+
errorText = fmt.Sprintf("%s - %s", errorText, string(*result.Description))
4658
}
47-
e.service.DisconnectSKI(resultMsg.DeviceRemote.Ski(), errorText)
59+
e.service.DisconnectSKI(responseMsg.DeviceRemote.Ski(), errorText)
4860
}
4961
}

ucevcc/results_test.go

+22-8
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,35 @@ func (s *UCEVCCSuite) Test_Results() {
1313
localEntity := localDevice.EntityForType(model.EntityTypeTypeCEM)
1414
localFeature := localEntity.FeatureOfTypeAndRole(model.FeatureTypeTypeDeviceDiagnosis, model.RoleTypeClient)
1515

16-
errorMsg := spineapi.ResultMessage{
16+
errorMsg := spineapi.ResponseMessage{
17+
DeviceRemote: s.remoteDevice,
18+
EntityRemote: s.evEntity,
19+
FeatureLocal: localFeature,
20+
Data: eebusutil.Ptr(model.MsgCounterType(0)),
21+
}
22+
s.sut.HandleResponse(errorMsg)
23+
24+
errorMsg = spineapi.ResponseMessage{
25+
EntityRemote: s.evEntity,
26+
FeatureLocal: localFeature,
27+
Data: eebusutil.Ptr(model.MsgCounterType(0)),
28+
}
29+
s.sut.HandleResponse(errorMsg)
30+
31+
errorMsg = spineapi.ResponseMessage{
1732
DeviceRemote: s.remoteDevice,
1833
EntityRemote: s.mockRemoteEntity,
1934
FeatureLocal: localFeature,
20-
Result: &model.ResultDataType{
35+
Data: &model.ResultDataType{
2136
ErrorNumber: eebusutil.Ptr(model.ErrorNumberTypeNoError),
2237
},
2338
}
24-
s.sut.HandleResult(errorMsg)
39+
s.sut.HandleResponse(errorMsg)
2540

2641
errorMsg.EntityRemote = s.evEntity
27-
s.sut.HandleResult(errorMsg)
42+
s.sut.HandleResponse(errorMsg)
2843

29-
errorMsg.Result = &model.ResultDataType{
44+
errorMsg.Data = &model.ResultDataType{
3045
ErrorNumber: eebusutil.Ptr(model.ErrorNumberTypeGeneralError),
3146
Description: eebusutil.Ptr(model.DescriptionType("test error")),
3247
}
@@ -37,7 +52,7 @@ func (s *UCEVCCSuite) Test_Results() {
3752
DatagramForMsgCounter(errorMsg.MsgCounterReference).
3853
Return(model.DatagramType{}, errors.New("test")).Once()
3954

40-
s.sut.HandleResult(errorMsg)
55+
s.sut.HandleResponse(errorMsg)
4156

4257
datagram := model.DatagramType{
4358
Payload: model.PayloadType{
@@ -53,6 +68,5 @@ func (s *UCEVCCSuite) Test_Results() {
5368
DatagramForMsgCounter(errorMsg.MsgCounterReference).
5469
Return(datagram, nil).Once()
5570

56-
s.sut.HandleResult(errorMsg)
57-
71+
s.sut.HandleResponse(errorMsg)
5872
}

ucevcc/ucevcc.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func (e *UCEVCC) AddFeatures() {
5151
}
5252
for _, feature := range clientFeatures {
5353
f := localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
54-
f.AddResultHandler(e)
54+
f.AddResultCallback(e.HandleResponse)
5555
}
5656
}
5757

ucevcem/results.go

-8
This file was deleted.

ucevcem/ucevcem.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ func (e *UCEVCEM) AddFeatures() {
4747
model.FeatureTypeTypeMeasurement,
4848
}
4949
for _, feature := range clientFeatures {
50-
f := localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
51-
f.AddResultHandler(e)
50+
_ = localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
5251
}
5352
}
5453

ucevsecc/results.go

-8
This file was deleted.

ucevsecc/ucevsecc.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ func (e *UCEVSECC) AddFeatures() {
4848
}
4949

5050
for _, feature := range clientFeatures {
51-
f := localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
52-
f.AddResultHandler(e)
51+
_ = localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
5352
}
5453
}
5554

ucevsoc/results.go

-8
This file was deleted.

ucevsoc/ucevsoc.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ func (e *UCEVSOC) AddFeatures() {
4747
model.FeatureTypeTypeMeasurement,
4848
}
4949
for _, feature := range clientFeatures {
50-
f := localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
51-
f.AddResultHandler(e)
50+
_ = localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
5251
}
5352
}
5453

uclpc/results.go

-8
This file was deleted.

uclpc/uclpc.go

+10-13
Original file line numberDiff line numberDiff line change
@@ -47,22 +47,19 @@ func (e *UCLPC) AddFeatures() {
4747
localEntity := e.service.LocalDevice().EntityForType(model.EntityTypeTypeCEM)
4848

4949
// client features
50-
f := localEntity.GetOrAddFeature(model.FeatureTypeTypeDeviceDiagnosis, model.RoleTypeClient)
51-
f.AddResultHandler(e)
52-
53-
f = localEntity.GetOrAddFeature(model.FeatureTypeTypeLoadControl, model.RoleTypeClient)
54-
f.AddResultHandler(e)
55-
56-
f = localEntity.GetOrAddFeature(model.FeatureTypeTypeDeviceConfiguration, model.RoleTypeClient)
57-
f.AddResultHandler(e)
58-
59-
f = localEntity.GetOrAddFeature(model.FeatureTypeTypeElectricalConnection, model.RoleTypeClient)
60-
f.AddResultHandler(e)
50+
var clientFeatures = []model.FeatureTypeType{
51+
model.FeatureTypeTypeDeviceDiagnosis,
52+
model.FeatureTypeTypeLoadControl,
53+
model.FeatureTypeTypeDeviceConfiguration,
54+
model.FeatureTypeTypeElectricalConnection,
55+
}
56+
for _, feature := range clientFeatures {
57+
_ = localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
58+
}
6159

6260
// server features
63-
f = localEntity.GetOrAddFeature(model.FeatureTypeTypeDeviceDiagnosis, model.RoleTypeServer)
61+
f := localEntity.GetOrAddFeature(model.FeatureTypeTypeDeviceDiagnosis, model.RoleTypeServer)
6462
f.AddFunctionType(model.FunctionTypeDeviceDiagnosisHeartbeatData, true, false)
65-
f.AddResultHandler(e)
6663
}
6764

6865
func (e *UCLPC) AddUseCase() {

uclpcserver/results.go

-8
This file was deleted.

uclpcserver/uclpc.go

+2-7
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,12 @@ func (e *UCLPCServer) AddFeatures() {
4343
localEntity := e.service.LocalDevice().EntityForType(model.EntityTypeTypeCEM)
4444

4545
// client features
46-
f := localEntity.GetOrAddFeature(model.FeatureTypeTypeDeviceDiagnosis, model.RoleTypeClient)
47-
f.AddResultHandler(e)
46+
_ = localEntity.GetOrAddFeature(model.FeatureTypeTypeDeviceDiagnosis, model.RoleTypeClient)
4847

4948
// server features
50-
f = localEntity.GetOrAddFeature(model.FeatureTypeTypeLoadControl, model.RoleTypeServer)
49+
f := localEntity.GetOrAddFeature(model.FeatureTypeTypeLoadControl, model.RoleTypeServer)
5150
f.AddFunctionType(model.FunctionTypeLoadControlLimitDescriptionListData, true, false)
5251
f.AddFunctionType(model.FunctionTypeLoadControlLimitListData, true, true)
53-
f.AddResultHandler(e)
5452

5553
var limitId model.LoadControlLimitIdType = 0
5654
// get the highest limitId
@@ -80,7 +78,6 @@ func (e *UCLPCServer) AddFeatures() {
8078
f = localEntity.GetOrAddFeature(model.FeatureTypeTypeDeviceConfiguration, model.RoleTypeServer)
8179
f.AddFunctionType(model.FunctionTypeDeviceConfigurationKeyValueDescriptionListData, true, false)
8280
f.AddFunctionType(model.FunctionTypeDeviceConfigurationKeyValueListData, true, true)
83-
f.AddResultHandler(e)
8481

8582
var configId model.DeviceConfigurationKeyIdType = 0
8683
// get the heighest keyId
@@ -112,11 +109,9 @@ func (e *UCLPCServer) AddFeatures() {
112109

113110
f = localEntity.GetOrAddFeature(model.FeatureTypeTypeDeviceDiagnosis, model.RoleTypeServer)
114111
f.AddFunctionType(model.FunctionTypeDeviceDiagnosisHeartbeatData, true, true)
115-
f.AddResultHandler(e)
116112

117113
f = localEntity.GetOrAddFeature(model.FeatureTypeTypeElectricalConnection, model.RoleTypeServer)
118114
f.AddFunctionType(model.FunctionTypeElectricalConnectionCharacteristicListData, true, true)
119-
f.AddResultHandler(e)
120115

121116
var elCharId model.ElectricalConnectionCharacteristicIdType = 0
122117
// get the heighest CharacteristicId

ucmgcp/results.go

-8
This file was deleted.

ucmgcp/ucmgcp.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ func (e *UCMGCP) AddFeatures() {
4848
model.FeatureTypeTypeMeasurement,
4949
}
5050
for _, feature := range clientFeatures {
51-
f := localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
52-
f.AddResultHandler(e)
51+
_ = localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
5352
}
5453
}
5554

ucmpc/results.go

-8
This file was deleted.

ucmpc/ucmcp.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ func (e *UCMPC) AddFeatures() {
5353
model.FeatureTypeTypeMeasurement,
5454
}
5555
for _, feature := range clientFeatures {
56-
f := localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
57-
f.AddResultHandler(e)
56+
_ = localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
5857
}
5958
}
6059

ucopev/results.go

-8
This file was deleted.

ucopev/ucopev.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,12 @@ func (e *UCOPEV) AddFeatures() {
4747
model.FeatureTypeTypeElectricalConnection,
4848
}
4949
for _, feature := range clientFeatures {
50-
f := localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
51-
f.AddResultHandler(e)
50+
_ = localEntity.GetOrAddFeature(feature, model.RoleTypeClient)
5251
}
5352

5453
// server features
5554
f := localEntity.GetOrAddFeature(model.FeatureTypeTypeDeviceDiagnosis, model.RoleTypeServer)
5655
f.AddFunctionType(model.FunctionTypeDeviceDiagnosisStateData, false, false)
57-
f.AddResultHandler(e)
5856
}
5957

6058
func (e *UCOPEV) AddUseCase() {

0 commit comments

Comments
 (0)