From 07cee73bb16e3a0a7096081b36fa780df62ece2b Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Mon, 16 Mar 2026 14:09:55 +0100 Subject: [PATCH] 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. --- .../ocpp/2.0/OCPP20IncomingRequestService.ts | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) 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 } -- 2.43.0