]> Piment Noir Git Repositories - e-mobility-charging-stations-simulator.git/commitdiff
refactor(ocpp20): remove redundant lastFirmwareStatus from per-station state
authorJérôme Benoit <jerome.benoit@sap.com>
Mon, 16 Mar 2026 13:09:55 +0000 (14:09 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Mon, 16 Mar 2026 13:09:55 +0000 (14:09 +0100)
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.

src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts

index 5bc9b06184d17b3562e99b694b260cded7aa049b..a63825807f202c52f967f448a6fe92961d164d44 100644 (file)
@@ -152,7 +152,6 @@ const moduleName = 'OCPP20IncomingRequestService'
 interface OCPP20PerStationState {
   activeFirmwareUpdateAbortController?: AbortController
   activeFirmwareUpdateRequestId?: number
-  lastFirmwareStatus?: OCPP20FirmwareStatusEnumType
   preInoperativeConnectorStatuses: Map<number, OCPP20ConnectorStatusEnumType>
   reportDataCache: Map<number, ReportDataType[]>
 }
@@ -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<OCPP20FirmwareStatusNotificationResponse> {
-    this.getStationState(chargingStation).lastFirmwareStatus = status
     if (chargingStation.stationInfo != null) {
       chargingStation.stationInfo.firmwareStatus = status
     }