Forward UI request UUID to broadcast channel request
[e-mobility-charging-stations-simulator.git] / src / charging-station / ChargingStationUtils.ts
index c216ed6bec8bae64bb3f2ae84bab9db91ba16d3b..2d6f84644e901cbc546ecf3f0eb3e59449277450 100644 (file)
@@ -27,7 +27,7 @@ import Configuration from '../utils/Configuration';
 import Constants from '../utils/Constants';
 import logger from '../utils/Logger';
 import Utils from '../utils/Utils';
-import ChargingStation from './ChargingStation';
+import type ChargingStation from './ChargingStation';
 import { ChargingStationConfigurationUtils } from './ChargingStationConfigurationUtils';
 
 export class ChargingStationUtils {
@@ -534,26 +534,38 @@ export class ChargingStationUtils {
     );
   }
 
-  public static isCommandSupported(
-    command: RequestCommand | IncomingRequestCommand,
-    stationInfo: ChargingStationInfo
+  public static isRequestCommandSupported(
+    command: RequestCommand,
+    chargingStation: ChargingStation
   ): boolean {
-    if (
-      Object.values(IncomingRequestCommand).includes(command as IncomingRequestCommand) &&
-      !stationInfo?.commandsSupport?.incomingCommands
-    ) {
+    const isRequestCommand = Object.values(RequestCommand).includes(command);
+    if (isRequestCommand && !chargingStation.stationInfo?.commandsSupport?.outgoingCommands) {
       return true;
+    } else if (isRequestCommand && chargingStation.stationInfo?.commandsSupport?.outgoingCommands) {
+      return chargingStation.stationInfo?.commandsSupport?.outgoingCommands[command] ?? false;
     }
+    logger.error(`${chargingStation.logPrefix()} Unknown outgoing OCPP command '${command}'`);
+    return false;
+  }
+
+  public static isIncomingRequestCommandSupported(
+    command: IncomingRequestCommand,
+    chargingStation: ChargingStation
+  ): boolean {
+    const isIncomingRequestCommand = Object.values(IncomingRequestCommand).includes(command);
     if (
-      Object.values(RequestCommand).includes(command as RequestCommand) &&
-      !stationInfo?.commandsSupport?.outgoingCommands
+      isIncomingRequestCommand &&
+      !chargingStation.stationInfo?.commandsSupport?.incomingCommands
     ) {
       return true;
+    } else if (
+      isIncomingRequestCommand &&
+      chargingStation.stationInfo?.commandsSupport?.incomingCommands
+    ) {
+      return chargingStation.stationInfo?.commandsSupport?.incomingCommands[command] ?? false;
     }
-    return (
-      ((stationInfo?.commandsSupport?.incomingCommands[command] as boolean) ?? false) ||
-      ((stationInfo?.commandsSupport?.outgoingCommands[command] as boolean) ?? false)
-    );
+    logger.error(`${chargingStation.logPrefix()} Unknown incoming OCPP command '${command}'`);
+    return false;
   }
 
   private static getRandomSerialNumberSuffix(params?: {