import type { JSONSchemaType } from 'ajv';
+import { OCPP20Constants } from './OCPP20Constants';
+import { OCPP20ServiceUtils } from './OCPP20ServiceUtils';
import type { ChargingStation } from '../../../charging-station';
import { OCPPError } from '../../../exception';
import {
type RequestParams,
} from '../../../types';
import { Utils } from '../../../utils';
-import {
- OCPP20ServiceUtils,
- OCPPConstants,
- OCPPRequestService,
- type OCPPResponseService,
-} from '../internal';
+import { OCPPRequestService } from '../OCPPRequestService';
+import type { OCPPResponseService } from '../OCPPResponseService';
const moduleName = 'OCPP20RequestService';
[
OCPP20RequestCommand.BOOT_NOTIFICATION,
OCPP20ServiceUtils.parseJsonSchemaFile<OCPP20BootNotificationRequest>(
- '../../../assets/json-schemas/ocpp/2.0/BootNotificationRequest.json',
+ 'assets/json-schemas/ocpp/2.0/BootNotificationRequest.json',
moduleName,
'constructor'
),
[
OCPP20RequestCommand.HEARTBEAT,
OCPP20ServiceUtils.parseJsonSchemaFile<OCPP20HeartbeatRequest>(
- '../../../assets/json-schemas/ocpp/2.0/HeartbeatRequest.json',
+ 'assets/json-schemas/ocpp/2.0/HeartbeatRequest.json',
moduleName,
'constructor'
),
[
OCPP20RequestCommand.STATUS_NOTIFICATION,
OCPP20ServiceUtils.parseJsonSchemaFile<OCPP20StatusNotificationRequest>(
- '../../../assets/json-schemas/ocpp/2.0/StatusNotificationRequest.json',
+ 'assets/json-schemas/ocpp/2.0/StatusNotificationRequest.json',
moduleName,
'constructor'
),
],
]);
- this.buildRequestPayload.bind(this);
+ this.buildRequestPayload = this.buildRequestPayload.bind(this) as <Request extends JsonType>(
+ chargingStation: ChargingStation,
+ commandName: OCPP20RequestCommand,
+ commandParams?: JsonType
+ ) => Request;
}
public async requestHandler<RequestType extends JsonType, ResponseType extends JsonType>(
commandParams?: JsonType,
params?: RequestParams
): Promise<ResponseType> {
+ // FIXME?: add sanity checks on charging station availability, connector availability, connector status, etc.
if (OCPP20ServiceUtils.isRequestCommandSupported(chargingStation, commandName) === true) {
return (await this.sendMessage(
chargingStation,
case OCPP20RequestCommand.BOOT_NOTIFICATION:
return commandParams as unknown as Request;
case OCPP20RequestCommand.HEARTBEAT:
- return OCPPConstants.OCPP_RESPONSE_EMPTY as unknown as Request;
+ return OCPP20Constants.OCPP_RESPONSE_EMPTY as unknown as Request;
case OCPP20RequestCommand.STATUS_NOTIFICATION:
return {
timestamp: new Date(),