From: Jérôme Benoit Date: Mon, 16 Mar 2026 13:09:55 +0000 (+0100) Subject: refactor(ocpp20): remove redundant lastFirmwareStatus from per-station state X-Git-Tag: ocpp-server@v3.1.1~23 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=07cee73bb16e3a0a7096081b36fa780df62ece2b;p=e-mobility-charging-stations-simulator.git refactor(ocpp20): remove redundant lastFirmwareStatus from per-station state lastFirmwareStatus in the WeakMap was a duplicate of stationInfo.firmwareStatus (now written by sendFirmwareStatusNotification). TriggerMessage now uses hasFirmwareUpdateInProgress() to determine whether to send Idle or the current intermediate state, which also fixes a bug where failure end states (DownloadFailed, InstallationFailed, etc.) were returned instead of Idle. --- diff --git a/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts b/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts index 5bc9b061..a6382580 100644 --- a/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts +++ b/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts @@ -152,7 +152,6 @@ const moduleName = 'OCPP20IncomingRequestService' interface OCPP20PerStationState { activeFirmwareUpdateAbortController?: AbortController activeFirmwareUpdateRequestId?: number - lastFirmwareStatus?: OCPP20FirmwareStatusEnumType preInoperativeConnectorStatuses: Map reportDataCache: Map } @@ -363,12 +362,10 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService { .catch(errorHandler) break case MessageTriggerEnumType.FirmwareStatusNotification: { + const firmwareStatus = this.hasFirmwareUpdateInProgress(chargingStation) + ? (chargingStation.stationInfo?.firmwareStatus as OCPP20FirmwareStatusEnumType) + : OCPP20FirmwareStatusEnumType.Idle const ss = this.getStationState(chargingStation) - const firmwareStatus = - ss.lastFirmwareStatus == null || - ss.lastFirmwareStatus === OCPP20FirmwareStatusEnumType.Installed - ? OCPP20FirmwareStatusEnumType.Idle - : ss.lastFirmwareStatus chargingStation.ocppRequestService .requestHandler< OCPP20FirmwareStatusNotificationRequest, @@ -3144,7 +3141,6 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService { status: OCPP20FirmwareStatusEnumType, requestId: number ): Promise { - this.getStationState(chargingStation).lastFirmwareStatus = status if (chargingStation.stationInfo != null) { chargingStation.stationInfo.firmwareStatus = status }