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 ACDERCtrlr,
88 AlignedDataCtrlr,
90 AuthCacheCtrlr,
92 AuthCtrlr,
94 BatterySwapCtrlr,
96 CHAdeMOCtrlr,
98 ClockCtrlr,
100 CustomizationCtrlr,
102 DCDERCtrlr,
104 DeviceDataCtrlr,
106 DisplayMessageCtrlr,
108 ISO15118Ctrlr,
110 LocalAuthListCtrlr,
112 MonitoringCtrlr,
114 PaymentCtrlr,
116 OCPPCommCtrlr,
118 ReservationCtrlr,
120 SampledDataCtrlr,
122 SecurityCtrlr,
124 SmartChargingCtrlr,
126 TariffCostCtrlr,
128 TxCtrlr,
130 V2XChargingCtrlr,
132 WebPaymentsCtrlr,
134 AccessBarrier,
136 AcDcConverter,
138 AcPhaseSelector,
140 Actuator,
142 AirCoolingSystem,
144 AreaVentilation,
146 BatteryCartridge,
148 BayOccupancySensor,
150 BeaconLighting,
152 CableBreakawaySensor,
154 CaseAccessSensor,
156 ChargingStation,
158 ChargingStatusIndicator,
160 ConnectedEV,
162 Connector,
164 ConnectorHolsterRelease,
166 ConnectorHolsterSensor,
168 ConnectorPlugRetentionLock,
170 ConnectorProtectionRelease,
172 Controller,
174 ControlMetering,
176 CPPWMController,
178 DataLink,
180 Display,
182 DistributionPanel,
184 ElectricalFeed,
186 ELVSupply,
188 EmergencyStopSensor,
190 EnvironmentalLighting,
192 EVRetentionLock,
194 EVSE,
196 ExternalTemperatureSensor,
198 FiscalMetering,
200 FloodSensor,
202 GroundIsolationProtection,
204 Heater,
206 HumiditySensor,
208 LightSensor,
210 LiquidCoolingSystem,
212 LocalAvailabilitySensor,
214 LocalController,
216 LocalEnergyStorage,
218 NetworkConfiguration,
220 OverCurrentProtection,
222 OverCurrentProtectionRecloser,
224 PowerContactor,
226 RCD,
228 RCDRecloser,
230 RealTimeClock,
232 ShockSensor,
234 SpacesCountSignage,
236 Switch,
238 TemperatureSensor,
240 TiltSensor,
242 TokenReader,
244 UpstreamProtectionTrigger,
246 UIInput,
248 VehicleIdSensor,
250 FrequencySimulator,
252 DataCollector,
254 Other(heapless::String<50usize>),
263}
264impl ComponentName {
265 pub const ALL: &'static [Self] = &[
270 Self::ACDERCtrlr,
271 Self::AlignedDataCtrlr,
272 Self::AuthCacheCtrlr,
273 Self::AuthCtrlr,
274 Self::BatterySwapCtrlr,
275 Self::CHAdeMOCtrlr,
276 Self::ClockCtrlr,
277 Self::CustomizationCtrlr,
278 Self::DCDERCtrlr,
279 Self::DeviceDataCtrlr,
280 Self::DisplayMessageCtrlr,
281 Self::ISO15118Ctrlr,
282 Self::LocalAuthListCtrlr,
283 Self::MonitoringCtrlr,
284 Self::PaymentCtrlr,
285 Self::OCPPCommCtrlr,
286 Self::ReservationCtrlr,
287 Self::SampledDataCtrlr,
288 Self::SecurityCtrlr,
289 Self::SmartChargingCtrlr,
290 Self::TariffCostCtrlr,
291 Self::TxCtrlr,
292 Self::V2XChargingCtrlr,
293 Self::WebPaymentsCtrlr,
294 Self::AccessBarrier,
295 Self::AcDcConverter,
296 Self::AcPhaseSelector,
297 Self::Actuator,
298 Self::AirCoolingSystem,
299 Self::AreaVentilation,
300 Self::BatteryCartridge,
301 Self::BayOccupancySensor,
302 Self::BeaconLighting,
303 Self::CableBreakawaySensor,
304 Self::CaseAccessSensor,
305 Self::ChargingStation,
306 Self::ChargingStatusIndicator,
307 Self::ConnectedEV,
308 Self::Connector,
309 Self::ConnectorHolsterRelease,
310 Self::ConnectorHolsterSensor,
311 Self::ConnectorPlugRetentionLock,
312 Self::ConnectorProtectionRelease,
313 Self::Controller,
314 Self::ControlMetering,
315 Self::CPPWMController,
316 Self::DataLink,
317 Self::Display,
318 Self::DistributionPanel,
319 Self::ElectricalFeed,
320 Self::ELVSupply,
321 Self::EmergencyStopSensor,
322 Self::EnvironmentalLighting,
323 Self::EVRetentionLock,
324 Self::EVSE,
325 Self::ExternalTemperatureSensor,
326 Self::FiscalMetering,
327 Self::FloodSensor,
328 Self::GroundIsolationProtection,
329 Self::Heater,
330 Self::HumiditySensor,
331 Self::LightSensor,
332 Self::LiquidCoolingSystem,
333 Self::LocalAvailabilitySensor,
334 Self::LocalController,
335 Self::LocalEnergyStorage,
336 Self::NetworkConfiguration,
337 Self::OverCurrentProtection,
338 Self::OverCurrentProtectionRecloser,
339 Self::PowerContactor,
340 Self::RCD,
341 Self::RCDRecloser,
342 Self::RealTimeClock,
343 Self::ShockSensor,
344 Self::SpacesCountSignage,
345 Self::Switch,
346 Self::TemperatureSensor,
347 Self::TiltSensor,
348 Self::TokenReader,
349 Self::UpstreamProtectionTrigger,
350 Self::UIInput,
351 Self::VehicleIdSensor,
352 Self::FrequencySimulator,
353 Self::DataCollector,
354 ];
355 pub fn as_str(&self) -> &str {
357 match self {
358 Self::ACDERCtrlr => "ACDERCtrlr",
359 Self::AlignedDataCtrlr => "AlignedDataCtrlr",
360 Self::AuthCacheCtrlr => "AuthCacheCtrlr",
361 Self::AuthCtrlr => "AuthCtrlr",
362 Self::BatterySwapCtrlr => "BatterySwapCtrlr",
363 Self::CHAdeMOCtrlr => "CHAdeMOCtrlr",
364 Self::ClockCtrlr => "ClockCtrlr",
365 Self::CustomizationCtrlr => "CustomizationCtrlr",
366 Self::DCDERCtrlr => "DCDERCtrlr",
367 Self::DeviceDataCtrlr => "DeviceDataCtrlr",
368 Self::DisplayMessageCtrlr => "DisplayMessageCtrlr",
369 Self::ISO15118Ctrlr => "ISO15118Ctrlr",
370 Self::LocalAuthListCtrlr => "LocalAuthListCtrlr",
371 Self::MonitoringCtrlr => "MonitoringCtrlr",
372 Self::PaymentCtrlr => "PaymentCtrlr",
373 Self::OCPPCommCtrlr => "OCPPCommCtrlr",
374 Self::ReservationCtrlr => "ReservationCtrlr",
375 Self::SampledDataCtrlr => "SampledDataCtrlr",
376 Self::SecurityCtrlr => "SecurityCtrlr",
377 Self::SmartChargingCtrlr => "SmartChargingCtrlr",
378 Self::TariffCostCtrlr => "TariffCostCtrlr",
379 Self::TxCtrlr => "TxCtrlr",
380 Self::V2XChargingCtrlr => "V2XChargingCtrlr",
381 Self::WebPaymentsCtrlr => "WebPaymentsCtrlr",
382 Self::AccessBarrier => "AccessBarrier",
383 Self::AcDcConverter => "AcDcConverter",
384 Self::AcPhaseSelector => "AcPhaseSelector",
385 Self::Actuator => "Actuator",
386 Self::AirCoolingSystem => "AirCoolingSystem",
387 Self::AreaVentilation => "AreaVentilation",
388 Self::BatteryCartridge => "BatteryCartridge",
389 Self::BayOccupancySensor => "BayOccupancySensor",
390 Self::BeaconLighting => "BeaconLighting",
391 Self::CableBreakawaySensor => "CableBreakawaySensor",
392 Self::CaseAccessSensor => "CaseAccessSensor",
393 Self::ChargingStation => "ChargingStation",
394 Self::ChargingStatusIndicator => "ChargingStatusIndicator",
395 Self::ConnectedEV => "ConnectedEV",
396 Self::Connector => "Connector",
397 Self::ConnectorHolsterRelease => "ConnectorHolsterRelease",
398 Self::ConnectorHolsterSensor => "ConnectorHolsterSensor",
399 Self::ConnectorPlugRetentionLock => "ConnectorPlugRetentionLock",
400 Self::ConnectorProtectionRelease => "ConnectorProtectionRelease",
401 Self::Controller => "Controller",
402 Self::ControlMetering => "ControlMetering",
403 Self::CPPWMController => "CPPWMController",
404 Self::DataLink => "DataLink",
405 Self::Display => "Display",
406 Self::DistributionPanel => "DistributionPanel",
407 Self::ElectricalFeed => "ElectricalFeed",
408 Self::ELVSupply => "ELVSupply",
409 Self::EmergencyStopSensor => "EmergencyStopSensor",
410 Self::EnvironmentalLighting => "EnvironmentalLighting",
411 Self::EVRetentionLock => "EVRetentionLock",
412 Self::EVSE => "EVSE",
413 Self::ExternalTemperatureSensor => "ExternalTemperatureSensor",
414 Self::FiscalMetering => "FiscalMetering",
415 Self::FloodSensor => "FloodSensor",
416 Self::GroundIsolationProtection => "GroundIsolationProtection",
417 Self::Heater => "Heater",
418 Self::HumiditySensor => "HumiditySensor",
419 Self::LightSensor => "LightSensor",
420 Self::LiquidCoolingSystem => "LiquidCoolingSystem",
421 Self::LocalAvailabilitySensor => "LocalAvailabilitySensor",
422 Self::LocalController => "LocalController",
423 Self::LocalEnergyStorage => "LocalEnergyStorage",
424 Self::NetworkConfiguration => "NetworkConfiguration",
425 Self::OverCurrentProtection => "OverCurrentProtection",
426 Self::OverCurrentProtectionRecloser => "OverCurrentProtectionRecloser",
427 Self::PowerContactor => "PowerContactor",
428 Self::RCD => "RCD",
429 Self::RCDRecloser => "RCDRecloser",
430 Self::RealTimeClock => "RealTimeClock",
431 Self::ShockSensor => "ShockSensor",
432 Self::SpacesCountSignage => "SpacesCountSignage",
433 Self::Switch => "Switch",
434 Self::TemperatureSensor => "TemperatureSensor",
435 Self::TiltSensor => "TiltSensor",
436 Self::TokenReader => "TokenReader",
437 Self::UpstreamProtectionTrigger => "UpstreamProtectionTrigger",
438 Self::UIInput => "UIInput",
439 Self::VehicleIdSensor => "VehicleIdSensor",
440 Self::FrequencySimulator => "FrequencySimulator",
441 Self::DataCollector => "DataCollector",
442 Self::Other(value) => value.as_str(),
443 }
444 }
445 pub fn from_wire(value: &str) -> Option<Self> {
451 match value {
452 "ACDERCtrlr" => Some(Self::ACDERCtrlr),
453 "AlignedDataCtrlr" => Some(Self::AlignedDataCtrlr),
454 "AuthCacheCtrlr" => Some(Self::AuthCacheCtrlr),
455 "AuthCtrlr" => Some(Self::AuthCtrlr),
456 "BatterySwapCtrlr" => Some(Self::BatterySwapCtrlr),
457 "CHAdeMOCtrlr" => Some(Self::CHAdeMOCtrlr),
458 "ClockCtrlr" => Some(Self::ClockCtrlr),
459 "CustomizationCtrlr" => Some(Self::CustomizationCtrlr),
460 "DCDERCtrlr" => Some(Self::DCDERCtrlr),
461 "DeviceDataCtrlr" => Some(Self::DeviceDataCtrlr),
462 "DisplayMessageCtrlr" => Some(Self::DisplayMessageCtrlr),
463 "ISO15118Ctrlr" => Some(Self::ISO15118Ctrlr),
464 "LocalAuthListCtrlr" => Some(Self::LocalAuthListCtrlr),
465 "MonitoringCtrlr" => Some(Self::MonitoringCtrlr),
466 "PaymentCtrlr" => Some(Self::PaymentCtrlr),
467 "OCPPCommCtrlr" => Some(Self::OCPPCommCtrlr),
468 "ReservationCtrlr" => Some(Self::ReservationCtrlr),
469 "SampledDataCtrlr" => Some(Self::SampledDataCtrlr),
470 "SecurityCtrlr" => Some(Self::SecurityCtrlr),
471 "SmartChargingCtrlr" => Some(Self::SmartChargingCtrlr),
472 "TariffCostCtrlr" => Some(Self::TariffCostCtrlr),
473 "TxCtrlr" => Some(Self::TxCtrlr),
474 "V2XChargingCtrlr" => Some(Self::V2XChargingCtrlr),
475 "WebPaymentsCtrlr" => Some(Self::WebPaymentsCtrlr),
476 "AccessBarrier" => Some(Self::AccessBarrier),
477 "AcDcConverter" => Some(Self::AcDcConverter),
478 "AcPhaseSelector" => Some(Self::AcPhaseSelector),
479 "Actuator" => Some(Self::Actuator),
480 "AirCoolingSystem" => Some(Self::AirCoolingSystem),
481 "AreaVentilation" => Some(Self::AreaVentilation),
482 "BatteryCartridge" => Some(Self::BatteryCartridge),
483 "BayOccupancySensor" => Some(Self::BayOccupancySensor),
484 "BeaconLighting" => Some(Self::BeaconLighting),
485 "CableBreakawaySensor" => Some(Self::CableBreakawaySensor),
486 "CaseAccessSensor" => Some(Self::CaseAccessSensor),
487 "ChargingStation" => Some(Self::ChargingStation),
488 "ChargingStatusIndicator" => Some(Self::ChargingStatusIndicator),
489 "ConnectedEV" => Some(Self::ConnectedEV),
490 "Connector" => Some(Self::Connector),
491 "ConnectorHolsterRelease" => Some(Self::ConnectorHolsterRelease),
492 "ConnectorHolsterSensor" => Some(Self::ConnectorHolsterSensor),
493 "ConnectorPlugRetentionLock" => Some(Self::ConnectorPlugRetentionLock),
494 "ConnectorProtectionRelease" => Some(Self::ConnectorProtectionRelease),
495 "Controller" => Some(Self::Controller),
496 "ControlMetering" => Some(Self::ControlMetering),
497 "CPPWMController" => Some(Self::CPPWMController),
498 "DataLink" => Some(Self::DataLink),
499 "Display" => Some(Self::Display),
500 "DistributionPanel" => Some(Self::DistributionPanel),
501 "ElectricalFeed" => Some(Self::ElectricalFeed),
502 "ELVSupply" => Some(Self::ELVSupply),
503 "EmergencyStopSensor" => Some(Self::EmergencyStopSensor),
504 "EnvironmentalLighting" => Some(Self::EnvironmentalLighting),
505 "EVRetentionLock" => Some(Self::EVRetentionLock),
506 "EVSE" => Some(Self::EVSE),
507 "ExternalTemperatureSensor" => Some(Self::ExternalTemperatureSensor),
508 "FiscalMetering" => Some(Self::FiscalMetering),
509 "FloodSensor" => Some(Self::FloodSensor),
510 "GroundIsolationProtection" => Some(Self::GroundIsolationProtection),
511 "Heater" => Some(Self::Heater),
512 "HumiditySensor" => Some(Self::HumiditySensor),
513 "LightSensor" => Some(Self::LightSensor),
514 "LiquidCoolingSystem" => Some(Self::LiquidCoolingSystem),
515 "LocalAvailabilitySensor" => Some(Self::LocalAvailabilitySensor),
516 "LocalController" => Some(Self::LocalController),
517 "LocalEnergyStorage" => Some(Self::LocalEnergyStorage),
518 "NetworkConfiguration" => Some(Self::NetworkConfiguration),
519 "OverCurrentProtection" => Some(Self::OverCurrentProtection),
520 "OverCurrentProtectionRecloser" => Some(Self::OverCurrentProtectionRecloser),
521 "PowerContactor" => Some(Self::PowerContactor),
522 "RCD" => Some(Self::RCD),
523 "RCDRecloser" => Some(Self::RCDRecloser),
524 "RealTimeClock" => Some(Self::RealTimeClock),
525 "ShockSensor" => Some(Self::ShockSensor),
526 "SpacesCountSignage" => Some(Self::SpacesCountSignage),
527 "Switch" => Some(Self::Switch),
528 "TemperatureSensor" => Some(Self::TemperatureSensor),
529 "TiltSensor" => Some(Self::TiltSensor),
530 "TokenReader" => Some(Self::TokenReader),
531 "UpstreamProtectionTrigger" => Some(Self::UpstreamProtectionTrigger),
532 "UIInput" => Some(Self::UIInput),
533 "VehicleIdSensor" => Some(Self::VehicleIdSensor),
534 "FrequencySimulator" => Some(Self::FrequencySimulator),
535 "DataCollector" => Some(Self::DataCollector),
536 _ => None,
537 }
538 }
539 pub fn from_wire_or_other(value: &str) -> Result<Self, ValueTooLong> {
545 if let Some(standardized) = Self::from_wire(value) {
546 return Ok(standardized);
547 }
548 heapless::String::try_from(value).map(Self::Other).map_err(|_| ValueTooLong)
549 }
550 pub fn is_standardized(&self) -> bool {
553 !matches!(self, Self::Other(_))
554 }
555}
556impl core::fmt::Display for ComponentName {
557 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
558 f.write_str(self.as_str())
559 }
560}
561impl core::str::FromStr for ComponentName {
562 type Err = ValueTooLong;
563 fn from_str(value: &str) -> Result<Self, Self::Err> {
564 Self::from_wire_or_other(value)
565 }
566}
567impl PartialEq for ComponentName {
568 fn eq(&self, other: &Self) -> bool {
569 self.as_str() == other.as_str()
570 }
571}
572impl Eq for ComponentName {}
573impl core::hash::Hash for ComponentName {
574 fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
575 self.as_str().hash(state);
576 }
577}
578impl PartialOrd for ComponentName {
579 fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
580 Some(self.cmp(other))
581 }
582}
583impl Ord for ComponentName {
584 fn cmp(&self, other: &Self) -> core::cmp::Ordering {
585 self.as_str().cmp(other.as_str())
586 }
587}
588#[cfg(feature = "serde")]
589impl serde::Serialize for ComponentName {
590 fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
591 serializer.serialize_str(self.as_str())
592 }
593}
594#[cfg(feature = "serde")]
595impl<'de> serde::Deserialize<'de> for ComponentName {
596 fn deserialize<D: serde::Deserializer<'de>>(
597 deserializer: D,
598 ) -> Result<Self, D::Error> {
599 struct Visitor;
600 impl<'v> serde::de::Visitor<'v> for Visitor {
601 type Value = ComponentName;
602 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
603 f.write_str("a ComponentName string")
604 }
605 fn visit_str<E: serde::de::Error>(
606 self,
607 value: &str,
608 ) -> Result<Self::Value, E> {
609 ComponentName::from_wire_or_other(value)
610 .map_err(serde::de::Error::custom)
611 }
612 }
613 deserializer.deserialize_str(Visitor)
614 }
615}
616#[derive(Debug, Clone)]
628pub enum VariableName {
629 ACCurrent,
631 ACPhaseSwitchingSupported,
633 ACVoltage,
635 Active,
637 ActiveMonitoringBase,
639 ActiveMonitoringLevel,
641 ActiveNetworkProfile,
643 ActiveTransactionId,
645 AdditionalInfoItemsPerMessage,
647 AdditionalRootCertificateCheck,
649 AllowEnergyTransferResumption,
651 AllowNewSessionsPendingFirmwareUpdate,
653 AllowReset,
655 AllowSecurityProfileDowngrade,
657 Angle,
659 Attempts,
661 AuthorizeRemoteStart,
663 AvailabilityState,
665 Available,
667 BasicAuthPassword,
669 BytesPerMessage,
671 CentralContractValidationAllowed,
673 CertSigningRepeatTimes,
675 CertSigningWaitMinimum,
677 Certificate,
679 CertificateEntries,
681 CertificateStatusSource,
683 ChargeProtocol,
685 ChargingCompleteBulk,
687 ChargingCompleteFull,
689 ChargingProfilePersistence,
691 ChargingState,
693 ChargingTime,
695 Color,
697 CommunicationParent,
699 Complete,
701 ConditionsSupported,
703 ConfigurationValueSize,
705 ConnectedTime,
707 ConnectorType,
709 ContractCertificateInstallationEnabled,
711 ContractValidationOffline,
713 Count,
715 CountryName,
717 Currency,
719 CurrentImbalance,
721 CustomImplementationEnabled,
723 CustomTriggers,
725 DCCurrent,
727 DCInputPhaseControl,
729 DCVoltage,
731 DataText,
733 DateTime,
735 DepartureTime,
737 DisablePostAuthorize,
739 DisableRemoteAuthorization,
741 DischargePower,
743 DisplayMessages,
745 ECVariant,
747 EVConnectionTimeOut,
749 ElectricalParent,
751 Enabled,
753 Energy,
755 EnergyCapacity,
757 EnergyExport,
759 EnergyExportRegister,
761 EnergyImport,
763 EnergyImportRegister,
765 Entries,
767 ExternalConfigChangeDate,
769 ExternalConstraintsProfileDisallowed,
771 ExternalControlSignalsEnabled,
773 Fallback,
775 FanSpeed,
777 FieldLength,
779 FileTransferProtocols,
781 FirmwareVersion,
783 Force,
785 Formats,
787 Frequency,
789 FrequencySchedule,
791 FuseRating,
793 HandleFailedTariff,
795 HeartbeatInterval,
797 Height,
799 Humidity,
801 Hysteresis,
803 ICCID,
805 IMSI,
807 ISO15118EvseId,
809 IdToken,
811 Identity,
813 Impedance,
815 Interval,
817 ItemsPerMessage,
819 Label,
821 Language,
823 Length,
825 LifeTime,
827 Light,
829 LimitChangeSignificance,
831 LocalAuthorizeOffline,
833 LocalFrequencyUpdateThreshold,
835 LocalLoadBalancing,
837 LocalPreAuthorize,
839 LogicalParent,
841 Manufacturer,
843 MasterPassGroupId,
845 MaxCertificateChainSize,
847 MaxElements,
849 MaxEnergyOnInvalidId,
851 MaxExternalConstraintsId,
853 MaxPeriodicEventStreams,
855 MaxPriceElements,
857 MaxSoc,
859 Measurands,
861 Message,
863 MessageAttemptInterval,
865 MessageAttempts,
867 MessageTimeout,
869 MinimumStatusDuration,
871 Mode,
873 Model,
875 NetworkAddress,
877 NetworkConfigurationPriority,
879 NetworkProfileConnectionAttempts,
881 NextTimeOffsetTransitionDateTime,
883 NonEvseSpecific,
885 NotificationMaxDelay,
887 NotifyChargingLimitWithSchedules,
889 NtpServerUri,
891 NtpSource,
893 OfflineQueuingSeverity,
895 OfflineTariffFallbackMessage,
897 OfflineThreshold,
899 OfflineTxForUnknownIdEnabled,
901 Operated,
903 OperatingTimes,
905 OrganizationName,
907 Overload,
909 Percent,
911 PeriodsPerSchedule,
913 PhaseRotation,
915 Phases3to1,
917 PhysicalParent,
919 PnCEnabled,
921 Policy,
923 PostChargingTime,
925 Power,
927 Present,
929 Problem,
931 ProfileStackLevel,
933 Protecting,
935 ProtocolAgreed,
937 ProtocolSupported,
939 ProtocolSupportedByEV,
941 PublicKey,
943 PublicKeyWithSignedMeterValue,
945 QueueAllMessages,
947 RateUnit,
949 RegisterValuesWithoutPhases,
951 RemainingTimeBulk,
953 RemainingTimeFull,
955 ReportingValueSize,
957 RequestMeteringReceipt,
959 ResetRetries,
961 ResumptionTimeout,
963 SampledMeasurands,
965 SamplingInterval,
967 SeccId,
969 SecurityProfile,
971 SendDuringIdle,
973 SerialNumber,
975 ServiceRenegotiationSupport,
977 SetpointPriority,
979 SignReadings,
981 SignStartedReadings,
983 SignUpdatedReadings,
985 SignalStrength,
987 SlotStatus,
989 SoC,
991 SoH,
993 State,
995 StateOfCharge,
997 StateOfChargeBulk,
999 StopTxOnEVSideDisconnect,
1001 StopTxOnInvalidId,
1003 Storage,
1005 SupplyPhases,
1007 SupportedAdditionalPurposes,
1009 SupportedEnergyTransferModes,
1011 SupportedFormats,
1013 SupportedIdTokenTypes,
1015 SupportedLimits,
1017 SupportedOperationModes,
1019 SupportedPriorities,
1021 SupportedProviders,
1023 SupportedStates,
1025 SupportsDynamicProfiles,
1027 SupportsEvseSleep,
1029 SupportsExpiryDateTime,
1031 SupportsLimitAtSoC,
1033 SupportsMaxOfflineDuration,
1035 SupportsRandomizedDelay,
1037 SupportsUseLocalTime,
1039 Suspending,
1041 Suspension,
1043 TargetSoc,
1045 TariffFallbackMessage,
1047 Temperature,
1049 Time,
1051 TimeAdjustmentReportingThreshold,
1053 TimeOffset,
1055 TimeSource,
1057 TimeZone,
1059 Timeout,
1063 Token,
1065 TokenType,
1067 TotalCostFallbackMessage,
1069 Tries,
1071 Tripped,
1073 TxBeforeAcceptedEnabled,
1075 TxEndedInterval,
1077 TxEndedMeasurands,
1079 TxStartPoint,
1081 TxStartedMeasurands,
1083 TxStopPoint,
1085 TxUpdatedInterval,
1087 TxUpdatedMeasurands,
1089 UnlockOnEVSideDisconnect,
1091 UpstreamInterval,
1093 UpstreamMeasurands,
1095 V2GCertificateInstallationEnabled,
1097 VehicleCertificate,
1099 VehicleId,
1101 VersionDate,
1103 VersionNumber,
1105 VoltageImbalance,
1107 WorkingMode,
1109 VendorName,
1111 SupportedIdTokenType,
1113 SelftestActive,
1115 CHAdeMOProtocolNumber,
1117 VehicleStatus,
1119 DynamicControl,
1121 HighCurrentControl,
1123 HighVoltageControl,
1125 AutoManufacturerCode,
1127 VehicleID,
1129 BatteryCapacity,
1131 ValueSize,
1133 EvseId,
1135 MaxScheduleEntries,
1137 RequestedEnergyTransferMode,
1139 NotificationDelay,
1141 Capacity,
1143 MonitoringBase,
1145 MonitoringLevel,
1147 RetryBackOffRandomRange,
1149 RetryBackOffRepeatTimes,
1151 RetryBackOffWaitMinimum,
1153 WebSocketPingInterval,
1155 EnergyTransferResumptionRandomRange,
1157 MaxW,
1159 OverExcitedW,
1161 OverExcitedPF,
1163 UnderExcitedW,
1165 UnderExcitedPF,
1167 MaxVA,
1169 MaxVar,
1171 MaxVarNeg,
1173 MaxChargeRateW,
1175 MaxChargeRateVA,
1177 VNom,
1179 MaxV,
1181 MinV,
1183 ModesSupported,
1185 InverterManufacturer,
1187 InverterModel,
1189 InverterSerialNumber,
1191 InverterSwVersion,
1193 InverterHwVersion,
1195 IslandingDetectionMethod,
1197 IslandingDetectionTripTime,
1199 ReactiveSusceptance,
1201 TargetSoC,
1203 OcppCsmsUrl,
1205 OcppInterface,
1207 OcppTransport,
1209 OcppVersion,
1211 CsmsRootCertificateHashAlgorithm,
1213 CsmsRootCertificateIssuerKeyHash,
1215 CsmsRootCertificateIssuerNameHash,
1217 CsmsRootCertificateSerialNumber,
1219 VpnEnabled,
1221 VpnType,
1223 VpnServer,
1225 VpnUser,
1227 VpnGroup,
1229 VpnPassword,
1231 VpnKey,
1233 ApnEnabled,
1235 Apn,
1237 ApnUserName,
1239 ApnPassword,
1241 SimPin,
1243 PreferredNetwork,
1245 UseOnlyPreferredNetwork,
1247 ApnAuthentication,
1249 AuthorizeDirectPayment,
1251 AuthorizationAmount,
1253 IncrementalAuthorizationAmount,
1255 IncrementalAuthorizationThreshold,
1257 PaymentDetails,
1259 SettlementByCSMS,
1261 ReceiptServerUrl,
1263 ReceiptByCSMS,
1265 Merchant,
1267 TerminalID,
1269 PaymentServiceProvider,
1271 Connected,
1273 URLTemplate,
1275 URLParameters,
1277 TOTPVersion,
1279 ChargingStationId,
1281 ValidityTime,
1283 SharedSecret,
1285 QRCodeQuality,
1287 Other(heapless::String<50usize>),
1296}
1297impl VariableName {
1298 pub const ALL: &'static [Self] = &[
1303 Self::ACCurrent,
1304 Self::ACPhaseSwitchingSupported,
1305 Self::ACVoltage,
1306 Self::Active,
1307 Self::ActiveMonitoringBase,
1308 Self::ActiveMonitoringLevel,
1309 Self::ActiveNetworkProfile,
1310 Self::ActiveTransactionId,
1311 Self::AdditionalInfoItemsPerMessage,
1312 Self::AdditionalRootCertificateCheck,
1313 Self::AllowEnergyTransferResumption,
1314 Self::AllowNewSessionsPendingFirmwareUpdate,
1315 Self::AllowReset,
1316 Self::AllowSecurityProfileDowngrade,
1317 Self::Angle,
1318 Self::Attempts,
1319 Self::AuthorizeRemoteStart,
1320 Self::AvailabilityState,
1321 Self::Available,
1322 Self::BasicAuthPassword,
1323 Self::BytesPerMessage,
1324 Self::CentralContractValidationAllowed,
1325 Self::CertSigningRepeatTimes,
1326 Self::CertSigningWaitMinimum,
1327 Self::Certificate,
1328 Self::CertificateEntries,
1329 Self::CertificateStatusSource,
1330 Self::ChargeProtocol,
1331 Self::ChargingCompleteBulk,
1332 Self::ChargingCompleteFull,
1333 Self::ChargingProfilePersistence,
1334 Self::ChargingState,
1335 Self::ChargingTime,
1336 Self::Color,
1337 Self::CommunicationParent,
1338 Self::Complete,
1339 Self::ConditionsSupported,
1340 Self::ConfigurationValueSize,
1341 Self::ConnectedTime,
1342 Self::ConnectorType,
1343 Self::ContractCertificateInstallationEnabled,
1344 Self::ContractValidationOffline,
1345 Self::Count,
1346 Self::CountryName,
1347 Self::Currency,
1348 Self::CurrentImbalance,
1349 Self::CustomImplementationEnabled,
1350 Self::CustomTriggers,
1351 Self::DCCurrent,
1352 Self::DCInputPhaseControl,
1353 Self::DCVoltage,
1354 Self::DataText,
1355 Self::DateTime,
1356 Self::DepartureTime,
1357 Self::DisablePostAuthorize,
1358 Self::DisableRemoteAuthorization,
1359 Self::DischargePower,
1360 Self::DisplayMessages,
1361 Self::ECVariant,
1362 Self::EVConnectionTimeOut,
1363 Self::ElectricalParent,
1364 Self::Enabled,
1365 Self::Energy,
1366 Self::EnergyCapacity,
1367 Self::EnergyExport,
1368 Self::EnergyExportRegister,
1369 Self::EnergyImport,
1370 Self::EnergyImportRegister,
1371 Self::Entries,
1372 Self::ExternalConfigChangeDate,
1373 Self::ExternalConstraintsProfileDisallowed,
1374 Self::ExternalControlSignalsEnabled,
1375 Self::Fallback,
1376 Self::FanSpeed,
1377 Self::FieldLength,
1378 Self::FileTransferProtocols,
1379 Self::FirmwareVersion,
1380 Self::Force,
1381 Self::Formats,
1382 Self::Frequency,
1383 Self::FrequencySchedule,
1384 Self::FuseRating,
1385 Self::HandleFailedTariff,
1386 Self::HeartbeatInterval,
1387 Self::Height,
1388 Self::Humidity,
1389 Self::Hysteresis,
1390 Self::ICCID,
1391 Self::IMSI,
1392 Self::ISO15118EvseId,
1393 Self::IdToken,
1394 Self::Identity,
1395 Self::Impedance,
1396 Self::Interval,
1397 Self::ItemsPerMessage,
1398 Self::Label,
1399 Self::Language,
1400 Self::Length,
1401 Self::LifeTime,
1402 Self::Light,
1403 Self::LimitChangeSignificance,
1404 Self::LocalAuthorizeOffline,
1405 Self::LocalFrequencyUpdateThreshold,
1406 Self::LocalLoadBalancing,
1407 Self::LocalPreAuthorize,
1408 Self::LogicalParent,
1409 Self::Manufacturer,
1410 Self::MasterPassGroupId,
1411 Self::MaxCertificateChainSize,
1412 Self::MaxElements,
1413 Self::MaxEnergyOnInvalidId,
1414 Self::MaxExternalConstraintsId,
1415 Self::MaxPeriodicEventStreams,
1416 Self::MaxPriceElements,
1417 Self::MaxSoc,
1418 Self::Measurands,
1419 Self::Message,
1420 Self::MessageAttemptInterval,
1421 Self::MessageAttempts,
1422 Self::MessageTimeout,
1423 Self::MinimumStatusDuration,
1424 Self::Mode,
1425 Self::Model,
1426 Self::NetworkAddress,
1427 Self::NetworkConfigurationPriority,
1428 Self::NetworkProfileConnectionAttempts,
1429 Self::NextTimeOffsetTransitionDateTime,
1430 Self::NonEvseSpecific,
1431 Self::NotificationMaxDelay,
1432 Self::NotifyChargingLimitWithSchedules,
1433 Self::NtpServerUri,
1434 Self::NtpSource,
1435 Self::OfflineQueuingSeverity,
1436 Self::OfflineTariffFallbackMessage,
1437 Self::OfflineThreshold,
1438 Self::OfflineTxForUnknownIdEnabled,
1439 Self::Operated,
1440 Self::OperatingTimes,
1441 Self::OrganizationName,
1442 Self::Overload,
1443 Self::Percent,
1444 Self::PeriodsPerSchedule,
1445 Self::PhaseRotation,
1446 Self::Phases3to1,
1447 Self::PhysicalParent,
1448 Self::PnCEnabled,
1449 Self::Policy,
1450 Self::PostChargingTime,
1451 Self::Power,
1452 Self::Present,
1453 Self::Problem,
1454 Self::ProfileStackLevel,
1455 Self::Protecting,
1456 Self::ProtocolAgreed,
1457 Self::ProtocolSupported,
1458 Self::ProtocolSupportedByEV,
1459 Self::PublicKey,
1460 Self::PublicKeyWithSignedMeterValue,
1461 Self::QueueAllMessages,
1462 Self::RateUnit,
1463 Self::RegisterValuesWithoutPhases,
1464 Self::RemainingTimeBulk,
1465 Self::RemainingTimeFull,
1466 Self::ReportingValueSize,
1467 Self::RequestMeteringReceipt,
1468 Self::ResetRetries,
1469 Self::ResumptionTimeout,
1470 Self::SampledMeasurands,
1471 Self::SamplingInterval,
1472 Self::SeccId,
1473 Self::SecurityProfile,
1474 Self::SendDuringIdle,
1475 Self::SerialNumber,
1476 Self::ServiceRenegotiationSupport,
1477 Self::SetpointPriority,
1478 Self::SignReadings,
1479 Self::SignStartedReadings,
1480 Self::SignUpdatedReadings,
1481 Self::SignalStrength,
1482 Self::SlotStatus,
1483 Self::SoC,
1484 Self::SoH,
1485 Self::State,
1486 Self::StateOfCharge,
1487 Self::StateOfChargeBulk,
1488 Self::StopTxOnEVSideDisconnect,
1489 Self::StopTxOnInvalidId,
1490 Self::Storage,
1491 Self::SupplyPhases,
1492 Self::SupportedAdditionalPurposes,
1493 Self::SupportedEnergyTransferModes,
1494 Self::SupportedFormats,
1495 Self::SupportedIdTokenTypes,
1496 Self::SupportedLimits,
1497 Self::SupportedOperationModes,
1498 Self::SupportedPriorities,
1499 Self::SupportedProviders,
1500 Self::SupportedStates,
1501 Self::SupportsDynamicProfiles,
1502 Self::SupportsEvseSleep,
1503 Self::SupportsExpiryDateTime,
1504 Self::SupportsLimitAtSoC,
1505 Self::SupportsMaxOfflineDuration,
1506 Self::SupportsRandomizedDelay,
1507 Self::SupportsUseLocalTime,
1508 Self::Suspending,
1509 Self::Suspension,
1510 Self::TargetSoc,
1511 Self::TariffFallbackMessage,
1512 Self::Temperature,
1513 Self::Time,
1514 Self::TimeAdjustmentReportingThreshold,
1515 Self::TimeOffset,
1516 Self::TimeSource,
1517 Self::TimeZone,
1518 Self::Timeout,
1519 Self::Token,
1520 Self::TokenType,
1521 Self::TotalCostFallbackMessage,
1522 Self::Tries,
1523 Self::Tripped,
1524 Self::TxBeforeAcceptedEnabled,
1525 Self::TxEndedInterval,
1526 Self::TxEndedMeasurands,
1527 Self::TxStartPoint,
1528 Self::TxStartedMeasurands,
1529 Self::TxStopPoint,
1530 Self::TxUpdatedInterval,
1531 Self::TxUpdatedMeasurands,
1532 Self::UnlockOnEVSideDisconnect,
1533 Self::UpstreamInterval,
1534 Self::UpstreamMeasurands,
1535 Self::V2GCertificateInstallationEnabled,
1536 Self::VehicleCertificate,
1537 Self::VehicleId,
1538 Self::VersionDate,
1539 Self::VersionNumber,
1540 Self::VoltageImbalance,
1541 Self::WorkingMode,
1542 Self::VendorName,
1543 Self::SupportedIdTokenType,
1544 Self::SelftestActive,
1545 Self::CHAdeMOProtocolNumber,
1546 Self::VehicleStatus,
1547 Self::DynamicControl,
1548 Self::HighCurrentControl,
1549 Self::HighVoltageControl,
1550 Self::AutoManufacturerCode,
1551 Self::VehicleID,
1552 Self::BatteryCapacity,
1553 Self::ValueSize,
1554 Self::EvseId,
1555 Self::MaxScheduleEntries,
1556 Self::RequestedEnergyTransferMode,
1557 Self::NotificationDelay,
1558 Self::Capacity,
1559 Self::MonitoringBase,
1560 Self::MonitoringLevel,
1561 Self::RetryBackOffRandomRange,
1562 Self::RetryBackOffRepeatTimes,
1563 Self::RetryBackOffWaitMinimum,
1564 Self::WebSocketPingInterval,
1565 Self::EnergyTransferResumptionRandomRange,
1566 Self::MaxW,
1567 Self::OverExcitedW,
1568 Self::OverExcitedPF,
1569 Self::UnderExcitedW,
1570 Self::UnderExcitedPF,
1571 Self::MaxVA,
1572 Self::MaxVar,
1573 Self::MaxVarNeg,
1574 Self::MaxChargeRateW,
1575 Self::MaxChargeRateVA,
1576 Self::VNom,
1577 Self::MaxV,
1578 Self::MinV,
1579 Self::ModesSupported,
1580 Self::InverterManufacturer,
1581 Self::InverterModel,
1582 Self::InverterSerialNumber,
1583 Self::InverterSwVersion,
1584 Self::InverterHwVersion,
1585 Self::IslandingDetectionMethod,
1586 Self::IslandingDetectionTripTime,
1587 Self::ReactiveSusceptance,
1588 Self::TargetSoC,
1589 Self::OcppCsmsUrl,
1590 Self::OcppInterface,
1591 Self::OcppTransport,
1592 Self::OcppVersion,
1593 Self::CsmsRootCertificateHashAlgorithm,
1594 Self::CsmsRootCertificateIssuerKeyHash,
1595 Self::CsmsRootCertificateIssuerNameHash,
1596 Self::CsmsRootCertificateSerialNumber,
1597 Self::VpnEnabled,
1598 Self::VpnType,
1599 Self::VpnServer,
1600 Self::VpnUser,
1601 Self::VpnGroup,
1602 Self::VpnPassword,
1603 Self::VpnKey,
1604 Self::ApnEnabled,
1605 Self::Apn,
1606 Self::ApnUserName,
1607 Self::ApnPassword,
1608 Self::SimPin,
1609 Self::PreferredNetwork,
1610 Self::UseOnlyPreferredNetwork,
1611 Self::ApnAuthentication,
1612 Self::AuthorizeDirectPayment,
1613 Self::AuthorizationAmount,
1614 Self::IncrementalAuthorizationAmount,
1615 Self::IncrementalAuthorizationThreshold,
1616 Self::PaymentDetails,
1617 Self::SettlementByCSMS,
1618 Self::ReceiptServerUrl,
1619 Self::ReceiptByCSMS,
1620 Self::Merchant,
1621 Self::TerminalID,
1622 Self::PaymentServiceProvider,
1623 Self::Connected,
1624 Self::URLTemplate,
1625 Self::URLParameters,
1626 Self::TOTPVersion,
1627 Self::ChargingStationId,
1628 Self::ValidityTime,
1629 Self::SharedSecret,
1630 Self::QRCodeQuality,
1631 ];
1632 pub fn as_str(&self) -> &str {
1634 match self {
1635 Self::ACCurrent => "ACCurrent",
1636 Self::ACPhaseSwitchingSupported => "ACPhaseSwitchingSupported",
1637 Self::ACVoltage => "ACVoltage",
1638 Self::Active => "Active",
1639 Self::ActiveMonitoringBase => "ActiveMonitoringBase",
1640 Self::ActiveMonitoringLevel => "ActiveMonitoringLevel",
1641 Self::ActiveNetworkProfile => "ActiveNetworkProfile",
1642 Self::ActiveTransactionId => "ActiveTransactionId",
1643 Self::AdditionalInfoItemsPerMessage => "AdditionalInfoItemsPerMessage",
1644 Self::AdditionalRootCertificateCheck => "AdditionalRootCertificateCheck",
1645 Self::AllowEnergyTransferResumption => "AllowEnergyTransferResumption",
1646 Self::AllowNewSessionsPendingFirmwareUpdate => {
1647 "AllowNewSessionsPendingFirmwareUpdate"
1648 }
1649 Self::AllowReset => "AllowReset",
1650 Self::AllowSecurityProfileDowngrade => "AllowSecurityProfileDowngrade",
1651 Self::Angle => "Angle",
1652 Self::Attempts => "Attempts",
1653 Self::AuthorizeRemoteStart => "AuthorizeRemoteStart",
1654 Self::AvailabilityState => "AvailabilityState",
1655 Self::Available => "Available",
1656 Self::BasicAuthPassword => "BasicAuthPassword",
1657 Self::BytesPerMessage => "BytesPerMessage",
1658 Self::CentralContractValidationAllowed => "CentralContractValidationAllowed",
1659 Self::CertSigningRepeatTimes => "CertSigningRepeatTimes",
1660 Self::CertSigningWaitMinimum => "CertSigningWaitMinimum",
1661 Self::Certificate => "Certificate",
1662 Self::CertificateEntries => "CertificateEntries",
1663 Self::CertificateStatusSource => "CertificateStatusSource",
1664 Self::ChargeProtocol => "ChargeProtocol",
1665 Self::ChargingCompleteBulk => "ChargingCompleteBulk",
1666 Self::ChargingCompleteFull => "ChargingCompleteFull",
1667 Self::ChargingProfilePersistence => "ChargingProfilePersistence",
1668 Self::ChargingState => "ChargingState",
1669 Self::ChargingTime => "ChargingTime",
1670 Self::Color => "Color",
1671 Self::CommunicationParent => "CommunicationParent",
1672 Self::Complete => "Complete",
1673 Self::ConditionsSupported => "ConditionsSupported",
1674 Self::ConfigurationValueSize => "ConfigurationValueSize",
1675 Self::ConnectedTime => "ConnectedTime",
1676 Self::ConnectorType => "ConnectorType",
1677 Self::ContractCertificateInstallationEnabled => {
1678 "ContractCertificateInstallationEnabled"
1679 }
1680 Self::ContractValidationOffline => "ContractValidationOffline",
1681 Self::Count => "Count",
1682 Self::CountryName => "CountryName",
1683 Self::Currency => "Currency",
1684 Self::CurrentImbalance => "CurrentImbalance",
1685 Self::CustomImplementationEnabled => "CustomImplementationEnabled",
1686 Self::CustomTriggers => "CustomTriggers",
1687 Self::DCCurrent => "DCCurrent",
1688 Self::DCInputPhaseControl => "DCInputPhaseControl",
1689 Self::DCVoltage => "DCVoltage",
1690 Self::DataText => "DataText",
1691 Self::DateTime => "DateTime",
1692 Self::DepartureTime => "DepartureTime",
1693 Self::DisablePostAuthorize => "DisablePostAuthorize",
1694 Self::DisableRemoteAuthorization => "DisableRemoteAuthorization",
1695 Self::DischargePower => "DischargePower",
1696 Self::DisplayMessages => "DisplayMessages",
1697 Self::ECVariant => "ECVariant",
1698 Self::EVConnectionTimeOut => "EVConnectionTimeOut",
1699 Self::ElectricalParent => "ElectricalParent",
1700 Self::Enabled => "Enabled",
1701 Self::Energy => "Energy",
1702 Self::EnergyCapacity => "EnergyCapacity",
1703 Self::EnergyExport => "EnergyExport",
1704 Self::EnergyExportRegister => "EnergyExportRegister",
1705 Self::EnergyImport => "EnergyImport",
1706 Self::EnergyImportRegister => "EnergyImportRegister",
1707 Self::Entries => "Entries",
1708 Self::ExternalConfigChangeDate => "ExternalConfigChangeDate",
1709 Self::ExternalConstraintsProfileDisallowed => {
1710 "ExternalConstraintsProfileDisallowed"
1711 }
1712 Self::ExternalControlSignalsEnabled => "ExternalControlSignalsEnabled",
1713 Self::Fallback => "Fallback",
1714 Self::FanSpeed => "FanSpeed",
1715 Self::FieldLength => "FieldLength",
1716 Self::FileTransferProtocols => "FileTransferProtocols",
1717 Self::FirmwareVersion => "FirmwareVersion",
1718 Self::Force => "Force",
1719 Self::Formats => "Formats",
1720 Self::Frequency => "Frequency",
1721 Self::FrequencySchedule => "FrequencySchedule",
1722 Self::FuseRating => "FuseRating",
1723 Self::HandleFailedTariff => "HandleFailedTariff",
1724 Self::HeartbeatInterval => "HeartbeatInterval",
1725 Self::Height => "Height",
1726 Self::Humidity => "Humidity",
1727 Self::Hysteresis => "Hysteresis",
1728 Self::ICCID => "ICCID",
1729 Self::IMSI => "IMSI",
1730 Self::ISO15118EvseId => "ISO15118EvseId",
1731 Self::IdToken => "IdToken",
1732 Self::Identity => "Identity",
1733 Self::Impedance => "Impedance",
1734 Self::Interval => "Interval",
1735 Self::ItemsPerMessage => "ItemsPerMessage",
1736 Self::Label => "Label",
1737 Self::Language => "Language",
1738 Self::Length => "Length",
1739 Self::LifeTime => "LifeTime",
1740 Self::Light => "Light",
1741 Self::LimitChangeSignificance => "LimitChangeSignificance",
1742 Self::LocalAuthorizeOffline => "LocalAuthorizeOffline",
1743 Self::LocalFrequencyUpdateThreshold => "LocalFrequencyUpdateThreshold",
1744 Self::LocalLoadBalancing => "LocalLoadBalancing",
1745 Self::LocalPreAuthorize => "LocalPreAuthorize",
1746 Self::LogicalParent => "LogicalParent",
1747 Self::Manufacturer => "Manufacturer",
1748 Self::MasterPassGroupId => "MasterPassGroupId",
1749 Self::MaxCertificateChainSize => "MaxCertificateChainSize",
1750 Self::MaxElements => "MaxElements",
1751 Self::MaxEnergyOnInvalidId => "MaxEnergyOnInvalidId",
1752 Self::MaxExternalConstraintsId => "MaxExternalConstraintsId",
1753 Self::MaxPeriodicEventStreams => "MaxPeriodicEventStreams",
1754 Self::MaxPriceElements => "MaxPriceElements",
1755 Self::MaxSoc => "MaxSoc",
1756 Self::Measurands => "Measurands",
1757 Self::Message => "Message",
1758 Self::MessageAttemptInterval => "MessageAttemptInterval",
1759 Self::MessageAttempts => "MessageAttempts",
1760 Self::MessageTimeout => "MessageTimeout",
1761 Self::MinimumStatusDuration => "MinimumStatusDuration",
1762 Self::Mode => "Mode",
1763 Self::Model => "Model",
1764 Self::NetworkAddress => "NetworkAddress",
1765 Self::NetworkConfigurationPriority => "NetworkConfigurationPriority",
1766 Self::NetworkProfileConnectionAttempts => "NetworkProfileConnectionAttempts",
1767 Self::NextTimeOffsetTransitionDateTime => "NextTimeOffsetTransitionDateTime",
1768 Self::NonEvseSpecific => "NonEvseSpecific",
1769 Self::NotificationMaxDelay => "NotificationMaxDelay",
1770 Self::NotifyChargingLimitWithSchedules => "NotifyChargingLimitWithSchedules",
1771 Self::NtpServerUri => "NtpServerUri",
1772 Self::NtpSource => "NtpSource",
1773 Self::OfflineQueuingSeverity => "OfflineQueuingSeverity",
1774 Self::OfflineTariffFallbackMessage => "OfflineTariffFallbackMessage",
1775 Self::OfflineThreshold => "OfflineThreshold",
1776 Self::OfflineTxForUnknownIdEnabled => "OfflineTxForUnknownIdEnabled",
1777 Self::Operated => "Operated",
1778 Self::OperatingTimes => "OperatingTimes",
1779 Self::OrganizationName => "OrganizationName",
1780 Self::Overload => "Overload",
1781 Self::Percent => "Percent",
1782 Self::PeriodsPerSchedule => "PeriodsPerSchedule",
1783 Self::PhaseRotation => "PhaseRotation",
1784 Self::Phases3to1 => "Phases3to1",
1785 Self::PhysicalParent => "PhysicalParent",
1786 Self::PnCEnabled => "PnCEnabled",
1787 Self::Policy => "Policy",
1788 Self::PostChargingTime => "PostChargingTime",
1789 Self::Power => "Power",
1790 Self::Present => "Present",
1791 Self::Problem => "Problem",
1792 Self::ProfileStackLevel => "ProfileStackLevel",
1793 Self::Protecting => "Protecting",
1794 Self::ProtocolAgreed => "ProtocolAgreed",
1795 Self::ProtocolSupported => "ProtocolSupported",
1796 Self::ProtocolSupportedByEV => "ProtocolSupportedByEV",
1797 Self::PublicKey => "PublicKey",
1798 Self::PublicKeyWithSignedMeterValue => "PublicKeyWithSignedMeterValue",
1799 Self::QueueAllMessages => "QueueAllMessages",
1800 Self::RateUnit => "RateUnit",
1801 Self::RegisterValuesWithoutPhases => "RegisterValuesWithoutPhases",
1802 Self::RemainingTimeBulk => "RemainingTimeBulk",
1803 Self::RemainingTimeFull => "RemainingTimeFull",
1804 Self::ReportingValueSize => "ReportingValueSize",
1805 Self::RequestMeteringReceipt => "RequestMeteringReceipt",
1806 Self::ResetRetries => "ResetRetries",
1807 Self::ResumptionTimeout => "ResumptionTimeout",
1808 Self::SampledMeasurands => "SampledMeasurands",
1809 Self::SamplingInterval => "SamplingInterval",
1810 Self::SeccId => "SeccId",
1811 Self::SecurityProfile => "SecurityProfile",
1812 Self::SendDuringIdle => "SendDuringIdle",
1813 Self::SerialNumber => "SerialNumber",
1814 Self::ServiceRenegotiationSupport => "ServiceRenegotiationSupport",
1815 Self::SetpointPriority => "SetpointPriority",
1816 Self::SignReadings => "SignReadings",
1817 Self::SignStartedReadings => "SignStartedReadings",
1818 Self::SignUpdatedReadings => "SignUpdatedReadings",
1819 Self::SignalStrength => "SignalStrength",
1820 Self::SlotStatus => "SlotStatus",
1821 Self::SoC => "SoC",
1822 Self::SoH => "SoH",
1823 Self::State => "State",
1824 Self::StateOfCharge => "StateOfCharge",
1825 Self::StateOfChargeBulk => "StateOfChargeBulk",
1826 Self::StopTxOnEVSideDisconnect => "StopTxOnEVSideDisconnect",
1827 Self::StopTxOnInvalidId => "StopTxOnInvalidId",
1828 Self::Storage => "Storage",
1829 Self::SupplyPhases => "SupplyPhases",
1830 Self::SupportedAdditionalPurposes => "SupportedAdditionalPurposes",
1831 Self::SupportedEnergyTransferModes => "SupportedEnergyTransferModes",
1832 Self::SupportedFormats => "SupportedFormats",
1833 Self::SupportedIdTokenTypes => "SupportedIdTokenTypes",
1834 Self::SupportedLimits => "SupportedLimits",
1835 Self::SupportedOperationModes => "SupportedOperationModes",
1836 Self::SupportedPriorities => "SupportedPriorities",
1837 Self::SupportedProviders => "SupportedProviders",
1838 Self::SupportedStates => "SupportedStates",
1839 Self::SupportsDynamicProfiles => "SupportsDynamicProfiles",
1840 Self::SupportsEvseSleep => "SupportsEvseSleep",
1841 Self::SupportsExpiryDateTime => "SupportsExpiryDateTime",
1842 Self::SupportsLimitAtSoC => "SupportsLimitAtSoC",
1843 Self::SupportsMaxOfflineDuration => "SupportsMaxOfflineDuration",
1844 Self::SupportsRandomizedDelay => "SupportsRandomizedDelay",
1845 Self::SupportsUseLocalTime => "SupportsUseLocalTime",
1846 Self::Suspending => "Suspending",
1847 Self::Suspension => "Suspension",
1848 Self::TargetSoc => "TargetSoc",
1849 Self::TariffFallbackMessage => "TariffFallbackMessage",
1850 Self::Temperature => "Temperature",
1851 Self::Time => "Time",
1852 Self::TimeAdjustmentReportingThreshold => "TimeAdjustmentReportingThreshold",
1853 Self::TimeOffset => "TimeOffset",
1854 Self::TimeSource => "TimeSource",
1855 Self::TimeZone => "TimeZone",
1856 Self::Timeout => "Timeout",
1857 Self::Token => "Token",
1858 Self::TokenType => "TokenType",
1859 Self::TotalCostFallbackMessage => "TotalCostFallbackMessage",
1860 Self::Tries => "Tries",
1861 Self::Tripped => "Tripped",
1862 Self::TxBeforeAcceptedEnabled => "TxBeforeAcceptedEnabled",
1863 Self::TxEndedInterval => "TxEndedInterval",
1864 Self::TxEndedMeasurands => "TxEndedMeasurands",
1865 Self::TxStartPoint => "TxStartPoint",
1866 Self::TxStartedMeasurands => "TxStartedMeasurands",
1867 Self::TxStopPoint => "TxStopPoint",
1868 Self::TxUpdatedInterval => "TxUpdatedInterval",
1869 Self::TxUpdatedMeasurands => "TxUpdatedMeasurands",
1870 Self::UnlockOnEVSideDisconnect => "UnlockOnEVSideDisconnect",
1871 Self::UpstreamInterval => "UpstreamInterval",
1872 Self::UpstreamMeasurands => "UpstreamMeasurands",
1873 Self::V2GCertificateInstallationEnabled => {
1874 "V2GCertificateInstallationEnabled"
1875 }
1876 Self::VehicleCertificate => "VehicleCertificate",
1877 Self::VehicleId => "VehicleId",
1878 Self::VersionDate => "VersionDate",
1879 Self::VersionNumber => "VersionNumber",
1880 Self::VoltageImbalance => "VoltageImbalance",
1881 Self::WorkingMode => "WorkingMode",
1882 Self::VendorName => "VendorName",
1883 Self::SupportedIdTokenType => "SupportedIdTokenType",
1884 Self::SelftestActive => "SelftestActive",
1885 Self::CHAdeMOProtocolNumber => "CHAdeMOProtocolNumber",
1886 Self::VehicleStatus => "VehicleStatus",
1887 Self::DynamicControl => "DynamicControl",
1888 Self::HighCurrentControl => "HighCurrentControl",
1889 Self::HighVoltageControl => "HighVoltageControl",
1890 Self::AutoManufacturerCode => "AutoManufacturerCode",
1891 Self::VehicleID => "VehicleID",
1892 Self::BatteryCapacity => "BatteryCapacity",
1893 Self::ValueSize => "ValueSize",
1894 Self::EvseId => "EvseId",
1895 Self::MaxScheduleEntries => "MaxScheduleEntries",
1896 Self::RequestedEnergyTransferMode => "RequestedEnergyTransferMode",
1897 Self::NotificationDelay => "NotificationDelay",
1898 Self::Capacity => "Capacity",
1899 Self::MonitoringBase => "MonitoringBase",
1900 Self::MonitoringLevel => "MonitoringLevel",
1901 Self::RetryBackOffRandomRange => "RetryBackOffRandomRange",
1902 Self::RetryBackOffRepeatTimes => "RetryBackOffRepeatTimes",
1903 Self::RetryBackOffWaitMinimum => "RetryBackOffWaitMinimum",
1904 Self::WebSocketPingInterval => "WebSocketPingInterval",
1905 Self::EnergyTransferResumptionRandomRange => {
1906 "EnergyTransferResumptionRandomRange"
1907 }
1908 Self::MaxW => "MaxW",
1909 Self::OverExcitedW => "OverExcitedW",
1910 Self::OverExcitedPF => "OverExcitedPF",
1911 Self::UnderExcitedW => "UnderExcitedW",
1912 Self::UnderExcitedPF => "UnderExcitedPF",
1913 Self::MaxVA => "MaxVA",
1914 Self::MaxVar => "MaxVar",
1915 Self::MaxVarNeg => "MaxVarNeg",
1916 Self::MaxChargeRateW => "MaxChargeRateW",
1917 Self::MaxChargeRateVA => "MaxChargeRateVA",
1918 Self::VNom => "VNom",
1919 Self::MaxV => "MaxV",
1920 Self::MinV => "MinV",
1921 Self::ModesSupported => "ModesSupported",
1922 Self::InverterManufacturer => "InverterManufacturer",
1923 Self::InverterModel => "InverterModel",
1924 Self::InverterSerialNumber => "InverterSerialNumber",
1925 Self::InverterSwVersion => "InverterSwVersion",
1926 Self::InverterHwVersion => "InverterHwVersion",
1927 Self::IslandingDetectionMethod => "IslandingDetectionMethod",
1928 Self::IslandingDetectionTripTime => "IslandingDetectionTripTime",
1929 Self::ReactiveSusceptance => "ReactiveSusceptance",
1930 Self::TargetSoC => "TargetSoC",
1931 Self::OcppCsmsUrl => "OcppCsmsUrl",
1932 Self::OcppInterface => "OcppInterface",
1933 Self::OcppTransport => "OcppTransport",
1934 Self::OcppVersion => "OcppVersion",
1935 Self::CsmsRootCertificateHashAlgorithm => "CsmsRootCertificateHashAlgorithm",
1936 Self::CsmsRootCertificateIssuerKeyHash => "CsmsRootCertificateIssuerKeyHash",
1937 Self::CsmsRootCertificateIssuerNameHash => {
1938 "CsmsRootCertificateIssuerNameHash"
1939 }
1940 Self::CsmsRootCertificateSerialNumber => "CsmsRootCertificateSerialNumber",
1941 Self::VpnEnabled => "VpnEnabled",
1942 Self::VpnType => "VpnType",
1943 Self::VpnServer => "VpnServer",
1944 Self::VpnUser => "VpnUser",
1945 Self::VpnGroup => "VpnGroup",
1946 Self::VpnPassword => "VpnPassword",
1947 Self::VpnKey => "VpnKey",
1948 Self::ApnEnabled => "ApnEnabled",
1949 Self::Apn => "Apn",
1950 Self::ApnUserName => "ApnUserName",
1951 Self::ApnPassword => "ApnPassword",
1952 Self::SimPin => "SimPin",
1953 Self::PreferredNetwork => "PreferredNetwork",
1954 Self::UseOnlyPreferredNetwork => "UseOnlyPreferredNetwork",
1955 Self::ApnAuthentication => "ApnAuthentication",
1956 Self::AuthorizeDirectPayment => "AuthorizeDirectPayment",
1957 Self::AuthorizationAmount => "AuthorizationAmount",
1958 Self::IncrementalAuthorizationAmount => "IncrementalAuthorizationAmount",
1959 Self::IncrementalAuthorizationThreshold => {
1960 "IncrementalAuthorizationThreshold"
1961 }
1962 Self::PaymentDetails => "PaymentDetails",
1963 Self::SettlementByCSMS => "SettlementByCSMS",
1964 Self::ReceiptServerUrl => "ReceiptServerUrl",
1965 Self::ReceiptByCSMS => "ReceiptByCSMS",
1966 Self::Merchant => "Merchant",
1967 Self::TerminalID => "TerminalID",
1968 Self::PaymentServiceProvider => "PaymentServiceProvider",
1969 Self::Connected => "Connected",
1970 Self::URLTemplate => "URLTemplate",
1971 Self::URLParameters => "URLParameters",
1972 Self::TOTPVersion => "TOTPVersion",
1973 Self::ChargingStationId => "ChargingStationId",
1974 Self::ValidityTime => "ValidityTime",
1975 Self::SharedSecret => "SharedSecret",
1976 Self::QRCodeQuality => "QRCodeQuality",
1977 Self::Other(value) => value.as_str(),
1978 }
1979 }
1980 pub fn from_wire(value: &str) -> Option<Self> {
1986 match value {
1987 "ACCurrent" => Some(Self::ACCurrent),
1988 "ACPhaseSwitchingSupported" => Some(Self::ACPhaseSwitchingSupported),
1989 "ACVoltage" => Some(Self::ACVoltage),
1990 "Active" => Some(Self::Active),
1991 "ActiveMonitoringBase" => Some(Self::ActiveMonitoringBase),
1992 "ActiveMonitoringLevel" => Some(Self::ActiveMonitoringLevel),
1993 "ActiveNetworkProfile" => Some(Self::ActiveNetworkProfile),
1994 "ActiveTransactionId" => Some(Self::ActiveTransactionId),
1995 "AdditionalInfoItemsPerMessage" => Some(Self::AdditionalInfoItemsPerMessage),
1996 "AdditionalRootCertificateCheck" => {
1997 Some(Self::AdditionalRootCertificateCheck)
1998 }
1999 "AllowEnergyTransferResumption" => Some(Self::AllowEnergyTransferResumption),
2000 "AllowNewSessionsPendingFirmwareUpdate" => {
2001 Some(Self::AllowNewSessionsPendingFirmwareUpdate)
2002 }
2003 "AllowReset" => Some(Self::AllowReset),
2004 "AllowSecurityProfileDowngrade" => Some(Self::AllowSecurityProfileDowngrade),
2005 "Angle" => Some(Self::Angle),
2006 "Attempts" => Some(Self::Attempts),
2007 "AuthorizeRemoteStart" => Some(Self::AuthorizeRemoteStart),
2008 "AvailabilityState" => Some(Self::AvailabilityState),
2009 "Available" => Some(Self::Available),
2010 "BasicAuthPassword" => Some(Self::BasicAuthPassword),
2011 "BytesPerMessage" => Some(Self::BytesPerMessage),
2012 "CentralContractValidationAllowed" => {
2013 Some(Self::CentralContractValidationAllowed)
2014 }
2015 "CertSigningRepeatTimes" => Some(Self::CertSigningRepeatTimes),
2016 "CertSigningWaitMinimum" => Some(Self::CertSigningWaitMinimum),
2017 "Certificate" => Some(Self::Certificate),
2018 "CertificateEntries" => Some(Self::CertificateEntries),
2019 "CertificateStatusSource" => Some(Self::CertificateStatusSource),
2020 "ChargeProtocol" => Some(Self::ChargeProtocol),
2021 "ChargingCompleteBulk" => Some(Self::ChargingCompleteBulk),
2022 "ChargingCompleteFull" => Some(Self::ChargingCompleteFull),
2023 "ChargingProfilePersistence" => Some(Self::ChargingProfilePersistence),
2024 "ChargingState" => Some(Self::ChargingState),
2025 "ChargingTime" => Some(Self::ChargingTime),
2026 "Color" => Some(Self::Color),
2027 "CommunicationParent" => Some(Self::CommunicationParent),
2028 "Complete" => Some(Self::Complete),
2029 "ConditionsSupported" => Some(Self::ConditionsSupported),
2030 "ConfigurationValueSize" => Some(Self::ConfigurationValueSize),
2031 "ConnectedTime" => Some(Self::ConnectedTime),
2032 "ConnectorType" => Some(Self::ConnectorType),
2033 "ContractCertificateInstallationEnabled" => {
2034 Some(Self::ContractCertificateInstallationEnabled)
2035 }
2036 "ContractValidationOffline" => Some(Self::ContractValidationOffline),
2037 "Count" => Some(Self::Count),
2038 "CountryName" => Some(Self::CountryName),
2039 "Currency" => Some(Self::Currency),
2040 "CurrentImbalance" => Some(Self::CurrentImbalance),
2041 "CustomImplementationEnabled" => Some(Self::CustomImplementationEnabled),
2042 "CustomTriggers" => Some(Self::CustomTriggers),
2043 "DCCurrent" => Some(Self::DCCurrent),
2044 "DCInputPhaseControl" => Some(Self::DCInputPhaseControl),
2045 "DCVoltage" => Some(Self::DCVoltage),
2046 "DataText" => Some(Self::DataText),
2047 "DateTime" => Some(Self::DateTime),
2048 "DepartureTime" => Some(Self::DepartureTime),
2049 "DisablePostAuthorize" => Some(Self::DisablePostAuthorize),
2050 "DisableRemoteAuthorization" => Some(Self::DisableRemoteAuthorization),
2051 "DischargePower" => Some(Self::DischargePower),
2052 "DisplayMessages" => Some(Self::DisplayMessages),
2053 "ECVariant" => Some(Self::ECVariant),
2054 "EVConnectionTimeOut" => Some(Self::EVConnectionTimeOut),
2055 "ElectricalParent" => Some(Self::ElectricalParent),
2056 "Enabled" => Some(Self::Enabled),
2057 "Energy" => Some(Self::Energy),
2058 "EnergyCapacity" => Some(Self::EnergyCapacity),
2059 "EnergyExport" => Some(Self::EnergyExport),
2060 "EnergyExportRegister" => Some(Self::EnergyExportRegister),
2061 "EnergyImport" => Some(Self::EnergyImport),
2062 "EnergyImportRegister" => Some(Self::EnergyImportRegister),
2063 "Entries" => Some(Self::Entries),
2064 "ExternalConfigChangeDate" => Some(Self::ExternalConfigChangeDate),
2065 "ExternalConstraintsProfileDisallowed" => {
2066 Some(Self::ExternalConstraintsProfileDisallowed)
2067 }
2068 "ExternalControlSignalsEnabled" => Some(Self::ExternalControlSignalsEnabled),
2069 "Fallback" => Some(Self::Fallback),
2070 "FanSpeed" => Some(Self::FanSpeed),
2071 "FieldLength" => Some(Self::FieldLength),
2072 "FileTransferProtocols" => Some(Self::FileTransferProtocols),
2073 "FirmwareVersion" => Some(Self::FirmwareVersion),
2074 "Force" => Some(Self::Force),
2075 "Formats" => Some(Self::Formats),
2076 "Frequency" => Some(Self::Frequency),
2077 "FrequencySchedule" => Some(Self::FrequencySchedule),
2078 "FuseRating" => Some(Self::FuseRating),
2079 "HandleFailedTariff" => Some(Self::HandleFailedTariff),
2080 "HeartbeatInterval" => Some(Self::HeartbeatInterval),
2081 "Height" => Some(Self::Height),
2082 "Humidity" => Some(Self::Humidity),
2083 "Hysteresis" => Some(Self::Hysteresis),
2084 "ICCID" => Some(Self::ICCID),
2085 "IMSI" => Some(Self::IMSI),
2086 "ISO15118EvseId" => Some(Self::ISO15118EvseId),
2087 "IdToken" => Some(Self::IdToken),
2088 "Identity" => Some(Self::Identity),
2089 "Impedance" => Some(Self::Impedance),
2090 "Interval" => Some(Self::Interval),
2091 "ItemsPerMessage" => Some(Self::ItemsPerMessage),
2092 "Label" => Some(Self::Label),
2093 "Language" => Some(Self::Language),
2094 "Length" => Some(Self::Length),
2095 "LifeTime" => Some(Self::LifeTime),
2096 "Light" => Some(Self::Light),
2097 "LimitChangeSignificance" => Some(Self::LimitChangeSignificance),
2098 "LocalAuthorizeOffline" => Some(Self::LocalAuthorizeOffline),
2099 "LocalFrequencyUpdateThreshold" => Some(Self::LocalFrequencyUpdateThreshold),
2100 "LocalLoadBalancing" => Some(Self::LocalLoadBalancing),
2101 "LocalPreAuthorize" => Some(Self::LocalPreAuthorize),
2102 "LogicalParent" => Some(Self::LogicalParent),
2103 "Manufacturer" => Some(Self::Manufacturer),
2104 "MasterPassGroupId" => Some(Self::MasterPassGroupId),
2105 "MaxCertificateChainSize" => Some(Self::MaxCertificateChainSize),
2106 "MaxElements" => Some(Self::MaxElements),
2107 "MaxEnergyOnInvalidId" => Some(Self::MaxEnergyOnInvalidId),
2108 "MaxExternalConstraintsId" => Some(Self::MaxExternalConstraintsId),
2109 "MaxPeriodicEventStreams" => Some(Self::MaxPeriodicEventStreams),
2110 "MaxPriceElements" => Some(Self::MaxPriceElements),
2111 "MaxSoc" => Some(Self::MaxSoc),
2112 "Measurands" => Some(Self::Measurands),
2113 "Message" => Some(Self::Message),
2114 "MessageAttemptInterval" => Some(Self::MessageAttemptInterval),
2115 "MessageAttempts" => Some(Self::MessageAttempts),
2116 "MessageTimeout" => Some(Self::MessageTimeout),
2117 "MinimumStatusDuration" => Some(Self::MinimumStatusDuration),
2118 "Mode" => Some(Self::Mode),
2119 "Model" => Some(Self::Model),
2120 "NetworkAddress" => Some(Self::NetworkAddress),
2121 "NetworkConfigurationPriority" => Some(Self::NetworkConfigurationPriority),
2122 "NetworkProfileConnectionAttempts" => {
2123 Some(Self::NetworkProfileConnectionAttempts)
2124 }
2125 "NextTimeOffsetTransitionDateTime" => {
2126 Some(Self::NextTimeOffsetTransitionDateTime)
2127 }
2128 "NonEvseSpecific" => Some(Self::NonEvseSpecific),
2129 "NotificationMaxDelay" => Some(Self::NotificationMaxDelay),
2130 "NotifyChargingLimitWithSchedules" => {
2131 Some(Self::NotifyChargingLimitWithSchedules)
2132 }
2133 "NtpServerUri" => Some(Self::NtpServerUri),
2134 "NtpSource" => Some(Self::NtpSource),
2135 "OfflineQueuingSeverity" => Some(Self::OfflineQueuingSeverity),
2136 "OfflineTariffFallbackMessage" => Some(Self::OfflineTariffFallbackMessage),
2137 "OfflineThreshold" => Some(Self::OfflineThreshold),
2138 "OfflineTxForUnknownIdEnabled" => Some(Self::OfflineTxForUnknownIdEnabled),
2139 "Operated" => Some(Self::Operated),
2140 "OperatingTimes" => Some(Self::OperatingTimes),
2141 "OrganizationName" => Some(Self::OrganizationName),
2142 "Overload" => Some(Self::Overload),
2143 "Percent" => Some(Self::Percent),
2144 "PeriodsPerSchedule" => Some(Self::PeriodsPerSchedule),
2145 "PhaseRotation" => Some(Self::PhaseRotation),
2146 "Phases3to1" => Some(Self::Phases3to1),
2147 "PhysicalParent" => Some(Self::PhysicalParent),
2148 "PnCEnabled" => Some(Self::PnCEnabled),
2149 "Policy" => Some(Self::Policy),
2150 "PostChargingTime" => Some(Self::PostChargingTime),
2151 "Power" => Some(Self::Power),
2152 "Present" => Some(Self::Present),
2153 "Problem" => Some(Self::Problem),
2154 "ProfileStackLevel" => Some(Self::ProfileStackLevel),
2155 "Protecting" => Some(Self::Protecting),
2156 "ProtocolAgreed" => Some(Self::ProtocolAgreed),
2157 "ProtocolSupported" => Some(Self::ProtocolSupported),
2158 "ProtocolSupportedByEV" => Some(Self::ProtocolSupportedByEV),
2159 "PublicKey" => Some(Self::PublicKey),
2160 "PublicKeyWithSignedMeterValue" => Some(Self::PublicKeyWithSignedMeterValue),
2161 "QueueAllMessages" => Some(Self::QueueAllMessages),
2162 "RateUnit" => Some(Self::RateUnit),
2163 "RegisterValuesWithoutPhases" => Some(Self::RegisterValuesWithoutPhases),
2164 "RemainingTimeBulk" => Some(Self::RemainingTimeBulk),
2165 "RemainingTimeFull" => Some(Self::RemainingTimeFull),
2166 "ReportingValueSize" => Some(Self::ReportingValueSize),
2167 "RequestMeteringReceipt" => Some(Self::RequestMeteringReceipt),
2168 "ResetRetries" => Some(Self::ResetRetries),
2169 "ResumptionTimeout" => Some(Self::ResumptionTimeout),
2170 "SampledMeasurands" => Some(Self::SampledMeasurands),
2171 "SamplingInterval" => Some(Self::SamplingInterval),
2172 "SeccId" => Some(Self::SeccId),
2173 "SecurityProfile" => Some(Self::SecurityProfile),
2174 "SendDuringIdle" => Some(Self::SendDuringIdle),
2175 "SerialNumber" => Some(Self::SerialNumber),
2176 "ServiceRenegotiationSupport" => Some(Self::ServiceRenegotiationSupport),
2177 "SetpointPriority" => Some(Self::SetpointPriority),
2178 "SignReadings" => Some(Self::SignReadings),
2179 "SignStartedReadings" => Some(Self::SignStartedReadings),
2180 "SignUpdatedReadings" => Some(Self::SignUpdatedReadings),
2181 "SignalStrength" => Some(Self::SignalStrength),
2182 "SlotStatus" => Some(Self::SlotStatus),
2183 "SoC" => Some(Self::SoC),
2184 "SoH" => Some(Self::SoH),
2185 "State" => Some(Self::State),
2186 "StateOfCharge" => Some(Self::StateOfCharge),
2187 "StateOfChargeBulk" => Some(Self::StateOfChargeBulk),
2188 "StopTxOnEVSideDisconnect" => Some(Self::StopTxOnEVSideDisconnect),
2189 "StopTxOnInvalidId" => Some(Self::StopTxOnInvalidId),
2190 "Storage" => Some(Self::Storage),
2191 "SupplyPhases" => Some(Self::SupplyPhases),
2192 "SupportedAdditionalPurposes" => Some(Self::SupportedAdditionalPurposes),
2193 "SupportedEnergyTransferModes" => Some(Self::SupportedEnergyTransferModes),
2194 "SupportedFormats" => Some(Self::SupportedFormats),
2195 "SupportedIdTokenTypes" => Some(Self::SupportedIdTokenTypes),
2196 "SupportedLimits" => Some(Self::SupportedLimits),
2197 "SupportedOperationModes" => Some(Self::SupportedOperationModes),
2198 "SupportedPriorities" => Some(Self::SupportedPriorities),
2199 "SupportedProviders" => Some(Self::SupportedProviders),
2200 "SupportedStates" => Some(Self::SupportedStates),
2201 "SupportsDynamicProfiles" => Some(Self::SupportsDynamicProfiles),
2202 "SupportsEvseSleep" => Some(Self::SupportsEvseSleep),
2203 "SupportsExpiryDateTime" => Some(Self::SupportsExpiryDateTime),
2204 "SupportsLimitAtSoC" => Some(Self::SupportsLimitAtSoC),
2205 "SupportsMaxOfflineDuration" => Some(Self::SupportsMaxOfflineDuration),
2206 "SupportsRandomizedDelay" => Some(Self::SupportsRandomizedDelay),
2207 "SupportsUseLocalTime" => Some(Self::SupportsUseLocalTime),
2208 "Suspending" => Some(Self::Suspending),
2209 "Suspension" => Some(Self::Suspension),
2210 "TargetSoc" => Some(Self::TargetSoc),
2211 "TariffFallbackMessage" => Some(Self::TariffFallbackMessage),
2212 "Temperature" => Some(Self::Temperature),
2213 "Time" => Some(Self::Time),
2214 "TimeAdjustmentReportingThreshold" => {
2215 Some(Self::TimeAdjustmentReportingThreshold)
2216 }
2217 "TimeOffset" => Some(Self::TimeOffset),
2218 "TimeSource" => Some(Self::TimeSource),
2219 "TimeZone" => Some(Self::TimeZone),
2220 "Timeout" => Some(Self::Timeout),
2221 "Token" => Some(Self::Token),
2222 "TokenType" => Some(Self::TokenType),
2223 "TotalCostFallbackMessage" => Some(Self::TotalCostFallbackMessage),
2224 "Tries" => Some(Self::Tries),
2225 "Tripped" => Some(Self::Tripped),
2226 "TxBeforeAcceptedEnabled" => Some(Self::TxBeforeAcceptedEnabled),
2227 "TxEndedInterval" => Some(Self::TxEndedInterval),
2228 "TxEndedMeasurands" => Some(Self::TxEndedMeasurands),
2229 "TxStartPoint" => Some(Self::TxStartPoint),
2230 "TxStartedMeasurands" => Some(Self::TxStartedMeasurands),
2231 "TxStopPoint" => Some(Self::TxStopPoint),
2232 "TxUpdatedInterval" => Some(Self::TxUpdatedInterval),
2233 "TxUpdatedMeasurands" => Some(Self::TxUpdatedMeasurands),
2234 "UnlockOnEVSideDisconnect" => Some(Self::UnlockOnEVSideDisconnect),
2235 "UpstreamInterval" => Some(Self::UpstreamInterval),
2236 "UpstreamMeasurands" => Some(Self::UpstreamMeasurands),
2237 "V2GCertificateInstallationEnabled" => {
2238 Some(Self::V2GCertificateInstallationEnabled)
2239 }
2240 "VehicleCertificate" => Some(Self::VehicleCertificate),
2241 "VehicleId" => Some(Self::VehicleId),
2242 "VersionDate" => Some(Self::VersionDate),
2243 "VersionNumber" => Some(Self::VersionNumber),
2244 "VoltageImbalance" => Some(Self::VoltageImbalance),
2245 "WorkingMode" => Some(Self::WorkingMode),
2246 "VendorName" => Some(Self::VendorName),
2247 "SupportedIdTokenType" => Some(Self::SupportedIdTokenType),
2248 "SelftestActive" => Some(Self::SelftestActive),
2249 "CHAdeMOProtocolNumber" => Some(Self::CHAdeMOProtocolNumber),
2250 "VehicleStatus" => Some(Self::VehicleStatus),
2251 "DynamicControl" => Some(Self::DynamicControl),
2252 "HighCurrentControl" => Some(Self::HighCurrentControl),
2253 "HighVoltageControl" => Some(Self::HighVoltageControl),
2254 "AutoManufacturerCode" => Some(Self::AutoManufacturerCode),
2255 "VehicleID" => Some(Self::VehicleID),
2256 "BatteryCapacity" => Some(Self::BatteryCapacity),
2257 "ValueSize" => Some(Self::ValueSize),
2258 "EvseId" => Some(Self::EvseId),
2259 "MaxScheduleEntries" => Some(Self::MaxScheduleEntries),
2260 "RequestedEnergyTransferMode" => Some(Self::RequestedEnergyTransferMode),
2261 "NotificationDelay" => Some(Self::NotificationDelay),
2262 "Capacity" => Some(Self::Capacity),
2263 "MonitoringBase" => Some(Self::MonitoringBase),
2264 "MonitoringLevel" => Some(Self::MonitoringLevel),
2265 "RetryBackOffRandomRange" => Some(Self::RetryBackOffRandomRange),
2266 "RetryBackOffRepeatTimes" => Some(Self::RetryBackOffRepeatTimes),
2267 "RetryBackOffWaitMinimum" => Some(Self::RetryBackOffWaitMinimum),
2268 "WebSocketPingInterval" => Some(Self::WebSocketPingInterval),
2269 "EnergyTransferResumptionRandomRange" => {
2270 Some(Self::EnergyTransferResumptionRandomRange)
2271 }
2272 "MaxW" => Some(Self::MaxW),
2273 "OverExcitedW" => Some(Self::OverExcitedW),
2274 "OverExcitedPF" => Some(Self::OverExcitedPF),
2275 "UnderExcitedW" => Some(Self::UnderExcitedW),
2276 "UnderExcitedPF" => Some(Self::UnderExcitedPF),
2277 "MaxVA" => Some(Self::MaxVA),
2278 "MaxVar" => Some(Self::MaxVar),
2279 "MaxVarNeg" => Some(Self::MaxVarNeg),
2280 "MaxChargeRateW" => Some(Self::MaxChargeRateW),
2281 "MaxChargeRateVA" => Some(Self::MaxChargeRateVA),
2282 "VNom" => Some(Self::VNom),
2283 "MaxV" => Some(Self::MaxV),
2284 "MinV" => Some(Self::MinV),
2285 "ModesSupported" => Some(Self::ModesSupported),
2286 "InverterManufacturer" => Some(Self::InverterManufacturer),
2287 "InverterModel" => Some(Self::InverterModel),
2288 "InverterSerialNumber" => Some(Self::InverterSerialNumber),
2289 "InverterSwVersion" => Some(Self::InverterSwVersion),
2290 "InverterHwVersion" => Some(Self::InverterHwVersion),
2291 "IslandingDetectionMethod" => Some(Self::IslandingDetectionMethod),
2292 "IslandingDetectionTripTime" => Some(Self::IslandingDetectionTripTime),
2293 "ReactiveSusceptance" => Some(Self::ReactiveSusceptance),
2294 "TargetSoC" => Some(Self::TargetSoC),
2295 "OcppCsmsUrl" => Some(Self::OcppCsmsUrl),
2296 "OcppInterface" => Some(Self::OcppInterface),
2297 "OcppTransport" => Some(Self::OcppTransport),
2298 "OcppVersion" => Some(Self::OcppVersion),
2299 "CsmsRootCertificateHashAlgorithm" => {
2300 Some(Self::CsmsRootCertificateHashAlgorithm)
2301 }
2302 "CsmsRootCertificateIssuerKeyHash" => {
2303 Some(Self::CsmsRootCertificateIssuerKeyHash)
2304 }
2305 "CsmsRootCertificateIssuerNameHash" => {
2306 Some(Self::CsmsRootCertificateIssuerNameHash)
2307 }
2308 "CsmsRootCertificateSerialNumber" => {
2309 Some(Self::CsmsRootCertificateSerialNumber)
2310 }
2311 "VpnEnabled" => Some(Self::VpnEnabled),
2312 "VpnType" => Some(Self::VpnType),
2313 "VpnServer" => Some(Self::VpnServer),
2314 "VpnUser" => Some(Self::VpnUser),
2315 "VpnGroup" => Some(Self::VpnGroup),
2316 "VpnPassword" => Some(Self::VpnPassword),
2317 "VpnKey" => Some(Self::VpnKey),
2318 "ApnEnabled" => Some(Self::ApnEnabled),
2319 "Apn" => Some(Self::Apn),
2320 "ApnUserName" => Some(Self::ApnUserName),
2321 "ApnPassword" => Some(Self::ApnPassword),
2322 "SimPin" => Some(Self::SimPin),
2323 "PreferredNetwork" => Some(Self::PreferredNetwork),
2324 "UseOnlyPreferredNetwork" => Some(Self::UseOnlyPreferredNetwork),
2325 "ApnAuthentication" => Some(Self::ApnAuthentication),
2326 "AuthorizeDirectPayment" => Some(Self::AuthorizeDirectPayment),
2327 "AuthorizationAmount" => Some(Self::AuthorizationAmount),
2328 "IncrementalAuthorizationAmount" => {
2329 Some(Self::IncrementalAuthorizationAmount)
2330 }
2331 "IncrementalAuthorizationThreshold" => {
2332 Some(Self::IncrementalAuthorizationThreshold)
2333 }
2334 "PaymentDetails" => Some(Self::PaymentDetails),
2335 "SettlementByCSMS" => Some(Self::SettlementByCSMS),
2336 "ReceiptServerUrl" => Some(Self::ReceiptServerUrl),
2337 "ReceiptByCSMS" => Some(Self::ReceiptByCSMS),
2338 "Merchant" => Some(Self::Merchant),
2339 "TerminalID" => Some(Self::TerminalID),
2340 "PaymentServiceProvider" => Some(Self::PaymentServiceProvider),
2341 "Connected" => Some(Self::Connected),
2342 "URLTemplate" => Some(Self::URLTemplate),
2343 "URLParameters" => Some(Self::URLParameters),
2344 "TOTPVersion" => Some(Self::TOTPVersion),
2345 "ChargingStationId" => Some(Self::ChargingStationId),
2346 "ValidityTime" => Some(Self::ValidityTime),
2347 "SharedSecret" => Some(Self::SharedSecret),
2348 "QRCodeQuality" => Some(Self::QRCodeQuality),
2349 _ => None,
2350 }
2351 }
2352 pub fn from_wire_or_other(value: &str) -> Result<Self, ValueTooLong> {
2358 if let Some(standardized) = Self::from_wire(value) {
2359 return Ok(standardized);
2360 }
2361 heapless::String::try_from(value).map(Self::Other).map_err(|_| ValueTooLong)
2362 }
2363 pub fn is_standardized(&self) -> bool {
2366 !matches!(self, Self::Other(_))
2367 }
2368 pub fn data_type(&self) -> Option<&'static str> {
2370 match self {
2371 Self::ACCurrent => Some("decimal"),
2372 Self::ACPhaseSwitchingSupported => Some("boolean"),
2373 Self::ACVoltage => Some("decimal"),
2374 Self::Active => Some("boolean"),
2375 Self::ActiveMonitoringBase => Some("OptionList"),
2376 Self::ActiveMonitoringLevel => Some("integer"),
2377 Self::ActiveNetworkProfile => Some("boolean"),
2378 Self::ActiveTransactionId => Some("string"),
2379 Self::AdditionalInfoItemsPerMessage => Some("integer"),
2380 Self::AdditionalRootCertificateCheck => Some("boolean"),
2381 Self::AllowEnergyTransferResumption => Some("boolean"),
2382 Self::AllowNewSessionsPendingFirmwareUpdate => Some("boolean"),
2383 Self::AllowReset => Some("boolean"),
2384 Self::AllowSecurityProfileDowngrade => Some("boolean"),
2385 Self::Angle => Some("decimal"),
2386 Self::Attempts => Some("integer"),
2387 Self::AuthorizeRemoteStart => Some("boolean"),
2388 Self::AvailabilityState => Some("OptionList"),
2389 Self::Available => Some("boolean"),
2390 Self::BasicAuthPassword => Some("string"),
2391 Self::BytesPerMessage => Some("integer"),
2392 Self::CentralContractValidationAllowed => Some("boolean"),
2393 Self::CertSigningRepeatTimes => Some("integer"),
2394 Self::CertSigningWaitMinimum => Some("integer"),
2395 Self::Certificate => Some("string"),
2396 Self::CertificateEntries => Some("integer"),
2397 Self::CertificateStatusSource => Some("string"),
2398 Self::ChargeProtocol => Some("string"),
2399 Self::ChargingCompleteBulk => Some("boolean"),
2400 Self::ChargingCompleteFull => Some("boolean"),
2401 Self::ChargingProfilePersistence => Some("boolean"),
2402 Self::ChargingState => Some("OptionList"),
2403 Self::ChargingTime => Some("decimal"),
2404 Self::Color => Some("string"),
2405 Self::CommunicationParent => Some("string"),
2406 Self::Complete => Some("boolean"),
2407 Self::ConditionsSupported => Some("boolean"),
2408 Self::ConfigurationValueSize => Some("integer"),
2409 Self::ConnectedTime => Some("decimal"),
2410 Self::ConnectorType => Some("OptionList"),
2411 Self::ContractCertificateInstallationEnabled => Some("boolean"),
2412 Self::ContractValidationOffline => Some("boolean"),
2413 Self::Count => Some("integer"),
2414 Self::CountryName => Some("string"),
2415 Self::Currency => Some("string"),
2416 Self::CurrentImbalance => Some("decimal"),
2417 Self::CustomImplementationEnabled => Some("boolean"),
2418 Self::CustomTriggers => Some("MemberList"),
2419 Self::DCCurrent => Some("decimal"),
2420 Self::DCInputPhaseControl => Some("boolean"),
2421 Self::DCVoltage => Some("decimal"),
2422 Self::DataText => Some("string"),
2423 Self::DateTime => Some("dateTime"),
2424 Self::DepartureTime => Some("dateTime"),
2425 Self::DisablePostAuthorize => Some("boolean"),
2426 Self::DisableRemoteAuthorization => Some("boolean"),
2427 Self::DischargePower => Some("decimal"),
2428 Self::DisplayMessages => Some("integer"),
2429 Self::ECVariant => Some("string"),
2430 Self::EVConnectionTimeOut => Some("integer"),
2431 Self::ElectricalParent => Some("string"),
2432 Self::Enabled => Some("boolean"),
2433 Self::Energy => Some("decimal"),
2434 Self::EnergyCapacity => Some("decimal"),
2435 Self::EnergyExport => Some("decimal"),
2436 Self::EnergyExportRegister => Some("decimal"),
2437 Self::EnergyImport => Some("decimal"),
2438 Self::EnergyImportRegister => Some("decimal"),
2439 Self::Entries => Some("integer"),
2440 Self::ExternalConfigChangeDate => Some("DateTime"),
2441 Self::ExternalConstraintsProfileDisallowed => Some("boolean"),
2442 Self::ExternalControlSignalsEnabled => Some("boolean"),
2443 Self::Fallback => Some("boolean"),
2444 Self::FanSpeed => Some("decimal"),
2445 Self::FieldLength => Some("integer"),
2446 Self::FileTransferProtocols => Some("MemberList"),
2447 Self::FirmwareVersion => Some("string"),
2448 Self::Force => Some("decimal"),
2449 Self::Formats => Some("MemberList"),
2450 Self::Frequency => Some("decimal"),
2451 Self::FrequencySchedule => Some("string"),
2452 Self::FuseRating => Some("decimal"),
2453 Self::HandleFailedTariff => Some("OptionList"),
2454 Self::HeartbeatInterval => Some("integer"),
2455 Self::Height => Some("decimal"),
2456 Self::Humidity => Some("decimal"),
2457 Self::Hysteresis => Some("decimal"),
2458 Self::ICCID => Some("string"),
2459 Self::IMSI => Some("string"),
2460 Self::ISO15118EvseId => Some("string"),
2461 Self::IdToken => Some("string"),
2462 Self::Identity => Some("string"),
2463 Self::Impedance => Some("decimal"),
2464 Self::Interval => Some("integer"),
2465 Self::ItemsPerMessage => Some("integer"),
2466 Self::Label => Some("string"),
2467 Self::Language => Some("OptionList"),
2468 Self::Length => Some("decimal"),
2469 Self::LifeTime => Some("integer"),
2470 Self::Light => Some("decimal"),
2471 Self::LimitChangeSignificance => Some("decimal"),
2472 Self::LocalAuthorizeOffline => Some("boolean"),
2473 Self::LocalFrequencyUpdateThreshold => Some("integer"),
2474 Self::LocalLoadBalancing => Some("decimal"),
2475 Self::LocalPreAuthorize => Some("boolean"),
2476 Self::LogicalParent => Some("string"),
2477 Self::Manufacturer => Some("string"),
2478 Self::MasterPassGroupId => Some("string"),
2479 Self::MaxCertificateChainSize => Some("integer"),
2480 Self::MaxElements => Some("integer"),
2481 Self::MaxEnergyOnInvalidId => Some("integer"),
2482 Self::MaxExternalConstraintsId => Some("integer"),
2483 Self::MaxPeriodicEventStreams => Some("integer"),
2484 Self::MaxPriceElements => Some("integer"),
2485 Self::MaxSoc => Some("integer"),
2486 Self::Measurands => Some("MemberList"),
2487 Self::Message => Some("string"),
2488 Self::MessageAttemptInterval => Some("integer"),
2489 Self::MessageAttempts => Some("integer"),
2490 Self::MessageTimeout => Some("integer"),
2491 Self::MinimumStatusDuration => Some("integer"),
2492 Self::Mode => Some("string"),
2493 Self::Model => Some("string"),
2494 Self::NetworkAddress => Some("string"),
2495 Self::NetworkConfigurationPriority => Some("SequenceList"),
2496 Self::NetworkProfileConnectionAttempts => Some("integer"),
2497 Self::NextTimeOffsetTransitionDateTime => Some("DateTime"),
2498 Self::NonEvseSpecific => Some("boolean"),
2499 Self::NotificationMaxDelay => Some("integer"),
2500 Self::NotifyChargingLimitWithSchedules => Some("boolean"),
2501 Self::NtpServerUri => Some("string"),
2502 Self::NtpSource => Some("OptionList"),
2503 Self::OfflineQueuingSeverity => Some("integer"),
2504 Self::OfflineTariffFallbackMessage => Some("string"),
2505 Self::OfflineThreshold => Some("integer"),
2506 Self::OfflineTxForUnknownIdEnabled => Some("boolean"),
2507 Self::Operated => Some("boolean"),
2508 Self::OperatingTimes => Some("string"),
2509 Self::OrganizationName => Some("string"),
2510 Self::Overload => Some("boolean"),
2511 Self::Percent => Some("decimal"),
2512 Self::PeriodsPerSchedule => Some("integer"),
2513 Self::PhaseRotation => Some("string"),
2514 Self::Phases3to1 => Some("boolean"),
2515 Self::PhysicalParent => Some("string"),
2516 Self::PnCEnabled => Some("boolean"),
2517 Self::Policy => Some("OptionList"),
2518 Self::PostChargingTime => Some("decimal"),
2519 Self::Power => Some("decimal"),
2520 Self::Present => Some("boolean"),
2521 Self::Problem => Some("boolean"),
2522 Self::ProfileStackLevel => Some("integer"),
2523 Self::Protecting => Some("boolean"),
2524 Self::ProtocolAgreed => Some("string"),
2525 Self::ProtocolSupported => Some("string"),
2526 Self::ProtocolSupportedByEV => Some("string"),
2527 Self::PublicKey => Some("string"),
2528 Self::PublicKeyWithSignedMeterValue => Some("boolean"),
2529 Self::QueueAllMessages => Some("boolean"),
2530 Self::RateUnit => Some("string"),
2531 Self::RegisterValuesWithoutPhases => Some("boolean"),
2532 Self::RemainingTimeBulk => Some("integer"),
2533 Self::RemainingTimeFull => Some("integer"),
2534 Self::ReportingValueSize => Some("integer"),
2535 Self::RequestMeteringReceipt => Some("boolean"),
2536 Self::ResetRetries => Some("integer"),
2537 Self::ResumptionTimeout => Some("integer"),
2538 Self::SampledMeasurands => Some("MemberList"),
2539 Self::SamplingInterval => Some("decimal"),
2540 Self::SeccId => Some("string"),
2541 Self::SecurityProfile => Some("integer"),
2542 Self::SendDuringIdle => Some("boolean"),
2543 Self::SerialNumber => Some("string"),
2544 Self::ServiceRenegotiationSupport => Some("boolean"),
2545 Self::SetpointPriority => Some("OptionList"),
2546 Self::SignReadings => Some("boolean"),
2547 Self::SignStartedReadings => Some("boolean"),
2548 Self::SignUpdatedReadings => Some("boolean"),
2549 Self::SignalStrength => Some("decimal"),
2550 Self::SlotStatus => Some("OptionList"),
2551 Self::SoC => Some("integer"),
2552 Self::SoH => Some("integer"),
2553 Self::State => Some("string"),
2554 Self::StateOfCharge => Some("decimal"),
2555 Self::StateOfChargeBulk => Some("decimal"),
2556 Self::StopTxOnEVSideDisconnect => Some("boolean"),
2557 Self::StopTxOnInvalidId => Some("boolean"),
2558 Self::Storage => Some("integer"),
2559 Self::SupplyPhases => Some("integer"),
2560 Self::SupportedAdditionalPurposes => Some("MemberList"),
2561 Self::SupportedEnergyTransferModes => Some("MemberList"),
2562 Self::SupportedFormats => Some("MemberList"),
2563 Self::SupportedIdTokenTypes => Some("MemberList"),
2564 Self::SupportedLimits => Some("MemberList"),
2565 Self::SupportedOperationModes => Some("MemberList"),
2566 Self::SupportedPriorities => Some("MemberList"),
2567 Self::SupportedProviders => Some("string"),
2568 Self::SupportedStates => Some("MemberList"),
2569 Self::SupportsDynamicProfiles => Some("boolean"),
2570 Self::SupportsEvseSleep => Some("boolean"),
2571 Self::SupportsExpiryDateTime => Some("boolean"),
2572 Self::SupportsLimitAtSoC => Some("boolean"),
2573 Self::SupportsMaxOfflineDuration => Some("boolean"),
2574 Self::SupportsRandomizedDelay => Some("boolean"),
2575 Self::SupportsUseLocalTime => Some("boolean"),
2576 Self::Suspending => Some("boolean"),
2577 Self::Suspension => Some("boolean"),
2578 Self::TargetSoc => Some("integer"),
2579 Self::TariffFallbackMessage => Some("string"),
2580 Self::Temperature => Some("decimal"),
2581 Self::Time => Some("dateTime"),
2582 Self::TimeAdjustmentReportingThreshold => Some("integer"),
2583 Self::TimeOffset => Some("string"),
2584 Self::TimeSource => Some("SequenceList"),
2585 Self::TimeZone => Some("string"),
2586 Self::Timeout => Some("decimal"),
2587 Self::Token => Some("string"),
2588 Self::TokenType => Some("OptionList"),
2589 Self::TotalCostFallbackMessage => Some("string"),
2590 Self::Tries => Some("integer"),
2591 Self::Tripped => Some("boolean"),
2592 Self::TxBeforeAcceptedEnabled => Some("boolean"),
2593 Self::TxEndedInterval => Some("integer"),
2594 Self::TxEndedMeasurands => Some("MemberList"),
2595 Self::TxStartPoint => Some("MemberList"),
2596 Self::TxStartedMeasurands => Some("MemberList"),
2597 Self::TxStopPoint => Some("MemberList"),
2598 Self::TxUpdatedInterval => Some("integer"),
2599 Self::TxUpdatedMeasurands => Some("MemberList"),
2600 Self::UnlockOnEVSideDisconnect => Some("boolean"),
2601 Self::UpstreamInterval => Some("integer"),
2602 Self::UpstreamMeasurands => Some("MemberList"),
2603 Self::V2GCertificateInstallationEnabled => Some("boolean"),
2604 Self::VehicleCertificate => Some("string"),
2605 Self::VehicleId => Some("string"),
2606 Self::VersionDate => Some("dateTime"),
2607 Self::VersionNumber => Some("string"),
2608 Self::VoltageImbalance => Some("decimal"),
2609 Self::WorkingMode => Some("OptionList"),
2610 Self::VendorName => None,
2611 Self::SupportedIdTokenType => None,
2612 Self::SelftestActive => None,
2613 Self::CHAdeMOProtocolNumber => None,
2614 Self::VehicleStatus => None,
2615 Self::DynamicControl => None,
2616 Self::HighCurrentControl => None,
2617 Self::HighVoltageControl => None,
2618 Self::AutoManufacturerCode => None,
2619 Self::VehicleID => None,
2620 Self::BatteryCapacity => None,
2621 Self::ValueSize => None,
2622 Self::EvseId => None,
2623 Self::MaxScheduleEntries => None,
2624 Self::RequestedEnergyTransferMode => None,
2625 Self::NotificationDelay => None,
2626 Self::Capacity => None,
2627 Self::MonitoringBase => None,
2628 Self::MonitoringLevel => None,
2629 Self::RetryBackOffRandomRange => None,
2630 Self::RetryBackOffRepeatTimes => None,
2631 Self::RetryBackOffWaitMinimum => None,
2632 Self::WebSocketPingInterval => None,
2633 Self::EnergyTransferResumptionRandomRange => None,
2634 Self::MaxW => None,
2635 Self::OverExcitedW => None,
2636 Self::OverExcitedPF => None,
2637 Self::UnderExcitedW => None,
2638 Self::UnderExcitedPF => None,
2639 Self::MaxVA => None,
2640 Self::MaxVar => None,
2641 Self::MaxVarNeg => None,
2642 Self::MaxChargeRateW => None,
2643 Self::MaxChargeRateVA => None,
2644 Self::VNom => None,
2645 Self::MaxV => None,
2646 Self::MinV => None,
2647 Self::ModesSupported => None,
2648 Self::InverterManufacturer => None,
2649 Self::InverterModel => None,
2650 Self::InverterSerialNumber => None,
2651 Self::InverterSwVersion => None,
2652 Self::InverterHwVersion => None,
2653 Self::IslandingDetectionMethod => None,
2654 Self::IslandingDetectionTripTime => None,
2655 Self::ReactiveSusceptance => None,
2656 Self::TargetSoC => None,
2657 Self::OcppCsmsUrl => None,
2658 Self::OcppInterface => None,
2659 Self::OcppTransport => None,
2660 Self::OcppVersion => None,
2661 Self::CsmsRootCertificateHashAlgorithm => None,
2662 Self::CsmsRootCertificateIssuerKeyHash => None,
2663 Self::CsmsRootCertificateIssuerNameHash => None,
2664 Self::CsmsRootCertificateSerialNumber => None,
2665 Self::VpnEnabled => None,
2666 Self::VpnType => None,
2667 Self::VpnServer => None,
2668 Self::VpnUser => None,
2669 Self::VpnGroup => None,
2670 Self::VpnPassword => None,
2671 Self::VpnKey => None,
2672 Self::ApnEnabled => None,
2673 Self::Apn => None,
2674 Self::ApnUserName => None,
2675 Self::ApnPassword => None,
2676 Self::SimPin => None,
2677 Self::PreferredNetwork => None,
2678 Self::UseOnlyPreferredNetwork => None,
2679 Self::ApnAuthentication => None,
2680 Self::AuthorizeDirectPayment => None,
2681 Self::AuthorizationAmount => None,
2682 Self::IncrementalAuthorizationAmount => None,
2683 Self::IncrementalAuthorizationThreshold => None,
2684 Self::PaymentDetails => None,
2685 Self::SettlementByCSMS => None,
2686 Self::ReceiptServerUrl => None,
2687 Self::ReceiptByCSMS => None,
2688 Self::Merchant => None,
2689 Self::TerminalID => None,
2690 Self::PaymentServiceProvider => None,
2691 Self::Connected => None,
2692 Self::URLTemplate => None,
2693 Self::URLParameters => None,
2694 Self::TOTPVersion => None,
2695 Self::ChargingStationId => None,
2696 Self::ValidityTime => None,
2697 Self::SharedSecret => None,
2698 Self::QRCodeQuality => None,
2699 Self::Other(_) => None,
2700 }
2701 }
2702 pub fn unit(&self) -> Option<&'static str> {
2704 match self {
2705 Self::ACCurrent => Some("A"),
2706 Self::ACPhaseSwitchingSupported => None,
2707 Self::ACVoltage => Some("V"),
2708 Self::Active => None,
2709 Self::ActiveMonitoringBase => None,
2710 Self::ActiveMonitoringLevel => None,
2711 Self::ActiveNetworkProfile => None,
2712 Self::ActiveTransactionId => None,
2713 Self::AdditionalInfoItemsPerMessage => None,
2714 Self::AdditionalRootCertificateCheck => None,
2715 Self::AllowEnergyTransferResumption => None,
2716 Self::AllowNewSessionsPendingFirmwareUpdate => None,
2717 Self::AllowReset => None,
2718 Self::AllowSecurityProfileDowngrade => None,
2719 Self::Angle => Some("Deg"),
2720 Self::Attempts => None,
2721 Self::AuthorizeRemoteStart => None,
2722 Self::AvailabilityState => None,
2723 Self::Available => None,
2724 Self::BasicAuthPassword => None,
2725 Self::BytesPerMessage => None,
2726 Self::CentralContractValidationAllowed => None,
2727 Self::CertSigningRepeatTimes => None,
2728 Self::CertSigningWaitMinimum => None,
2729 Self::Certificate => None,
2730 Self::CertificateEntries => None,
2731 Self::CertificateStatusSource => None,
2732 Self::ChargeProtocol => None,
2733 Self::ChargingCompleteBulk => None,
2734 Self::ChargingCompleteFull => None,
2735 Self::ChargingProfilePersistence => None,
2736 Self::ChargingState => None,
2737 Self::ChargingTime => Some("s"),
2738 Self::Color => None,
2739 Self::CommunicationParent => None,
2740 Self::Complete => None,
2741 Self::ConditionsSupported => None,
2742 Self::ConfigurationValueSize => None,
2743 Self::ConnectedTime => Some("s"),
2744 Self::ConnectorType => None,
2745 Self::ContractCertificateInstallationEnabled => None,
2746 Self::ContractValidationOffline => None,
2747 Self::Count => None,
2748 Self::CountryName => None,
2749 Self::Currency => None,
2750 Self::CurrentImbalance => Some("Percent"),
2751 Self::CustomImplementationEnabled => None,
2752 Self::CustomTriggers => None,
2753 Self::DCCurrent => Some("A"),
2754 Self::DCInputPhaseControl => None,
2755 Self::DCVoltage => Some("V"),
2756 Self::DataText => None,
2757 Self::DateTime => None,
2758 Self::DepartureTime => None,
2759 Self::DisablePostAuthorize => None,
2760 Self::DisableRemoteAuthorization => None,
2761 Self::DischargePower => None,
2762 Self::DisplayMessages => None,
2763 Self::ECVariant => None,
2764 Self::EVConnectionTimeOut => Some("s"),
2765 Self::ElectricalParent => None,
2766 Self::Enabled => None,
2767 Self::Energy => Some("Wh"),
2768 Self::EnergyCapacity => Some("Wh"),
2769 Self::EnergyExport => Some("Wh"),
2770 Self::EnergyExportRegister => Some("Wh"),
2771 Self::EnergyImport => Some("Wh"),
2772 Self::EnergyImportRegister => Some("Wh"),
2773 Self::Entries => None,
2774 Self::ExternalConfigChangeDate => None,
2775 Self::ExternalConstraintsProfileDisallowed => None,
2776 Self::ExternalControlSignalsEnabled => None,
2777 Self::Fallback => None,
2778 Self::FanSpeed => Some("RPM"),
2779 Self::FieldLength => None,
2780 Self::FileTransferProtocols => None,
2781 Self::FirmwareVersion => None,
2782 Self::Force => Some("N"),
2783 Self::Formats => None,
2784 Self::Frequency => Some("Hz"),
2785 Self::FrequencySchedule => None,
2786 Self::FuseRating => Some("A"),
2787 Self::HandleFailedTariff => None,
2788 Self::HeartbeatInterval => Some("s"),
2789 Self::Height => Some("m"),
2790 Self::Humidity => Some("RH"),
2791 Self::Hysteresis => Some("Percent"),
2792 Self::ICCID => None,
2793 Self::IMSI => None,
2794 Self::ISO15118EvseId => None,
2795 Self::IdToken => None,
2796 Self::Identity => None,
2797 Self::Impedance => Some("Ohm"),
2798 Self::Interval => Some("s"),
2799 Self::ItemsPerMessage => None,
2800 Self::Label => None,
2801 Self::Language => None,
2802 Self::Length => Some("m"),
2803 Self::LifeTime => Some("s"),
2804 Self::Light => Some("lx"),
2805 Self::LimitChangeSignificance => None,
2806 Self::LocalAuthorizeOffline => None,
2807 Self::LocalFrequencyUpdateThreshold => Some("mHz"),
2808 Self::LocalLoadBalancing => None,
2809 Self::LocalPreAuthorize => None,
2810 Self::LogicalParent => None,
2811 Self::Manufacturer => None,
2812 Self::MasterPassGroupId => None,
2813 Self::MaxCertificateChainSize => None,
2814 Self::MaxElements => None,
2815 Self::MaxEnergyOnInvalidId => Some("Wh"),
2816 Self::MaxExternalConstraintsId => None,
2817 Self::MaxPeriodicEventStreams => None,
2818 Self::MaxPriceElements => None,
2819 Self::MaxSoc => None,
2820 Self::Measurands => None,
2821 Self::Message => None,
2822 Self::MessageAttemptInterval => Some("s"),
2823 Self::MessageAttempts => None,
2824 Self::MessageTimeout => Some("s"),
2825 Self::MinimumStatusDuration => Some("s"),
2826 Self::Mode => None,
2827 Self::Model => None,
2828 Self::NetworkAddress => None,
2829 Self::NetworkConfigurationPriority => None,
2830 Self::NetworkProfileConnectionAttempts => None,
2831 Self::NextTimeOffsetTransitionDateTime => None,
2832 Self::NonEvseSpecific => None,
2833 Self::NotificationMaxDelay => Some("s"),
2834 Self::NotifyChargingLimitWithSchedules => None,
2835 Self::NtpServerUri => None,
2836 Self::NtpSource => None,
2837 Self::OfflineQueuingSeverity => None,
2838 Self::OfflineTariffFallbackMessage => None,
2839 Self::OfflineThreshold => Some("s"),
2840 Self::OfflineTxForUnknownIdEnabled => None,
2841 Self::Operated => None,
2842 Self::OperatingTimes => None,
2843 Self::OrganizationName => None,
2844 Self::Overload => None,
2845 Self::Percent => Some("Percent"),
2846 Self::PeriodsPerSchedule => None,
2847 Self::PhaseRotation => None,
2848 Self::Phases3to1 => None,
2849 Self::PhysicalParent => None,
2850 Self::PnCEnabled => None,
2851 Self::Policy => None,
2852 Self::PostChargingTime => Some("s"),
2853 Self::Power => Some("W,kW"),
2854 Self::Present => None,
2855 Self::Problem => None,
2856 Self::ProfileStackLevel => None,
2857 Self::Protecting => None,
2858 Self::ProtocolAgreed => None,
2859 Self::ProtocolSupported => None,
2860 Self::ProtocolSupportedByEV => None,
2861 Self::PublicKey => None,
2862 Self::PublicKeyWithSignedMeterValue => None,
2863 Self::QueueAllMessages => None,
2864 Self::RateUnit => None,
2865 Self::RegisterValuesWithoutPhases => None,
2866 Self::RemainingTimeBulk => Some("s"),
2867 Self::RemainingTimeFull => Some("s"),
2868 Self::ReportingValueSize => None,
2869 Self::RequestMeteringReceipt => None,
2870 Self::ResetRetries => None,
2871 Self::ResumptionTimeout => Some("s"),
2872 Self::SampledMeasurands => None,
2873 Self::SamplingInterval => Some("s"),
2874 Self::SeccId => None,
2875 Self::SecurityProfile => None,
2876 Self::SendDuringIdle => None,
2877 Self::SerialNumber => None,
2878 Self::ServiceRenegotiationSupport => None,
2879 Self::SetpointPriority => None,
2880 Self::SignReadings => None,
2881 Self::SignStartedReadings => None,
2882 Self::SignUpdatedReadings => None,
2883 Self::SignalStrength => Some("dBm"),
2884 Self::SlotStatus => None,
2885 Self::SoC => Some("Percent"),
2886 Self::SoH => Some("Percent"),
2887 Self::State => None,
2888 Self::StateOfCharge => Some("Percent"),
2889 Self::StateOfChargeBulk => Some("Percent"),
2890 Self::StopTxOnEVSideDisconnect => None,
2891 Self::StopTxOnInvalidId => None,
2892 Self::Storage => Some("B"),
2893 Self::SupplyPhases => None,
2894 Self::SupportedAdditionalPurposes => None,
2895 Self::SupportedEnergyTransferModes => None,
2896 Self::SupportedFormats => None,
2897 Self::SupportedIdTokenTypes => None,
2898 Self::SupportedLimits => None,
2899 Self::SupportedOperationModes => None,
2900 Self::SupportedPriorities => None,
2901 Self::SupportedProviders => None,
2902 Self::SupportedStates => None,
2903 Self::SupportsDynamicProfiles => None,
2904 Self::SupportsEvseSleep => None,
2905 Self::SupportsExpiryDateTime => None,
2906 Self::SupportsLimitAtSoC => None,
2907 Self::SupportsMaxOfflineDuration => None,
2908 Self::SupportsRandomizedDelay => None,
2909 Self::SupportsUseLocalTime => None,
2910 Self::Suspending => None,
2911 Self::Suspension => None,
2912 Self::TargetSoc => Some("Percent"),
2913 Self::TariffFallbackMessage => None,
2914 Self::Temperature => Some("Celsius, Fahrenheit"),
2915 Self::Time => None,
2916 Self::TimeAdjustmentReportingThreshold => Some("s"),
2917 Self::TimeOffset => None,
2918 Self::TimeSource => None,
2919 Self::TimeZone => None,
2920 Self::Timeout => Some("s"),
2921 Self::Token => None,
2922 Self::TokenType => None,
2923 Self::TotalCostFallbackMessage => None,
2924 Self::Tries => None,
2925 Self::Tripped => None,
2926 Self::TxBeforeAcceptedEnabled => None,
2927 Self::TxEndedInterval => Some("s"),
2928 Self::TxEndedMeasurands => None,
2929 Self::TxStartPoint => None,
2930 Self::TxStartedMeasurands => None,
2931 Self::TxStopPoint => None,
2932 Self::TxUpdatedInterval => Some("s"),
2933 Self::TxUpdatedMeasurands => None,
2934 Self::UnlockOnEVSideDisconnect => None,
2935 Self::UpstreamInterval => Some("s"),
2936 Self::UpstreamMeasurands => None,
2937 Self::V2GCertificateInstallationEnabled => None,
2938 Self::VehicleCertificate => None,
2939 Self::VehicleId => None,
2940 Self::VersionDate => None,
2941 Self::VersionNumber => None,
2942 Self::VoltageImbalance => Some("Percent"),
2943 Self::WorkingMode => None,
2944 Self::VendorName => None,
2945 Self::SupportedIdTokenType => None,
2946 Self::SelftestActive => None,
2947 Self::CHAdeMOProtocolNumber => None,
2948 Self::VehicleStatus => None,
2949 Self::DynamicControl => None,
2950 Self::HighCurrentControl => None,
2951 Self::HighVoltageControl => None,
2952 Self::AutoManufacturerCode => None,
2953 Self::VehicleID => None,
2954 Self::BatteryCapacity => None,
2955 Self::ValueSize => None,
2956 Self::EvseId => None,
2957 Self::MaxScheduleEntries => None,
2958 Self::RequestedEnergyTransferMode => None,
2959 Self::NotificationDelay => None,
2960 Self::Capacity => None,
2961 Self::MonitoringBase => None,
2962 Self::MonitoringLevel => None,
2963 Self::RetryBackOffRandomRange => None,
2964 Self::RetryBackOffRepeatTimes => None,
2965 Self::RetryBackOffWaitMinimum => None,
2966 Self::WebSocketPingInterval => None,
2967 Self::EnergyTransferResumptionRandomRange => None,
2968 Self::MaxW => None,
2969 Self::OverExcitedW => None,
2970 Self::OverExcitedPF => None,
2971 Self::UnderExcitedW => None,
2972 Self::UnderExcitedPF => None,
2973 Self::MaxVA => None,
2974 Self::MaxVar => None,
2975 Self::MaxVarNeg => None,
2976 Self::MaxChargeRateW => None,
2977 Self::MaxChargeRateVA => None,
2978 Self::VNom => None,
2979 Self::MaxV => None,
2980 Self::MinV => None,
2981 Self::ModesSupported => None,
2982 Self::InverterManufacturer => None,
2983 Self::InverterModel => None,
2984 Self::InverterSerialNumber => None,
2985 Self::InverterSwVersion => None,
2986 Self::InverterHwVersion => None,
2987 Self::IslandingDetectionMethod => None,
2988 Self::IslandingDetectionTripTime => None,
2989 Self::ReactiveSusceptance => None,
2990 Self::TargetSoC => None,
2991 Self::OcppCsmsUrl => None,
2992 Self::OcppInterface => None,
2993 Self::OcppTransport => None,
2994 Self::OcppVersion => None,
2995 Self::CsmsRootCertificateHashAlgorithm => None,
2996 Self::CsmsRootCertificateIssuerKeyHash => None,
2997 Self::CsmsRootCertificateIssuerNameHash => None,
2998 Self::CsmsRootCertificateSerialNumber => None,
2999 Self::VpnEnabled => None,
3000 Self::VpnType => None,
3001 Self::VpnServer => None,
3002 Self::VpnUser => None,
3003 Self::VpnGroup => None,
3004 Self::VpnPassword => None,
3005 Self::VpnKey => None,
3006 Self::ApnEnabled => None,
3007 Self::Apn => None,
3008 Self::ApnUserName => None,
3009 Self::ApnPassword => None,
3010 Self::SimPin => None,
3011 Self::PreferredNetwork => None,
3012 Self::UseOnlyPreferredNetwork => None,
3013 Self::ApnAuthentication => None,
3014 Self::AuthorizeDirectPayment => None,
3015 Self::AuthorizationAmount => None,
3016 Self::IncrementalAuthorizationAmount => None,
3017 Self::IncrementalAuthorizationThreshold => None,
3018 Self::PaymentDetails => None,
3019 Self::SettlementByCSMS => None,
3020 Self::ReceiptServerUrl => None,
3021 Self::ReceiptByCSMS => None,
3022 Self::Merchant => None,
3023 Self::TerminalID => None,
3024 Self::PaymentServiceProvider => None,
3025 Self::Connected => None,
3026 Self::URLTemplate => None,
3027 Self::URLParameters => None,
3028 Self::TOTPVersion => None,
3029 Self::ChargingStationId => None,
3030 Self::ValidityTime => None,
3031 Self::SharedSecret => None,
3032 Self::QRCodeQuality => None,
3033 Self::Other(_) => None,
3034 }
3035 }
3036}
3037impl core::fmt::Display for VariableName {
3038 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3039 f.write_str(self.as_str())
3040 }
3041}
3042impl core::str::FromStr for VariableName {
3043 type Err = ValueTooLong;
3044 fn from_str(value: &str) -> Result<Self, Self::Err> {
3045 Self::from_wire_or_other(value)
3046 }
3047}
3048impl PartialEq for VariableName {
3049 fn eq(&self, other: &Self) -> bool {
3050 self.as_str() == other.as_str()
3051 }
3052}
3053impl Eq for VariableName {}
3054impl core::hash::Hash for VariableName {
3055 fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
3056 self.as_str().hash(state);
3057 }
3058}
3059impl PartialOrd for VariableName {
3060 fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
3061 Some(self.cmp(other))
3062 }
3063}
3064impl Ord for VariableName {
3065 fn cmp(&self, other: &Self) -> core::cmp::Ordering {
3066 self.as_str().cmp(other.as_str())
3067 }
3068}
3069#[cfg(feature = "serde")]
3070impl serde::Serialize for VariableName {
3071 fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3072 serializer.serialize_str(self.as_str())
3073 }
3074}
3075#[cfg(feature = "serde")]
3076impl<'de> serde::Deserialize<'de> for VariableName {
3077 fn deserialize<D: serde::Deserializer<'de>>(
3078 deserializer: D,
3079 ) -> Result<Self, D::Error> {
3080 struct Visitor;
3081 impl<'v> serde::de::Visitor<'v> for Visitor {
3082 type Value = VariableName;
3083 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3084 f.write_str("a VariableName string")
3085 }
3086 fn visit_str<E: serde::de::Error>(
3087 self,
3088 value: &str,
3089 ) -> Result<Self::Value, E> {
3090 VariableName::from_wire_or_other(value).map_err(serde::de::Error::custom)
3091 }
3092 }
3093 deserializer.deserialize_str(Visitor)
3094 }
3095}
3096#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
3103#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3104pub enum SecurityEvent {
3105 FirmwareUpdated,
3107 FailedToAuthenticateAtCsms,
3109 CsmsFailedToAuthenticate,
3111 SettingSystemTime,
3113 StartupOfTheDevice,
3115 ResetOrReboot,
3117 SecurityLogWasCleared,
3119 ReconfigurationOfSecurityParameters,
3121 MemoryExhaustion,
3123 InvalidMessages,
3125 AttemptedReplayAttacks,
3127 TamperDetectionActivated,
3129 InvalidFirmwareSignature,
3131 InvalidFirmwareSigningCertificate,
3133 InvalidCsmsCertificate,
3135 InvalidChargingStationCertificate,
3137 DiscardedRenewedClientCertificate,
3139 InvalidTLSVersion,
3141 InvalidTLSCipherSuite,
3143 MaintenanceLoginAccepted,
3145 MaintenanceLoginFailed,
3147}
3148impl SecurityEvent {
3149 pub const ALL: &'static [Self] = &[
3151 Self::FirmwareUpdated,
3152 Self::FailedToAuthenticateAtCsms,
3153 Self::CsmsFailedToAuthenticate,
3154 Self::SettingSystemTime,
3155 Self::StartupOfTheDevice,
3156 Self::ResetOrReboot,
3157 Self::SecurityLogWasCleared,
3158 Self::ReconfigurationOfSecurityParameters,
3159 Self::MemoryExhaustion,
3160 Self::InvalidMessages,
3161 Self::AttemptedReplayAttacks,
3162 Self::TamperDetectionActivated,
3163 Self::InvalidFirmwareSignature,
3164 Self::InvalidFirmwareSigningCertificate,
3165 Self::InvalidCsmsCertificate,
3166 Self::InvalidChargingStationCertificate,
3167 Self::DiscardedRenewedClientCertificate,
3168 Self::InvalidTLSVersion,
3169 Self::InvalidTLSCipherSuite,
3170 Self::MaintenanceLoginAccepted,
3171 Self::MaintenanceLoginFailed,
3172 ];
3173 pub const fn as_str(&self) -> &'static str {
3175 match self {
3176 Self::FirmwareUpdated => "FirmwareUpdated",
3177 Self::FailedToAuthenticateAtCsms => "FailedToAuthenticateAtCsms",
3178 Self::CsmsFailedToAuthenticate => "CsmsFailedToAuthenticate",
3179 Self::SettingSystemTime => "SettingSystemTime",
3180 Self::StartupOfTheDevice => "StartupOfTheDevice",
3181 Self::ResetOrReboot => "ResetOrReboot",
3182 Self::SecurityLogWasCleared => "SecurityLogWasCleared",
3183 Self::ReconfigurationOfSecurityParameters => {
3184 "ReconfigurationOfSecurityParameters"
3185 }
3186 Self::MemoryExhaustion => "MemoryExhaustion",
3187 Self::InvalidMessages => "InvalidMessages",
3188 Self::AttemptedReplayAttacks => "AttemptedReplayAttacks",
3189 Self::TamperDetectionActivated => "TamperDetectionActivated",
3190 Self::InvalidFirmwareSignature => "InvalidFirmwareSignature",
3191 Self::InvalidFirmwareSigningCertificate => {
3192 "InvalidFirmwareSigningCertificate"
3193 }
3194 Self::InvalidCsmsCertificate => "InvalidCsmsCertificate",
3195 Self::InvalidChargingStationCertificate => {
3196 "InvalidChargingStationCertificate"
3197 }
3198 Self::DiscardedRenewedClientCertificate => {
3199 "DiscardedRenewedClientCertificate"
3200 }
3201 Self::InvalidTLSVersion => "InvalidTLSVersion",
3202 Self::InvalidTLSCipherSuite => "InvalidTLSCipherSuite",
3203 Self::MaintenanceLoginAccepted => "MaintenanceLoginAccepted",
3204 Self::MaintenanceLoginFailed => "MaintenanceLoginFailed",
3205 }
3206 }
3207 pub fn from_wire(value: &str) -> Option<Self> {
3210 match value {
3211 "FirmwareUpdated" => Some(Self::FirmwareUpdated),
3212 "FailedToAuthenticateAtCsms" => Some(Self::FailedToAuthenticateAtCsms),
3213 "CsmsFailedToAuthenticate" => Some(Self::CsmsFailedToAuthenticate),
3214 "SettingSystemTime" => Some(Self::SettingSystemTime),
3215 "StartupOfTheDevice" => Some(Self::StartupOfTheDevice),
3216 "ResetOrReboot" => Some(Self::ResetOrReboot),
3217 "SecurityLogWasCleared" => Some(Self::SecurityLogWasCleared),
3218 "ReconfigurationOfSecurityParameters" => {
3219 Some(Self::ReconfigurationOfSecurityParameters)
3220 }
3221 "MemoryExhaustion" => Some(Self::MemoryExhaustion),
3222 "InvalidMessages" => Some(Self::InvalidMessages),
3223 "AttemptedReplayAttacks" => Some(Self::AttemptedReplayAttacks),
3224 "TamperDetectionActivated" => Some(Self::TamperDetectionActivated),
3225 "InvalidFirmwareSignature" => Some(Self::InvalidFirmwareSignature),
3226 "InvalidFirmwareSigningCertificate" => {
3227 Some(Self::InvalidFirmwareSigningCertificate)
3228 }
3229 "InvalidCsmsCertificate" => Some(Self::InvalidCsmsCertificate),
3230 "InvalidChargingStationCertificate" => {
3231 Some(Self::InvalidChargingStationCertificate)
3232 }
3233 "DiscardedRenewedClientCertificate" => {
3234 Some(Self::DiscardedRenewedClientCertificate)
3235 }
3236 "InvalidTLSVersion" => Some(Self::InvalidTLSVersion),
3237 "InvalidTLSCipherSuite" => Some(Self::InvalidTLSCipherSuite),
3238 "MaintenanceLoginAccepted" => Some(Self::MaintenanceLoginAccepted),
3239 "MaintenanceLoginFailed" => Some(Self::MaintenanceLoginFailed),
3240 _ => None,
3241 }
3242 }
3243 pub const fn is_critical(&self) -> bool {
3245 match self {
3246 Self::FirmwareUpdated => true,
3247 Self::FailedToAuthenticateAtCsms => false,
3248 Self::CsmsFailedToAuthenticate => false,
3249 Self::SettingSystemTime => true,
3250 Self::StartupOfTheDevice => true,
3251 Self::ResetOrReboot => true,
3252 Self::SecurityLogWasCleared => true,
3253 Self::ReconfigurationOfSecurityParameters => false,
3254 Self::MemoryExhaustion => true,
3255 Self::InvalidMessages => false,
3256 Self::AttemptedReplayAttacks => false,
3257 Self::TamperDetectionActivated => true,
3258 Self::InvalidFirmwareSignature => true,
3259 Self::InvalidFirmwareSigningCertificate => true,
3260 Self::InvalidCsmsCertificate => true,
3261 Self::InvalidChargingStationCertificate => true,
3262 Self::DiscardedRenewedClientCertificate => true,
3263 Self::InvalidTLSVersion => true,
3264 Self::InvalidTLSCipherSuite => true,
3265 Self::MaintenanceLoginAccepted => true,
3266 Self::MaintenanceLoginFailed => true,
3267 }
3268 }
3269}
3270impl core::fmt::Display for SecurityEvent {
3271 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3272 f.write_str(self.as_str())
3273 }
3274}
3275impl core::str::FromStr for SecurityEvent {
3276 type Err = UnknownValue;
3277 fn from_str(value: &str) -> Result<Self, Self::Err> {
3278 Self::from_wire(value).ok_or(UnknownValue)
3279 }
3280}
3281#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
3288#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3289pub enum ReasonCode {
3290 DuplicateProfile,
3294 InvalidProfile,
3298 InvalidProfileId,
3302 InvalidSchedule,
3306 InvalidStackLevel,
3310 InvalidOperationMode,
3314 NoFreqWattCurve,
3318 NoPhaseForDC,
3322 PhaseConflict,
3326 NoSignalWattCurve,
3330 RateLimitExceeded,
3334 UnsupportedKind,
3338 UnsupportedPurpose,
3342 UnsupportedRateUnit,
3346 CSNotAccepted,
3350 FixedCable,
3354 NoCable,
3358 UnknownConnectorId,
3362 UnknownConnectorType,
3366 UnknownEvse,
3370 BatterySoHLow,
3374 BatterySoC,
3378 BatteryDamaged,
3382 BatteryUnknown,
3386 BatteryType,
3390 NoBatteryAvailable,
3394 PriorityNetworkConf,
3398 InvalidConfSlot,
3402 InvalidNetworkConf,
3406 NoSecurityDowngrade,
3410 DuplicateRequestId,
3414 InvalidMessageSeq,
3418 MissingDevModelInfo,
3422 NoError,
3426 NotFound,
3430 Unspecified,
3434 UnsupportedRequest,
3438 FwUpdateInProgress,
3442 NotEnabled,
3446 ReadOnly,
3450 WriteOnly,
3454 InvalidCSR,
3458 InvalidCertificate,
3462 InvalidURL,
3466 RedirectNotAllowed,
3470 InternalError,
3474 OutOfMemory,
3478 OutOfStorage,
3482 InvalidIdToken,
3486 TxInProgress,
3490 TxNotFound,
3494 TxStarted,
3498 InvalidValue,
3502 MissingParam,
3506 TooLargeElement,
3510 TooManyElements,
3514 UnsupportedParam,
3518 ValueOutOfRange,
3522 ValuePositiveOnly,
3526 ValueTooHigh,
3530 ValueTooLow,
3534 ValueZeroNotAllowed,
3538}
3539impl ReasonCode {
3540 pub const ALL: &'static [Self] = &[
3542 Self::DuplicateProfile,
3543 Self::InvalidProfile,
3544 Self::InvalidProfileId,
3545 Self::InvalidSchedule,
3546 Self::InvalidStackLevel,
3547 Self::InvalidOperationMode,
3548 Self::NoFreqWattCurve,
3549 Self::NoPhaseForDC,
3550 Self::PhaseConflict,
3551 Self::NoSignalWattCurve,
3552 Self::RateLimitExceeded,
3553 Self::UnsupportedKind,
3554 Self::UnsupportedPurpose,
3555 Self::UnsupportedRateUnit,
3556 Self::CSNotAccepted,
3557 Self::FixedCable,
3558 Self::NoCable,
3559 Self::UnknownConnectorId,
3560 Self::UnknownConnectorType,
3561 Self::UnknownEvse,
3562 Self::BatterySoHLow,
3563 Self::BatterySoC,
3564 Self::BatteryDamaged,
3565 Self::BatteryUnknown,
3566 Self::BatteryType,
3567 Self::NoBatteryAvailable,
3568 Self::PriorityNetworkConf,
3569 Self::InvalidConfSlot,
3570 Self::InvalidNetworkConf,
3571 Self::NoSecurityDowngrade,
3572 Self::DuplicateRequestId,
3573 Self::InvalidMessageSeq,
3574 Self::MissingDevModelInfo,
3575 Self::NoError,
3576 Self::NotFound,
3577 Self::Unspecified,
3578 Self::UnsupportedRequest,
3579 Self::FwUpdateInProgress,
3580 Self::NotEnabled,
3581 Self::ReadOnly,
3582 Self::WriteOnly,
3583 Self::InvalidCSR,
3584 Self::InvalidCertificate,
3585 Self::InvalidURL,
3586 Self::RedirectNotAllowed,
3587 Self::InternalError,
3588 Self::OutOfMemory,
3589 Self::OutOfStorage,
3590 Self::InvalidIdToken,
3591 Self::TxInProgress,
3592 Self::TxNotFound,
3593 Self::TxStarted,
3594 Self::InvalidValue,
3595 Self::MissingParam,
3596 Self::TooLargeElement,
3597 Self::TooManyElements,
3598 Self::UnsupportedParam,
3599 Self::ValueOutOfRange,
3600 Self::ValuePositiveOnly,
3601 Self::ValueTooHigh,
3602 Self::ValueTooLow,
3603 Self::ValueZeroNotAllowed,
3604 ];
3605 pub const fn as_str(&self) -> &'static str {
3607 match self {
3608 Self::DuplicateProfile => "DuplicateProfile",
3609 Self::InvalidProfile => "InvalidProfile",
3610 Self::InvalidProfileId => "InvalidProfileId",
3611 Self::InvalidSchedule => "InvalidSchedule",
3612 Self::InvalidStackLevel => "InvalidStackLevel",
3613 Self::InvalidOperationMode => "InvalidOperationMode",
3614 Self::NoFreqWattCurve => "NoFreqWattCurve",
3615 Self::NoPhaseForDC => "NoPhaseForDC",
3616 Self::PhaseConflict => "PhaseConflict",
3617 Self::NoSignalWattCurve => "NoSignalWattCurve",
3618 Self::RateLimitExceeded => "RateLimitExceeded",
3619 Self::UnsupportedKind => "UnsupportedKind",
3620 Self::UnsupportedPurpose => "UnsupportedPurpose",
3621 Self::UnsupportedRateUnit => "UnsupportedRateUnit",
3622 Self::CSNotAccepted => "CSNotAccepted",
3623 Self::FixedCable => "FixedCable",
3624 Self::NoCable => "NoCable",
3625 Self::UnknownConnectorId => "UnknownConnectorId",
3626 Self::UnknownConnectorType => "UnknownConnectorType",
3627 Self::UnknownEvse => "UnknownEvse",
3628 Self::BatterySoHLow => "BatterySoHLow",
3629 Self::BatterySoC => "BatterySoC",
3630 Self::BatteryDamaged => "BatteryDamaged",
3631 Self::BatteryUnknown => "BatteryUnknown",
3632 Self::BatteryType => "BatteryType",
3633 Self::NoBatteryAvailable => "NoBatteryAvailable",
3634 Self::PriorityNetworkConf => "PriorityNetworkConf",
3635 Self::InvalidConfSlot => "InvalidConfSlot",
3636 Self::InvalidNetworkConf => "InvalidNetworkConf",
3637 Self::NoSecurityDowngrade => "NoSecurityDowngrade",
3638 Self::DuplicateRequestId => "DuplicateRequestId",
3639 Self::InvalidMessageSeq => "InvalidMessageSeq",
3640 Self::MissingDevModelInfo => "MissingDevModelInfo",
3641 Self::NoError => "NoError",
3642 Self::NotFound => "NotFound",
3643 Self::Unspecified => "Unspecified",
3644 Self::UnsupportedRequest => "UnsupportedRequest",
3645 Self::FwUpdateInProgress => "FwUpdateInProgress",
3646 Self::NotEnabled => "NotEnabled",
3647 Self::ReadOnly => "ReadOnly",
3648 Self::WriteOnly => "WriteOnly",
3649 Self::InvalidCSR => "InvalidCSR",
3650 Self::InvalidCertificate => "InvalidCertificate",
3651 Self::InvalidURL => "InvalidURL",
3652 Self::RedirectNotAllowed => "RedirectNotAllowed",
3653 Self::InternalError => "InternalError",
3654 Self::OutOfMemory => "OutOfMemory",
3655 Self::OutOfStorage => "OutOfStorage",
3656 Self::InvalidIdToken => "InvalidIdToken",
3657 Self::TxInProgress => "TxInProgress",
3658 Self::TxNotFound => "TxNotFound",
3659 Self::TxStarted => "TxStarted",
3660 Self::InvalidValue => "InvalidValue",
3661 Self::MissingParam => "MissingParam",
3662 Self::TooLargeElement => "TooLargeElement",
3663 Self::TooManyElements => "TooManyElements",
3664 Self::UnsupportedParam => "UnsupportedParam",
3665 Self::ValueOutOfRange => "ValueOutOfRange",
3666 Self::ValuePositiveOnly => "ValuePositiveOnly",
3667 Self::ValueTooHigh => "ValueTooHigh",
3668 Self::ValueTooLow => "ValueTooLow",
3669 Self::ValueZeroNotAllowed => "ValueZeroNotAllowed",
3670 }
3671 }
3672 pub fn from_wire(value: &str) -> Option<Self> {
3675 match value {
3676 "DuplicateProfile" => Some(Self::DuplicateProfile),
3677 "InvalidProfile" => Some(Self::InvalidProfile),
3678 "InvalidProfileId" => Some(Self::InvalidProfileId),
3679 "InvalidSchedule" => Some(Self::InvalidSchedule),
3680 "InvalidStackLevel" => Some(Self::InvalidStackLevel),
3681 "InvalidOperationMode" => Some(Self::InvalidOperationMode),
3682 "NoFreqWattCurve" => Some(Self::NoFreqWattCurve),
3683 "NoPhaseForDC" => Some(Self::NoPhaseForDC),
3684 "PhaseConflict" => Some(Self::PhaseConflict),
3685 "NoSignalWattCurve" => Some(Self::NoSignalWattCurve),
3686 "RateLimitExceeded" => Some(Self::RateLimitExceeded),
3687 "UnsupportedKind" => Some(Self::UnsupportedKind),
3688 "UnsupportedPurpose" => Some(Self::UnsupportedPurpose),
3689 "UnsupportedRateUnit" => Some(Self::UnsupportedRateUnit),
3690 "CSNotAccepted" => Some(Self::CSNotAccepted),
3691 "FixedCable" => Some(Self::FixedCable),
3692 "NoCable" => Some(Self::NoCable),
3693 "UnknownConnectorId" => Some(Self::UnknownConnectorId),
3694 "UnknownConnectorType" => Some(Self::UnknownConnectorType),
3695 "UnknownEvse" => Some(Self::UnknownEvse),
3696 "BatterySoHLow" => Some(Self::BatterySoHLow),
3697 "BatterySoC" => Some(Self::BatterySoC),
3698 "BatteryDamaged" => Some(Self::BatteryDamaged),
3699 "BatteryUnknown" => Some(Self::BatteryUnknown),
3700 "BatteryType" => Some(Self::BatteryType),
3701 "NoBatteryAvailable" => Some(Self::NoBatteryAvailable),
3702 "PriorityNetworkConf" => Some(Self::PriorityNetworkConf),
3703 "InvalidConfSlot" => Some(Self::InvalidConfSlot),
3704 "InvalidNetworkConf" => Some(Self::InvalidNetworkConf),
3705 "NoSecurityDowngrade" => Some(Self::NoSecurityDowngrade),
3706 "DuplicateRequestId" => Some(Self::DuplicateRequestId),
3707 "InvalidMessageSeq" => Some(Self::InvalidMessageSeq),
3708 "MissingDevModelInfo" => Some(Self::MissingDevModelInfo),
3709 "NoError" => Some(Self::NoError),
3710 "NotFound" => Some(Self::NotFound),
3711 "Unspecified" => Some(Self::Unspecified),
3712 "UnsupportedRequest" => Some(Self::UnsupportedRequest),
3713 "FwUpdateInProgress" => Some(Self::FwUpdateInProgress),
3714 "NotEnabled" => Some(Self::NotEnabled),
3715 "ReadOnly" => Some(Self::ReadOnly),
3716 "WriteOnly" => Some(Self::WriteOnly),
3717 "InvalidCSR" => Some(Self::InvalidCSR),
3718 "InvalidCertificate" => Some(Self::InvalidCertificate),
3719 "InvalidURL" => Some(Self::InvalidURL),
3720 "RedirectNotAllowed" => Some(Self::RedirectNotAllowed),
3721 "InternalError" => Some(Self::InternalError),
3722 "OutOfMemory" => Some(Self::OutOfMemory),
3723 "OutOfStorage" => Some(Self::OutOfStorage),
3724 "InvalidIdToken" => Some(Self::InvalidIdToken),
3725 "TxInProgress" => Some(Self::TxInProgress),
3726 "TxNotFound" => Some(Self::TxNotFound),
3727 "TxStarted" => Some(Self::TxStarted),
3728 "InvalidValue" => Some(Self::InvalidValue),
3729 "MissingParam" => Some(Self::MissingParam),
3730 "TooLargeElement" => Some(Self::TooLargeElement),
3731 "TooManyElements" => Some(Self::TooManyElements),
3732 "UnsupportedParam" => Some(Self::UnsupportedParam),
3733 "ValueOutOfRange" => Some(Self::ValueOutOfRange),
3734 "ValuePositiveOnly" => Some(Self::ValuePositiveOnly),
3735 "ValueTooHigh" => Some(Self::ValueTooHigh),
3736 "ValueTooLow" => Some(Self::ValueTooLow),
3737 "ValueZeroNotAllowed" => Some(Self::ValueZeroNotAllowed),
3738 _ => None,
3739 }
3740 }
3741 pub const fn typically_used_for(&self) -> Option<&'static str> {
3743 match self {
3744 Self::DuplicateProfile => Some("SetChargingProfile"),
3745 Self::InvalidProfile => Some("SetChargingProfile, RequestStartTransaction"),
3746 Self::InvalidProfileId => Some("SetChargingProfile, RequestStartTransaction"),
3747 Self::InvalidSchedule => Some("SetChargingProfile, RequestStartTransaction"),
3748 Self::InvalidStackLevel => Some("SetChargingProfile"),
3749 Self::InvalidOperationMode => Some("SetChargingProfile"),
3750 Self::NoFreqWattCurve => Some("SetChargingProfile"),
3751 Self::NoPhaseForDC => Some("SetChargingProfile"),
3752 Self::PhaseConflict => Some("SetChargingProfile"),
3753 Self::NoSignalWattCurve => Some("AFRRSignal"),
3754 Self::RateLimitExceeded => Some("SetChargingProfile"),
3755 Self::UnsupportedKind => Some("SetChargingProfile"),
3756 Self::UnsupportedPurpose => Some("SetChargingProfile"),
3757 Self::UnsupportedRateUnit => Some("SetChargingProfile"),
3758 Self::CSNotAccepted => {
3759 Some("RequestStartTransaction, RequestStopTransaction")
3760 }
3761 Self::FixedCable => Some("UnlockConnector"),
3762 Self::NoCable => Some("UnlockConnector"),
3763 Self::UnknownConnectorId => Some("ChangeAvailability, UnlockConnector"),
3764 Self::UnknownConnectorType => Some("ReserveNow"),
3765 Self::UnknownEvse => {
3766 Some("ChangeAvailability, ReserveNow, RequestStartTransaction")
3767 }
3768 Self::BatterySoHLow => Some("BatterySwap"),
3769 Self::BatterySoC => Some("BatterySwap"),
3770 Self::BatteryDamaged => Some("BatterySwap"),
3771 Self::BatteryUnknown => Some("BatterySwap"),
3772 Self::BatteryType => Some("BatterySwap"),
3773 Self::NoBatteryAvailable => Some("BatterySwap, RequestBatterySwap"),
3774 Self::PriorityNetworkConf => {
3775 Some("SetVariablesRequest of NetworkConfiguration")
3776 }
3777 Self::InvalidConfSlot => Some("SetNetworkProfileRequest"),
3778 Self::InvalidNetworkConf => {
3779 Some(
3780 "SetVariablesRequest of NetworkConfigurationPriority,SetNetworkProfileRequest",
3781 )
3782 }
3783 Self::NoSecurityDowngrade => {
3784 Some("SetVariablesRequest of SecurityProfile, SetNetworkProfileRequest")
3785 }
3786 Self::DuplicateRequestId => {
3787 Some("UpdateFirmware, PublishFirmware and requests for reports.")
3788 }
3789 Self::InvalidMessageSeq => {
3790 Some("(generic), SetChargingProfile with ISO15118")
3791 }
3792 Self::MissingDevModelInfo => Some("(generic)"),
3793 Self::NoError => Some("(generic)"),
3794 Self::NotFound => {
3795 Some(
3796 "ClearVariableMonitoring, CustomerInformation, GetChargingProfiles, GetDisplayMessages, GetInstalledCertificateIds, GetReport",
3797 )
3798 }
3799 Self::Unspecified => Some("(generic)"),
3800 Self::UnsupportedRequest => Some("(generic)"),
3801 Self::FwUpdateInProgress => Some("Reset"),
3802 Self::NotEnabled => Some("ClearCache"),
3803 Self::ReadOnly => Some("SetVariables"),
3804 Self::WriteOnly => Some("GetVariables"),
3805 Self::InvalidCSR => Some("SignCertificate"),
3806 Self::InvalidCertificate => Some("CertificateSigned, InstallCertificate"),
3807 Self::InvalidURL => Some("UpdateFirmware, PublishFirmware"),
3808 Self::RedirectNotAllowed => Some("LogStatusNotification"),
3809 Self::InternalError => Some("(generic)"),
3810 Self::OutOfMemory => Some("(generic)"),
3811 Self::OutOfStorage => Some("(generic)"),
3812 Self::InvalidIdToken => Some("RequestStartTransaction"),
3813 Self::TxInProgress => {
3814 Some("ChangeAvailability, Reset, RequestStartTransaction")
3815 }
3816 Self::TxNotFound => {
3817 Some("RequestStopTransaction, SetChargingProfile, GetVehicleCertificate")
3818 }
3819 Self::TxStarted => Some("RequestStartTransaction"),
3820 Self::InvalidValue => Some("(generic)"),
3821 Self::MissingParam => Some("(generic)"),
3822 Self::TooLargeElement => Some("CertificateSigned, InstallCertificate"),
3823 Self::TooManyElements => {
3824 Some("SetChargingProfile, SetVariables, SendLocalList")
3825 }
3826 Self::UnsupportedParam => Some("(generic)"),
3827 Self::ValueOutOfRange => Some("SetVariables, SetVariableMonitoring"),
3828 Self::ValuePositiveOnly => Some("(generic)"),
3829 Self::ValueTooHigh => Some("(generic)"),
3830 Self::ValueTooLow => Some("(generic)"),
3831 Self::ValueZeroNotAllowed => Some("(generic)"),
3832 }
3833 }
3834}
3835impl core::fmt::Display for ReasonCode {
3836 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3837 f.write_str(self.as_str())
3838 }
3839}
3840impl core::str::FromStr for ReasonCode {
3841 type Err = UnknownValue;
3842 fn from_str(value: &str) -> Result<Self, Self::Err> {
3843 Self::from_wire(value).ok_or(UnknownValue)
3844 }
3845}
3846#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
3855#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3856pub enum Unit {
3857 A,
3859 ASU,
3861 B,
3863 Celsius,
3865 #[cfg_attr(feature = "serde", serde(rename = "dB"))]
3867 DB,
3868 #[cfg_attr(feature = "serde", serde(rename = "dBm"))]
3870 DBm,
3871 Deg,
3873 Fahrenheit,
3875 Hz,
3877 #[cfg_attr(feature = "serde", serde(rename = "mHz"))]
3879 MHz,
3880 K,
3882 #[cfg_attr(feature = "serde", serde(rename = "lx"))]
3884 Lx,
3885 #[cfg_attr(feature = "serde", serde(rename = "m"))]
3887 M,
3888 #[cfg_attr(feature = "serde", serde(rename = "ms2"))]
3890 Ms2,
3891 N,
3893 Ohm,
3895 #[cfg_attr(feature = "serde", serde(rename = "kPa"))]
3897 KPa,
3898 Percent,
3900 RH,
3902 RPM,
3904 #[cfg_attr(feature = "serde", serde(rename = "s"))]
3906 S,
3907 V,
3909 VA,
3911 #[cfg_attr(feature = "serde", serde(rename = "kVA"))]
3913 KVA,
3914 VAh,
3916 #[cfg_attr(feature = "serde", serde(rename = "kVAh"))]
3918 KVAh,
3919 #[cfg_attr(feature = "serde", serde(rename = "var"))]
3921 Var,
3922 #[cfg_attr(feature = "serde", serde(rename = "kvar"))]
3924 Kvar,
3925 #[cfg_attr(feature = "serde", serde(rename = "varh"))]
3927 Varh,
3928 #[cfg_attr(feature = "serde", serde(rename = "kvarh"))]
3930 Kvarh,
3931 W,
3933 #[cfg_attr(feature = "serde", serde(rename = "kW"))]
3935 KW,
3936 Wh,
3938 #[cfg_attr(feature = "serde", serde(rename = "kWh"))]
3940 KWh,
3941}
3942impl Unit {
3943 pub const ALL: &'static [Self] = &[
3945 Self::A,
3946 Self::ASU,
3947 Self::B,
3948 Self::Celsius,
3949 Self::DB,
3950 Self::DBm,
3951 Self::Deg,
3952 Self::Fahrenheit,
3953 Self::Hz,
3954 Self::MHz,
3955 Self::K,
3956 Self::Lx,
3957 Self::M,
3958 Self::Ms2,
3959 Self::N,
3960 Self::Ohm,
3961 Self::KPa,
3962 Self::Percent,
3963 Self::RH,
3964 Self::RPM,
3965 Self::S,
3966 Self::V,
3967 Self::VA,
3968 Self::KVA,
3969 Self::VAh,
3970 Self::KVAh,
3971 Self::Var,
3972 Self::Kvar,
3973 Self::Varh,
3974 Self::Kvarh,
3975 Self::W,
3976 Self::KW,
3977 Self::Wh,
3978 Self::KWh,
3979 ];
3980 pub const fn as_str(&self) -> &'static str {
3982 match self {
3983 Self::A => "A",
3984 Self::ASU => "ASU",
3985 Self::B => "B",
3986 Self::Celsius => "Celsius",
3987 Self::DB => "dB",
3988 Self::DBm => "dBm",
3989 Self::Deg => "Deg",
3990 Self::Fahrenheit => "Fahrenheit",
3991 Self::Hz => "Hz",
3992 Self::MHz => "mHz",
3993 Self::K => "K",
3994 Self::Lx => "lx",
3995 Self::M => "m",
3996 Self::Ms2 => "ms2",
3997 Self::N => "N",
3998 Self::Ohm => "Ohm",
3999 Self::KPa => "kPa",
4000 Self::Percent => "Percent",
4001 Self::RH => "RH",
4002 Self::RPM => "RPM",
4003 Self::S => "s",
4004 Self::V => "V",
4005 Self::VA => "VA",
4006 Self::KVA => "kVA",
4007 Self::VAh => "VAh",
4008 Self::KVAh => "kVAh",
4009 Self::Var => "var",
4010 Self::Kvar => "kvar",
4011 Self::Varh => "varh",
4012 Self::Kvarh => "kvarh",
4013 Self::W => "W",
4014 Self::KW => "kW",
4015 Self::Wh => "Wh",
4016 Self::KWh => "kWh",
4017 }
4018 }
4019 pub fn from_wire(value: &str) -> Option<Self> {
4022 match value {
4023 "A" => Some(Self::A),
4024 "ASU" => Some(Self::ASU),
4025 "B" => Some(Self::B),
4026 "Celsius" => Some(Self::Celsius),
4027 "dB" => Some(Self::DB),
4028 "dBm" => Some(Self::DBm),
4029 "Deg" => Some(Self::Deg),
4030 "Fahrenheit" => Some(Self::Fahrenheit),
4031 "Hz" => Some(Self::Hz),
4032 "mHz" => Some(Self::MHz),
4033 "K" => Some(Self::K),
4034 "lx" => Some(Self::Lx),
4035 "m" => Some(Self::M),
4036 "ms2" => Some(Self::Ms2),
4037 "N" => Some(Self::N),
4038 "Ohm" => Some(Self::Ohm),
4039 "kPa" => Some(Self::KPa),
4040 "Percent" => Some(Self::Percent),
4041 "RH" => Some(Self::RH),
4042 "RPM" => Some(Self::RPM),
4043 "s" => Some(Self::S),
4044 "V" => Some(Self::V),
4045 "VA" => Some(Self::VA),
4046 "kVA" => Some(Self::KVA),
4047 "VAh" => Some(Self::VAh),
4048 "kVAh" => Some(Self::KVAh),
4049 "var" => Some(Self::Var),
4050 "kvar" => Some(Self::Kvar),
4051 "varh" => Some(Self::Varh),
4052 "kvarh" => Some(Self::Kvarh),
4053 "W" => Some(Self::W),
4054 "kW" => Some(Self::KW),
4055 "Wh" => Some(Self::Wh),
4056 "kWh" => Some(Self::KWh),
4057 _ => None,
4058 }
4059 }
4060}
4061impl core::fmt::Display for Unit {
4062 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4063 f.write_str(self.as_str())
4064 }
4065}
4066impl core::str::FromStr for Unit {
4067 type Err = UnknownValue;
4068 fn from_str(value: &str) -> Result<Self, Self::Err> {
4069 Self::from_wire(value).ok_or(UnknownValue)
4070 }
4071}
4072#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
4079#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4080pub enum ConnectorType {
4081 #[cfg_attr(feature = "serde", serde(rename = "bBatterySlot"))]
4083 BBatterySlot,
4084 #[cfg_attr(feature = "serde", serde(rename = "cCCS1"))]
4086 CCCS1,
4087 #[cfg_attr(feature = "serde", serde(rename = "cCCS2"))]
4089 CCCS2,
4090 #[cfg_attr(feature = "serde", serde(rename = "cChaoJi"))]
4092 CChaoJi,
4093 #[cfg_attr(feature = "serde", serde(rename = "cG105"))]
4095 CG105,
4096 #[cfg_attr(feature = "serde", serde(rename = "cGBT-DC"))]
4098 CGBTDC,
4099 #[cfg_attr(feature = "serde", serde(rename = "cLECCS"))]
4101 CLECCS,
4102 #[cfg_attr(feature = "serde", serde(rename = "cMCS"))]
4104 CMCS,
4105 #[cfg_attr(feature = "serde", serde(rename = "cNACS"))]
4107 CNACS,
4108 #[cfg_attr(feature = "serde", serde(rename = "cNACS-CCS1"))]
4110 CNACSCCS1,
4111 #[cfg_attr(feature = "serde", serde(rename = "cCCS1-NACS"))]
4113 CCCS1NACS,
4114 #[cfg_attr(feature = "serde", serde(rename = "cTesla"))]
4116 CTesla,
4117 #[cfg_attr(feature = "serde", serde(rename = "cType1"))]
4119 CType1,
4120 #[cfg_attr(feature = "serde", serde(rename = "cType2"))]
4122 CType2,
4123 #[cfg_attr(feature = "serde", serde(rename = "cUltraChaoJi"))]
4125 CUltraChaoJi,
4126 #[cfg_attr(feature = "serde", serde(rename = "s309-1P-16A"))]
4128 S3091P16A,
4129 #[cfg_attr(feature = "serde", serde(rename = "s309-1P-32A"))]
4131 S3091P32A,
4132 #[cfg_attr(feature = "serde", serde(rename = "s309-3P-16A"))]
4134 S3093P16A,
4135 #[cfg_attr(feature = "serde", serde(rename = "s309-3P-32A"))]
4137 S3093P32A,
4138 #[cfg_attr(feature = "serde", serde(rename = "sBS1361"))]
4140 SBS1361,
4141 #[cfg_attr(feature = "serde", serde(rename = "sCEE-7-7"))]
4143 SCEE77,
4144 #[cfg_attr(feature = "serde", serde(rename = "sType1"))]
4146 SType1,
4147 #[cfg_attr(feature = "serde", serde(rename = "sType2"))]
4149 SType2,
4150 #[cfg_attr(feature = "serde", serde(rename = "sType3"))]
4152 SType3,
4153 #[cfg_attr(feature = "serde", serde(rename = "wInductive"))]
4155 WInductive,
4156 #[cfg_attr(feature = "serde", serde(rename = "wResonant"))]
4158 WResonant,
4159 OppCharge,
4161 Other1PhMax16A,
4163 Other1PhOver16A,
4165 Other3Ph,
4167 Pan,
4169 Undetermined,
4171 Unknown,
4173}
4174impl ConnectorType {
4175 pub const ALL: &'static [Self] = &[
4177 Self::BBatterySlot,
4178 Self::CCCS1,
4179 Self::CCCS2,
4180 Self::CChaoJi,
4181 Self::CG105,
4182 Self::CGBTDC,
4183 Self::CLECCS,
4184 Self::CMCS,
4185 Self::CNACS,
4186 Self::CNACSCCS1,
4187 Self::CCCS1NACS,
4188 Self::CTesla,
4189 Self::CType1,
4190 Self::CType2,
4191 Self::CUltraChaoJi,
4192 Self::S3091P16A,
4193 Self::S3091P32A,
4194 Self::S3093P16A,
4195 Self::S3093P32A,
4196 Self::SBS1361,
4197 Self::SCEE77,
4198 Self::SType1,
4199 Self::SType2,
4200 Self::SType3,
4201 Self::WInductive,
4202 Self::WResonant,
4203 Self::OppCharge,
4204 Self::Other1PhMax16A,
4205 Self::Other1PhOver16A,
4206 Self::Other3Ph,
4207 Self::Pan,
4208 Self::Undetermined,
4209 Self::Unknown,
4210 ];
4211 pub const fn as_str(&self) -> &'static str {
4213 match self {
4214 Self::BBatterySlot => "bBatterySlot",
4215 Self::CCCS1 => "cCCS1",
4216 Self::CCCS2 => "cCCS2",
4217 Self::CChaoJi => "cChaoJi",
4218 Self::CG105 => "cG105",
4219 Self::CGBTDC => "cGBT-DC",
4220 Self::CLECCS => "cLECCS",
4221 Self::CMCS => "cMCS",
4222 Self::CNACS => "cNACS",
4223 Self::CNACSCCS1 => "cNACS-CCS1",
4224 Self::CCCS1NACS => "cCCS1-NACS",
4225 Self::CTesla => "cTesla",
4226 Self::CType1 => "cType1",
4227 Self::CType2 => "cType2",
4228 Self::CUltraChaoJi => "cUltraChaoJi",
4229 Self::S3091P16A => "s309-1P-16A",
4230 Self::S3091P32A => "s309-1P-32A",
4231 Self::S3093P16A => "s309-3P-16A",
4232 Self::S3093P32A => "s309-3P-32A",
4233 Self::SBS1361 => "sBS1361",
4234 Self::SCEE77 => "sCEE-7-7",
4235 Self::SType1 => "sType1",
4236 Self::SType2 => "sType2",
4237 Self::SType3 => "sType3",
4238 Self::WInductive => "wInductive",
4239 Self::WResonant => "wResonant",
4240 Self::OppCharge => "OppCharge",
4241 Self::Other1PhMax16A => "Other1PhMax16A",
4242 Self::Other1PhOver16A => "Other1PhOver16A",
4243 Self::Other3Ph => "Other3Ph",
4244 Self::Pan => "Pan",
4245 Self::Undetermined => "Undetermined",
4246 Self::Unknown => "Unknown",
4247 }
4248 }
4249 pub fn from_wire(value: &str) -> Option<Self> {
4252 match value {
4253 "bBatterySlot" => Some(Self::BBatterySlot),
4254 "cCCS1" => Some(Self::CCCS1),
4255 "cCCS2" => Some(Self::CCCS2),
4256 "cChaoJi" => Some(Self::CChaoJi),
4257 "cG105" => Some(Self::CG105),
4258 "cGBT-DC" => Some(Self::CGBTDC),
4259 "cLECCS" => Some(Self::CLECCS),
4260 "cMCS" => Some(Self::CMCS),
4261 "cNACS" => Some(Self::CNACS),
4262 "cNACS-CCS1" => Some(Self::CNACSCCS1),
4263 "cCCS1-NACS" => Some(Self::CCCS1NACS),
4264 "cTesla" => Some(Self::CTesla),
4265 "cType1" => Some(Self::CType1),
4266 "cType2" => Some(Self::CType2),
4267 "cUltraChaoJi" => Some(Self::CUltraChaoJi),
4268 "s309-1P-16A" => Some(Self::S3091P16A),
4269 "s309-1P-32A" => Some(Self::S3091P32A),
4270 "s309-3P-16A" => Some(Self::S3093P16A),
4271 "s309-3P-32A" => Some(Self::S3093P32A),
4272 "sBS1361" => Some(Self::SBS1361),
4273 "sCEE-7-7" => Some(Self::SCEE77),
4274 "sType1" => Some(Self::SType1),
4275 "sType2" => Some(Self::SType2),
4276 "sType3" => Some(Self::SType3),
4277 "wInductive" => Some(Self::WInductive),
4278 "wResonant" => Some(Self::WResonant),
4279 "OppCharge" => Some(Self::OppCharge),
4280 "Other1PhMax16A" => Some(Self::Other1PhMax16A),
4281 "Other1PhOver16A" => Some(Self::Other1PhOver16A),
4282 "Other3Ph" => Some(Self::Other3Ph),
4283 "Pan" => Some(Self::Pan),
4284 "Undetermined" => Some(Self::Undetermined),
4285 "Unknown" => Some(Self::Unknown),
4286 _ => None,
4287 }
4288 }
4289}
4290impl core::fmt::Display for ConnectorType {
4291 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4292 f.write_str(self.as_str())
4293 }
4294}
4295impl core::str::FromStr for ConnectorType {
4296 type Err = UnknownValue;
4297 fn from_str(value: &str) -> Result<Self, Self::Err> {
4298 Self::from_wire(value).ok_or(UnknownValue)
4299 }
4300}
4301#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
4310#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4311pub enum IdTokenType {
4312 Central,
4314 DirectPayment,
4316 #[cfg_attr(feature = "serde", serde(rename = "eMAID"))]
4318 EMAID,
4319 EVCCID,
4321 ISO14443,
4323 ISO15693,
4325 KeyCode,
4327 Local,
4329 MacAddress,
4331 NoAuthorization,
4333 VIN,
4335}
4336impl IdTokenType {
4337 pub const ALL: &'static [Self] = &[
4339 Self::Central,
4340 Self::DirectPayment,
4341 Self::EMAID,
4342 Self::EVCCID,
4343 Self::ISO14443,
4344 Self::ISO15693,
4345 Self::KeyCode,
4346 Self::Local,
4347 Self::MacAddress,
4348 Self::NoAuthorization,
4349 Self::VIN,
4350 ];
4351 pub const fn as_str(&self) -> &'static str {
4353 match self {
4354 Self::Central => "Central",
4355 Self::DirectPayment => "DirectPayment",
4356 Self::EMAID => "eMAID",
4357 Self::EVCCID => "EVCCID",
4358 Self::ISO14443 => "ISO14443",
4359 Self::ISO15693 => "ISO15693",
4360 Self::KeyCode => "KeyCode",
4361 Self::Local => "Local",
4362 Self::MacAddress => "MacAddress",
4363 Self::NoAuthorization => "NoAuthorization",
4364 Self::VIN => "VIN",
4365 }
4366 }
4367 pub fn from_wire(value: &str) -> Option<Self> {
4370 match value {
4371 "Central" => Some(Self::Central),
4372 "DirectPayment" => Some(Self::DirectPayment),
4373 "eMAID" => Some(Self::EMAID),
4374 "EVCCID" => Some(Self::EVCCID),
4375 "ISO14443" => Some(Self::ISO14443),
4376 "ISO15693" => Some(Self::ISO15693),
4377 "KeyCode" => Some(Self::KeyCode),
4378 "Local" => Some(Self::Local),
4379 "MacAddress" => Some(Self::MacAddress),
4380 "NoAuthorization" => Some(Self::NoAuthorization),
4381 "VIN" => Some(Self::VIN),
4382 _ => None,
4383 }
4384 }
4385}
4386impl core::fmt::Display for IdTokenType {
4387 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4388 f.write_str(self.as_str())
4389 }
4390}
4391impl core::str::FromStr for IdTokenType {
4392 type Err = UnknownValue;
4393 fn from_str(value: &str) -> Result<Self, Self::Err> {
4394 Self::from_wire(value).ok_or(UnknownValue)
4395 }
4396}
4397#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
4406#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4407pub enum ChargingLimitSource {
4408 EMS,
4410 Other,
4412 SO,
4414 CSO,
4416}
4417impl ChargingLimitSource {
4418 pub const ALL: &'static [Self] = &[Self::EMS, Self::Other, Self::SO, Self::CSO];
4420 pub const fn as_str(&self) -> &'static str {
4422 match self {
4423 Self::EMS => "EMS",
4424 Self::Other => "Other",
4425 Self::SO => "SO",
4426 Self::CSO => "CSO",
4427 }
4428 }
4429 pub fn from_wire(value: &str) -> Option<Self> {
4432 match value {
4433 "EMS" => Some(Self::EMS),
4434 "Other" => Some(Self::Other),
4435 "SO" => Some(Self::SO),
4436 "CSO" => Some(Self::CSO),
4437 _ => None,
4438 }
4439 }
4440}
4441impl core::fmt::Display for ChargingLimitSource {
4442 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4443 f.write_str(self.as_str())
4444 }
4445}
4446impl core::str::FromStr for ChargingLimitSource {
4447 type Err = UnknownValue;
4448 fn from_str(value: &str) -> Result<Self, Self::Err> {
4449 Self::from_wire(value).ok_or(UnknownValue)
4450 }
4451}
4452#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
4459#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4460pub enum PaymentBrand {
4461 AMEX,
4462 ApplePay,
4463 Bancontact,
4464 BankAxept,
4465 Carnet,
4466 CartesBancaires,
4467 Dankort,
4468 Diners,
4469 Discover,
4470 EftposAustralia,
4471 Elo,
4472 Girocard,
4473 GooglePay,
4474 Hipercard,
4475 Interac,
4476 JCB,
4477 Maestro,
4478 Mastercard,
4479 SamsungPay,
4480 UnionPay,
4481 VPay,
4482 Visa,
4483}
4484impl PaymentBrand {
4485 pub const ALL: &'static [Self] = &[
4487 Self::AMEX,
4488 Self::ApplePay,
4489 Self::Bancontact,
4490 Self::BankAxept,
4491 Self::Carnet,
4492 Self::CartesBancaires,
4493 Self::Dankort,
4494 Self::Diners,
4495 Self::Discover,
4496 Self::EftposAustralia,
4497 Self::Elo,
4498 Self::Girocard,
4499 Self::GooglePay,
4500 Self::Hipercard,
4501 Self::Interac,
4502 Self::JCB,
4503 Self::Maestro,
4504 Self::Mastercard,
4505 Self::SamsungPay,
4506 Self::UnionPay,
4507 Self::VPay,
4508 Self::Visa,
4509 ];
4510 pub const fn as_str(&self) -> &'static str {
4512 match self {
4513 Self::AMEX => "AMEX",
4514 Self::ApplePay => "ApplePay",
4515 Self::Bancontact => "Bancontact",
4516 Self::BankAxept => "BankAxept",
4517 Self::Carnet => "Carnet",
4518 Self::CartesBancaires => "CartesBancaires",
4519 Self::Dankort => "Dankort",
4520 Self::Diners => "Diners",
4521 Self::Discover => "Discover",
4522 Self::EftposAustralia => "EftposAustralia",
4523 Self::Elo => "Elo",
4524 Self::Girocard => "Girocard",
4525 Self::GooglePay => "GooglePay",
4526 Self::Hipercard => "Hipercard",
4527 Self::Interac => "Interac",
4528 Self::JCB => "JCB",
4529 Self::Maestro => "Maestro",
4530 Self::Mastercard => "Mastercard",
4531 Self::SamsungPay => "SamsungPay",
4532 Self::UnionPay => "UnionPay",
4533 Self::VPay => "VPay",
4534 Self::Visa => "Visa",
4535 }
4536 }
4537 pub fn from_wire(value: &str) -> Option<Self> {
4540 match value {
4541 "AMEX" => Some(Self::AMEX),
4542 "ApplePay" => Some(Self::ApplePay),
4543 "Bancontact" => Some(Self::Bancontact),
4544 "BankAxept" => Some(Self::BankAxept),
4545 "Carnet" => Some(Self::Carnet),
4546 "CartesBancaires" => Some(Self::CartesBancaires),
4547 "Dankort" => Some(Self::Dankort),
4548 "Diners" => Some(Self::Diners),
4549 "Discover" => Some(Self::Discover),
4550 "EftposAustralia" => Some(Self::EftposAustralia),
4551 "Elo" => Some(Self::Elo),
4552 "Girocard" => Some(Self::Girocard),
4553 "GooglePay" => Some(Self::GooglePay),
4554 "Hipercard" => Some(Self::Hipercard),
4555 "Interac" => Some(Self::Interac),
4556 "JCB" => Some(Self::JCB),
4557 "Maestro" => Some(Self::Maestro),
4558 "Mastercard" => Some(Self::Mastercard),
4559 "SamsungPay" => Some(Self::SamsungPay),
4560 "UnionPay" => Some(Self::UnionPay),
4561 "VPay" => Some(Self::VPay),
4562 "Visa" => Some(Self::Visa),
4563 _ => None,
4564 }
4565 }
4566}
4567impl core::fmt::Display for PaymentBrand {
4568 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4569 f.write_str(self.as_str())
4570 }
4571}
4572impl core::str::FromStr for PaymentBrand {
4573 type Err = UnknownValue;
4574 fn from_str(value: &str) -> Result<Self, Self::Err> {
4575 Self::from_wire(value).ok_or(UnknownValue)
4576 }
4577}
4578#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
4585#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4586pub enum PaymentRecognition {
4587 CC,
4589 Debit,
4591 Alipay,
4592 ApplePay,
4593 GooglePay,
4594 GrabPay,
4595 PayPal,
4596 SamsungPay,
4597 WeChatPay,
4598}
4599impl PaymentRecognition {
4600 pub const ALL: &'static [Self] = &[
4602 Self::CC,
4603 Self::Debit,
4604 Self::Alipay,
4605 Self::ApplePay,
4606 Self::GooglePay,
4607 Self::GrabPay,
4608 Self::PayPal,
4609 Self::SamsungPay,
4610 Self::WeChatPay,
4611 ];
4612 pub const fn as_str(&self) -> &'static str {
4614 match self {
4615 Self::CC => "CC",
4616 Self::Debit => "Debit",
4617 Self::Alipay => "Alipay",
4618 Self::ApplePay => "ApplePay",
4619 Self::GooglePay => "GooglePay",
4620 Self::GrabPay => "GrabPay",
4621 Self::PayPal => "PayPal",
4622 Self::SamsungPay => "SamsungPay",
4623 Self::WeChatPay => "WeChatPay",
4624 }
4625 }
4626 pub fn from_wire(value: &str) -> Option<Self> {
4629 match value {
4630 "CC" => Some(Self::CC),
4631 "Debit" => Some(Self::Debit),
4632 "Alipay" => Some(Self::Alipay),
4633 "ApplePay" => Some(Self::ApplePay),
4634 "GooglePay" => Some(Self::GooglePay),
4635 "GrabPay" => Some(Self::GrabPay),
4636 "PayPal" => Some(Self::PayPal),
4637 "SamsungPay" => Some(Self::SamsungPay),
4638 "WeChatPay" => Some(Self::WeChatPay),
4639 _ => None,
4640 }
4641 }
4642}
4643impl core::fmt::Display for PaymentRecognition {
4644 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4645 f.write_str(self.as_str())
4646 }
4647}
4648impl core::str::FromStr for PaymentRecognition {
4649 type Err = UnknownValue;
4650 fn from_str(value: &str) -> Result<Self, Self::Err> {
4651 Self::from_wire(value).ok_or(UnknownValue)
4652 }
4653}
4654#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
4661#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4662pub enum SigningMethod {
4663 #[cfg_attr(feature = "serde", serde(rename = "ECDSA-secp192k1-SHA256"))]
4664 ECDSAsecp192k1SHA256,
4665 #[cfg_attr(feature = "serde", serde(rename = "ECDSA-secp256k1-SHA256"))]
4666 ECDSAsecp256k1SHA256,
4667 #[cfg_attr(feature = "serde", serde(rename = "ECDSA-secp192r1-SHA256"))]
4668 ECDSAsecp192r1SHA256,
4669 #[cfg_attr(feature = "serde", serde(rename = "ECDSA-secp256r1-SHA256"))]
4670 ECDSAsecp256r1SHA256,
4671 #[cfg_attr(feature = "serde", serde(rename = "ECDSA-brainpool256r1-SHA256"))]
4672 ECDSAbrainpool256r1SHA256,
4673 #[cfg_attr(feature = "serde", serde(rename = "ECDSA-secp384r1-SHA256"))]
4674 ECDSAsecp384r1SHA256,
4675 #[cfg_attr(feature = "serde", serde(rename = "ECDSA-brainpool384r1-SHA256"))]
4676 ECDSAbrainpool384r1SHA256,
4677}
4678impl SigningMethod {
4679 pub const ALL: &'static [Self] = &[
4681 Self::ECDSAsecp192k1SHA256,
4682 Self::ECDSAsecp256k1SHA256,
4683 Self::ECDSAsecp192r1SHA256,
4684 Self::ECDSAsecp256r1SHA256,
4685 Self::ECDSAbrainpool256r1SHA256,
4686 Self::ECDSAsecp384r1SHA256,
4687 Self::ECDSAbrainpool384r1SHA256,
4688 ];
4689 pub const fn as_str(&self) -> &'static str {
4691 match self {
4692 Self::ECDSAsecp192k1SHA256 => "ECDSA-secp192k1-SHA256",
4693 Self::ECDSAsecp256k1SHA256 => "ECDSA-secp256k1-SHA256",
4694 Self::ECDSAsecp192r1SHA256 => "ECDSA-secp192r1-SHA256",
4695 Self::ECDSAsecp256r1SHA256 => "ECDSA-secp256r1-SHA256",
4696 Self::ECDSAbrainpool256r1SHA256 => "ECDSA-brainpool256r1-SHA256",
4697 Self::ECDSAsecp384r1SHA256 => "ECDSA-secp384r1-SHA256",
4698 Self::ECDSAbrainpool384r1SHA256 => "ECDSA-brainpool384r1-SHA256",
4699 }
4700 }
4701 pub fn from_wire(value: &str) -> Option<Self> {
4704 match value {
4705 "ECDSA-secp192k1-SHA256" => Some(Self::ECDSAsecp192k1SHA256),
4706 "ECDSA-secp256k1-SHA256" => Some(Self::ECDSAsecp256k1SHA256),
4707 "ECDSA-secp192r1-SHA256" => Some(Self::ECDSAsecp192r1SHA256),
4708 "ECDSA-secp256r1-SHA256" => Some(Self::ECDSAsecp256r1SHA256),
4709 "ECDSA-brainpool256r1-SHA256" => Some(Self::ECDSAbrainpool256r1SHA256),
4710 "ECDSA-secp384r1-SHA256" => Some(Self::ECDSAsecp384r1SHA256),
4711 "ECDSA-brainpool384r1-SHA256" => Some(Self::ECDSAbrainpool384r1SHA256),
4712 _ => None,
4713 }
4714 }
4715 pub const fn algorithm(&self) -> Option<&'static str> {
4717 match self {
4718 Self::ECDSAsecp192k1SHA256 => Some("ECDSA"),
4719 Self::ECDSAsecp256k1SHA256 => Some("ECDSA"),
4720 Self::ECDSAsecp192r1SHA256 => Some("ECDSA"),
4721 Self::ECDSAsecp256r1SHA256 => Some("ECDSA"),
4722 Self::ECDSAbrainpool256r1SHA256 => Some("ECDSA"),
4723 Self::ECDSAsecp384r1SHA256 => Some("ECDSA"),
4724 Self::ECDSAbrainpool384r1SHA256 => Some("ECDSA"),
4725 }
4726 }
4727 pub const fn curve(&self) -> Option<&'static str> {
4729 match self {
4730 Self::ECDSAsecp192k1SHA256 => Some("secp192k1"),
4731 Self::ECDSAsecp256k1SHA256 => Some("secp256k1"),
4732 Self::ECDSAsecp192r1SHA256 => Some("secp192r1"),
4733 Self::ECDSAsecp256r1SHA256 => Some("secp256r1"),
4734 Self::ECDSAbrainpool256r1SHA256 => Some("brainpool256r1"),
4735 Self::ECDSAsecp384r1SHA256 => Some("secp384r1"),
4736 Self::ECDSAbrainpool384r1SHA256 => Some("brainpool384r1"),
4737 }
4738 }
4739 pub const fn key_length(&self) -> Option<&'static str> {
4741 match self {
4742 Self::ECDSAsecp192k1SHA256 => Some("192 bits"),
4743 Self::ECDSAsecp256k1SHA256 => Some("256 bits"),
4744 Self::ECDSAsecp192r1SHA256 => Some("192 bits"),
4745 Self::ECDSAsecp256r1SHA256 => Some("256 bits"),
4746 Self::ECDSAbrainpool256r1SHA256 => Some("256 bits"),
4747 Self::ECDSAsecp384r1SHA256 => Some("384 bits"),
4748 Self::ECDSAbrainpool384r1SHA256 => Some("384 bits"),
4749 }
4750 }
4751 pub const fn hash_algorithm(&self) -> Option<&'static str> {
4753 match self {
4754 Self::ECDSAsecp192k1SHA256 => Some("SHA-256"),
4755 Self::ECDSAsecp256k1SHA256 => Some("SHA-256"),
4756 Self::ECDSAsecp192r1SHA256 => Some("SHA-256"),
4757 Self::ECDSAsecp256r1SHA256 => Some("SHA-256"),
4758 Self::ECDSAbrainpool256r1SHA256 => Some("SHA-256"),
4759 Self::ECDSAsecp384r1SHA256 => Some("SHA-256"),
4760 Self::ECDSAbrainpool384r1SHA256 => Some("SHA-256"),
4761 }
4762 }
4763}
4764impl core::fmt::Display for SigningMethod {
4765 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4766 f.write_str(self.as_str())
4767 }
4768}
4769impl core::str::FromStr for SigningMethod {
4770 type Err = UnknownValue;
4771 fn from_str(value: &str) -> Result<Self, Self::Err> {
4772 Self::from_wire(value).ok_or(UnknownValue)
4773 }
4774}
4775#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
4784#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4785pub enum AdditionalInfoType {
4786 EVCCID,
4788 ISO14443SubType,
4790 PspRef,
4792 SessionRef,
4794 MerchantRef,
4796 PaymentBrand,
4798 ReadingMethod,
4800 PaymentRecognition,
4802 CardBin,
4804 CardLast4Digits,
4806 CardExpiryDate,
4808 HashedCardNr,
4810 WalletUserId,
4812}
4813impl AdditionalInfoType {
4814 pub const ALL: &'static [Self] = &[
4816 Self::EVCCID,
4817 Self::ISO14443SubType,
4818 Self::PspRef,
4819 Self::SessionRef,
4820 Self::MerchantRef,
4821 Self::PaymentBrand,
4822 Self::ReadingMethod,
4823 Self::PaymentRecognition,
4824 Self::CardBin,
4825 Self::CardLast4Digits,
4826 Self::CardExpiryDate,
4827 Self::HashedCardNr,
4828 Self::WalletUserId,
4829 ];
4830 pub const fn as_str(&self) -> &'static str {
4832 match self {
4833 Self::EVCCID => "EVCCID",
4834 Self::ISO14443SubType => "ISO14443SubType",
4835 Self::PspRef => "PspRef",
4836 Self::SessionRef => "SessionRef",
4837 Self::MerchantRef => "MerchantRef",
4838 Self::PaymentBrand => "PaymentBrand",
4839 Self::ReadingMethod => "ReadingMethod",
4840 Self::PaymentRecognition => "PaymentRecognition",
4841 Self::CardBin => "CardBin",
4842 Self::CardLast4Digits => "CardLast4Digits",
4843 Self::CardExpiryDate => "CardExpiryDate",
4844 Self::HashedCardNr => "HashedCardNr",
4845 Self::WalletUserId => "WalletUserId",
4846 }
4847 }
4848 pub fn from_wire(value: &str) -> Option<Self> {
4851 match value {
4852 "EVCCID" => Some(Self::EVCCID),
4853 "ISO14443SubType" => Some(Self::ISO14443SubType),
4854 "PspRef" => Some(Self::PspRef),
4855 "SessionRef" => Some(Self::SessionRef),
4856 "MerchantRef" => Some(Self::MerchantRef),
4857 "PaymentBrand" => Some(Self::PaymentBrand),
4858 "ReadingMethod" => Some(Self::ReadingMethod),
4859 "PaymentRecognition" => Some(Self::PaymentRecognition),
4860 "CardBin" => Some(Self::CardBin),
4861 "CardLast4Digits" => Some(Self::CardLast4Digits),
4862 "CardExpiryDate" => Some(Self::CardExpiryDate),
4863 "HashedCardNr" => Some(Self::HashedCardNr),
4864 "WalletUserId" => Some(Self::WalletUserId),
4865 _ => None,
4866 }
4867 }
4868}
4869impl core::fmt::Display for AdditionalInfoType {
4870 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4871 f.write_str(self.as_str())
4872 }
4873}
4874impl core::str::FromStr for AdditionalInfoType {
4875 type Err = UnknownValue;
4876 fn from_str(value: &str) -> Result<Self, Self::Err> {
4877 Self::from_wire(value).ok_or(UnknownValue)
4878 }
4879}
4880#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4886pub struct DeviceModelEntry {
4887 pub component: Option<&'static str>,
4890 pub variable: &'static str,
4891 pub attributes: Option<&'static str>,
4897 pub instance: Option<&'static str>,
4900 pub required: Option<&'static str>,
4904 pub data_type: Option<&'static str>,
4905 pub unit: Option<&'static str>,
4906}
4907pub const DEVICE_MODEL: &[DeviceModelEntry] = &[
4909 DeviceModelEntry {
4910 component: None,
4911 variable: "ACCurrent",
4912 attributes: None,
4913 instance: None,
4914 required: Some("no"),
4915 data_type: Some("decimal"),
4916 unit: Some("A"),
4917 },
4918 DeviceModelEntry {
4919 component: None,
4920 variable: "Active",
4921 attributes: None,
4922 instance: None,
4923 required: Some("no"),
4924 data_type: Some("boolean"),
4925 unit: None,
4926 },
4927 DeviceModelEntry {
4928 component: None,
4929 variable: "ACVoltage",
4930 attributes: None,
4931 instance: None,
4932 required: Some("no"),
4933 data_type: Some("decimal"),
4934 unit: Some("V"),
4935 },
4936 DeviceModelEntry {
4937 component: None,
4938 variable: "AllowReset",
4939 attributes: None,
4940 instance: None,
4941 required: Some("no"),
4942 data_type: Some("boolean"),
4943 unit: None,
4944 },
4945 DeviceModelEntry {
4946 component: None,
4947 variable: "Angle",
4948 attributes: None,
4949 instance: None,
4950 required: Some("no"),
4951 data_type: Some("decimal"),
4952 unit: Some("Deg"),
4953 },
4954 DeviceModelEntry {
4955 component: None,
4956 variable: "Attempts",
4957 attributes: None,
4958 instance: None,
4959 required: Some("no"),
4960 data_type: Some("integer"),
4961 unit: None,
4962 },
4963 DeviceModelEntry {
4964 component: None,
4965 variable: "Available",
4966 attributes: None,
4967 instance: None,
4968 required: Some("no"),
4969 data_type: Some("boolean"),
4970 unit: None,
4971 },
4972 DeviceModelEntry {
4973 component: None,
4974 variable: "Certificate",
4975 attributes: None,
4976 instance: None,
4977 required: Some("no"),
4978 data_type: Some("string"),
4979 unit: None,
4980 },
4981 DeviceModelEntry {
4982 component: None,
4983 variable: "Color",
4984 attributes: None,
4985 instance: None,
4986 required: Some("no"),
4987 data_type: Some("string"),
4988 unit: None,
4989 },
4990 DeviceModelEntry {
4991 component: None,
4992 variable: "Complete",
4993 attributes: None,
4994 instance: None,
4995 required: Some("no"),
4996 data_type: Some("boolean"),
4997 unit: None,
4998 },
4999 DeviceModelEntry {
5000 component: None,
5001 variable: "ConnectedTime",
5002 attributes: None,
5003 instance: None,
5004 required: Some("no"),
5005 data_type: Some("decimal"),
5006 unit: Some("s"),
5007 },
5008 DeviceModelEntry {
5009 component: None,
5010 variable: "Count",
5011 attributes: None,
5012 instance: None,
5013 required: Some("no"),
5014 data_type: Some("integer"),
5015 unit: None,
5016 },
5017 DeviceModelEntry {
5018 component: None,
5019 variable: "CurrentImbalance",
5020 attributes: None,
5021 instance: None,
5022 required: Some("no"),
5023 data_type: Some("decimal"),
5024 unit: Some("Percent"),
5025 },
5026 DeviceModelEntry {
5027 component: None,
5028 variable: "DataText",
5029 attributes: None,
5030 instance: None,
5031 required: Some("no"),
5032 data_type: Some("string"),
5033 unit: None,
5034 },
5035 DeviceModelEntry {
5036 component: None,
5037 variable: "DateTime",
5038 attributes: None,
5039 instance: None,
5040 required: Some("no"),
5041 data_type: Some("dateTime"),
5042 unit: None,
5043 },
5044 DeviceModelEntry {
5045 component: None,
5046 variable: "DCCurrent",
5047 attributes: None,
5048 instance: None,
5049 required: Some("no"),
5050 data_type: Some("decimal"),
5051 unit: Some("A"),
5052 },
5053 DeviceModelEntry {
5054 component: None,
5055 variable: "DCVoltage",
5056 attributes: None,
5057 instance: None,
5058 required: Some("no"),
5059 data_type: Some("decimal"),
5060 unit: Some("V"),
5061 },
5062 DeviceModelEntry {
5063 component: None,
5064 variable: "ECVariant",
5065 attributes: None,
5066 instance: None,
5067 required: Some("no"),
5068 data_type: Some("string"),
5069 unit: None,
5070 },
5071 DeviceModelEntry {
5072 component: None,
5073 variable: "Enabled",
5074 attributes: None,
5075 instance: None,
5076 required: Some("no"),
5077 data_type: Some("boolean"),
5078 unit: None,
5079 },
5080 DeviceModelEntry {
5081 component: None,
5082 variable: "Energy",
5083 attributes: None,
5084 instance: None,
5085 required: Some("no"),
5086 data_type: Some("decimal"),
5087 unit: Some("Wh, kWh"),
5088 },
5089 DeviceModelEntry {
5090 component: None,
5091 variable: "Entries",
5092 attributes: None,
5093 instance: None,
5094 required: Some("no"),
5095 data_type: Some("integer"),
5096 unit: None,
5097 },
5098 DeviceModelEntry {
5099 component: None,
5100 variable: "Fallback",
5101 attributes: None,
5102 instance: None,
5103 required: Some("no"),
5104 data_type: Some("boolean"),
5105 unit: None,
5106 },
5107 DeviceModelEntry {
5108 component: None,
5109 variable: "FanSpeed",
5110 attributes: None,
5111 instance: None,
5112 required: Some("no"),
5113 data_type: Some("decimal"),
5114 unit: Some("RPM"),
5115 },
5116 DeviceModelEntry {
5117 component: None,
5118 variable: "FirmwareVersion",
5119 attributes: None,
5120 instance: None,
5121 required: Some("no"),
5122 data_type: Some("string"),
5123 unit: None,
5124 },
5125 DeviceModelEntry {
5126 component: None,
5127 variable: "Force",
5128 attributes: None,
5129 instance: None,
5130 required: Some("no"),
5131 data_type: Some("decimal"),
5132 unit: Some("N"),
5133 },
5134 DeviceModelEntry {
5135 component: None,
5136 variable: "Formats",
5137 attributes: None,
5138 instance: None,
5139 required: Some("no"),
5140 data_type: Some("MemberList"),
5141 unit: None,
5142 },
5143 DeviceModelEntry {
5144 component: None,
5145 variable: "Frequency",
5146 attributes: None,
5147 instance: None,
5148 required: Some("no"),
5149 data_type: Some("decimal"),
5150 unit: Some("Hz"),
5151 },
5152 DeviceModelEntry {
5153 component: None,
5154 variable: "FuseRating",
5155 attributes: None,
5156 instance: None,
5157 required: Some("no"),
5158 data_type: Some("decimal"),
5159 unit: Some("A"),
5160 },
5161 DeviceModelEntry {
5162 component: None,
5163 variable: "Height",
5164 attributes: None,
5165 instance: None,
5166 required: Some("no"),
5167 data_type: Some("decimal"),
5168 unit: Some("m"),
5169 },
5170 DeviceModelEntry {
5171 component: None,
5172 variable: "Humidity",
5173 attributes: None,
5174 instance: None,
5175 required: Some("no"),
5176 data_type: Some("decimal"),
5177 unit: Some("RH"),
5178 },
5179 DeviceModelEntry {
5180 component: None,
5181 variable: "Hysteresis",
5182 attributes: None,
5183 instance: None,
5184 required: Some("no"),
5185 data_type: Some("decimal"),
5186 unit: Some("Percent"),
5187 },
5188 DeviceModelEntry {
5189 component: None,
5190 variable: "ICCID",
5191 attributes: None,
5192 instance: None,
5193 required: Some("no"),
5194 data_type: Some("string"),
5195 unit: None,
5196 },
5197 DeviceModelEntry {
5198 component: None,
5199 variable: "Impedance",
5200 attributes: None,
5201 instance: None,
5202 required: Some("no"),
5203 data_type: Some("decimal"),
5204 unit: Some("Ohm"),
5205 },
5206 DeviceModelEntry {
5207 component: None,
5208 variable: "IMSI",
5209 attributes: None,
5210 instance: None,
5211 required: Some("no"),
5212 data_type: Some("string"),
5213 unit: None,
5214 },
5215 DeviceModelEntry {
5216 component: None,
5217 variable: "Interval",
5218 attributes: None,
5219 instance: None,
5220 required: Some("no"),
5221 data_type: Some("integer"),
5222 unit: Some("s"),
5223 },
5224 DeviceModelEntry {
5225 component: None,
5226 variable: "Length",
5227 attributes: None,
5228 instance: None,
5229 required: Some("no"),
5230 data_type: Some("decimal"),
5231 unit: Some("m"),
5232 },
5233 DeviceModelEntry {
5234 component: None,
5235 variable: "Light",
5236 attributes: None,
5237 instance: None,
5238 required: Some("no"),
5239 data_type: Some("decimal"),
5240 unit: Some("lx"),
5241 },
5242 DeviceModelEntry {
5243 component: None,
5244 variable: "Manufacturer",
5245 attributes: None,
5246 instance: None,
5247 required: Some("no"),
5248 data_type: Some("string"),
5249 unit: None,
5250 },
5251 DeviceModelEntry {
5252 component: None,
5253 variable: "Message",
5254 attributes: None,
5255 instance: None,
5256 required: Some("no"),
5257 data_type: Some("string"),
5258 unit: None,
5259 },
5260 DeviceModelEntry {
5261 component: None,
5262 variable: "MinimumStatusDuration",
5263 attributes: None,
5264 instance: None,
5265 required: Some("no"),
5266 data_type: Some("integer"),
5267 unit: Some("s"),
5268 },
5269 DeviceModelEntry {
5270 component: None,
5271 variable: "Mode",
5272 attributes: None,
5273 instance: None,
5274 required: Some("no"),
5275 data_type: Some("string"),
5276 unit: None,
5277 },
5278 DeviceModelEntry {
5279 component: None,
5280 variable: "Model",
5281 attributes: None,
5282 instance: None,
5283 required: Some("no"),
5284 data_type: Some("string"),
5285 unit: None,
5286 },
5287 DeviceModelEntry {
5288 component: None,
5289 variable: "NetworkAddress",
5290 attributes: None,
5291 instance: None,
5292 required: Some("no"),
5293 data_type: Some("string"),
5294 unit: None,
5295 },
5296 DeviceModelEntry {
5297 component: None,
5298 variable: "Operated",
5299 attributes: None,
5300 instance: None,
5301 required: Some("no"),
5302 data_type: Some("boolean"),
5303 unit: None,
5304 },
5305 DeviceModelEntry {
5306 component: None,
5307 variable: "OperatingTimes",
5308 attributes: None,
5309 instance: None,
5310 required: Some("no"),
5311 data_type: Some("string"),
5312 unit: None,
5313 },
5314 DeviceModelEntry {
5315 component: None,
5316 variable: "Overload",
5317 attributes: None,
5318 instance: None,
5319 required: Some("no"),
5320 data_type: Some("boolean"),
5321 unit: None,
5322 },
5323 DeviceModelEntry {
5324 component: None,
5325 variable: "Percent",
5326 attributes: None,
5327 instance: None,
5328 required: Some("no"),
5329 data_type: Some("decimal"),
5330 unit: Some("Percent"),
5331 },
5332 DeviceModelEntry {
5333 component: None,
5334 variable: "PhaseRotation",
5335 attributes: None,
5336 instance: None,
5337 required: Some("no"),
5338 data_type: Some("OptionList"),
5339 unit: None,
5340 },
5341 DeviceModelEntry {
5342 component: None,
5343 variable: "PostChargingTime",
5344 attributes: None,
5345 instance: None,
5346 required: Some("no"),
5347 data_type: Some("decimal"),
5348 unit: Some("s"),
5349 },
5350 DeviceModelEntry {
5351 component: None,
5352 variable: "Power",
5353 attributes: None,
5354 instance: None,
5355 required: Some("no"),
5356 data_type: Some("decimal"),
5357 unit: Some("W, kW"),
5358 },
5359 DeviceModelEntry {
5360 component: None,
5361 variable: "Problem",
5362 attributes: None,
5363 instance: None,
5364 required: Some("no"),
5365 data_type: Some("boolean"),
5366 unit: None,
5367 },
5368 DeviceModelEntry {
5369 component: None,
5370 variable: "Protecting",
5371 attributes: None,
5372 instance: None,
5373 required: Some("no"),
5374 data_type: Some("boolean"),
5375 unit: None,
5376 },
5377 DeviceModelEntry {
5378 component: None,
5379 variable: "SerialNumber",
5380 attributes: None,
5381 instance: None,
5382 required: Some("no"),
5383 data_type: Some("string"),
5384 unit: None,
5385 },
5386 DeviceModelEntry {
5387 component: None,
5388 variable: "SignalStrength",
5389 attributes: None,
5390 instance: None,
5391 required: Some("no"),
5392 data_type: Some("decimal"),
5393 unit: Some("dBm"),
5394 },
5395 DeviceModelEntry {
5396 component: None,
5397 variable: "State",
5398 attributes: None,
5399 instance: None,
5400 required: Some("no"),
5401 data_type: Some("string"),
5402 unit: None,
5403 },
5404 DeviceModelEntry {
5405 component: None,
5406 variable: "StateOfCharge",
5407 attributes: None,
5408 instance: None,
5409 required: Some("no"),
5410 data_type: Some("decimal"),
5411 unit: Some("Percent"),
5412 },
5413 DeviceModelEntry {
5414 component: None,
5415 variable: "Storage",
5416 attributes: None,
5417 instance: None,
5418 required: Some("no"),
5419 data_type: Some("integer"),
5420 unit: Some("B"),
5421 },
5422 DeviceModelEntry {
5423 component: None,
5424 variable: "SupplyPhases",
5425 attributes: None,
5426 instance: None,
5427 required: Some("no"),
5428 data_type: Some("integer"),
5429 unit: None,
5430 },
5431 DeviceModelEntry {
5432 component: None,
5433 variable: "Suspending",
5434 attributes: None,
5435 instance: None,
5436 required: Some("no"),
5437 data_type: Some("boolean"),
5438 unit: None,
5439 },
5440 DeviceModelEntry {
5441 component: None,
5442 variable: "Suspension",
5443 attributes: None,
5444 instance: None,
5445 required: Some("no"),
5446 data_type: Some("boolean"),
5447 unit: None,
5448 },
5449 DeviceModelEntry {
5450 component: None,
5451 variable: "Temperature",
5452 attributes: None,
5453 instance: None,
5454 required: Some("no"),
5455 data_type: Some("decimal"),
5456 unit: Some("Celsius, Fahrenheit"),
5457 },
5458 DeviceModelEntry {
5459 component: None,
5460 variable: "Time",
5461 attributes: None,
5462 instance: None,
5463 required: Some("no"),
5464 data_type: Some("dateTime"),
5465 unit: None,
5466 },
5467 DeviceModelEntry {
5468 component: None,
5469 variable: "Timeout",
5470 attributes: None,
5471 instance: None,
5472 required: Some("no"),
5473 data_type: Some("decimal"),
5474 unit: Some("s"),
5475 },
5476 DeviceModelEntry {
5477 component: None,
5478 variable: "Tries",
5479 attributes: None,
5480 instance: None,
5481 required: Some("no"),
5482 data_type: Some("integer"),
5483 unit: None,
5484 },
5485 DeviceModelEntry {
5486 component: None,
5487 variable: "Tripped",
5488 attributes: None,
5489 instance: None,
5490 required: Some("no"),
5491 data_type: Some("boolean"),
5492 unit: None,
5493 },
5494 DeviceModelEntry {
5495 component: None,
5496 variable: "VendorName",
5497 attributes: None,
5498 instance: None,
5499 required: Some("no"),
5500 data_type: Some("string"),
5501 unit: None,
5502 },
5503 DeviceModelEntry {
5504 component: None,
5505 variable: "VersionDate",
5506 attributes: None,
5507 instance: None,
5508 required: Some("no"),
5509 data_type: Some("dateTime"),
5510 unit: None,
5511 },
5512 DeviceModelEntry {
5513 component: None,
5514 variable: "VersionNumber",
5515 attributes: None,
5516 instance: None,
5517 required: Some("no"),
5518 data_type: Some("string"),
5519 unit: None,
5520 },
5521 DeviceModelEntry {
5522 component: None,
5523 variable: "VoltageImbalance",
5524 attributes: None,
5525 instance: None,
5526 required: Some("no"),
5527 data_type: Some("decimal"),
5528 unit: Some("Percent"),
5529 },
5530 DeviceModelEntry {
5531 component: None,
5532 variable: "CommunicationParent",
5533 attributes: None,
5534 instance: None,
5535 required: Some("no"),
5536 data_type: Some("string"),
5537 unit: None,
5538 },
5539 DeviceModelEntry {
5540 component: None,
5541 variable: "ElectricalParent",
5542 attributes: None,
5543 instance: None,
5544 required: Some("no"),
5545 data_type: Some("string"),
5546 unit: None,
5547 },
5548 DeviceModelEntry {
5549 component: None,
5550 variable: "LogicalParent",
5551 attributes: None,
5552 instance: None,
5553 required: Some("no"),
5554 data_type: Some("string"),
5555 unit: None,
5556 },
5557 DeviceModelEntry {
5558 component: None,
5559 variable: "PhysicalParent",
5560 attributes: None,
5561 instance: None,
5562 required: Some("no"),
5563 data_type: Some("string"),
5564 unit: None,
5565 },
5566 DeviceModelEntry {
5567 component: None,
5568 variable: "Label",
5569 attributes: None,
5570 instance: None,
5571 required: Some("no"),
5572 data_type: Some("string"),
5573 unit: None,
5574 },
5575 DeviceModelEntry {
5576 component: Some("AlignedDataCtrlr"),
5577 variable: "Available",
5578 attributes: None,
5579 instance: None,
5580 required: Some("no"),
5581 data_type: Some("boolean"),
5582 unit: None,
5583 },
5584 DeviceModelEntry {
5585 component: Some("AlignedDataCtrlr"),
5586 variable: "Enabled",
5587 attributes: None,
5588 instance: None,
5589 required: Some("no"),
5590 data_type: Some("boolean"),
5591 unit: None,
5592 },
5593 DeviceModelEntry {
5594 component: Some("AlignedDataCtrlr"),
5595 variable: "Interval",
5596 attributes: None,
5597 instance: None,
5598 required: Some("yes"),
5599 data_type: Some("integer"),
5600 unit: Some("s"),
5601 },
5602 DeviceModelEntry {
5603 component: Some("AlignedDataCtrlr"),
5604 variable: "Measurands",
5605 attributes: None,
5606 instance: None,
5607 required: Some("yes"),
5608 data_type: Some("MemberList"),
5609 unit: None,
5610 },
5611 DeviceModelEntry {
5612 component: Some("AlignedDataCtrlr"),
5613 variable: "SendDuringIdle",
5614 attributes: None,
5615 instance: None,
5616 required: Some("no"),
5617 data_type: Some("boolean"),
5618 unit: None,
5619 },
5620 DeviceModelEntry {
5621 component: Some("AlignedDataCtrlr"),
5622 variable: "SignReadings",
5623 attributes: None,
5624 instance: None,
5625 required: Some("no"),
5626 data_type: Some("boolean"),
5627 unit: None,
5628 },
5629 DeviceModelEntry {
5630 component: Some("AlignedDataCtrlr"),
5631 variable: "SignUpdatedReadings",
5632 attributes: None,
5633 instance: None,
5634 required: Some("no"),
5635 data_type: Some("boolean"),
5636 unit: None,
5637 },
5638 DeviceModelEntry {
5639 component: Some("AlignedDataCtrlr"),
5640 variable: "TxEndedInterval",
5641 attributes: None,
5642 instance: None,
5643 required: Some("yes"),
5644 data_type: Some("integer"),
5645 unit: Some("s"),
5646 },
5647 DeviceModelEntry {
5648 component: Some("AlignedDataCtrlr"),
5649 variable: "TxEndedMeasurands",
5650 attributes: None,
5651 instance: None,
5652 required: Some("yes"),
5653 data_type: Some("MemberList"),
5654 unit: None,
5655 },
5656 DeviceModelEntry {
5657 component: Some("AlignedDataCtrlr"),
5658 variable: "UpstreamInterval",
5659 attributes: None,
5660 instance: None,
5661 required: Some("no"),
5662 data_type: Some("integer"),
5663 unit: Some("s"),
5664 },
5665 DeviceModelEntry {
5666 component: Some("AlignedDataCtrlr"),
5667 variable: "UpstreamMeasurands",
5668 attributes: None,
5669 instance: None,
5670 required: Some("no"),
5671 data_type: Some("MemberList"),
5672 unit: None,
5673 },
5674 DeviceModelEntry {
5675 component: Some("AuthCacheCtrlr"),
5676 variable: "Available",
5677 attributes: None,
5678 instance: None,
5679 required: Some("no"),
5680 data_type: Some("boolean"),
5681 unit: None,
5682 },
5683 DeviceModelEntry {
5684 component: Some("AuthCacheCtrlr"),
5685 variable: "Enabled",
5686 attributes: None,
5687 instance: None,
5688 required: Some("no"),
5689 data_type: Some("boolean"),
5690 unit: None,
5691 },
5692 DeviceModelEntry {
5693 component: Some("AuthCacheCtrlr"),
5694 variable: "LifeTime",
5695 attributes: None,
5696 instance: None,
5697 required: Some("no"),
5698 data_type: Some("integer"),
5699 unit: None,
5700 },
5701 DeviceModelEntry {
5702 component: Some("AuthCacheCtrlr"),
5703 variable: "Policy",
5704 attributes: None,
5705 instance: None,
5706 required: Some("no"),
5707 data_type: Some("OptionList"),
5708 unit: None,
5709 },
5710 DeviceModelEntry {
5711 component: Some("AuthCacheCtrlr"),
5712 variable: "Storage",
5713 attributes: None,
5714 instance: None,
5715 required: Some("no"),
5716 data_type: Some("integer"),
5717 unit: Some("B"),
5718 },
5719 DeviceModelEntry {
5720 component: Some("AuthCacheCtrlr"),
5721 variable: "DisablePostAuthorize",
5722 attributes: None,
5723 instance: None,
5724 required: Some("no"),
5725 data_type: Some("boolean"),
5726 unit: None,
5727 },
5728 DeviceModelEntry {
5729 component: Some("AuthCtrlr"),
5730 variable: "AdditionalInfoItemsPerMessage",
5731 attributes: None,
5732 instance: None,
5733 required: Some("no"),
5734 data_type: Some("integer"),
5735 unit: None,
5736 },
5737 DeviceModelEntry {
5738 component: Some("AuthCtrlr"),
5739 variable: "AuthorizeRemoteStart",
5740 attributes: None,
5741 instance: None,
5742 required: Some("yes"),
5743 data_type: Some("boolean"),
5744 unit: None,
5745 },
5746 DeviceModelEntry {
5747 component: Some("AuthCtrlr"),
5748 variable: "Enabled",
5749 attributes: None,
5750 instance: None,
5751 required: Some("no"),
5752 data_type: Some("boolean"),
5753 unit: None,
5754 },
5755 DeviceModelEntry {
5756 component: Some("AuthCtrlr"),
5757 variable: "LocalAuthorizeOffline",
5758 attributes: None,
5759 instance: None,
5760 required: Some("yes"),
5761 data_type: Some("boolean"),
5762 unit: None,
5763 },
5764 DeviceModelEntry {
5765 component: Some("AuthCtrlr"),
5766 variable: "LocalPreAuthorize",
5767 attributes: None,
5768 instance: None,
5769 required: Some("yes"),
5770 data_type: Some("boolean"),
5771 unit: None,
5772 },
5773 DeviceModelEntry {
5774 component: Some("AuthCtrlr"),
5775 variable: "MasterPassGroupId",
5776 attributes: None,
5777 instance: None,
5778 required: Some("no"),
5779 data_type: Some("string"),
5780 unit: None,
5781 },
5782 DeviceModelEntry {
5783 component: Some("AuthCtrlr"),
5784 variable: "OfflineTxForUnknownIdEnabled",
5785 attributes: None,
5786 instance: None,
5787 required: Some("no"),
5788 data_type: Some("boolean"),
5789 unit: None,
5790 },
5791 DeviceModelEntry {
5792 component: Some("AuthCtrlr"),
5793 variable: "DisableRemoteAuthorization",
5794 attributes: None,
5795 instance: None,
5796 required: Some("no"),
5797 data_type: Some("boolean"),
5798 unit: None,
5799 },
5800 DeviceModelEntry {
5801 component: Some("AuthCtrlr"),
5802 variable: "SupportedIdTokenType",
5803 attributes: None,
5804 instance: None,
5805 required: Some("no"),
5806 data_type: Some("MemberList"),
5807 unit: None,
5808 },
5809 DeviceModelEntry {
5810 component: Some("CHAdeMOCtrlr"),
5811 variable: "SelftestActive",
5812 attributes: None,
5813 instance: None,
5814 required: Some("no"),
5815 data_type: Some("boolean"),
5816 unit: None,
5817 },
5818 DeviceModelEntry {
5819 component: Some("CHAdeMOCtrlr"),
5820 variable: "CHAdeMOProtocolNumber",
5821 attributes: None,
5822 instance: None,
5823 required: Some("no"),
5824 data_type: Some("integer"),
5825 unit: None,
5826 },
5827 DeviceModelEntry {
5828 component: Some("CHAdeMOCtrlr"),
5829 variable: "VehicleStatus",
5830 attributes: None,
5831 instance: None,
5832 required: Some("no"),
5833 data_type: Some("boolean"),
5834 unit: None,
5835 },
5836 DeviceModelEntry {
5837 component: Some("CHAdeMOCtrlr"),
5838 variable: "DynamicControl",
5839 attributes: None,
5840 instance: None,
5841 required: Some("no"),
5842 data_type: Some("boolean"),
5843 unit: None,
5844 },
5845 DeviceModelEntry {
5846 component: Some("CHAdeMOCtrlr"),
5847 variable: "HighCurrentControl",
5848 attributes: None,
5849 instance: None,
5850 required: Some("no"),
5851 data_type: Some("boolean"),
5852 unit: None,
5853 },
5854 DeviceModelEntry {
5855 component: Some("CHAdeMOCtrlr"),
5856 variable: "HighVoltageControl",
5857 attributes: None,
5858 instance: None,
5859 required: Some("no"),
5860 data_type: Some("boolean"),
5861 unit: None,
5862 },
5863 DeviceModelEntry {
5864 component: Some("CHAdeMOCtrlr"),
5865 variable: "AutoManufacturerCode",
5866 attributes: None,
5867 instance: None,
5868 required: Some("no"),
5869 data_type: Some("integer"),
5870 unit: None,
5871 },
5872 DeviceModelEntry {
5873 component: Some("ChargingStation"),
5874 variable: "AllowNewSessionsPendingFirmwareUpdate",
5875 attributes: None,
5876 instance: None,
5877 required: Some("no"),
5878 data_type: Some("boolean"),
5879 unit: None,
5880 },
5881 DeviceModelEntry {
5882 component: Some("ChargingStation"),
5883 variable: "AvailabilityState",
5884 attributes: None,
5885 instance: None,
5886 required: Some("yes"),
5887 data_type: Some("OptionList"),
5888 unit: None,
5889 },
5890 DeviceModelEntry {
5891 component: Some("ChargingStation"),
5892 variable: "Available",
5893 attributes: None,
5894 instance: None,
5895 required: Some("yes"),
5896 data_type: Some("boolean"),
5897 unit: None,
5898 },
5899 DeviceModelEntry {
5900 component: Some("ChargingStation"),
5901 variable: "Model",
5902 attributes: None,
5903 instance: None,
5904 required: Some("no"),
5905 data_type: Some("string"),
5906 unit: None,
5907 },
5908 DeviceModelEntry {
5909 component: Some("ChargingStation"),
5910 variable: "SupplyPhases",
5911 attributes: None,
5912 instance: None,
5913 required: Some("yes"),
5914 data_type: Some("integer"),
5915 unit: None,
5916 },
5917 DeviceModelEntry {
5918 component: Some("ChargingStation"),
5919 variable: "VendorName",
5920 attributes: None,
5921 instance: None,
5922 required: Some("no"),
5923 data_type: Some("string"),
5924 unit: None,
5925 },
5926 DeviceModelEntry {
5927 component: Some("ChargingStation"),
5928 variable: "ActiveTransactionId",
5929 attributes: None,
5930 instance: None,
5931 required: Some("no"),
5932 data_type: Some("string"),
5933 unit: None,
5934 },
5935 DeviceModelEntry {
5936 component: Some("ClockCtrlr"),
5937 variable: "DateTime",
5938 attributes: None,
5939 instance: None,
5940 required: Some("yes"),
5941 data_type: Some("dateTime"),
5942 unit: None,
5943 },
5944 DeviceModelEntry {
5945 component: Some("ClockCtrlr"),
5946 variable: "NextTimeOffsetTransitionDateTime",
5947 attributes: None,
5948 instance: None,
5949 required: Some("no"),
5950 data_type: Some("dateTime"),
5951 unit: None,
5952 },
5953 DeviceModelEntry {
5954 component: Some("ClockCtrlr"),
5955 variable: "NtpServerUri",
5956 attributes: None,
5957 instance: None,
5958 required: Some("no"),
5959 data_type: Some("string"),
5960 unit: None,
5961 },
5962 DeviceModelEntry {
5963 component: Some("ClockCtrlr"),
5964 variable: "NtpSource",
5965 attributes: None,
5966 instance: None,
5967 required: Some("no"),
5968 data_type: Some("OptionList"),
5969 unit: None,
5970 },
5971 DeviceModelEntry {
5972 component: Some("ClockCtrlr"),
5973 variable: "TimeAdjustmentReportingThreshold",
5974 attributes: None,
5975 instance: None,
5976 required: Some("no"),
5977 data_type: Some("integer"),
5978 unit: None,
5979 },
5980 DeviceModelEntry {
5981 component: Some("ClockCtrlr"),
5982 variable: "TimeOffset",
5983 attributes: None,
5984 instance: None,
5985 required: Some("no"),
5986 data_type: Some("string"),
5987 unit: None,
5988 },
5989 DeviceModelEntry {
5990 component: Some("ClockCtrlr"),
5991 variable: "TimeSource",
5992 attributes: None,
5993 instance: None,
5994 required: Some("yes"),
5995 data_type: Some("SequenceList"),
5996 unit: None,
5997 },
5998 DeviceModelEntry {
5999 component: Some("ClockCtrlr"),
6000 variable: "TimeZone",
6001 attributes: None,
6002 instance: None,
6003 required: Some("no"),
6004 data_type: Some("string"),
6005 unit: None,
6006 },
6007 DeviceModelEntry {
6008 component: Some("ConnectedEV"),
6009 variable: "ProtocolAgreed",
6010 attributes: None,
6011 instance: None,
6012 required: Some("V2X"),
6013 data_type: Some("string"),
6014 unit: None,
6015 },
6016 DeviceModelEntry {
6017 component: Some("ConnectedEV"),
6018 variable: "ProtocolSupportedByEV",
6019 attributes: None,
6020 instance: Some("<Priority>"),
6021 required: Some("V2X"),
6022 data_type: Some("string"),
6023 unit: None,
6024 },
6025 DeviceModelEntry {
6026 component: Some("ConnectedEV"),
6027 variable: "VehicleID",
6028 attributes: None,
6029 instance: None,
6030 required: Some("V2X"),
6031 data_type: Some("string"),
6032 unit: None,
6033 },
6034 DeviceModelEntry {
6035 component: Some("ConnectedEV"),
6036 variable: "VehicleCertificate",
6037 attributes: None,
6038 instance: Some("Leaf"),
6039 required: Some("V2X"),
6040 data_type: Some("string"),
6041 unit: None,
6042 },
6043 DeviceModelEntry {
6044 component: Some("ConnectedEV"),
6045 variable: "VehicleCertificate",
6046 attributes: None,
6047 instance: Some("SubCA1"),
6048 required: Some("V2X"),
6049 data_type: Some("string"),
6050 unit: None,
6051 },
6052 DeviceModelEntry {
6053 component: Some("ConnectedEV"),
6054 variable: "VehicleCertificate",
6055 attributes: None,
6056 instance: Some("SubCA2"),
6057 required: Some("V2X"),
6058 data_type: Some("string"),
6059 unit: None,
6060 },
6061 DeviceModelEntry {
6062 component: Some("ConnectedEV"),
6063 variable: "VehicleCertificate",
6064 attributes: None,
6065 instance: Some("Root"),
6066 required: Some("V2X"),
6067 data_type: Some("string"),
6068 unit: None,
6069 },
6070 DeviceModelEntry {
6071 component: Some("ConnectedEV"),
6072 variable: "ACCurrent",
6073 attributes: Some("Min/MaxSet"),
6074 instance: None,
6075 required: Some("no"),
6076 data_type: Some("decimal"),
6077 unit: Some("A"),
6078 },
6079 DeviceModelEntry {
6080 component: Some("ConnectedEV"),
6081 variable: "DCCurrent",
6082 attributes: Some("Min/MaxSet"),
6083 instance: None,
6084 required: Some("no"),
6085 data_type: Some("decimal"),
6086 unit: Some("A"),
6087 },
6088 DeviceModelEntry {
6089 component: Some("ConnectedEV"),
6090 variable: "DCCurrent",
6091 attributes: Some("Target"),
6092 instance: None,
6093 required: Some("no"),
6094 data_type: Some("decimal"),
6095 unit: Some("V"),
6096 },
6097 DeviceModelEntry {
6098 component: Some("ConnectedEV"),
6099 variable: "DCVoltage",
6100 attributes: Some("Min/MaxSet"),
6101 instance: None,
6102 required: Some("no"),
6103 data_type: Some("decimal"),
6104 unit: Some("V"),
6105 },
6106 DeviceModelEntry {
6107 component: Some("ConnectedEV"),
6108 variable: "DCVoltage",
6109 attributes: Some("Target"),
6110 instance: None,
6111 required: Some("no"),
6112 data_type: Some("decimal"),
6113 unit: Some("V"),
6114 },
6115 DeviceModelEntry {
6116 component: Some("ConnectedEV"),
6117 variable: "Power",
6118 attributes: Some("MaxSet"),
6119 instance: None,
6120 required: Some("no"),
6121 data_type: Some("decimal"),
6122 unit: Some("W"),
6123 },
6124 DeviceModelEntry {
6125 component: Some("ConnectedEV"),
6126 variable: "DischargePower",
6127 attributes: Some("MaxSet"),
6128 instance: None,
6129 required: Some("no"),
6130 data_type: Some("decimal"),
6131 unit: Some("W"),
6132 },
6133 DeviceModelEntry {
6134 component: Some("ConnectedEV"),
6135 variable: "EnergyImport",
6136 attributes: Some("MaxSet"),
6137 instance: None,
6138 required: Some("no"),
6139 data_type: Some("decimal"),
6140 unit: Some("Wh"),
6141 },
6142 DeviceModelEntry {
6143 component: Some("ConnectedEV"),
6144 variable: "EnergyImport",
6145 attributes: Some("MinSet"),
6146 instance: None,
6147 required: Some("no"),
6148 data_type: Some("decimal"),
6149 unit: Some("Wh"),
6150 },
6151 DeviceModelEntry {
6152 component: Some("ConnectedEV"),
6153 variable: "EnergyImport",
6154 attributes: Some("Target"),
6155 instance: None,
6156 required: Some("no"),
6157 data_type: Some("decimal"),
6158 unit: Some("Wh"),
6159 },
6160 DeviceModelEntry {
6161 component: Some("ConnectedEV"),
6162 variable: "BatteryCapacity",
6163 attributes: None,
6164 instance: None,
6165 required: Some("no"),
6166 data_type: Some("decimal"),
6167 unit: Some("Wh"),
6168 },
6169 DeviceModelEntry {
6170 component: Some("ConnectedEV"),
6171 variable: "DepartureTime",
6172 attributes: None,
6173 instance: None,
6174 required: Some("no"),
6175 data_type: Some("DateTime"),
6176 unit: None,
6177 },
6178 DeviceModelEntry {
6179 component: Some("ConnectedEV"),
6180 variable: "RemainingTimeBulk",
6181 attributes: None,
6182 instance: None,
6183 required: Some("no"),
6184 data_type: Some("integer"),
6185 unit: Some("s"),
6186 },
6187 DeviceModelEntry {
6188 component: Some("ConnectedEV"),
6189 variable: "RemainingTimeFull",
6190 attributes: None,
6191 instance: None,
6192 required: Some("no"),
6193 data_type: Some("integer"),
6194 unit: Some("s"),
6195 },
6196 DeviceModelEntry {
6197 component: Some("ConnectedEV"),
6198 variable: "StateOfChargeBulk",
6199 attributes: None,
6200 instance: None,
6201 required: Some("no"),
6202 data_type: Some("integer"),
6203 unit: Some("%"),
6204 },
6205 DeviceModelEntry {
6206 component: Some("ConnectedEV"),
6207 variable: "StateOfCharge",
6208 attributes: Some("MaxSet"),
6209 instance: None,
6210 required: Some("no"),
6211 data_type: Some("integer"),
6212 unit: Some("%"),
6213 },
6214 DeviceModelEntry {
6215 component: Some("ConnectedEV"),
6216 variable: "StateOfCharge",
6217 attributes: None,
6218 instance: None,
6219 required: Some("no"),
6220 data_type: Some("integer"),
6221 unit: Some("%"),
6222 },
6223 DeviceModelEntry {
6224 component: Some("ConnectedEV"),
6225 variable: "ChargingCompleteBulk",
6226 attributes: None,
6227 instance: None,
6228 required: Some("no"),
6229 data_type: Some("boolean"),
6230 unit: None,
6231 },
6232 DeviceModelEntry {
6233 component: Some("ConnectedEV"),
6234 variable: "ChargingCompleteFull",
6235 attributes: None,
6236 instance: None,
6237 required: Some("no"),
6238 data_type: Some("boolean"),
6239 unit: None,
6240 },
6241 DeviceModelEntry {
6242 component: Some("ConnectedEV"),
6243 variable: "ChargingState",
6244 attributes: None,
6245 instance: None,
6246 required: Some("no"),
6247 data_type: Some("OptionList"),
6248 unit: None,
6249 },
6250 DeviceModelEntry {
6251 component: Some("Connector"),
6252 variable: "AvailabilityState",
6253 attributes: None,
6254 instance: None,
6255 required: Some("no"),
6256 data_type: Some("OptionList"),
6257 unit: None,
6258 },
6259 DeviceModelEntry {
6260 component: Some("Connector"),
6261 variable: "Available",
6262 attributes: None,
6263 instance: None,
6264 required: Some("yes"),
6265 data_type: Some("boolean"),
6266 unit: None,
6267 },
6268 DeviceModelEntry {
6269 component: Some("Connector"),
6270 variable: "ChargeProtocol",
6271 attributes: None,
6272 instance: None,
6273 required: Some("no"),
6274 data_type: Some("string"),
6275 unit: None,
6276 },
6277 DeviceModelEntry {
6278 component: Some("Connector"),
6279 variable: "ConnectorType",
6280 attributes: None,
6281 instance: None,
6282 required: Some("yes"),
6283 data_type: Some("string"),
6284 unit: None,
6285 },
6286 DeviceModelEntry {
6287 component: Some("Connector"),
6288 variable: "SupplyPhases",
6289 attributes: None,
6290 instance: None,
6291 required: Some("yes"),
6292 data_type: Some("integer"),
6293 unit: None,
6294 },
6295 DeviceModelEntry {
6296 component: Some("Connector"),
6297 variable: "SlotStatus",
6298 attributes: None,
6299 instance: None,
6300 required: Some("no"),
6301 data_type: Some("OptionList"),
6302 unit: None,
6303 },
6304 DeviceModelEntry {
6305 component: Some("CPPWMController"),
6306 variable: "State",
6307 attributes: None,
6308 instance: None,
6309 required: Some("no"),
6310 data_type: Some("string"),
6311 unit: None,
6312 },
6313 DeviceModelEntry {
6314 component: Some("CustomizationCtrlr"),
6315 variable: "CustomImplementationEnabled",
6316 attributes: None,
6317 instance: Some("<vendorId>"),
6318 required: Some("no"),
6319 data_type: Some("boolean"),
6320 unit: None,
6321 },
6322 DeviceModelEntry {
6323 component: Some("CustomizationCtrlr"),
6324 variable: "CustomTriggers",
6325 attributes: None,
6326 instance: None,
6327 required: Some("no"),
6328 data_type: Some("MemberList"),
6329 unit: None,
6330 },
6331 DeviceModelEntry {
6332 component: Some("DeviceDataCtrlr"),
6333 variable: "BytesPerMessage",
6334 attributes: None,
6335 instance: Some("GetReport"),
6336 required: Some("yes"),
6337 data_type: Some("integer"),
6338 unit: None,
6339 },
6340 DeviceModelEntry {
6341 component: Some("DeviceDataCtrlr"),
6342 variable: "BytesPerMessage",
6343 attributes: None,
6344 instance: Some("GetVariables"),
6345 required: Some("yes"),
6346 data_type: Some("integer"),
6347 unit: None,
6348 },
6349 DeviceModelEntry {
6350 component: Some("DeviceDataCtrlr"),
6351 variable: "BytesPerMessage",
6352 attributes: None,
6353 instance: Some("SetVariables"),
6354 required: Some("yes"),
6355 data_type: Some("integer"),
6356 unit: None,
6357 },
6358 DeviceModelEntry {
6359 component: Some("DeviceDataCtrlr"),
6360 variable: "ConfigurationValueSize",
6361 attributes: None,
6362 instance: None,
6363 required: Some("no"),
6364 data_type: Some("integer"),
6365 unit: None,
6366 },
6367 DeviceModelEntry {
6368 component: Some("DeviceDataCtrlr"),
6369 variable: "ItemsPerMessage",
6370 attributes: None,
6371 instance: Some("GetReport"),
6372 required: Some("yes"),
6373 data_type: Some("integer"),
6374 unit: None,
6375 },
6376 DeviceModelEntry {
6377 component: Some("DeviceDataCtrlr"),
6378 variable: "ItemsPerMessage",
6379 attributes: None,
6380 instance: Some("GetVariables"),
6381 required: Some("yes"),
6382 data_type: Some("integer"),
6383 unit: None,
6384 },
6385 DeviceModelEntry {
6386 component: Some("DeviceDataCtrlr"),
6387 variable: "ItemsPerMessage",
6388 attributes: None,
6389 instance: Some("SetVariables"),
6390 required: Some("yes"),
6391 data_type: Some("integer"),
6392 unit: None,
6393 },
6394 DeviceModelEntry {
6395 component: Some("DeviceDataCtrlr"),
6396 variable: "ReportingValueSize",
6397 attributes: None,
6398 instance: None,
6399 required: Some("no"),
6400 data_type: Some("integer"),
6401 unit: None,
6402 },
6403 DeviceModelEntry {
6404 component: Some("DeviceDataCtrlr"),
6405 variable: "ValueSize",
6406 attributes: None,
6407 instance: None,
6408 required: Some("no"),
6409 data_type: Some("integer"),
6410 unit: None,
6411 },
6412 DeviceModelEntry {
6413 component: Some("DisplayMessageCtrlr"),
6414 variable: "Available",
6415 attributes: None,
6416 instance: None,
6417 required: Some("no"),
6418 data_type: Some("boolean"),
6419 unit: None,
6420 },
6421 DeviceModelEntry {
6422 component: Some("DisplayMessageCtrlr"),
6423 variable: "DisplayMessages",
6424 attributes: None,
6425 instance: None,
6426 required: Some("yes"),
6427 data_type: Some("integer"),
6428 unit: None,
6429 },
6430 DeviceModelEntry {
6431 component: Some("DisplayMessageCtrlr"),
6432 variable: "Enabled",
6433 attributes: None,
6434 instance: None,
6435 required: Some("no"),
6436 data_type: Some("boolean"),
6437 unit: None,
6438 },
6439 DeviceModelEntry {
6440 component: Some("DisplayMessageCtrlr"),
6441 variable: "SupportedStates",
6442 attributes: None,
6443 instance: None,
6444 required: Some("yes"),
6445 data_type: Some("MemberList"),
6446 unit: None,
6447 },
6448 DeviceModelEntry {
6449 component: Some("DisplayMessageCtrlr"),
6450 variable: "SupportedFormats",
6451 attributes: None,
6452 instance: None,
6453 required: Some("yes"),
6454 data_type: Some("MemberList"),
6455 unit: None,
6456 },
6457 DeviceModelEntry {
6458 component: Some("DisplayMessageCtrlr"),
6459 variable: "SupportedPriorities",
6460 attributes: None,
6461 instance: None,
6462 required: Some("yes"),
6463 data_type: Some("MemberList"),
6464 unit: None,
6465 },
6466 DeviceModelEntry {
6467 component: Some("DisplayMessageCtrlr"),
6468 variable: "Language",
6469 attributes: None,
6470 instance: None,
6471 required: Some("yes"),
6472 data_type: Some("OptionList"),
6473 unit: None,
6474 },
6475 DeviceModelEntry {
6476 component: Some("EVSE"),
6477 variable: "AllowReset",
6478 attributes: None,
6479 instance: None,
6480 required: Some("no"),
6481 data_type: Some("boolean"),
6482 unit: None,
6483 },
6484 DeviceModelEntry {
6485 component: Some("EVSE"),
6486 variable: "AvailabilityState",
6487 attributes: None,
6488 instance: None,
6489 required: Some("yes"),
6490 data_type: Some("OptionList"),
6491 unit: None,
6492 },
6493 DeviceModelEntry {
6494 component: Some("EVSE"),
6495 variable: "Available",
6496 attributes: None,
6497 instance: None,
6498 required: Some("yes"),
6499 data_type: Some("boolean"),
6500 unit: None,
6501 },
6502 DeviceModelEntry {
6503 component: Some("EVSE"),
6504 variable: "EvseId",
6505 attributes: None,
6506 instance: None,
6507 required: Some("no"),
6508 data_type: Some("string"),
6509 unit: None,
6510 },
6511 DeviceModelEntry {
6512 component: Some("EVSE"),
6513 variable: "Power",
6514 attributes: None,
6515 instance: None,
6516 required: Some("yes"),
6517 data_type: Some("decimal"),
6518 unit: Some("W, kW"),
6519 },
6520 DeviceModelEntry {
6521 component: Some("EVSE"),
6522 variable: "DischargePower",
6523 attributes: None,
6524 instance: None,
6525 required: Some("V2X"),
6526 data_type: Some("decimal"),
6527 unit: Some("W, kW"),
6528 },
6529 DeviceModelEntry {
6530 component: Some("EVSE"),
6531 variable: "SupplyPhases",
6532 attributes: None,
6533 instance: None,
6534 required: Some("yes"),
6535 data_type: Some("integer"),
6536 unit: None,
6537 },
6538 DeviceModelEntry {
6539 component: Some("EVSE"),
6540 variable: "DCInputPhaseControl",
6541 attributes: None,
6542 instance: None,
6543 required: Some("no"),
6544 data_type: Some("boolean"),
6545 unit: None,
6546 },
6547 DeviceModelEntry {
6548 component: Some("EVSE"),
6549 variable: "ISO15118EvseId",
6550 attributes: None,
6551 instance: None,
6552 required: Some("no"),
6553 data_type: Some("string"),
6554 unit: None,
6555 },
6556 DeviceModelEntry {
6557 component: Some("EVSE"),
6558 variable: "ChargingState",
6559 attributes: None,
6560 instance: None,
6561 required: Some("no"),
6562 data_type: Some("OptionList"),
6563 unit: None,
6564 },
6565 DeviceModelEntry {
6566 component: Some("EVSE"),
6567 variable: "ActiveTransactionId",
6568 attributes: None,
6569 instance: None,
6570 required: Some("no"),
6571 data_type: Some("string"),
6572 unit: None,
6573 },
6574 DeviceModelEntry {
6575 component: Some("FiscalMetering"),
6576 variable: "EnergyExport",
6577 attributes: None,
6578 instance: None,
6579 required: Some("no"),
6580 data_type: Some("decimal"),
6581 unit: Some("Wh, kWh"),
6582 },
6583 DeviceModelEntry {
6584 component: Some("FiscalMetering"),
6585 variable: "EnergyExportRegister",
6586 attributes: None,
6587 instance: None,
6588 required: Some("no"),
6589 data_type: Some("decimal"),
6590 unit: Some("Wh, kWh"),
6591 },
6592 DeviceModelEntry {
6593 component: Some("FiscalMetering"),
6594 variable: "EnergyImport",
6595 attributes: None,
6596 instance: None,
6597 required: Some("no"),
6598 data_type: Some("decimal"),
6599 unit: Some("Wh, kWh"),
6600 },
6601 DeviceModelEntry {
6602 component: Some("FiscalMetering"),
6603 variable: "EnergyImportRegister",
6604 attributes: None,
6605 instance: None,
6606 required: Some("no"),
6607 data_type: Some("decimal"),
6608 unit: Some("Wh, kWh"),
6609 },
6610 DeviceModelEntry {
6611 component: Some("FiscalMetering"),
6612 variable: "PublicKey",
6613 attributes: None,
6614 instance: None,
6615 required: Some("no"),
6616 data_type: Some("string"),
6617 unit: None,
6618 },
6619 DeviceModelEntry {
6620 component: Some("ISO15118Ctrlr"),
6621 variable: "CentralContractValidationAllowed",
6622 attributes: None,
6623 instance: None,
6624 required: Some("no"),
6625 data_type: Some("boolean"),
6626 unit: None,
6627 },
6628 DeviceModelEntry {
6629 component: Some("ISO15118Ctrlr"),
6630 variable: "ContractValidationOffline",
6631 attributes: None,
6632 instance: None,
6633 required: Some("yes"),
6634 data_type: Some("boolean"),
6635 unit: None,
6636 },
6637 DeviceModelEntry {
6638 component: Some("ISO15118Ctrlr"),
6639 variable: "SeccId",
6640 attributes: None,
6641 instance: None,
6642 required: Some("no"),
6643 data_type: Some("string"),
6644 unit: None,
6645 },
6646 DeviceModelEntry {
6647 component: Some("ISO15118Ctrlr"),
6648 variable: "MaxScheduleEntries",
6649 attributes: None,
6650 instance: None,
6651 required: Some("no"),
6652 data_type: Some("integer"),
6653 unit: None,
6654 },
6655 DeviceModelEntry {
6656 component: Some("ISO15118Ctrlr"),
6657 variable: "RequestedEnergyTransferMode",
6658 attributes: None,
6659 instance: None,
6660 required: Some("no"),
6661 data_type: Some("OptionList"),
6662 unit: None,
6663 },
6664 DeviceModelEntry {
6665 component: Some("ISO15118Ctrlr"),
6666 variable: "RequestMeteringReceipt",
6667 attributes: None,
6668 instance: None,
6669 required: Some("no"),
6670 data_type: Some("boolean"),
6671 unit: None,
6672 },
6673 DeviceModelEntry {
6674 component: Some("ISO15118Ctrlr"),
6675 variable: "CountryName",
6676 attributes: None,
6677 instance: None,
6678 required: Some("no"),
6679 data_type: Some("string"),
6680 unit: None,
6681 },
6682 DeviceModelEntry {
6683 component: Some("ISO15118Ctrlr"),
6684 variable: "OrganizationName",
6685 attributes: None,
6686 instance: None,
6687 required: Some("no"),
6688 data_type: Some("string"),
6689 unit: None,
6690 },
6691 DeviceModelEntry {
6692 component: Some("ISO15118Ctrlr"),
6693 variable: "PnCEnabled",
6694 attributes: None,
6695 instance: None,
6696 required: Some("no"),
6697 data_type: Some("boolean"),
6698 unit: None,
6699 },
6700 DeviceModelEntry {
6701 component: Some("ISO15118Ctrlr"),
6702 variable: "V2GCertificateInstallationEnabled",
6703 attributes: None,
6704 instance: None,
6705 required: Some("no"),
6706 data_type: Some("boolean"),
6707 unit: None,
6708 },
6709 DeviceModelEntry {
6710 component: Some("ISO15118Ctrlr"),
6711 variable: "ContractCertificateInstallationEnabled",
6712 attributes: None,
6713 instance: None,
6714 required: Some("no"),
6715 data_type: Some("boolean"),
6716 unit: None,
6717 },
6718 DeviceModelEntry {
6719 component: Some("ISO15118Ctrlr"),
6720 variable: "CertificateStatusSource",
6721 attributes: None,
6722 instance: None,
6723 required: Some("no"),
6724 data_type: Some("MemberList"),
6725 unit: None,
6726 },
6727 DeviceModelEntry {
6728 component: Some("ISO15118Ctrlr"),
6729 variable: "NotificationDelay",
6730 attributes: None,
6731 instance: None,
6732 required: Some("no"),
6733 data_type: Some("integer"),
6734 unit: Some("s"),
6735 },
6736 DeviceModelEntry {
6737 component: Some("ISO15118Ctrlr"),
6738 variable: "ServiceRenegotiationSupport",
6739 attributes: None,
6740 instance: None,
6741 required: Some("no"),
6742 data_type: Some("boolean"),
6743 unit: None,
6744 },
6745 DeviceModelEntry {
6746 component: Some("ISO15118Ctrlr"),
6747 variable: "SupportedProviders",
6748 attributes: None,
6749 instance: None,
6750 required: Some("no"),
6751 data_type: Some("string"),
6752 unit: None,
6753 },
6754 DeviceModelEntry {
6755 component: Some("ISO15118Ctrlr"),
6756 variable: "MaxPriceElements",
6757 attributes: None,
6758 instance: None,
6759 required: Some("no"),
6760 data_type: Some("integer"),
6761 unit: None,
6762 },
6763 DeviceModelEntry {
6764 component: Some("ISO15118Ctrlr"),
6765 variable: "ProtocolSupported",
6766 attributes: None,
6767 instance: Some("1, 2 .. 20"),
6768 required: Some("no"),
6769 data_type: Some("string"),
6770 unit: None,
6771 },
6772 DeviceModelEntry {
6773 component: Some("LocalAuthListCtrlr"),
6774 variable: "Available",
6775 attributes: None,
6776 instance: None,
6777 required: Some("no"),
6778 data_type: Some("boolean"),
6779 unit: None,
6780 },
6781 DeviceModelEntry {
6782 component: Some("LocalAuthListCtrlr"),
6783 variable: "BytesPerMessage",
6784 attributes: None,
6785 instance: None,
6786 required: Some("yes"),
6787 data_type: Some("integer"),
6788 unit: None,
6789 },
6790 DeviceModelEntry {
6791 component: Some("LocalAuthListCtrlr"),
6792 variable: "Enabled",
6793 attributes: None,
6794 instance: None,
6795 required: Some("no"),
6796 data_type: Some("boolean"),
6797 unit: None,
6798 },
6799 DeviceModelEntry {
6800 component: Some("LocalAuthListCtrlr"),
6801 variable: "Entries",
6802 attributes: None,
6803 instance: None,
6804 required: Some("yes"),
6805 data_type: Some("integer"),
6806 unit: None,
6807 },
6808 DeviceModelEntry {
6809 component: Some("LocalAuthListCtrlr"),
6810 variable: "ItemsPerMessage",
6811 attributes: None,
6812 instance: None,
6813 required: Some("yes"),
6814 data_type: Some("integer"),
6815 unit: None,
6816 },
6817 DeviceModelEntry {
6818 component: Some("LocalAuthListCtrlr"),
6819 variable: "Storage",
6820 attributes: None,
6821 instance: None,
6822 required: Some("no"),
6823 data_type: Some("integer"),
6824 unit: Some("B"),
6825 },
6826 DeviceModelEntry {
6827 component: Some("LocalAuthListCtrlr"),
6828 variable: "DisablePostAuthorize",
6829 attributes: None,
6830 instance: None,
6831 required: Some("no"),
6832 data_type: Some("boolean"),
6833 unit: None,
6834 },
6835 DeviceModelEntry {
6836 component: Some("LocalAuthListCtrlr"),
6837 variable: "SupportsExpiryDateTime",
6838 attributes: None,
6839 instance: None,
6840 required: Some("no"),
6841 data_type: Some("boolean"),
6842 unit: None,
6843 },
6844 DeviceModelEntry {
6845 component: Some("LocalEnergyStorage"),
6846 variable: "Capacity",
6847 attributes: None,
6848 instance: None,
6849 required: Some("no"),
6850 data_type: Some("decimal"),
6851 unit: Some("Wh"),
6852 },
6853 DeviceModelEntry {
6854 component: Some("MonitoringCtrlr"),
6855 variable: "Available",
6856 attributes: None,
6857 instance: None,
6858 required: Some("no"),
6859 data_type: Some("boolean"),
6860 unit: None,
6861 },
6862 DeviceModelEntry {
6863 component: Some("MonitoringCtrlr"),
6864 variable: "BytesPerMessage",
6865 attributes: None,
6866 instance: Some("ClearVariableMonitoring"),
6867 required: Some("no"),
6868 data_type: Some("integer"),
6869 unit: None,
6870 },
6871 DeviceModelEntry {
6872 component: Some("MonitoringCtrlr"),
6873 variable: "BytesPerMessage",
6874 attributes: None,
6875 instance: Some("SetVariableMonitoring"),
6876 required: Some("yes"),
6877 data_type: Some("integer"),
6878 unit: None,
6879 },
6880 DeviceModelEntry {
6881 component: Some("MonitoringCtrlr"),
6882 variable: "Enabled",
6883 attributes: None,
6884 instance: None,
6885 required: Some("no"),
6886 data_type: Some("boolean"),
6887 unit: None,
6888 },
6889 DeviceModelEntry {
6890 component: Some("MonitoringCtrlr"),
6891 variable: "ItemsPerMessage",
6892 attributes: None,
6893 instance: Some("ClearVariableMonitoring"),
6894 required: Some("no"),
6895 data_type: Some("integer"),
6896 unit: None,
6897 },
6898 DeviceModelEntry {
6899 component: Some("MonitoringCtrlr"),
6900 variable: "ItemsPerMessage",
6901 attributes: None,
6902 instance: Some("SetVariableMonitoring"),
6903 required: Some("yes"),
6904 data_type: Some("integer"),
6905 unit: None,
6906 },
6907 DeviceModelEntry {
6908 component: Some("MonitoringCtrlr"),
6909 variable: "OfflineQueuingSeverity",
6910 attributes: None,
6911 instance: None,
6912 required: Some("no"),
6913 data_type: Some("integer"),
6914 unit: None,
6915 },
6916 DeviceModelEntry {
6917 component: Some("MonitoringCtrlr"),
6918 variable: "MonitoringBase",
6919 attributes: None,
6920 instance: None,
6921 required: Some("no"),
6922 data_type: Some("OptionList"),
6923 unit: None,
6924 },
6925 DeviceModelEntry {
6926 component: Some("MonitoringCtrlr"),
6927 variable: "MonitoringLevel",
6928 attributes: None,
6929 instance: None,
6930 required: Some("no"),
6931 data_type: Some("integer"),
6932 unit: None,
6933 },
6934 DeviceModelEntry {
6935 component: Some("MonitoringCtrlr"),
6936 variable: "ActiveMonitoringBase",
6937 attributes: None,
6938 instance: None,
6939 required: Some("no"),
6940 data_type: Some("OptionList"),
6941 unit: None,
6942 },
6943 DeviceModelEntry {
6944 component: Some("MonitoringCtrlr"),
6945 variable: "ActiveMonitoringLevel",
6946 attributes: None,
6947 instance: None,
6948 required: Some("no"),
6949 data_type: Some("integer"),
6950 unit: None,
6951 },
6952 DeviceModelEntry {
6953 component: Some("MonitoringCtrlr"),
6954 variable: "MaxPeriodicEventStreams",
6955 attributes: None,
6956 instance: None,
6957 required: Some("no"),
6958 data_type: Some("integer"),
6959 unit: None,
6960 },
6961 DeviceModelEntry {
6962 component: Some("OCPPCommCtrlr"),
6963 variable: "ActiveNetworkProfile",
6964 attributes: None,
6965 instance: None,
6966 required: Some("no"),
6967 data_type: Some("string"),
6968 unit: None,
6969 },
6970 DeviceModelEntry {
6971 component: Some("OCPPCommCtrlr"),
6972 variable: "FileTransferProtocols",
6973 attributes: None,
6974 instance: None,
6975 required: Some("yes"),
6976 data_type: Some("MemberList"),
6977 unit: None,
6978 },
6979 DeviceModelEntry {
6980 component: Some("OCPPCommCtrlr"),
6981 variable: "HeartbeatInterval",
6982 attributes: None,
6983 instance: None,
6984 required: Some("no"),
6985 data_type: Some("integer"),
6986 unit: Some("s"),
6987 },
6988 DeviceModelEntry {
6989 component: Some("OCPPCommCtrlr"),
6990 variable: "MessageTimeout",
6991 attributes: None,
6992 instance: Some("Default"),
6993 required: Some("yes"),
6994 data_type: Some("integer"),
6995 unit: Some("s"),
6996 },
6997 DeviceModelEntry {
6998 component: Some("OCPPCommCtrlr"),
6999 variable: "MessageAttemptInterval",
7000 attributes: None,
7001 instance: Some("TransactionEvent"),
7002 required: Some("yes"),
7003 data_type: Some("integer"),
7004 unit: None,
7005 },
7006 DeviceModelEntry {
7007 component: Some("OCPPCommCtrlr"),
7008 variable: "MessageAttempts",
7009 attributes: None,
7010 instance: Some("TransactionEvent"),
7011 required: Some("yes"),
7012 data_type: Some("integer"),
7013 unit: None,
7014 },
7015 DeviceModelEntry {
7016 component: Some("OCPPCommCtrlr"),
7017 variable: "NetworkConfigurationPriority",
7018 attributes: None,
7019 instance: None,
7020 required: Some("yes"),
7021 data_type: Some("string"),
7022 unit: None,
7023 },
7024 DeviceModelEntry {
7025 component: Some("OCPPCommCtrlr"),
7026 variable: "NetworkProfileConnectionAttempts",
7027 attributes: None,
7028 instance: None,
7029 required: Some("yes"),
7030 data_type: Some("integer"),
7031 unit: None,
7032 },
7033 DeviceModelEntry {
7034 component: Some("OCPPCommCtrlr"),
7035 variable: "OfflineThreshold",
7036 attributes: None,
7037 instance: None,
7038 required: Some("yes"),
7039 data_type: Some("integer"),
7040 unit: Some("s"),
7041 },
7042 DeviceModelEntry {
7043 component: Some("OCPPCommCtrlr"),
7044 variable: "PublicKeyWithSignedMeterValue",
7045 attributes: None,
7046 instance: None,
7047 required: Some("no"),
7048 data_type: Some("OptionList"),
7049 unit: None,
7050 },
7051 DeviceModelEntry {
7052 component: Some("OCPPCommCtrlr"),
7053 variable: "QueueAllMessages",
7054 attributes: None,
7055 instance: None,
7056 required: Some("no"),
7057 data_type: Some("boolean"),
7058 unit: None,
7059 },
7060 DeviceModelEntry {
7061 component: Some("OCPPCommCtrlr"),
7062 variable: "ResetRetries",
7063 attributes: None,
7064 instance: None,
7065 required: Some("yes"),
7066 data_type: Some("integer"),
7067 unit: None,
7068 },
7069 DeviceModelEntry {
7070 component: Some("OCPPCommCtrlr"),
7071 variable: "RetryBackOffRandomRange",
7072 attributes: None,
7073 instance: None,
7074 required: Some("no"),
7075 data_type: Some("integer"),
7076 unit: None,
7077 },
7078 DeviceModelEntry {
7079 component: Some("OCPPCommCtrlr"),
7080 variable: "RetryBackOffRepeatTimes",
7081 attributes: None,
7082 instance: None,
7083 required: Some("no"),
7084 data_type: Some("integer"),
7085 unit: None,
7086 },
7087 DeviceModelEntry {
7088 component: Some("OCPPCommCtrlr"),
7089 variable: "RetryBackOffWaitMinimum",
7090 attributes: None,
7091 instance: None,
7092 required: Some("no"),
7093 data_type: Some("integer"),
7094 unit: None,
7095 },
7096 DeviceModelEntry {
7097 component: Some("OCPPCommCtrlr"),
7098 variable: "UnlockOnEVSideDisconnect",
7099 attributes: None,
7100 instance: None,
7101 required: Some("yes"),
7102 data_type: Some("boolean"),
7103 unit: None,
7104 },
7105 DeviceModelEntry {
7106 component: Some("OCPPCommCtrlr"),
7107 variable: "WebSocketPingInterval",
7108 attributes: None,
7109 instance: None,
7110 required: Some("no"),
7111 data_type: Some("integer"),
7112 unit: Some("s"),
7113 },
7114 DeviceModelEntry {
7115 component: Some("OCPPCommCtrlr"),
7116 variable: "FieldLength",
7117 attributes: None,
7118 instance: None,
7119 required: Some("no"),
7120 data_type: Some("integer"),
7121 unit: None,
7122 },
7123 DeviceModelEntry {
7124 component: Some("OCPPCommCtrlr"),
7125 variable: "ExternalConfigChangeDate",
7126 attributes: None,
7127 instance: None,
7128 required: Some("no"),
7129 data_type: Some("DateTime"),
7130 unit: None,
7131 },
7132 DeviceModelEntry {
7133 component: Some("ReservationCtrlr"),
7134 variable: "Available",
7135 attributes: None,
7136 instance: None,
7137 required: Some("no"),
7138 data_type: Some("boolean"),
7139 unit: None,
7140 },
7141 DeviceModelEntry {
7142 component: Some("ReservationCtrlr"),
7143 variable: "Enabled",
7144 attributes: None,
7145 instance: None,
7146 required: Some("no"),
7147 data_type: Some("boolean"),
7148 unit: None,
7149 },
7150 DeviceModelEntry {
7151 component: Some("ReservationCtrlr"),
7152 variable: "NonEvseSpecific",
7153 attributes: None,
7154 instance: None,
7155 required: Some("no"),
7156 data_type: Some("boolean"),
7157 unit: None,
7158 },
7159 DeviceModelEntry {
7160 component: Some("SampledDataCtrlr"),
7161 variable: "Available",
7162 attributes: None,
7163 instance: None,
7164 required: Some("no"),
7165 data_type: Some("boolean"),
7166 unit: None,
7167 },
7168 DeviceModelEntry {
7169 component: Some("SampledDataCtrlr"),
7170 variable: "Enabled",
7171 attributes: None,
7172 instance: None,
7173 required: Some("no"),
7174 data_type: Some("boolean"),
7175 unit: None,
7176 },
7177 DeviceModelEntry {
7178 component: Some("SampledDataCtrlr"),
7179 variable: "SignReadings",
7180 attributes: None,
7181 instance: None,
7182 required: Some("no"),
7183 data_type: Some("boolean"),
7184 unit: None,
7185 },
7186 DeviceModelEntry {
7187 component: Some("SampledDataCtrlr"),
7188 variable: "SignStartedReadings",
7189 attributes: None,
7190 instance: None,
7191 required: None,
7192 data_type: None,
7193 unit: None,
7194 },
7195 DeviceModelEntry {
7196 component: Some("SampledDataCtrlr"),
7197 variable: "SignUpdatedReadings",
7198 attributes: None,
7199 instance: None,
7200 required: None,
7201 data_type: None,
7202 unit: None,
7203 },
7204 DeviceModelEntry {
7205 component: Some("SampledDataCtrlr"),
7206 variable: "TxEndedInterval",
7207 attributes: None,
7208 instance: None,
7209 required: Some("yes"),
7210 data_type: Some("integer"),
7211 unit: Some("s"),
7212 },
7213 DeviceModelEntry {
7214 component: Some("SampledDataCtrlr"),
7215 variable: "TxEndedMeasurands",
7216 attributes: None,
7217 instance: None,
7218 required: Some("yes"),
7219 data_type: Some("MemberList"),
7220 unit: None,
7221 },
7222 DeviceModelEntry {
7223 component: Some("SampledDataCtrlr"),
7224 variable: "TxStartedMeasurands",
7225 attributes: None,
7226 instance: None,
7227 required: Some("yes"),
7228 data_type: Some("MemberList"),
7229 unit: None,
7230 },
7231 DeviceModelEntry {
7232 component: Some("SampledDataCtrlr"),
7233 variable: "TxUpdatedInterval",
7234 attributes: None,
7235 instance: None,
7236 required: Some("yes"),
7237 data_type: Some("integer"),
7238 unit: Some("s"),
7239 },
7240 DeviceModelEntry {
7241 component: Some("SampledDataCtrlr"),
7242 variable: "TxUpdatedMeasurands",
7243 attributes: None,
7244 instance: None,
7245 required: Some("yes"),
7246 data_type: Some("MemberList"),
7247 unit: None,
7248 },
7249 DeviceModelEntry {
7250 component: Some("SampledDataCtrlr"),
7251 variable: "RegisterValuesWithoutPhases",
7252 attributes: None,
7253 instance: None,
7254 required: Some("no"),
7255 data_type: Some("boolean"),
7256 unit: None,
7257 },
7258 DeviceModelEntry {
7259 component: Some("SampledDataCtrlr"),
7260 variable: "UpstreamInterval",
7261 attributes: None,
7262 instance: None,
7263 required: Some("no"),
7264 data_type: Some("integer"),
7265 unit: Some("s"),
7266 },
7267 DeviceModelEntry {
7268 component: Some("SampledDataCtrlr"),
7269 variable: "UpstreamMeasurands",
7270 attributes: None,
7271 instance: None,
7272 required: Some("no"),
7273 data_type: Some("MemberList"),
7274 unit: None,
7275 },
7276 DeviceModelEntry {
7277 component: Some("SecurityCtrlr"),
7278 variable: "AllowSecurityProfileDowngrade",
7279 attributes: None,
7280 instance: None,
7281 required: Some("no"),
7282 data_type: Some("boolean"),
7283 unit: None,
7284 },
7285 DeviceModelEntry {
7286 component: Some("SecurityCtrlr"),
7287 variable: "AdditionalRootCertificateCheck",
7288 attributes: None,
7289 instance: None,
7290 required: Some("no"),
7291 data_type: Some("boolean"),
7292 unit: None,
7293 },
7294 DeviceModelEntry {
7295 component: Some("SecurityCtrlr"),
7296 variable: "BasicAuthPassword",
7297 attributes: None,
7298 instance: None,
7299 required: Some("no"),
7300 data_type: Some("passwordString"),
7301 unit: None,
7302 },
7303 DeviceModelEntry {
7304 component: Some("SecurityCtrlr"),
7305 variable: "CertificateEntries",
7306 attributes: None,
7307 instance: None,
7308 required: Some("yes"),
7309 data_type: Some("integer"),
7310 unit: None,
7311 },
7312 DeviceModelEntry {
7313 component: Some("SecurityCtrlr"),
7314 variable: "CertSigningRepeatTimes",
7315 attributes: None,
7316 instance: None,
7317 required: Some("no"),
7318 data_type: Some("integer"),
7319 unit: None,
7320 },
7321 DeviceModelEntry {
7322 component: Some("SecurityCtrlr"),
7323 variable: "CertSigningWaitMinimum",
7324 attributes: None,
7325 instance: None,
7326 required: Some("no"),
7327 data_type: Some("integer"),
7328 unit: Some("s"),
7329 },
7330 DeviceModelEntry {
7331 component: Some("SecurityCtrlr"),
7332 variable: "Identity",
7333 attributes: None,
7334 instance: None,
7335 required: Some("no"),
7336 data_type: Some("identifierString"),
7337 unit: None,
7338 },
7339 DeviceModelEntry {
7340 component: Some("SecurityCtrlr"),
7341 variable: "MaxCertificateChainSize",
7342 attributes: None,
7343 instance: None,
7344 required: Some("no"),
7345 data_type: Some("integer"),
7346 unit: None,
7347 },
7348 DeviceModelEntry {
7349 component: Some("SecurityCtrlr"),
7350 variable: "OrganizationName",
7351 attributes: None,
7352 instance: None,
7353 required: Some("yes"),
7354 data_type: Some("string"),
7355 unit: None,
7356 },
7357 DeviceModelEntry {
7358 component: Some("SecurityCtrlr"),
7359 variable: "SecurityProfile",
7360 attributes: None,
7361 instance: None,
7362 required: Some("yes"),
7363 data_type: Some("integer"),
7364 unit: None,
7365 },
7366 DeviceModelEntry {
7367 component: Some("SmartChargingCtrlr"),
7368 variable: "ACPhaseSwitchingSupported",
7369 attributes: None,
7370 instance: None,
7371 required: Some("no"),
7372 data_type: Some("boolean"),
7373 unit: None,
7374 },
7375 DeviceModelEntry {
7376 component: Some("SmartChargingCtrlr"),
7377 variable: "Available",
7378 attributes: None,
7379 instance: None,
7380 required: Some("no"),
7381 data_type: Some("boolean"),
7382 unit: None,
7383 },
7384 DeviceModelEntry {
7385 component: Some("SmartChargingCtrlr"),
7386 variable: "Enabled",
7387 attributes: None,
7388 instance: None,
7389 required: Some("no"),
7390 data_type: Some("boolean"),
7391 unit: None,
7392 },
7393 DeviceModelEntry {
7394 component: Some("SmartChargingCtrlr"),
7395 variable: "Entries",
7396 attributes: None,
7397 instance: Some("ChargingProfiles"),
7398 required: Some("yes"),
7399 data_type: Some("integer"),
7400 unit: None,
7401 },
7402 DeviceModelEntry {
7403 component: Some("SmartChargingCtrlr"),
7404 variable: "ExternalControlSignalsEnabled",
7405 attributes: None,
7406 instance: None,
7407 required: Some("no"),
7408 data_type: Some("boolean"),
7409 unit: None,
7410 },
7411 DeviceModelEntry {
7412 component: Some("SmartChargingCtrlr"),
7413 variable: "LimitChangeSignificance",
7414 attributes: None,
7415 instance: None,
7416 required: Some("yes"),
7417 data_type: Some("decimal"),
7418 unit: Some("Percent"),
7419 },
7420 DeviceModelEntry {
7421 component: Some("SmartChargingCtrlr"),
7422 variable: "NotifyChargingLimitWithSchedules",
7423 attributes: None,
7424 instance: None,
7425 required: Some("no"),
7426 data_type: Some("boolean"),
7427 unit: None,
7428 },
7429 DeviceModelEntry {
7430 component: Some("SmartChargingCtrlr"),
7431 variable: "PeriodsPerSchedule",
7432 attributes: None,
7433 instance: None,
7434 required: Some("yes"),
7435 data_type: Some("integer"),
7436 unit: None,
7437 },
7438 DeviceModelEntry {
7439 component: Some("SmartChargingCtrlr"),
7440 variable: "Phases3to1",
7441 attributes: None,
7442 instance: None,
7443 required: Some("no"),
7444 data_type: Some("boolean"),
7445 unit: None,
7446 },
7447 DeviceModelEntry {
7448 component: Some("SmartChargingCtrlr"),
7449 variable: "ProfileStackLevel",
7450 attributes: None,
7451 instance: None,
7452 required: Some("yes"),
7453 data_type: Some("integer"),
7454 unit: None,
7455 },
7456 DeviceModelEntry {
7457 component: Some("SmartChargingCtrlr"),
7458 variable: "RateUnit",
7459 attributes: None,
7460 instance: None,
7461 required: Some("yes"),
7462 data_type: Some("MemberList"),
7463 unit: None,
7464 },
7465 DeviceModelEntry {
7466 component: Some("SmartChargingCtrlr"),
7467 variable: "ExternalConstraintsProfileDisallowed",
7468 attributes: None,
7469 instance: None,
7470 required: Some("no"),
7471 data_type: Some("boolean"),
7472 unit: None,
7473 },
7474 DeviceModelEntry {
7475 component: Some("SmartChargingCtrlr"),
7476 variable: "ChargingProfilePersistence",
7477 attributes: None,
7478 instance: Some("TxProfile"),
7479 required: Some("no"),
7480 data_type: Some("boolean"),
7481 unit: None,
7482 },
7483 DeviceModelEntry {
7484 component: Some("SmartChargingCtrlr"),
7485 variable: "ChargingProfilePersistence",
7486 attributes: None,
7487 instance: Some("LocalGeneration"),
7488 required: Some("no"),
7489 data_type: Some("boolean"),
7490 unit: None,
7491 },
7492 DeviceModelEntry {
7493 component: Some("SmartChargingCtrlr"),
7494 variable: "ChargingProfilePersistence",
7495 attributes: None,
7496 instance: Some("ChargingStationExternalConstraints"),
7497 required: Some("no"),
7498 data_type: Some("boolean"),
7499 unit: None,
7500 },
7501 DeviceModelEntry {
7502 component: Some("SmartChargingCtrlr"),
7503 variable: "SetpointPriority",
7504 attributes: None,
7505 instance: None,
7506 required: Some("no"),
7507 data_type: Some("OptionList"),
7508 unit: None,
7509 },
7510 DeviceModelEntry {
7511 component: Some("SmartChargingCtrlr"),
7512 variable: "MaxExternalConstraintsId",
7513 attributes: None,
7514 instance: None,
7515 required: Some("no"),
7516 data_type: Some("integer"),
7517 unit: None,
7518 },
7519 DeviceModelEntry {
7520 component: Some("SmartChargingCtrlr"),
7521 variable: "SupportedAdditionalPurposes",
7522 attributes: None,
7523 instance: None,
7524 required: Some("no"),
7525 data_type: Some("MemberList"),
7526 unit: None,
7527 },
7528 DeviceModelEntry {
7529 component: Some("SmartChargingCtrlr"),
7530 variable: "SupportsDynamicProfiles",
7531 attributes: None,
7532 instance: None,
7533 required: Some("no"),
7534 data_type: Some("boolean"),
7535 unit: None,
7536 },
7537 DeviceModelEntry {
7538 component: Some("SmartChargingCtrlr"),
7539 variable: "SupportsMaxOfflineDuration",
7540 attributes: None,
7541 instance: None,
7542 required: Some("no"),
7543 data_type: Some("boolean"),
7544 unit: None,
7545 },
7546 DeviceModelEntry {
7547 component: Some("SmartChargingCtrlr"),
7548 variable: "SupportsUseLocalTime",
7549 attributes: None,
7550 instance: None,
7551 required: Some("no"),
7552 data_type: Some("boolean"),
7553 unit: None,
7554 },
7555 DeviceModelEntry {
7556 component: Some("SmartChargingCtrlr"),
7557 variable: "SupportsRandomizedDelay",
7558 attributes: None,
7559 instance: None,
7560 required: Some("no"),
7561 data_type: Some("boolean"),
7562 unit: None,
7563 },
7564 DeviceModelEntry {
7565 component: Some("SmartChargingCtrlr"),
7566 variable: "SupportsLimitAtSoC",
7567 attributes: None,
7568 instance: None,
7569 required: Some("no"),
7570 data_type: Some("boolean"),
7571 unit: None,
7572 },
7573 DeviceModelEntry {
7574 component: Some("SmartChargingCtrlr"),
7575 variable: "SupportsEvseSleep",
7576 attributes: None,
7577 instance: None,
7578 required: Some("no"),
7579 data_type: Some("boolean"),
7580 unit: None,
7581 },
7582 DeviceModelEntry {
7583 component: Some("TariffCostCtrlr"),
7584 variable: "Available",
7585 attributes: None,
7586 instance: Some("Tariff"),
7587 required: Some("no"),
7588 data_type: Some("boolean"),
7589 unit: None,
7590 },
7591 DeviceModelEntry {
7592 component: Some("TariffCostCtrlr"),
7593 variable: "Available",
7594 attributes: None,
7595 instance: Some("Cost"),
7596 required: Some("no"),
7597 data_type: Some("boolean"),
7598 unit: None,
7599 },
7600 DeviceModelEntry {
7601 component: Some("TariffCostCtrlr"),
7602 variable: "Currency",
7603 attributes: None,
7604 instance: None,
7605 required: Some("yes"),
7606 data_type: Some("string"),
7607 unit: None,
7608 },
7609 DeviceModelEntry {
7610 component: Some("TariffCostCtrlr"),
7611 variable: "Enabled",
7612 attributes: None,
7613 instance: Some("Tariff"),
7614 required: Some("no"),
7615 data_type: Some("boolean"),
7616 unit: None,
7617 },
7618 DeviceModelEntry {
7619 component: Some("TariffCostCtrlr"),
7620 variable: "Enabled",
7621 attributes: None,
7622 instance: Some("Cost"),
7623 required: Some("no"),
7624 data_type: Some("boolean"),
7625 unit: None,
7626 },
7627 DeviceModelEntry {
7628 component: Some("TariffCostCtrlr"),
7629 variable: "Enabled",
7630 attributes: None,
7631 instance: Some("RunningCost"),
7632 required: Some("no"),
7633 data_type: Some("boolean"),
7634 unit: None,
7635 },
7636 DeviceModelEntry {
7637 component: Some("TariffCostCtrlr"),
7638 variable: "TariffFallbackMessage",
7639 attributes: None,
7640 instance: Some("<language>"),
7641 required: Some("yes"),
7642 data_type: Some("string"),
7643 unit: None,
7644 },
7645 DeviceModelEntry {
7646 component: Some("TariffCostCtrlr"),
7647 variable: "TotalCostFallbackMessage",
7648 attributes: None,
7649 instance: Some("<language>"),
7650 required: Some("yes"),
7651 data_type: Some("string"),
7652 unit: None,
7653 },
7654 DeviceModelEntry {
7655 component: Some("TariffCostCtrlr"),
7656 variable: "OfflineTariffFallbackMessage",
7657 attributes: None,
7658 instance: Some("<language>"),
7659 required: Some("no"),
7660 data_type: Some("string"),
7661 unit: None,
7662 },
7663 DeviceModelEntry {
7664 component: Some("TariffCostCtrlr"),
7665 variable: "Interval",
7666 attributes: None,
7667 instance: Some("Tariff"),
7668 required: Some("no"),
7669 data_type: Some("integer"),
7670 unit: Some("s"),
7671 },
7672 DeviceModelEntry {
7673 component: Some("TariffCostCtrlr"),
7674 variable: "Interval",
7675 attributes: None,
7676 instance: Some("Cost"),
7677 required: Some("no"),
7678 data_type: Some("integer"),
7679 unit: Some("s"),
7680 },
7681 DeviceModelEntry {
7682 component: Some("TariffCostCtrlr"),
7683 variable: "MaxElements",
7684 attributes: None,
7685 instance: Some("Tariff"),
7686 required: Some("no"),
7687 data_type: Some("integer"),
7688 unit: None,
7689 },
7690 DeviceModelEntry {
7691 component: Some("TariffCostCtrlr"),
7692 variable: "ConditionsSupported",
7693 attributes: None,
7694 instance: Some("Tariff"),
7695 required: Some("no"),
7696 data_type: Some("boolean"),
7697 unit: None,
7698 },
7699 DeviceModelEntry {
7700 component: Some("TariffCostCtrlr"),
7701 variable: "HandleFailedTariff",
7702 attributes: None,
7703 instance: Some("Tariff"),
7704 required: Some("no"),
7705 data_type: Some("OptionList"),
7706 unit: None,
7707 },
7708 DeviceModelEntry {
7709 component: Some("TokenReader"),
7710 variable: "Token",
7711 attributes: None,
7712 instance: None,
7713 required: Some("no"),
7714 data_type: Some("string"),
7715 unit: None,
7716 },
7717 DeviceModelEntry {
7718 component: Some("TokenReader"),
7719 variable: "TokenType",
7720 attributes: None,
7721 instance: None,
7722 required: Some("no"),
7723 data_type: Some("OptionList"),
7724 unit: None,
7725 },
7726 DeviceModelEntry {
7727 component: Some("TxCtrlr"),
7728 variable: "ChargingTime",
7729 attributes: None,
7730 instance: None,
7731 required: Some("no"),
7732 data_type: Some("decimal"),
7733 unit: Some("s"),
7734 },
7735 DeviceModelEntry {
7736 component: Some("TxCtrlr"),
7737 variable: "EVConnectionTimeOut",
7738 attributes: None,
7739 instance: None,
7740 required: Some("yes"),
7741 data_type: Some("integer"),
7742 unit: Some("s"),
7743 },
7744 DeviceModelEntry {
7745 component: Some("TxCtrlr"),
7746 variable: "MaxEnergyOnInvalidId",
7747 attributes: None,
7748 instance: None,
7749 required: Some("no"),
7750 data_type: Some("integer"),
7751 unit: None,
7752 },
7753 DeviceModelEntry {
7754 component: Some("TxCtrlr"),
7755 variable: "StopTxOnEVSideDisconnect",
7756 attributes: None,
7757 instance: None,
7758 required: Some("yes"),
7759 data_type: Some("boolean"),
7760 unit: None,
7761 },
7762 DeviceModelEntry {
7763 component: Some("TxCtrlr"),
7764 variable: "StopTxOnInvalidId",
7765 attributes: None,
7766 instance: None,
7767 required: Some("yes"),
7768 data_type: Some("boolean"),
7769 unit: None,
7770 },
7771 DeviceModelEntry {
7772 component: Some("TxCtrlr"),
7773 variable: "TxBeforeAcceptedEnabled",
7774 attributes: None,
7775 instance: None,
7776 required: Some("no"),
7777 data_type: Some("boolean"),
7778 unit: None,
7779 },
7780 DeviceModelEntry {
7781 component: Some("TxCtrlr"),
7782 variable: "TxStartPoint",
7783 attributes: None,
7784 instance: None,
7785 required: Some("yes"),
7786 data_type: Some("MemberList"),
7787 unit: None,
7788 },
7789 DeviceModelEntry {
7790 component: Some("TxCtrlr"),
7791 variable: "TxStopPoint",
7792 attributes: None,
7793 instance: None,
7794 required: Some("yes"),
7795 data_type: Some("MemberList"),
7796 unit: None,
7797 },
7798 DeviceModelEntry {
7799 component: Some("TxCtrlr"),
7800 variable: "ResumptionTimeout",
7801 attributes: None,
7802 instance: None,
7803 required: Some("no"),
7804 data_type: Some("integer"),
7805 unit: Some("s"),
7806 },
7807 DeviceModelEntry {
7808 component: Some("TxCtrlr"),
7809 variable: "EnergyTransferResumptionRandomRange",
7810 attributes: None,
7811 instance: None,
7812 required: Some("no"),
7813 data_type: Some("integer"),
7814 unit: Some("s"),
7815 },
7816 DeviceModelEntry {
7817 component: Some("TxCtrlr"),
7818 variable: "AllowEnergyTransferResumption",
7819 attributes: None,
7820 instance: None,
7821 required: Some("no"),
7822 data_type: Some("boolean"),
7823 unit: None,
7824 },
7825 DeviceModelEntry {
7826 component: Some("TxCtrlr"),
7827 variable: "SupportedLimits",
7828 attributes: None,
7829 instance: None,
7830 required: Some("no"),
7831 data_type: Some("MemberList"),
7832 unit: None,
7833 },
7834 DeviceModelEntry {
7835 component: Some("V2XChargingCtrlr"),
7836 variable: "Enabled",
7837 attributes: None,
7838 instance: None,
7839 required: Some("yes"),
7840 data_type: Some("boolean"),
7841 unit: None,
7842 },
7843 DeviceModelEntry {
7844 component: Some("V2XChargingCtrlr"),
7845 variable: "SupportedEnergyTransferModes",
7846 attributes: None,
7847 instance: None,
7848 required: Some("yes"),
7849 data_type: Some("MemberList"),
7850 unit: None,
7851 },
7852 DeviceModelEntry {
7853 component: Some("V2XChargingCtrlr"),
7854 variable: "SupportedOperationModes",
7855 attributes: None,
7856 instance: None,
7857 required: Some("yes"),
7858 data_type: Some("MemberList"),
7859 unit: None,
7860 },
7861 DeviceModelEntry {
7862 component: Some("V2XChargingCtrlr"),
7863 variable: "LocalFrequencyUpdateThreshold",
7864 attributes: None,
7865 instance: None,
7866 required: Some("no"),
7867 data_type: Some("boolean"),
7868 unit: None,
7869 },
7870 DeviceModelEntry {
7871 component: Some("V2XChargingCtrlr"),
7872 variable: "TxStartedMeasurands",
7873 attributes: None,
7874 instance: Some("<OperationMode>"),
7875 required: Some("no"),
7876 data_type: Some("MemberList"),
7877 unit: None,
7878 },
7879 DeviceModelEntry {
7880 component: Some("V2XChargingCtrlr"),
7881 variable: "TxEndedMeasurands",
7882 attributes: None,
7883 instance: Some("<OperationMode>"),
7884 required: Some("no"),
7885 data_type: Some("MemberList"),
7886 unit: None,
7887 },
7888 DeviceModelEntry {
7889 component: Some("V2XChargingCtrlr"),
7890 variable: "TxUpdatedMeasurands",
7891 attributes: None,
7892 instance: Some("<OperationMode>"),
7893 required: Some("no"),
7894 data_type: Some("MemberList"),
7895 unit: None,
7896 },
7897 DeviceModelEntry {
7898 component: Some("V2XChargingCtrlr"),
7899 variable: "TxEndedInterval",
7900 attributes: None,
7901 instance: Some("<OperationMode>"),
7902 required: Some("no"),
7903 data_type: Some("integer"),
7904 unit: Some("s"),
7905 },
7906 DeviceModelEntry {
7907 component: Some("V2XChargingCtrlr"),
7908 variable: "TxUpdatedInterval",
7909 attributes: None,
7910 instance: Some("<OperationMode>"),
7911 required: Some("no"),
7912 data_type: Some("integer"),
7913 unit: Some("s"),
7914 },
7915 DeviceModelEntry {
7916 component: Some("V2XChargingCtrlr"),
7917 variable: "LocalLoadBalancing",
7918 attributes: None,
7919 instance: Some("UpperThreshold"),
7920 required: Some("no"),
7921 data_type: Some("decimal"),
7922 unit: Some("W"),
7923 },
7924 DeviceModelEntry {
7925 component: Some("V2XChargingCtrlr"),
7926 variable: "LocalLoadBalancing",
7927 attributes: None,
7928 instance: Some("LowerThreshold"),
7929 required: Some("no"),
7930 data_type: Some("decimal"),
7931 unit: Some("W"),
7932 },
7933 DeviceModelEntry {
7934 component: Some("V2XChargingCtrlr"),
7935 variable: "LocalLoadBalancing",
7936 attributes: None,
7937 instance: Some("UpperOffset"),
7938 required: Some("no"),
7939 data_type: Some("decimal"),
7940 unit: Some("W"),
7941 },
7942 DeviceModelEntry {
7943 component: Some("V2XChargingCtrlr"),
7944 variable: "LocalLoadBalancing",
7945 attributes: None,
7946 instance: Some("LowerOffset"),
7947 required: Some("no"),
7948 data_type: Some("decimal"),
7949 unit: Some("W"),
7950 },
7951 DeviceModelEntry {
7952 component: Some("FrequencySimulator"),
7953 variable: "Enabled",
7954 attributes: None,
7955 instance: None,
7956 required: Some("no"),
7957 data_type: Some("boolean"),
7958 unit: None,
7959 },
7960 DeviceModelEntry {
7961 component: Some("FrequencySimulator"),
7962 variable: "DateTime",
7963 attributes: None,
7964 instance: Some("Start"),
7965 required: Some("no"),
7966 data_type: Some("DateTime"),
7967 unit: None,
7968 },
7969 DeviceModelEntry {
7970 component: Some("FrequencySimulator"),
7971 variable: "DateTime",
7972 attributes: None,
7973 instance: Some("End"),
7974 required: Some("no"),
7975 data_type: Some("DateTime"),
7976 unit: None,
7977 },
7978 DeviceModelEntry {
7979 component: Some("FrequencySimulator"),
7980 variable: "FrequencySchedule",
7981 attributes: None,
7982 instance: None,
7983 required: Some("no"),
7984 data_type: Some("string"),
7985 unit: None,
7986 },
7987 DeviceModelEntry {
7988 component: Some("DataCollector"),
7989 variable: "Enabled",
7990 attributes: None,
7991 instance: None,
7992 required: Some("no"),
7993 data_type: Some("boolean"),
7994 unit: None,
7995 },
7996 DeviceModelEntry {
7997 component: Some("DataCollector"),
7998 variable: "DateTime",
7999 attributes: None,
8000 instance: Some("Start"),
8001 required: Some("no"),
8002 data_type: Some("DateTime"),
8003 unit: None,
8004 },
8005 DeviceModelEntry {
8006 component: Some("DataCollector"),
8007 variable: "DateTime",
8008 attributes: None,
8009 instance: Some("End"),
8010 required: Some("no"),
8011 data_type: Some("DateTime"),
8012 unit: None,
8013 },
8014 DeviceModelEntry {
8015 component: Some("DataCollector"),
8016 variable: "SamplingInterval",
8017 attributes: None,
8018 instance: None,
8019 required: Some("no"),
8020 data_type: Some("decimal"),
8021 unit: Some("s"),
8022 },
8023 DeviceModelEntry {
8024 component: Some("DataCollector"),
8025 variable: "SampledMeasurands",
8026 attributes: None,
8027 instance: None,
8028 required: Some("no"),
8029 data_type: Some("MemberList"),
8030 unit: None,
8031 },
8032 DeviceModelEntry {
8033 component: Some("DCDERCtrlr"),
8034 variable: "Enabled",
8035 attributes: None,
8036 instance: None,
8037 required: Some("no"),
8038 data_type: Some("boolean"),
8039 unit: None,
8040 },
8041 DeviceModelEntry {
8042 component: Some("DCDERCtrlr"),
8043 variable: "MaxW",
8044 attributes: None,
8045 instance: None,
8046 required: Some("yes"),
8047 data_type: Some("decimal"),
8048 unit: Some("W"),
8049 },
8050 DeviceModelEntry {
8051 component: Some("DCDERCtrlr"),
8052 variable: "OverExcitedW",
8053 attributes: None,
8054 instance: None,
8055 required: Some("yes"),
8056 data_type: Some("decimal"),
8057 unit: Some("W"),
8058 },
8059 DeviceModelEntry {
8060 component: Some("DCDERCtrlr"),
8061 variable: "OverExcitedPF",
8062 attributes: None,
8063 instance: None,
8064 required: Some("yes"),
8065 data_type: Some("decimal"),
8066 unit: None,
8067 },
8068 DeviceModelEntry {
8069 component: Some("DCDERCtrlr"),
8070 variable: "UnderExcitedW",
8071 attributes: None,
8072 instance: None,
8073 required: Some("yes"),
8074 data_type: Some("decimal"),
8075 unit: Some("W"),
8076 },
8077 DeviceModelEntry {
8078 component: Some("DCDERCtrlr"),
8079 variable: "UnderExcitedPF",
8080 attributes: None,
8081 instance: None,
8082 required: Some("yes"),
8083 data_type: Some("decimal"),
8084 unit: None,
8085 },
8086 DeviceModelEntry {
8087 component: Some("DCDERCtrlr"),
8088 variable: "MaxVA",
8089 attributes: None,
8090 instance: None,
8091 required: Some("yes"),
8092 data_type: Some("decimal"),
8093 unit: Some("VA"),
8094 },
8095 DeviceModelEntry {
8096 component: Some("DCDERCtrlr"),
8097 variable: "MaxVar",
8098 attributes: None,
8099 instance: None,
8100 required: Some("yes"),
8101 data_type: Some("decimal"),
8102 unit: Some("Var"),
8103 },
8104 DeviceModelEntry {
8105 component: Some("DCDERCtrlr"),
8106 variable: "MaxVarNeg",
8107 attributes: None,
8108 instance: None,
8109 required: Some("yes"),
8110 data_type: Some("decimal"),
8111 unit: Some("Var"),
8112 },
8113 DeviceModelEntry {
8114 component: Some("DCDERCtrlr"),
8115 variable: "MaxChargeRateW",
8116 attributes: None,
8117 instance: None,
8118 required: Some("yes"),
8119 data_type: Some("decimal"),
8120 unit: Some("W"),
8121 },
8122 DeviceModelEntry {
8123 component: Some("DCDERCtrlr"),
8124 variable: "MaxChargeRateVA",
8125 attributes: None,
8126 instance: None,
8127 required: Some("yes"),
8128 data_type: Some("decimal"),
8129 unit: Some("VA"),
8130 },
8131 DeviceModelEntry {
8132 component: Some("DCDERCtrlr"),
8133 variable: "VNom",
8134 attributes: None,
8135 instance: None,
8136 required: Some("no"),
8137 data_type: Some("decimal"),
8138 unit: Some("V"),
8139 },
8140 DeviceModelEntry {
8141 component: Some("DCDERCtrlr"),
8142 variable: "MaxV",
8143 attributes: None,
8144 instance: None,
8145 required: Some("no"),
8146 data_type: Some("decimal"),
8147 unit: Some("V"),
8148 },
8149 DeviceModelEntry {
8150 component: Some("DCDERCtrlr"),
8151 variable: "MinV",
8152 attributes: None,
8153 instance: None,
8154 required: Some("no"),
8155 data_type: Some("decimal"),
8156 unit: Some("V"),
8157 },
8158 DeviceModelEntry {
8159 component: Some("DCDERCtrlr"),
8160 variable: "ModesSupported",
8161 attributes: None,
8162 instance: None,
8163 required: Some("yes"),
8164 data_type: Some("MemberList"),
8165 unit: None,
8166 },
8167 DeviceModelEntry {
8168 component: Some("DCDERCtrlr"),
8169 variable: "InverterManufacturer",
8170 attributes: None,
8171 instance: None,
8172 required: Some("yes"),
8173 data_type: Some("string"),
8174 unit: None,
8175 },
8176 DeviceModelEntry {
8177 component: Some("DCDERCtrlr"),
8178 variable: "InverterModel",
8179 attributes: None,
8180 instance: None,
8181 required: Some("yes"),
8182 data_type: Some("string"),
8183 unit: None,
8184 },
8185 DeviceModelEntry {
8186 component: Some("DCDERCtrlr"),
8187 variable: "InverterSerialNumber",
8188 attributes: None,
8189 instance: None,
8190 required: Some("no"),
8191 data_type: Some("string"),
8192 unit: None,
8193 },
8194 DeviceModelEntry {
8195 component: Some("DCDERCtrlr"),
8196 variable: "InverterSwVersion",
8197 attributes: None,
8198 instance: None,
8199 required: Some("yes"),
8200 data_type: Some("string"),
8201 unit: None,
8202 },
8203 DeviceModelEntry {
8204 component: Some("DCDERCtrlr"),
8205 variable: "InverterHwVersion",
8206 attributes: None,
8207 instance: None,
8208 required: Some("yes"),
8209 data_type: Some("string"),
8210 unit: None,
8211 },
8212 DeviceModelEntry {
8213 component: Some("DCDERCtrlr"),
8214 variable: "IslandingDetectionMethod",
8215 attributes: None,
8216 instance: None,
8217 required: Some("no"),
8218 data_type: Some("OptionList"),
8219 unit: None,
8220 },
8221 DeviceModelEntry {
8222 component: Some("DCDERCtrlr"),
8223 variable: "IslandingDetectionTripTime",
8224 attributes: None,
8225 instance: None,
8226 required: Some("no"),
8227 data_type: Some("decimal"),
8228 unit: Some("s"),
8229 },
8230 DeviceModelEntry {
8231 component: Some("DCDERCtrlr"),
8232 variable: "ReactiveSusceptance",
8233 attributes: None,
8234 instance: None,
8235 required: Some("yes"),
8236 data_type: Some("decimal"),
8237 unit: Some("s"),
8238 },
8239 DeviceModelEntry {
8240 component: Some("ACDERCtrlr"),
8241 variable: "ModesSupported",
8242 attributes: None,
8243 instance: None,
8244 required: Some("yes"),
8245 data_type: Some("MemberList"),
8246 unit: None,
8247 },
8248 DeviceModelEntry {
8249 component: Some("BatterySwapCtrlr"),
8250 variable: "TargetSoC",
8251 attributes: None,
8252 instance: None,
8253 required: Some("no"),
8254 data_type: Some("integer"),
8255 unit: Some("%"),
8256 },
8257 DeviceModelEntry {
8258 component: Some("BatterySwapCtrlr"),
8259 variable: "MaxSoc",
8260 attributes: None,
8261 instance: None,
8262 required: Some("no"),
8263 data_type: Some("integer"),
8264 unit: Some("%"),
8265 },
8266 DeviceModelEntry {
8267 component: Some("BatterySwapCtrlr"),
8268 variable: "IdToken",
8269 attributes: None,
8270 instance: None,
8271 required: Some("no"),
8272 data_type: Some("string"),
8273 unit: None,
8274 },
8275 DeviceModelEntry {
8276 component: Some("BatterySwapCtrlr"),
8277 variable: "Timeout",
8278 attributes: None,
8279 instance: Some("In"),
8280 required: Some("no"),
8281 data_type: Some("integer"),
8282 unit: Some("s"),
8283 },
8284 DeviceModelEntry {
8285 component: Some("BatterySwapCtrlr"),
8286 variable: "Timeout",
8287 attributes: None,
8288 instance: Some("Out"),
8289 required: Some("no"),
8290 data_type: Some("integer"),
8291 unit: Some("s"),
8292 },
8293 DeviceModelEntry {
8294 component: Some("BatteryCartridge"),
8295 variable: "SoC",
8296 attributes: None,
8297 instance: None,
8298 required: Some("no"),
8299 data_type: Some("integer"),
8300 unit: Some("%"),
8301 },
8302 DeviceModelEntry {
8303 component: Some("BatteryCartridge"),
8304 variable: "SoH",
8305 attributes: None,
8306 instance: None,
8307 required: Some("no"),
8308 data_type: Some("integer"),
8309 unit: Some("%"),
8310 },
8311 DeviceModelEntry {
8312 component: Some("BatteryCartridge"),
8313 variable: "WorkingMode",
8314 attributes: None,
8315 instance: None,
8316 required: Some("no"),
8317 data_type: Some("OptionList"),
8318 unit: None,
8319 },
8320 DeviceModelEntry {
8321 component: Some("NetworkConfiguration"),
8322 variable: "OcppCsmsUrl",
8323 attributes: None,
8324 instance: None,
8325 required: Some("yes"),
8326 data_type: Some("string"),
8327 unit: None,
8328 },
8329 DeviceModelEntry {
8330 component: Some("NetworkConfiguration"),
8331 variable: "OcppInterface",
8332 attributes: None,
8333 instance: None,
8334 required: Some("yes"),
8335 data_type: Some("OptionList"),
8336 unit: None,
8337 },
8338 DeviceModelEntry {
8339 component: Some("NetworkConfiguration"),
8340 variable: "OcppTransport",
8341 attributes: None,
8342 instance: None,
8343 required: Some("yes"),
8344 data_type: Some("OptionList"),
8345 unit: None,
8346 },
8347 DeviceModelEntry {
8348 component: Some("NetworkConfiguration"),
8349 variable: "OcppVersion",
8350 attributes: None,
8351 instance: None,
8352 required: Some("yes"),
8353 data_type: Some("OptionList"),
8354 unit: None,
8355 },
8356 DeviceModelEntry {
8357 component: Some("NetworkConfiguration"),
8358 variable: "MessageTimeout",
8359 attributes: None,
8360 instance: None,
8361 required: Some("yes"),
8362 data_type: Some("integer"),
8363 unit: None,
8364 },
8365 DeviceModelEntry {
8366 component: Some("NetworkConfiguration"),
8367 variable: "SecurityProfile",
8368 attributes: None,
8369 instance: None,
8370 required: Some("yes"),
8371 data_type: Some("integer"),
8372 unit: None,
8373 },
8374 DeviceModelEntry {
8375 component: Some("NetworkConfiguration"),
8376 variable: "Identity",
8377 attributes: None,
8378 instance: None,
8379 required: Some("no"),
8380 data_type: Some("string"),
8381 unit: None,
8382 },
8383 DeviceModelEntry {
8384 component: Some("NetworkConfiguration"),
8385 variable: "BasicAuthPassword",
8386 attributes: None,
8387 instance: None,
8388 required: Some("yes"),
8389 data_type: Some("string"),
8390 unit: None,
8391 },
8392 DeviceModelEntry {
8393 component: Some("NetworkConfiguration"),
8394 variable: "CsmsRootCertificateHashAlgorithm",
8395 attributes: None,
8396 instance: None,
8397 required: Some("no"),
8398 data_type: Some("string"),
8399 unit: None,
8400 },
8401 DeviceModelEntry {
8402 component: Some("NetworkConfiguration"),
8403 variable: "CsmsRootCertificateIssuerKeyHash",
8404 attributes: None,
8405 instance: None,
8406 required: Some("no"),
8407 data_type: Some("string"),
8408 unit: None,
8409 },
8410 DeviceModelEntry {
8411 component: Some("NetworkConfiguration"),
8412 variable: "CsmsRootCertificateIssuerNameHash",
8413 attributes: None,
8414 instance: None,
8415 required: Some("no"),
8416 data_type: Some("string"),
8417 unit: None,
8418 },
8419 DeviceModelEntry {
8420 component: Some("NetworkConfiguration"),
8421 variable: "CsmsRootCertificateSerialNumber",
8422 attributes: None,
8423 instance: None,
8424 required: Some("no"),
8425 data_type: Some("string"),
8426 unit: None,
8427 },
8428 DeviceModelEntry {
8429 component: Some("NetworkConfiguration"),
8430 variable: "VpnEnabled",
8431 attributes: None,
8432 instance: None,
8433 required: Some("yes"),
8434 data_type: Some("boolean"),
8435 unit: None,
8436 },
8437 DeviceModelEntry {
8438 component: Some("NetworkConfiguration"),
8439 variable: "VpnType",
8440 attributes: None,
8441 instance: None,
8442 required: Some("no"),
8443 data_type: Some("string"),
8444 unit: None,
8445 },
8446 DeviceModelEntry {
8447 component: Some("NetworkConfiguration"),
8448 variable: "VpnServer",
8449 attributes: None,
8450 instance: None,
8451 required: Some("no"),
8452 data_type: Some("string"),
8453 unit: None,
8454 },
8455 DeviceModelEntry {
8456 component: Some("NetworkConfiguration"),
8457 variable: "VpnUser",
8458 attributes: None,
8459 instance: None,
8460 required: Some("no"),
8461 data_type: Some("string"),
8462 unit: None,
8463 },
8464 DeviceModelEntry {
8465 component: Some("NetworkConfiguration"),
8466 variable: "VpnGroup",
8467 attributes: None,
8468 instance: None,
8469 required: Some("no"),
8470 data_type: Some("string"),
8471 unit: None,
8472 },
8473 DeviceModelEntry {
8474 component: Some("NetworkConfiguration"),
8475 variable: "VpnPassword",
8476 attributes: None,
8477 instance: None,
8478 required: Some("no"),
8479 data_type: Some("string"),
8480 unit: None,
8481 },
8482 DeviceModelEntry {
8483 component: Some("NetworkConfiguration"),
8484 variable: "VpnKey",
8485 attributes: None,
8486 instance: None,
8487 required: Some("no"),
8488 data_type: Some("string"),
8489 unit: None,
8490 },
8491 DeviceModelEntry {
8492 component: Some("NetworkConfiguration"),
8493 variable: "ApnEnabled",
8494 attributes: None,
8495 instance: None,
8496 required: Some("yes"),
8497 data_type: Some("boolean"),
8498 unit: None,
8499 },
8500 DeviceModelEntry {
8501 component: Some("NetworkConfiguration"),
8502 variable: "Apn",
8503 attributes: None,
8504 instance: None,
8505 required: Some("no"),
8506 data_type: Some("string"),
8507 unit: None,
8508 },
8509 DeviceModelEntry {
8510 component: Some("NetworkConfiguration"),
8511 variable: "ApnUserName",
8512 attributes: None,
8513 instance: None,
8514 required: Some("no"),
8515 data_type: Some("string"),
8516 unit: None,
8517 },
8518 DeviceModelEntry {
8519 component: Some("NetworkConfiguration"),
8520 variable: "ApnPassword",
8521 attributes: None,
8522 instance: None,
8523 required: Some("no"),
8524 data_type: Some("string"),
8525 unit: None,
8526 },
8527 DeviceModelEntry {
8528 component: Some("NetworkConfiguration"),
8529 variable: "SimPin",
8530 attributes: None,
8531 instance: None,
8532 required: Some("no"),
8533 data_type: Some("string"),
8534 unit: None,
8535 },
8536 DeviceModelEntry {
8537 component: Some("NetworkConfiguration"),
8538 variable: "PreferredNetwork",
8539 attributes: None,
8540 instance: None,
8541 required: Some("no"),
8542 data_type: Some("string"),
8543 unit: None,
8544 },
8545 DeviceModelEntry {
8546 component: Some("NetworkConfiguration"),
8547 variable: "UseOnlyPreferredNetwork",
8548 attributes: None,
8549 instance: None,
8550 required: Some("no"),
8551 data_type: Some("boolean"),
8552 unit: None,
8553 },
8554 DeviceModelEntry {
8555 component: Some("NetworkConfiguration"),
8556 variable: "ApnAuthentication",
8557 attributes: None,
8558 instance: None,
8559 required: Some("no"),
8560 data_type: Some("string"),
8561 unit: None,
8562 },
8563 DeviceModelEntry {
8564 component: Some("PaymentCtrlr"),
8565 variable: "Enabled",
8566 attributes: None,
8567 instance: None,
8568 required: Some("yes"),
8569 data_type: Some("boolean"),
8570 unit: None,
8571 },
8572 DeviceModelEntry {
8573 component: Some("PaymentCtrlr"),
8574 variable: "Problem",
8575 attributes: None,
8576 instance: None,
8577 required: Some("yes"),
8578 data_type: Some("boolean"),
8579 unit: None,
8580 },
8581 DeviceModelEntry {
8582 component: Some("PaymentCtrlr"),
8583 variable: "AuthorizeDirectPayment",
8584 attributes: None,
8585 instance: None,
8586 required: Some("yes"),
8587 data_type: Some("boolean"),
8588 unit: None,
8589 },
8590 DeviceModelEntry {
8591 component: Some("PaymentCtrlr"),
8592 variable: "AuthorizationAmount",
8593 attributes: None,
8594 instance: None,
8595 required: Some("yes"),
8596 data_type: Some("decimal"),
8597 unit: None,
8598 },
8599 DeviceModelEntry {
8600 component: Some("PaymentCtrlr"),
8601 variable: "IncrementalAuthorizationAmount",
8602 attributes: None,
8603 instance: None,
8604 required: Some("no"),
8605 data_type: Some("decimal"),
8606 unit: None,
8607 },
8608 DeviceModelEntry {
8609 component: Some("PaymentCtrlr"),
8610 variable: "IncrementalAuthorizationThreshold",
8611 attributes: None,
8612 instance: None,
8613 required: Some("no"),
8614 data_type: Some("decimal"),
8615 unit: None,
8616 },
8617 DeviceModelEntry {
8618 component: Some("PaymentCtrlr"),
8619 variable: "PaymentDetails",
8620 attributes: None,
8621 instance: None,
8622 required: Some("yes"),
8623 data_type: Some("MemberList"),
8624 unit: None,
8625 },
8626 DeviceModelEntry {
8627 component: Some("PaymentCtrlr"),
8628 variable: "SettlementByCSMS",
8629 attributes: None,
8630 instance: None,
8631 required: Some("yes"),
8632 data_type: Some("boolean"),
8633 unit: None,
8634 },
8635 DeviceModelEntry {
8636 component: Some("PaymentCtrlr"),
8637 variable: "ReceiptServerUrl",
8638 attributes: None,
8639 instance: None,
8640 required: Some("yes"),
8641 data_type: Some("string"),
8642 unit: None,
8643 },
8644 DeviceModelEntry {
8645 component: Some("PaymentCtrlr"),
8646 variable: "ReceiptByCSMS",
8647 attributes: None,
8648 instance: None,
8649 required: Some("yes"),
8650 data_type: Some("boolean"),
8651 unit: None,
8652 },
8653 DeviceModelEntry {
8654 component: Some("PaymentCtrlr"),
8655 variable: "Merchant",
8656 attributes: None,
8657 instance: Some("Id"),
8658 required: Some("yes"),
8659 data_type: Some("string"),
8660 unit: None,
8661 },
8662 DeviceModelEntry {
8663 component: Some("PaymentCtrlr"),
8664 variable: "Merchant",
8665 attributes: None,
8666 instance: Some("TaxId"),
8667 required: Some("yes"),
8668 data_type: Some("string"),
8669 unit: None,
8670 },
8671 DeviceModelEntry {
8672 component: Some("PaymentCtrlr"),
8673 variable: "Merchant",
8674 attributes: None,
8675 instance: Some("Name"),
8676 required: Some("yes"),
8677 data_type: Some("string"),
8678 unit: None,
8679 },
8680 DeviceModelEntry {
8681 component: Some("PaymentCtrlr"),
8682 variable: "Merchant",
8683 attributes: None,
8684 instance: Some("Address"),
8685 required: Some("yes"),
8686 data_type: Some("string"),
8687 unit: None,
8688 },
8689 DeviceModelEntry {
8690 component: Some("PaymentCtrlr"),
8691 variable: "Merchant",
8692 attributes: None,
8693 instance: Some("City"),
8694 required: Some("yes"),
8695 data_type: Some("string"),
8696 unit: None,
8697 },
8698 DeviceModelEntry {
8699 component: Some("PaymentCtrlr"),
8700 variable: "TerminalID",
8701 attributes: None,
8702 instance: None,
8703 required: Some("yes"),
8704 data_type: Some("string"),
8705 unit: None,
8706 },
8707 DeviceModelEntry {
8708 component: Some("PaymentCtrlr"),
8709 variable: "PaymentServiceProvider",
8710 attributes: None,
8711 instance: None,
8712 required: Some("yes"),
8713 data_type: Some("string"),
8714 unit: None,
8715 },
8716 DeviceModelEntry {
8717 component: Some("PaymentCtrlr"),
8718 variable: "VendorName",
8719 attributes: None,
8720 instance: None,
8721 required: Some("yes"),
8722 data_type: Some("string"),
8723 unit: None,
8724 },
8725 DeviceModelEntry {
8726 component: Some("PaymentCtrlr"),
8727 variable: "Model",
8728 attributes: None,
8729 instance: None,
8730 required: Some("yes"),
8731 data_type: Some("string"),
8732 unit: None,
8733 },
8734 DeviceModelEntry {
8735 component: Some("PaymentCtrlr"),
8736 variable: "SerialNumber",
8737 attributes: None,
8738 instance: None,
8739 required: Some("yes"),
8740 data_type: Some("string"),
8741 unit: None,
8742 },
8743 DeviceModelEntry {
8744 component: Some("PaymentCtrlr"),
8745 variable: "FirmwareVersion",
8746 attributes: None,
8747 instance: None,
8748 required: Some("yes"),
8749 data_type: Some("string"),
8750 unit: None,
8751 },
8752 DeviceModelEntry {
8753 component: Some("PaymentCtrlr"),
8754 variable: "IMSI",
8755 attributes: None,
8756 instance: None,
8757 required: Some("yes"),
8758 data_type: Some("string"),
8759 unit: None,
8760 },
8761 DeviceModelEntry {
8762 component: Some("PaymentCtrlr"),
8763 variable: "ICCID",
8764 attributes: None,
8765 instance: None,
8766 required: Some("yes"),
8767 data_type: Some("string"),
8768 unit: None,
8769 },
8770 DeviceModelEntry {
8771 component: Some("PaymentCtrlr"),
8772 variable: "Connected",
8773 attributes: None,
8774 instance: None,
8775 required: Some("yes"),
8776 data_type: Some("boolean"),
8777 unit: None,
8778 },
8779 DeviceModelEntry {
8780 component: Some("WebPaymentsCtrlr"),
8781 variable: "URLTemplate",
8782 attributes: None,
8783 instance: None,
8784 required: Some("yes"),
8785 data_type: Some("string"),
8786 unit: None,
8787 },
8788 DeviceModelEntry {
8789 component: Some("WebPaymentsCtrlr"),
8790 variable: "URLParameters",
8791 attributes: None,
8792 instance: None,
8793 required: Some("no"),
8794 data_type: Some("MemberList"),
8795 unit: None,
8796 },
8797 DeviceModelEntry {
8798 component: Some("WebPaymentsCtrlr"),
8799 variable: "TOTPVersion",
8800 attributes: None,
8801 instance: None,
8802 required: Some("yes"),
8803 data_type: Some("string"),
8804 unit: None,
8805 },
8806 DeviceModelEntry {
8807 component: Some("WebPaymentsCtrlr"),
8808 variable: "ChargingStationId",
8809 attributes: None,
8810 instance: None,
8811 required: Some("no"),
8812 data_type: Some("string"),
8813 unit: None,
8814 },
8815 DeviceModelEntry {
8816 component: Some("WebPaymentsCtrlr"),
8817 variable: "ValidityTime",
8818 attributes: None,
8819 instance: None,
8820 required: Some("yes"),
8821 data_type: Some("integer"),
8822 unit: Some("s"),
8823 },
8824 DeviceModelEntry {
8825 component: Some("WebPaymentsCtrlr"),
8826 variable: "SharedSecret",
8827 attributes: None,
8828 instance: None,
8829 required: Some("yes"),
8830 data_type: Some("string"),
8831 unit: None,
8832 },
8833 DeviceModelEntry {
8834 component: Some("WebPaymentsCtrlr"),
8835 variable: "Length",
8836 attributes: None,
8837 instance: None,
8838 required: Some("yes"),
8839 data_type: Some("integer"),
8840 unit: None,
8841 },
8842 DeviceModelEntry {
8843 component: Some("WebPaymentsCtrlr"),
8844 variable: "QRCodeQuality",
8845 attributes: None,
8846 instance: None,
8847 required: Some("no"),
8848 data_type: Some("OptionList"),
8849 unit: None,
8850 },
8851];