From: Jérôme Benoit Date: Tue, 11 Nov 2025 13:15:26 +0000 (+0100) Subject: refactor: constify some emums X-Git-Tag: v2~51^2~2 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=af6e8b959bad6ad7b73c07a3900008f372cb489d;p=e-mobility-charging-stations-simulator.git refactor: constify some emums Signed-off-by: Jérôme Benoit --- diff --git a/src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts b/src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts index 1f9f1a22..c56f0870 100644 --- a/src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts +++ b/src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts @@ -723,7 +723,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { moduleName?: string, methodName?: string ): JSONSchemaType { - return OCPP16ServiceUtils.parseJsonSchemaFile( + return super.parseJsonSchemaFile( relativePath, OCPPVersion.VERSION_16, moduleName, diff --git a/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts b/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts index 4f7412b5..316a47bd 100644 --- a/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts +++ b/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts @@ -1376,7 +1376,6 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService { } } - // Helper methods for RequestStartTransaction private isIdTokenAuthorized ( chargingStation: ChargingStation, idToken: OCPP20IdTokenType diff --git a/src/charging-station/ocpp/2.0/OCPP20RequestService.ts b/src/charging-station/ocpp/2.0/OCPP20RequestService.ts index 6201fdf1..3ccddc56 100644 --- a/src/charging-station/ocpp/2.0/OCPP20RequestService.ts +++ b/src/charging-station/ocpp/2.0/OCPP20RequestService.ts @@ -161,9 +161,14 @@ export class OCPP20RequestService extends OCPPRequestService { timestamp: new Date(), ...commandParams, } as unknown as Request + case OCPP20RequestCommand.TRANSACTION_EVENT: + return { + timestamp: new Date(), + ...commandParams, + } as unknown as Request default: { // OCPPError usage here is debatable: it's an error in the OCPP stack but not targeted to sendError(). - const errorMsg = `Unsupported OCPP command ${commandName} for payload building` + const errorMsg = `Unsupported OCPP command ${commandName as string} for payload building` logger.error( `${chargingStation.logPrefix()} ${moduleName}.buildRequestPayload: ${errorMsg}` ) diff --git a/src/charging-station/ocpp/2.0/OCPP20ServiceUtils.ts b/src/charging-station/ocpp/2.0/OCPP20ServiceUtils.ts index d2b8eb7b..36cd9b24 100644 --- a/src/charging-station/ocpp/2.0/OCPP20ServiceUtils.ts +++ b/src/charging-station/ocpp/2.0/OCPP20ServiceUtils.ts @@ -2,8 +2,7 @@ import type { JSONSchemaType } from 'ajv' -import type { ChargingStation } from '../../../charging-station/index.js' - +import { type ChargingStation, resetConnectorStatus } from '../../../charging-station/index.js' import { ConnectorStatusEnum, type GenericResponse, @@ -277,7 +276,7 @@ export class OCPP20ServiceUtils extends OCPPServiceUtils { moduleName?: string, methodName?: string ): JSONSchemaType { - return OCPP20ServiceUtils.parseJsonSchemaFile( + return super.parseJsonSchemaFile( relativePath, OCPPVersion.VERSION_201, moduleName, @@ -318,12 +317,14 @@ export class OCPP20ServiceUtils extends OCPPServiceUtils { return OCPP20Constants.OCPP_RESPONSE_REJECTED } + connectorStatus.transactionSeqNo = (connectorStatus.transactionSeqNo ?? 0) + 1 + const transactionEventRequest: OCPP20TransactionEventRequest = { eventType: OCPP20TransactionEventEnumType.Ended, evse: { id: evseId, }, - seqNo: 0, // This should be managed by the transaction sequence + seqNo: connectorStatus.transactionSeqNo, timestamp: new Date(), transactionInfo: { stoppedReason: OCPP20ReasonEnumType.Remote, @@ -337,6 +338,7 @@ export class OCPP20ServiceUtils extends OCPPServiceUtils { OCPP20TransactionEventRequest >(chargingStation, OCPP20RequestCommand.TRANSACTION_EVENT, transactionEventRequest) + resetConnectorStatus(connectorStatus) await sendAndSetConnectorStatus(chargingStation, connectorId, ConnectorStatusEnum.Available) return OCPP20Constants.OCPP_RESPONSE_ACCEPTED diff --git a/src/types/ConnectorStatus.ts b/src/types/ConnectorStatus.ts index b3ebfe15..aa637eff 100644 --- a/src/types/ConnectorStatus.ts +++ b/src/types/ConnectorStatus.ts @@ -24,6 +24,7 @@ export interface ConnectorStatus { transactionId?: number | string transactionIdTag?: string transactionRemoteStarted?: boolean + transactionSeqNo?: number transactionSetInterval?: NodeJS.Timeout transactionStart?: Date transactionStarted?: boolean diff --git a/src/types/ocpp/1.6/Requests.ts b/src/types/ocpp/1.6/Requests.ts index e4283183..b7a68402 100644 --- a/src/types/ocpp/1.6/Requests.ts +++ b/src/types/ocpp/1.6/Requests.ts @@ -10,12 +10,12 @@ import type { import type { OCPP16StandardParametersKey, OCPP16VendorParametersKey } from './Configuration.js' import type { OCPP16DiagnosticsStatus } from './DiagnosticsStatus.js' -export enum OCPP16AvailabilityType { +export const enum OCPP16AvailabilityType { Inoperative = 'Inoperative', Operative = 'Operative', } -export enum OCPP16FirmwareStatus { +export const enum OCPP16FirmwareStatus { Downloaded = 'Downloaded', DownloadFailed = 'DownloadFailed', Downloading = 'Downloading', @@ -25,7 +25,7 @@ export enum OCPP16FirmwareStatus { Installing = 'Installing', } -export enum OCPP16IncomingRequestCommand { +export const enum OCPP16IncomingRequestCommand { CANCEL_RESERVATION = 'CancelReservation', CHANGE_AVAILABILITY = 'ChangeAvailability', CHANGE_CONFIGURATION = 'ChangeConfiguration', @@ -54,7 +54,7 @@ export enum OCPP16MessageTrigger { StatusNotification = 'StatusNotification', } -export enum OCPP16RequestCommand { +export const enum OCPP16RequestCommand { AUTHORIZE = 'Authorize', BOOT_NOTIFICATION = 'BootNotification', DATA_TRANSFER = 'DataTransfer', @@ -67,7 +67,7 @@ export enum OCPP16RequestCommand { STOP_TRANSACTION = 'StopTransaction', } -enum ResetType { +export const enum ResetType { HARD = 'Hard', SOFT = 'Soft', } diff --git a/src/types/ocpp/1.6/Responses.ts b/src/types/ocpp/1.6/Responses.ts index 6dc03580..d0fddace 100644 --- a/src/types/ocpp/1.6/Responses.ts +++ b/src/types/ocpp/1.6/Responses.ts @@ -4,13 +4,13 @@ import type { GenericStatus, RegistrationStatusEnumType } from '../Common.js' import type { OCPPConfigurationKey } from '../Configuration.js' import type { OCPP16ChargingSchedule } from './ChargingProfile.js' -export enum OCPP16AvailabilityStatus { +export const enum OCPP16AvailabilityStatus { ACCEPTED = 'Accepted', REJECTED = 'Rejected', SCHEDULED = 'Scheduled', } -export enum OCPP16ChargingProfileStatus { +export const enum OCPP16ChargingProfileStatus { ACCEPTED = 'Accepted', NOT_SUPPORTED = 'NotSupported', REJECTED = 'Rejected', @@ -21,14 +21,14 @@ export enum OCPP16ClearChargingProfileStatus { UNKNOWN = 'Unknown', } -export enum OCPP16ConfigurationStatus { +export const enum OCPP16ConfigurationStatus { ACCEPTED = 'Accepted', NOT_SUPPORTED = 'NotSupported', REBOOT_REQUIRED = 'RebootRequired', REJECTED = 'Rejected', } -export enum OCPP16DataTransferStatus { +export const enum OCPP16DataTransferStatus { ACCEPTED = 'Accepted', REJECTED = 'Rejected', UNKNOWN_MESSAGE_ID = 'UnknownMessageId', @@ -50,7 +50,7 @@ export enum OCPP16TriggerMessageStatus { REJECTED = 'Rejected', } -export enum OCPP16UnlockStatus { +export const enum OCPP16UnlockStatus { NOT_SUPPORTED = 'NotSupported', UNLOCK_FAILED = 'UnlockFailed', UNLOCKED = 'Unlocked', diff --git a/src/types/ocpp/2.0/Requests.ts b/src/types/ocpp/2.0/Requests.ts index 1b7d3521..cf7be317 100644 --- a/src/types/ocpp/2.0/Requests.ts +++ b/src/types/ocpp/2.0/Requests.ts @@ -19,7 +19,7 @@ import type { ReportDataType, } from './Variables.js' -export enum OCPP20IncomingRequestCommand { +export const enum OCPP20IncomingRequestCommand { CLEAR_CACHE = 'ClearCache', GET_BASE_REPORT = 'GetBaseReport', GET_VARIABLES = 'GetVariables', @@ -29,7 +29,7 @@ export enum OCPP20IncomingRequestCommand { SET_VARIABLES = 'SetVariables', } -export enum OCPP20RequestCommand { +export const enum OCPP20RequestCommand { BOOT_NOTIFICATION = 'BootNotification', HEARTBEAT = 'Heartbeat', NOTIFY_REPORT = 'NotifyReport', diff --git a/src/types/ocpp/Common.ts b/src/types/ocpp/Common.ts index 7190d9a4..4800dcd4 100644 --- a/src/types/ocpp/Common.ts +++ b/src/types/ocpp/Common.ts @@ -1,6 +1,6 @@ import type { JsonObject } from '../JsonType.js' -export enum GenericStatus { +export const enum GenericStatus { Accepted = 'Accepted', Rejected = 'Rejected', } diff --git a/src/types/ocpp/ErrorType.ts b/src/types/ocpp/ErrorType.ts index 40a6e735..d6367e16 100644 --- a/src/types/ocpp/ErrorType.ts +++ b/src/types/ocpp/ErrorType.ts @@ -1,4 +1,4 @@ -export enum ErrorType { +export const enum ErrorType { // Payload for Action is syntactically incorrect or not conform the PDU structure for Action FORMAT_VIOLATION = 'FormatViolation', /** @deprecated use FORMAT_VIOLATION instead */ diff --git a/src/types/ocpp/MessageType.ts b/src/types/ocpp/MessageType.ts index d8573eee..2601ffb6 100644 --- a/src/types/ocpp/MessageType.ts +++ b/src/types/ocpp/MessageType.ts @@ -1,5 +1,5 @@ /* eslint-disable perfectionist/sort-enums */ -export enum MessageType { +export const enum MessageType { CALL_MESSAGE = 2, // Caller to Callee CALL_RESULT_MESSAGE = 3, // Callee to Caller CALL_ERROR_MESSAGE = 4, // Callee to Caller diff --git a/src/types/ocpp/OCPPVersion.ts b/src/types/ocpp/OCPPVersion.ts index a19fc280..2bc8210c 100644 --- a/src/types/ocpp/OCPPVersion.ts +++ b/src/types/ocpp/OCPPVersion.ts @@ -1,4 +1,4 @@ -export enum OCPPVersion { +export const enum OCPPVersion { VERSION_16 = '1.6', VERSION_20 = '2.0', VERSION_201 = '2.0.1',