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

Commit

Permalink
Use generic Events
Browse files Browse the repository at this point in the history
  • Loading branch information
DerAndereAndi committed Feb 25, 2024
1 parent a5ecbc0 commit 4afa6ce
Show file tree
Hide file tree
Showing 43 changed files with 158 additions and 209 deletions.
16 changes: 7 additions & 9 deletions api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,12 @@ type UseCaseInterface interface {
IsUseCaseSupported(remoteEntity spineapi.EntityRemoteInterface) (bool, error)
}

// interface for informing the cem about specific events
// for each supported usecase
// interface for informing the HEMS about specific events
//
// UseCaseEventType values can be found in the api definition of each
// supported usecase
//
// implemented by the actual CEM, used by UCEvseCCInterface implementation
type UseCaseEventReaderInterface interface {
// Inform about a new usecase specific event
SpineEvent(ski string, device spineapi.DeviceRemoteInterface, entity spineapi.EntityRemoteInterface, event UseCaseEventType)
// implemented by the actual HEMS
type EventReaderInterface interface {
// Inform about a new cem or usecase specific event
//
// used by use case implementations
Event(ski string, device spineapi.DeviceRemoteInterface, entity spineapi.EntityRemoteInterface, event EventType)
}
113 changes: 58 additions & 55 deletions api/types.go

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions cem/cem.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ type Cem struct {

Currency model.CurrencyType

reader api.UseCaseEventReaderInterface
reader api.EventReaderInterface

usecases []api.UseCaseInterface
}

func NewCEM(
serviceDescription *eebusapi.Configuration,
serviceHandler eebusapi.ServiceReaderInterface,
reader api.UseCaseEventReaderInterface,
reader api.EventReaderInterface,
log logging.LoggingInterface) *Cem {
cem := &Cem{
Service: service.NewService(serviceDescription, serviceHandler),
Expand Down
4 changes: 2 additions & 2 deletions cem/cem_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ func (s *CemSuite) Test_CEM() {
s.sut.Shutdown()
}

// UseCaseEventReaderInterface
func (d *CemSuite) SpineEvent(ski string, device spineapi.DeviceRemoteInterface, entity spineapi.EntityRemoteInterface, event api.UseCaseEventType) {
// ReaderInterface
func (d *CemSuite) Event(ski string, device spineapi.DeviceRemoteInterface, entity spineapi.EntityRemoteInterface, event api.EventType) {
}

// eebusapi.ServiceReaderInterface
Expand Down
4 changes: 2 additions & 2 deletions cem/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ import (
func (h *Cem) HandleEvent(payload spineapi.EventPayload) {

if util.IsDeviceConnected(payload) {
h.reader.SpineEvent(payload.Ski, payload.Device, nil, api.DeviceConnected)
h.reader.Event(payload.Ski, payload.Device, nil, api.DeviceConnected)
return
}

if util.IsDeviceDisconnected(payload) {
h.reader.SpineEvent(payload.Ski, payload.Device, nil, api.DeviceDisconnected)
h.reader.Event(payload.Ski, payload.Device, nil, api.DeviceDisconnected)
return
}
}
4 changes: 3 additions & 1 deletion cmd/democem/democem.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"github.com/enbility/cemd/cem"
"github.com/enbility/cemd/ucevsecc"
eebusapi "github.com/enbility/eebus-go/api"
"github.com/enbility/ship-go/logging"
)

type DemoCem struct {
Expand All @@ -13,7 +14,8 @@ type DemoCem struct {
func NewDemoCem(configuration *eebusapi.Configuration) *DemoCem {
demo := &DemoCem{}

demo.cem = cem.NewCEM(configuration, demo, demo, demo)
noLogging := &logging.NoLogging{}
demo.cem = cem.NewCEM(configuration, demo, demo, noLogging)

return demo
}
Expand Down
6 changes: 3 additions & 3 deletions cmd/democem/eventreader.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import (
spineapi "github.com/enbility/spine-go/api"
)

var _ api.UseCaseEventReaderInterface = (*DemoCem)(nil)
var _ api.EventReaderInterface = (*DemoCem)(nil)

// Handle incomfing usecase specific event
func (h *DemoCem) SpineEvent(ski string, device spineapi.DeviceRemoteInterface, entity spineapi.EntityRemoteInterface, event api.UseCaseEventType) {
// Handle incoming usecase specific events
func (h *DemoCem) Event(ski string, device spineapi.DeviceRemoteInterface, entity spineapi.EntityRemoteInterface, event api.EventType) {
}
50 changes: 0 additions & 50 deletions cmd/democem/logging.go

This file was deleted.

4 changes: 0 additions & 4 deletions cmd/democem/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,10 @@ package democem
import (
eebusapi "github.com/enbility/eebus-go/api"
shipapi "github.com/enbility/ship-go/api"
"github.com/enbility/ship-go/logging"
)

// report the Ship ID of a newly trusted connection
func (d *DemoCem) RemoteServiceShipIDReported(service eebusapi.ServiceInterface, ski string, shipID string) {
// we should associated the Ship ID with the SKI and store it
// so the next connection can start trusted
logging.Log().Info("SKI", ski, "has Ship ID:", shipID)
}

func (d *DemoCem) RemoteSKIConnected(service eebusapi.ServiceInterface, ski string) {}
Expand Down
14 changes: 7 additions & 7 deletions uccevc/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ func (e *UCCEVC) evTimeSeriesDescriptionDataUpdate(ski string, entity spineapi.E
return
}

e.reader.SpineEvent(ski, entity.Device(), entity, api.UCCEVCEnergyDemandProvided)
e.reader.Event(ski, entity.Device(), entity, api.UCCEVCEnergyDemandProvided)

_, err = e.TimeSlotConstraints(entity)
if err != nil {
Expand All @@ -127,18 +127,18 @@ func (e *UCCEVC) evTimeSeriesDescriptionDataUpdate(ski string, entity spineapi.E
return
}

e.reader.SpineEvent(ski, entity.Device(), entity, api.UCCEVPowerLimitsRequested)
e.reader.SpineEvent(ski, entity.Device(), entity, api.UCCEVCIncentivesRequested)
e.reader.Event(ski, entity.Device(), entity, api.UCCEVPowerLimitsRequested)
e.reader.Event(ski, entity.Device(), entity, api.UCCEVCIncentivesRequested)
}

// the load control limit data of an EV was updated
func (e *UCCEVC) evTimeSeriesDataUpdate(ski string, entity spineapi.EntityRemoteInterface) {
if _, err := e.ChargePlan(entity); err == nil {
e.reader.SpineEvent(ski, entity.Device(), entity, api.UCCEVCChargePlanProvided)
e.reader.Event(ski, entity.Device(), entity, api.UCCEVCChargePlanProvided)
}

if _, err := e.ChargePlanConstraints(entity); err == nil {
e.reader.SpineEvent(ski, entity.Device(), entity, api.UCCEVCChargePlanConstraintsProvided)
e.reader.Event(ski, entity.Device(), entity, api.UCCEVCChargePlanConstraintsProvided)
}
}

Expand All @@ -156,12 +156,12 @@ func (e *UCCEVC) evIncentiveTableDescriptionDataUpdate(ski string, entity spinea
return
}

e.reader.SpineEvent(ski, entity.Device(), entity, api.UCCEVCIncentiveDescriptionsRequired)
e.reader.Event(ski, entity.Device(), entity, api.UCCEVCIncentiveDescriptionsRequired)
}

// the load control limit data of an EV was updated
func (e *UCCEVC) evIncentiveTableDataUpdate(ski string, entity spineapi.EntityRemoteInterface) {
e.reader.SpineEvent(ski, entity.Device(), entity, api.UCCEVCIncentiveTableDataUpdate)
e.reader.Event(ski, entity.Device(), entity, api.UCCEVCIncentiveTableDataUpdate)
}

// check timeSeries descriptions if constraints element has updateRequired set to true
Expand Down
2 changes: 1 addition & 1 deletion uccevc/testhelper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ type UCCEVCSuite struct {
evEntity spineapi.EntityRemoteInterface
}

func (s *UCCEVCSuite) SpineEvent(ski string, device spineapi.DeviceRemoteInterface, entity spineapi.EntityRemoteInterface, event api.UseCaseEventType) {
func (s *UCCEVCSuite) Event(ski string, device spineapi.DeviceRemoteInterface, entity spineapi.EntityRemoteInterface, event api.EventType) {
}

func (s *UCCEVCSuite) BeforeTest(suiteName, testName string) {
Expand Down
4 changes: 2 additions & 2 deletions uccevc/uccevc.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ import (
type UCCEVC struct {
service serviceapi.ServiceInterface

reader api.UseCaseEventReaderInterface
reader api.EventReaderInterface

validEntityTypes []model.EntityTypeType
}

var _ UCCEVCInterface = (*UCCEVC)(nil)

func NewUCCEVC(service serviceapi.ServiceInterface, details *shipapi.ServiceDetails, reader api.UseCaseEventReaderInterface) *UCCEVC {
func NewUCCEVC(service serviceapi.ServiceInterface, details *shipapi.ServiceDetails, reader api.EventReaderInterface) *UCCEVC {
uc := &UCCEVC{
service: service,
reader: reader,
Expand Down
14 changes: 7 additions & 7 deletions ucevcc/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,12 @@ func (e *UCEVCC) evConnected(ski string, entity spineapi.EntityRemoteInterface)
}
}

e.reader.SpineEvent(ski, entity.Device(), entity, api.UCEVCCEventConnected)
e.reader.Event(ski, entity.Device(), entity, api.UCEVCCEventConnected)
}

// an EV was disconnected
func (e *UCEVCC) evDisconnected(ski string, entity spineapi.EntityRemoteInterface) {
e.reader.SpineEvent(ski, entity.Device(), entity, api.UCEVCCEventDisconnected)
e.reader.Event(ski, entity.Device(), entity, api.UCEVCCEventDisconnected)
}

// the configuration key description data of an EV was updated
Expand All @@ -139,12 +139,12 @@ func (e *UCEVCC) evConfigurationDataUpdate(ski string, entity spineapi.EntityRem

// Scenario 2
if _, err := evDeviceConfiguration.GetKeyValueForKeyName(model.DeviceConfigurationKeyNameTypeCommunicationsStandard, model.DeviceConfigurationKeyValueTypeTypeString); err == nil {
e.reader.SpineEvent(ski, entity.Device(), entity, api.UCEVCCCommunicationStandardConfigurationDataUpdate)
e.reader.Event(ski, entity.Device(), entity, api.UCEVCCCommunicationStandardConfigurationDataUpdate)
}

// Scenario 3
if _, err := evDeviceConfiguration.GetKeyValueForKeyName(model.DeviceConfigurationKeyNameTypeAsymmetricChargingSupported, model.DeviceConfigurationKeyValueTypeTypeString); err == nil {
e.reader.SpineEvent(ski, entity.Device(), entity, api.UCEVCCAsymmetricChargingConfigurationDataUpdate)
e.reader.Event(ski, entity.Device(), entity, api.UCEVCCAsymmetricChargingConfigurationDataUpdate)
}
}

Expand All @@ -162,7 +162,7 @@ func (e *UCEVCC) evIdentificationDataUpdate(ski string, entity spineapi.EntityRe
continue
}

e.reader.SpineEvent(ski, entity.Device(), entity, api.UCEVCCIdentificationDataUpdate)
e.reader.Event(ski, entity.Device(), entity, api.UCEVCCIdentificationDataUpdate)
return
}
}
Expand All @@ -177,7 +177,7 @@ func (e *UCEVCC) evManufacturerDataUpdate(ski string, entity spineapi.EntityRemo

// Scenario 5
if _, err := evDeviceClassification.GetManufacturerDetails(); err == nil {
e.reader.SpineEvent(ski, entity.Device(), entity, api.UCEVCCManufacturerDataUpdate)
e.reader.Event(ski, entity.Device(), entity, api.UCEVCCManufacturerDataUpdate)
}

}
Expand Down Expand Up @@ -209,5 +209,5 @@ func (e *UCEVCC) evElectricalPermittedValuesUpdate(ski string, entity spineapi.E
}

// Scenario 6
e.reader.SpineEvent(ski, entity.Device(), entity, api.UCEVCCChargingPowerLimitsDataUpdate)
e.reader.Event(ski, entity.Device(), entity, api.UCEVCCChargingPowerLimitsDataUpdate)
}
2 changes: 1 addition & 1 deletion ucevcc/testhelper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ type UCEVCCSuite struct {
evEntity spineapi.EntityRemoteInterface
}

func (s *UCEVCCSuite) SpineEvent(ski string, device spineapi.DeviceRemoteInterface, entity spineapi.EntityRemoteInterface, event api.UseCaseEventType) {
func (s *UCEVCCSuite) Event(ski string, device spineapi.DeviceRemoteInterface, entity spineapi.EntityRemoteInterface, event api.EventType) {
}

func (s *UCEVCCSuite) BeforeTest(suiteName, testName string) {
Expand Down
4 changes: 2 additions & 2 deletions ucevcc/ucevcc.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ import (
type UCEVCC struct {
service serviceapi.ServiceInterface

reader api.UseCaseEventReaderInterface
reader api.EventReaderInterface

validEntityTypes []model.EntityTypeType
}

var _ UCEVCCInterface = (*UCEVCC)(nil)

func NewUCEVCC(service serviceapi.ServiceInterface, details *shipapi.ServiceDetails, reader api.UseCaseEventReaderInterface) *UCEVCC {
func NewUCEVCC(service serviceapi.ServiceInterface, details *shipapi.ServiceDetails, reader api.EventReaderInterface) *UCEVCC {
uc := &UCEVCC{
service: service,
reader: reader,
Expand Down
8 changes: 4 additions & 4 deletions ucevcem/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ func (e *UCEVCEM) evElectricalConnectionDescriptionDataUpdate(ski string, entity
return
}

e.reader.SpineEvent(ski, entity.Device(), entity, api.UCEVCEMNumberOfConnectedPhasesDataUpdate)
e.reader.Event(ski, entity.Device(), entity, api.UCEVCEMNumberOfConnectedPhasesDataUpdate)
}

// the measurement description data of an EV was updated
Expand All @@ -78,16 +78,16 @@ func (e *UCEVCEM) evMeasurementDescriptionDataUpdate(entity spineapi.EntityRemot
func (e *UCEVCEM) evMeasurementDataUpdate(ski string, entity spineapi.EntityRemoteInterface) {
// Scenario 1
if _, err := util.MeasurementValueForScope(e.service, entity, model.ScopeTypeTypeACCurrent); err == nil {
e.reader.SpineEvent(ski, entity.Device(), entity, api.UCEVCEMCurrentMeasurementDataUpdate)
e.reader.Event(ski, entity.Device(), entity, api.UCEVCEMCurrentMeasurementDataUpdate)
}

// Scenario 2
if _, err := util.MeasurementValueForScope(e.service, entity, model.ScopeTypeTypeACPower); err == nil {
e.reader.SpineEvent(ski, entity.Device(), entity, api.UCEVCEMPowerMeasurementDataUpdate)
e.reader.Event(ski, entity.Device(), entity, api.UCEVCEMPowerMeasurementDataUpdate)
}

// Scenario 3
if _, err := util.MeasurementValueForScope(e.service, entity, model.ScopeTypeTypeCharge); err == nil {
e.reader.SpineEvent(ski, entity.Device(), entity, api.UCEVCEMChargingEnergyMeasurementDataUpdate)
e.reader.Event(ski, entity.Device(), entity, api.UCEVCEMChargingEnergyMeasurementDataUpdate)
}
}
2 changes: 1 addition & 1 deletion ucevcem/testhelper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ type UCEVCEMSuite struct {
evEntity spineapi.EntityRemoteInterface
}

func (s *UCEVCEMSuite) SpineEvent(ski string, device spineapi.DeviceRemoteInterface, entity spineapi.EntityRemoteInterface, event api.UseCaseEventType) {
func (s *UCEVCEMSuite) Event(ski string, device spineapi.DeviceRemoteInterface, entity spineapi.EntityRemoteInterface, event api.EventType) {
}

func (s *UCEVCEMSuite) BeforeTest(suiteName, testName string) {
Expand Down
4 changes: 2 additions & 2 deletions ucevcem/ucevcem.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ import (
type UCEVCEM struct {
service serviceapi.ServiceInterface

reader api.UseCaseEventReaderInterface
reader api.EventReaderInterface

validEntityTypes []model.EntityTypeType
}

var _ UCEVCEMInterface = (*UCEVCEM)(nil)

func NewUCEVCEM(service serviceapi.ServiceInterface, details *shipapi.ServiceDetails, reader api.UseCaseEventReaderInterface) *UCEVCEM {
func NewUCEVCEM(service serviceapi.ServiceInterface, details *shipapi.ServiceDetails, reader api.EventReaderInterface) *UCEVCEM {
uc := &UCEVCEM{
service: service,
reader: reader,
Expand Down
Loading

0 comments on commit 4afa6ce

Please sign in to comment.