Add BootNotification and ClearCache OCPP 2.0.1 commands support
[e-mobility-charging-stations-simulator.git] / src / types / ocpp / Requests.ts
index bf3bd76dcaabf2d7b99b2c7cc556caa5825373e7..09e2b0cc5a7df446239c90839607c57f64262aab 100644 (file)
@@ -1,39 +1,85 @@
-import { OCPP16AvailabilityType, OCPP16BootNotificationRequest, OCPP16IncomingRequestCommand, OCPP16RequestCommand } from './1.6/Requests';
-
-import { MessageType } from './MessageType';
+import type ChargingStation from '../../charging-station/ChargingStation';
+import type OCPPError from '../../exception/OCPPError';
+import type { JsonType } from '../JsonType';
 import { OCPP16DiagnosticsStatus } from './1.6/DiagnosticsStatus';
-import OCPPError from '../../charging-station/ocpp/OCPPError';
-
-export type IncomingRequestHandler = (commandPayload: Record<string, unknown>) => Record<string, unknown> | Promise<Record<string, unknown>>;
+import type { OCPP16MeterValuesRequest } from './1.6/MeterValues';
+import {
+  OCPP16AvailabilityType,
+  type OCPP16BootNotificationRequest,
+  type OCPP16DataTransferRequest,
+  type OCPP16HeartbeatRequest,
+  OCPP16IncomingRequestCommand,
+  OCPP16MessageTrigger,
+  OCPP16RequestCommand,
+  type OCPP16StatusNotificationRequest,
+} from './1.6/Requests';
+import {
+  type OCPP20BootNotificationRequest,
+  OCPP20IncomingRequestCommand,
+  OCPP20RequestCommand,
+} from './2.0/Requests';
+import type { MessageType } from './MessageType';
 
-export type BootNotificationRequest = OCPP16BootNotificationRequest;
+export const RequestCommand = {
+  ...OCPP16RequestCommand,
+  ...OCPP20RequestCommand,
+} as const;
+export type RequestCommand = OCPP16RequestCommand | OCPP20RequestCommand;
 
-export type AvailabilityType = OCPP16AvailabilityType;
+export type OutgoingRequest = [MessageType.CALL_MESSAGE, string, RequestCommand, JsonType];
 
-export const AvailabilityType = {
-  ...OCPP16AvailabilityType
+export type RequestParams = {
+  skipBufferingOnError?: boolean;
+  triggerMessage?: boolean;
 };
 
-export type RequestCommand = OCPP16RequestCommand;
+export const IncomingRequestCommand = {
+  ...OCPP16IncomingRequestCommand,
+  ...OCPP20IncomingRequestCommand,
+} as const;
+export type IncomingRequestCommand = OCPP16IncomingRequestCommand | OCPP20IncomingRequestCommand;
 
-export const RequestCommand = {
-  ...OCPP16RequestCommand
-};
+export type IncomingRequest = [MessageType.CALL_MESSAGE, string, IncomingRequestCommand, JsonType];
 
-export type IncomingRequestCommand = OCPP16IncomingRequestCommand;
+export type ResponseCallback = (payload: JsonType, requestPayload: JsonType) => void;
 
-export const IncomingRequestCommand = {
-  ...OCPP16IncomingRequestCommand
-};
+export type ErrorCallback = (error: OCPPError, requestStatistic?: boolean) => void;
 
-export type DiagnosticsStatus = OCPP16DiagnosticsStatus;
+export type CachedRequest = [
+  ResponseCallback,
+  ErrorCallback,
+  RequestCommand | IncomingRequestCommand,
+  JsonType
+];
 
-export const DiagnosticsStatus = {
-  ...OCPP16DiagnosticsStatus
-};
+export const MessageTrigger = {
+  ...OCPP16MessageTrigger,
+} as const;
+export type MessageTrigger = OCPP16MessageTrigger;
+
+export type BootNotificationRequest = OCPP16BootNotificationRequest | OCPP20BootNotificationRequest;
+
+export type HeartbeatRequest = OCPP16HeartbeatRequest;
+
+export type StatusNotificationRequest = OCPP16StatusNotificationRequest;
+
+export type MeterValuesRequest = OCPP16MeterValuesRequest;
+
+export type DataTransferRequest = OCPP16DataTransferRequest;
 
-export type Request = [MessageType, string, RequestCommand, Record<string, unknown>, Record<string, unknown>];
+export type IncomingRequestHandler = (
+  chargingStation: ChargingStation,
+  commandPayload: JsonType
+) => JsonType | Promise<JsonType>;
 
-export type IncomingRequest = [MessageType, string, IncomingRequestCommand, Record<string, unknown>, Record<string, unknown>];
+export const AvailabilityType = {
+  ...OCPP16AvailabilityType,
+} as const;
+export type AvailabilityType = OCPP16AvailabilityType;
+
+export const DiagnosticsStatus = {
+  ...OCPP16DiagnosticsStatus,
+} as const;
+export type DiagnosticsStatus = OCPP16DiagnosticsStatus;
 
-export type CachedRequest = [(payload: Record<string, unknown> | string, requestPayload: Record<string, unknown>) => void, (error: OCPPError, requestStatistic?: boolean) => void, RequestCommand | IncomingRequestCommand, Record<string, unknown>];
+export type ResponseType = JsonType | OCPPError;