UI protocol: add meter values command
[e-mobility-charging-stations-simulator.git] / src / charging-station / ui-server / ui-services / UIService001.ts
index 57c34c2239a6ee573d7462d5e57c96b1157f2cfc..ddbd54e9250ba9d4d4d3d27c0bdffddaa3692ab6 100644 (file)
@@ -9,111 +9,89 @@ import type { AbstractUIServer } from '../AbstractUIServer';
 import AbstractUIService from './AbstractUIService';
 
 export default class UIService001 extends AbstractUIService {
+  private static readonly ProcedureNameToBroadCastChannelProcedureNameMap: Omit<
+    Record<ProcedureName, BroadcastChannelProcedureName>,
+    'startSimulator' | 'stopSimulator' | 'listChargingStations'
+  > = {
+    [ProcedureName.START_CHARGING_STATION]: BroadcastChannelProcedureName.START_CHARGING_STATION,
+    [ProcedureName.STOP_CHARGING_STATION]: BroadcastChannelProcedureName.STOP_CHARGING_STATION,
+    [ProcedureName.CLOSE_CONNECTION]: BroadcastChannelProcedureName.CLOSE_CONNECTION,
+    [ProcedureName.OPEN_CONNECTION]: BroadcastChannelProcedureName.OPEN_CONNECTION,
+    [ProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR]:
+      BroadcastChannelProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR,
+    [ProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR]:
+      BroadcastChannelProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR,
+    [ProcedureName.START_TRANSACTION]: BroadcastChannelProcedureName.START_TRANSACTION,
+    [ProcedureName.STOP_TRANSACTION]: BroadcastChannelProcedureName.STOP_TRANSACTION,
+    [ProcedureName.AUTHORIZE]: BroadcastChannelProcedureName.AUTHORIZE,
+    [ProcedureName.STATUS_NOTIFICATION]: BroadcastChannelProcedureName.STATUS_NOTIFICATION,
+    [ProcedureName.HEARTBEAT]: BroadcastChannelProcedureName.HEARTBEAT,
+    [ProcedureName.METER_VALUES]: BroadcastChannelProcedureName.METER_VALUES,
+  };
+
   constructor(uiServer: AbstractUIServer) {
     super(uiServer, ProtocolVersion['0.0.1']);
     this.requestHandlers.set(
       ProcedureName.START_CHARGING_STATION,
-      this.handleStartChargingStation.bind(this) as ProtocolRequestHandler
+      this.handleProtocolRequest.bind(this) as ProtocolRequestHandler
     );
     this.requestHandlers.set(
       ProcedureName.STOP_CHARGING_STATION,
-      this.handleStopChargingStation.bind(this) as ProtocolRequestHandler
+      this.handleProtocolRequest.bind(this) as ProtocolRequestHandler
     );
     this.requestHandlers.set(
       ProcedureName.OPEN_CONNECTION,
-      this.handleOpenConnection.bind(this) as ProtocolRequestHandler
+      this.handleProtocolRequest.bind(this) as ProtocolRequestHandler
     );
     this.requestHandlers.set(
       ProcedureName.CLOSE_CONNECTION,
-      this.handleCloseConnection.bind(this) as ProtocolRequestHandler
+      this.handleProtocolRequest.bind(this) as ProtocolRequestHandler
     );
     this.requestHandlers.set(
-      ProcedureName.START_TRANSACTION,
-      this.handleStartTransaction.bind(this) as ProtocolRequestHandler
+      ProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR,
+      this.handleProtocolRequest.bind(this) as ProtocolRequestHandler
     );
     this.requestHandlers.set(
-      ProcedureName.STOP_TRANSACTION,
-      this.handleStopTransaction.bind(this) as ProtocolRequestHandler
+      ProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR,
+      this.handleProtocolRequest.bind(this) as ProtocolRequestHandler
     );
     this.requestHandlers.set(
-      ProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR,
-      this.handleStartAutomaticTransactionGenerator.bind(this) as ProtocolRequestHandler
+      ProcedureName.START_TRANSACTION,
+      this.handleProtocolRequest.bind(this) as ProtocolRequestHandler
     );
     this.requestHandlers.set(
-      ProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR,
-      this.handleStopAutomaticTransactionGenerator.bind(this) as ProtocolRequestHandler
+      ProcedureName.STOP_TRANSACTION,
+      this.handleProtocolRequest.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.AUTHORIZE,
+      this.handleProtocolRequest.bind(this) as ProtocolRequestHandler
     );
     this.requestHandlers.set(
       ProcedureName.STATUS_NOTIFICATION,
-      this.handleStatusNotification.bind(this) as ProtocolRequestHandler
+      this.handleProtocolRequest.bind(this) as ProtocolRequestHandler
     );
     this.requestHandlers.set(
       ProcedureName.HEARTBEAT,
-      this.handleHeartbeat.bind(this) as ProtocolRequestHandler
+      this.handleProtocolRequest.bind(this) as ProtocolRequestHandler
     );
-  }
-
-  private handleStartChargingStation(uuid: string, payload: RequestPayload): void {
-    this.sendBroadcastChannelRequest(
-      uuid,
-      BroadcastChannelProcedureName.START_CHARGING_STATION,
-      payload
-    );
-  }
-
-  private handleStopChargingStation(uuid: string, payload: RequestPayload): void {
-    this.sendBroadcastChannelRequest(
-      uuid,
-      BroadcastChannelProcedureName.STOP_CHARGING_STATION,
-      payload
-    );
-  }
-
-  private handleOpenConnection(uuid: string, payload: RequestPayload): void {
-    this.sendBroadcastChannelRequest(uuid, BroadcastChannelProcedureName.OPEN_CONNECTION, payload);
-  }
-
-  private handleCloseConnection(uuid: string, payload: RequestPayload): void {
-    this.sendBroadcastChannelRequest(uuid, BroadcastChannelProcedureName.CLOSE_CONNECTION, payload);
-  }
-
-  private handleStartTransaction(uuid: string, payload: RequestPayload): void {
-    this.sendBroadcastChannelRequest(
-      uuid,
-      BroadcastChannelProcedureName.START_TRANSACTION,
-      payload
-    );
-  }
-
-  private handleStopTransaction(uuid: string, payload: RequestPayload): void {
-    this.sendBroadcastChannelRequest(uuid, BroadcastChannelProcedureName.STOP_TRANSACTION, payload);
-  }
-
-  private handleStartAutomaticTransactionGenerator(uuid: string, payload: RequestPayload): void {
-    this.sendBroadcastChannelRequest(
-      uuid,
-      BroadcastChannelProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR,
-      payload
-    );
-  }
-
-  private handleStopAutomaticTransactionGenerator(uuid: string, payload: RequestPayload): void {
-    this.sendBroadcastChannelRequest(
-      uuid,
-      BroadcastChannelProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR,
-      payload
+    this.requestHandlers.set(
+      ProcedureName.METER_VALUES,
+      this.handleProtocolRequest.bind(this) as ProtocolRequestHandler
     );
   }
 
-  private handleStatusNotification(uuid: string, payload: RequestPayload): void {
+  private handleProtocolRequest(
+    uuid: string,
+    procedureName: ProcedureName,
+    payload: RequestPayload
+  ): void {
     this.sendBroadcastChannelRequest(
       uuid,
-      BroadcastChannelProcedureName.STATUS_NOTIFICATION,
+      UIService001.ProcedureNameToBroadCastChannelProcedureNameMap[
+        procedureName
+      ] as BroadcastChannelProcedureName,
       payload
     );
   }
-
-  private handleHeartbeat(uuid: string, payload: RequestPayload): void {
-    this.sendBroadcastChannelRequest(uuid, BroadcastChannelProcedureName.HEARTBEAT, payload);
-  }
 }