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

Commit fb12b4a

Browse files
Extend Manufacturer Data with all available data. (#26)
Closes #25
2 parents 5a72b48 + 829d702 commit fb12b4a

14 files changed

+179
-127
lines changed

api/api.go

+15
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,18 @@ type UseCaseInterface interface {
5353
// - and others
5454
IsUseCaseSupported(remoteEntity spineapi.EntityRemoteInterface) (bool, error)
5555
}
56+
57+
type ManufacturerData struct {
58+
DeviceName string `json:"deviceName,omitempty"`
59+
DeviceCode string `json:"deviceCode,omitempty"`
60+
SerialNumber string `json:"serialNumber,omitempty"`
61+
SoftwareRevision string `json:"softwareRevision,omitempty"`
62+
HardwareRevision string `json:"hardwareRevision,omitempty"`
63+
VendorName string `json:"vendorName,omitempty"`
64+
VendorCode string `json:"vendorCode,omitempty"`
65+
BrandName string `json:"brandName,omitempty"`
66+
PowerSource string `json:"powerSource,omitempty"`
67+
ManufacturerNodeIdentification string `json:"manufacturerNodeIdentification,omitempty"`
68+
ManufacturerLabel string `json:"manufacturerLabel,omitempty"`
69+
ManufacturerDescription string `json:"manufacturerDescription,omitempty"`
70+
}

mocks/UCEVCCInterface.go

+14-19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mocks/UCEVSECCInterface.go

+16-19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ucevcc/api.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ type UCEVCCInterface interface {
5858
//
5959
// parameters:
6060
// - entity: the entity of the EV
61-
ManufacturerData(entity spineapi.EntityRemoteInterface) (string, string, error)
61+
ManufacturerData(entity spineapi.EntityRemoteInterface) (api.ManufacturerData, error)
6262

6363
// Scenario 6
6464

ucevcc/public.go

+2-27
Original file line numberDiff line numberDiff line change
@@ -198,36 +198,11 @@ func (e *UCEVCC) Identifications(entity spineapi.EntityRemoteInterface) ([]api.I
198198
func (e *UCEVCC) ManufacturerData(
199199
entity spineapi.EntityRemoteInterface,
200200
) (
201-
string,
202-
string,
201+
api.ManufacturerData,
203202
error,
204203
) {
205-
deviceName := ""
206-
serialNumber := ""
207204

208-
if !util.IsCompatibleEntity(entity, e.validEntityTypes) {
209-
return deviceName, serialNumber, api.ErrNoCompatibleEntity
210-
}
211-
212-
evDeviceClassification, err := util.DeviceClassification(e.service, entity)
213-
if err != nil {
214-
return deviceName, serialNumber, eebusapi.ErrDataNotAvailable
215-
}
216-
217-
data, err := evDeviceClassification.GetManufacturerDetails()
218-
if err != nil {
219-
return deviceName, serialNumber, err
220-
}
221-
222-
if data.DeviceName != nil {
223-
deviceName = string(*data.DeviceName)
224-
}
225-
226-
if data.SerialNumber != nil {
227-
serialNumber = string(*data.SerialNumber)
228-
}
229-
230-
return deviceName, serialNumber, nil
205+
return util.ManufacturerData(e.service, entity, e.validEntityTypes)
231206
}
232207

233208
// return the min, max, default limits for each phase of the connected EV

ucevcc/public_test.go

+12-15
Original file line numberDiff line numberDiff line change
@@ -254,31 +254,26 @@ func (s *UCEVCCSuite) Test_EVIdentification() {
254254
}
255255

256256
func (s *UCEVCCSuite) Test_EVManufacturerData() {
257-
device, serial, err := s.sut.ManufacturerData(s.mockRemoteEntity)
257+
_, err := s.sut.ManufacturerData(nil)
258258
assert.NotNil(s.T(), err)
259-
assert.Equal(s.T(), "", device)
260-
assert.Equal(s.T(), "", serial)
261259

262-
device, serial, err = s.sut.ManufacturerData(s.evEntity)
260+
_, err = s.sut.ManufacturerData(s.mockRemoteEntity)
263261
assert.NotNil(s.T(), err)
264-
assert.Equal(s.T(), "", device)
265-
assert.Equal(s.T(), "", serial)
266262

267-
device, serial, err = s.sut.ManufacturerData(s.evEntity)
263+
_, err = s.sut.ManufacturerData(s.evEntity)
268264
assert.NotNil(s.T(), err)
269-
assert.Equal(s.T(), "", device)
270-
assert.Equal(s.T(), "", serial)
271265

272266
descData := &model.DeviceClassificationManufacturerDataType{}
273267

274268
rFeature := s.remoteDevice.FeatureByEntityTypeAndRole(s.evEntity, model.FeatureTypeTypeDeviceClassification, model.RoleTypeServer)
275269
fErr := rFeature.UpdateData(model.FunctionTypeDeviceClassificationManufacturerData, descData, nil, nil)
276270
assert.Nil(s.T(), fErr)
277271

278-
device, serial, err = s.sut.ManufacturerData(s.evEntity)
272+
data, err := s.sut.ManufacturerData(s.evEntity)
279273
assert.Nil(s.T(), err)
280-
assert.Equal(s.T(), "", device)
281-
assert.Equal(s.T(), "", serial)
274+
assert.NotNil(s.T(), data)
275+
assert.Equal(s.T(), "", data.DeviceName)
276+
assert.Equal(s.T(), "", data.SerialNumber)
282277

283278
descData = &model.DeviceClassificationManufacturerDataType{
284279
DeviceName: eebusutil.Ptr(model.DeviceClassificationStringType("test")),
@@ -288,10 +283,12 @@ func (s *UCEVCCSuite) Test_EVManufacturerData() {
288283
fErr = rFeature.UpdateData(model.FunctionTypeDeviceClassificationManufacturerData, descData, nil, nil)
289284
assert.Nil(s.T(), fErr)
290285

291-
device, serial, err = s.sut.ManufacturerData(s.evEntity)
286+
data, err = s.sut.ManufacturerData(s.evEntity)
292287
assert.Nil(s.T(), err)
293-
assert.Equal(s.T(), "test", device)
294-
assert.Equal(s.T(), "12345", serial)
288+
assert.NotNil(s.T(), data)
289+
assert.Equal(s.T(), "test", data.DeviceName)
290+
assert.Equal(s.T(), "12345", data.SerialNumber)
291+
assert.Equal(s.T(), "", data.BrandName)
295292
}
296293

297294
func (s *UCEVCCSuite) Test_EVCurrentLimits() {

ucevsecc/api.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ type UCEVSECCInterface interface {
1818
// - entity: the entity of the EV
1919
//
2020
// returns deviceName, serialNumber, error
21-
ManufacturerData(entity spineapi.EntityRemoteInterface) (string, string, error)
21+
ManufacturerData(entity spineapi.EntityRemoteInterface) (api.ManufacturerData, error)
2222

2323
// the operating state data of an EVSE
2424
//

ucevsecc/public.go

+2-28
Original file line numberDiff line numberDiff line change
@@ -12,36 +12,10 @@ import (
1212
func (e *UCEVSECC) ManufacturerData(
1313
entity spineapi.EntityRemoteInterface,
1414
) (
15-
string,
16-
string,
15+
api.ManufacturerData,
1716
error,
1817
) {
19-
deviceName := ""
20-
serialNumber := ""
21-
22-
if entity == nil || !util.IsCompatibleEntity(entity, e.validEntityTypes) {
23-
return deviceName, serialNumber, api.ErrNoCompatibleEntity
24-
}
25-
26-
evseDeviceClassification, err := util.DeviceClassification(e.service, entity)
27-
if err != nil {
28-
return deviceName, serialNumber, err
29-
}
30-
31-
data, err := evseDeviceClassification.GetManufacturerDetails()
32-
if err != nil {
33-
return deviceName, serialNumber, err
34-
}
35-
36-
if data.DeviceName != nil {
37-
deviceName = string(*data.DeviceName)
38-
}
39-
40-
if data.SerialNumber != nil {
41-
serialNumber = string(*data.SerialNumber)
42-
}
43-
44-
return deviceName, serialNumber, nil
18+
return util.ManufacturerData(e.service, entity, e.validEntityTypes)
4519
}
4620

4721
// the operating state data of an EVSE

ucevsecc/public_test.go

+12-15
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,26 @@ import (
77
)
88

99
func (s *UCEVSECCSuite) Test_EVSEManufacturerData() {
10-
device, serial, err := s.sut.ManufacturerData(nil)
10+
_, err := s.sut.ManufacturerData(nil)
1111
assert.NotNil(s.T(), err)
12-
assert.Equal(s.T(), "", device)
13-
assert.Equal(s.T(), "", serial)
1412

15-
device, serial, err = s.sut.ManufacturerData(s.mockRemoteEntity)
13+
_, err = s.sut.ManufacturerData(s.mockRemoteEntity)
1614
assert.NotNil(s.T(), err)
17-
assert.Equal(s.T(), "", device)
18-
assert.Equal(s.T(), "", serial)
1915

20-
device, serial, err = s.sut.ManufacturerData(s.evseEntity)
16+
_, err = s.sut.ManufacturerData(s.evseEntity)
2117
assert.NotNil(s.T(), err)
22-
assert.Equal(s.T(), "", device)
23-
assert.Equal(s.T(), "", serial)
2418

2519
descData := &model.DeviceClassificationManufacturerDataType{}
2620

2721
rFeature := s.remoteDevice.FeatureByEntityTypeAndRole(s.evseEntity, model.FeatureTypeTypeDeviceClassification, model.RoleTypeServer)
2822
fErr := rFeature.UpdateData(model.FunctionTypeDeviceClassificationManufacturerData, descData, nil, nil)
2923
assert.Nil(s.T(), fErr)
3024

31-
device, serial, err = s.sut.ManufacturerData(s.evseEntity)
25+
data, err := s.sut.ManufacturerData(s.evseEntity)
3226
assert.Nil(s.T(), err)
33-
assert.Equal(s.T(), "", device)
34-
assert.Equal(s.T(), "", serial)
27+
assert.NotNil(s.T(), data)
28+
assert.Equal(s.T(), "", data.DeviceName)
29+
assert.Equal(s.T(), "", data.SerialNumber)
3530

3631
descData = &model.DeviceClassificationManufacturerDataType{
3732
DeviceName: eebusutil.Ptr(model.DeviceClassificationStringType("test")),
@@ -41,10 +36,12 @@ func (s *UCEVSECCSuite) Test_EVSEManufacturerData() {
4136
fErr = rFeature.UpdateData(model.FunctionTypeDeviceClassificationManufacturerData, descData, nil, nil)
4237
assert.Nil(s.T(), fErr)
4338

44-
device, serial, err = s.sut.ManufacturerData(s.evseEntity)
39+
data, err = s.sut.ManufacturerData(s.evseEntity)
4540
assert.Nil(s.T(), err)
46-
assert.Equal(s.T(), "test", device)
47-
assert.Equal(s.T(), "12345", serial)
41+
assert.NotNil(s.T(), data)
42+
assert.Equal(s.T(), "test", data.DeviceName)
43+
assert.Equal(s.T(), "12345", data.SerialNumber)
44+
assert.Equal(s.T(), "", data.BrandName)
4845
}
4946

5047
func (s *UCEVSECCSuite) Test_EVSEOperatingState() {

util/features_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package util
33
import "github.com/stretchr/testify/assert"
44

55
func (s *UtilSuite) Test_Features() {
6-
feature1, err := DeviceClassification(s.service, s.monitoredEntity)
6+
feature1, err := DeviceClassification(s.service, s.evseEntity)
77
assert.Nil(s.T(), feature1)
88
assert.NotNil(s.T(), err)
99

util/helper.go

+7
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,10 @@ func IsEntityDisconnected(payload spineapi.EventPayload) bool {
4848

4949
return false
5050
}
51+
52+
func Deref(v *string) string {
53+
if v != nil {
54+
return string(*v)
55+
}
56+
return ""
57+
}

0 commit comments

Comments
 (0)