refactor(simulator): permit to check if connector status transition is
[e-mobility-charging-stations-simulator.git] / src / charging-station / ocpp / 1.6 / OCPP16ResponseService.ts
index 30ed58b00c1a41137aa20472962bccfadef2eee6..36eecc577cdbfddd3ba1ea2484e23075f95809cb 100644 (file)
@@ -17,9 +17,7 @@ import {
   OCPP16AuthorizationStatus,
   type OCPP16AuthorizeRequest,
   type OCPP16AuthorizeResponse,
-  type OCPP16BootNotificationRequest,
   type OCPP16BootNotificationResponse,
-  OCPP16ChargePointErrorCode,
   OCPP16ChargePointStatus,
   type OCPP16DataTransferResponse,
   type OCPP16DiagnosticsStatusNotificationResponse,
@@ -33,7 +31,6 @@ import {
   OCPP16StandardParametersKey,
   type OCPP16StartTransactionRequest,
   type OCPP16StartTransactionResponse,
-  type OCPP16StatusNotificationRequest,
   type OCPP16StatusNotificationResponse,
   type OCPP16StopTransactionRequest,
   type OCPP16StopTransactionResponse,
@@ -280,7 +277,11 @@ export class OCPP16ResponseService extends OCPPResponseService {
         ),
       ],
     ]);
-    this.validatePayload.bind(this);
+    this.validatePayload = this.validatePayload.bind(this) as (
+      chargingStation: ChargingStation,
+      commandName: OCPP16RequestCommand,
+      payload: JsonType
+    ) => boolean;
   }
 
   public async responseHandler(
@@ -554,15 +555,11 @@ export class OCPP16ResponseService extends OCPPResponseService {
           transactionId: payload.transactionId,
           meterValue: [chargingStation.getConnectorStatus(connectorId).transactionBeginMeterValue],
         }));
-      await chargingStation.ocppRequestService.requestHandler<
-        OCPP16StatusNotificationRequest,
-        OCPP16StatusNotificationResponse
-      >(chargingStation, OCPP16RequestCommand.STATUS_NOTIFICATION, {
+      await OCPP16ServiceUtils.sendAndSetConnectorStatus(
+        chargingStation,
         connectorId,
-        status: OCPP16ChargePointStatus.Charging,
-        errorCode: OCPP16ChargePointErrorCode.NO_ERROR,
-      });
-      chargingStation.getConnectorStatus(connectorId).status = OCPP16ChargePointStatus.Charging;
+        OCPP16ChargePointStatus.Charging
+      );
       logger.info(
         `${chargingStation.logPrefix()} Transaction ${payload.transactionId.toString()} STARTED on ${
           chargingStation.stationInfo.chargingStationId
@@ -600,15 +597,11 @@ export class OCPP16ResponseService extends OCPPResponseService {
     if (
       chargingStation.getConnectorStatus(connectorId)?.status !== OCPP16ChargePointStatus.Available
     ) {
-      await chargingStation.ocppRequestService.requestHandler<
-        OCPP16StatusNotificationRequest,
-        OCPP16StatusNotificationResponse
-      >(chargingStation, OCPP16RequestCommand.STATUS_NOTIFICATION, {
+      await OCPP16ServiceUtils.sendAndSetConnectorStatus(
+        chargingStation,
         connectorId,
-        status: OCPP16ChargePointStatus.Available,
-        errorCode: OCPP16ChargePointErrorCode.NO_ERROR,
-      });
-      chargingStation.getConnectorStatus(connectorId).status = OCPP16ChargePointStatus.Available;
+        OCPP16ChargePointStatus.Available
+      );
     }
   }
 
@@ -647,27 +640,17 @@ export class OCPP16ResponseService extends OCPPResponseService {
       chargingStation.isChargingStationAvailable() === false ||
       chargingStation.isConnectorAvailable(transactionConnectorId) === false
     ) {
-      await chargingStation.ocppRequestService.requestHandler<
-        OCPP16StatusNotificationRequest,
-        OCPP16StatusNotificationResponse
-      >(chargingStation, OCPP16RequestCommand.STATUS_NOTIFICATION, {
-        connectorId: transactionConnectorId,
-        status: OCPP16ChargePointStatus.Unavailable,
-        errorCode: OCPP16ChargePointErrorCode.NO_ERROR,
-      });
-      chargingStation.getConnectorStatus(transactionConnectorId).status =
-        OCPP16ChargePointStatus.Unavailable;
+      await OCPP16ServiceUtils.sendAndSetConnectorStatus(
+        chargingStation,
+        transactionConnectorId,
+        OCPP16ChargePointStatus.Unavailable
+      );
     } else {
-      await chargingStation.ocppRequestService.requestHandler<
-        OCPP16BootNotificationRequest,
-        OCPP16BootNotificationResponse
-      >(chargingStation, OCPP16RequestCommand.STATUS_NOTIFICATION, {
-        connectorId: transactionConnectorId,
-        status: OCPP16ChargePointStatus.Available,
-        errorCode: OCPP16ChargePointErrorCode.NO_ERROR,
-      });
-      chargingStation.getConnectorStatus(transactionConnectorId).status =
-        OCPP16ChargePointStatus.Available;
+      await OCPP16ServiceUtils.sendAndSetConnectorStatus(
+        chargingStation,
+        transactionConnectorId,
+        OCPP16ChargePointStatus.Available
+      );
     }
     if (chargingStation.stationInfo.powerSharedByConnectors) {
       chargingStation.powerDivider--;