import { StandardParametersKey } from '../types/ocpp/Configuration';
import {
type BootNotificationRequest,
+ type DataTransferRequest,
type HeartbeatRequest,
type MeterValuesRequest,
RequestCommand,
} from '../types/ocpp/Requests';
import {
type BootNotificationResponse,
+ type DataTransferResponse,
+ DataTransferStatus,
type HeartbeatResponse,
type MeterValuesResponse,
RegistrationStatus,
type StopTransactionRequest,
type StopTransactionResponse,
} from '../types/ocpp/Transaction';
+import { ResponseStatus } from '../types/UIProtocol';
import {
BroadcastChannelProcedureName,
type BroadcastChannelRequest,
type BroadcastChannelResponsePayload,
type MessageEvent,
} from '../types/WorkerBroadcastChannel';
-import { ResponseStatus } from '../ui/web/src/types/UIProtocol';
import Constants from '../utils/Constants';
import logger from '../utils/Logger';
import Utils from '../utils/Utils';
| BootNotificationResponse
| StatusNotificationResponse
| HeartbeatResponse
- | MeterValuesResponse;
+ | MeterValuesResponse
+ | DataTransferResponse;
type CommandHandler = (
requestPayload?: BroadcastChannelRequestPayload
StopTransactionRequest,
StartTransactionResponse
>(this.chargingStation, RequestCommand.STOP_TRANSACTION, {
- meterStop:
- requestPayload.meterStop ??
- this.chargingStation.getEnergyActiveImportRegisterByTransactionId(
- requestPayload.transactionId,
- true
- ),
+ meterStop: this.chargingStation.getEnergyActiveImportRegisterByTransactionId(
+ requestPayload.transactionId,
+ true
+ ),
...requestPayload,
}),
],
});
},
],
+ [
+ BroadcastChannelProcedureName.DATA_TRANSFER,
+ async (requestPayload?: BroadcastChannelRequestPayload) =>
+ this.chargingStation.ocppRequestService.requestHandler<
+ DataTransferRequest,
+ DataTransferResponse
+ >(this.chargingStation, RequestCommand.DATA_TRANSFER, requestPayload),
+ ],
]);
this.chargingStation = chargingStation;
this.onmessage = this.requestHandler.bind(this) as (message: MessageEvent) => void;
return ResponseStatus.SUCCESS;
}
return ResponseStatus.FAILURE;
+ case BroadcastChannelProcedureName.DATA_TRANSFER:
+ if (commandResponse?.status === DataTransferStatus.ACCEPTED) {
+ return ResponseStatus.SUCCESS;
+ }
+ return ResponseStatus.FAILURE;
case BroadcastChannelProcedureName.STATUS_NOTIFICATION:
case BroadcastChannelProcedureName.METER_VALUES:
if (Utils.isEmptyObject(commandResponse) === true) {