UI protocol: add OCPP heartbeat command support
[e-mobility-charging-stations-simulator.git] / src / charging-station / ui-server / ui-services / UIService001.ts
index 11925ee48a26789997e54818d5b9f03e27f14c21..57c34c2239a6ee573d7462d5e57c96b1157f2cfc 100644 (file)
@@ -4,24 +4,13 @@ import {
   ProtocolVersion,
   RequestPayload,
 } from '../../../types/UIProtocol';
-import {
-  BroadcastChannelProcedureName,
-  BroadcastChannelRequestPayload,
-} from '../../../types/WorkerBroadcastChannel';
+import { BroadcastChannelProcedureName } from '../../../types/WorkerBroadcastChannel';
 import type { AbstractUIServer } from '../AbstractUIServer';
 import AbstractUIService from './AbstractUIService';
 
 export default class UIService001 extends AbstractUIService {
   constructor(uiServer: AbstractUIServer) {
     super(uiServer, ProtocolVersion['0.0.1']);
-    this.requestHandlers.set(
-      ProcedureName.START_TRANSACTION,
-      this.handleStartTransaction.bind(this) as ProtocolRequestHandler
-    );
-    this.requestHandlers.set(
-      ProcedureName.STOP_TRANSACTION,
-      this.handleStopTransaction.bind(this) as ProtocolRequestHandler
-    );
     this.requestHandlers.set(
       ProcedureName.START_CHARGING_STATION,
       this.handleStartChargingStation.bind(this) as ProtocolRequestHandler
@@ -38,53 +27,93 @@ export default class UIService001 extends AbstractUIService {
       ProcedureName.CLOSE_CONNECTION,
       this.handleCloseConnection.bind(this) as ProtocolRequestHandler
     );
+    this.requestHandlers.set(
+      ProcedureName.START_TRANSACTION,
+      this.handleStartTransaction.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.STOP_TRANSACTION,
+      this.handleStopTransaction.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR,
+      this.handleStartAutomaticTransactionGenerator.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR,
+      this.handleStopAutomaticTransactionGenerator.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.STATUS_NOTIFICATION,
+      this.handleStatusNotification.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.HEARTBEAT,
+      this.handleHeartbeat.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.uiServiceWorkerBroadcastChannel.sendRequest([
+    this.sendBroadcastChannelRequest(
       uuid,
       BroadcastChannelProcedureName.START_TRANSACTION,
-      payload as BroadcastChannelRequestPayload,
-    ]);
+      payload
+    );
   }
 
   private handleStopTransaction(uuid: string, payload: RequestPayload): void {
-    this.uiServiceWorkerBroadcastChannel.sendRequest([
-      uuid,
-      BroadcastChannelProcedureName.STOP_TRANSACTION,
-      payload as BroadcastChannelRequestPayload,
-    ]);
+    this.sendBroadcastChannelRequest(uuid, BroadcastChannelProcedureName.STOP_TRANSACTION, payload);
   }
 
-  private handleStartChargingStation(uuid: string, payload: RequestPayload): void {
-    this.uiServiceWorkerBroadcastChannel.sendRequest([
+  private handleStartAutomaticTransactionGenerator(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(
       uuid,
-      BroadcastChannelProcedureName.START_CHARGING_STATION,
-      payload as BroadcastChannelRequestPayload,
-    ]);
+      BroadcastChannelProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR,
+      payload
+    );
   }
 
-  private handleStopChargingStation(uuid: string, payload: RequestPayload): void {
-    this.uiServiceWorkerBroadcastChannel.sendRequest([
+  private handleStopAutomaticTransactionGenerator(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(
       uuid,
-      BroadcastChannelProcedureName.STOP_CHARGING_STATION,
-      payload as BroadcastChannelRequestPayload,
-    ]);
+      BroadcastChannelProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR,
+      payload
+    );
   }
 
-  private handleOpenConnection(uuid: string, payload: RequestPayload): void {
-    this.uiServiceWorkerBroadcastChannel.sendRequest([
+  private handleStatusNotification(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(
       uuid,
-      BroadcastChannelProcedureName.OPEN_CONNECTION,
-      payload as BroadcastChannelRequestPayload,
-    ]);
+      BroadcastChannelProcedureName.STATUS_NOTIFICATION,
+      payload
+    );
   }
 
-  private handleCloseConnection(uuid: string, payload: RequestPayload): void {
-    this.uiServiceWorkerBroadcastChannel.sendRequest([
-      uuid,
-      BroadcastChannelProcedureName.CLOSE_CONNECTION,
-      payload as BroadcastChannelRequestPayload,
-    ]);
+  private handleHeartbeat(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(uuid, BroadcastChannelProcedureName.HEARTBEAT, payload);
   }
 }