'supervisionUrl',
'supervisionUrls'
);
- const firmwareVersionRegExp = stationTemplate.firmwareVersionPattern
- ? new RegExp(stationTemplate.firmwareVersionPattern)
- : Constants.SEMVER_REGEXP;
- if (
- stationTemplate.firmwareVersion &&
- firmwareVersionRegExp.test(stationTemplate.firmwareVersion) === false
- ) {
- logger.warn(
- `${this.logPrefix()} Firmware version '${
- stationTemplate.firmwareVersion
- }' in template file ${
- this.templateFile
- } does not match regular expression '${firmwareVersionRegExp.toString()}'`
- );
- }
const stationInfo: ChargingStationInfo =
ChargingStationUtils.stationTemplateToStationInfo(stationTemplate);
stationInfo.hashId = ChargingStationUtils.getHashId(this.index, stationTemplate);
? stationTemplate.power * 1000
: stationTemplate.power;
}
+ stationInfo.firmwareVersionPattern =
+ stationTemplate.firmwareVersionPattern ?? Constants.SEMVER_PATTERN;
+ if (
+ stationInfo.firmwareVersion &&
+ new RegExp(stationInfo.firmwareVersionPattern).test(stationInfo.firmwareVersion) === false
+ ) {
+ logger.warn(
+ `${this.logPrefix()} Firmware version '${stationInfo.firmwareVersion}' in template file ${
+ this.templateFile
+ } does not match firmware version pattern '${stationInfo.firmwareVersionPattern}'`
+ );
+ }
stationInfo.resetTime = stationTemplate.resetTime
? stationTemplate.resetTime * 1000
: Constants.CHARGING_STATION_DEFAULT_RESET_TIME;
status: RegistrationStatusEnumType.ACCEPTED,
};
}
+ if (
+ this.stationInfo.firmwareStatus === FirmwareStatus.Installing &&
+ this.stationInfo.firmwareVersion &&
+ this.stationInfo.firmwareVersionPattern
+ ) {
+ const match = this.stationInfo.firmwareVersion
+ .match(new RegExp(this.stationInfo.firmwareVersionPattern))
+ .slice(1, this.stationInfo.firmwareVersion.split('.').length + 1);
+ const patchLevelIndex = match.length - 1;
+ match[patchLevelIndex] = (Utils.convertToInt(match[patchLevelIndex]) + 1).toString();
+ this.stationInfo.firmwareVersion = match.join('.');
+ }
}
private initializeOcppConfiguration(): void {
status: FirmwareStatus.Installed,
});
this.stationInfo.firmwareStatus = FirmwareStatus.Installed;
- // TODO: bump firmware version
}
+
// Start the ATG
if (this.getAutomaticTransactionGeneratorConfigurationFromTemplate()?.enable === true) {
this.startAutomaticTransactionGenerator();
static readonly CHARGING_STATION_ATG_DEFAULT_STOP_AFTER_HOURS = 0.25; // Hours
// See https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
- static readonly SEMVER_REGEXP =
- /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
+ static readonly SEMVER_PATTERN =
+ '^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$';
static readonly DEFAULT_CIRCULAR_BUFFER_CAPACITY = Number.MAX_SAFE_INTEGER;