1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
52pub struct UnknownValue;
53impl core::fmt::Display for UnknownValue {
54 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
55 f.write_str("not a value defined by this OCPP version's specification")
56 }
57}
58impl core::error::Error for UnknownValue {}
59#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
66pub struct ValueTooLong;
67impl core::fmt::Display for ValueTooLong {
68 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
69 f.write_str("longer than this field's maxLength in the specification")
70 }
71}
72impl core::error::Error for ValueTooLong {}
73#[derive(Debug, Clone)]
85pub enum ComponentName {
86 AlignedDataCtrlr,
88 AuthCacheCtrlr,
90 AuthCtrlr,
92 CHAdeMOCtrlr,
94 ClockCtrlr,
96 CustomizationCtrlr,
98 DeviceDataCtrlr,
100 DisplayMessageCtrlr,
102 ISO15118Ctrlr,
104 LocalAuthListCtrlr,
106 MonitoringCtrlr,
108 OCPPCommCtrlr,
110 ReservationCtrlr,
112 SampledDataCtrlr,
114 SecurityCtrlr,
116 SmartChargingCtrlr,
118 TariffCostCtrlr,
120 TxCtrlr,
122 AccessBarrier,
124 AcDcConverter,
126 AcPhaseSelector,
128 Actuator,
130 AirCoolingSystem,
132 AreaVentilation,
134 BayOccupancySensor,
136 BeaconLighting,
138 CableBreakawaySensor,
140 CaseAccessSensor,
142 ChargingStation,
144 ChargingStatusIndicator,
146 ConnectedEV,
148 Connector,
150 ConnectorHolsterRelease,
152 ConnectorHolsterSensor,
154 ConnectorPlugRetentionLock,
156 ConnectorProtectionRelease,
158 Controller,
160 ControlMetering,
162 CPPWMController,
164 DataLink,
166 Display,
168 DistributionPanel,
170 ElectricalFeed,
172 ELVSupply,
174 EmergencyStopSensor,
176 EnvironmentalLighting,
178 EVRetentionLock,
180 EVSE,
182 ExternalTemperatureSensor,
184 FiscalMetering,
186 FloodSensor,
188 GroundIsolationProtection,
190 Heater,
192 HumiditySensor,
194 LightSensor,
196 LiquidCoolingSystem,
198 LocalAvailabilitySensor,
200 LocalController,
202 LocalEnergyStorage,
204 NetworkConfiguration,
206 OverCurrentProtection,
208 OverCurrentProtectionRecloser,
210 PowerContactor,
212 RCD,
214 RCDRecloser,
216 RealTimeClock,
218 ShockSensor,
220 SpacesCountSignage,
222 Switch,
224 TemperatureSensor,
226 TiltSensor,
228 TokenReader,
230 UpstreamProtectionTrigger,
232 UIInput,
234 VehicleIdSensor,
236 FrequencySimulator,
238 DataCollector,
240 Other(heapless::String<50usize>),
249}
250impl ComponentName {
251 pub const ALL: &'static [Self] = &[
256 Self::AlignedDataCtrlr,
257 Self::AuthCacheCtrlr,
258 Self::AuthCtrlr,
259 Self::CHAdeMOCtrlr,
260 Self::ClockCtrlr,
261 Self::CustomizationCtrlr,
262 Self::DeviceDataCtrlr,
263 Self::DisplayMessageCtrlr,
264 Self::ISO15118Ctrlr,
265 Self::LocalAuthListCtrlr,
266 Self::MonitoringCtrlr,
267 Self::OCPPCommCtrlr,
268 Self::ReservationCtrlr,
269 Self::SampledDataCtrlr,
270 Self::SecurityCtrlr,
271 Self::SmartChargingCtrlr,
272 Self::TariffCostCtrlr,
273 Self::TxCtrlr,
274 Self::AccessBarrier,
275 Self::AcDcConverter,
276 Self::AcPhaseSelector,
277 Self::Actuator,
278 Self::AirCoolingSystem,
279 Self::AreaVentilation,
280 Self::BayOccupancySensor,
281 Self::BeaconLighting,
282 Self::CableBreakawaySensor,
283 Self::CaseAccessSensor,
284 Self::ChargingStation,
285 Self::ChargingStatusIndicator,
286 Self::ConnectedEV,
287 Self::Connector,
288 Self::ConnectorHolsterRelease,
289 Self::ConnectorHolsterSensor,
290 Self::ConnectorPlugRetentionLock,
291 Self::ConnectorProtectionRelease,
292 Self::Controller,
293 Self::ControlMetering,
294 Self::CPPWMController,
295 Self::DataLink,
296 Self::Display,
297 Self::DistributionPanel,
298 Self::ElectricalFeed,
299 Self::ELVSupply,
300 Self::EmergencyStopSensor,
301 Self::EnvironmentalLighting,
302 Self::EVRetentionLock,
303 Self::EVSE,
304 Self::ExternalTemperatureSensor,
305 Self::FiscalMetering,
306 Self::FloodSensor,
307 Self::GroundIsolationProtection,
308 Self::Heater,
309 Self::HumiditySensor,
310 Self::LightSensor,
311 Self::LiquidCoolingSystem,
312 Self::LocalAvailabilitySensor,
313 Self::LocalController,
314 Self::LocalEnergyStorage,
315 Self::NetworkConfiguration,
316 Self::OverCurrentProtection,
317 Self::OverCurrentProtectionRecloser,
318 Self::PowerContactor,
319 Self::RCD,
320 Self::RCDRecloser,
321 Self::RealTimeClock,
322 Self::ShockSensor,
323 Self::SpacesCountSignage,
324 Self::Switch,
325 Self::TemperatureSensor,
326 Self::TiltSensor,
327 Self::TokenReader,
328 Self::UpstreamProtectionTrigger,
329 Self::UIInput,
330 Self::VehicleIdSensor,
331 Self::FrequencySimulator,
332 Self::DataCollector,
333 ];
334 pub fn as_str(&self) -> &str {
336 match self {
337 Self::AlignedDataCtrlr => "AlignedDataCtrlr",
338 Self::AuthCacheCtrlr => "AuthCacheCtrlr",
339 Self::AuthCtrlr => "AuthCtrlr",
340 Self::CHAdeMOCtrlr => "CHAdeMOCtrlr",
341 Self::ClockCtrlr => "ClockCtrlr",
342 Self::CustomizationCtrlr => "CustomizationCtrlr",
343 Self::DeviceDataCtrlr => "DeviceDataCtrlr",
344 Self::DisplayMessageCtrlr => "DisplayMessageCtrlr",
345 Self::ISO15118Ctrlr => "ISO15118Ctrlr",
346 Self::LocalAuthListCtrlr => "LocalAuthListCtrlr",
347 Self::MonitoringCtrlr => "MonitoringCtrlr",
348 Self::OCPPCommCtrlr => "OCPPCommCtrlr",
349 Self::ReservationCtrlr => "ReservationCtrlr",
350 Self::SampledDataCtrlr => "SampledDataCtrlr",
351 Self::SecurityCtrlr => "SecurityCtrlr",
352 Self::SmartChargingCtrlr => "SmartChargingCtrlr",
353 Self::TariffCostCtrlr => "TariffCostCtrlr",
354 Self::TxCtrlr => "TxCtrlr",
355 Self::AccessBarrier => "AccessBarrier",
356 Self::AcDcConverter => "AcDcConverter",
357 Self::AcPhaseSelector => "AcPhaseSelector",
358 Self::Actuator => "Actuator",
359 Self::AirCoolingSystem => "AirCoolingSystem",
360 Self::AreaVentilation => "AreaVentilation",
361 Self::BayOccupancySensor => "BayOccupancySensor",
362 Self::BeaconLighting => "BeaconLighting",
363 Self::CableBreakawaySensor => "CableBreakawaySensor",
364 Self::CaseAccessSensor => "CaseAccessSensor",
365 Self::ChargingStation => "ChargingStation",
366 Self::ChargingStatusIndicator => "ChargingStatusIndicator",
367 Self::ConnectedEV => "ConnectedEV",
368 Self::Connector => "Connector",
369 Self::ConnectorHolsterRelease => "ConnectorHolsterRelease",
370 Self::ConnectorHolsterSensor => "ConnectorHolsterSensor",
371 Self::ConnectorPlugRetentionLock => "ConnectorPlugRetentionLock",
372 Self::ConnectorProtectionRelease => "ConnectorProtectionRelease",
373 Self::Controller => "Controller",
374 Self::ControlMetering => "ControlMetering",
375 Self::CPPWMController => "CPPWMController",
376 Self::DataLink => "DataLink",
377 Self::Display => "Display",
378 Self::DistributionPanel => "DistributionPanel",
379 Self::ElectricalFeed => "ElectricalFeed",
380 Self::ELVSupply => "ELVSupply",
381 Self::EmergencyStopSensor => "EmergencyStopSensor",
382 Self::EnvironmentalLighting => "EnvironmentalLighting",
383 Self::EVRetentionLock => "EVRetentionLock",
384 Self::EVSE => "EVSE",
385 Self::ExternalTemperatureSensor => "ExternalTemperatureSensor",
386 Self::FiscalMetering => "FiscalMetering",
387 Self::FloodSensor => "FloodSensor",
388 Self::GroundIsolationProtection => "GroundIsolationProtection",
389 Self::Heater => "Heater",
390 Self::HumiditySensor => "HumiditySensor",
391 Self::LightSensor => "LightSensor",
392 Self::LiquidCoolingSystem => "LiquidCoolingSystem",
393 Self::LocalAvailabilitySensor => "LocalAvailabilitySensor",
394 Self::LocalController => "LocalController",
395 Self::LocalEnergyStorage => "LocalEnergyStorage",
396 Self::NetworkConfiguration => "NetworkConfiguration",
397 Self::OverCurrentProtection => "OverCurrentProtection",
398 Self::OverCurrentProtectionRecloser => "OverCurrentProtectionRecloser",
399 Self::PowerContactor => "PowerContactor",
400 Self::RCD => "RCD",
401 Self::RCDRecloser => "RCDRecloser",
402 Self::RealTimeClock => "RealTimeClock",
403 Self::ShockSensor => "ShockSensor",
404 Self::SpacesCountSignage => "SpacesCountSignage",
405 Self::Switch => "Switch",
406 Self::TemperatureSensor => "TemperatureSensor",
407 Self::TiltSensor => "TiltSensor",
408 Self::TokenReader => "TokenReader",
409 Self::UpstreamProtectionTrigger => "UpstreamProtectionTrigger",
410 Self::UIInput => "UIInput",
411 Self::VehicleIdSensor => "VehicleIdSensor",
412 Self::FrequencySimulator => "FrequencySimulator",
413 Self::DataCollector => "DataCollector",
414 Self::Other(value) => value.as_str(),
415 }
416 }
417 pub fn from_wire(value: &str) -> Option<Self> {
423 match value {
424 "AlignedDataCtrlr" => Some(Self::AlignedDataCtrlr),
425 "AuthCacheCtrlr" => Some(Self::AuthCacheCtrlr),
426 "AuthCtrlr" => Some(Self::AuthCtrlr),
427 "CHAdeMOCtrlr" => Some(Self::CHAdeMOCtrlr),
428 "ClockCtrlr" => Some(Self::ClockCtrlr),
429 "CustomizationCtrlr" => Some(Self::CustomizationCtrlr),
430 "DeviceDataCtrlr" => Some(Self::DeviceDataCtrlr),
431 "DisplayMessageCtrlr" => Some(Self::DisplayMessageCtrlr),
432 "ISO15118Ctrlr" => Some(Self::ISO15118Ctrlr),
433 "LocalAuthListCtrlr" => Some(Self::LocalAuthListCtrlr),
434 "MonitoringCtrlr" => Some(Self::MonitoringCtrlr),
435 "OCPPCommCtrlr" => Some(Self::OCPPCommCtrlr),
436 "ReservationCtrlr" => Some(Self::ReservationCtrlr),
437 "SampledDataCtrlr" => Some(Self::SampledDataCtrlr),
438 "SecurityCtrlr" => Some(Self::SecurityCtrlr),
439 "SmartChargingCtrlr" => Some(Self::SmartChargingCtrlr),
440 "TariffCostCtrlr" => Some(Self::TariffCostCtrlr),
441 "TxCtrlr" => Some(Self::TxCtrlr),
442 "AccessBarrier" => Some(Self::AccessBarrier),
443 "AcDcConverter" => Some(Self::AcDcConverter),
444 "AcPhaseSelector" => Some(Self::AcPhaseSelector),
445 "Actuator" => Some(Self::Actuator),
446 "AirCoolingSystem" => Some(Self::AirCoolingSystem),
447 "AreaVentilation" => Some(Self::AreaVentilation),
448 "BayOccupancySensor" => Some(Self::BayOccupancySensor),
449 "BeaconLighting" => Some(Self::BeaconLighting),
450 "CableBreakawaySensor" => Some(Self::CableBreakawaySensor),
451 "CaseAccessSensor" => Some(Self::CaseAccessSensor),
452 "ChargingStation" => Some(Self::ChargingStation),
453 "ChargingStatusIndicator" => Some(Self::ChargingStatusIndicator),
454 "ConnectedEV" => Some(Self::ConnectedEV),
455 "Connector" => Some(Self::Connector),
456 "ConnectorHolsterRelease" => Some(Self::ConnectorHolsterRelease),
457 "ConnectorHolsterSensor" => Some(Self::ConnectorHolsterSensor),
458 "ConnectorPlugRetentionLock" => Some(Self::ConnectorPlugRetentionLock),
459 "ConnectorProtectionRelease" => Some(Self::ConnectorProtectionRelease),
460 "Controller" => Some(Self::Controller),
461 "ControlMetering" => Some(Self::ControlMetering),
462 "CPPWMController" => Some(Self::CPPWMController),
463 "DataLink" => Some(Self::DataLink),
464 "Display" => Some(Self::Display),
465 "DistributionPanel" => Some(Self::DistributionPanel),
466 "ElectricalFeed" => Some(Self::ElectricalFeed),
467 "ELVSupply" => Some(Self::ELVSupply),
468 "EmergencyStopSensor" => Some(Self::EmergencyStopSensor),
469 "EnvironmentalLighting" => Some(Self::EnvironmentalLighting),
470 "EVRetentionLock" => Some(Self::EVRetentionLock),
471 "EVSE" => Some(Self::EVSE),
472 "ExternalTemperatureSensor" => Some(Self::ExternalTemperatureSensor),
473 "FiscalMetering" => Some(Self::FiscalMetering),
474 "FloodSensor" => Some(Self::FloodSensor),
475 "GroundIsolationProtection" => Some(Self::GroundIsolationProtection),
476 "Heater" => Some(Self::Heater),
477 "HumiditySensor" => Some(Self::HumiditySensor),
478 "LightSensor" => Some(Self::LightSensor),
479 "LiquidCoolingSystem" => Some(Self::LiquidCoolingSystem),
480 "LocalAvailabilitySensor" => Some(Self::LocalAvailabilitySensor),
481 "LocalController" => Some(Self::LocalController),
482 "LocalEnergyStorage" => Some(Self::LocalEnergyStorage),
483 "NetworkConfiguration" => Some(Self::NetworkConfiguration),
484 "OverCurrentProtection" => Some(Self::OverCurrentProtection),
485 "OverCurrentProtectionRecloser" => Some(Self::OverCurrentProtectionRecloser),
486 "PowerContactor" => Some(Self::PowerContactor),
487 "RCD" => Some(Self::RCD),
488 "RCDRecloser" => Some(Self::RCDRecloser),
489 "RealTimeClock" => Some(Self::RealTimeClock),
490 "ShockSensor" => Some(Self::ShockSensor),
491 "SpacesCountSignage" => Some(Self::SpacesCountSignage),
492 "Switch" => Some(Self::Switch),
493 "TemperatureSensor" => Some(Self::TemperatureSensor),
494 "TiltSensor" => Some(Self::TiltSensor),
495 "TokenReader" => Some(Self::TokenReader),
496 "UpstreamProtectionTrigger" => Some(Self::UpstreamProtectionTrigger),
497 "UIInput" => Some(Self::UIInput),
498 "VehicleIdSensor" => Some(Self::VehicleIdSensor),
499 "FrequencySimulator" => Some(Self::FrequencySimulator),
500 "DataCollector" => Some(Self::DataCollector),
501 _ => None,
502 }
503 }
504 pub fn from_wire_or_other(value: &str) -> Result<Self, ValueTooLong> {
510 if let Some(standardized) = Self::from_wire(value) {
511 return Ok(standardized);
512 }
513 heapless::String::try_from(value).map(Self::Other).map_err(|_| ValueTooLong)
514 }
515 pub fn is_standardized(&self) -> bool {
518 !matches!(self, Self::Other(_))
519 }
520}
521impl core::fmt::Display for ComponentName {
522 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
523 f.write_str(self.as_str())
524 }
525}
526impl core::str::FromStr for ComponentName {
527 type Err = ValueTooLong;
528 fn from_str(value: &str) -> Result<Self, Self::Err> {
529 Self::from_wire_or_other(value)
530 }
531}
532impl PartialEq for ComponentName {
533 fn eq(&self, other: &Self) -> bool {
534 self.as_str() == other.as_str()
535 }
536}
537impl Eq for ComponentName {}
538impl core::hash::Hash for ComponentName {
539 fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
540 self.as_str().hash(state);
541 }
542}
543impl PartialOrd for ComponentName {
544 fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
545 Some(self.cmp(other))
546 }
547}
548impl Ord for ComponentName {
549 fn cmp(&self, other: &Self) -> core::cmp::Ordering {
550 self.as_str().cmp(other.as_str())
551 }
552}
553#[cfg(feature = "serde")]
554impl serde::Serialize for ComponentName {
555 fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
556 serializer.serialize_str(self.as_str())
557 }
558}
559#[cfg(feature = "serde")]
560impl<'de> serde::Deserialize<'de> for ComponentName {
561 fn deserialize<D: serde::Deserializer<'de>>(
562 deserializer: D,
563 ) -> Result<Self, D::Error> {
564 struct Visitor;
565 impl<'v> serde::de::Visitor<'v> for Visitor {
566 type Value = ComponentName;
567 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
568 f.write_str("a ComponentName string")
569 }
570 fn visit_str<E: serde::de::Error>(
571 self,
572 value: &str,
573 ) -> Result<Self::Value, E> {
574 ComponentName::from_wire_or_other(value)
575 .map_err(serde::de::Error::custom)
576 }
577 }
578 deserializer.deserialize_str(Visitor)
579 }
580}
581#[derive(Debug, Clone)]
593pub enum VariableName {
594 ACCurrent,
596 ACPhaseSwitchingSupported,
598 ACVoltage,
600 Active,
602 ActiveMonitoringBase,
604 ActiveMonitoringLevel,
606 ActiveNetworkProfile,
608 ActiveTransactionId,
610 AdditionalInfoItemsPerMessage,
612 AdditionalRootCertificateCheck,
614 AllowEnergyTransferResumption,
616 AllowNewSessionsPendingFirmwareUpdate,
618 AllowReset,
620 AllowSecurityProfileDowngrade,
622 Angle,
624 Attempts,
626 AuthorizeRemoteStart,
628 AvailabilityState,
630 Available,
632 BasicAuthPassword,
634 BytesPerMessage,
636 CentralContractValidationAllowed,
638 CertSigningRepeatTimes,
640 CertSigningWaitMinimum,
642 Certificate,
644 CertificateEntries,
646 CertificateStatusSource,
648 ChargeProtocol,
650 ChargingCompleteBulk,
652 ChargingCompleteFull,
654 ChargingProfilePersistence,
656 ChargingState,
658 ChargingTime,
660 Color,
662 CommunicationParent,
664 Complete,
666 ConditionsSupported,
668 ConfigurationValueSize,
670 ConnectedTime,
672 ConnectorType,
674 ContractCertificateInstallationEnabled,
676 ContractValidationOffline,
678 Count,
680 CountryName,
682 Currency,
684 CurrentImbalance,
686 CustomImplementationEnabled,
688 CustomTriggers,
690 DCCurrent,
692 DCInputPhaseControl,
694 DCVoltage,
696 DataText,
698 DateTime,
700 DepartureTime,
702 DisablePostAuthorize,
704 DisableRemoteAuthorization,
706 DisplayMessages,
708 ECVariant,
710 EVConnectionTimeOut,
712 ElectricalParent,
714 Enabled,
716 Energy,
718 EnergyCapacity,
720 EnergyExport,
722 EnergyExportRegister,
724 EnergyImport,
726 EnergyImportRegister,
728 Entries,
730 ExternalConfigChangeDate,
732 ExternalConstraintsProfileDisallowed,
734 ExternalControlSignalsEnabled,
736 Fallback,
738 FanSpeed,
740 FieldLength,
742 FileTransferProtocols,
744 FirmwareVersion,
746 Force,
748 Formats,
750 Frequency,
752 FrequencySchedule,
754 FuseRating,
756 HeartbeatInterval,
758 Height,
760 Humidity,
762 Hysteresis,
764 ICCID,
766 IMSI,
768 ISO15118EvseId,
770 IdToken,
772 Identity,
774 Impedance,
776 Interval,
778 ItemsPerMessage,
780 Label,
782 Language,
784 Length,
786 LifeTime,
788 Light,
790 LimitChangeSignificance,
792 LocalAuthorizeOffline,
794 LocalLoadBalancing,
796 LocalPreAuthorize,
798 LogicalParent,
800 Manufacturer,
802 MasterPassGroupId,
804 MaxCertificateChainSize,
806 MaxEnergyOnInvalidId,
808 MaxExternalConstraintsId,
810 MaxPriceElements,
812 Measurands,
814 Message,
816 MessageAttemptInterval,
818 MessageAttempts,
820 MessageTimeout,
822 MinimumStatusDuration,
824 Mode,
826 Model,
828 NetworkAddress,
830 NetworkConfigurationPriority,
832 NetworkProfileConnectionAttempts,
834 NextTimeOffsetTransitionDateTime,
836 NonEvseSpecific,
838 NotificationMaxDelay,
840 NotifyChargingLimitWithSchedules,
842 NtpServerUri,
844 NtpSource,
846 OfflineQueuingSeverity,
848 OfflineTariffFallbackMessage,
850 OfflineThreshold,
852 OfflineTxForUnknownIdEnabled,
854 Operated,
856 OperatingTimes,
858 OrganizationName,
860 Overload,
862 Percent,
864 PeriodsPerSchedule,
866 PhaseRotation,
868 Phases3to1,
870 PhysicalParent,
872 PnCEnabled,
874 Policy,
876 PostChargingTime,
878 Power,
880 Present,
882 Problem,
884 ProfileStackLevel,
886 Protecting,
888 ProtocolAgreed,
890 ProtocolSupported,
892 ProtocolSupportedByEV,
894 PublicKey,
896 PublicKeyWithSignedMeterValue,
898 QueueAllMessages,
900 RateUnit,
902 RegisterValuesWithoutPhases,
904 RemainingTimeBulk,
906 RemainingTimeFull,
908 ReportingValueSize,
910 RequestMeteringReceipt,
912 ResetRetries,
914 ResumptionTimeout,
916 SampledMeasurands,
918 SamplingInterval,
920 SeccId,
922 SecurityProfile,
924 SendDuringIdle,
926 SerialNumber,
928 ServiceRenegotiationSupport,
930 SignReadings,
932 SignStartedReadings,
934 SignUpdatedReadings,
936 SignalStrength,
938 SlotStatus,
940 SoC,
942 SoH,
944 State,
946 StateOfCharge,
948 StateOfChargeBulk,
950 StopTxOnEVSideDisconnect,
952 StopTxOnInvalidId,
954 Storage,
956 SupplyPhases,
958 SupportsExpiryDateTime,
960 Suspending,
962 Suspension,
964 TariffFallbackMessage,
966 Temperature,
968 Time,
970 TimeAdjustmentReportingThreshold,
972 TimeOffset,
974 TimeSource,
976 TimeZone,
978 Timeout,
982 Token,
984 TokenType,
986 TotalCostFallbackMessage,
988 Tries,
990 Tripped,
992 TxBeforeAcceptedEnabled,
994 TxEndedInterval,
996 TxEndedMeasurands,
998 TxStartPoint,
1000 TxStartedMeasurands,
1002 TxStopPoint,
1004 TxUpdatedInterval,
1006 TxUpdatedMeasurands,
1008 UnlockOnEVSideDisconnect,
1010 V2GCertificateInstallationEnabled,
1012 VehicleCertificate,
1014 VehicleId,
1016 VersionDate,
1018 VersionNumber,
1020 VoltageImbalance,
1022 VendorName,
1024 SupportedIdTokenType,
1026 SelftestActive,
1028 CHAdeMOProtocolNumber,
1030 VehicleStatus,
1032 DynamicControl,
1034 HighCurrentControl,
1036 HighVoltageControl,
1038 AutoManufacturerCode,
1040 VehicleID,
1042 BatteryCapacity,
1044 ValueSize,
1046 EvseId,
1048 MaxScheduleEntries,
1050 RequestedEnergyTransferMode,
1052 NotificationDelay,
1054 Capacity,
1056 MonitoringBase,
1058 MonitoringLevel,
1060 RetryBackOffRandomRange,
1062 RetryBackOffRepeatTimes,
1064 RetryBackOffWaitMinimum,
1066 WebSocketPingInterval,
1068 EnergyTransferResumptionRandomRange,
1070 OcppCsmsUrl,
1072 OcppInterface,
1074 OcppTransport,
1076 OcppVersion,
1078 CsmsRootCertificateHashAlgorithm,
1080 CsmsRootCertificateIssuerKeyHash,
1082 CsmsRootCertificateIssuerNameHash,
1084 CsmsRootCertificateSerialNumber,
1086 VpnEnabled,
1088 VpnType,
1090 VpnServer,
1092 VpnUser,
1094 VpnGroup,
1096 VpnPassword,
1098 VpnKey,
1100 ApnEnabled,
1102 Apn,
1104 ApnUserName,
1106 ApnPassword,
1108 SimPin,
1110 PreferredNetwork,
1112 UseOnlyPreferredNetwork,
1114 ApnAuthentication,
1116 Other(heapless::String<50usize>),
1125}
1126impl VariableName {
1127 pub const ALL: &'static [Self] = &[
1132 Self::ACCurrent,
1133 Self::ACPhaseSwitchingSupported,
1134 Self::ACVoltage,
1135 Self::Active,
1136 Self::ActiveMonitoringBase,
1137 Self::ActiveMonitoringLevel,
1138 Self::ActiveNetworkProfile,
1139 Self::ActiveTransactionId,
1140 Self::AdditionalInfoItemsPerMessage,
1141 Self::AdditionalRootCertificateCheck,
1142 Self::AllowEnergyTransferResumption,
1143 Self::AllowNewSessionsPendingFirmwareUpdate,
1144 Self::AllowReset,
1145 Self::AllowSecurityProfileDowngrade,
1146 Self::Angle,
1147 Self::Attempts,
1148 Self::AuthorizeRemoteStart,
1149 Self::AvailabilityState,
1150 Self::Available,
1151 Self::BasicAuthPassword,
1152 Self::BytesPerMessage,
1153 Self::CentralContractValidationAllowed,
1154 Self::CertSigningRepeatTimes,
1155 Self::CertSigningWaitMinimum,
1156 Self::Certificate,
1157 Self::CertificateEntries,
1158 Self::CertificateStatusSource,
1159 Self::ChargeProtocol,
1160 Self::ChargingCompleteBulk,
1161 Self::ChargingCompleteFull,
1162 Self::ChargingProfilePersistence,
1163 Self::ChargingState,
1164 Self::ChargingTime,
1165 Self::Color,
1166 Self::CommunicationParent,
1167 Self::Complete,
1168 Self::ConditionsSupported,
1169 Self::ConfigurationValueSize,
1170 Self::ConnectedTime,
1171 Self::ConnectorType,
1172 Self::ContractCertificateInstallationEnabled,
1173 Self::ContractValidationOffline,
1174 Self::Count,
1175 Self::CountryName,
1176 Self::Currency,
1177 Self::CurrentImbalance,
1178 Self::CustomImplementationEnabled,
1179 Self::CustomTriggers,
1180 Self::DCCurrent,
1181 Self::DCInputPhaseControl,
1182 Self::DCVoltage,
1183 Self::DataText,
1184 Self::DateTime,
1185 Self::DepartureTime,
1186 Self::DisablePostAuthorize,
1187 Self::DisableRemoteAuthorization,
1188 Self::DisplayMessages,
1189 Self::ECVariant,
1190 Self::EVConnectionTimeOut,
1191 Self::ElectricalParent,
1192 Self::Enabled,
1193 Self::Energy,
1194 Self::EnergyCapacity,
1195 Self::EnergyExport,
1196 Self::EnergyExportRegister,
1197 Self::EnergyImport,
1198 Self::EnergyImportRegister,
1199 Self::Entries,
1200 Self::ExternalConfigChangeDate,
1201 Self::ExternalConstraintsProfileDisallowed,
1202 Self::ExternalControlSignalsEnabled,
1203 Self::Fallback,
1204 Self::FanSpeed,
1205 Self::FieldLength,
1206 Self::FileTransferProtocols,
1207 Self::FirmwareVersion,
1208 Self::Force,
1209 Self::Formats,
1210 Self::Frequency,
1211 Self::FrequencySchedule,
1212 Self::FuseRating,
1213 Self::HeartbeatInterval,
1214 Self::Height,
1215 Self::Humidity,
1216 Self::Hysteresis,
1217 Self::ICCID,
1218 Self::IMSI,
1219 Self::ISO15118EvseId,
1220 Self::IdToken,
1221 Self::Identity,
1222 Self::Impedance,
1223 Self::Interval,
1224 Self::ItemsPerMessage,
1225 Self::Label,
1226 Self::Language,
1227 Self::Length,
1228 Self::LifeTime,
1229 Self::Light,
1230 Self::LimitChangeSignificance,
1231 Self::LocalAuthorizeOffline,
1232 Self::LocalLoadBalancing,
1233 Self::LocalPreAuthorize,
1234 Self::LogicalParent,
1235 Self::Manufacturer,
1236 Self::MasterPassGroupId,
1237 Self::MaxCertificateChainSize,
1238 Self::MaxEnergyOnInvalidId,
1239 Self::MaxExternalConstraintsId,
1240 Self::MaxPriceElements,
1241 Self::Measurands,
1242 Self::Message,
1243 Self::MessageAttemptInterval,
1244 Self::MessageAttempts,
1245 Self::MessageTimeout,
1246 Self::MinimumStatusDuration,
1247 Self::Mode,
1248 Self::Model,
1249 Self::NetworkAddress,
1250 Self::NetworkConfigurationPriority,
1251 Self::NetworkProfileConnectionAttempts,
1252 Self::NextTimeOffsetTransitionDateTime,
1253 Self::NonEvseSpecific,
1254 Self::NotificationMaxDelay,
1255 Self::NotifyChargingLimitWithSchedules,
1256 Self::NtpServerUri,
1257 Self::NtpSource,
1258 Self::OfflineQueuingSeverity,
1259 Self::OfflineTariffFallbackMessage,
1260 Self::OfflineThreshold,
1261 Self::OfflineTxForUnknownIdEnabled,
1262 Self::Operated,
1263 Self::OperatingTimes,
1264 Self::OrganizationName,
1265 Self::Overload,
1266 Self::Percent,
1267 Self::PeriodsPerSchedule,
1268 Self::PhaseRotation,
1269 Self::Phases3to1,
1270 Self::PhysicalParent,
1271 Self::PnCEnabled,
1272 Self::Policy,
1273 Self::PostChargingTime,
1274 Self::Power,
1275 Self::Present,
1276 Self::Problem,
1277 Self::ProfileStackLevel,
1278 Self::Protecting,
1279 Self::ProtocolAgreed,
1280 Self::ProtocolSupported,
1281 Self::ProtocolSupportedByEV,
1282 Self::PublicKey,
1283 Self::PublicKeyWithSignedMeterValue,
1284 Self::QueueAllMessages,
1285 Self::RateUnit,
1286 Self::RegisterValuesWithoutPhases,
1287 Self::RemainingTimeBulk,
1288 Self::RemainingTimeFull,
1289 Self::ReportingValueSize,
1290 Self::RequestMeteringReceipt,
1291 Self::ResetRetries,
1292 Self::ResumptionTimeout,
1293 Self::SampledMeasurands,
1294 Self::SamplingInterval,
1295 Self::SeccId,
1296 Self::SecurityProfile,
1297 Self::SendDuringIdle,
1298 Self::SerialNumber,
1299 Self::ServiceRenegotiationSupport,
1300 Self::SignReadings,
1301 Self::SignStartedReadings,
1302 Self::SignUpdatedReadings,
1303 Self::SignalStrength,
1304 Self::SlotStatus,
1305 Self::SoC,
1306 Self::SoH,
1307 Self::State,
1308 Self::StateOfCharge,
1309 Self::StateOfChargeBulk,
1310 Self::StopTxOnEVSideDisconnect,
1311 Self::StopTxOnInvalidId,
1312 Self::Storage,
1313 Self::SupplyPhases,
1314 Self::SupportsExpiryDateTime,
1315 Self::Suspending,
1316 Self::Suspension,
1317 Self::TariffFallbackMessage,
1318 Self::Temperature,
1319 Self::Time,
1320 Self::TimeAdjustmentReportingThreshold,
1321 Self::TimeOffset,
1322 Self::TimeSource,
1323 Self::TimeZone,
1324 Self::Timeout,
1325 Self::Token,
1326 Self::TokenType,
1327 Self::TotalCostFallbackMessage,
1328 Self::Tries,
1329 Self::Tripped,
1330 Self::TxBeforeAcceptedEnabled,
1331 Self::TxEndedInterval,
1332 Self::TxEndedMeasurands,
1333 Self::TxStartPoint,
1334 Self::TxStartedMeasurands,
1335 Self::TxStopPoint,
1336 Self::TxUpdatedInterval,
1337 Self::TxUpdatedMeasurands,
1338 Self::UnlockOnEVSideDisconnect,
1339 Self::V2GCertificateInstallationEnabled,
1340 Self::VehicleCertificate,
1341 Self::VehicleId,
1342 Self::VersionDate,
1343 Self::VersionNumber,
1344 Self::VoltageImbalance,
1345 Self::VendorName,
1346 Self::SupportedIdTokenType,
1347 Self::SelftestActive,
1348 Self::CHAdeMOProtocolNumber,
1349 Self::VehicleStatus,
1350 Self::DynamicControl,
1351 Self::HighCurrentControl,
1352 Self::HighVoltageControl,
1353 Self::AutoManufacturerCode,
1354 Self::VehicleID,
1355 Self::BatteryCapacity,
1356 Self::ValueSize,
1357 Self::EvseId,
1358 Self::MaxScheduleEntries,
1359 Self::RequestedEnergyTransferMode,
1360 Self::NotificationDelay,
1361 Self::Capacity,
1362 Self::MonitoringBase,
1363 Self::MonitoringLevel,
1364 Self::RetryBackOffRandomRange,
1365 Self::RetryBackOffRepeatTimes,
1366 Self::RetryBackOffWaitMinimum,
1367 Self::WebSocketPingInterval,
1368 Self::EnergyTransferResumptionRandomRange,
1369 Self::OcppCsmsUrl,
1370 Self::OcppInterface,
1371 Self::OcppTransport,
1372 Self::OcppVersion,
1373 Self::CsmsRootCertificateHashAlgorithm,
1374 Self::CsmsRootCertificateIssuerKeyHash,
1375 Self::CsmsRootCertificateIssuerNameHash,
1376 Self::CsmsRootCertificateSerialNumber,
1377 Self::VpnEnabled,
1378 Self::VpnType,
1379 Self::VpnServer,
1380 Self::VpnUser,
1381 Self::VpnGroup,
1382 Self::VpnPassword,
1383 Self::VpnKey,
1384 Self::ApnEnabled,
1385 Self::Apn,
1386 Self::ApnUserName,
1387 Self::ApnPassword,
1388 Self::SimPin,
1389 Self::PreferredNetwork,
1390 Self::UseOnlyPreferredNetwork,
1391 Self::ApnAuthentication,
1392 ];
1393 pub fn as_str(&self) -> &str {
1395 match self {
1396 Self::ACCurrent => "ACCurrent",
1397 Self::ACPhaseSwitchingSupported => "ACPhaseSwitchingSupported",
1398 Self::ACVoltage => "ACVoltage",
1399 Self::Active => "Active",
1400 Self::ActiveMonitoringBase => "ActiveMonitoringBase",
1401 Self::ActiveMonitoringLevel => "ActiveMonitoringLevel",
1402 Self::ActiveNetworkProfile => "ActiveNetworkProfile",
1403 Self::ActiveTransactionId => "ActiveTransactionId",
1404 Self::AdditionalInfoItemsPerMessage => "AdditionalInfoItemsPerMessage",
1405 Self::AdditionalRootCertificateCheck => "AdditionalRootCertificateCheck",
1406 Self::AllowEnergyTransferResumption => "AllowEnergyTransferResumption",
1407 Self::AllowNewSessionsPendingFirmwareUpdate => {
1408 "AllowNewSessionsPendingFirmwareUpdate"
1409 }
1410 Self::AllowReset => "AllowReset",
1411 Self::AllowSecurityProfileDowngrade => "AllowSecurityProfileDowngrade",
1412 Self::Angle => "Angle",
1413 Self::Attempts => "Attempts",
1414 Self::AuthorizeRemoteStart => "AuthorizeRemoteStart",
1415 Self::AvailabilityState => "AvailabilityState",
1416 Self::Available => "Available",
1417 Self::BasicAuthPassword => "BasicAuthPassword",
1418 Self::BytesPerMessage => "BytesPerMessage",
1419 Self::CentralContractValidationAllowed => "CentralContractValidationAllowed",
1420 Self::CertSigningRepeatTimes => "CertSigningRepeatTimes",
1421 Self::CertSigningWaitMinimum => "CertSigningWaitMinimum",
1422 Self::Certificate => "Certificate",
1423 Self::CertificateEntries => "CertificateEntries",
1424 Self::CertificateStatusSource => "CertificateStatusSource",
1425 Self::ChargeProtocol => "ChargeProtocol",
1426 Self::ChargingCompleteBulk => "ChargingCompleteBulk",
1427 Self::ChargingCompleteFull => "ChargingCompleteFull",
1428 Self::ChargingProfilePersistence => "ChargingProfilePersistence",
1429 Self::ChargingState => "ChargingState",
1430 Self::ChargingTime => "ChargingTime",
1431 Self::Color => "Color",
1432 Self::CommunicationParent => "CommunicationParent",
1433 Self::Complete => "Complete",
1434 Self::ConditionsSupported => "ConditionsSupported",
1435 Self::ConfigurationValueSize => "ConfigurationValueSize",
1436 Self::ConnectedTime => "ConnectedTime",
1437 Self::ConnectorType => "ConnectorType",
1438 Self::ContractCertificateInstallationEnabled => {
1439 "ContractCertificateInstallationEnabled"
1440 }
1441 Self::ContractValidationOffline => "ContractValidationOffline",
1442 Self::Count => "Count",
1443 Self::CountryName => "CountryName",
1444 Self::Currency => "Currency",
1445 Self::CurrentImbalance => "CurrentImbalance",
1446 Self::CustomImplementationEnabled => "CustomImplementationEnabled",
1447 Self::CustomTriggers => "CustomTriggers",
1448 Self::DCCurrent => "DCCurrent",
1449 Self::DCInputPhaseControl => "DCInputPhaseControl",
1450 Self::DCVoltage => "DCVoltage",
1451 Self::DataText => "DataText",
1452 Self::DateTime => "DateTime",
1453 Self::DepartureTime => "DepartureTime",
1454 Self::DisablePostAuthorize => "DisablePostAuthorize",
1455 Self::DisableRemoteAuthorization => "DisableRemoteAuthorization",
1456 Self::DisplayMessages => "DisplayMessages",
1457 Self::ECVariant => "ECVariant",
1458 Self::EVConnectionTimeOut => "EVConnectionTimeOut",
1459 Self::ElectricalParent => "ElectricalParent",
1460 Self::Enabled => "Enabled",
1461 Self::Energy => "Energy",
1462 Self::EnergyCapacity => "EnergyCapacity",
1463 Self::EnergyExport => "EnergyExport",
1464 Self::EnergyExportRegister => "EnergyExportRegister",
1465 Self::EnergyImport => "EnergyImport",
1466 Self::EnergyImportRegister => "EnergyImportRegister",
1467 Self::Entries => "Entries",
1468 Self::ExternalConfigChangeDate => "ExternalConfigChangeDate",
1469 Self::ExternalConstraintsProfileDisallowed => {
1470 "ExternalConstraintsProfileDisallowed"
1471 }
1472 Self::ExternalControlSignalsEnabled => "ExternalControlSignalsEnabled",
1473 Self::Fallback => "Fallback",
1474 Self::FanSpeed => "FanSpeed",
1475 Self::FieldLength => "FieldLength",
1476 Self::FileTransferProtocols => "FileTransferProtocols",
1477 Self::FirmwareVersion => "FirmwareVersion",
1478 Self::Force => "Force",
1479 Self::Formats => "Formats",
1480 Self::Frequency => "Frequency",
1481 Self::FrequencySchedule => "FrequencySchedule",
1482 Self::FuseRating => "FuseRating",
1483 Self::HeartbeatInterval => "HeartbeatInterval",
1484 Self::Height => "Height",
1485 Self::Humidity => "Humidity",
1486 Self::Hysteresis => "Hysteresis",
1487 Self::ICCID => "ICCID",
1488 Self::IMSI => "IMSI",
1489 Self::ISO15118EvseId => "ISO15118EvseId",
1490 Self::IdToken => "IdToken",
1491 Self::Identity => "Identity",
1492 Self::Impedance => "Impedance",
1493 Self::Interval => "Interval",
1494 Self::ItemsPerMessage => "ItemsPerMessage",
1495 Self::Label => "Label",
1496 Self::Language => "Language",
1497 Self::Length => "Length",
1498 Self::LifeTime => "LifeTime",
1499 Self::Light => "Light",
1500 Self::LimitChangeSignificance => "LimitChangeSignificance",
1501 Self::LocalAuthorizeOffline => "LocalAuthorizeOffline",
1502 Self::LocalLoadBalancing => "LocalLoadBalancing",
1503 Self::LocalPreAuthorize => "LocalPreAuthorize",
1504 Self::LogicalParent => "LogicalParent",
1505 Self::Manufacturer => "Manufacturer",
1506 Self::MasterPassGroupId => "MasterPassGroupId",
1507 Self::MaxCertificateChainSize => "MaxCertificateChainSize",
1508 Self::MaxEnergyOnInvalidId => "MaxEnergyOnInvalidId",
1509 Self::MaxExternalConstraintsId => "MaxExternalConstraintsId",
1510 Self::MaxPriceElements => "MaxPriceElements",
1511 Self::Measurands => "Measurands",
1512 Self::Message => "Message",
1513 Self::MessageAttemptInterval => "MessageAttemptInterval",
1514 Self::MessageAttempts => "MessageAttempts",
1515 Self::MessageTimeout => "MessageTimeout",
1516 Self::MinimumStatusDuration => "MinimumStatusDuration",
1517 Self::Mode => "Mode",
1518 Self::Model => "Model",
1519 Self::NetworkAddress => "NetworkAddress",
1520 Self::NetworkConfigurationPriority => "NetworkConfigurationPriority",
1521 Self::NetworkProfileConnectionAttempts => "NetworkProfileConnectionAttempts",
1522 Self::NextTimeOffsetTransitionDateTime => "NextTimeOffsetTransitionDateTime",
1523 Self::NonEvseSpecific => "NonEvseSpecific",
1524 Self::NotificationMaxDelay => "NotificationMaxDelay",
1525 Self::NotifyChargingLimitWithSchedules => "NotifyChargingLimitWithSchedules",
1526 Self::NtpServerUri => "NtpServerUri",
1527 Self::NtpSource => "NtpSource",
1528 Self::OfflineQueuingSeverity => "OfflineQueuingSeverity",
1529 Self::OfflineTariffFallbackMessage => "OfflineTariffFallbackMessage",
1530 Self::OfflineThreshold => "OfflineThreshold",
1531 Self::OfflineTxForUnknownIdEnabled => "OfflineTxForUnknownIdEnabled",
1532 Self::Operated => "Operated",
1533 Self::OperatingTimes => "OperatingTimes",
1534 Self::OrganizationName => "OrganizationName",
1535 Self::Overload => "Overload",
1536 Self::Percent => "Percent",
1537 Self::PeriodsPerSchedule => "PeriodsPerSchedule",
1538 Self::PhaseRotation => "PhaseRotation",
1539 Self::Phases3to1 => "Phases3to1",
1540 Self::PhysicalParent => "PhysicalParent",
1541 Self::PnCEnabled => "PnCEnabled",
1542 Self::Policy => "Policy",
1543 Self::PostChargingTime => "PostChargingTime",
1544 Self::Power => "Power",
1545 Self::Present => "Present",
1546 Self::Problem => "Problem",
1547 Self::ProfileStackLevel => "ProfileStackLevel",
1548 Self::Protecting => "Protecting",
1549 Self::ProtocolAgreed => "ProtocolAgreed",
1550 Self::ProtocolSupported => "ProtocolSupported",
1551 Self::ProtocolSupportedByEV => "ProtocolSupportedByEV",
1552 Self::PublicKey => "PublicKey",
1553 Self::PublicKeyWithSignedMeterValue => "PublicKeyWithSignedMeterValue",
1554 Self::QueueAllMessages => "QueueAllMessages",
1555 Self::RateUnit => "RateUnit",
1556 Self::RegisterValuesWithoutPhases => "RegisterValuesWithoutPhases",
1557 Self::RemainingTimeBulk => "RemainingTimeBulk",
1558 Self::RemainingTimeFull => "RemainingTimeFull",
1559 Self::ReportingValueSize => "ReportingValueSize",
1560 Self::RequestMeteringReceipt => "RequestMeteringReceipt",
1561 Self::ResetRetries => "ResetRetries",
1562 Self::ResumptionTimeout => "ResumptionTimeout",
1563 Self::SampledMeasurands => "SampledMeasurands",
1564 Self::SamplingInterval => "SamplingInterval",
1565 Self::SeccId => "SeccId",
1566 Self::SecurityProfile => "SecurityProfile",
1567 Self::SendDuringIdle => "SendDuringIdle",
1568 Self::SerialNumber => "SerialNumber",
1569 Self::ServiceRenegotiationSupport => "ServiceRenegotiationSupport",
1570 Self::SignReadings => "SignReadings",
1571 Self::SignStartedReadings => "SignStartedReadings",
1572 Self::SignUpdatedReadings => "SignUpdatedReadings",
1573 Self::SignalStrength => "SignalStrength",
1574 Self::SlotStatus => "SlotStatus",
1575 Self::SoC => "SoC",
1576 Self::SoH => "SoH",
1577 Self::State => "State",
1578 Self::StateOfCharge => "StateOfCharge",
1579 Self::StateOfChargeBulk => "StateOfChargeBulk",
1580 Self::StopTxOnEVSideDisconnect => "StopTxOnEVSideDisconnect",
1581 Self::StopTxOnInvalidId => "StopTxOnInvalidId",
1582 Self::Storage => "Storage",
1583 Self::SupplyPhases => "SupplyPhases",
1584 Self::SupportsExpiryDateTime => "SupportsExpiryDateTime",
1585 Self::Suspending => "Suspending",
1586 Self::Suspension => "Suspension",
1587 Self::TariffFallbackMessage => "TariffFallbackMessage",
1588 Self::Temperature => "Temperature",
1589 Self::Time => "Time",
1590 Self::TimeAdjustmentReportingThreshold => "TimeAdjustmentReportingThreshold",
1591 Self::TimeOffset => "TimeOffset",
1592 Self::TimeSource => "TimeSource",
1593 Self::TimeZone => "TimeZone",
1594 Self::Timeout => "Timeout",
1595 Self::Token => "Token",
1596 Self::TokenType => "TokenType",
1597 Self::TotalCostFallbackMessage => "TotalCostFallbackMessage",
1598 Self::Tries => "Tries",
1599 Self::Tripped => "Tripped",
1600 Self::TxBeforeAcceptedEnabled => "TxBeforeAcceptedEnabled",
1601 Self::TxEndedInterval => "TxEndedInterval",
1602 Self::TxEndedMeasurands => "TxEndedMeasurands",
1603 Self::TxStartPoint => "TxStartPoint",
1604 Self::TxStartedMeasurands => "TxStartedMeasurands",
1605 Self::TxStopPoint => "TxStopPoint",
1606 Self::TxUpdatedInterval => "TxUpdatedInterval",
1607 Self::TxUpdatedMeasurands => "TxUpdatedMeasurands",
1608 Self::UnlockOnEVSideDisconnect => "UnlockOnEVSideDisconnect",
1609 Self::V2GCertificateInstallationEnabled => {
1610 "V2GCertificateInstallationEnabled"
1611 }
1612 Self::VehicleCertificate => "VehicleCertificate",
1613 Self::VehicleId => "VehicleId",
1614 Self::VersionDate => "VersionDate",
1615 Self::VersionNumber => "VersionNumber",
1616 Self::VoltageImbalance => "VoltageImbalance",
1617 Self::VendorName => "VendorName",
1618 Self::SupportedIdTokenType => "SupportedIdTokenType",
1619 Self::SelftestActive => "SelftestActive",
1620 Self::CHAdeMOProtocolNumber => "CHAdeMOProtocolNumber",
1621 Self::VehicleStatus => "VehicleStatus",
1622 Self::DynamicControl => "DynamicControl",
1623 Self::HighCurrentControl => "HighCurrentControl",
1624 Self::HighVoltageControl => "HighVoltageControl",
1625 Self::AutoManufacturerCode => "AutoManufacturerCode",
1626 Self::VehicleID => "VehicleID",
1627 Self::BatteryCapacity => "BatteryCapacity",
1628 Self::ValueSize => "ValueSize",
1629 Self::EvseId => "EvseId",
1630 Self::MaxScheduleEntries => "MaxScheduleEntries",
1631 Self::RequestedEnergyTransferMode => "RequestedEnergyTransferMode",
1632 Self::NotificationDelay => "NotificationDelay",
1633 Self::Capacity => "Capacity",
1634 Self::MonitoringBase => "MonitoringBase",
1635 Self::MonitoringLevel => "MonitoringLevel",
1636 Self::RetryBackOffRandomRange => "RetryBackOffRandomRange",
1637 Self::RetryBackOffRepeatTimes => "RetryBackOffRepeatTimes",
1638 Self::RetryBackOffWaitMinimum => "RetryBackOffWaitMinimum",
1639 Self::WebSocketPingInterval => "WebSocketPingInterval",
1640 Self::EnergyTransferResumptionRandomRange => {
1641 "EnergyTransferResumptionRandomRange"
1642 }
1643 Self::OcppCsmsUrl => "OcppCsmsUrl",
1644 Self::OcppInterface => "OcppInterface",
1645 Self::OcppTransport => "OcppTransport",
1646 Self::OcppVersion => "OcppVersion",
1647 Self::CsmsRootCertificateHashAlgorithm => "CsmsRootCertificateHashAlgorithm",
1648 Self::CsmsRootCertificateIssuerKeyHash => "CsmsRootCertificateIssuerKeyHash",
1649 Self::CsmsRootCertificateIssuerNameHash => {
1650 "CsmsRootCertificateIssuerNameHash"
1651 }
1652 Self::CsmsRootCertificateSerialNumber => "CsmsRootCertificateSerialNumber",
1653 Self::VpnEnabled => "VpnEnabled",
1654 Self::VpnType => "VpnType",
1655 Self::VpnServer => "VpnServer",
1656 Self::VpnUser => "VpnUser",
1657 Self::VpnGroup => "VpnGroup",
1658 Self::VpnPassword => "VpnPassword",
1659 Self::VpnKey => "VpnKey",
1660 Self::ApnEnabled => "ApnEnabled",
1661 Self::Apn => "Apn",
1662 Self::ApnUserName => "ApnUserName",
1663 Self::ApnPassword => "ApnPassword",
1664 Self::SimPin => "SimPin",
1665 Self::PreferredNetwork => "PreferredNetwork",
1666 Self::UseOnlyPreferredNetwork => "UseOnlyPreferredNetwork",
1667 Self::ApnAuthentication => "ApnAuthentication",
1668 Self::Other(value) => value.as_str(),
1669 }
1670 }
1671 pub fn from_wire(value: &str) -> Option<Self> {
1677 match value {
1678 "ACCurrent" => Some(Self::ACCurrent),
1679 "ACPhaseSwitchingSupported" => Some(Self::ACPhaseSwitchingSupported),
1680 "ACVoltage" => Some(Self::ACVoltage),
1681 "Active" => Some(Self::Active),
1682 "ActiveMonitoringBase" => Some(Self::ActiveMonitoringBase),
1683 "ActiveMonitoringLevel" => Some(Self::ActiveMonitoringLevel),
1684 "ActiveNetworkProfile" => Some(Self::ActiveNetworkProfile),
1685 "ActiveTransactionId" => Some(Self::ActiveTransactionId),
1686 "AdditionalInfoItemsPerMessage" => Some(Self::AdditionalInfoItemsPerMessage),
1687 "AdditionalRootCertificateCheck" => {
1688 Some(Self::AdditionalRootCertificateCheck)
1689 }
1690 "AllowEnergyTransferResumption" => Some(Self::AllowEnergyTransferResumption),
1691 "AllowNewSessionsPendingFirmwareUpdate" => {
1692 Some(Self::AllowNewSessionsPendingFirmwareUpdate)
1693 }
1694 "AllowReset" => Some(Self::AllowReset),
1695 "AllowSecurityProfileDowngrade" => Some(Self::AllowSecurityProfileDowngrade),
1696 "Angle" => Some(Self::Angle),
1697 "Attempts" => Some(Self::Attempts),
1698 "AuthorizeRemoteStart" => Some(Self::AuthorizeRemoteStart),
1699 "AvailabilityState" => Some(Self::AvailabilityState),
1700 "Available" => Some(Self::Available),
1701 "BasicAuthPassword" => Some(Self::BasicAuthPassword),
1702 "BytesPerMessage" => Some(Self::BytesPerMessage),
1703 "CentralContractValidationAllowed" => {
1704 Some(Self::CentralContractValidationAllowed)
1705 }
1706 "CertSigningRepeatTimes" => Some(Self::CertSigningRepeatTimes),
1707 "CertSigningWaitMinimum" => Some(Self::CertSigningWaitMinimum),
1708 "Certificate" => Some(Self::Certificate),
1709 "CertificateEntries" => Some(Self::CertificateEntries),
1710 "CertificateStatusSource" => Some(Self::CertificateStatusSource),
1711 "ChargeProtocol" => Some(Self::ChargeProtocol),
1712 "ChargingCompleteBulk" => Some(Self::ChargingCompleteBulk),
1713 "ChargingCompleteFull" => Some(Self::ChargingCompleteFull),
1714 "ChargingProfilePersistence" => Some(Self::ChargingProfilePersistence),
1715 "ChargingState" => Some(Self::ChargingState),
1716 "ChargingTime" => Some(Self::ChargingTime),
1717 "Color" => Some(Self::Color),
1718 "CommunicationParent" => Some(Self::CommunicationParent),
1719 "Complete" => Some(Self::Complete),
1720 "ConditionsSupported" => Some(Self::ConditionsSupported),
1721 "ConfigurationValueSize" => Some(Self::ConfigurationValueSize),
1722 "ConnectedTime" => Some(Self::ConnectedTime),
1723 "ConnectorType" => Some(Self::ConnectorType),
1724 "ContractCertificateInstallationEnabled" => {
1725 Some(Self::ContractCertificateInstallationEnabled)
1726 }
1727 "ContractValidationOffline" => Some(Self::ContractValidationOffline),
1728 "Count" => Some(Self::Count),
1729 "CountryName" => Some(Self::CountryName),
1730 "Currency" => Some(Self::Currency),
1731 "CurrentImbalance" => Some(Self::CurrentImbalance),
1732 "CustomImplementationEnabled" => Some(Self::CustomImplementationEnabled),
1733 "CustomTriggers" => Some(Self::CustomTriggers),
1734 "DCCurrent" => Some(Self::DCCurrent),
1735 "DCInputPhaseControl" => Some(Self::DCInputPhaseControl),
1736 "DCVoltage" => Some(Self::DCVoltage),
1737 "DataText" => Some(Self::DataText),
1738 "DateTime" => Some(Self::DateTime),
1739 "DepartureTime" => Some(Self::DepartureTime),
1740 "DisablePostAuthorize" => Some(Self::DisablePostAuthorize),
1741 "DisableRemoteAuthorization" => Some(Self::DisableRemoteAuthorization),
1742 "DisplayMessages" => Some(Self::DisplayMessages),
1743 "ECVariant" => Some(Self::ECVariant),
1744 "EVConnectionTimeOut" => Some(Self::EVConnectionTimeOut),
1745 "ElectricalParent" => Some(Self::ElectricalParent),
1746 "Enabled" => Some(Self::Enabled),
1747 "Energy" => Some(Self::Energy),
1748 "EnergyCapacity" => Some(Self::EnergyCapacity),
1749 "EnergyExport" => Some(Self::EnergyExport),
1750 "EnergyExportRegister" => Some(Self::EnergyExportRegister),
1751 "EnergyImport" => Some(Self::EnergyImport),
1752 "EnergyImportRegister" => Some(Self::EnergyImportRegister),
1753 "Entries" => Some(Self::Entries),
1754 "ExternalConfigChangeDate" => Some(Self::ExternalConfigChangeDate),
1755 "ExternalConstraintsProfileDisallowed" => {
1756 Some(Self::ExternalConstraintsProfileDisallowed)
1757 }
1758 "ExternalControlSignalsEnabled" => Some(Self::ExternalControlSignalsEnabled),
1759 "Fallback" => Some(Self::Fallback),
1760 "FanSpeed" => Some(Self::FanSpeed),
1761 "FieldLength" => Some(Self::FieldLength),
1762 "FileTransferProtocols" => Some(Self::FileTransferProtocols),
1763 "FirmwareVersion" => Some(Self::FirmwareVersion),
1764 "Force" => Some(Self::Force),
1765 "Formats" => Some(Self::Formats),
1766 "Frequency" => Some(Self::Frequency),
1767 "FrequencySchedule" => Some(Self::FrequencySchedule),
1768 "FuseRating" => Some(Self::FuseRating),
1769 "HeartbeatInterval" => Some(Self::HeartbeatInterval),
1770 "Height" => Some(Self::Height),
1771 "Humidity" => Some(Self::Humidity),
1772 "Hysteresis" => Some(Self::Hysteresis),
1773 "ICCID" => Some(Self::ICCID),
1774 "IMSI" => Some(Self::IMSI),
1775 "ISO15118EvseId" => Some(Self::ISO15118EvseId),
1776 "IdToken" => Some(Self::IdToken),
1777 "Identity" => Some(Self::Identity),
1778 "Impedance" => Some(Self::Impedance),
1779 "Interval" => Some(Self::Interval),
1780 "ItemsPerMessage" => Some(Self::ItemsPerMessage),
1781 "Label" => Some(Self::Label),
1782 "Language" => Some(Self::Language),
1783 "Length" => Some(Self::Length),
1784 "LifeTime" => Some(Self::LifeTime),
1785 "Light" => Some(Self::Light),
1786 "LimitChangeSignificance" => Some(Self::LimitChangeSignificance),
1787 "LocalAuthorizeOffline" => Some(Self::LocalAuthorizeOffline),
1788 "LocalLoadBalancing" => Some(Self::LocalLoadBalancing),
1789 "LocalPreAuthorize" => Some(Self::LocalPreAuthorize),
1790 "LogicalParent" => Some(Self::LogicalParent),
1791 "Manufacturer" => Some(Self::Manufacturer),
1792 "MasterPassGroupId" => Some(Self::MasterPassGroupId),
1793 "MaxCertificateChainSize" => Some(Self::MaxCertificateChainSize),
1794 "MaxEnergyOnInvalidId" => Some(Self::MaxEnergyOnInvalidId),
1795 "MaxExternalConstraintsId" => Some(Self::MaxExternalConstraintsId),
1796 "MaxPriceElements" => Some(Self::MaxPriceElements),
1797 "Measurands" => Some(Self::Measurands),
1798 "Message" => Some(Self::Message),
1799 "MessageAttemptInterval" => Some(Self::MessageAttemptInterval),
1800 "MessageAttempts" => Some(Self::MessageAttempts),
1801 "MessageTimeout" => Some(Self::MessageTimeout),
1802 "MinimumStatusDuration" => Some(Self::MinimumStatusDuration),
1803 "Mode" => Some(Self::Mode),
1804 "Model" => Some(Self::Model),
1805 "NetworkAddress" => Some(Self::NetworkAddress),
1806 "NetworkConfigurationPriority" => Some(Self::NetworkConfigurationPriority),
1807 "NetworkProfileConnectionAttempts" => {
1808 Some(Self::NetworkProfileConnectionAttempts)
1809 }
1810 "NextTimeOffsetTransitionDateTime" => {
1811 Some(Self::NextTimeOffsetTransitionDateTime)
1812 }
1813 "NonEvseSpecific" => Some(Self::NonEvseSpecific),
1814 "NotificationMaxDelay" => Some(Self::NotificationMaxDelay),
1815 "NotifyChargingLimitWithSchedules" => {
1816 Some(Self::NotifyChargingLimitWithSchedules)
1817 }
1818 "NtpServerUri" => Some(Self::NtpServerUri),
1819 "NtpSource" => Some(Self::NtpSource),
1820 "OfflineQueuingSeverity" => Some(Self::OfflineQueuingSeverity),
1821 "OfflineTariffFallbackMessage" => Some(Self::OfflineTariffFallbackMessage),
1822 "OfflineThreshold" => Some(Self::OfflineThreshold),
1823 "OfflineTxForUnknownIdEnabled" => Some(Self::OfflineTxForUnknownIdEnabled),
1824 "Operated" => Some(Self::Operated),
1825 "OperatingTimes" => Some(Self::OperatingTimes),
1826 "OrganizationName" => Some(Self::OrganizationName),
1827 "Overload" => Some(Self::Overload),
1828 "Percent" => Some(Self::Percent),
1829 "PeriodsPerSchedule" => Some(Self::PeriodsPerSchedule),
1830 "PhaseRotation" => Some(Self::PhaseRotation),
1831 "Phases3to1" => Some(Self::Phases3to1),
1832 "PhysicalParent" => Some(Self::PhysicalParent),
1833 "PnCEnabled" => Some(Self::PnCEnabled),
1834 "Policy" => Some(Self::Policy),
1835 "PostChargingTime" => Some(Self::PostChargingTime),
1836 "Power" => Some(Self::Power),
1837 "Present" => Some(Self::Present),
1838 "Problem" => Some(Self::Problem),
1839 "ProfileStackLevel" => Some(Self::ProfileStackLevel),
1840 "Protecting" => Some(Self::Protecting),
1841 "ProtocolAgreed" => Some(Self::ProtocolAgreed),
1842 "ProtocolSupported" => Some(Self::ProtocolSupported),
1843 "ProtocolSupportedByEV" => Some(Self::ProtocolSupportedByEV),
1844 "PublicKey" => Some(Self::PublicKey),
1845 "PublicKeyWithSignedMeterValue" => Some(Self::PublicKeyWithSignedMeterValue),
1846 "QueueAllMessages" => Some(Self::QueueAllMessages),
1847 "RateUnit" => Some(Self::RateUnit),
1848 "RegisterValuesWithoutPhases" => Some(Self::RegisterValuesWithoutPhases),
1849 "RemainingTimeBulk" => Some(Self::RemainingTimeBulk),
1850 "RemainingTimeFull" => Some(Self::RemainingTimeFull),
1851 "ReportingValueSize" => Some(Self::ReportingValueSize),
1852 "RequestMeteringReceipt" => Some(Self::RequestMeteringReceipt),
1853 "ResetRetries" => Some(Self::ResetRetries),
1854 "ResumptionTimeout" => Some(Self::ResumptionTimeout),
1855 "SampledMeasurands" => Some(Self::SampledMeasurands),
1856 "SamplingInterval" => Some(Self::SamplingInterval),
1857 "SeccId" => Some(Self::SeccId),
1858 "SecurityProfile" => Some(Self::SecurityProfile),
1859 "SendDuringIdle" => Some(Self::SendDuringIdle),
1860 "SerialNumber" => Some(Self::SerialNumber),
1861 "ServiceRenegotiationSupport" => Some(Self::ServiceRenegotiationSupport),
1862 "SignReadings" => Some(Self::SignReadings),
1863 "SignStartedReadings" => Some(Self::SignStartedReadings),
1864 "SignUpdatedReadings" => Some(Self::SignUpdatedReadings),
1865 "SignalStrength" => Some(Self::SignalStrength),
1866 "SlotStatus" => Some(Self::SlotStatus),
1867 "SoC" => Some(Self::SoC),
1868 "SoH" => Some(Self::SoH),
1869 "State" => Some(Self::State),
1870 "StateOfCharge" => Some(Self::StateOfCharge),
1871 "StateOfChargeBulk" => Some(Self::StateOfChargeBulk),
1872 "StopTxOnEVSideDisconnect" => Some(Self::StopTxOnEVSideDisconnect),
1873 "StopTxOnInvalidId" => Some(Self::StopTxOnInvalidId),
1874 "Storage" => Some(Self::Storage),
1875 "SupplyPhases" => Some(Self::SupplyPhases),
1876 "SupportsExpiryDateTime" => Some(Self::SupportsExpiryDateTime),
1877 "Suspending" => Some(Self::Suspending),
1878 "Suspension" => Some(Self::Suspension),
1879 "TariffFallbackMessage" => Some(Self::TariffFallbackMessage),
1880 "Temperature" => Some(Self::Temperature),
1881 "Time" => Some(Self::Time),
1882 "TimeAdjustmentReportingThreshold" => {
1883 Some(Self::TimeAdjustmentReportingThreshold)
1884 }
1885 "TimeOffset" => Some(Self::TimeOffset),
1886 "TimeSource" => Some(Self::TimeSource),
1887 "TimeZone" => Some(Self::TimeZone),
1888 "Timeout" => Some(Self::Timeout),
1889 "Token" => Some(Self::Token),
1890 "TokenType" => Some(Self::TokenType),
1891 "TotalCostFallbackMessage" => Some(Self::TotalCostFallbackMessage),
1892 "Tries" => Some(Self::Tries),
1893 "Tripped" => Some(Self::Tripped),
1894 "TxBeforeAcceptedEnabled" => Some(Self::TxBeforeAcceptedEnabled),
1895 "TxEndedInterval" => Some(Self::TxEndedInterval),
1896 "TxEndedMeasurands" => Some(Self::TxEndedMeasurands),
1897 "TxStartPoint" => Some(Self::TxStartPoint),
1898 "TxStartedMeasurands" => Some(Self::TxStartedMeasurands),
1899 "TxStopPoint" => Some(Self::TxStopPoint),
1900 "TxUpdatedInterval" => Some(Self::TxUpdatedInterval),
1901 "TxUpdatedMeasurands" => Some(Self::TxUpdatedMeasurands),
1902 "UnlockOnEVSideDisconnect" => Some(Self::UnlockOnEVSideDisconnect),
1903 "V2GCertificateInstallationEnabled" => {
1904 Some(Self::V2GCertificateInstallationEnabled)
1905 }
1906 "VehicleCertificate" => Some(Self::VehicleCertificate),
1907 "VehicleId" => Some(Self::VehicleId),
1908 "VersionDate" => Some(Self::VersionDate),
1909 "VersionNumber" => Some(Self::VersionNumber),
1910 "VoltageImbalance" => Some(Self::VoltageImbalance),
1911 "VendorName" => Some(Self::VendorName),
1912 "SupportedIdTokenType" => Some(Self::SupportedIdTokenType),
1913 "SelftestActive" => Some(Self::SelftestActive),
1914 "CHAdeMOProtocolNumber" => Some(Self::CHAdeMOProtocolNumber),
1915 "VehicleStatus" => Some(Self::VehicleStatus),
1916 "DynamicControl" => Some(Self::DynamicControl),
1917 "HighCurrentControl" => Some(Self::HighCurrentControl),
1918 "HighVoltageControl" => Some(Self::HighVoltageControl),
1919 "AutoManufacturerCode" => Some(Self::AutoManufacturerCode),
1920 "VehicleID" => Some(Self::VehicleID),
1921 "BatteryCapacity" => Some(Self::BatteryCapacity),
1922 "ValueSize" => Some(Self::ValueSize),
1923 "EvseId" => Some(Self::EvseId),
1924 "MaxScheduleEntries" => Some(Self::MaxScheduleEntries),
1925 "RequestedEnergyTransferMode" => Some(Self::RequestedEnergyTransferMode),
1926 "NotificationDelay" => Some(Self::NotificationDelay),
1927 "Capacity" => Some(Self::Capacity),
1928 "MonitoringBase" => Some(Self::MonitoringBase),
1929 "MonitoringLevel" => Some(Self::MonitoringLevel),
1930 "RetryBackOffRandomRange" => Some(Self::RetryBackOffRandomRange),
1931 "RetryBackOffRepeatTimes" => Some(Self::RetryBackOffRepeatTimes),
1932 "RetryBackOffWaitMinimum" => Some(Self::RetryBackOffWaitMinimum),
1933 "WebSocketPingInterval" => Some(Self::WebSocketPingInterval),
1934 "EnergyTransferResumptionRandomRange" => {
1935 Some(Self::EnergyTransferResumptionRandomRange)
1936 }
1937 "OcppCsmsUrl" => Some(Self::OcppCsmsUrl),
1938 "OcppInterface" => Some(Self::OcppInterface),
1939 "OcppTransport" => Some(Self::OcppTransport),
1940 "OcppVersion" => Some(Self::OcppVersion),
1941 "CsmsRootCertificateHashAlgorithm" => {
1942 Some(Self::CsmsRootCertificateHashAlgorithm)
1943 }
1944 "CsmsRootCertificateIssuerKeyHash" => {
1945 Some(Self::CsmsRootCertificateIssuerKeyHash)
1946 }
1947 "CsmsRootCertificateIssuerNameHash" => {
1948 Some(Self::CsmsRootCertificateIssuerNameHash)
1949 }
1950 "CsmsRootCertificateSerialNumber" => {
1951 Some(Self::CsmsRootCertificateSerialNumber)
1952 }
1953 "VpnEnabled" => Some(Self::VpnEnabled),
1954 "VpnType" => Some(Self::VpnType),
1955 "VpnServer" => Some(Self::VpnServer),
1956 "VpnUser" => Some(Self::VpnUser),
1957 "VpnGroup" => Some(Self::VpnGroup),
1958 "VpnPassword" => Some(Self::VpnPassword),
1959 "VpnKey" => Some(Self::VpnKey),
1960 "ApnEnabled" => Some(Self::ApnEnabled),
1961 "Apn" => Some(Self::Apn),
1962 "ApnUserName" => Some(Self::ApnUserName),
1963 "ApnPassword" => Some(Self::ApnPassword),
1964 "SimPin" => Some(Self::SimPin),
1965 "PreferredNetwork" => Some(Self::PreferredNetwork),
1966 "UseOnlyPreferredNetwork" => Some(Self::UseOnlyPreferredNetwork),
1967 "ApnAuthentication" => Some(Self::ApnAuthentication),
1968 _ => None,
1969 }
1970 }
1971 pub fn from_wire_or_other(value: &str) -> Result<Self, ValueTooLong> {
1977 if let Some(standardized) = Self::from_wire(value) {
1978 return Ok(standardized);
1979 }
1980 heapless::String::try_from(value).map(Self::Other).map_err(|_| ValueTooLong)
1981 }
1982 pub fn is_standardized(&self) -> bool {
1985 !matches!(self, Self::Other(_))
1986 }
1987 pub fn data_type(&self) -> Option<&'static str> {
1989 match self {
1990 Self::ACCurrent => Some("decimal"),
1991 Self::ACPhaseSwitchingSupported => Some("boolean"),
1992 Self::ACVoltage => Some("decimal"),
1993 Self::Active => Some("boolean"),
1994 Self::ActiveMonitoringBase => Some("OptionList"),
1995 Self::ActiveMonitoringLevel => Some("integer"),
1996 Self::ActiveNetworkProfile => Some("boolean"),
1997 Self::ActiveTransactionId => Some("string"),
1998 Self::AdditionalInfoItemsPerMessage => Some("integer"),
1999 Self::AdditionalRootCertificateCheck => Some("boolean"),
2000 Self::AllowEnergyTransferResumption => Some("boolean"),
2001 Self::AllowNewSessionsPendingFirmwareUpdate => Some("boolean"),
2002 Self::AllowReset => Some("boolean"),
2003 Self::AllowSecurityProfileDowngrade => Some("boolean"),
2004 Self::Angle => Some("decimal"),
2005 Self::Attempts => Some("integer"),
2006 Self::AuthorizeRemoteStart => Some("boolean"),
2007 Self::AvailabilityState => Some("OptionList"),
2008 Self::Available => Some("boolean"),
2009 Self::BasicAuthPassword => Some("string"),
2010 Self::BytesPerMessage => Some("integer"),
2011 Self::CentralContractValidationAllowed => Some("boolean"),
2012 Self::CertSigningRepeatTimes => Some("integer"),
2013 Self::CertSigningWaitMinimum => Some("integer"),
2014 Self::Certificate => Some("string"),
2015 Self::CertificateEntries => Some("integer"),
2016 Self::CertificateStatusSource => Some("string"),
2017 Self::ChargeProtocol => Some("string"),
2018 Self::ChargingCompleteBulk => Some("boolean"),
2019 Self::ChargingCompleteFull => Some("boolean"),
2020 Self::ChargingProfilePersistence => Some("boolean"),
2021 Self::ChargingState => Some("OptionList"),
2022 Self::ChargingTime => Some("decimal"),
2023 Self::Color => Some("string"),
2024 Self::CommunicationParent => Some("string"),
2025 Self::Complete => Some("boolean"),
2026 Self::ConditionsSupported => Some("boolean"),
2027 Self::ConfigurationValueSize => Some("integer"),
2028 Self::ConnectedTime => Some("decimal"),
2029 Self::ConnectorType => Some("OptionList"),
2030 Self::ContractCertificateInstallationEnabled => Some("boolean"),
2031 Self::ContractValidationOffline => Some("boolean"),
2032 Self::Count => Some("integer"),
2033 Self::CountryName => Some("string"),
2034 Self::Currency => Some("string"),
2035 Self::CurrentImbalance => Some("decimal"),
2036 Self::CustomImplementationEnabled => Some("boolean"),
2037 Self::CustomTriggers => Some("MemberList"),
2038 Self::DCCurrent => Some("decimal"),
2039 Self::DCInputPhaseControl => Some("boolean"),
2040 Self::DCVoltage => Some("decimal"),
2041 Self::DataText => Some("string"),
2042 Self::DateTime => Some("dateTime"),
2043 Self::DepartureTime => Some("dateTime"),
2044 Self::DisablePostAuthorize => Some("boolean"),
2045 Self::DisableRemoteAuthorization => Some("boolean"),
2046 Self::DisplayMessages => Some("integer"),
2047 Self::ECVariant => Some("string"),
2048 Self::EVConnectionTimeOut => Some("integer"),
2049 Self::ElectricalParent => Some("string"),
2050 Self::Enabled => Some("boolean"),
2051 Self::Energy => Some("decimal"),
2052 Self::EnergyCapacity => Some("decimal"),
2053 Self::EnergyExport => Some("decimal"),
2054 Self::EnergyExportRegister => Some("decimal"),
2055 Self::EnergyImport => Some("decimal"),
2056 Self::EnergyImportRegister => Some("decimal"),
2057 Self::Entries => Some("integer"),
2058 Self::ExternalConfigChangeDate => Some("DateTime"),
2059 Self::ExternalConstraintsProfileDisallowed => Some("boolean"),
2060 Self::ExternalControlSignalsEnabled => Some("boolean"),
2061 Self::Fallback => Some("boolean"),
2062 Self::FanSpeed => Some("decimal"),
2063 Self::FieldLength => Some("integer"),
2064 Self::FileTransferProtocols => Some("MemberList"),
2065 Self::FirmwareVersion => Some("string"),
2066 Self::Force => Some("decimal"),
2067 Self::Formats => Some("MemberList"),
2068 Self::Frequency => Some("decimal"),
2069 Self::FrequencySchedule => Some("string"),
2070 Self::FuseRating => Some("decimal"),
2071 Self::HeartbeatInterval => Some("integer"),
2072 Self::Height => Some("decimal"),
2073 Self::Humidity => Some("decimal"),
2074 Self::Hysteresis => Some("decimal"),
2075 Self::ICCID => Some("string"),
2076 Self::IMSI => Some("string"),
2077 Self::ISO15118EvseId => Some("string"),
2078 Self::IdToken => Some("string"),
2079 Self::Identity => Some("string"),
2080 Self::Impedance => Some("decimal"),
2081 Self::Interval => Some("integer"),
2082 Self::ItemsPerMessage => Some("integer"),
2083 Self::Label => Some("string"),
2084 Self::Language => Some("OptionList"),
2085 Self::Length => Some("decimal"),
2086 Self::LifeTime => Some("integer"),
2087 Self::Light => Some("decimal"),
2088 Self::LimitChangeSignificance => Some("decimal"),
2089 Self::LocalAuthorizeOffline => Some("boolean"),
2090 Self::LocalLoadBalancing => Some("decimal"),
2091 Self::LocalPreAuthorize => Some("boolean"),
2092 Self::LogicalParent => Some("string"),
2093 Self::Manufacturer => Some("string"),
2094 Self::MasterPassGroupId => Some("string"),
2095 Self::MaxCertificateChainSize => Some("integer"),
2096 Self::MaxEnergyOnInvalidId => Some("integer"),
2097 Self::MaxExternalConstraintsId => Some("integer"),
2098 Self::MaxPriceElements => Some("integer"),
2099 Self::Measurands => Some("MemberList"),
2100 Self::Message => Some("string"),
2101 Self::MessageAttemptInterval => Some("integer"),
2102 Self::MessageAttempts => Some("integer"),
2103 Self::MessageTimeout => Some("integer"),
2104 Self::MinimumStatusDuration => Some("integer"),
2105 Self::Mode => Some("string"),
2106 Self::Model => Some("string"),
2107 Self::NetworkAddress => Some("string"),
2108 Self::NetworkConfigurationPriority => Some("SequenceList"),
2109 Self::NetworkProfileConnectionAttempts => Some("integer"),
2110 Self::NextTimeOffsetTransitionDateTime => Some("DateTime"),
2111 Self::NonEvseSpecific => Some("boolean"),
2112 Self::NotificationMaxDelay => Some("integer"),
2113 Self::NotifyChargingLimitWithSchedules => Some("boolean"),
2114 Self::NtpServerUri => Some("string"),
2115 Self::NtpSource => Some("OptionList"),
2116 Self::OfflineQueuingSeverity => Some("integer"),
2117 Self::OfflineTariffFallbackMessage => Some("string"),
2118 Self::OfflineThreshold => Some("integer"),
2119 Self::OfflineTxForUnknownIdEnabled => Some("boolean"),
2120 Self::Operated => Some("boolean"),
2121 Self::OperatingTimes => Some("string"),
2122 Self::OrganizationName => Some("string"),
2123 Self::Overload => Some("boolean"),
2124 Self::Percent => Some("decimal"),
2125 Self::PeriodsPerSchedule => Some("integer"),
2126 Self::PhaseRotation => Some("string"),
2127 Self::Phases3to1 => Some("boolean"),
2128 Self::PhysicalParent => Some("string"),
2129 Self::PnCEnabled => Some("boolean"),
2130 Self::Policy => Some("OptionList"),
2131 Self::PostChargingTime => Some("decimal"),
2132 Self::Power => Some("decimal"),
2133 Self::Present => Some("boolean"),
2134 Self::Problem => Some("boolean"),
2135 Self::ProfileStackLevel => Some("integer"),
2136 Self::Protecting => Some("boolean"),
2137 Self::ProtocolAgreed => Some("string"),
2138 Self::ProtocolSupported => Some("string"),
2139 Self::ProtocolSupportedByEV => Some("string"),
2140 Self::PublicKey => Some("string"),
2141 Self::PublicKeyWithSignedMeterValue => Some("boolean"),
2142 Self::QueueAllMessages => Some("boolean"),
2143 Self::RateUnit => Some("string"),
2144 Self::RegisterValuesWithoutPhases => Some("boolean"),
2145 Self::RemainingTimeBulk => Some("integer"),
2146 Self::RemainingTimeFull => Some("integer"),
2147 Self::ReportingValueSize => Some("integer"),
2148 Self::RequestMeteringReceipt => Some("boolean"),
2149 Self::ResetRetries => Some("integer"),
2150 Self::ResumptionTimeout => Some("integer"),
2151 Self::SampledMeasurands => Some("MemberList"),
2152 Self::SamplingInterval => Some("decimal"),
2153 Self::SeccId => Some("string"),
2154 Self::SecurityProfile => Some("integer"),
2155 Self::SendDuringIdle => Some("boolean"),
2156 Self::SerialNumber => Some("string"),
2157 Self::ServiceRenegotiationSupport => Some("boolean"),
2158 Self::SignReadings => Some("boolean"),
2159 Self::SignStartedReadings => Some("boolean"),
2160 Self::SignUpdatedReadings => Some("boolean"),
2161 Self::SignalStrength => Some("decimal"),
2162 Self::SlotStatus => Some("OptionList"),
2163 Self::SoC => Some("integer"),
2164 Self::SoH => Some("integer"),
2165 Self::State => Some("string"),
2166 Self::StateOfCharge => Some("decimal"),
2167 Self::StateOfChargeBulk => Some("decimal"),
2168 Self::StopTxOnEVSideDisconnect => Some("boolean"),
2169 Self::StopTxOnInvalidId => Some("boolean"),
2170 Self::Storage => Some("integer"),
2171 Self::SupplyPhases => Some("integer"),
2172 Self::SupportsExpiryDateTime => Some("boolean"),
2173 Self::Suspending => Some("boolean"),
2174 Self::Suspension => Some("boolean"),
2175 Self::TariffFallbackMessage => Some("string"),
2176 Self::Temperature => Some("decimal"),
2177 Self::Time => Some("dateTime"),
2178 Self::TimeAdjustmentReportingThreshold => Some("integer"),
2179 Self::TimeOffset => Some("string"),
2180 Self::TimeSource => Some("SequenceList"),
2181 Self::TimeZone => Some("string"),
2182 Self::Timeout => Some("decimal"),
2183 Self::Token => Some("string"),
2184 Self::TokenType => Some("OptionList"),
2185 Self::TotalCostFallbackMessage => Some("string"),
2186 Self::Tries => Some("integer"),
2187 Self::Tripped => Some("boolean"),
2188 Self::TxBeforeAcceptedEnabled => Some("boolean"),
2189 Self::TxEndedInterval => Some("integer"),
2190 Self::TxEndedMeasurands => Some("MemberList"),
2191 Self::TxStartPoint => Some("MemberList"),
2192 Self::TxStartedMeasurands => Some("MemberList"),
2193 Self::TxStopPoint => Some("MemberList"),
2194 Self::TxUpdatedInterval => Some("integer"),
2195 Self::TxUpdatedMeasurands => Some("MemberList"),
2196 Self::UnlockOnEVSideDisconnect => Some("boolean"),
2197 Self::V2GCertificateInstallationEnabled => Some("boolean"),
2198 Self::VehicleCertificate => Some("string"),
2199 Self::VehicleId => Some("string"),
2200 Self::VersionDate => Some("dateTime"),
2201 Self::VersionNumber => Some("string"),
2202 Self::VoltageImbalance => Some("decimal"),
2203 Self::VendorName => None,
2204 Self::SupportedIdTokenType => None,
2205 Self::SelftestActive => None,
2206 Self::CHAdeMOProtocolNumber => None,
2207 Self::VehicleStatus => None,
2208 Self::DynamicControl => None,
2209 Self::HighCurrentControl => None,
2210 Self::HighVoltageControl => None,
2211 Self::AutoManufacturerCode => None,
2212 Self::VehicleID => None,
2213 Self::BatteryCapacity => None,
2214 Self::ValueSize => None,
2215 Self::EvseId => None,
2216 Self::MaxScheduleEntries => None,
2217 Self::RequestedEnergyTransferMode => None,
2218 Self::NotificationDelay => None,
2219 Self::Capacity => None,
2220 Self::MonitoringBase => None,
2221 Self::MonitoringLevel => None,
2222 Self::RetryBackOffRandomRange => None,
2223 Self::RetryBackOffRepeatTimes => None,
2224 Self::RetryBackOffWaitMinimum => None,
2225 Self::WebSocketPingInterval => None,
2226 Self::EnergyTransferResumptionRandomRange => None,
2227 Self::OcppCsmsUrl => None,
2228 Self::OcppInterface => None,
2229 Self::OcppTransport => None,
2230 Self::OcppVersion => None,
2231 Self::CsmsRootCertificateHashAlgorithm => None,
2232 Self::CsmsRootCertificateIssuerKeyHash => None,
2233 Self::CsmsRootCertificateIssuerNameHash => None,
2234 Self::CsmsRootCertificateSerialNumber => None,
2235 Self::VpnEnabled => None,
2236 Self::VpnType => None,
2237 Self::VpnServer => None,
2238 Self::VpnUser => None,
2239 Self::VpnGroup => None,
2240 Self::VpnPassword => None,
2241 Self::VpnKey => None,
2242 Self::ApnEnabled => None,
2243 Self::Apn => None,
2244 Self::ApnUserName => None,
2245 Self::ApnPassword => None,
2246 Self::SimPin => None,
2247 Self::PreferredNetwork => None,
2248 Self::UseOnlyPreferredNetwork => None,
2249 Self::ApnAuthentication => None,
2250 Self::Other(_) => None,
2251 }
2252 }
2253 pub fn unit(&self) -> Option<&'static str> {
2255 match self {
2256 Self::ACCurrent => Some("A"),
2257 Self::ACPhaseSwitchingSupported => None,
2258 Self::ACVoltage => Some("V"),
2259 Self::Active => None,
2260 Self::ActiveMonitoringBase => None,
2261 Self::ActiveMonitoringLevel => None,
2262 Self::ActiveNetworkProfile => None,
2263 Self::ActiveTransactionId => None,
2264 Self::AdditionalInfoItemsPerMessage => None,
2265 Self::AdditionalRootCertificateCheck => None,
2266 Self::AllowEnergyTransferResumption => None,
2267 Self::AllowNewSessionsPendingFirmwareUpdate => None,
2268 Self::AllowReset => None,
2269 Self::AllowSecurityProfileDowngrade => None,
2270 Self::Angle => Some("Deg"),
2271 Self::Attempts => None,
2272 Self::AuthorizeRemoteStart => None,
2273 Self::AvailabilityState => None,
2274 Self::Available => None,
2275 Self::BasicAuthPassword => None,
2276 Self::BytesPerMessage => None,
2277 Self::CentralContractValidationAllowed => None,
2278 Self::CertSigningRepeatTimes => None,
2279 Self::CertSigningWaitMinimum => None,
2280 Self::Certificate => None,
2281 Self::CertificateEntries => None,
2282 Self::CertificateStatusSource => None,
2283 Self::ChargeProtocol => None,
2284 Self::ChargingCompleteBulk => None,
2285 Self::ChargingCompleteFull => None,
2286 Self::ChargingProfilePersistence => None,
2287 Self::ChargingState => None,
2288 Self::ChargingTime => Some("s"),
2289 Self::Color => None,
2290 Self::CommunicationParent => None,
2291 Self::Complete => None,
2292 Self::ConditionsSupported => None,
2293 Self::ConfigurationValueSize => None,
2294 Self::ConnectedTime => Some("s"),
2295 Self::ConnectorType => None,
2296 Self::ContractCertificateInstallationEnabled => None,
2297 Self::ContractValidationOffline => None,
2298 Self::Count => None,
2299 Self::CountryName => None,
2300 Self::Currency => None,
2301 Self::CurrentImbalance => Some("Percent"),
2302 Self::CustomImplementationEnabled => None,
2303 Self::CustomTriggers => None,
2304 Self::DCCurrent => Some("A"),
2305 Self::DCInputPhaseControl => None,
2306 Self::DCVoltage => Some("V"),
2307 Self::DataText => None,
2308 Self::DateTime => None,
2309 Self::DepartureTime => None,
2310 Self::DisablePostAuthorize => None,
2311 Self::DisableRemoteAuthorization => None,
2312 Self::DisplayMessages => None,
2313 Self::ECVariant => None,
2314 Self::EVConnectionTimeOut => Some("s"),
2315 Self::ElectricalParent => None,
2316 Self::Enabled => None,
2317 Self::Energy => Some("Wh"),
2318 Self::EnergyCapacity => Some("Wh"),
2319 Self::EnergyExport => Some("Wh"),
2320 Self::EnergyExportRegister => Some("Wh"),
2321 Self::EnergyImport => Some("Wh"),
2322 Self::EnergyImportRegister => Some("Wh"),
2323 Self::Entries => None,
2324 Self::ExternalConfigChangeDate => None,
2325 Self::ExternalConstraintsProfileDisallowed => None,
2326 Self::ExternalControlSignalsEnabled => None,
2327 Self::Fallback => None,
2328 Self::FanSpeed => Some("RPM"),
2329 Self::FieldLength => None,
2330 Self::FileTransferProtocols => None,
2331 Self::FirmwareVersion => None,
2332 Self::Force => Some("N"),
2333 Self::Formats => None,
2334 Self::Frequency => Some("Hz"),
2335 Self::FrequencySchedule => None,
2336 Self::FuseRating => Some("A"),
2337 Self::HeartbeatInterval => Some("s"),
2338 Self::Height => Some("m"),
2339 Self::Humidity => Some("RH"),
2340 Self::Hysteresis => Some("Percent"),
2341 Self::ICCID => None,
2342 Self::IMSI => None,
2343 Self::ISO15118EvseId => None,
2344 Self::IdToken => None,
2345 Self::Identity => None,
2346 Self::Impedance => Some("Ohm"),
2347 Self::Interval => Some("s"),
2348 Self::ItemsPerMessage => None,
2349 Self::Label => None,
2350 Self::Language => None,
2351 Self::Length => Some("m"),
2352 Self::LifeTime => Some("s"),
2353 Self::Light => Some("lx"),
2354 Self::LimitChangeSignificance => None,
2355 Self::LocalAuthorizeOffline => None,
2356 Self::LocalLoadBalancing => None,
2357 Self::LocalPreAuthorize => None,
2358 Self::LogicalParent => None,
2359 Self::Manufacturer => None,
2360 Self::MasterPassGroupId => None,
2361 Self::MaxCertificateChainSize => None,
2362 Self::MaxEnergyOnInvalidId => Some("Wh"),
2363 Self::MaxExternalConstraintsId => None,
2364 Self::MaxPriceElements => None,
2365 Self::Measurands => None,
2366 Self::Message => None,
2367 Self::MessageAttemptInterval => Some("s"),
2368 Self::MessageAttempts => None,
2369 Self::MessageTimeout => Some("s"),
2370 Self::MinimumStatusDuration => Some("s"),
2371 Self::Mode => None,
2372 Self::Model => None,
2373 Self::NetworkAddress => None,
2374 Self::NetworkConfigurationPriority => None,
2375 Self::NetworkProfileConnectionAttempts => None,
2376 Self::NextTimeOffsetTransitionDateTime => None,
2377 Self::NonEvseSpecific => None,
2378 Self::NotificationMaxDelay => Some("s"),
2379 Self::NotifyChargingLimitWithSchedules => None,
2380 Self::NtpServerUri => None,
2381 Self::NtpSource => None,
2382 Self::OfflineQueuingSeverity => None,
2383 Self::OfflineTariffFallbackMessage => None,
2384 Self::OfflineThreshold => Some("s"),
2385 Self::OfflineTxForUnknownIdEnabled => None,
2386 Self::Operated => None,
2387 Self::OperatingTimes => None,
2388 Self::OrganizationName => None,
2389 Self::Overload => None,
2390 Self::Percent => Some("Percent"),
2391 Self::PeriodsPerSchedule => None,
2392 Self::PhaseRotation => None,
2393 Self::Phases3to1 => None,
2394 Self::PhysicalParent => None,
2395 Self::PnCEnabled => None,
2396 Self::Policy => None,
2397 Self::PostChargingTime => Some("s"),
2398 Self::Power => Some("W,kW"),
2399 Self::Present => None,
2400 Self::Problem => None,
2401 Self::ProfileStackLevel => None,
2402 Self::Protecting => None,
2403 Self::ProtocolAgreed => None,
2404 Self::ProtocolSupported => None,
2405 Self::ProtocolSupportedByEV => None,
2406 Self::PublicKey => None,
2407 Self::PublicKeyWithSignedMeterValue => None,
2408 Self::QueueAllMessages => None,
2409 Self::RateUnit => None,
2410 Self::RegisterValuesWithoutPhases => None,
2411 Self::RemainingTimeBulk => Some("s"),
2412 Self::RemainingTimeFull => Some("s"),
2413 Self::ReportingValueSize => None,
2414 Self::RequestMeteringReceipt => None,
2415 Self::ResetRetries => None,
2416 Self::ResumptionTimeout => Some("s"),
2417 Self::SampledMeasurands => None,
2418 Self::SamplingInterval => Some("s"),
2419 Self::SeccId => None,
2420 Self::SecurityProfile => None,
2421 Self::SendDuringIdle => None,
2422 Self::SerialNumber => None,
2423 Self::ServiceRenegotiationSupport => None,
2424 Self::SignReadings => None,
2425 Self::SignStartedReadings => None,
2426 Self::SignUpdatedReadings => None,
2427 Self::SignalStrength => Some("dBm"),
2428 Self::SlotStatus => None,
2429 Self::SoC => Some("Percent"),
2430 Self::SoH => Some("Percent"),
2431 Self::State => None,
2432 Self::StateOfCharge => Some("Percent"),
2433 Self::StateOfChargeBulk => Some("Percent"),
2434 Self::StopTxOnEVSideDisconnect => None,
2435 Self::StopTxOnInvalidId => None,
2436 Self::Storage => Some("B"),
2437 Self::SupplyPhases => None,
2438 Self::SupportsExpiryDateTime => None,
2439 Self::Suspending => None,
2440 Self::Suspension => None,
2441 Self::TariffFallbackMessage => None,
2442 Self::Temperature => Some("Celsius, Fahrenheit"),
2443 Self::Time => None,
2444 Self::TimeAdjustmentReportingThreshold => Some("s"),
2445 Self::TimeOffset => None,
2446 Self::TimeSource => None,
2447 Self::TimeZone => None,
2448 Self::Timeout => Some("s"),
2449 Self::Token => None,
2450 Self::TokenType => None,
2451 Self::TotalCostFallbackMessage => None,
2452 Self::Tries => None,
2453 Self::Tripped => None,
2454 Self::TxBeforeAcceptedEnabled => None,
2455 Self::TxEndedInterval => Some("s"),
2456 Self::TxEndedMeasurands => None,
2457 Self::TxStartPoint => None,
2458 Self::TxStartedMeasurands => None,
2459 Self::TxStopPoint => None,
2460 Self::TxUpdatedInterval => Some("s"),
2461 Self::TxUpdatedMeasurands => None,
2462 Self::UnlockOnEVSideDisconnect => None,
2463 Self::V2GCertificateInstallationEnabled => None,
2464 Self::VehicleCertificate => None,
2465 Self::VehicleId => None,
2466 Self::VersionDate => None,
2467 Self::VersionNumber => None,
2468 Self::VoltageImbalance => Some("Percent"),
2469 Self::VendorName => None,
2470 Self::SupportedIdTokenType => None,
2471 Self::SelftestActive => None,
2472 Self::CHAdeMOProtocolNumber => None,
2473 Self::VehicleStatus => None,
2474 Self::DynamicControl => None,
2475 Self::HighCurrentControl => None,
2476 Self::HighVoltageControl => None,
2477 Self::AutoManufacturerCode => None,
2478 Self::VehicleID => None,
2479 Self::BatteryCapacity => None,
2480 Self::ValueSize => None,
2481 Self::EvseId => None,
2482 Self::MaxScheduleEntries => None,
2483 Self::RequestedEnergyTransferMode => None,
2484 Self::NotificationDelay => None,
2485 Self::Capacity => None,
2486 Self::MonitoringBase => None,
2487 Self::MonitoringLevel => None,
2488 Self::RetryBackOffRandomRange => None,
2489 Self::RetryBackOffRepeatTimes => None,
2490 Self::RetryBackOffWaitMinimum => None,
2491 Self::WebSocketPingInterval => None,
2492 Self::EnergyTransferResumptionRandomRange => None,
2493 Self::OcppCsmsUrl => None,
2494 Self::OcppInterface => None,
2495 Self::OcppTransport => None,
2496 Self::OcppVersion => None,
2497 Self::CsmsRootCertificateHashAlgorithm => None,
2498 Self::CsmsRootCertificateIssuerKeyHash => None,
2499 Self::CsmsRootCertificateIssuerNameHash => None,
2500 Self::CsmsRootCertificateSerialNumber => None,
2501 Self::VpnEnabled => None,
2502 Self::VpnType => None,
2503 Self::VpnServer => None,
2504 Self::VpnUser => None,
2505 Self::VpnGroup => None,
2506 Self::VpnPassword => None,
2507 Self::VpnKey => None,
2508 Self::ApnEnabled => None,
2509 Self::Apn => None,
2510 Self::ApnUserName => None,
2511 Self::ApnPassword => None,
2512 Self::SimPin => None,
2513 Self::PreferredNetwork => None,
2514 Self::UseOnlyPreferredNetwork => None,
2515 Self::ApnAuthentication => None,
2516 Self::Other(_) => None,
2517 }
2518 }
2519}
2520impl core::fmt::Display for VariableName {
2521 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2522 f.write_str(self.as_str())
2523 }
2524}
2525impl core::str::FromStr for VariableName {
2526 type Err = ValueTooLong;
2527 fn from_str(value: &str) -> Result<Self, Self::Err> {
2528 Self::from_wire_or_other(value)
2529 }
2530}
2531impl PartialEq for VariableName {
2532 fn eq(&self, other: &Self) -> bool {
2533 self.as_str() == other.as_str()
2534 }
2535}
2536impl Eq for VariableName {}
2537impl core::hash::Hash for VariableName {
2538 fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
2539 self.as_str().hash(state);
2540 }
2541}
2542impl PartialOrd for VariableName {
2543 fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
2544 Some(self.cmp(other))
2545 }
2546}
2547impl Ord for VariableName {
2548 fn cmp(&self, other: &Self) -> core::cmp::Ordering {
2549 self.as_str().cmp(other.as_str())
2550 }
2551}
2552#[cfg(feature = "serde")]
2553impl serde::Serialize for VariableName {
2554 fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2555 serializer.serialize_str(self.as_str())
2556 }
2557}
2558#[cfg(feature = "serde")]
2559impl<'de> serde::Deserialize<'de> for VariableName {
2560 fn deserialize<D: serde::Deserializer<'de>>(
2561 deserializer: D,
2562 ) -> Result<Self, D::Error> {
2563 struct Visitor;
2564 impl<'v> serde::de::Visitor<'v> for Visitor {
2565 type Value = VariableName;
2566 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2567 f.write_str("a VariableName string")
2568 }
2569 fn visit_str<E: serde::de::Error>(
2570 self,
2571 value: &str,
2572 ) -> Result<Self::Value, E> {
2573 VariableName::from_wire_or_other(value).map_err(serde::de::Error::custom)
2574 }
2575 }
2576 deserializer.deserialize_str(Visitor)
2577 }
2578}
2579#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
2586#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2587pub enum SecurityEvent {
2588 FirmwareUpdated,
2590 FailedToAuthenticateAtCsms,
2592 CsmsFailedToAuthenticate,
2594 SettingSystemTime,
2596 StartupOfTheDevice,
2598 ResetOrReboot,
2600 SecurityLogWasCleared,
2602 ReconfigurationOfSecurityParameters,
2604 MemoryExhaustion,
2606 InvalidMessages,
2608 AttemptedReplayAttacks,
2610 TamperDetectionActivated,
2612 InvalidFirmwareSignature,
2614 InvalidFirmwareSigningCertificate,
2616 InvalidCsmsCertificate,
2618 InvalidChargingStationCertificate,
2620 DiscardedRenewedClientCertificate,
2622 InvalidTLSVersion,
2624 InvalidTLSCipherSuite,
2626 MaintenanceLoginAccepted,
2628 MaintenanceLoginFailed,
2630}
2631impl SecurityEvent {
2632 pub const ALL: &'static [Self] = &[
2634 Self::FirmwareUpdated,
2635 Self::FailedToAuthenticateAtCsms,
2636 Self::CsmsFailedToAuthenticate,
2637 Self::SettingSystemTime,
2638 Self::StartupOfTheDevice,
2639 Self::ResetOrReboot,
2640 Self::SecurityLogWasCleared,
2641 Self::ReconfigurationOfSecurityParameters,
2642 Self::MemoryExhaustion,
2643 Self::InvalidMessages,
2644 Self::AttemptedReplayAttacks,
2645 Self::TamperDetectionActivated,
2646 Self::InvalidFirmwareSignature,
2647 Self::InvalidFirmwareSigningCertificate,
2648 Self::InvalidCsmsCertificate,
2649 Self::InvalidChargingStationCertificate,
2650 Self::DiscardedRenewedClientCertificate,
2651 Self::InvalidTLSVersion,
2652 Self::InvalidTLSCipherSuite,
2653 Self::MaintenanceLoginAccepted,
2654 Self::MaintenanceLoginFailed,
2655 ];
2656 pub const fn as_str(&self) -> &'static str {
2658 match self {
2659 Self::FirmwareUpdated => "FirmwareUpdated",
2660 Self::FailedToAuthenticateAtCsms => "FailedToAuthenticateAtCsms",
2661 Self::CsmsFailedToAuthenticate => "CsmsFailedToAuthenticate",
2662 Self::SettingSystemTime => "SettingSystemTime",
2663 Self::StartupOfTheDevice => "StartupOfTheDevice",
2664 Self::ResetOrReboot => "ResetOrReboot",
2665 Self::SecurityLogWasCleared => "SecurityLogWasCleared",
2666 Self::ReconfigurationOfSecurityParameters => {
2667 "ReconfigurationOfSecurityParameters"
2668 }
2669 Self::MemoryExhaustion => "MemoryExhaustion",
2670 Self::InvalidMessages => "InvalidMessages",
2671 Self::AttemptedReplayAttacks => "AttemptedReplayAttacks",
2672 Self::TamperDetectionActivated => "TamperDetectionActivated",
2673 Self::InvalidFirmwareSignature => "InvalidFirmwareSignature",
2674 Self::InvalidFirmwareSigningCertificate => {
2675 "InvalidFirmwareSigningCertificate"
2676 }
2677 Self::InvalidCsmsCertificate => "InvalidCsmsCertificate",
2678 Self::InvalidChargingStationCertificate => {
2679 "InvalidChargingStationCertificate"
2680 }
2681 Self::DiscardedRenewedClientCertificate => {
2682 "DiscardedRenewedClientCertificate"
2683 }
2684 Self::InvalidTLSVersion => "InvalidTLSVersion",
2685 Self::InvalidTLSCipherSuite => "InvalidTLSCipherSuite",
2686 Self::MaintenanceLoginAccepted => "MaintenanceLoginAccepted",
2687 Self::MaintenanceLoginFailed => "MaintenanceLoginFailed",
2688 }
2689 }
2690 pub fn from_wire(value: &str) -> Option<Self> {
2693 match value {
2694 "FirmwareUpdated" => Some(Self::FirmwareUpdated),
2695 "FailedToAuthenticateAtCsms" => Some(Self::FailedToAuthenticateAtCsms),
2696 "CsmsFailedToAuthenticate" => Some(Self::CsmsFailedToAuthenticate),
2697 "SettingSystemTime" => Some(Self::SettingSystemTime),
2698 "StartupOfTheDevice" => Some(Self::StartupOfTheDevice),
2699 "ResetOrReboot" => Some(Self::ResetOrReboot),
2700 "SecurityLogWasCleared" => Some(Self::SecurityLogWasCleared),
2701 "ReconfigurationOfSecurityParameters" => {
2702 Some(Self::ReconfigurationOfSecurityParameters)
2703 }
2704 "MemoryExhaustion" => Some(Self::MemoryExhaustion),
2705 "InvalidMessages" => Some(Self::InvalidMessages),
2706 "AttemptedReplayAttacks" => Some(Self::AttemptedReplayAttacks),
2707 "TamperDetectionActivated" => Some(Self::TamperDetectionActivated),
2708 "InvalidFirmwareSignature" => Some(Self::InvalidFirmwareSignature),
2709 "InvalidFirmwareSigningCertificate" => {
2710 Some(Self::InvalidFirmwareSigningCertificate)
2711 }
2712 "InvalidCsmsCertificate" => Some(Self::InvalidCsmsCertificate),
2713 "InvalidChargingStationCertificate" => {
2714 Some(Self::InvalidChargingStationCertificate)
2715 }
2716 "DiscardedRenewedClientCertificate" => {
2717 Some(Self::DiscardedRenewedClientCertificate)
2718 }
2719 "InvalidTLSVersion" => Some(Self::InvalidTLSVersion),
2720 "InvalidTLSCipherSuite" => Some(Self::InvalidTLSCipherSuite),
2721 "MaintenanceLoginAccepted" => Some(Self::MaintenanceLoginAccepted),
2722 "MaintenanceLoginFailed" => Some(Self::MaintenanceLoginFailed),
2723 _ => None,
2724 }
2725 }
2726 pub const fn is_critical(&self) -> bool {
2728 match self {
2729 Self::FirmwareUpdated => true,
2730 Self::FailedToAuthenticateAtCsms => false,
2731 Self::CsmsFailedToAuthenticate => false,
2732 Self::SettingSystemTime => true,
2733 Self::StartupOfTheDevice => true,
2734 Self::ResetOrReboot => true,
2735 Self::SecurityLogWasCleared => true,
2736 Self::ReconfigurationOfSecurityParameters => false,
2737 Self::MemoryExhaustion => true,
2738 Self::InvalidMessages => false,
2739 Self::AttemptedReplayAttacks => false,
2740 Self::TamperDetectionActivated => true,
2741 Self::InvalidFirmwareSignature => true,
2742 Self::InvalidFirmwareSigningCertificate => true,
2743 Self::InvalidCsmsCertificate => true,
2744 Self::InvalidChargingStationCertificate => true,
2745 Self::DiscardedRenewedClientCertificate => true,
2746 Self::InvalidTLSVersion => true,
2747 Self::InvalidTLSCipherSuite => true,
2748 Self::MaintenanceLoginAccepted => true,
2749 Self::MaintenanceLoginFailed => true,
2750 }
2751 }
2752}
2753impl core::fmt::Display for SecurityEvent {
2754 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2755 f.write_str(self.as_str())
2756 }
2757}
2758impl core::str::FromStr for SecurityEvent {
2759 type Err = UnknownValue;
2760 fn from_str(value: &str) -> Result<Self, Self::Err> {
2761 Self::from_wire(value).ok_or(UnknownValue)
2762 }
2763}
2764#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
2771#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2772pub enum ReasonCode {
2773 DuplicateProfile,
2777 InvalidProfile,
2781 InvalidProfileId,
2785 InvalidSchedule,
2789 InvalidStackLevel,
2793 NoPhaseForDC,
2797 PhaseConflict,
2801 RateLimitExceeded,
2805 UnsupportedKind,
2809 UnsupportedPurpose,
2813 UnsupportedRateUnit,
2817 CSNotAccepted,
2821 FixedCable,
2825 NoCable,
2829 UnknownConnectorId,
2833 UnknownConnectorType,
2837 UnknownEvse,
2841 InvalidNetworkConf,
2845 NoSecurityDowngrade,
2849 DuplicateRequestId,
2853 InvalidMessageSeq,
2857 MissingDevModelInfo,
2861 NoError,
2865 NotFound,
2869 Unspecified,
2873 UnsupportedRequest,
2877 FwUpdateInProgress,
2881 NotEnabled,
2885 ReadOnly,
2889 WriteOnly,
2893 InvalidCSR,
2897 InvalidCertificate,
2901 InvalidURL,
2905 RedirectNotAllowed,
2909 InternalError,
2913 OutOfMemory,
2917 OutOfStorage,
2921 InvalidIdToken,
2925 TxInProgress,
2929 TxNotFound,
2933 TxStarted,
2937 InvalidValue,
2941 MissingParam,
2945 TooLargeElement,
2949 TooManyElements,
2953 UnsupportedParam,
2957 ValueOutOfRange,
2961 ValuePositiveOnly,
2965 ValueTooHigh,
2969 ValueTooLow,
2973 ValueZeroNotAllowed,
2977}
2978impl ReasonCode {
2979 pub const ALL: &'static [Self] = &[
2981 Self::DuplicateProfile,
2982 Self::InvalidProfile,
2983 Self::InvalidProfileId,
2984 Self::InvalidSchedule,
2985 Self::InvalidStackLevel,
2986 Self::NoPhaseForDC,
2987 Self::PhaseConflict,
2988 Self::RateLimitExceeded,
2989 Self::UnsupportedKind,
2990 Self::UnsupportedPurpose,
2991 Self::UnsupportedRateUnit,
2992 Self::CSNotAccepted,
2993 Self::FixedCable,
2994 Self::NoCable,
2995 Self::UnknownConnectorId,
2996 Self::UnknownConnectorType,
2997 Self::UnknownEvse,
2998 Self::InvalidNetworkConf,
2999 Self::NoSecurityDowngrade,
3000 Self::DuplicateRequestId,
3001 Self::InvalidMessageSeq,
3002 Self::MissingDevModelInfo,
3003 Self::NoError,
3004 Self::NotFound,
3005 Self::Unspecified,
3006 Self::UnsupportedRequest,
3007 Self::FwUpdateInProgress,
3008 Self::NotEnabled,
3009 Self::ReadOnly,
3010 Self::WriteOnly,
3011 Self::InvalidCSR,
3012 Self::InvalidCertificate,
3013 Self::InvalidURL,
3014 Self::RedirectNotAllowed,
3015 Self::InternalError,
3016 Self::OutOfMemory,
3017 Self::OutOfStorage,
3018 Self::InvalidIdToken,
3019 Self::TxInProgress,
3020 Self::TxNotFound,
3021 Self::TxStarted,
3022 Self::InvalidValue,
3023 Self::MissingParam,
3024 Self::TooLargeElement,
3025 Self::TooManyElements,
3026 Self::UnsupportedParam,
3027 Self::ValueOutOfRange,
3028 Self::ValuePositiveOnly,
3029 Self::ValueTooHigh,
3030 Self::ValueTooLow,
3031 Self::ValueZeroNotAllowed,
3032 ];
3033 pub const fn as_str(&self) -> &'static str {
3035 match self {
3036 Self::DuplicateProfile => "DuplicateProfile",
3037 Self::InvalidProfile => "InvalidProfile",
3038 Self::InvalidProfileId => "InvalidProfileId",
3039 Self::InvalidSchedule => "InvalidSchedule",
3040 Self::InvalidStackLevel => "InvalidStackLevel",
3041 Self::NoPhaseForDC => "NoPhaseForDC",
3042 Self::PhaseConflict => "PhaseConflict",
3043 Self::RateLimitExceeded => "RateLimitExceeded",
3044 Self::UnsupportedKind => "UnsupportedKind",
3045 Self::UnsupportedPurpose => "UnsupportedPurpose",
3046 Self::UnsupportedRateUnit => "UnsupportedRateUnit",
3047 Self::CSNotAccepted => "CSNotAccepted",
3048 Self::FixedCable => "FixedCable",
3049 Self::NoCable => "NoCable",
3050 Self::UnknownConnectorId => "UnknownConnectorId",
3051 Self::UnknownConnectorType => "UnknownConnectorType",
3052 Self::UnknownEvse => "UnknownEvse",
3053 Self::InvalidNetworkConf => "InvalidNetworkConf",
3054 Self::NoSecurityDowngrade => "NoSecurityDowngrade",
3055 Self::DuplicateRequestId => "DuplicateRequestId",
3056 Self::InvalidMessageSeq => "InvalidMessageSeq",
3057 Self::MissingDevModelInfo => "MissingDevModelInfo",
3058 Self::NoError => "NoError",
3059 Self::NotFound => "NotFound",
3060 Self::Unspecified => "Unspecified",
3061 Self::UnsupportedRequest => "UnsupportedRequest",
3062 Self::FwUpdateInProgress => "FwUpdateInProgress",
3063 Self::NotEnabled => "NotEnabled",
3064 Self::ReadOnly => "ReadOnly",
3065 Self::WriteOnly => "WriteOnly",
3066 Self::InvalidCSR => "InvalidCSR",
3067 Self::InvalidCertificate => "InvalidCertificate",
3068 Self::InvalidURL => "InvalidURL",
3069 Self::RedirectNotAllowed => "RedirectNotAllowed",
3070 Self::InternalError => "InternalError",
3071 Self::OutOfMemory => "OutOfMemory",
3072 Self::OutOfStorage => "OutOfStorage",
3073 Self::InvalidIdToken => "InvalidIdToken",
3074 Self::TxInProgress => "TxInProgress",
3075 Self::TxNotFound => "TxNotFound",
3076 Self::TxStarted => "TxStarted",
3077 Self::InvalidValue => "InvalidValue",
3078 Self::MissingParam => "MissingParam",
3079 Self::TooLargeElement => "TooLargeElement",
3080 Self::TooManyElements => "TooManyElements",
3081 Self::UnsupportedParam => "UnsupportedParam",
3082 Self::ValueOutOfRange => "ValueOutOfRange",
3083 Self::ValuePositiveOnly => "ValuePositiveOnly",
3084 Self::ValueTooHigh => "ValueTooHigh",
3085 Self::ValueTooLow => "ValueTooLow",
3086 Self::ValueZeroNotAllowed => "ValueZeroNotAllowed",
3087 }
3088 }
3089 pub fn from_wire(value: &str) -> Option<Self> {
3092 match value {
3093 "DuplicateProfile" => Some(Self::DuplicateProfile),
3094 "InvalidProfile" => Some(Self::InvalidProfile),
3095 "InvalidProfileId" => Some(Self::InvalidProfileId),
3096 "InvalidSchedule" => Some(Self::InvalidSchedule),
3097 "InvalidStackLevel" => Some(Self::InvalidStackLevel),
3098 "NoPhaseForDC" => Some(Self::NoPhaseForDC),
3099 "PhaseConflict" => Some(Self::PhaseConflict),
3100 "RateLimitExceeded" => Some(Self::RateLimitExceeded),
3101 "UnsupportedKind" => Some(Self::UnsupportedKind),
3102 "UnsupportedPurpose" => Some(Self::UnsupportedPurpose),
3103 "UnsupportedRateUnit" => Some(Self::UnsupportedRateUnit),
3104 "CSNotAccepted" => Some(Self::CSNotAccepted),
3105 "FixedCable" => Some(Self::FixedCable),
3106 "NoCable" => Some(Self::NoCable),
3107 "UnknownConnectorId" => Some(Self::UnknownConnectorId),
3108 "UnknownConnectorType" => Some(Self::UnknownConnectorType),
3109 "UnknownEvse" => Some(Self::UnknownEvse),
3110 "InvalidNetworkConf" => Some(Self::InvalidNetworkConf),
3111 "NoSecurityDowngrade" => Some(Self::NoSecurityDowngrade),
3112 "DuplicateRequestId" => Some(Self::DuplicateRequestId),
3113 "InvalidMessageSeq" => Some(Self::InvalidMessageSeq),
3114 "MissingDevModelInfo" => Some(Self::MissingDevModelInfo),
3115 "NoError" => Some(Self::NoError),
3116 "NotFound" => Some(Self::NotFound),
3117 "Unspecified" => Some(Self::Unspecified),
3118 "UnsupportedRequest" => Some(Self::UnsupportedRequest),
3119 "FwUpdateInProgress" => Some(Self::FwUpdateInProgress),
3120 "NotEnabled" => Some(Self::NotEnabled),
3121 "ReadOnly" => Some(Self::ReadOnly),
3122 "WriteOnly" => Some(Self::WriteOnly),
3123 "InvalidCSR" => Some(Self::InvalidCSR),
3124 "InvalidCertificate" => Some(Self::InvalidCertificate),
3125 "InvalidURL" => Some(Self::InvalidURL),
3126 "RedirectNotAllowed" => Some(Self::RedirectNotAllowed),
3127 "InternalError" => Some(Self::InternalError),
3128 "OutOfMemory" => Some(Self::OutOfMemory),
3129 "OutOfStorage" => Some(Self::OutOfStorage),
3130 "InvalidIdToken" => Some(Self::InvalidIdToken),
3131 "TxInProgress" => Some(Self::TxInProgress),
3132 "TxNotFound" => Some(Self::TxNotFound),
3133 "TxStarted" => Some(Self::TxStarted),
3134 "InvalidValue" => Some(Self::InvalidValue),
3135 "MissingParam" => Some(Self::MissingParam),
3136 "TooLargeElement" => Some(Self::TooLargeElement),
3137 "TooManyElements" => Some(Self::TooManyElements),
3138 "UnsupportedParam" => Some(Self::UnsupportedParam),
3139 "ValueOutOfRange" => Some(Self::ValueOutOfRange),
3140 "ValuePositiveOnly" => Some(Self::ValuePositiveOnly),
3141 "ValueTooHigh" => Some(Self::ValueTooHigh),
3142 "ValueTooLow" => Some(Self::ValueTooLow),
3143 "ValueZeroNotAllowed" => Some(Self::ValueZeroNotAllowed),
3144 _ => None,
3145 }
3146 }
3147 pub const fn typically_used_for(&self) -> Option<&'static str> {
3149 match self {
3150 Self::DuplicateProfile => Some("SetChargingProfile"),
3151 Self::InvalidProfile => Some("SetChargingProfile, RequestStartTransaction"),
3152 Self::InvalidProfileId => Some("SetChargingProfile, RequestStartTransaction"),
3153 Self::InvalidSchedule => Some("SetChargingProfile, RequestStartTransaction"),
3154 Self::InvalidStackLevel => Some("SetChargingProfile"),
3155 Self::NoPhaseForDC => Some("SetChargingProfile"),
3156 Self::PhaseConflict => Some("SetChargingProfile"),
3157 Self::RateLimitExceeded => Some("SetChargingProfile"),
3158 Self::UnsupportedKind => Some("SetChargingProfile"),
3159 Self::UnsupportedPurpose => Some("SetChargingProfile"),
3160 Self::UnsupportedRateUnit => Some("SetChargingProfile"),
3161 Self::CSNotAccepted => {
3162 Some("RequestStartTransaction, RequestStopTransaction")
3163 }
3164 Self::FixedCable => Some("UnlockConnector"),
3165 Self::NoCable => Some("UnlockConnector"),
3166 Self::UnknownConnectorId => Some("ChangeAvailability, UnlockConnector"),
3167 Self::UnknownConnectorType => Some("ReserveNow"),
3168 Self::UnknownEvse => {
3169 Some("ChangeAvailability, ReserveNow, RequestStartTransaction")
3170 }
3171 Self::InvalidNetworkConf => {
3172 Some(
3173 "SetVariablesRequest of NetworkConfigurationPriority,SetNetworkProfileRequest",
3174 )
3175 }
3176 Self::NoSecurityDowngrade => {
3177 Some("SetVariablesRequest of SecurityProfile, SetNetworkProfileRequest")
3178 }
3179 Self::DuplicateRequestId => {
3180 Some("UpdateFirmware, PublishFirmware and requests for reports.")
3181 }
3182 Self::InvalidMessageSeq => {
3183 Some("(generic), SetChargingProfile with ISO15118")
3184 }
3185 Self::MissingDevModelInfo => Some("(generic)"),
3186 Self::NoError => Some("(generic)"),
3187 Self::NotFound => {
3188 Some(
3189 "ClearVariableMonitoring, CustomerInformation, GetChargingProfiles, GetDisplayMessages, GetInstalledCertificateIds, GetReport",
3190 )
3191 }
3192 Self::Unspecified => Some("(generic)"),
3193 Self::UnsupportedRequest => Some("(generic)"),
3194 Self::FwUpdateInProgress => Some("Reset"),
3195 Self::NotEnabled => Some("ClearCache"),
3196 Self::ReadOnly => Some("SetVariables"),
3197 Self::WriteOnly => Some("GetVariables"),
3198 Self::InvalidCSR => Some("SignCertificate"),
3199 Self::InvalidCertificate => Some("CertificateSigned, InstallCertificate"),
3200 Self::InvalidURL => Some("UpdateFirmware, PublishFirmware"),
3201 Self::RedirectNotAllowed => Some("LogStatusNotification"),
3202 Self::InternalError => Some("(generic)"),
3203 Self::OutOfMemory => Some("(generic)"),
3204 Self::OutOfStorage => Some("(generic)"),
3205 Self::InvalidIdToken => Some("RequestStartTransaction"),
3206 Self::TxInProgress => {
3207 Some("ChangeAvailability, Reset, RequestStartTransaction")
3208 }
3209 Self::TxNotFound => {
3210 Some("RequestStopTransaction, SetChargingProfile, GetVehicleCertificate")
3211 }
3212 Self::TxStarted => Some("RequestStartTransaction"),
3213 Self::InvalidValue => Some("(generic)"),
3214 Self::MissingParam => Some("(generic)"),
3215 Self::TooLargeElement => Some("CertificateSigned, InstallCertificate"),
3216 Self::TooManyElements => {
3217 Some("SetChargingProfile, SetVariables, SendLocalList")
3218 }
3219 Self::UnsupportedParam => Some("(generic)"),
3220 Self::ValueOutOfRange => Some("SetVariables, SetVariableMonitoring"),
3221 Self::ValuePositiveOnly => Some("(generic)"),
3222 Self::ValueTooHigh => Some("(generic)"),
3223 Self::ValueTooLow => Some("(generic)"),
3224 Self::ValueZeroNotAllowed => Some("(generic)"),
3225 }
3226 }
3227}
3228impl core::fmt::Display for ReasonCode {
3229 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3230 f.write_str(self.as_str())
3231 }
3232}
3233impl core::str::FromStr for ReasonCode {
3234 type Err = UnknownValue;
3235 fn from_str(value: &str) -> Result<Self, Self::Err> {
3236 Self::from_wire(value).ok_or(UnknownValue)
3237 }
3238}
3239#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
3248#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3249pub enum Unit {
3250 A,
3252 ASU,
3254 B,
3256 Celsius,
3258 #[cfg_attr(feature = "serde", serde(rename = "dB"))]
3260 DB,
3261 #[cfg_attr(feature = "serde", serde(rename = "dBm"))]
3263 DBm,
3264 Deg,
3266 Fahrenheit,
3268 Hz,
3270 #[cfg_attr(feature = "serde", serde(rename = "mHz"))]
3272 MHz,
3273 K,
3275 #[cfg_attr(feature = "serde", serde(rename = "lx"))]
3277 Lx,
3278 #[cfg_attr(feature = "serde", serde(rename = "m"))]
3280 M,
3281 #[cfg_attr(feature = "serde", serde(rename = "ms2"))]
3283 Ms2,
3284 N,
3286 Ohm,
3288 #[cfg_attr(feature = "serde", serde(rename = "kPa"))]
3290 KPa,
3291 Percent,
3293 RH,
3295 RPM,
3297 #[cfg_attr(feature = "serde", serde(rename = "s"))]
3299 S,
3300 V,
3302 VA,
3304 #[cfg_attr(feature = "serde", serde(rename = "kVA"))]
3306 KVA,
3307 VAh,
3309 #[cfg_attr(feature = "serde", serde(rename = "kVAh"))]
3311 KVAh,
3312 #[cfg_attr(feature = "serde", serde(rename = "var"))]
3314 Var,
3315 #[cfg_attr(feature = "serde", serde(rename = "kvar"))]
3317 Kvar,
3318 #[cfg_attr(feature = "serde", serde(rename = "varh"))]
3320 Varh,
3321 #[cfg_attr(feature = "serde", serde(rename = "kvarh"))]
3323 Kvarh,
3324 W,
3326 #[cfg_attr(feature = "serde", serde(rename = "kW"))]
3328 KW,
3329 Wh,
3331 #[cfg_attr(feature = "serde", serde(rename = "kWh"))]
3333 KWh,
3334}
3335impl Unit {
3336 pub const ALL: &'static [Self] = &[
3338 Self::A,
3339 Self::ASU,
3340 Self::B,
3341 Self::Celsius,
3342 Self::DB,
3343 Self::DBm,
3344 Self::Deg,
3345 Self::Fahrenheit,
3346 Self::Hz,
3347 Self::MHz,
3348 Self::K,
3349 Self::Lx,
3350 Self::M,
3351 Self::Ms2,
3352 Self::N,
3353 Self::Ohm,
3354 Self::KPa,
3355 Self::Percent,
3356 Self::RH,
3357 Self::RPM,
3358 Self::S,
3359 Self::V,
3360 Self::VA,
3361 Self::KVA,
3362 Self::VAh,
3363 Self::KVAh,
3364 Self::Var,
3365 Self::Kvar,
3366 Self::Varh,
3367 Self::Kvarh,
3368 Self::W,
3369 Self::KW,
3370 Self::Wh,
3371 Self::KWh,
3372 ];
3373 pub const fn as_str(&self) -> &'static str {
3375 match self {
3376 Self::A => "A",
3377 Self::ASU => "ASU",
3378 Self::B => "B",
3379 Self::Celsius => "Celsius",
3380 Self::DB => "dB",
3381 Self::DBm => "dBm",
3382 Self::Deg => "Deg",
3383 Self::Fahrenheit => "Fahrenheit",
3384 Self::Hz => "Hz",
3385 Self::MHz => "mHz",
3386 Self::K => "K",
3387 Self::Lx => "lx",
3388 Self::M => "m",
3389 Self::Ms2 => "ms2",
3390 Self::N => "N",
3391 Self::Ohm => "Ohm",
3392 Self::KPa => "kPa",
3393 Self::Percent => "Percent",
3394 Self::RH => "RH",
3395 Self::RPM => "RPM",
3396 Self::S => "s",
3397 Self::V => "V",
3398 Self::VA => "VA",
3399 Self::KVA => "kVA",
3400 Self::VAh => "VAh",
3401 Self::KVAh => "kVAh",
3402 Self::Var => "var",
3403 Self::Kvar => "kvar",
3404 Self::Varh => "varh",
3405 Self::Kvarh => "kvarh",
3406 Self::W => "W",
3407 Self::KW => "kW",
3408 Self::Wh => "Wh",
3409 Self::KWh => "kWh",
3410 }
3411 }
3412 pub fn from_wire(value: &str) -> Option<Self> {
3415 match value {
3416 "A" => Some(Self::A),
3417 "ASU" => Some(Self::ASU),
3418 "B" => Some(Self::B),
3419 "Celsius" => Some(Self::Celsius),
3420 "dB" => Some(Self::DB),
3421 "dBm" => Some(Self::DBm),
3422 "Deg" => Some(Self::Deg),
3423 "Fahrenheit" => Some(Self::Fahrenheit),
3424 "Hz" => Some(Self::Hz),
3425 "mHz" => Some(Self::MHz),
3426 "K" => Some(Self::K),
3427 "lx" => Some(Self::Lx),
3428 "m" => Some(Self::M),
3429 "ms2" => Some(Self::Ms2),
3430 "N" => Some(Self::N),
3431 "Ohm" => Some(Self::Ohm),
3432 "kPa" => Some(Self::KPa),
3433 "Percent" => Some(Self::Percent),
3434 "RH" => Some(Self::RH),
3435 "RPM" => Some(Self::RPM),
3436 "s" => Some(Self::S),
3437 "V" => Some(Self::V),
3438 "VA" => Some(Self::VA),
3439 "kVA" => Some(Self::KVA),
3440 "VAh" => Some(Self::VAh),
3441 "kVAh" => Some(Self::KVAh),
3442 "var" => Some(Self::Var),
3443 "kvar" => Some(Self::Kvar),
3444 "varh" => Some(Self::Varh),
3445 "kvarh" => Some(Self::Kvarh),
3446 "W" => Some(Self::W),
3447 "kW" => Some(Self::KW),
3448 "Wh" => Some(Self::Wh),
3449 "kWh" => Some(Self::KWh),
3450 _ => None,
3451 }
3452 }
3453}
3454impl core::fmt::Display for Unit {
3455 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3456 f.write_str(self.as_str())
3457 }
3458}
3459impl core::str::FromStr for Unit {
3460 type Err = UnknownValue;
3461 fn from_str(value: &str) -> Result<Self, Self::Err> {
3462 Self::from_wire(value).ok_or(UnknownValue)
3463 }
3464}
3465#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3471pub struct DeviceModelEntry {
3472 pub component: Option<&'static str>,
3475 pub variable: &'static str,
3476 pub attributes: Option<&'static str>,
3482 pub instance: Option<&'static str>,
3485 pub required: Option<&'static str>,
3489 pub data_type: Option<&'static str>,
3490 pub unit: Option<&'static str>,
3491}
3492pub const DEVICE_MODEL: &[DeviceModelEntry] = &[
3494 DeviceModelEntry {
3495 component: None,
3496 variable: "ACCurrent",
3497 attributes: None,
3498 instance: None,
3499 required: Some("no"),
3500 data_type: Some("decimal"),
3501 unit: Some("A"),
3502 },
3503 DeviceModelEntry {
3504 component: None,
3505 variable: "Active",
3506 attributes: None,
3507 instance: None,
3508 required: Some("no"),
3509 data_type: Some("boolean"),
3510 unit: None,
3511 },
3512 DeviceModelEntry {
3513 component: None,
3514 variable: "ACVoltage",
3515 attributes: None,
3516 instance: None,
3517 required: Some("no"),
3518 data_type: Some("decimal"),
3519 unit: Some("V"),
3520 },
3521 DeviceModelEntry {
3522 component: None,
3523 variable: "AllowReset",
3524 attributes: None,
3525 instance: None,
3526 required: Some("no"),
3527 data_type: Some("boolean"),
3528 unit: None,
3529 },
3530 DeviceModelEntry {
3531 component: None,
3532 variable: "Angle",
3533 attributes: None,
3534 instance: None,
3535 required: Some("no"),
3536 data_type: Some("decimal"),
3537 unit: Some("Deg"),
3538 },
3539 DeviceModelEntry {
3540 component: None,
3541 variable: "Attempts",
3542 attributes: None,
3543 instance: None,
3544 required: Some("no"),
3545 data_type: Some("integer"),
3546 unit: None,
3547 },
3548 DeviceModelEntry {
3549 component: None,
3550 variable: "Available",
3551 attributes: None,
3552 instance: None,
3553 required: Some("no"),
3554 data_type: Some("boolean"),
3555 unit: None,
3556 },
3557 DeviceModelEntry {
3558 component: None,
3559 variable: "Certificate",
3560 attributes: None,
3561 instance: None,
3562 required: Some("no"),
3563 data_type: Some("string"),
3564 unit: None,
3565 },
3566 DeviceModelEntry {
3567 component: None,
3568 variable: "Color",
3569 attributes: None,
3570 instance: None,
3571 required: Some("no"),
3572 data_type: Some("string"),
3573 unit: None,
3574 },
3575 DeviceModelEntry {
3576 component: None,
3577 variable: "Complete",
3578 attributes: None,
3579 instance: None,
3580 required: Some("no"),
3581 data_type: Some("boolean"),
3582 unit: None,
3583 },
3584 DeviceModelEntry {
3585 component: None,
3586 variable: "ConnectedTime",
3587 attributes: None,
3588 instance: None,
3589 required: Some("no"),
3590 data_type: Some("decimal"),
3591 unit: Some("s"),
3592 },
3593 DeviceModelEntry {
3594 component: None,
3595 variable: "Count",
3596 attributes: None,
3597 instance: None,
3598 required: Some("no"),
3599 data_type: Some("integer"),
3600 unit: None,
3601 },
3602 DeviceModelEntry {
3603 component: None,
3604 variable: "CurrentImbalance",
3605 attributes: None,
3606 instance: None,
3607 required: Some("no"),
3608 data_type: Some("decimal"),
3609 unit: Some("Percent"),
3610 },
3611 DeviceModelEntry {
3612 component: None,
3613 variable: "DataText",
3614 attributes: None,
3615 instance: None,
3616 required: Some("no"),
3617 data_type: Some("string"),
3618 unit: None,
3619 },
3620 DeviceModelEntry {
3621 component: None,
3622 variable: "DateTime",
3623 attributes: None,
3624 instance: None,
3625 required: Some("no"),
3626 data_type: Some("dateTime"),
3627 unit: None,
3628 },
3629 DeviceModelEntry {
3630 component: None,
3631 variable: "DCCurrent",
3632 attributes: None,
3633 instance: None,
3634 required: Some("no"),
3635 data_type: Some("decimal"),
3636 unit: Some("A"),
3637 },
3638 DeviceModelEntry {
3639 component: None,
3640 variable: "DCVoltage",
3641 attributes: None,
3642 instance: None,
3643 required: Some("no"),
3644 data_type: Some("decimal"),
3645 unit: Some("V"),
3646 },
3647 DeviceModelEntry {
3648 component: None,
3649 variable: "ECVariant",
3650 attributes: None,
3651 instance: None,
3652 required: Some("no"),
3653 data_type: Some("string"),
3654 unit: None,
3655 },
3656 DeviceModelEntry {
3657 component: None,
3658 variable: "Enabled",
3659 attributes: None,
3660 instance: None,
3661 required: Some("no"),
3662 data_type: Some("boolean"),
3663 unit: None,
3664 },
3665 DeviceModelEntry {
3666 component: None,
3667 variable: "Energy",
3668 attributes: None,
3669 instance: None,
3670 required: Some("no"),
3671 data_type: Some("decimal"),
3672 unit: Some("Wh, kWh"),
3673 },
3674 DeviceModelEntry {
3675 component: None,
3676 variable: "Entries",
3677 attributes: None,
3678 instance: None,
3679 required: Some("no"),
3680 data_type: Some("integer"),
3681 unit: None,
3682 },
3683 DeviceModelEntry {
3684 component: None,
3685 variable: "Fallback",
3686 attributes: None,
3687 instance: None,
3688 required: Some("no"),
3689 data_type: Some("boolean"),
3690 unit: None,
3691 },
3692 DeviceModelEntry {
3693 component: None,
3694 variable: "FanSpeed",
3695 attributes: None,
3696 instance: None,
3697 required: Some("no"),
3698 data_type: Some("decimal"),
3699 unit: Some("RPM"),
3700 },
3701 DeviceModelEntry {
3702 component: None,
3703 variable: "FirmwareVersion",
3704 attributes: None,
3705 instance: None,
3706 required: Some("no"),
3707 data_type: Some("string"),
3708 unit: None,
3709 },
3710 DeviceModelEntry {
3711 component: None,
3712 variable: "Force",
3713 attributes: None,
3714 instance: None,
3715 required: Some("no"),
3716 data_type: Some("decimal"),
3717 unit: Some("N"),
3718 },
3719 DeviceModelEntry {
3720 component: None,
3721 variable: "Formats",
3722 attributes: None,
3723 instance: None,
3724 required: Some("no"),
3725 data_type: Some("MemberList"),
3726 unit: None,
3727 },
3728 DeviceModelEntry {
3729 component: None,
3730 variable: "Frequency",
3731 attributes: None,
3732 instance: None,
3733 required: Some("no"),
3734 data_type: Some("decimal"),
3735 unit: Some("Hz"),
3736 },
3737 DeviceModelEntry {
3738 component: None,
3739 variable: "FuseRating",
3740 attributes: None,
3741 instance: None,
3742 required: Some("no"),
3743 data_type: Some("decimal"),
3744 unit: Some("A"),
3745 },
3746 DeviceModelEntry {
3747 component: None,
3748 variable: "Height",
3749 attributes: None,
3750 instance: None,
3751 required: Some("no"),
3752 data_type: Some("decimal"),
3753 unit: Some("m"),
3754 },
3755 DeviceModelEntry {
3756 component: None,
3757 variable: "Humidity",
3758 attributes: None,
3759 instance: None,
3760 required: Some("no"),
3761 data_type: Some("decimal"),
3762 unit: Some("RH"),
3763 },
3764 DeviceModelEntry {
3765 component: None,
3766 variable: "Hysteresis",
3767 attributes: None,
3768 instance: None,
3769 required: Some("no"),
3770 data_type: Some("decimal"),
3771 unit: Some("Percent"),
3772 },
3773 DeviceModelEntry {
3774 component: None,
3775 variable: "ICCID",
3776 attributes: None,
3777 instance: None,
3778 required: Some("no"),
3779 data_type: Some("string"),
3780 unit: None,
3781 },
3782 DeviceModelEntry {
3783 component: None,
3784 variable: "Impedance",
3785 attributes: None,
3786 instance: None,
3787 required: Some("no"),
3788 data_type: Some("decimal"),
3789 unit: Some("Ohm"),
3790 },
3791 DeviceModelEntry {
3792 component: None,
3793 variable: "IMSI",
3794 attributes: None,
3795 instance: None,
3796 required: Some("no"),
3797 data_type: Some("string"),
3798 unit: None,
3799 },
3800 DeviceModelEntry {
3801 component: None,
3802 variable: "Interval",
3803 attributes: None,
3804 instance: None,
3805 required: Some("no"),
3806 data_type: Some("integer"),
3807 unit: Some("s"),
3808 },
3809 DeviceModelEntry {
3810 component: None,
3811 variable: "Length",
3812 attributes: None,
3813 instance: None,
3814 required: Some("no"),
3815 data_type: Some("decimal"),
3816 unit: Some("m"),
3817 },
3818 DeviceModelEntry {
3819 component: None,
3820 variable: "Light",
3821 attributes: None,
3822 instance: None,
3823 required: Some("no"),
3824 data_type: Some("decimal"),
3825 unit: Some("lx"),
3826 },
3827 DeviceModelEntry {
3828 component: None,
3829 variable: "Manufacturer",
3830 attributes: None,
3831 instance: None,
3832 required: Some("no"),
3833 data_type: Some("string"),
3834 unit: None,
3835 },
3836 DeviceModelEntry {
3837 component: None,
3838 variable: "Message",
3839 attributes: None,
3840 instance: None,
3841 required: Some("no"),
3842 data_type: Some("string"),
3843 unit: None,
3844 },
3845 DeviceModelEntry {
3846 component: None,
3847 variable: "MinimumStatusDuration",
3848 attributes: None,
3849 instance: None,
3850 required: Some("no"),
3851 data_type: Some("integer"),
3852 unit: Some("s"),
3853 },
3854 DeviceModelEntry {
3855 component: None,
3856 variable: "Mode",
3857 attributes: None,
3858 instance: None,
3859 required: Some("no"),
3860 data_type: Some("string"),
3861 unit: None,
3862 },
3863 DeviceModelEntry {
3864 component: None,
3865 variable: "Model",
3866 attributes: None,
3867 instance: None,
3868 required: Some("no"),
3869 data_type: Some("string"),
3870 unit: None,
3871 },
3872 DeviceModelEntry {
3873 component: None,
3874 variable: "NetworkAddress",
3875 attributes: None,
3876 instance: None,
3877 required: Some("no"),
3878 data_type: Some("string"),
3879 unit: None,
3880 },
3881 DeviceModelEntry {
3882 component: None,
3883 variable: "Operated",
3884 attributes: None,
3885 instance: None,
3886 required: Some("no"),
3887 data_type: Some("boolean"),
3888 unit: None,
3889 },
3890 DeviceModelEntry {
3891 component: None,
3892 variable: "OperatingTimes",
3893 attributes: None,
3894 instance: None,
3895 required: Some("no"),
3896 data_type: Some("string"),
3897 unit: None,
3898 },
3899 DeviceModelEntry {
3900 component: None,
3901 variable: "Overload",
3902 attributes: None,
3903 instance: None,
3904 required: Some("no"),
3905 data_type: Some("boolean"),
3906 unit: None,
3907 },
3908 DeviceModelEntry {
3909 component: None,
3910 variable: "Percent",
3911 attributes: None,
3912 instance: None,
3913 required: Some("no"),
3914 data_type: Some("decimal"),
3915 unit: Some("Percent"),
3916 },
3917 DeviceModelEntry {
3918 component: None,
3919 variable: "PhaseRotation",
3920 attributes: None,
3921 instance: None,
3922 required: Some("no"),
3923 data_type: Some("OptionList"),
3924 unit: None,
3925 },
3926 DeviceModelEntry {
3927 component: None,
3928 variable: "PostChargingTime",
3929 attributes: None,
3930 instance: None,
3931 required: Some("no"),
3932 data_type: Some("decimal"),
3933 unit: Some("s"),
3934 },
3935 DeviceModelEntry {
3936 component: None,
3937 variable: "Power",
3938 attributes: None,
3939 instance: None,
3940 required: Some("no"),
3941 data_type: Some("decimal"),
3942 unit: Some("W, kW"),
3943 },
3944 DeviceModelEntry {
3945 component: None,
3946 variable: "Problem",
3947 attributes: None,
3948 instance: None,
3949 required: Some("no"),
3950 data_type: Some("boolean"),
3951 unit: None,
3952 },
3953 DeviceModelEntry {
3954 component: None,
3955 variable: "Protecting",
3956 attributes: None,
3957 instance: None,
3958 required: Some("no"),
3959 data_type: Some("boolean"),
3960 unit: None,
3961 },
3962 DeviceModelEntry {
3963 component: None,
3964 variable: "SerialNumber",
3965 attributes: None,
3966 instance: None,
3967 required: Some("no"),
3968 data_type: Some("string"),
3969 unit: None,
3970 },
3971 DeviceModelEntry {
3972 component: None,
3973 variable: "SignalStrength",
3974 attributes: None,
3975 instance: None,
3976 required: Some("no"),
3977 data_type: Some("decimal"),
3978 unit: Some("dBm"),
3979 },
3980 DeviceModelEntry {
3981 component: None,
3982 variable: "State",
3983 attributes: None,
3984 instance: None,
3985 required: Some("no"),
3986 data_type: Some("string"),
3987 unit: None,
3988 },
3989 DeviceModelEntry {
3990 component: None,
3991 variable: "StateOfCharge",
3992 attributes: None,
3993 instance: None,
3994 required: Some("no"),
3995 data_type: Some("decimal"),
3996 unit: Some("Percent"),
3997 },
3998 DeviceModelEntry {
3999 component: None,
4000 variable: "Storage",
4001 attributes: None,
4002 instance: None,
4003 required: Some("no"),
4004 data_type: Some("integer"),
4005 unit: Some("B"),
4006 },
4007 DeviceModelEntry {
4008 component: None,
4009 variable: "SupplyPhases",
4010 attributes: None,
4011 instance: None,
4012 required: Some("no"),
4013 data_type: Some("integer"),
4014 unit: None,
4015 },
4016 DeviceModelEntry {
4017 component: None,
4018 variable: "Suspending",
4019 attributes: None,
4020 instance: None,
4021 required: Some("no"),
4022 data_type: Some("boolean"),
4023 unit: None,
4024 },
4025 DeviceModelEntry {
4026 component: None,
4027 variable: "Suspension",
4028 attributes: None,
4029 instance: None,
4030 required: Some("no"),
4031 data_type: Some("boolean"),
4032 unit: None,
4033 },
4034 DeviceModelEntry {
4035 component: None,
4036 variable: "Temperature",
4037 attributes: None,
4038 instance: None,
4039 required: Some("no"),
4040 data_type: Some("decimal"),
4041 unit: Some("Celsius, Fahrenheit"),
4042 },
4043 DeviceModelEntry {
4044 component: None,
4045 variable: "Time",
4046 attributes: None,
4047 instance: None,
4048 required: Some("no"),
4049 data_type: Some("dateTime"),
4050 unit: None,
4051 },
4052 DeviceModelEntry {
4053 component: None,
4054 variable: "Timeout",
4055 attributes: None,
4056 instance: None,
4057 required: Some("no"),
4058 data_type: Some("decimal"),
4059 unit: Some("s"),
4060 },
4061 DeviceModelEntry {
4062 component: None,
4063 variable: "Tries",
4064 attributes: None,
4065 instance: None,
4066 required: Some("no"),
4067 data_type: Some("integer"),
4068 unit: None,
4069 },
4070 DeviceModelEntry {
4071 component: None,
4072 variable: "Tripped",
4073 attributes: None,
4074 instance: None,
4075 required: Some("no"),
4076 data_type: Some("boolean"),
4077 unit: None,
4078 },
4079 DeviceModelEntry {
4080 component: None,
4081 variable: "VendorName",
4082 attributes: None,
4083 instance: None,
4084 required: Some("no"),
4085 data_type: Some("string"),
4086 unit: None,
4087 },
4088 DeviceModelEntry {
4089 component: None,
4090 variable: "VersionDate",
4091 attributes: None,
4092 instance: None,
4093 required: Some("no"),
4094 data_type: Some("dateTime"),
4095 unit: None,
4096 },
4097 DeviceModelEntry {
4098 component: None,
4099 variable: "VersionNumber",
4100 attributes: None,
4101 instance: None,
4102 required: Some("no"),
4103 data_type: Some("string"),
4104 unit: None,
4105 },
4106 DeviceModelEntry {
4107 component: None,
4108 variable: "VoltageImbalance",
4109 attributes: None,
4110 instance: None,
4111 required: Some("no"),
4112 data_type: Some("decimal"),
4113 unit: Some("Percent"),
4114 },
4115 DeviceModelEntry {
4116 component: None,
4117 variable: "CommunicationParent",
4118 attributes: None,
4119 instance: None,
4120 required: Some("no"),
4121 data_type: Some("string"),
4122 unit: None,
4123 },
4124 DeviceModelEntry {
4125 component: None,
4126 variable: "ElectricalParent",
4127 attributes: None,
4128 instance: None,
4129 required: Some("no"),
4130 data_type: Some("string"),
4131 unit: None,
4132 },
4133 DeviceModelEntry {
4134 component: None,
4135 variable: "LogicalParent",
4136 attributes: None,
4137 instance: None,
4138 required: Some("no"),
4139 data_type: Some("string"),
4140 unit: None,
4141 },
4142 DeviceModelEntry {
4143 component: None,
4144 variable: "PhysicalParent",
4145 attributes: None,
4146 instance: None,
4147 required: Some("no"),
4148 data_type: Some("string"),
4149 unit: None,
4150 },
4151 DeviceModelEntry {
4152 component: None,
4153 variable: "Label",
4154 attributes: None,
4155 instance: None,
4156 required: Some("no"),
4157 data_type: Some("string"),
4158 unit: None,
4159 },
4160 DeviceModelEntry {
4161 component: Some("AlignedDataCtrlr"),
4162 variable: "Available",
4163 attributes: None,
4164 instance: None,
4165 required: Some("no"),
4166 data_type: Some("boolean"),
4167 unit: None,
4168 },
4169 DeviceModelEntry {
4170 component: Some("AlignedDataCtrlr"),
4171 variable: "Enabled",
4172 attributes: None,
4173 instance: None,
4174 required: Some("no"),
4175 data_type: Some("boolean"),
4176 unit: None,
4177 },
4178 DeviceModelEntry {
4179 component: Some("AlignedDataCtrlr"),
4180 variable: "Interval",
4181 attributes: None,
4182 instance: None,
4183 required: Some("yes"),
4184 data_type: Some("integer"),
4185 unit: Some("s"),
4186 },
4187 DeviceModelEntry {
4188 component: Some("AlignedDataCtrlr"),
4189 variable: "Measurands",
4190 attributes: None,
4191 instance: None,
4192 required: Some("yes"),
4193 data_type: Some("MemberList"),
4194 unit: None,
4195 },
4196 DeviceModelEntry {
4197 component: Some("AlignedDataCtrlr"),
4198 variable: "SendDuringIdle",
4199 attributes: None,
4200 instance: None,
4201 required: Some("no"),
4202 data_type: Some("boolean"),
4203 unit: None,
4204 },
4205 DeviceModelEntry {
4206 component: Some("AlignedDataCtrlr"),
4207 variable: "SignReadings",
4208 attributes: None,
4209 instance: None,
4210 required: Some("no"),
4211 data_type: Some("boolean"),
4212 unit: None,
4213 },
4214 DeviceModelEntry {
4215 component: Some("AlignedDataCtrlr"),
4216 variable: "SignUpdatedReadings",
4217 attributes: None,
4218 instance: None,
4219 required: Some("no"),
4220 data_type: Some("boolean"),
4221 unit: None,
4222 },
4223 DeviceModelEntry {
4224 component: Some("AlignedDataCtrlr"),
4225 variable: "TxEndedInterval",
4226 attributes: None,
4227 instance: None,
4228 required: Some("yes"),
4229 data_type: Some("integer"),
4230 unit: Some("s"),
4231 },
4232 DeviceModelEntry {
4233 component: Some("AlignedDataCtrlr"),
4234 variable: "TxEndedMeasurands",
4235 attributes: None,
4236 instance: None,
4237 required: Some("yes"),
4238 data_type: Some("MemberList"),
4239 unit: None,
4240 },
4241 DeviceModelEntry {
4242 component: Some("AuthCacheCtrlr"),
4243 variable: "Available",
4244 attributes: None,
4245 instance: None,
4246 required: Some("no"),
4247 data_type: Some("boolean"),
4248 unit: None,
4249 },
4250 DeviceModelEntry {
4251 component: Some("AuthCacheCtrlr"),
4252 variable: "Enabled",
4253 attributes: None,
4254 instance: None,
4255 required: Some("no"),
4256 data_type: Some("boolean"),
4257 unit: None,
4258 },
4259 DeviceModelEntry {
4260 component: Some("AuthCacheCtrlr"),
4261 variable: "LifeTime",
4262 attributes: None,
4263 instance: None,
4264 required: Some("no"),
4265 data_type: Some("integer"),
4266 unit: None,
4267 },
4268 DeviceModelEntry {
4269 component: Some("AuthCacheCtrlr"),
4270 variable: "Policy",
4271 attributes: None,
4272 instance: None,
4273 required: Some("no"),
4274 data_type: Some("OptionList"),
4275 unit: None,
4276 },
4277 DeviceModelEntry {
4278 component: Some("AuthCacheCtrlr"),
4279 variable: "Storage",
4280 attributes: None,
4281 instance: None,
4282 required: Some("no"),
4283 data_type: Some("integer"),
4284 unit: Some("B"),
4285 },
4286 DeviceModelEntry {
4287 component: Some("AuthCacheCtrlr"),
4288 variable: "DisablePostAuthorize",
4289 attributes: None,
4290 instance: None,
4291 required: Some("no"),
4292 data_type: Some("boolean"),
4293 unit: None,
4294 },
4295 DeviceModelEntry {
4296 component: Some("AuthCtrlr"),
4297 variable: "AdditionalInfoItemsPerMessage",
4298 attributes: None,
4299 instance: None,
4300 required: Some("no"),
4301 data_type: Some("integer"),
4302 unit: None,
4303 },
4304 DeviceModelEntry {
4305 component: Some("AuthCtrlr"),
4306 variable: "AuthorizeRemoteStart",
4307 attributes: None,
4308 instance: None,
4309 required: Some("yes"),
4310 data_type: Some("boolean"),
4311 unit: None,
4312 },
4313 DeviceModelEntry {
4314 component: Some("AuthCtrlr"),
4315 variable: "Enabled",
4316 attributes: None,
4317 instance: None,
4318 required: Some("no"),
4319 data_type: Some("boolean"),
4320 unit: None,
4321 },
4322 DeviceModelEntry {
4323 component: Some("AuthCtrlr"),
4324 variable: "LocalAuthorizeOffline",
4325 attributes: None,
4326 instance: None,
4327 required: Some("yes"),
4328 data_type: Some("boolean"),
4329 unit: None,
4330 },
4331 DeviceModelEntry {
4332 component: Some("AuthCtrlr"),
4333 variable: "LocalPreAuthorize",
4334 attributes: None,
4335 instance: None,
4336 required: Some("yes"),
4337 data_type: Some("boolean"),
4338 unit: None,
4339 },
4340 DeviceModelEntry {
4341 component: Some("AuthCtrlr"),
4342 variable: "MasterPassGroupId",
4343 attributes: None,
4344 instance: None,
4345 required: Some("no"),
4346 data_type: Some("string"),
4347 unit: None,
4348 },
4349 DeviceModelEntry {
4350 component: Some("AuthCtrlr"),
4351 variable: "OfflineTxForUnknownIdEnabled",
4352 attributes: None,
4353 instance: None,
4354 required: Some("no"),
4355 data_type: Some("boolean"),
4356 unit: None,
4357 },
4358 DeviceModelEntry {
4359 component: Some("AuthCtrlr"),
4360 variable: "DisableRemoteAuthorization",
4361 attributes: None,
4362 instance: None,
4363 required: Some("no"),
4364 data_type: Some("boolean"),
4365 unit: None,
4366 },
4367 DeviceModelEntry {
4368 component: Some("AuthCtrlr"),
4369 variable: "SupportedIdTokenType",
4370 attributes: None,
4371 instance: None,
4372 required: Some("no"),
4373 data_type: Some("MemberList"),
4374 unit: None,
4375 },
4376 DeviceModelEntry {
4377 component: Some("CHAdeMOCtrlr"),
4378 variable: "SelftestActive",
4379 attributes: None,
4380 instance: None,
4381 required: Some("no"),
4382 data_type: Some("boolean"),
4383 unit: None,
4384 },
4385 DeviceModelEntry {
4386 component: Some("CHAdeMOCtrlr"),
4387 variable: "CHAdeMOProtocolNumber",
4388 attributes: None,
4389 instance: None,
4390 required: Some("no"),
4391 data_type: Some("integer"),
4392 unit: None,
4393 },
4394 DeviceModelEntry {
4395 component: Some("CHAdeMOCtrlr"),
4396 variable: "VehicleStatus",
4397 attributes: None,
4398 instance: None,
4399 required: Some("no"),
4400 data_type: Some("boolean"),
4401 unit: None,
4402 },
4403 DeviceModelEntry {
4404 component: Some("CHAdeMOCtrlr"),
4405 variable: "DynamicControl",
4406 attributes: None,
4407 instance: None,
4408 required: Some("no"),
4409 data_type: Some("boolean"),
4410 unit: None,
4411 },
4412 DeviceModelEntry {
4413 component: Some("CHAdeMOCtrlr"),
4414 variable: "HighCurrentControl",
4415 attributes: None,
4416 instance: None,
4417 required: Some("no"),
4418 data_type: Some("boolean"),
4419 unit: None,
4420 },
4421 DeviceModelEntry {
4422 component: Some("CHAdeMOCtrlr"),
4423 variable: "HighVoltageControl",
4424 attributes: None,
4425 instance: None,
4426 required: Some("no"),
4427 data_type: Some("boolean"),
4428 unit: None,
4429 },
4430 DeviceModelEntry {
4431 component: Some("CHAdeMOCtrlr"),
4432 variable: "AutoManufacturerCode",
4433 attributes: None,
4434 instance: None,
4435 required: Some("no"),
4436 data_type: Some("integer"),
4437 unit: None,
4438 },
4439 DeviceModelEntry {
4440 component: Some("ChargingStation"),
4441 variable: "AllowNewSessionsPendingFirmwareUpdate",
4442 attributes: None,
4443 instance: None,
4444 required: Some("no"),
4445 data_type: Some("boolean"),
4446 unit: None,
4447 },
4448 DeviceModelEntry {
4449 component: Some("ChargingStation"),
4450 variable: "AvailabilityState",
4451 attributes: None,
4452 instance: None,
4453 required: Some("yes"),
4454 data_type: Some("OptionList"),
4455 unit: None,
4456 },
4457 DeviceModelEntry {
4458 component: Some("ChargingStation"),
4459 variable: "Available",
4460 attributes: None,
4461 instance: None,
4462 required: Some("yes"),
4463 data_type: Some("boolean"),
4464 unit: None,
4465 },
4466 DeviceModelEntry {
4467 component: Some("ChargingStation"),
4468 variable: "Model",
4469 attributes: None,
4470 instance: None,
4471 required: Some("no"),
4472 data_type: Some("string"),
4473 unit: None,
4474 },
4475 DeviceModelEntry {
4476 component: Some("ChargingStation"),
4477 variable: "SupplyPhases",
4478 attributes: None,
4479 instance: None,
4480 required: Some("yes"),
4481 data_type: Some("integer"),
4482 unit: None,
4483 },
4484 DeviceModelEntry {
4485 component: Some("ChargingStation"),
4486 variable: "VendorName",
4487 attributes: None,
4488 instance: None,
4489 required: Some("no"),
4490 data_type: Some("string"),
4491 unit: None,
4492 },
4493 DeviceModelEntry {
4494 component: Some("ChargingStation"),
4495 variable: "ActiveTransactionId",
4496 attributes: None,
4497 instance: None,
4498 required: Some("no"),
4499 data_type: Some("string"),
4500 unit: None,
4501 },
4502 DeviceModelEntry {
4503 component: Some("ClockCtrlr"),
4504 variable: "DateTime",
4505 attributes: None,
4506 instance: None,
4507 required: Some("yes"),
4508 data_type: Some("dateTime"),
4509 unit: None,
4510 },
4511 DeviceModelEntry {
4512 component: Some("ClockCtrlr"),
4513 variable: "NextTimeOffsetTransitionDateTime",
4514 attributes: None,
4515 instance: None,
4516 required: Some("no"),
4517 data_type: Some("dateTime"),
4518 unit: None,
4519 },
4520 DeviceModelEntry {
4521 component: Some("ClockCtrlr"),
4522 variable: "NtpServerUri",
4523 attributes: None,
4524 instance: None,
4525 required: Some("no"),
4526 data_type: Some("string"),
4527 unit: None,
4528 },
4529 DeviceModelEntry {
4530 component: Some("ClockCtrlr"),
4531 variable: "NtpSource",
4532 attributes: None,
4533 instance: None,
4534 required: Some("no"),
4535 data_type: Some("OptionList"),
4536 unit: None,
4537 },
4538 DeviceModelEntry {
4539 component: Some("ClockCtrlr"),
4540 variable: "TimeAdjustmentReportingThreshold",
4541 attributes: None,
4542 instance: None,
4543 required: Some("no"),
4544 data_type: Some("integer"),
4545 unit: None,
4546 },
4547 DeviceModelEntry {
4548 component: Some("ClockCtrlr"),
4549 variable: "TimeOffset",
4550 attributes: None,
4551 instance: None,
4552 required: Some("no"),
4553 data_type: Some("string"),
4554 unit: None,
4555 },
4556 DeviceModelEntry {
4557 component: Some("ClockCtrlr"),
4558 variable: "TimeSource",
4559 attributes: None,
4560 instance: None,
4561 required: Some("yes"),
4562 data_type: Some("SequenceList"),
4563 unit: None,
4564 },
4565 DeviceModelEntry {
4566 component: Some("ClockCtrlr"),
4567 variable: "TimeZone",
4568 attributes: None,
4569 instance: None,
4570 required: Some("no"),
4571 data_type: Some("string"),
4572 unit: None,
4573 },
4574 DeviceModelEntry {
4575 component: Some("ConnectedEV"),
4576 variable: "ProtocolAgreed",
4577 attributes: None,
4578 instance: None,
4579 required: Some("V2X"),
4580 data_type: Some("string"),
4581 unit: None,
4582 },
4583 DeviceModelEntry {
4584 component: Some("ConnectedEV"),
4585 variable: "ProtocolSupportedByEV",
4586 attributes: None,
4587 instance: Some("<Priority>"),
4588 required: Some("V2X"),
4589 data_type: Some("string"),
4590 unit: None,
4591 },
4592 DeviceModelEntry {
4593 component: Some("ConnectedEV"),
4594 variable: "VehicleID",
4595 attributes: None,
4596 instance: None,
4597 required: Some("V2X"),
4598 data_type: Some("string"),
4599 unit: None,
4600 },
4601 DeviceModelEntry {
4602 component: Some("ConnectedEV"),
4603 variable: "VehicleCertificate",
4604 attributes: None,
4605 instance: Some("Leaf"),
4606 required: Some("V2X"),
4607 data_type: Some("string"),
4608 unit: None,
4609 },
4610 DeviceModelEntry {
4611 component: Some("ConnectedEV"),
4612 variable: "VehicleCertificate",
4613 attributes: None,
4614 instance: Some("SubCA1"),
4615 required: Some("V2X"),
4616 data_type: Some("string"),
4617 unit: None,
4618 },
4619 DeviceModelEntry {
4620 component: Some("ConnectedEV"),
4621 variable: "VehicleCertificate",
4622 attributes: None,
4623 instance: Some("SubCA2"),
4624 required: Some("V2X"),
4625 data_type: Some("string"),
4626 unit: None,
4627 },
4628 DeviceModelEntry {
4629 component: Some("ConnectedEV"),
4630 variable: "VehicleCertificate",
4631 attributes: None,
4632 instance: Some("Root"),
4633 required: Some("V2X"),
4634 data_type: Some("string"),
4635 unit: None,
4636 },
4637 DeviceModelEntry {
4638 component: Some("ConnectedEV"),
4639 variable: "ACCurrent",
4640 attributes: Some("Min/MaxSet"),
4641 instance: None,
4642 required: Some("no"),
4643 data_type: Some("decimal"),
4644 unit: Some("A"),
4645 },
4646 DeviceModelEntry {
4647 component: Some("ConnectedEV"),
4648 variable: "DCCurrent",
4649 attributes: Some("Min/MaxSet"),
4650 instance: None,
4651 required: Some("no"),
4652 data_type: Some("decimal"),
4653 unit: Some("A"),
4654 },
4655 DeviceModelEntry {
4656 component: Some("ConnectedEV"),
4657 variable: "DCCurrent",
4658 attributes: Some("Target"),
4659 instance: None,
4660 required: Some("no"),
4661 data_type: Some("decimal"),
4662 unit: Some("V"),
4663 },
4664 DeviceModelEntry {
4665 component: Some("ConnectedEV"),
4666 variable: "DCVoltage",
4667 attributes: Some("Min/MaxSet"),
4668 instance: None,
4669 required: Some("no"),
4670 data_type: Some("decimal"),
4671 unit: Some("V"),
4672 },
4673 DeviceModelEntry {
4674 component: Some("ConnectedEV"),
4675 variable: "DCVoltage",
4676 attributes: Some("Target"),
4677 instance: None,
4678 required: Some("no"),
4679 data_type: Some("decimal"),
4680 unit: Some("V"),
4681 },
4682 DeviceModelEntry {
4683 component: Some("ConnectedEV"),
4684 variable: "Power",
4685 attributes: Some("MaxSet"),
4686 instance: None,
4687 required: Some("no"),
4688 data_type: Some("decimal"),
4689 unit: Some("W"),
4690 },
4691 DeviceModelEntry {
4692 component: Some("ConnectedEV"),
4693 variable: "EnergyImport",
4694 attributes: Some("MaxSet"),
4695 instance: None,
4696 required: Some("no"),
4697 data_type: Some("decimal"),
4698 unit: Some("Wh"),
4699 },
4700 DeviceModelEntry {
4701 component: Some("ConnectedEV"),
4702 variable: "EnergyImport",
4703 attributes: Some("MinSet"),
4704 instance: None,
4705 required: Some("no"),
4706 data_type: Some("decimal"),
4707 unit: Some("Wh"),
4708 },
4709 DeviceModelEntry {
4710 component: Some("ConnectedEV"),
4711 variable: "EnergyImport",
4712 attributes: Some("Target"),
4713 instance: None,
4714 required: Some("no"),
4715 data_type: Some("decimal"),
4716 unit: Some("Wh"),
4717 },
4718 DeviceModelEntry {
4719 component: Some("ConnectedEV"),
4720 variable: "BatteryCapacity",
4721 attributes: None,
4722 instance: None,
4723 required: Some("no"),
4724 data_type: Some("decimal"),
4725 unit: Some("Wh"),
4726 },
4727 DeviceModelEntry {
4728 component: Some("ConnectedEV"),
4729 variable: "DepartureTime",
4730 attributes: None,
4731 instance: None,
4732 required: Some("no"),
4733 data_type: Some("DateTime"),
4734 unit: None,
4735 },
4736 DeviceModelEntry {
4737 component: Some("ConnectedEV"),
4738 variable: "RemainingTimeBulk",
4739 attributes: None,
4740 instance: None,
4741 required: Some("no"),
4742 data_type: Some("integer"),
4743 unit: Some("s"),
4744 },
4745 DeviceModelEntry {
4746 component: Some("ConnectedEV"),
4747 variable: "RemainingTimeFull",
4748 attributes: None,
4749 instance: None,
4750 required: Some("no"),
4751 data_type: Some("integer"),
4752 unit: Some("s"),
4753 },
4754 DeviceModelEntry {
4755 component: Some("ConnectedEV"),
4756 variable: "StateOfChargeBulk",
4757 attributes: None,
4758 instance: None,
4759 required: Some("no"),
4760 data_type: Some("integer"),
4761 unit: Some("%"),
4762 },
4763 DeviceModelEntry {
4764 component: Some("ConnectedEV"),
4765 variable: "StateOfCharge",
4766 attributes: Some("MaxSet"),
4767 instance: None,
4768 required: Some("no"),
4769 data_type: Some("integer"),
4770 unit: Some("%"),
4771 },
4772 DeviceModelEntry {
4773 component: Some("ConnectedEV"),
4774 variable: "StateOfCharge",
4775 attributes: None,
4776 instance: None,
4777 required: Some("no"),
4778 data_type: Some("integer"),
4779 unit: Some("%"),
4780 },
4781 DeviceModelEntry {
4782 component: Some("ConnectedEV"),
4783 variable: "ChargingCompleteBulk",
4784 attributes: None,
4785 instance: None,
4786 required: Some("no"),
4787 data_type: Some("boolean"),
4788 unit: None,
4789 },
4790 DeviceModelEntry {
4791 component: Some("ConnectedEV"),
4792 variable: "ChargingCompleteFull",
4793 attributes: None,
4794 instance: None,
4795 required: Some("no"),
4796 data_type: Some("boolean"),
4797 unit: None,
4798 },
4799 DeviceModelEntry {
4800 component: Some("ConnectedEV"),
4801 variable: "ChargingState",
4802 attributes: None,
4803 instance: None,
4804 required: Some("no"),
4805 data_type: Some("OptionList"),
4806 unit: None,
4807 },
4808 DeviceModelEntry {
4809 component: Some("Connector"),
4810 variable: "AvailabilityState",
4811 attributes: None,
4812 instance: None,
4813 required: Some("no"),
4814 data_type: Some("OptionList"),
4815 unit: None,
4816 },
4817 DeviceModelEntry {
4818 component: Some("Connector"),
4819 variable: "Available",
4820 attributes: None,
4821 instance: None,
4822 required: Some("yes"),
4823 data_type: Some("boolean"),
4824 unit: None,
4825 },
4826 DeviceModelEntry {
4827 component: Some("Connector"),
4828 variable: "ChargeProtocol",
4829 attributes: None,
4830 instance: None,
4831 required: Some("no"),
4832 data_type: Some("string"),
4833 unit: None,
4834 },
4835 DeviceModelEntry {
4836 component: Some("Connector"),
4837 variable: "ConnectorType",
4838 attributes: None,
4839 instance: None,
4840 required: Some("yes"),
4841 data_type: Some("string"),
4842 unit: None,
4843 },
4844 DeviceModelEntry {
4845 component: Some("Connector"),
4846 variable: "SupplyPhases",
4847 attributes: None,
4848 instance: None,
4849 required: Some("yes"),
4850 data_type: Some("integer"),
4851 unit: None,
4852 },
4853 DeviceModelEntry {
4854 component: Some("Connector"),
4855 variable: "SlotStatus",
4856 attributes: None,
4857 instance: None,
4858 required: Some("no"),
4859 data_type: Some("OptionList"),
4860 unit: None,
4861 },
4862 DeviceModelEntry {
4863 component: Some("CPPWMController"),
4864 variable: "State",
4865 attributes: None,
4866 instance: None,
4867 required: Some("no"),
4868 data_type: Some("string"),
4869 unit: None,
4870 },
4871 DeviceModelEntry {
4872 component: Some("CustomizationCtrlr"),
4873 variable: "CustomImplementationEnabled",
4874 attributes: None,
4875 instance: Some("<vendorId>"),
4876 required: Some("no"),
4877 data_type: Some("boolean"),
4878 unit: None,
4879 },
4880 DeviceModelEntry {
4881 component: Some("CustomizationCtrlr"),
4882 variable: "CustomTriggers",
4883 attributes: None,
4884 instance: None,
4885 required: Some("no"),
4886 data_type: Some("MemberList"),
4887 unit: None,
4888 },
4889 DeviceModelEntry {
4890 component: Some("DeviceDataCtrlr"),
4891 variable: "BytesPerMessage",
4892 attributes: None,
4893 instance: Some("GetReport"),
4894 required: Some("yes"),
4895 data_type: Some("integer"),
4896 unit: None,
4897 },
4898 DeviceModelEntry {
4899 component: Some("DeviceDataCtrlr"),
4900 variable: "BytesPerMessage",
4901 attributes: None,
4902 instance: Some("GetVariables"),
4903 required: Some("yes"),
4904 data_type: Some("integer"),
4905 unit: None,
4906 },
4907 DeviceModelEntry {
4908 component: Some("DeviceDataCtrlr"),
4909 variable: "BytesPerMessage",
4910 attributes: None,
4911 instance: Some("SetVariables"),
4912 required: Some("yes"),
4913 data_type: Some("integer"),
4914 unit: None,
4915 },
4916 DeviceModelEntry {
4917 component: Some("DeviceDataCtrlr"),
4918 variable: "ConfigurationValueSize",
4919 attributes: None,
4920 instance: None,
4921 required: Some("no"),
4922 data_type: Some("integer"),
4923 unit: None,
4924 },
4925 DeviceModelEntry {
4926 component: Some("DeviceDataCtrlr"),
4927 variable: "ItemsPerMessage",
4928 attributes: None,
4929 instance: Some("GetReport"),
4930 required: Some("yes"),
4931 data_type: Some("integer"),
4932 unit: None,
4933 },
4934 DeviceModelEntry {
4935 component: Some("DeviceDataCtrlr"),
4936 variable: "ItemsPerMessage",
4937 attributes: None,
4938 instance: Some("GetVariables"),
4939 required: Some("yes"),
4940 data_type: Some("integer"),
4941 unit: None,
4942 },
4943 DeviceModelEntry {
4944 component: Some("DeviceDataCtrlr"),
4945 variable: "ItemsPerMessage",
4946 attributes: None,
4947 instance: Some("SetVariables"),
4948 required: Some("yes"),
4949 data_type: Some("integer"),
4950 unit: None,
4951 },
4952 DeviceModelEntry {
4953 component: Some("DeviceDataCtrlr"),
4954 variable: "ReportingValueSize",
4955 attributes: None,
4956 instance: None,
4957 required: Some("no"),
4958 data_type: Some("integer"),
4959 unit: None,
4960 },
4961 DeviceModelEntry {
4962 component: Some("DeviceDataCtrlr"),
4963 variable: "ValueSize",
4964 attributes: None,
4965 instance: None,
4966 required: Some("no"),
4967 data_type: Some("integer"),
4968 unit: None,
4969 },
4970 DeviceModelEntry {
4971 component: Some("DisplayMessageCtrlr"),
4972 variable: "Available",
4973 attributes: None,
4974 instance: None,
4975 required: Some("no"),
4976 data_type: Some("boolean"),
4977 unit: None,
4978 },
4979 DeviceModelEntry {
4980 component: Some("DisplayMessageCtrlr"),
4981 variable: "DisplayMessages",
4982 attributes: None,
4983 instance: None,
4984 required: Some("yes"),
4985 data_type: Some("integer"),
4986 unit: None,
4987 },
4988 DeviceModelEntry {
4989 component: Some("DisplayMessageCtrlr"),
4990 variable: "Enabled",
4991 attributes: None,
4992 instance: None,
4993 required: Some("no"),
4994 data_type: Some("boolean"),
4995 unit: None,
4996 },
4997 DeviceModelEntry {
4998 component: Some("DisplayMessageCtrlr"),
4999 variable: "Language",
5000 attributes: None,
5001 instance: None,
5002 required: Some("yes"),
5003 data_type: Some("OptionList"),
5004 unit: None,
5005 },
5006 DeviceModelEntry {
5007 component: Some("EVSE"),
5008 variable: "AllowReset",
5009 attributes: None,
5010 instance: None,
5011 required: Some("no"),
5012 data_type: Some("boolean"),
5013 unit: None,
5014 },
5015 DeviceModelEntry {
5016 component: Some("EVSE"),
5017 variable: "AvailabilityState",
5018 attributes: None,
5019 instance: None,
5020 required: Some("yes"),
5021 data_type: Some("OptionList"),
5022 unit: None,
5023 },
5024 DeviceModelEntry {
5025 component: Some("EVSE"),
5026 variable: "Available",
5027 attributes: None,
5028 instance: None,
5029 required: Some("yes"),
5030 data_type: Some("boolean"),
5031 unit: None,
5032 },
5033 DeviceModelEntry {
5034 component: Some("EVSE"),
5035 variable: "EvseId",
5036 attributes: None,
5037 instance: None,
5038 required: Some("no"),
5039 data_type: Some("string"),
5040 unit: None,
5041 },
5042 DeviceModelEntry {
5043 component: Some("EVSE"),
5044 variable: "Power",
5045 attributes: None,
5046 instance: None,
5047 required: Some("yes"),
5048 data_type: Some("decimal"),
5049 unit: Some("W, kW"),
5050 },
5051 DeviceModelEntry {
5052 component: Some("EVSE"),
5053 variable: "SupplyPhases",
5054 attributes: None,
5055 instance: None,
5056 required: Some("yes"),
5057 data_type: Some("integer"),
5058 unit: None,
5059 },
5060 DeviceModelEntry {
5061 component: Some("EVSE"),
5062 variable: "DCInputPhaseControl",
5063 attributes: None,
5064 instance: None,
5065 required: Some("no"),
5066 data_type: Some("boolean"),
5067 unit: None,
5068 },
5069 DeviceModelEntry {
5070 component: Some("EVSE"),
5071 variable: "ISO15118EvseId",
5072 attributes: None,
5073 instance: None,
5074 required: Some("no"),
5075 data_type: Some("string"),
5076 unit: None,
5077 },
5078 DeviceModelEntry {
5079 component: Some("EVSE"),
5080 variable: "ChargingState",
5081 attributes: None,
5082 instance: None,
5083 required: Some("no"),
5084 data_type: Some("OptionList"),
5085 unit: None,
5086 },
5087 DeviceModelEntry {
5088 component: Some("EVSE"),
5089 variable: "ActiveTransactionId",
5090 attributes: None,
5091 instance: None,
5092 required: Some("no"),
5093 data_type: Some("string"),
5094 unit: None,
5095 },
5096 DeviceModelEntry {
5097 component: Some("FiscalMetering"),
5098 variable: "EnergyExport",
5099 attributes: None,
5100 instance: None,
5101 required: Some("no"),
5102 data_type: Some("decimal"),
5103 unit: Some("Wh, kWh"),
5104 },
5105 DeviceModelEntry {
5106 component: Some("FiscalMetering"),
5107 variable: "EnergyExportRegister",
5108 attributes: None,
5109 instance: None,
5110 required: Some("no"),
5111 data_type: Some("decimal"),
5112 unit: Some("Wh, kWh"),
5113 },
5114 DeviceModelEntry {
5115 component: Some("FiscalMetering"),
5116 variable: "EnergyImport",
5117 attributes: None,
5118 instance: None,
5119 required: Some("no"),
5120 data_type: Some("decimal"),
5121 unit: Some("Wh, kWh"),
5122 },
5123 DeviceModelEntry {
5124 component: Some("FiscalMetering"),
5125 variable: "EnergyImportRegister",
5126 attributes: None,
5127 instance: None,
5128 required: Some("no"),
5129 data_type: Some("decimal"),
5130 unit: Some("Wh, kWh"),
5131 },
5132 DeviceModelEntry {
5133 component: Some("FiscalMetering"),
5134 variable: "PublicKey",
5135 attributes: None,
5136 instance: None,
5137 required: Some("no"),
5138 data_type: Some("string"),
5139 unit: None,
5140 },
5141 DeviceModelEntry {
5142 component: Some("ISO15118Ctrlr"),
5143 variable: "CentralContractValidationAllowed",
5144 attributes: None,
5145 instance: None,
5146 required: Some("no"),
5147 data_type: Some("boolean"),
5148 unit: None,
5149 },
5150 DeviceModelEntry {
5151 component: Some("ISO15118Ctrlr"),
5152 variable: "ContractValidationOffline",
5153 attributes: None,
5154 instance: None,
5155 required: Some("yes"),
5156 data_type: Some("boolean"),
5157 unit: None,
5158 },
5159 DeviceModelEntry {
5160 component: Some("ISO15118Ctrlr"),
5161 variable: "SeccId",
5162 attributes: None,
5163 instance: None,
5164 required: Some("no"),
5165 data_type: Some("string"),
5166 unit: None,
5167 },
5168 DeviceModelEntry {
5169 component: Some("ISO15118Ctrlr"),
5170 variable: "MaxScheduleEntries",
5171 attributes: None,
5172 instance: None,
5173 required: Some("no"),
5174 data_type: Some("integer"),
5175 unit: None,
5176 },
5177 DeviceModelEntry {
5178 component: Some("ISO15118Ctrlr"),
5179 variable: "RequestedEnergyTransferMode",
5180 attributes: None,
5181 instance: None,
5182 required: Some("no"),
5183 data_type: Some("OptionList"),
5184 unit: None,
5185 },
5186 DeviceModelEntry {
5187 component: Some("ISO15118Ctrlr"),
5188 variable: "RequestMeteringReceipt",
5189 attributes: None,
5190 instance: None,
5191 required: Some("no"),
5192 data_type: Some("boolean"),
5193 unit: None,
5194 },
5195 DeviceModelEntry {
5196 component: Some("ISO15118Ctrlr"),
5197 variable: "CountryName",
5198 attributes: None,
5199 instance: None,
5200 required: Some("no"),
5201 data_type: Some("string"),
5202 unit: None,
5203 },
5204 DeviceModelEntry {
5205 component: Some("ISO15118Ctrlr"),
5206 variable: "OrganizationName",
5207 attributes: None,
5208 instance: None,
5209 required: Some("no"),
5210 data_type: Some("string"),
5211 unit: None,
5212 },
5213 DeviceModelEntry {
5214 component: Some("ISO15118Ctrlr"),
5215 variable: "PnCEnabled",
5216 attributes: None,
5217 instance: None,
5218 required: Some("no"),
5219 data_type: Some("boolean"),
5220 unit: None,
5221 },
5222 DeviceModelEntry {
5223 component: Some("ISO15118Ctrlr"),
5224 variable: "V2GCertificateInstallationEnabled",
5225 attributes: None,
5226 instance: None,
5227 required: Some("no"),
5228 data_type: Some("boolean"),
5229 unit: None,
5230 },
5231 DeviceModelEntry {
5232 component: Some("ISO15118Ctrlr"),
5233 variable: "ContractCertificateInstallationEnabled",
5234 attributes: None,
5235 instance: None,
5236 required: Some("no"),
5237 data_type: Some("boolean"),
5238 unit: None,
5239 },
5240 DeviceModelEntry {
5241 component: Some("ISO15118Ctrlr"),
5242 variable: "CertificateStatusSource",
5243 attributes: None,
5244 instance: None,
5245 required: Some("no"),
5246 data_type: Some("MemberList"),
5247 unit: None,
5248 },
5249 DeviceModelEntry {
5250 component: Some("ISO15118Ctrlr"),
5251 variable: "NotificationDelay",
5252 attributes: None,
5253 instance: None,
5254 required: Some("no"),
5255 data_type: Some("integer"),
5256 unit: Some("s"),
5257 },
5258 DeviceModelEntry {
5259 component: Some("ISO15118Ctrlr"),
5260 variable: "ServiceRenegotiationSupport",
5261 attributes: None,
5262 instance: None,
5263 required: Some("no"),
5264 data_type: Some("boolean"),
5265 unit: None,
5266 },
5267 DeviceModelEntry {
5268 component: Some("ISO15118Ctrlr"),
5269 variable: "MaxPriceElements",
5270 attributes: None,
5271 instance: None,
5272 required: Some("no"),
5273 data_type: Some("integer"),
5274 unit: None,
5275 },
5276 DeviceModelEntry {
5277 component: Some("ISO15118Ctrlr"),
5278 variable: "ProtocolSupported",
5279 attributes: None,
5280 instance: Some("1, 2 .. 20"),
5281 required: Some("no"),
5282 data_type: Some("string"),
5283 unit: None,
5284 },
5285 DeviceModelEntry {
5286 component: Some("LocalAuthListCtrlr"),
5287 variable: "Available",
5288 attributes: None,
5289 instance: None,
5290 required: Some("no"),
5291 data_type: Some("boolean"),
5292 unit: None,
5293 },
5294 DeviceModelEntry {
5295 component: Some("LocalAuthListCtrlr"),
5296 variable: "BytesPerMessage",
5297 attributes: None,
5298 instance: None,
5299 required: Some("yes"),
5300 data_type: Some("integer"),
5301 unit: None,
5302 },
5303 DeviceModelEntry {
5304 component: Some("LocalAuthListCtrlr"),
5305 variable: "Enabled",
5306 attributes: None,
5307 instance: None,
5308 required: Some("no"),
5309 data_type: Some("boolean"),
5310 unit: None,
5311 },
5312 DeviceModelEntry {
5313 component: Some("LocalAuthListCtrlr"),
5314 variable: "Entries",
5315 attributes: None,
5316 instance: None,
5317 required: Some("yes"),
5318 data_type: Some("integer"),
5319 unit: None,
5320 },
5321 DeviceModelEntry {
5322 component: Some("LocalAuthListCtrlr"),
5323 variable: "ItemsPerMessage",
5324 attributes: None,
5325 instance: None,
5326 required: Some("yes"),
5327 data_type: Some("integer"),
5328 unit: None,
5329 },
5330 DeviceModelEntry {
5331 component: Some("LocalAuthListCtrlr"),
5332 variable: "Storage",
5333 attributes: None,
5334 instance: None,
5335 required: Some("no"),
5336 data_type: Some("integer"),
5337 unit: Some("B"),
5338 },
5339 DeviceModelEntry {
5340 component: Some("LocalAuthListCtrlr"),
5341 variable: "DisablePostAuthorize",
5342 attributes: None,
5343 instance: None,
5344 required: Some("no"),
5345 data_type: Some("boolean"),
5346 unit: None,
5347 },
5348 DeviceModelEntry {
5349 component: Some("LocalAuthListCtrlr"),
5350 variable: "SupportsExpiryDateTime",
5351 attributes: None,
5352 instance: None,
5353 required: Some("no"),
5354 data_type: Some("boolean"),
5355 unit: None,
5356 },
5357 DeviceModelEntry {
5358 component: Some("LocalEnergyStorage"),
5359 variable: "Capacity",
5360 attributes: None,
5361 instance: None,
5362 required: Some("no"),
5363 data_type: Some("decimal"),
5364 unit: Some("Wh"),
5365 },
5366 DeviceModelEntry {
5367 component: Some("MonitoringCtrlr"),
5368 variable: "Available",
5369 attributes: None,
5370 instance: None,
5371 required: Some("no"),
5372 data_type: Some("boolean"),
5373 unit: None,
5374 },
5375 DeviceModelEntry {
5376 component: Some("MonitoringCtrlr"),
5377 variable: "BytesPerMessage",
5378 attributes: None,
5379 instance: Some("ClearVariableMonitoring"),
5380 required: Some("no"),
5381 data_type: Some("integer"),
5382 unit: None,
5383 },
5384 DeviceModelEntry {
5385 component: Some("MonitoringCtrlr"),
5386 variable: "BytesPerMessage",
5387 attributes: None,
5388 instance: Some("SetVariableMonitoring"),
5389 required: Some("yes"),
5390 data_type: Some("integer"),
5391 unit: None,
5392 },
5393 DeviceModelEntry {
5394 component: Some("MonitoringCtrlr"),
5395 variable: "Enabled",
5396 attributes: None,
5397 instance: None,
5398 required: Some("no"),
5399 data_type: Some("boolean"),
5400 unit: None,
5401 },
5402 DeviceModelEntry {
5403 component: Some("MonitoringCtrlr"),
5404 variable: "ItemsPerMessage",
5405 attributes: None,
5406 instance: Some("ClearVariableMonitoring"),
5407 required: Some("no"),
5408 data_type: Some("integer"),
5409 unit: None,
5410 },
5411 DeviceModelEntry {
5412 component: Some("MonitoringCtrlr"),
5413 variable: "ItemsPerMessage",
5414 attributes: None,
5415 instance: Some("SetVariableMonitoring"),
5416 required: Some("yes"),
5417 data_type: Some("integer"),
5418 unit: None,
5419 },
5420 DeviceModelEntry {
5421 component: Some("MonitoringCtrlr"),
5422 variable: "OfflineQueuingSeverity",
5423 attributes: None,
5424 instance: None,
5425 required: Some("no"),
5426 data_type: Some("integer"),
5427 unit: None,
5428 },
5429 DeviceModelEntry {
5430 component: Some("MonitoringCtrlr"),
5431 variable: "MonitoringBase",
5432 attributes: None,
5433 instance: None,
5434 required: Some("no"),
5435 data_type: Some("OptionList"),
5436 unit: None,
5437 },
5438 DeviceModelEntry {
5439 component: Some("MonitoringCtrlr"),
5440 variable: "MonitoringLevel",
5441 attributes: None,
5442 instance: None,
5443 required: Some("no"),
5444 data_type: Some("integer"),
5445 unit: None,
5446 },
5447 DeviceModelEntry {
5448 component: Some("MonitoringCtrlr"),
5449 variable: "ActiveMonitoringBase",
5450 attributes: None,
5451 instance: None,
5452 required: Some("no"),
5453 data_type: Some("OptionList"),
5454 unit: None,
5455 },
5456 DeviceModelEntry {
5457 component: Some("MonitoringCtrlr"),
5458 variable: "ActiveMonitoringLevel",
5459 attributes: None,
5460 instance: None,
5461 required: Some("no"),
5462 data_type: Some("integer"),
5463 unit: None,
5464 },
5465 DeviceModelEntry {
5466 component: Some("OCPPCommCtrlr"),
5467 variable: "ActiveNetworkProfile",
5468 attributes: None,
5469 instance: None,
5470 required: Some("no"),
5471 data_type: Some("string"),
5472 unit: None,
5473 },
5474 DeviceModelEntry {
5475 component: Some("OCPPCommCtrlr"),
5476 variable: "FileTransferProtocols",
5477 attributes: None,
5478 instance: None,
5479 required: Some("yes"),
5480 data_type: Some("MemberList"),
5481 unit: None,
5482 },
5483 DeviceModelEntry {
5484 component: Some("OCPPCommCtrlr"),
5485 variable: "HeartbeatInterval",
5486 attributes: None,
5487 instance: None,
5488 required: Some("no"),
5489 data_type: Some("integer"),
5490 unit: Some("s"),
5491 },
5492 DeviceModelEntry {
5493 component: Some("OCPPCommCtrlr"),
5494 variable: "MessageTimeout",
5495 attributes: None,
5496 instance: Some("Default"),
5497 required: Some("yes"),
5498 data_type: Some("integer"),
5499 unit: Some("s"),
5500 },
5501 DeviceModelEntry {
5502 component: Some("OCPPCommCtrlr"),
5503 variable: "MessageAttemptInterval",
5504 attributes: None,
5505 instance: Some("TransactionEvent"),
5506 required: Some("yes"),
5507 data_type: Some("integer"),
5508 unit: None,
5509 },
5510 DeviceModelEntry {
5511 component: Some("OCPPCommCtrlr"),
5512 variable: "MessageAttempts",
5513 attributes: None,
5514 instance: Some("TransactionEvent"),
5515 required: Some("yes"),
5516 data_type: Some("integer"),
5517 unit: None,
5518 },
5519 DeviceModelEntry {
5520 component: Some("OCPPCommCtrlr"),
5521 variable: "NetworkConfigurationPriority",
5522 attributes: None,
5523 instance: None,
5524 required: Some("yes"),
5525 data_type: Some("string"),
5526 unit: None,
5527 },
5528 DeviceModelEntry {
5529 component: Some("OCPPCommCtrlr"),
5530 variable: "NetworkProfileConnectionAttempts",
5531 attributes: None,
5532 instance: None,
5533 required: Some("yes"),
5534 data_type: Some("integer"),
5535 unit: None,
5536 },
5537 DeviceModelEntry {
5538 component: Some("OCPPCommCtrlr"),
5539 variable: "OfflineThreshold",
5540 attributes: None,
5541 instance: None,
5542 required: Some("yes"),
5543 data_type: Some("integer"),
5544 unit: Some("s"),
5545 },
5546 DeviceModelEntry {
5547 component: Some("OCPPCommCtrlr"),
5548 variable: "PublicKeyWithSignedMeterValue",
5549 attributes: None,
5550 instance: None,
5551 required: Some("no"),
5552 data_type: Some("OptionList"),
5553 unit: None,
5554 },
5555 DeviceModelEntry {
5556 component: Some("OCPPCommCtrlr"),
5557 variable: "QueueAllMessages",
5558 attributes: None,
5559 instance: None,
5560 required: Some("no"),
5561 data_type: Some("boolean"),
5562 unit: None,
5563 },
5564 DeviceModelEntry {
5565 component: Some("OCPPCommCtrlr"),
5566 variable: "ResetRetries",
5567 attributes: None,
5568 instance: None,
5569 required: Some("yes"),
5570 data_type: Some("integer"),
5571 unit: None,
5572 },
5573 DeviceModelEntry {
5574 component: Some("OCPPCommCtrlr"),
5575 variable: "RetryBackOffRandomRange",
5576 attributes: None,
5577 instance: None,
5578 required: Some("no"),
5579 data_type: Some("integer"),
5580 unit: None,
5581 },
5582 DeviceModelEntry {
5583 component: Some("OCPPCommCtrlr"),
5584 variable: "RetryBackOffRepeatTimes",
5585 attributes: None,
5586 instance: None,
5587 required: Some("no"),
5588 data_type: Some("integer"),
5589 unit: None,
5590 },
5591 DeviceModelEntry {
5592 component: Some("OCPPCommCtrlr"),
5593 variable: "RetryBackOffWaitMinimum",
5594 attributes: None,
5595 instance: None,
5596 required: Some("no"),
5597 data_type: Some("integer"),
5598 unit: None,
5599 },
5600 DeviceModelEntry {
5601 component: Some("OCPPCommCtrlr"),
5602 variable: "UnlockOnEVSideDisconnect",
5603 attributes: None,
5604 instance: None,
5605 required: Some("yes"),
5606 data_type: Some("boolean"),
5607 unit: None,
5608 },
5609 DeviceModelEntry {
5610 component: Some("OCPPCommCtrlr"),
5611 variable: "WebSocketPingInterval",
5612 attributes: None,
5613 instance: None,
5614 required: Some("no"),
5615 data_type: Some("integer"),
5616 unit: Some("s"),
5617 },
5618 DeviceModelEntry {
5619 component: Some("OCPPCommCtrlr"),
5620 variable: "FieldLength",
5621 attributes: None,
5622 instance: None,
5623 required: Some("no"),
5624 data_type: Some("integer"),
5625 unit: None,
5626 },
5627 DeviceModelEntry {
5628 component: Some("OCPPCommCtrlr"),
5629 variable: "ExternalConfigChangeDate",
5630 attributes: None,
5631 instance: None,
5632 required: Some("no"),
5633 data_type: Some("DateTime"),
5634 unit: None,
5635 },
5636 DeviceModelEntry {
5637 component: Some("ReservationCtrlr"),
5638 variable: "Available",
5639 attributes: None,
5640 instance: None,
5641 required: Some("no"),
5642 data_type: Some("boolean"),
5643 unit: None,
5644 },
5645 DeviceModelEntry {
5646 component: Some("ReservationCtrlr"),
5647 variable: "Enabled",
5648 attributes: None,
5649 instance: None,
5650 required: Some("no"),
5651 data_type: Some("boolean"),
5652 unit: None,
5653 },
5654 DeviceModelEntry {
5655 component: Some("ReservationCtrlr"),
5656 variable: "NonEvseSpecific",
5657 attributes: None,
5658 instance: None,
5659 required: Some("no"),
5660 data_type: Some("boolean"),
5661 unit: None,
5662 },
5663 DeviceModelEntry {
5664 component: Some("SampledDataCtrlr"),
5665 variable: "Available",
5666 attributes: None,
5667 instance: None,
5668 required: Some("no"),
5669 data_type: Some("boolean"),
5670 unit: None,
5671 },
5672 DeviceModelEntry {
5673 component: Some("SampledDataCtrlr"),
5674 variable: "Enabled",
5675 attributes: None,
5676 instance: None,
5677 required: Some("no"),
5678 data_type: Some("boolean"),
5679 unit: None,
5680 },
5681 DeviceModelEntry {
5682 component: Some("SampledDataCtrlr"),
5683 variable: "SignReadings",
5684 attributes: None,
5685 instance: None,
5686 required: Some("no"),
5687 data_type: Some("boolean"),
5688 unit: None,
5689 },
5690 DeviceModelEntry {
5691 component: Some("SampledDataCtrlr"),
5692 variable: "SignStartedReadings",
5693 attributes: None,
5694 instance: None,
5695 required: None,
5696 data_type: None,
5697 unit: None,
5698 },
5699 DeviceModelEntry {
5700 component: Some("SampledDataCtrlr"),
5701 variable: "SignUpdatedReadings",
5702 attributes: None,
5703 instance: None,
5704 required: None,
5705 data_type: None,
5706 unit: None,
5707 },
5708 DeviceModelEntry {
5709 component: Some("SampledDataCtrlr"),
5710 variable: "TxEndedInterval",
5711 attributes: None,
5712 instance: None,
5713 required: Some("yes"),
5714 data_type: Some("integer"),
5715 unit: Some("s"),
5716 },
5717 DeviceModelEntry {
5718 component: Some("SampledDataCtrlr"),
5719 variable: "TxEndedMeasurands",
5720 attributes: None,
5721 instance: None,
5722 required: Some("yes"),
5723 data_type: Some("MemberList"),
5724 unit: None,
5725 },
5726 DeviceModelEntry {
5727 component: Some("SampledDataCtrlr"),
5728 variable: "TxStartedMeasurands",
5729 attributes: None,
5730 instance: None,
5731 required: Some("yes"),
5732 data_type: Some("MemberList"),
5733 unit: None,
5734 },
5735 DeviceModelEntry {
5736 component: Some("SampledDataCtrlr"),
5737 variable: "TxUpdatedInterval",
5738 attributes: None,
5739 instance: None,
5740 required: Some("yes"),
5741 data_type: Some("integer"),
5742 unit: Some("s"),
5743 },
5744 DeviceModelEntry {
5745 component: Some("SampledDataCtrlr"),
5746 variable: "TxUpdatedMeasurands",
5747 attributes: None,
5748 instance: None,
5749 required: Some("yes"),
5750 data_type: Some("MemberList"),
5751 unit: None,
5752 },
5753 DeviceModelEntry {
5754 component: Some("SampledDataCtrlr"),
5755 variable: "RegisterValuesWithoutPhases",
5756 attributes: None,
5757 instance: None,
5758 required: Some("no"),
5759 data_type: Some("boolean"),
5760 unit: None,
5761 },
5762 DeviceModelEntry {
5763 component: Some("SecurityCtrlr"),
5764 variable: "AllowSecurityProfileDowngrade",
5765 attributes: None,
5766 instance: None,
5767 required: Some("no"),
5768 data_type: Some("boolean"),
5769 unit: None,
5770 },
5771 DeviceModelEntry {
5772 component: Some("SecurityCtrlr"),
5773 variable: "AdditionalRootCertificateCheck",
5774 attributes: None,
5775 instance: None,
5776 required: Some("no"),
5777 data_type: Some("boolean"),
5778 unit: None,
5779 },
5780 DeviceModelEntry {
5781 component: Some("SecurityCtrlr"),
5782 variable: "BasicAuthPassword",
5783 attributes: None,
5784 instance: None,
5785 required: Some("no"),
5786 data_type: Some("passwordString"),
5787 unit: None,
5788 },
5789 DeviceModelEntry {
5790 component: Some("SecurityCtrlr"),
5791 variable: "CertificateEntries",
5792 attributes: None,
5793 instance: None,
5794 required: Some("yes"),
5795 data_type: Some("integer"),
5796 unit: None,
5797 },
5798 DeviceModelEntry {
5799 component: Some("SecurityCtrlr"),
5800 variable: "CertSigningRepeatTimes",
5801 attributes: None,
5802 instance: None,
5803 required: Some("no"),
5804 data_type: Some("integer"),
5805 unit: None,
5806 },
5807 DeviceModelEntry {
5808 component: Some("SecurityCtrlr"),
5809 variable: "CertSigningWaitMinimum",
5810 attributes: None,
5811 instance: None,
5812 required: Some("no"),
5813 data_type: Some("integer"),
5814 unit: Some("s"),
5815 },
5816 DeviceModelEntry {
5817 component: Some("SecurityCtrlr"),
5818 variable: "Identity",
5819 attributes: None,
5820 instance: None,
5821 required: Some("no"),
5822 data_type: Some("identifierString"),
5823 unit: None,
5824 },
5825 DeviceModelEntry {
5826 component: Some("SecurityCtrlr"),
5827 variable: "MaxCertificateChainSize",
5828 attributes: None,
5829 instance: None,
5830 required: Some("no"),
5831 data_type: Some("integer"),
5832 unit: None,
5833 },
5834 DeviceModelEntry {
5835 component: Some("SecurityCtrlr"),
5836 variable: "OrganizationName",
5837 attributes: None,
5838 instance: None,
5839 required: Some("yes"),
5840 data_type: Some("string"),
5841 unit: None,
5842 },
5843 DeviceModelEntry {
5844 component: Some("SecurityCtrlr"),
5845 variable: "SecurityProfile",
5846 attributes: None,
5847 instance: None,
5848 required: Some("yes"),
5849 data_type: Some("integer"),
5850 unit: None,
5851 },
5852 DeviceModelEntry {
5853 component: Some("SmartChargingCtrlr"),
5854 variable: "ACPhaseSwitchingSupported",
5855 attributes: None,
5856 instance: None,
5857 required: Some("no"),
5858 data_type: Some("boolean"),
5859 unit: None,
5860 },
5861 DeviceModelEntry {
5862 component: Some("SmartChargingCtrlr"),
5863 variable: "Available",
5864 attributes: None,
5865 instance: None,
5866 required: Some("no"),
5867 data_type: Some("boolean"),
5868 unit: None,
5869 },
5870 DeviceModelEntry {
5871 component: Some("SmartChargingCtrlr"),
5872 variable: "Enabled",
5873 attributes: None,
5874 instance: None,
5875 required: Some("no"),
5876 data_type: Some("boolean"),
5877 unit: None,
5878 },
5879 DeviceModelEntry {
5880 component: Some("SmartChargingCtrlr"),
5881 variable: "Entries",
5882 attributes: None,
5883 instance: Some("ChargingProfiles"),
5884 required: Some("yes"),
5885 data_type: Some("integer"),
5886 unit: None,
5887 },
5888 DeviceModelEntry {
5889 component: Some("SmartChargingCtrlr"),
5890 variable: "ExternalControlSignalsEnabled",
5891 attributes: None,
5892 instance: None,
5893 required: Some("no"),
5894 data_type: Some("boolean"),
5895 unit: None,
5896 },
5897 DeviceModelEntry {
5898 component: Some("SmartChargingCtrlr"),
5899 variable: "LimitChangeSignificance",
5900 attributes: None,
5901 instance: None,
5902 required: Some("yes"),
5903 data_type: Some("decimal"),
5904 unit: Some("Percent"),
5905 },
5906 DeviceModelEntry {
5907 component: Some("SmartChargingCtrlr"),
5908 variable: "NotifyChargingLimitWithSchedules",
5909 attributes: None,
5910 instance: None,
5911 required: Some("no"),
5912 data_type: Some("boolean"),
5913 unit: None,
5914 },
5915 DeviceModelEntry {
5916 component: Some("SmartChargingCtrlr"),
5917 variable: "PeriodsPerSchedule",
5918 attributes: None,
5919 instance: None,
5920 required: Some("yes"),
5921 data_type: Some("integer"),
5922 unit: None,
5923 },
5924 DeviceModelEntry {
5925 component: Some("SmartChargingCtrlr"),
5926 variable: "Phases3to1",
5927 attributes: None,
5928 instance: None,
5929 required: Some("no"),
5930 data_type: Some("boolean"),
5931 unit: None,
5932 },
5933 DeviceModelEntry {
5934 component: Some("SmartChargingCtrlr"),
5935 variable: "ProfileStackLevel",
5936 attributes: None,
5937 instance: None,
5938 required: Some("yes"),
5939 data_type: Some("integer"),
5940 unit: None,
5941 },
5942 DeviceModelEntry {
5943 component: Some("SmartChargingCtrlr"),
5944 variable: "RateUnit",
5945 attributes: None,
5946 instance: None,
5947 required: Some("yes"),
5948 data_type: Some("MemberList"),
5949 unit: None,
5950 },
5951 DeviceModelEntry {
5952 component: Some("SmartChargingCtrlr"),
5953 variable: "ExternalConstraintsProfileDisallowed",
5954 attributes: None,
5955 instance: None,
5956 required: Some("no"),
5957 data_type: Some("boolean"),
5958 unit: None,
5959 },
5960 DeviceModelEntry {
5961 component: Some("SmartChargingCtrlr"),
5962 variable: "ChargingProfilePersistence",
5963 attributes: None,
5964 instance: Some("TxProfile"),
5965 required: Some("no"),
5966 data_type: Some("boolean"),
5967 unit: None,
5968 },
5969 DeviceModelEntry {
5970 component: Some("SmartChargingCtrlr"),
5971 variable: "ChargingProfilePersistence",
5972 attributes: None,
5973 instance: Some("LocalGeneration"),
5974 required: Some("no"),
5975 data_type: Some("boolean"),
5976 unit: None,
5977 },
5978 DeviceModelEntry {
5979 component: Some("SmartChargingCtrlr"),
5980 variable: "ChargingProfilePersistence",
5981 attributes: None,
5982 instance: Some("ChargingStationExternalConstraints"),
5983 required: Some("no"),
5984 data_type: Some("boolean"),
5985 unit: None,
5986 },
5987 DeviceModelEntry {
5988 component: Some("SmartChargingCtrlr"),
5989 variable: "MaxExternalConstraintsId",
5990 attributes: None,
5991 instance: None,
5992 required: Some("no"),
5993 data_type: Some("integer"),
5994 unit: None,
5995 },
5996 DeviceModelEntry {
5997 component: Some("TariffCostCtrlr"),
5998 variable: "Available",
5999 attributes: None,
6000 instance: Some("Tariff"),
6001 required: Some("no"),
6002 data_type: Some("boolean"),
6003 unit: None,
6004 },
6005 DeviceModelEntry {
6006 component: Some("TariffCostCtrlr"),
6007 variable: "Available",
6008 attributes: None,
6009 instance: Some("Cost"),
6010 required: Some("no"),
6011 data_type: Some("boolean"),
6012 unit: None,
6013 },
6014 DeviceModelEntry {
6015 component: Some("TariffCostCtrlr"),
6016 variable: "Currency",
6017 attributes: None,
6018 instance: None,
6019 required: Some("yes"),
6020 data_type: Some("string"),
6021 unit: None,
6022 },
6023 DeviceModelEntry {
6024 component: Some("TariffCostCtrlr"),
6025 variable: "Enabled",
6026 attributes: None,
6027 instance: Some("Tariff"),
6028 required: Some("no"),
6029 data_type: Some("boolean"),
6030 unit: None,
6031 },
6032 DeviceModelEntry {
6033 component: Some("TariffCostCtrlr"),
6034 variable: "Enabled",
6035 attributes: None,
6036 instance: Some("Cost"),
6037 required: Some("no"),
6038 data_type: Some("boolean"),
6039 unit: None,
6040 },
6041 DeviceModelEntry {
6042 component: Some("TariffCostCtrlr"),
6043 variable: "Enabled",
6044 attributes: None,
6045 instance: Some("RunningCost"),
6046 required: Some("no"),
6047 data_type: Some("boolean"),
6048 unit: None,
6049 },
6050 DeviceModelEntry {
6051 component: Some("TariffCostCtrlr"),
6052 variable: "TariffFallbackMessage",
6053 attributes: None,
6054 instance: Some("<language>"),
6055 required: Some("yes"),
6056 data_type: Some("string"),
6057 unit: None,
6058 },
6059 DeviceModelEntry {
6060 component: Some("TariffCostCtrlr"),
6061 variable: "TotalCostFallbackMessage",
6062 attributes: None,
6063 instance: Some("<language>"),
6064 required: Some("yes"),
6065 data_type: Some("string"),
6066 unit: None,
6067 },
6068 DeviceModelEntry {
6069 component: Some("TariffCostCtrlr"),
6070 variable: "OfflineTariffFallbackMessage",
6071 attributes: None,
6072 instance: Some("<language>"),
6073 required: Some("no"),
6074 data_type: Some("string"),
6075 unit: None,
6076 },
6077 DeviceModelEntry {
6078 component: Some("TariffCostCtrlr"),
6079 variable: "Interval",
6080 attributes: None,
6081 instance: Some("Tariff"),
6082 required: Some("no"),
6083 data_type: Some("integer"),
6084 unit: Some("s"),
6085 },
6086 DeviceModelEntry {
6087 component: Some("TariffCostCtrlr"),
6088 variable: "Interval",
6089 attributes: None,
6090 instance: Some("Cost"),
6091 required: Some("no"),
6092 data_type: Some("integer"),
6093 unit: Some("s"),
6094 },
6095 DeviceModelEntry {
6096 component: Some("TariffCostCtrlr"),
6097 variable: "ConditionsSupported",
6098 attributes: None,
6099 instance: Some("Tariff"),
6100 required: Some("no"),
6101 data_type: Some("boolean"),
6102 unit: None,
6103 },
6104 DeviceModelEntry {
6105 component: Some("TokenReader"),
6106 variable: "Token",
6107 attributes: None,
6108 instance: None,
6109 required: Some("no"),
6110 data_type: Some("string"),
6111 unit: None,
6112 },
6113 DeviceModelEntry {
6114 component: Some("TokenReader"),
6115 variable: "TokenType",
6116 attributes: None,
6117 instance: None,
6118 required: Some("no"),
6119 data_type: Some("OptionList"),
6120 unit: None,
6121 },
6122 DeviceModelEntry {
6123 component: Some("TxCtrlr"),
6124 variable: "ChargingTime",
6125 attributes: None,
6126 instance: None,
6127 required: Some("no"),
6128 data_type: Some("decimal"),
6129 unit: Some("s"),
6130 },
6131 DeviceModelEntry {
6132 component: Some("TxCtrlr"),
6133 variable: "EVConnectionTimeOut",
6134 attributes: None,
6135 instance: None,
6136 required: Some("yes"),
6137 data_type: Some("integer"),
6138 unit: Some("s"),
6139 },
6140 DeviceModelEntry {
6141 component: Some("TxCtrlr"),
6142 variable: "MaxEnergyOnInvalidId",
6143 attributes: None,
6144 instance: None,
6145 required: Some("no"),
6146 data_type: Some("integer"),
6147 unit: None,
6148 },
6149 DeviceModelEntry {
6150 component: Some("TxCtrlr"),
6151 variable: "StopTxOnEVSideDisconnect",
6152 attributes: None,
6153 instance: None,
6154 required: Some("yes"),
6155 data_type: Some("boolean"),
6156 unit: None,
6157 },
6158 DeviceModelEntry {
6159 component: Some("TxCtrlr"),
6160 variable: "StopTxOnInvalidId",
6161 attributes: None,
6162 instance: None,
6163 required: Some("yes"),
6164 data_type: Some("boolean"),
6165 unit: None,
6166 },
6167 DeviceModelEntry {
6168 component: Some("TxCtrlr"),
6169 variable: "TxBeforeAcceptedEnabled",
6170 attributes: None,
6171 instance: None,
6172 required: Some("no"),
6173 data_type: Some("boolean"),
6174 unit: None,
6175 },
6176 DeviceModelEntry {
6177 component: Some("TxCtrlr"),
6178 variable: "TxStartPoint",
6179 attributes: None,
6180 instance: None,
6181 required: Some("yes"),
6182 data_type: Some("MemberList"),
6183 unit: None,
6184 },
6185 DeviceModelEntry {
6186 component: Some("TxCtrlr"),
6187 variable: "TxStopPoint",
6188 attributes: None,
6189 instance: None,
6190 required: Some("yes"),
6191 data_type: Some("MemberList"),
6192 unit: None,
6193 },
6194 DeviceModelEntry {
6195 component: Some("TxCtrlr"),
6196 variable: "ResumptionTimeout",
6197 attributes: None,
6198 instance: None,
6199 required: Some("no"),
6200 data_type: Some("integer"),
6201 unit: Some("s"),
6202 },
6203 DeviceModelEntry {
6204 component: Some("TxCtrlr"),
6205 variable: "EnergyTransferResumptionRandomRange",
6206 attributes: None,
6207 instance: None,
6208 required: Some("no"),
6209 data_type: Some("integer"),
6210 unit: Some("s"),
6211 },
6212 DeviceModelEntry {
6213 component: Some("TxCtrlr"),
6214 variable: "AllowEnergyTransferResumption",
6215 attributes: None,
6216 instance: None,
6217 required: Some("no"),
6218 data_type: Some("boolean"),
6219 unit: None,
6220 },
6221 DeviceModelEntry {
6222 component: Some("FrequencySimulator"),
6223 variable: "Enabled",
6224 attributes: None,
6225 instance: None,
6226 required: Some("no"),
6227 data_type: Some("boolean"),
6228 unit: None,
6229 },
6230 DeviceModelEntry {
6231 component: Some("FrequencySimulator"),
6232 variable: "DateTime",
6233 attributes: None,
6234 instance: Some("Start"),
6235 required: Some("no"),
6236 data_type: Some("DateTime"),
6237 unit: None,
6238 },
6239 DeviceModelEntry {
6240 component: Some("FrequencySimulator"),
6241 variable: "DateTime",
6242 attributes: None,
6243 instance: Some("End"),
6244 required: Some("no"),
6245 data_type: Some("DateTime"),
6246 unit: None,
6247 },
6248 DeviceModelEntry {
6249 component: Some("FrequencySimulator"),
6250 variable: "FrequencySchedule",
6251 attributes: None,
6252 instance: None,
6253 required: Some("no"),
6254 data_type: Some("string"),
6255 unit: None,
6256 },
6257 DeviceModelEntry {
6258 component: Some("DataCollector"),
6259 variable: "Enabled",
6260 attributes: None,
6261 instance: None,
6262 required: Some("no"),
6263 data_type: Some("boolean"),
6264 unit: None,
6265 },
6266 DeviceModelEntry {
6267 component: Some("DataCollector"),
6268 variable: "DateTime",
6269 attributes: None,
6270 instance: Some("Start"),
6271 required: Some("no"),
6272 data_type: Some("DateTime"),
6273 unit: None,
6274 },
6275 DeviceModelEntry {
6276 component: Some("DataCollector"),
6277 variable: "DateTime",
6278 attributes: None,
6279 instance: Some("End"),
6280 required: Some("no"),
6281 data_type: Some("DateTime"),
6282 unit: None,
6283 },
6284 DeviceModelEntry {
6285 component: Some("DataCollector"),
6286 variable: "SamplingInterval",
6287 attributes: None,
6288 instance: None,
6289 required: Some("no"),
6290 data_type: Some("decimal"),
6291 unit: Some("s"),
6292 },
6293 DeviceModelEntry {
6294 component: Some("DataCollector"),
6295 variable: "SampledMeasurands",
6296 attributes: None,
6297 instance: None,
6298 required: Some("no"),
6299 data_type: Some("MemberList"),
6300 unit: None,
6301 },
6302 DeviceModelEntry {
6303 component: Some("NetworkConfiguration"),
6304 variable: "OcppCsmsUrl",
6305 attributes: None,
6306 instance: None,
6307 required: Some("yes"),
6308 data_type: Some("string"),
6309 unit: None,
6310 },
6311 DeviceModelEntry {
6312 component: Some("NetworkConfiguration"),
6313 variable: "OcppInterface",
6314 attributes: None,
6315 instance: None,
6316 required: Some("yes"),
6317 data_type: Some("OptionList"),
6318 unit: None,
6319 },
6320 DeviceModelEntry {
6321 component: Some("NetworkConfiguration"),
6322 variable: "OcppTransport",
6323 attributes: None,
6324 instance: None,
6325 required: Some("yes"),
6326 data_type: Some("OptionList"),
6327 unit: None,
6328 },
6329 DeviceModelEntry {
6330 component: Some("NetworkConfiguration"),
6331 variable: "OcppVersion",
6332 attributes: None,
6333 instance: None,
6334 required: Some("yes"),
6335 data_type: Some("OptionList"),
6336 unit: None,
6337 },
6338 DeviceModelEntry {
6339 component: Some("NetworkConfiguration"),
6340 variable: "MessageTimeout",
6341 attributes: None,
6342 instance: None,
6343 required: Some("yes"),
6344 data_type: Some("integer"),
6345 unit: None,
6346 },
6347 DeviceModelEntry {
6348 component: Some("NetworkConfiguration"),
6349 variable: "SecurityProfile",
6350 attributes: None,
6351 instance: None,
6352 required: Some("yes"),
6353 data_type: Some("integer"),
6354 unit: None,
6355 },
6356 DeviceModelEntry {
6357 component: Some("NetworkConfiguration"),
6358 variable: "Identity",
6359 attributes: None,
6360 instance: None,
6361 required: Some("no"),
6362 data_type: Some("string"),
6363 unit: None,
6364 },
6365 DeviceModelEntry {
6366 component: Some("NetworkConfiguration"),
6367 variable: "BasicAuthPassword",
6368 attributes: None,
6369 instance: None,
6370 required: Some("yes"),
6371 data_type: Some("string"),
6372 unit: None,
6373 },
6374 DeviceModelEntry {
6375 component: Some("NetworkConfiguration"),
6376 variable: "CsmsRootCertificateHashAlgorithm",
6377 attributes: None,
6378 instance: None,
6379 required: Some("no"),
6380 data_type: Some("string"),
6381 unit: None,
6382 },
6383 DeviceModelEntry {
6384 component: Some("NetworkConfiguration"),
6385 variable: "CsmsRootCertificateIssuerKeyHash",
6386 attributes: None,
6387 instance: None,
6388 required: Some("no"),
6389 data_type: Some("string"),
6390 unit: None,
6391 },
6392 DeviceModelEntry {
6393 component: Some("NetworkConfiguration"),
6394 variable: "CsmsRootCertificateIssuerNameHash",
6395 attributes: None,
6396 instance: None,
6397 required: Some("no"),
6398 data_type: Some("string"),
6399 unit: None,
6400 },
6401 DeviceModelEntry {
6402 component: Some("NetworkConfiguration"),
6403 variable: "CsmsRootCertificateSerialNumber",
6404 attributes: None,
6405 instance: None,
6406 required: Some("no"),
6407 data_type: Some("string"),
6408 unit: None,
6409 },
6410 DeviceModelEntry {
6411 component: Some("NetworkConfiguration"),
6412 variable: "VpnEnabled",
6413 attributes: None,
6414 instance: None,
6415 required: Some("yes"),
6416 data_type: Some("boolean"),
6417 unit: None,
6418 },
6419 DeviceModelEntry {
6420 component: Some("NetworkConfiguration"),
6421 variable: "VpnType",
6422 attributes: None,
6423 instance: None,
6424 required: Some("no"),
6425 data_type: Some("string"),
6426 unit: None,
6427 },
6428 DeviceModelEntry {
6429 component: Some("NetworkConfiguration"),
6430 variable: "VpnServer",
6431 attributes: None,
6432 instance: None,
6433 required: Some("no"),
6434 data_type: Some("string"),
6435 unit: None,
6436 },
6437 DeviceModelEntry {
6438 component: Some("NetworkConfiguration"),
6439 variable: "VpnUser",
6440 attributes: None,
6441 instance: None,
6442 required: Some("no"),
6443 data_type: Some("string"),
6444 unit: None,
6445 },
6446 DeviceModelEntry {
6447 component: Some("NetworkConfiguration"),
6448 variable: "VpnGroup",
6449 attributes: None,
6450 instance: None,
6451 required: Some("no"),
6452 data_type: Some("string"),
6453 unit: None,
6454 },
6455 DeviceModelEntry {
6456 component: Some("NetworkConfiguration"),
6457 variable: "VpnPassword",
6458 attributes: None,
6459 instance: None,
6460 required: Some("no"),
6461 data_type: Some("string"),
6462 unit: None,
6463 },
6464 DeviceModelEntry {
6465 component: Some("NetworkConfiguration"),
6466 variable: "VpnKey",
6467 attributes: None,
6468 instance: None,
6469 required: Some("no"),
6470 data_type: Some("string"),
6471 unit: None,
6472 },
6473 DeviceModelEntry {
6474 component: Some("NetworkConfiguration"),
6475 variable: "ApnEnabled",
6476 attributes: None,
6477 instance: None,
6478 required: Some("yes"),
6479 data_type: Some("boolean"),
6480 unit: None,
6481 },
6482 DeviceModelEntry {
6483 component: Some("NetworkConfiguration"),
6484 variable: "Apn",
6485 attributes: None,
6486 instance: None,
6487 required: Some("no"),
6488 data_type: Some("string"),
6489 unit: None,
6490 },
6491 DeviceModelEntry {
6492 component: Some("NetworkConfiguration"),
6493 variable: "ApnUserName",
6494 attributes: None,
6495 instance: None,
6496 required: Some("no"),
6497 data_type: Some("string"),
6498 unit: None,
6499 },
6500 DeviceModelEntry {
6501 component: Some("NetworkConfiguration"),
6502 variable: "ApnPassword",
6503 attributes: None,
6504 instance: None,
6505 required: Some("no"),
6506 data_type: Some("string"),
6507 unit: None,
6508 },
6509 DeviceModelEntry {
6510 component: Some("NetworkConfiguration"),
6511 variable: "SimPin",
6512 attributes: None,
6513 instance: None,
6514 required: Some("no"),
6515 data_type: Some("string"),
6516 unit: None,
6517 },
6518 DeviceModelEntry {
6519 component: Some("NetworkConfiguration"),
6520 variable: "PreferredNetwork",
6521 attributes: None,
6522 instance: None,
6523 required: Some("no"),
6524 data_type: Some("string"),
6525 unit: None,
6526 },
6527 DeviceModelEntry {
6528 component: Some("NetworkConfiguration"),
6529 variable: "UseOnlyPreferredNetwork",
6530 attributes: None,
6531 instance: None,
6532 required: Some("no"),
6533 data_type: Some("boolean"),
6534 unit: None,
6535 },
6536 DeviceModelEntry {
6537 component: Some("NetworkConfiguration"),
6538 variable: "ApnAuthentication",
6539 attributes: None,
6540 instance: None,
6541 required: Some("no"),
6542 data_type: Some("string"),
6543 unit: None,
6544 },
6545];