Skip to content

Commit

Permalink
Merge pull request #106 from e-flux-platform/feat/support-signedupdat…
Browse files Browse the repository at this point in the history
…efirmware-ocpp16

OCPP1.6: Handle `SignedUpdateFirmware`
  • Loading branch information
AmirSoleimani authored Oct 10, 2024
2 parents b3cf992 + 38d5f9d commit c4312dd
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/lib/ChargeStation/configurations/default-ocpp-16.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import handleAuthorizeCallResultReceived from 'lib/ChargeStation/eventHandlers/o
import handleDataTransfer from 'lib/ChargeStation/eventHandlers/ocpp-16/handle-data-transfer';
import handleGetInstalledCertificateIds from 'lib/ChargeStation/eventHandlers/ocpp-16/handle-get-installed-certificate-ids';
import handleUpdateFirmwareReceived from '../eventHandlers/ocpp-16/handle-update-firmware-received';
import handleSignedUpdateFirmwareReceived from '../eventHandlers/ocpp-16/handle-signed-update-firmware-received';
import handleTriggerMessageReceived from '../eventHandlers/ocpp-16/handle-trigger-message-received';
import sendAuthorizeOrStartTransaction from 'lib/ChargeStation/eventHandlers/ocpp-16/send-authorize-or-start-transaction';

Expand Down Expand Up @@ -75,6 +76,7 @@ export default {
[e16.RemoteStopTransactionReceived]: [handleRemoteStopTransaction],
[e16.GetConfigurationReceived]: [handleGetConfiguration],
[e16.ChangeConfigurationReceived]: [handleChangeConfiguration],
[e16.SignedUpdateFirmwareReceived]: [handleSignedUpdateFirmwareReceived],
[e.ChargingTick]: [sendMeterValues],
[e.ChargingLimitReached]: [sendChargingLimitReached],
[e.ResetReceived]: [handleReset],
Expand Down
1 change: 1 addition & 0 deletions src/lib/ChargeStation/eventHandlers/event-types.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ export const EventTypes16 = {
RemoteStopTransactionReceived: 'remoteStopTransactionReceived',
StartTransactionCallResultReceived: 'startTransactionCallResultReceived',
StopTransactionCallResultReceived: 'stopTransactionCallResultReceived',
SignedUpdateFirmwareReceived: 'signedUpdateFirmwareReceived',
};

// Specific to OCPP 2.0.1
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import { ChargeStationEventHandler } from 'lib/ChargeStation/eventHandlers';
import { sleep } from 'utils/csv';

import { SignedUpdateFirmwareRequest } from 'schemas/ocpp/1.6/SignedUpdateFirmware';
import { SignedUpdateFirmwareResponse } from 'schemas/ocpp/1.6/SignedUpdateFirmwareResponse';

const handleSignedUpdateFirmwareReceived: ChargeStationEventHandler<
SignedUpdateFirmwareRequest,
SignedUpdateFirmwareResponse
> = async ({ chargepoint, callMessageId }) => {
const sleepTime = 1000 * 2; // 2 seconds

const response: SignedUpdateFirmwareResponse = { status: 'Accepted' };
chargepoint.writeCallResult(callMessageId, response);

await sleep(sleepTime);

await chargepoint.writeCall('SignedFirmwareStatusNotification', {
status: 'Downloading',
});

await sleep(sleepTime);

await chargepoint.writeCall('SignedFirmwareStatusNotification', {
status: 'Downloaded',
});

await sleep(sleepTime);

await chargepoint.writeCall('SignedFirmwareStatusNotification', {
status: 'SignatureVerified',
});

await sleep(sleepTime);

await chargepoint.writeCall('SignedFirmwareStatusNotification', {
status: 'Installing',
});

await sleep(sleepTime);

chargepoint.firmwareVersion = `${
chargepoint.firmwareVersion
}+${new Date().getTime()}`;

await chargepoint.writeCall('SignedFirmwareStatusNotification', {
status: 'Installed',
});
};

export default handleSignedUpdateFirmwareReceived;
2 changes: 1 addition & 1 deletion src/lib/ChargeStation/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ export default class ChargeStation {

this.connection.onConnected = () => {
this.connected = true;
this.log('connnected', '< Connected!');
this.log('connected', '< Connected!');
this.emitter.emitEvent(EventTypes.StationConnected);
};
this.connection.onError = (error: Event) => {
Expand Down

0 comments on commit c4312dd

Please sign in to comment.