refactor: use helper to set and send connector status in reservation
authorJérôme Benoit <jerome.benoit@sap.com>
Mon, 5 Jun 2023 19:03:28 +0000 (21:03 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Mon, 5 Jun 2023 19:03:28 +0000 (21:03 +0200)
code

Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/charging-station/ChargingStation.ts
src/charging-station/ocpp/OCPPServiceUtils.ts

index fc6a409adfc006c7200bc600441f83c8ebeb1490..24f946828b03d4495944ae992dba324210d64d5c 100644 (file)
@@ -937,21 +937,12 @@ export class ChargingStation {
     }
     const connectorStatus = this.getConnectorStatus(reservation.connectorId);
     connectorStatus.reservation = reservation;
-    connectorStatus.status = ConnectorStatusEnum.Reserved;
-    if (reservation.connectorId === 0) {
-      return;
-    }
-    await this.ocppRequestService.requestHandler<
-      StatusNotificationRequest,
-      StatusNotificationResponse
-    >(
+    await OCPPServiceUtils.sendAndSetConnectorStatus(
       this,
-      RequestCommand.STATUS_NOTIFICATION,
-      OCPPServiceUtils.buildStatusNotificationRequest(
-        this,
-        reservation.connectorId,
-        ConnectorStatusEnum.Reserved
-      )
+      reservation.connectorId,
+      ConnectorStatusEnum.Reserved,
+      null,
+      { send: reservation.connectorId !== 0 }
     );
   }
 
@@ -961,35 +952,22 @@ export class ChargingStation {
   ): Promise<void> {
     const connector = this.getConnectorStatus(reservation.connectorId);
     switch (reason) {
-      case ReservationTerminationReason.TRANSACTION_STARTED: {
-        delete connector.reservation;
-        if (reservation.connectorId === 0) {
-          connector.status = ConnectorStatusEnum.Available;
-        }
-        break;
-      }
       case ReservationTerminationReason.CONNECTOR_STATE_CHANGED: {
         delete connector.reservation;
         break;
       }
-      default: {
-        // ReservationTerminationReason.EXPIRED, ReservationTerminationReason.CANCELED
-        connector.status = ConnectorStatusEnum.Available;
-        delete connector.reservation;
-        await this.ocppRequestService.requestHandler<
-          StatusNotificationRequest,
-          StatusNotificationResponse
-        >(
+      case ReservationTerminationReason.TRANSACTION_STARTED:
+      case ReservationTerminationReason.EXPIRED:
+      case ReservationTerminationReason.RESERVATION_CANCELED:
+        await OCPPServiceUtils.sendAndSetConnectorStatus(
           this,
-          RequestCommand.STATUS_NOTIFICATION,
-          OCPPServiceUtils.buildStatusNotificationRequest(
-            this,
-            reservation.connectorId,
-            ConnectorStatusEnum.Available
-          )
+          reservation.connectorId,
+          ConnectorStatusEnum.Available,
+          null,
+          { send: reservation.connectorId !== 0 }
         );
+        delete connector.reservation;
         break;
-      }
     }
   }
 
index 078fa0a09551ca56e9e8d66bb94aad9cb2dab92c..b01ff1e080161f68b52440122a00e4013a3e603e 100644 (file)
@@ -185,17 +185,26 @@ export class OCPPServiceUtils {
     chargingStation: ChargingStation,
     connectorId: number,
     status: ConnectorStatusEnum,
-    evseId?: number
+    evseId?: number,
+    options: { send: boolean } = { send: true }
   ) {
-    OCPPServiceUtils.checkConnectorStatusTransition(chargingStation, connectorId, status);
-    await chargingStation.ocppRequestService.requestHandler<
-      StatusNotificationRequest,
-      StatusNotificationResponse
-    >(
-      chargingStation,
-      RequestCommand.STATUS_NOTIFICATION,
-      OCPPServiceUtils.buildStatusNotificationRequest(chargingStation, connectorId, status, evseId)
-    );
+    options = { send: true, ...options };
+    if (options.send) {
+      OCPPServiceUtils.checkConnectorStatusTransition(chargingStation, connectorId, status);
+      await chargingStation.ocppRequestService.requestHandler<
+        StatusNotificationRequest,
+        StatusNotificationResponse
+      >(
+        chargingStation,
+        RequestCommand.STATUS_NOTIFICATION,
+        OCPPServiceUtils.buildStatusNotificationRequest(
+          chargingStation,
+          connectorId,
+          status,
+          evseId
+        )
+      );
+    }
     chargingStation.getConnectorStatus(connectorId).status = status;
   }