Untangle internal configuration key type from the OCPP one.
authorJérôme Benoit <jerome.benoit@sap.com>
Sun, 3 Jan 2021 00:41:41 +0000 (01:41 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Sun, 3 Jan 2021 00:41:41 +0000 (01:41 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/charging-station/ChargingStation.ts
src/types/ChargingStationConfiguration.ts
src/types/ocpp/1.6/RequestResponses.ts
src/types/ocpp/Configuration.ts [new file with mode: 0644]

index d42a2daad74fec99fd7436f158a1fc2c36fb8e1b..32289d608308d76aaa508f80e275c20ff3136431 100644 (file)
@@ -20,6 +20,7 @@ import ElectricUtils from '../utils/ElectricUtils';
 import { ErrorType } from '../types/ocpp/ErrorType';
 import MeasurandValues from '../types/MeasurandValues';
 import { MessageType } from '../types/ocpp/MessageType';
+import { OCPPConfigurationKey } from '../types/ocpp/Configuration';
 import OCPPError from './OcppError';
 import { StandardParametersKey } from '../types/ocpp/1.6/Configuration';
 import Statistics from '../utils/Statistics';
@@ -1289,12 +1290,16 @@ export default class ChargingStation {
   }
 
   _getConfigurationKey(key: string | StandardParametersKey, caseInsensitive = false): ConfigurationKey {
-    return this._configuration.configurationKey.find((configElement) => {
+    const configurationKey: ConfigurationKey = this._configuration.configurationKey.find((configElement) => {
       if (caseInsensitive) {
         return configElement.key.toLowerCase() === key.toLowerCase();
       }
       return configElement.key === key;
     });
+    if (configurationKey && Utils.isUndefined(configurationKey.readonly)) {
+      configurationKey.readonly = false;
+    }
+    return configurationKey;
   }
 
   _addConfigurationKey(key: string | StandardParametersKey, value: string, readonly = false, visible = true, reboot = false): void {
@@ -1319,7 +1324,7 @@ export default class ChargingStation {
   }
 
   handleRequestGetConfiguration(commandPayload: GetConfigurationRequest): GetConfigurationResponse {
-    const configurationKey: ConfigurationKey[] = [];
+    const configurationKey: OCPPConfigurationKey[] = [];
     const unknownKey: string[] = [];
     if (Utils.isEmptyArray(commandPayload.key)) {
       for (const configuration of this._configuration.configurationKey) {
index 66d3e33a0db04477930826e9c339b8016e778a57..7e0219fbf63b7df71db84c7c1c53cfec3b1d2a99 100644 (file)
@@ -1,9 +1,6 @@
-import { StandardParametersKey } from './ocpp/1.6/Configuration';
+import { OCPPConfigurationKey } from './ocpp/Configuration';
 
-export interface ConfigurationKey {
-  key: string | StandardParametersKey;
-  readonly?: boolean;
-  value: string;
+export interface ConfigurationKey extends OCPPConfigurationKey{
   visible?: boolean;
   reboot?: boolean;
 }
index b737ed9797e0217315b62038874ec49f50dcefdf..79543d147624fde60cef8455361fb3f0eebfe801 100644 (file)
@@ -1,4 +1,4 @@
-import { ConfigurationKey } from '../../ChargingStationConfiguration';
+import { OCPPConfigurationKey } from '../Configuration';
 
 export interface HeartbeatResponse {
   currentTime: string;
@@ -50,7 +50,7 @@ export interface BootNotificationResponse {
 export interface StatusNotificationResponse { }
 
 export interface GetConfigurationResponse {
-  configurationKey: ConfigurationKey[];
+  configurationKey: OCPPConfigurationKey[];
   unknownKey: string[];
 }
 
diff --git a/src/types/ocpp/Configuration.ts b/src/types/ocpp/Configuration.ts
new file mode 100644 (file)
index 0000000..57b3f90
--- /dev/null
@@ -0,0 +1,7 @@
+import { StandardParametersKey } from './1.6/Configuration';
+
+export interface OCPPConfigurationKey {
+  key: string | StandardParametersKey;
+  readonly: boolean;
+  value?: string;
+}