switch (requestPayload.eventType) {
case OCPP20TransactionEventEnumType.Ended:
- // Cleanup (stopTxUpdatedInterval, resetConnectorStatus, StatusNotification) is owned by
- // the caller that sends TransactionEvent(Ended) — see requestStopTransaction in OCPP20ServiceUtils.
+ // Cleanup owned by caller (see requestStopTransaction/requestDeauthorizeTransaction)
if (connectorId != null) {
logger.info(
`${chargingStation.logPrefix()} ${moduleName}.handleResponseTransactionEvent: Transaction ${requestPayload.transactionInfo.transactionId} ENDED on connector ${connectorId.toString()}`
return { bytesLimit, itemsLimit }
}
- // E05.FR.09/FR.10 + E06.FR.04: Deauthorization flow when CSMS rejects idToken.
- // Assumes StopTxOnInvalidId=true (simulator default). Sends Updated(Deauthorized, SuspendedEVSE)
- // then Ended(Deauthorized, DeAuthorized) then cleanup.
+ // E05.FR.09/FR.10 + E06.FR.04: Updated(Deauthorized) → Ended(DeAuthorized). Assumes StopTxOnInvalidId=true.
public static async requestDeauthorizeTransaction (
chargingStation: ChargingStation,
connectorId: number,
*/
transactionIdTokenSent?: boolean
/**
- * OCPP 2.0.1: Transaction is pending CSMS acknowledgment via TransactionEvent response.
- * Set by RequestStartTransaction handler to block duplicate starts before the response
- * handler finalizes the transaction state with transactionStarted = true.
+ * OCPP 2.0.1 E02 compliance: Transaction pending CSMS acknowledgment.
+ * Blocks duplicate RequestStartTransaction until response handler sets transactionStarted.
*/
transactionPending?: boolean
transactionRemoteStarted?: boolean