Skip to content

Commit 0d1fa78

Browse files
committed
Merge branch 'release/v0.1.4'
2 parents 213258f + 3ff5846 commit 0d1fa78

10 files changed

+183
-6
lines changed

features/deviceclassification.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ func (d *DeviceClassification) GetManufacturerDetails() (*ManufacturerType, erro
6262
}
6363

6464
data := rData.(*model.DeviceClassificationManufacturerDataType)
65+
if data == nil {
66+
return nil, ErrDataNotAvailable
67+
}
68+
6569
details := &ManufacturerType{}
6670

6771
if data.BrandName != nil {

features/deviceconfiguration.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ func (d *DeviceConfiguration) GetDescriptionKeyNameSupport(keyName model.DeviceC
7474
}
7575

7676
data := rData.(*model.DeviceConfigurationKeyValueDescriptionListDataType)
77+
if data == nil {
78+
return false, ErrDataNotAvailable
79+
}
7780

7881
for _, item := range data.DeviceConfigurationKeyValueDescriptionData {
7982
if item.KeyId == nil || item.KeyName == nil {
@@ -104,6 +107,9 @@ func (d *DeviceConfiguration) GetEVCommunicationStandard() (*string, error) {
104107
}
105108

106109
data := rData.(*model.DeviceConfigurationKeyValueListDataType)
110+
if data == nil {
111+
return nil, ErrDataNotAvailable
112+
}
107113

108114
for _, item := range data.DeviceConfigurationKeyValueData {
109115
if item.KeyId == nil || item.Value == nil {
@@ -138,6 +144,9 @@ func (d *DeviceConfiguration) GetValues() ([]DeviceConfigurationType, error) {
138144
return nil, ErrMetadataNotAvailable
139145
}
140146
descData := rDescData.(*model.DeviceConfigurationKeyValueDescriptionListDataType)
147+
if descData == nil {
148+
return nil, ErrDataNotAvailable
149+
}
141150

142151
ref := make(map[model.DeviceConfigurationKeyIdType]model.DeviceConfigurationKeyValueDescriptionDataType)
143152
for _, item := range descData.DeviceConfigurationKeyValueDescriptionData {
@@ -153,6 +162,10 @@ func (d *DeviceConfiguration) GetValues() ([]DeviceConfigurationType, error) {
153162
}
154163

155164
data := rData.(*model.DeviceConfigurationKeyValueListDataType)
165+
if data == nil {
166+
return nil, ErrDataNotAvailable
167+
}
168+
156169
var resultSet []DeviceConfigurationType
157170

158171
for _, item := range data.DeviceConfigurationKeyValueData {
@@ -229,10 +242,16 @@ func (d *DeviceConfiguration) deviceConfigurationKeyValueDescriptionListData() (
229242
return nil, ErrDataNotAvailable
230243
}
231244

232-
data := d.featureRemote.Data(model.FunctionTypeDeviceConfigurationKeyValueDescriptionListData).(*model.DeviceConfigurationKeyValueDescriptionListDataType)
245+
rData := d.featureRemote.Data(model.FunctionTypeDeviceConfigurationKeyValueDescriptionListData)
246+
if rData == nil {
247+
return nil, ErrMetadataNotAvailable
248+
}
249+
250+
data := rData.(*model.DeviceConfigurationKeyValueDescriptionListDataType)
233251
if data == nil {
234252
return nil, ErrMetadataNotAvailable
235253
}
254+
236255
ref := make(deviceConfigurationKeyValueDescriptionMap)
237256
for _, item := range data.DeviceConfigurationKeyValueDescriptionData {
238257
if item.KeyId == nil {

features/devicediagnosis.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ func (d *DeviceDiagnosis) GetState() (*DeviceDiagnosisType, error) {
5252
}
5353

5454
data := rData.(*model.DeviceDiagnosisStateDataType)
55+
if data == nil {
56+
return nil, ErrDataNotAvailable
57+
}
5558

5659
details := &DeviceDiagnosisType{}
5760
if data.OperatingState != nil {

features/devicediagnosis_test.go

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package features
2+
3+
import (
4+
"testing"
5+
6+
"github.com/enbility/eebus-go/spine"
7+
"github.com/enbility/eebus-go/spine/model"
8+
"github.com/enbility/eebus-go/util"
9+
"github.com/stretchr/testify/assert"
10+
)
11+
12+
func TestDeviceDiagnosis_GetState(t *testing.T) {
13+
localDevice := spine.NewDeviceLocalImpl("TestBrandName", "TestDeviceModel", "TestSerialNumber", "TestDeviceCode",
14+
"TestDeviceAddress", model.DeviceTypeTypeEnergyManagementSystem, model.NetworkManagementFeatureSetTypeSmart)
15+
localEntity := spine.NewEntityLocalImpl(localDevice, model.EntityTypeTypeCEM, spine.NewAddressEntityType([]uint{1}))
16+
localDevice.AddEntity(localEntity)
17+
18+
f := spine.NewFeatureLocalImpl(1, localEntity, model.FeatureTypeTypeDeviceDiagnosis, model.RoleTypeServer)
19+
localEntity.AddFeature(f)
20+
21+
remoteDeviceName := "remoteDevice"
22+
remoteDevice := spine.NewDeviceRemoteImpl(localDevice, "test", nil)
23+
data := &model.NodeManagementDetailedDiscoveryDataType{
24+
DeviceInformation: &model.NodeManagementDetailedDiscoveryDeviceInformationType{
25+
Description: &model.NetworkManagementDeviceDescriptionDataType{
26+
DeviceAddress: &model.DeviceAddressType{
27+
Device: util.Ptr(model.AddressDeviceType(remoteDeviceName)),
28+
},
29+
},
30+
},
31+
EntityInformation: []model.NodeManagementDetailedDiscoveryEntityInformationType{
32+
{
33+
Description: &model.NetworkManagementEntityDescriptionDataType{
34+
EntityAddress: &model.EntityAddressType{
35+
Device: util.Ptr(model.AddressDeviceType(remoteDeviceName)),
36+
Entity: []model.AddressEntityType{1},
37+
},
38+
EntityType: util.Ptr(model.EntityTypeTypeEVSE),
39+
},
40+
},
41+
},
42+
FeatureInformation: []model.NodeManagementDetailedDiscoveryFeatureInformationType{
43+
{
44+
Description: &model.NetworkManagementFeatureDescriptionDataType{
45+
FeatureAddress: &model.FeatureAddressType{
46+
Device: util.Ptr(model.AddressDeviceType(remoteDeviceName)),
47+
Entity: []model.AddressEntityType{1},
48+
Feature: util.Ptr(model.AddressFeatureType(1)),
49+
},
50+
FeatureType: util.Ptr(model.FeatureTypeTypeDeviceDiagnosis),
51+
Role: util.Ptr(model.RoleTypeClient),
52+
},
53+
},
54+
},
55+
}
56+
remoteEntities, err := remoteDevice.AddEntityAndFeatures(true, data)
57+
assert.Nil(t, err)
58+
assert.NotNil(t, remoteEntities)
59+
assert.NotEqual(t, 0, len(remoteEntities))
60+
61+
remoteEntity := remoteEntities[0]
62+
63+
d, err := NewDeviceDiagnosis(model.RoleTypeServer, model.RoleTypeClient, localDevice, remoteEntity)
64+
assert.Nil(t, err)
65+
assert.NotNil(t, d)
66+
67+
result, err := d.GetState()
68+
assert.NotNil(t, err)
69+
assert.Nil(t, result)
70+
71+
rF := remoteEntity.Feature(util.Ptr(model.AddressFeatureType(1)))
72+
fData := &model.DeviceDiagnosisStateDataType{
73+
OperatingState: util.Ptr(model.DeviceDiagnosisOperatingStateTypeNormalOperation),
74+
}
75+
rF.UpdateData(model.FunctionTypeDeviceDiagnosisStateData, fData, nil, nil)
76+
77+
result, err = d.GetState()
78+
assert.Nil(t, err)
79+
assert.NotNil(t, result)
80+
81+
}

features/electricalconnection.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ func (e *ElectricalConnection) GetParamDescriptionListData() (electricalParamDes
8787
return nil, nil, ErrDataNotAvailable
8888
}
8989
data := rData.(*model.ElectricalConnectionParameterDescriptionListDataType)
90+
if data == nil {
91+
return nil, nil, ErrDataNotAvailable
92+
}
9093

9194
refMeasurement := make(electricalParamDescriptionMapMeasurementId)
9295
refElectrical := make(electricatlParamDescriptionMapParamId)
@@ -112,6 +115,9 @@ func (e *ElectricalConnection) GetDescription() ([]ElectricalDescriptionType, er
112115
return nil, ErrMetadataNotAvailable
113116
}
114117
data := rData.(*model.ElectricalConnectionDescriptionListDataType)
118+
if data == nil {
119+
return nil, ErrMetadataNotAvailable
120+
}
115121

116122
var resultSet []ElectricalDescriptionType
117123

@@ -148,7 +154,11 @@ func (e *ElectricalConnection) GetConnectedPhases() (uint, error) {
148154
if rData == nil {
149155
return 0, ErrDataNotAvailable
150156
}
157+
151158
data := rData.(*model.ElectricalConnectionDescriptionListDataType)
159+
if data == nil {
160+
return 0, ErrDataNotAvailable
161+
}
152162

153163
for _, item := range data.ElectricalConnectionDescriptionData {
154164
if item.ElectricalConnectionId == nil {
@@ -182,7 +192,11 @@ func (e *ElectricalConnection) GetCurrentsLimits() (map[string]float64, map[stri
182192
if rData == nil {
183193
return nil, nil, nil, ErrDataNotAvailable
184194
}
195+
185196
data := rData.(*model.ElectricalConnectionPermittedValueSetListDataType)
197+
if data == nil {
198+
return nil, nil, nil, ErrDataNotAvailable
199+
}
186200

187201
resultSetMin := make(map[string]float64)
188202
resultSetMax := make(map[string]float64)
@@ -237,7 +251,12 @@ func (e *ElectricalConnection) GetEVLimitValues() ([]ElectricalLimitType, error)
237251
if rData == nil {
238252
return nil, ErrMetadataNotAvailable
239253
}
254+
240255
paramDescriptionData := rData.(*model.ElectricalConnectionParameterDescriptionListDataType)
256+
if paramDescriptionData == nil {
257+
return nil, ErrMetadataNotAvailable
258+
}
259+
241260
paramRef := make(map[model.ElectricalConnectionParameterIdType]model.ElectricalConnectionParameterDescriptionDataType)
242261
for _, item := range paramDescriptionData.ElectricalConnectionParameterDescriptionData {
243262
if item.ParameterId == nil {
@@ -250,7 +269,11 @@ func (e *ElectricalConnection) GetEVLimitValues() ([]ElectricalLimitType, error)
250269
if rData2 == nil {
251270
return nil, ErrDataNotAvailable
252271
}
272+
253273
data := rData2.(*model.ElectricalConnectionPermittedValueSetListDataType)
274+
if data == nil {
275+
return nil, ErrDataNotAvailable
276+
}
254277

255278
var resultSet []ElectricalLimitType
256279

features/identification.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ func (i *Identification) GetValues() ([]IdentificationType, error) {
5151
}
5252

5353
data := rData.(*model.IdentificationListDataType)
54+
if data == nil {
55+
return nil, ErrDataNotAvailable
56+
}
57+
5458
var resultSet []IdentificationType
5559

5660
for _, item := range data.IdentificationData {

features/loadcontrol.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,11 @@ func (l *LoadControl) GetLimitDescription() (loadControlLimitDescriptionMap, err
7878
if rData == nil {
7979
return nil, ErrMetadataNotAvailable
8080
}
81+
8182
data := rData.(*model.LoadControlLimitDescriptionListDataType)
83+
if data == nil {
84+
return nil, ErrDataNotAvailable
85+
}
8286

8387
ref := make(loadControlLimitDescriptionMap)
8488
for _, item := range data.LoadControlLimitDescriptionData {
@@ -145,6 +149,9 @@ func (l *LoadControl) GetLimitValues() ([]LoadControlLimitType, error) {
145149
}
146150

147151
descriptionData := rData.(*model.LoadControlLimitDescriptionListDataType)
152+
if descriptionData == nil {
153+
return nil, ErrMetadataNotAvailable
154+
}
148155

149156
descRef := make(map[model.LoadControlLimitIdType]model.LoadControlLimitDescriptionDataType)
150157
for _, item := range descriptionData.LoadControlLimitDescriptionData {

features/measurement.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,11 @@ func (m *Measurement) GetValueForScope(scope model.ScopeTypeType, electricalConn
8282
if rData == nil {
8383
return 0, ErrDataNotAvailable
8484
}
85+
8586
data := rData.(*model.MeasurementListDataType)
87+
if data == nil {
88+
return 0, ErrDataNotAvailable
89+
}
8690

8791
var result float64
8892
for _, item := range data.MeasurementData {
@@ -131,7 +135,11 @@ func (m *Measurement) GetValuesPerPhaseForScope(scope model.ScopeTypeType, elect
131135
if rData == nil {
132136
return nil, ErrDataNotAvailable
133137
}
138+
134139
data := rData.(*model.MeasurementListDataType)
140+
if data == nil {
141+
return nil, ErrDataNotAvailable
142+
}
135143

136144
resultSet := make(map[string]float64)
137145
for _, item := range data.MeasurementData {
@@ -174,7 +182,11 @@ func (m *Measurement) GetDescription() (measurementDescriptionMap, error) {
174182
if rData == nil {
175183
return nil, ErrMetadataNotAvailable
176184
}
185+
177186
data := rData.(*model.MeasurementDescriptionListDataType)
187+
if data == nil {
188+
return nil, ErrMetadataNotAvailable
189+
}
178190

179191
ref := make(measurementDescriptionMap)
180192
for _, item := range data.MeasurementDescriptionData {
@@ -230,7 +242,11 @@ func (m *Measurement) GetSoC() (float64, error) {
230242
if rData == nil {
231243
return 0, ErrDataNotAvailable
232244
}
245+
233246
data := rData.(*model.MeasurementListDataType)
247+
if data == nil {
248+
return 0, ErrDataNotAvailable
249+
}
234250

235251
for _, item := range data.MeasurementData {
236252
if item.MeasurementId == nil || item.Value == nil {
@@ -266,7 +282,11 @@ func (m *Measurement) GetConstraints() (measurementConstraintMap, error) {
266282
if rData == nil {
267283
return nil, ErrMetadataNotAvailable
268284
}
285+
269286
data := rData.(*model.MeasurementConstraintsListDataType)
287+
if data == nil {
288+
return nil, ErrDataNotAvailable
289+
}
270290

271291
ref := make(measurementConstraintMap)
272292
for _, item := range data.MeasurementConstraintsData {
@@ -296,7 +316,11 @@ func (m *Measurement) GetValues() ([]MeasurementType, error) {
296316
if rData == nil {
297317
return nil, ErrDataNotAvailable
298318
}
319+
299320
data := rData.(*model.MeasurementListDataType)
321+
if data == nil {
322+
return nil, ErrDataNotAvailable
323+
}
300324

301325
var resultSet []MeasurementType
302326
for _, item := range data.MeasurementData {

features/timeseries.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ func (t *TimeSeries) GetValues() ([]TimeSeriesType, error) {
110110
}
111111

112112
data := rData.(*model.TimeSeriesListDataType)
113+
if data == nil {
114+
return nil, ErrDataNotAvailable
115+
}
116+
113117
var resultSet []TimeSeriesType
114118

115119
for _, item := range data.TimeSeriesData {
@@ -188,6 +192,10 @@ func (t *TimeSeries) GetDescriptionValues() ([]TimeSeriesDescriptionType, error)
188192
}
189193

190194
data := rData.(*model.TimeSeriesDescriptionListDataType)
195+
if data == nil {
196+
return nil, ErrDataNotAvailable
197+
}
198+
191199
var resultSet []TimeSeriesDescriptionType
192200

193201
for _, item := range data.TimeSeriesDescriptionData {
@@ -236,6 +244,10 @@ func (t *TimeSeries) GetConstraintValues() ([]TimeSeriesConstraintsType, error)
236244
}
237245

238246
data := rData.(*model.TimeSeriesConstraintsListDataType)
247+
if data == nil {
248+
return nil, ErrDataNotAvailable
249+
}
250+
239251
var resultSet []TimeSeriesConstraintsType
240252

241253
for _, item := range data.TimeSeriesConstraintsData {

service/hub.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ func (h *connectionsHub) connectFoundService(remoteService *ServiceDetails, host
358358
return nil
359359
}
360360

361-
logging.Log.Debugf("initiating connection to %s at %s:%s", remoteService.SKI, host, port)
361+
logging.Log.Debugf("initiating connection to %s at %s:%s", remoteService.SKI(), host, port)
362362

363363
dialer := &websocket.Dialer{
364364
Proxy: http.ProxyFromEnvironment,
@@ -596,14 +596,14 @@ func (h *connectionsHub) coordinateConnectionInitations(ski string, entry MdnsEn
596596
func (h *connectionsHub) initateConnection(remoteService *ServiceDetails, entry MdnsEntry) bool {
597597
var err error
598598

599-
logging.Log.Debug("trying to connect to", remoteService.SKI, "at", entry.Host)
599+
logging.Log.Debug("trying to connect to", remoteService.SKI(), "at", entry.Host)
600600
if err = h.connectFoundService(remoteService, entry.Host, strconv.Itoa(entry.Port)); err != nil {
601-
logging.Log.Debugf("connection to %s failed: %s", remoteService.SKI, err)
601+
logging.Log.Debugf("connection to %s failed: %s", remoteService.SKI(), err)
602602
// connecting via the host failed, so try all of the provided addresses
603603
for _, address := range entry.Addresses {
604-
logging.Log.Debug("trying to connect to", remoteService.SKI, "at", address)
604+
logging.Log.Debug("trying to connect to", remoteService.SKI(), "at", address)
605605
if err = h.connectFoundService(remoteService, address.String(), strconv.Itoa(entry.Port)); err != nil {
606-
logging.Log.Debug("connection to", remoteService.SKI, "failed: ", err)
606+
logging.Log.Debug("connection to", remoteService.SKI(), "failed: ", err)
607607
} else {
608608
break
609609
}

0 commit comments

Comments
 (0)