import fs from 'node:fs';
+import path from 'node:path';
+import { fileURLToPath } from 'node:url';
import type { DefinedError, ErrorObject, JSONSchemaType } from 'ajv';
-import { OCPP16Constants, OCPP20Constants } from './internal';
+import { OCPP16Constants } from './1.6/OCPP16Constants';
+import { OCPP20Constants } from './2.0/OCPP20Constants';
+import { OCPPConstants } from './OCPPConstants';
import { type ChargingStation, ChargingStationConfigurationUtils } from '../../charging-station';
import { BaseError } from '../../exception';
import {
type StatusNotificationRequest,
type StatusNotificationResponse,
} from '../../types';
-import { Constants, FileUtils, Utils, logger } from '../../utils';
+import { Constants, ErrorUtils, Utils, logger } from '../../utils';
export class OCPPServiceUtils {
protected constructor() {
}
protected static parseJsonSchemaFile<T extends JsonType>(
- filePath: string,
+ relativePath: string,
ocppVersion: OCPPVersion,
moduleName?: string,
methodName?: string
): JSONSchemaType<T> {
+ const filePath = path.join(path.dirname(fileURLToPath(import.meta.url)), relativePath);
try {
return JSON.parse(fs.readFileSync(filePath, 'utf8')) as JSONSchemaType<T>;
} catch (error) {
- FileUtils.handleFileException(
+ ErrorUtils.handleFileException(
filePath,
FileType.JsonSchema,
error as NodeJS.ErrnoException,
phase?: MeterValuePhase
): SampledValueTemplate | undefined {
const onPhaseStr = phase ? `on phase ${phase} ` : '';
- if (Constants.SUPPORTED_MEASURANDS.includes(measurand) === false) {
+ if (OCPPConstants.OCPP_MEASURANDS_SUPPORTED.includes(measurand) === false) {
logger.warn(
`${chargingStation.logPrefix()} Trying to get unsupported MeterValues measurand '${measurand}' ${onPhaseStr}in template on connector id ${connectorId}`
);
index++
) {
if (
- Constants.SUPPORTED_MEASURANDS.includes(
+ OCPPConstants.OCPP_MEASURANDS_SUPPORTED.includes(
sampledValueTemplates[index]?.measurand ??
MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
) === false