feat: add connector status handling at boot with evses configuration
[e-mobility-charging-stations-simulator.git] / src / charging-station / ChargingStationUtils.ts
index 49a61101533043ae15cb09c6783eb197bf452cfd..4564f389674f45e4dba051e2bf0432e8db11dafa 100644 (file)
@@ -19,6 +19,7 @@ import {
   type ChargingStationInfo,
   type ChargingStationTemplate,
   type ConnectorStatus,
+  ConnectorStatusEnum,
   CurrentType,
   type EvseTemplate,
   type OCPP16BootNotificationRequest,
@@ -125,6 +126,31 @@ export class ChargingStationUtils {
     }
   }
 
+  public static getBootConnectorStatus(
+    chargingStation: ChargingStation,
+    connectorId: number,
+    connectorStatus: ConnectorStatus
+  ): ConnectorStatusEnum {
+    let connectorBootStatus: ConnectorStatusEnum;
+    if (
+      !connectorStatus?.status &&
+      (chargingStation.isChargingStationAvailable() === false ||
+        chargingStation.isConnectorAvailable(connectorId) === false)
+    ) {
+      connectorBootStatus = ConnectorStatusEnum.Unavailable;
+    } else if (!connectorStatus?.status && connectorStatus?.bootStatus) {
+      // Set boot status in template at startup
+      connectorBootStatus = connectorStatus?.bootStatus;
+    } else if (connectorStatus?.status) {
+      // Set previous status at startup
+      connectorBootStatus = connectorStatus?.status;
+    } else {
+      // Set default status
+      connectorBootStatus = ConnectorStatusEnum.Available;
+    }
+    return connectorBootStatus;
+  }
+
   public static getConfiguredNumberOfConnectors(stationInfo: ChargingStationInfo): number {
     let configuredMaxConnectors: number;
     if (Utils.isNotEmptyArray(stationInfo.numberOfConnectors) === true) {