From: Jérôme Benoit Date: Wed, 29 May 2024 18:02:34 +0000 (+0200) Subject: fix: ensure message sequence is fired at boot notification response X-Git-Tag: v1.3.4~41 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=505390847039ec18d52b665e2bc5afff69414aab;p=e-mobility-charging-stations-simulator.git fix: ensure message sequence is fired at boot notification response processing closes #1039 Signed-off-by: Jérôme Benoit --- diff --git a/src/charging-station/ChargingStation.ts b/src/charging-station/ChargingStation.ts index 7df0a35f..ba197954 100644 --- a/src/charging-station/ChargingStation.ts +++ b/src/charging-station/ChargingStation.ts @@ -1861,15 +1861,7 @@ export class ChargingStation extends EventEmitter { this.stationInfo?.registrationMaxRetries === -1) ) } - if (this.isRegistered()) { - this.emit(ChargingStationEvents.registered) - if (this.inAcceptedState()) { - this.emit(ChargingStationEvents.accepted) - } - } else { - if (this.inRejectedState()) { - this.emit(ChargingStationEvents.rejected) - } + if (!this.isRegistered()) { logger.error( `${this.logPrefix()} Registration failure: maximum retries reached (${registrationRetryCount}) or retry disabled (${ this.stationInfo?.registrationMaxRetries diff --git a/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts b/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts index 64e33061..ff04f4dc 100644 --- a/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts +++ b/src/charging-station/ocpp/1.6/OCPP16ResponseService.ts @@ -13,6 +13,7 @@ import { import { OCPPError } from '../../../exception/index.js' import { type ChangeConfigurationResponse, + ChargingStationEvents, ErrorType, type GenericResponse, type GetConfigurationResponse, @@ -527,6 +528,14 @@ export class OCPP16ResponseService extends OCPPResponseService { OCPP16ServiceUtils.startHeartbeatInterval(chargingStation, payload.interval) } if (Object.values(RegistrationStatusEnumType).includes(payload.status)) { + if (chargingStation.isRegistered()) { + chargingStation.emit(ChargingStationEvents.registered) + if (chargingStation.inAcceptedState()) { + chargingStation.emit(ChargingStationEvents.accepted) + } + } else if (chargingStation.inRejectedState()) { + chargingStation.emit(ChargingStationEvents.rejected) + } const logMsg = `${chargingStation.logPrefix()} Charging station in '${ payload.status }' state on the central server` diff --git a/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts b/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts index 6ab91c07..54ccdeec 100644 --- a/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts +++ b/src/charging-station/ocpp/2.0/OCPP20ResponseService.ts @@ -5,6 +5,7 @@ import type { ValidateFunction } from 'ajv' import { addConfigurationKey, type ChargingStation } from '../../../charging-station/index.js' import { OCPPError } from '../../../exception/index.js' import { + ChargingStationEvents, ErrorType, type JsonType, type OCPP20BootNotificationResponse, @@ -193,6 +194,14 @@ export class OCPP20ResponseService extends OCPPResponseService { OCPP20ServiceUtils.startHeartbeatInterval(chargingStation, payload.interval) } if (Object.values(RegistrationStatusEnumType).includes(payload.status)) { + if (chargingStation.isRegistered()) { + chargingStation.emit(ChargingStationEvents.registered) + if (chargingStation.inAcceptedState()) { + chargingStation.emit(ChargingStationEvents.accepted) + } + } else if (chargingStation.inRejectedState()) { + chargingStation.emit(ChargingStationEvents.rejected) + } const logMsg = `${chargingStation.logPrefix()} Charging station in '${ payload.status }' state on the central server`