فهرست منبع

2020/09/18 Jessica
Actions:
1.新增Ocpp2.0.1 Message

Jessica Tseng 4 سال پیش
والد
کامیت
714e82f349
100فایلهای تغییر یافته به همراه2980 افزوده شده و 2 حذف شده
  1. 8 2
      EVCB_OCPP.Common.sln
  2. 38 0
      EVCB_OCPP.Packet20/DataTypes/ACChargingParametersType.cs
  3. 55 0
      EVCB_OCPP.Packet20/DataTypes/APNType.cs
  4. 24 0
      EVCB_OCPP.Packet20/DataTypes/AdditionalInfoType.cs
  5. 9 0
      EVCB_OCPP.Packet20/DataTypes/AuthorizationData.cs
  6. 34 0
      EVCB_OCPP.Packet20/DataTypes/CertificateHashDataChainType.cs
  7. 43 0
      EVCB_OCPP.Packet20/DataTypes/CertificateHashDataType.cs
  8. 27 0
      EVCB_OCPP.Packet20/DataTypes/ChargingLimitType.cs
  9. 39 0
      EVCB_OCPP.Packet20/DataTypes/ChargingNeedsType.cs
  10. 45 0
      EVCB_OCPP.Packet20/DataTypes/ChargingProfileCriterionType.cs
  11. 85 0
      EVCB_OCPP.Packet20/DataTypes/ChargingProfileType.cs
  12. 49 0
      EVCB_OCPP.Packet20/DataTypes/ChargingSchedulePeriodType.cs
  13. 71 0
      EVCB_OCPP.Packet20/DataTypes/ChargingScheduleType.cs
  14. 48 0
      EVCB_OCPP.Packet20/DataTypes/ChargingStationType.cs
  15. 40 0
      EVCB_OCPP.Packet20/DataTypes/ClearChargingProfileType.cs
  16. 30 0
      EVCB_OCPP.Packet20/DataTypes/ClearMonitoringResultType.cs
  17. 40 0
      EVCB_OCPP.Packet20/DataTypes/ComponentType.cs
  18. 24 0
      EVCB_OCPP.Packet20/DataTypes/ComponentVariableType.cs
  19. 30 0
      EVCB_OCPP.Packet20/DataTypes/CompositeScheduleType.cs
  20. 26 0
      EVCB_OCPP.Packet20/DataTypes/ConsumptionCostType.cs
  21. 37 0
      EVCB_OCPP.Packet20/DataTypes/CostType.cs
  22. 68 0
      EVCB_OCPP.Packet20/DataTypes/DCChargingParametersType.cs
  23. 25 0
      EVCB_OCPP.Packet20/DataTypes/EVSEType.cs
  24. 21 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/APNAuthenticationEnumType.cs
  25. 22 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/AttributeEnumType.cs
  26. 47 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/AuthorizationStatusEnumType.cs
  27. 40 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/AuthorizeCertificateStatusEnumType.cs
  28. 42 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/BootReasonEnumType.cs
  29. 15 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/CancelReservationStatusEnumType.cs
  30. 14 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/CertificateActionEnumType.cs
  31. 14 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/CertificateSignedStatusEnumType.cs
  32. 15 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/CertificateSigningUseEnumType.cs
  33. 18 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChangeAvailabilityStatusEnumType.cs
  34. 22 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChargingLimitSourceEnumType.cs
  35. 19 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChargingProfileKindEnumType.cs
  36. 27 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChargingProfilePurposeEnumType.cs
  37. 15 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChargingProfileStatusEnumType.cs
  38. 20 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChargingRateUnitEnumType.cs
  39. 31 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChargingStateEnumType.cs
  40. 14 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ClearCacheStatusEnumType.cs
  41. 14 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ClearChargingProfileStatusEnumType.cs
  42. 14 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ClearMessageStatusEnumType.cs
  43. 19 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ClearMonitoringStatusEnumType.cs
  44. 22 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ComponentCriterionEnumType.cs
  45. 102 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ConnectorEnumType.cs
  46. 30 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ConnectorStatusEnumType.cs
  47. 20 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/CostKindEnumType.cs
  48. 18 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/CustomerInformationStatusEnumType.cs
  49. 44 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/DataEnumType.cs
  50. 22 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/DataTransferStatusEnumType.cs
  51. 18 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/DeleteCertificateStatusEnumType.cs
  52. 30 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/DisplayMessageStatusEnumType.cs
  53. 22 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/EnergyTransferModeEnumType.cs
  54. 23 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/EventNotificationEnumType.cs
  55. 18 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/EventTriggerEnumType.cs
  56. 66 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/FirmwareStatusEnumType.cs
  57. 22 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/GenericDeviceModelStatusEnumType.cs
  58. 14 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/GenericStatusEnumType.cs
  59. 28 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/GetCertificateIdUseEnumType.cs
  60. 14 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/GetCertificateStatusEnumType.cs
  61. 14 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/GetChargingProfileStatusEnumType.cs
  62. 15 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/GetDisplayMessagesStatusEnumType.cs
  63. 15 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/GetInstalledCertificateStatusEnumType.cs
  64. 27 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/GetVariableStatusEnumType.cs
  65. 18 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/HashAlgorithmEnumType.cs
  66. 37 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/IdTokenEnumType.cs
  67. 24 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/InstallCertificateStatusEnumType.cs
  68. 25 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/InstallCertificateUseEnumType.cs
  69. 15 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/Iso15118EVCertificateStatusEnumType.cs
  70. 26 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/LocationEnumType.cs
  71. 14 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/LogEnumType.cs
  72. 19 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/LogStatusEnumType.cs
  73. 30 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/LogStatusNotificationRequest.cs
  74. 13 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/LogStatusNotificationResponse.cs
  75. 143 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/MeasurandEnumType.cs
  76. 23 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/MessageFormatEnumType.cs
  77. 21 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/MessagePriorityEnumType.cs
  78. 22 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/MessageStateEnumType.cs
  79. 48 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/MessageTriggerEnumType.cs
  80. 26 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/MeterValuesRequest.cs
  81. 12 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/MeterValuesResponse.cs
  82. 33 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/MonitorEnumType.cs
  83. 19 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/MonitoringBaseEnumType.cs
  84. 18 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/MonitoringCriterionEnumType.cs
  85. 18 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/MutabilityEnumType.cs
  86. 31 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/NotifyChargingLimitRequest.cs
  87. 13 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/NotifyChargingLimitResponse.cs
  88. 18 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/NotifyEVChargingNeedsStatusEnumType.cs
  89. 38 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/OCPPInterfaceEnumType.cs
  90. 15 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/OCPPTransportEnumType.cs
  91. 22 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/OCPPVersionEnumType.cs
  92. 14 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/OperationalStatusEnumType.cs
  93. 54 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/PhaseEnumType.cs
  94. 42 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/PublishFirmwareStatusEnumType.cs
  95. 46 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ReadingContextEnumType.cs
  96. 81 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ReasonEnumType.cs
  97. 14 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/RecurrencyKindEnumType.cs
  98. 19 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/RegistrationStatusEnumType.cs
  99. 33 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/ReportBaseEnumType.cs
  100. 14 0
      EVCB_OCPP.Packet20/DataTypes/EnumTypes/RequestStartStopStatusEnumType.cs

+ 8 - 2
EVCB_OCPP.Common.sln

@@ -1,7 +1,7 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.28307.705
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.30413.136
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EVCB_OCPP.Domain", "EVCB_OCPP.Domain\EVCB_OCPP.Domain.csproj", "{FAFB8754-9A6E-4931-88EC-376F0326D315}"
 EndProject
@@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EVCB_OCPP.Packet", "EVCB_OC
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EVCB_OCPP.MailService", "EVCB_OCPP.MailService\EVCB_OCPP.MailService.csproj", "{6C6E259B-1038-46D6-9672-AB19A2F91A36}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EVCB_OCPP.Packet20", "EVCB_OCPP.Packet20\EVCB_OCPP.Packet20.csproj", "{7B71A9EC-FCDB-4F17-9588-EBE962B77346}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -27,6 +29,10 @@ Global
 		{6C6E259B-1038-46D6-9672-AB19A2F91A36}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{6C6E259B-1038-46D6-9672-AB19A2F91A36}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6C6E259B-1038-46D6-9672-AB19A2F91A36}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7B71A9EC-FCDB-4F17-9588-EBE962B77346}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7B71A9EC-FCDB-4F17-9588-EBE962B77346}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7B71A9EC-FCDB-4F17-9588-EBE962B77346}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7B71A9EC-FCDB-4F17-9588-EBE962B77346}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 38 - 0
EVCB_OCPP.Packet20/DataTypes/ACChargingParametersType.cs

@@ -0,0 +1,38 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class ACChargingParametersType
+    {
+
+        /// <summary>
+        /// Amount of energy requested (in Wh). This
+        ///includes energy required for preconditioning.
+        /// </summary>
+        [Required]
+        public int EnergyAmount { set; get; }
+
+        /// <summary>
+        /// Minimum current (amps) supported by the
+        ///  electric vehicle(per phase).
+        /// </summary>
+        [Required]
+        public int EvMinCurrent { set; get; }
+
+        /// <summary>
+        /// Maximum current (amps) supported by the
+        ///  electric vehicle(per phase). Includes cable capacity.
+        /// </summary>
+        [Required]
+        public int EvMaxCurrent { set; get; }
+
+        /// <summary>
+        /// Maximum voltage supported by the electric
+        ///vehicle
+        /// </summary>
+        [Required]
+        public int EvMaxVoltage { set; get; }
+
+
+    }
+}

+ 55 - 0
EVCB_OCPP.Packet20/DataTypes/APNType.cs

@@ -0,0 +1,55 @@
+using EVCB_OCPP.Packet20.DataTypes.EnumTypes;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System.ComponentModel.DataAnnotations;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class APNType
+    {
+        /// <summary>
+        /// Required. The Access Point Name as an URL.
+        /// </summary>
+        [JsonRequired]
+        [StringLength(512, MinimumLength = 0)]
+        public string Apn { set; get; }
+
+        /// <summary>
+        /// Optional. APN username
+        /// </summary>      
+        [StringLength(20, MinimumLength = 0)]
+        public string ApnUserName { set; get; }
+
+        /// <summary>
+        /// Optional. APN Password.
+        /// </summary>      
+        [StringLength(20, MinimumLength = 0)]
+        public string ApnPassword { set; get; }
+
+        /// <summary>
+        /// Optional. SIM card pin code.
+        /// </summary>  
+        public int? SimPin { set; get; }
+
+        /// <summary>
+        /// Optional. Preferred network, written as MCC and MNC
+        /// concatenated.See note.
+        /// </summary>      
+        [StringLength(6, MinimumLength = 0)]
+        public string PreferredNetwork { set; get; }
+
+        /// <summary>
+        /// Optional. Default: false. Use only the preferred Network,
+        ///do not dial in when not available.See Note.
+        /// </summary>   
+        public bool? UseOnlyPreferredNetwork { set; get; }
+
+
+        [JsonConverter(typeof(StringEnumConverter))]
+        public APNAuthenticationEnumType? apnAuthentication { set; get; }
+
+
+
+
+    }
+}

+ 24 - 0
EVCB_OCPP.Packet20/DataTypes/AdditionalInfoType.cs

@@ -0,0 +1,24 @@
+using Newtonsoft.Json;
+using System.ComponentModel.DataAnnotations;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class AdditionalInfoType
+    {
+        /// <summary>
+        /// Required. This field specifies the additional IdToken.
+        /// </summary>
+        [Required]
+        [StringLength(36, MinimumLength = 0)]
+        public string AdditionalIdToken { set; get; }
+
+        /// <summary>
+        /// Required. This defines the type of the additionalIdToken.
+        ///This is a custom type, so the implementation needs to be
+        ///agreed upon by all involved parties.
+        /// </summary>
+        [Required]
+        [StringLength(50, MinimumLength = 0)]
+        public string Type { set; get; }
+    }
+}

+ 9 - 0
EVCB_OCPP.Packet20/DataTypes/AuthorizationData.cs

@@ -0,0 +1,9 @@
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class AuthorizationData
+    {
+        public IdTokenInfoType IdTokenInfo { set; get; }
+
+        public IdTokenType IdToken { set; get; }
+    }
+}

+ 34 - 0
EVCB_OCPP.Packet20/DataTypes/CertificateHashDataChainType.cs

@@ -0,0 +1,34 @@
+using EVCB_OCPP.Packet20.DataTypes.EnumTypes;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class CertificateHashDataChainType
+    {
+        /// <summary>
+        /// Indicates the type of the requested   certificate(s).
+        /// </summary>
+        [JsonConverter(typeof(StringEnumConverter))]
+        [Required]
+        public GetCertificateIdUseEnumType CertificateType { set; get; }
+
+        /// <summary>
+        /// Information to identify a certificate.
+        /// </summary>
+        [Required]
+        public CertificateHashDataType CertificateHashData { set; get; }
+
+        /// <summary>
+        /// Information to identify the child certificate(s).
+        /// </summary>
+        public CertificateHashDataType ChildCertificateHashData { set; get; }
+
+    }
+}

+ 43 - 0
EVCB_OCPP.Packet20/DataTypes/CertificateHashDataType.cs

@@ -0,0 +1,43 @@
+using EVCB_OCPP.Packet20.DataTypes.EnumTypes;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class CertificateHashDataType
+    {
+        /// <summary>
+        /// Used algorithms for the hashes provided
+        /// </summary>
+        [JsonConverter(typeof(StringEnumConverter))]
+        [Required]
+        public HashAlgorithmEnumType HashAlgorithm { set; get; }
+
+        /// <summary>
+        /// hashed value of the IssuerName.
+        /// </summary>
+        [StringLength(128, MinimumLength = 0)]
+        [Required]
+        public string IssuerNameHash { set; get; }
+
+        /// <summary>
+        /// Hashed value of the issuers public key
+        /// </summary>
+        [StringLength(128, MinimumLength = 0)]
+        [Required]
+        public string IssuerKeyHash { set; get; }
+
+        /// <summary>
+        /// The serial number of the certificate.
+        /// </summary>
+        [StringLength(40, MinimumLength = 0)]
+        [Required]
+        public string SerialNumber { set; get; }
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet20/DataTypes/ChargingLimitType.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet20.DataTypes.EnumTypes;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class ChargingLimitType
+    {
+        /// <summary>
+        /// Represents the source of the charging limit.
+        /// </summary>
+        [JsonConverter(typeof(StringEnumConverter))]
+        [Required]
+        public ChargingLimitSourceEnumType ChargingLimitSource { set; get; }
+
+        /// <summary>
+        /// Indicates whether the charging limit is critical for the grid.
+        /// </summary>
+        public bool? IsGridCritical { set; get; }
+    }
+}

+ 39 - 0
EVCB_OCPP.Packet20/DataTypes/ChargingNeedsType.cs

@@ -0,0 +1,39 @@
+using EVCB_OCPP.Packet20.DataTypes.EnumTypes;
+using EVCB_OCPP.Packet20.Utilites;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+   public  class ChargingNeedsType
+    {
+        /// <summary>
+        /// Mode of energy transfer requested by the EV.
+        /// </summary>
+        [Required]
+        public EnergyTransferModeEnumType RequestedEnergyTransfer { set; get; }
+
+        /// <summary>
+        /// Estimated departure time of the EV.
+        /// </summary>
+        [JsonConverter(typeof(UTCDateTimeConverter))]
+        public DateTime? DepartureTime { set; get; }
+
+        /// <summary>
+        /// EV AC charging parameters.
+        /// </summary>
+        public ACChargingParametersType AcChargingParameters { set; get; }
+
+        /// <summary>
+        /// EV DC charging parameters.
+        /// </summary>
+        public DCChargingParametersType DcChargingParameters { set; get; }
+
+
+    }
+}

+ 45 - 0
EVCB_OCPP.Packet20/DataTypes/ChargingProfileCriterionType.cs

@@ -0,0 +1,45 @@
+using EVCB_OCPP.Packet20.DataTypes.EnumTypes;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class ChargingProfileCriterionType
+    {
+        /// <summary>
+        /// Defines the purpose of the schedule transferred
+        /// by this profile
+        /// </summary>
+        [JsonConverter(typeof(StringEnumConverter))]
+        public ChargingProfilePurposeEnumType ChargingProfilePurpose { set; get; }
+
+        /// <summary>
+        /// Value determining level in hierarchy stack of
+        /// profiles.Higher values have precedence over lower
+        ///values.Lowest level is 0
+        /// </summary>
+        public int? StackLevel { set; get; }
+
+        /// <summary>
+        ///  List of all the chargingProfileIds requested. Any
+        ///ChargingProfile that matches one of these profiles will be
+        /// reported.If omitted, the Charging Station SHALL not filter
+        /// on chargingProfileId. This field SHALL NOT contain more
+        /// ids than set in ChargingProfileEntries.maxLimit
+        /// </summary>
+        public List<int> ChargingProfileId { set; get; }
+
+        /// <summary>
+        /// For which charging limit sources, charging
+        /// profiles SHALL be reported.If omitted, the Charging
+        /// Station SHALL not filter on chargingLimitSource.
+        /// </summary>
+        [JsonConverter(typeof(StringEnumConverter))]
+        public List<ChargingLimitSourceEnumType> chargingLimitSource { set; get; }
+    }
+}

+ 85 - 0
EVCB_OCPP.Packet20/DataTypes/ChargingProfileType.cs

@@ -0,0 +1,85 @@
+using EVCB_OCPP.Packet20.DataTypes.EnumTypes;
+using EVCB_OCPP.Packet20.Utilites;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class ChargingProfileType
+    {
+        /// <summary>
+        /// Id of ChargingProfile.
+        /// </summary>
+        [Required]
+        public int Id { set; get; }
+
+        /// <summary>
+        /// Value determining level in hierarchy stack of
+        /// profiles.Higher values have precedence over lower
+        ///values.Lowest level is 0.
+        /// </summary>
+        [Required]
+        public int StackLevel { set; get; }
+
+        /// <summary>
+        /// Defines the purpose of the schedule
+        ///transferred by this profile
+        /// </summary>
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public ChargingProfilePurposeEnumType ChargingProfilePurpose { set; get; }
+
+        /// <summary>
+        /// Indicates the kind of schedule.
+        /// </summary>
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public ChargingProfileKindEnumType ChargingProfileKind { set; get; }
+
+        /// <summary>
+        /// Indicates the start point of a recurrence.
+        /// </summary>
+        [JsonConverter(typeof(StringEnumConverter))]
+        public RecurrencyKindEnumType? RecurrencyKind { set; get; }
+
+        /// <summary>
+        /// Point in time at which the profile starts to be
+        ///valid.If absent, the profile is valid as soon as it is
+        ///received by the Charging Station.
+        /// </summary>
+        [JsonConverter(typeof(UTCDateTimeConverter))]
+        public DateTime? ValidFrom { set; get; }
+
+        /// <summary>
+        ///Point in time at which the profile stops to be
+        ///valid.If absent, the profile is valid until it is replaced by
+        ///another profile.
+        /// </summary>
+        [JsonConverter(typeof(UTCDateTimeConverter))]
+        public DateTime? ValidTo { set; get; }
+
+        /// <summary>
+        /// SHALL only be included if
+        /// ChargingProfilePurpose is set to TxProfile.The
+        ///transactionId is used to match the profile to a specific
+        ///transaction.
+        /// </summary>
+        [StringLength(36, MinimumLength = 0)]
+        public string TransactionId { set; get; }
+
+        /// <summary>
+        /// Schedule that contains limits for the available
+        /// power or current over time.In order to support ISO 15118
+        ///schedule negotiation, it supports at most three schedules
+        ///with associated tariff to choose from.
+        /// </summary>
+        [Required]
+        public ChargingScheduleType ChargingSchedule { set; get; }
+    }
+}

+ 49 - 0
EVCB_OCPP.Packet20/DataTypes/ChargingSchedulePeriodType.cs

@@ -0,0 +1,49 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class ChargingSchedulePeriodType
+    {
+        /// <summary>
+        /// Start of the period, in seconds from the start of
+        ///   schedule.The value of StartPeriod also defines the stop
+        ///time of the previous period.
+        /// </summary>
+        [Required]
+        public int StartPeriod { set; get; }
+
+        /// <summary>
+        /// Charging rate limit during the schedule period,
+        ///in the applicable chargingRateUnit, for example in
+        ///Amperes(A) or Watts(W). Accepts at most one digit
+        ///fraction(e.g. 8.1).
+        /// </summary>
+        [Required]
+        public decimal Limit { set; get; }
+
+        /// <summary>
+        /// The number of phases that can be used for
+        /// charging.If a number of phases is needed,
+        ///numberPhases=3 will be assumed unless another
+        ///number is given.
+        /// </summary>
+        public int? NumberPhases { set; get; }
+
+        /// <summary>
+        /// Values: 1..3, Used if numberPhases=1 and if the
+        ///   EVSE is capable of switching the phase connected to the
+        ///EV, i.e.ACPhaseSwitchingSupported is defined and true.
+        ///It’s not allowed unless both conditions above are true. If
+        ///both conditions are true, and phaseToUse is omitted, the
+        ///Charging Station / EVSE will make the selection on its
+        ///own.
+        /// </summary>
+        public int? PhaseToUse { set; get; }
+
+    }
+}

+ 71 - 0
EVCB_OCPP.Packet20/DataTypes/ChargingScheduleType.cs

@@ -0,0 +1,71 @@
+using EVCB_OCPP.Packet20.DataTypes.EnumTypes;
+using EVCB_OCPP.Packet20.Utilites;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class ChargingScheduleType
+    {
+        /// <summary>
+        /// Starting point of an absolute schedule. If absent
+        /// the schedule will be relative to start of charging.
+        /// </summary>
+        [JsonConverter(typeof(UTCDateTimeConverter))]
+        public DateTime? StartSchedule { set; get; }
+
+        /// <summary>
+        /// Duration of the charging schedule in seconds. If
+        /// the duration is left empty, the last period will continue
+        ///indefinitely or until end of the transaction in case
+        ///startSchedule is absent.
+        /// </summary>
+        public int? Duration { set; get; }
+
+        /// <summary>
+        /// The unit of measure Limit is expressed in.
+        /// </summary>
+        [Required]
+        public ChargingRateUnitEnumType ChargingRateUnit { set; get; }
+
+        /// <summary>
+        /// Minimum charging rate supported by the EV.
+        /// The unit of measure is defined by the chargingRateUnit.
+        /// This parameter is intended to be used by a local smart
+        ///  charging algorithm to optimize the power allocation for in
+        ///  the case a charging process is inefficient at lower
+        /// charging rates.Accepts at most one digit fraction (e.g.8.1)
+        /// </summary>
+        public decimal? MinChargingRate { set; get; }
+
+        /// <summary>
+        /// Identifies the ChargingSchedule.
+        /// </summary>
+        [Required]
+        public int Id { set; get; }
+
+        /// <summary>
+        /// List of ChargingSchedulePeriod elements
+        ///  defining maximum power or current usage over time.The
+        ///  maximum number of periods, that is supported by the
+        ///  Charging Station, if less than 1024, is set by device model
+        ///  variable SmartChargingCtrlr.PeriodsPerSchedule.
+        /// </summary>
+        [Required]
+        public List<ChargingSchedulePeriodType> ChargingSchedulePeriod { set; get; }
+
+        /// <summary>
+        /// Sales tariff associated with this charging
+        /// schedule.
+        /// </summary>
+        public SalesTariffType? SalesTariff { set; get; }
+
+
+
+    }
+}

+ 48 - 0
EVCB_OCPP.Packet20/DataTypes/ChargingStationType.cs

@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class ChargingStationType
+    {
+        /// <summary>
+        ///Vendor-specific device identifier.
+        /// </summary>
+        [StringLength(25, MinimumLength = 0)]
+        public string SerialNumber { set; get; }
+
+        /// <summary>
+        ///Defines the model of the device.
+        /// </summary>
+        [StringLength(20, MinimumLength = 0)]
+        [Required]
+        public string Model { set; get; }
+
+        /// <summary>
+        ///Identifies the vendor (not necessarily in a
+        /// unique manner).
+        /// </summary>
+        [StringLength(50, MinimumLength = 0)]
+        [Required]
+        public string VendorName { set; get; }
+
+        /// <summary>
+        ///Vendor-specific device identifier.
+        /// </summary>
+        [StringLength(50, MinimumLength = 0)]
+        public string FirmwareVersion { set; get; }
+
+        /// <summary>
+        ///Defines the functional parameters of a
+        /// communication link.
+        /// </summary>
+        [StringLength(25, MinimumLength = 0)]
+        public ModemType Modem { set; get; }
+
+
+    }
+}

+ 40 - 0
EVCB_OCPP.Packet20/DataTypes/ClearChargingProfileType.cs

@@ -0,0 +1,40 @@
+using EVCB_OCPP.Packet20.DataTypes.EnumTypes;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class ClearChargingProfileType
+    {
+        /// <summary>
+        /// Specifies the id of the EVSE for which to clear
+        /// charging profiles.An evseId of zero (0) specifies the
+        ////charging profile for the overall Charging Station.Absence
+        ///of this parameter means the clearing applies to all
+        ///charging profiles that match the other criteria in the
+        ///request.
+        /// </summary>
+        public int? EvseId { set; get; }
+
+        /// <summary>
+        /// Specifies to purpose of the charging profiles
+        ///that will be cleared, if they meet the other criteria in the
+        ///request.
+        /// </summary>
+        [JsonConverter(typeof(StringEnumConverter))]
+        public ChargingProfilePurposeEnumType? ChargingProfilePurpose { set; get; }
+
+        /// <summary>
+        /// Specifies the stackLevel for which charging
+        ///profiles will be cleared, if they meet the other criteria in
+        ///the request.
+        /// </summary>
+        public int? StackLevel { set; get; }
+
+    }
+}

+ 30 - 0
EVCB_OCPP.Packet20/DataTypes/ClearMonitoringResultType.cs

@@ -0,0 +1,30 @@
+using EVCB_OCPP.Packet20.DataTypes.EnumTypes;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class ClearMonitoringResultType
+    {
+        /// <summary>
+        /// Id of the monitor of which a clear was requested.
+        /// </summary>
+        [Required]
+        public int Id { set; get; }
+
+
+        /// <summary>
+        /// Result of the clear request for this monitor,
+        ///identified by its Id.
+        /// </summary>
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public ClearMonitoringStatusEnumType Status { set; get; }
+    }
+}

+ 40 - 0
EVCB_OCPP.Packet20/DataTypes/ComponentType.cs

@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class ComponentType
+    {
+        /// <summary>
+        /// Name of the component. Name should be
+        ///taken from the list of standardized component names
+        ///whenever possible.Case Insensitive.strongly advised to
+        ///use Camel Case.
+        /// </summary>
+        [StringLength(50, MinimumLength = 0)]
+        [Required]
+        public string Name { set; get; }
+
+
+        /// <summary>
+        /// Name of instance in case the component exists
+        ///as multiple instances.Case Insensitive.strongly advised
+        ///to use Camel Case.
+        /// </summary>
+        [StringLength(50, MinimumLength = 0)]
+        public string Instance { set; get; }
+
+        /// <summary>
+        /// Specifies the EVSE when component is located
+        ///  at EVSE level, also specifies the connector when
+        ///component is located at Connector level.
+        /// </summary>
+        public EVSEType Evse { set; get; }
+
+
+    }
+}

+ 24 - 0
EVCB_OCPP.Packet20/DataTypes/ComponentVariableType.cs

@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class ComponentVariableType
+    {
+        /// <summary>
+        /// Component for which a report of Variable is
+        ///requested.
+        /// </summary>
+        [Required]
+        public ComponentType Component { set; get; }
+
+        /// <summary>
+        /// Variable(s) for which the report is requested.
+        /// </summary>
+        public VariableType Variable { set; get; }
+    }
+}

+ 30 - 0
EVCB_OCPP.Packet20/DataTypes/CompositeScheduleType.cs

@@ -0,0 +1,30 @@
+using EVCB_OCPP.Packet20.Utilites;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class CompositeScheduleType
+    {
+        /// <summary>
+        /// Date and time at which the schedule becomes
+        /// active.All time measurements within the schedule are
+        //// relative to this timestamp.
+        /// </summary>
+        [JsonConverter(typeof(UTCDateTimeConverter))]
+        [Required]
+        public DateTime StartDateTime { set; get; }
+
+        /// <summary>
+        /// Charging schedule structure defines a list of
+        ///charging periods.
+        /// </summary>
+        [Required]
+        public ChargingScheduleType ChargingSchedule { set; get; }
+    }
+}

+ 26 - 0
EVCB_OCPP.Packet20/DataTypes/ConsumptionCostType.cs

@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+   public class ConsumptionCostType
+    {
+        /// <summary>
+        /// The lowest level of consumption that defines
+        ///the starting point of this consumption block.The block
+       /// interval extends to the start of the next interval.
+        /// </summary>
+        [Required]
+        public decimal StartValue { set; get; }
+
+        /// <summary>
+        /// This field contains the cost details.
+        /// </summary>
+        [Required]
+        public CostType Cost { set; get; }
+    }
+}

+ 37 - 0
EVCB_OCPP.Packet20/DataTypes/CostType.cs

@@ -0,0 +1,37 @@
+using EVCB_OCPP.Packet20.DataTypes.EnumTypes;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class CostType
+    {
+        /// <summary>
+        /// The kind of cost referred to in the message
+        ///   element amount
+        /// </summary>
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public CostKindEnumType CostKind { set; get; }
+
+        /// <summary>
+        /// The estimated or actual cost per kWh
+        /// </summary>
+        [Required]
+        public int Amount { set; get; }
+
+        /// <summary>
+        /// Values: -3..3, The amountMultiplier defines the
+        ///exponent to base 10 (dec). The final value is determined
+        ///by: amount* 10 ^ amountMultiplier
+        /// </summary>
+        public int? AmountMultiplier { set; get; }
+
+    }
+}

+ 68 - 0
EVCB_OCPP.Packet20/DataTypes/DCChargingParametersType.cs

@@ -0,0 +1,68 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class DCChargingParametersType
+    {
+        /// <summary>
+        /// Maximum current (amps) supported by the
+        ///electric vehicle.Includes cable capacity.
+        /// </summary>
+        [Required]
+        public int EvMaxCurrent { set; get; }
+
+        /// <summary>
+        /// Maximum voltage supported by the electric
+        /// vehicle
+        /// </summary>
+        [Required]
+        public int EvMaxVoltage { set; get; }
+
+
+        /// <summary>
+        /// Amount of energy requested (in Wh). This
+        ///inludes energy required for preconditioning.
+        /// </summary>        
+        public int EnergyAmount { set; get; }
+
+        /// <summary>
+        /// Maximum power (in W) supported by the
+        ///electric vehicle.Required for DC charging.
+        /// </summary>        
+        public int EvMaxPower { set; get; }
+
+        /// <summary>
+        /// Energy available in the battery (in percent of the
+        /// battery capacity)
+        /// </summary>        
+        [Range(0, 100)]
+        public int? StateOfCharge { set; get; }
+
+        /// <summary>
+        /// Capacity of the electric vehicle battery (in Wh)
+        /// </summary>        
+        [Range(0, 100)]
+        public int? EvEnergyCapacity { set; get; }
+
+        /// <summary>
+        ///Percentage of SoC at which the EV considers
+        ///the battery fully charged. (possible values: 0 - 100)
+        /// </summary>        
+        [Range(0, 100)]
+        public int? FullSoC { set; get; }
+
+        /// <summary>
+        ///Percentage of SoC at which the EV considers a
+        ///fast charging process to end. (possible values: 0 - 100)
+        /// </summary>        
+        [Range(0, 100)]
+        public int? BulkSoC { set; get; }
+
+
+    }
+}

+ 25 - 0
EVCB_OCPP.Packet20/DataTypes/EVSEType.cs

@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes
+{
+    public class EVSEType
+    {
+        /// <summary>
+        /// EVSE Identifier. This contains a number (> 0)
+        ///designating an EVSE of the Charging Station.
+        /// </summary>
+        [Required]
+        public int Id { set; get; }
+
+        /// <summary>
+        /// An id to designate a specific connector (on an
+        /// EVSE) by connector index number.
+        /// </summary>
+        public int? ConnectorId { set; get; }
+    }
+}

+ 21 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/APNAuthenticationEnumType.cs

@@ -0,0 +1,21 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum APNAuthenticationEnumType
+    {/// <summary>
+     ///  Use CHAP authentication
+     /// </summary>
+        CHAP = 1,
+        /// <summary>
+        ///  Use no authentication
+        /// </summary>
+        NONE,
+        /// <summary>
+        ///  Use PAP authentication
+        /// </summary>
+        PAP,
+        /// <summary>
+        ///  Sequentially try CHAP, PAP, NONE.
+        /// </summary>
+        AUTO
+    }
+}

+ 22 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/AttributeEnumType.cs

@@ -0,0 +1,22 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum AttributeEnumType
+    {
+        /// <summary>
+        ///  The actual value of the variable.
+        /// </summary>
+        Actual = 1,
+        /// <summary>
+        ///  The target value for this variable.
+        /// </summary>
+        Target,
+        /// <summary>
+        ///  The minimal allowed value for this variable
+        /// </summary>
+        MinSet,
+        /// <summary>
+        ///  Thne maximum allowed value for this variable
+        /// </summary>
+        MaxSet
+    }
+}

+ 47 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/AuthorizationStatusEnumType.cs

@@ -0,0 +1,47 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum AuthorizationStatusEnumType
+    {
+        /// <summary>
+        ///  Identifier is allowed for charging.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Identifier has been blocked. Not allowed for charging.
+        /// </summary>
+        Blocked,
+        /// <summary>
+        ///  Identifier is already involved in another transaction and multiple transactions are not allowed. (Only relevant
+        ///  for the response to a transactionEventRequest(eventType = Started).)
+        /// </summary>
+        ConcurrentTx,
+        /// <summary>
+        ///  Identifier has expired. Not allowed for charging.
+        /// </summary>
+        Expired,
+        /// <summary>
+        ///  Identifier is invalid. Not allowed for charging.
+        /// </summary>
+        Invalid,
+        /// <summary>
+        ///  Identifier is valid, but EV Driver doesn’t have enough credit to start charging. Not allowed for charging.        ///
+        /// </summary>
+        NotAllowedTypeEVSE,
+        /// <summary>
+        /// Identifier is valid, but not allowed to charge it this type of EVSE.
+        /// </summary>
+        NoCredit,
+        /// <summary>
+        /// Identifier is valid, but not allowed to charge at this location.
+        /// </summary>
+        NotAtThisLocation,
+        /// <summary>
+        ///  Identifier is valid, but not allowed to charge at this location at this time.
+        /// </summary>
+        NotAtThisTime,
+        /// <summary>
+        ///  Identifier is unknown. Not allowed for charging.
+        /// </summary>
+        Unknown
+    }
+}

+ 40 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/AuthorizeCertificateStatusEnumType.cs

@@ -0,0 +1,40 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum AuthorizeCertificateStatusEnumType
+    {
+        /// <summary>
+        ///  Positive response
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        /// If the validation of the Security element in the message header failed.
+        /// </summary>
+        SignatureError,
+        /// <summary>
+        ///  If the OEMProvisioningCert in the CertificateInstallationReq, the Contract Certificate in the
+        ///   CertificateUpdateReq, or the ContractCertificate in the PaymentDetailsReq is expired.
+        /// </summary>
+        CertificateExpired,
+        /// <summary>
+        ///  Used when the SECC or CSMS matches the ContractCertificate contained in a CertificateUpdateReq or
+        ///PaymentDetailsReq with a CRL and the Contract Certificate is marked as revoked, OR when the SECC or
+        ///CSMS matches the OEM Provisioning Certificate contained in a CertificateInstallationReq with a CRL and the
+        ///OEM Provisioning Certificate is marked as revoked.
+        ///
+        ///  The revocation status can alternatively be obtained through an OCSP responder.
+        /// </summary>
+        CertificateRevoked,
+        /// <summary>
+        ///If the new certificate cannot be retrieved from secondary actor within the specified timeout 
+        /// </summary>
+        NoCertificateAvailable,
+        /// <summary>
+        /// If the ContractSignatureCertChain contained in the CertificateInstallationReq message is not valid.
+        /// </summary>
+        CertChainError,
+        /// <summary>
+        ///  If the EMAID provided by EVCC during CertificateUpdateReq is not accepted by secondary actor.
+        /// </summary>
+        ContractCancelled
+    }
+}

+ 42 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/BootReasonEnumType.cs

@@ -0,0 +1,42 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum BootReasonEnumType
+    {
+        /// <summary>
+        /// The Charging Station rebooted due to an application error.
+        /// </summary>
+        ApplicationReset = 1,
+        /// <summary>
+        ///  The Charging Station rebooted due to a firmware update.
+        /// </summary>
+        FirmwareUpdate,
+        /// <summary>
+        /// The Charging Station rebooted due to a local reset command.
+        /// </summary>
+        LocalReset,
+        /// <summary>
+        ///  The Charging Station powered up and registers itself with the CSMS.
+        /// </summary>
+        PowerUp,
+        /// <summary>
+        /// The Charging Station rebooted due to a remote reset command.
+        /// </summary>
+        RemoteReset,
+        /// <summary>
+        /// The Charging Station rebooted due to a scheduled reset command.
+        /// </summary>
+        ScheduledReset,
+        /// <summary>
+        ///  Requested by the CSMS via a TriggerMessage
+        /// </summary>
+        Triggered,
+        /// <summary>
+        ///  The boot reason is unknown.
+        /// </summary>
+        Unknown,
+        /// <summary>
+        /// The Charging Station rebooted due to an elapsed watchdog timer
+        /// </summary>
+        Watchdog
+    }
+}

+ 15 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/CancelReservationStatusEnumType.cs

@@ -0,0 +1,15 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum CancelReservationStatusEnumType
+    {
+        /// <summary>
+        /// Reservation for the identifier has been canceled.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        /// Reservation could not be canceled, because there is no reservation active for the identifier.
+        /// </summary>
+        Rejected
+
+    }
+}

+ 14 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/CertificateActionEnumType.cs

@@ -0,0 +1,14 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum CertificateActionEnumType
+    {
+        /// <summary>
+        /// Install the provided certificate.
+        /// </summary>
+        Install = 1,
+        /// <summary>
+        /// Update the provided certificate.
+        /// </summary>
+        Update
+    }
+}

+ 14 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/CertificateSignedStatusEnumType.cs

@@ -0,0 +1,14 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum CertificateSignedStatusEnumType
+    {
+        /// <summary>
+        /// Signed certificate is valid.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        /// Signed certificate is invalid.
+        /// </summary>
+        Rejected
+    }
+}

+ 15 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/CertificateSigningUseEnumType.cs

@@ -0,0 +1,15 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum CertificateSigningUseEnumType
+    {
+        /// <summary>
+        /// Client side certificate used by the Charging Station to connect the the CSMS.
+        /// </summary>
+        ChargingStationCertificate = 1,
+        /// <summary>
+        /// Use for certificate for 15118 connections. This means that the certificate should be derived from the V2G
+        ///root.
+        /// </summary>
+        V2GCertificate
+    }
+}

+ 18 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChangeAvailabilityStatusEnumType.cs

@@ -0,0 +1,18 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ChangeAvailabilityStatusEnumType
+    {
+        /// <summary>
+        ///  Request has been accepted and will be executed.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        /// Request has not been accepted and will not be executed.
+        /// </summary>
+        Rejected,
+        /// <summary>
+        /// Request has been accepted and will be executed when transaction(s) in progress have finished.
+        /// </summary>
+        Scheduled
+    }
+}

+ 22 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChargingLimitSourceEnumType.cs

@@ -0,0 +1,22 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ChargingLimitSourceEnumType
+    {
+        /// <summary>
+        ///  Indicates that an Energy Management System has sent a charging limit.
+        /// </summary>
+        EMS = 1,
+        /// <summary>
+        /// Indicates that an external source, not being an EMS or system operator, has sent a charging limit.
+        /// </summary>
+        Other,
+        /// <summary>
+        ///  Indicates that a System Operator (DSO or TSO) has sent a charging limit.
+        /// </summary>
+        SO,
+        /// <summary>
+        ///  Indicates that the CSO has set this charging profile.
+        /// </summary>
+        CSO
+    }
+}

+ 19 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChargingProfileKindEnumType.cs

@@ -0,0 +1,19 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ChargingProfileKindEnumType
+    {
+        /// <summary>
+        /// Schedule periods are relative to a fixed point in time defined in the schedule.
+        /// </summary>
+        Absolute = 1,
+        /// <summary>
+        /// The schedule restarts periodically at the first schedule period.
+        /// </summary>
+        Recurring,
+        /// <summary>
+        /// Schedule periods are relative to a situation-specific start point (such as the start of a session) that is
+        /// determined by the Charging Profile.
+        /// </summary>
+        Relative
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChargingProfilePurposeEnumType.cs

@@ -0,0 +1,27 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ChargingProfilePurposeEnumType
+    {
+        /// <summary>
+        /// Additional constraints that will be incorporated into a local power schedule. Only valid for a Charging Station.
+        ///Therefore evse.Id MUST be 0 in the SetChargingProfileRequest message.
+        /// </summary>
+        ChargingStationExternalConstraints = 1,
+        /// <summary>
+        /// Configuration for the maximum power or current available for an entire Charging Station.
+        /// </summary>
+        ChargingStationMaxProfile,
+        /// <summary>
+        /// Default profile that can be configured in the Charging Station. When a new transaction is started, this profile
+        ///SHALL be used, unless it was a transaction that was started by a RequestStartTransactionRequest with a
+        ///ChargingProfile that is accepted by the Charging Station.
+        /// </summary>
+        TxDefaultProfile,
+        /// <summary>
+        /// Profile with constraints to be imposed by the Charging Station on the current transaction, or on a new
+        /// transaction when this is started via a RequestStartTransactionRequest with a ChargingProfile. A profile with
+        ///this purpose SHALL cease to be valid when the transaction terminates.
+        /// </summary>
+        TxProfile
+    }
+}

+ 15 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChargingProfileStatusEnumType.cs

@@ -0,0 +1,15 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ChargingProfileStatusEnumType
+    {
+        /// <summary>
+        /// Request has been accepted and will be executed.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        /// Request has not been accepted and will not be executed.
+        /// </summary>
+        Rejected
+
+    }
+}

+ 20 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChargingRateUnitEnumType.cs

@@ -0,0 +1,20 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ChargingRateUnitEnumType
+    {
+        /// <summary>
+        /// Watts (power). This is the TOTAL allowed charging power. If used for AC Charging, the phase current should
+        ///be calculated via: Current per phase = Power / (Line Voltage * Number of Phases). The "Line Voltage" used in
+        ///the calculation is not the measured voltage, but the set voltage for the area (hence, 230 of 110 volt). The
+        ///"Number of Phases" is the numberPhases from the ChargingSchedulePeriod. It is usually more convenient to
+        ///use this for DC charging. Note that if numberPhases in a ChargingSchedulePeriod is absent, 3 SHALL be
+        ///assumed.
+        /// </summary>
+        W = 1,
+        /// <summary>
+        /// Amperes (current). The amount of Ampere per phase, not the sum of all phases. It is usually more
+        /// convenient to use this for AC charging.
+        /// </summary>
+        A
+    }
+}

+ 31 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ChargingStateEnumType.cs

@@ -0,0 +1,31 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ChargingStateEnumType
+    {
+        /// <summary>
+        /// The contactor of the Connector is closed and energy is flowing to between EVSE and EV.
+        /// </summary>
+        Charging = 1,
+        /// <summary>
+        /// There is a connection between EV and EVSE, in case the protocol used between EV and the Charging Station
+        /// can detect a connection, the protocol needs to detect this for the state to become active. The connection
+        ///can either be wired or wireless.
+        /// </summary>
+        EVConnected,
+        /// <summary>
+        /// When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy.
+        /// </summary>
+        SuspendedEV,
+        /// <summary>
+        /// When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart
+        /// charging restriction, local supply power constraints, or when charging has stopped because of the
+        ///authorization status in the response to a transactionEventRequest indicating that charging is not allowed
+        ///etc.
+        /// </summary>
+        SuspendedEVSE,
+        /// <summary>
+        /// There is no connection between EV and EVSE.
+        /// </summary>
+        Idle
+    }
+}

+ 14 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ClearCacheStatusEnumType.cs

@@ -0,0 +1,14 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ClearCacheStatusEnumType
+    {
+        /// <summary>
+        ///  Command has been executed.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Command has not been executed.
+        /// </summary>
+        Rejected
+    }
+}

+ 14 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ClearChargingProfileStatusEnumType.cs

@@ -0,0 +1,14 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ClearChargingProfileStatusEnumType
+    {
+        /// <summary>
+        /// Request has been accepted and will be executed.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  No Charging Profile(s) were found matching the request.
+        /// </summary>
+        Unknown
+    }
+}

+ 14 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ClearMessageStatusEnumType.cs

@@ -0,0 +1,14 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ClearMessageStatusEnumType
+    {
+        /// <summary>
+        ///  Request successfully executed: message cleared.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Given message (based on the id) not known.
+        /// </summary>
+        Unknown
+    }
+}

+ 19 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ClearMonitoringStatusEnumType.cs

@@ -0,0 +1,19 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ClearMonitoringStatusEnumType
+    {
+        /// <summary>
+        ///  Monitor successfully cleared.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        /// Clearing of monitor rejected.
+        /// </summary>
+        Rejected,
+        /// <summary>
+        ///  Monitor Id is not found.
+        /// </summary>
+        NotFound
+
+    }
+}

+ 22 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ComponentCriterionEnumType.cs

@@ -0,0 +1,22 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ComponentCriterionEnumType
+    {
+        /// <summary>
+        ///  Components that are active, i.e. having Active = 1
+        /// </summary>
+        Active = 1,
+        /// <summary>
+        ///  Components that are available, i.e. having Available = 1
+        /// </summary>
+        Available,
+        /// <summary>
+        ///  Components that are enabled, i.e. having Enabled = 1
+        /// </summary>
+        Enabled,
+        /// <summary>
+        ///  Components that reported a problem, i.e. having Problem = 1
+        /// </summary>
+        Problem
+    }
+}

+ 102 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ConnectorEnumType.cs

@@ -0,0 +1,102 @@
+using Newtonsoft.Json;
+
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ConnectorEnumType
+    {
+        /// <summary>
+        ///  Combined Charging System 1 (captive cabled) a.k.a. Combo 1
+        /// </summary>
+        cCCS1 = 1,
+        /// <summary>
+        ///  Combined Charging System 2 (captive cabled) a.k.a. Combo 2
+        /// </summary>
+        cCCS2,
+        /// <summary>
+        ///  JARI G105-1993 (captive cabled) a.k.a. CHAdeMO
+        /// </summary>
+        cG105,
+        /// <summary>
+        ///  Tesla Connector (captive cabled)
+        /// </summary>
+        cTesla,
+        /// <summary>
+        ///  IEC62196-2 Type 1 connector (captive cabled) a.k.a. J1772
+        /// </summary>
+        cType1,
+        /// <summary>
+        ///  IEC62196-2 Type 2 connector (captive cabled) a.k.a. Mennekes connector
+        /// </summary>
+        cType2,
+        /// <summary>
+        ///  16A 1 phase IEC60309 socket
+        /// </summary>
+        [JsonProperty("s309-1P-16A")]
+        s309_1P_16A,
+        /// <summary>
+        ///  32A 1 phase IEC60309 socket
+        /// </summary>
+        [JsonProperty("s309-1P-32A")]
+        s309_1P_32A,
+        /// <summary>
+        ///  16A 3 phase IEC60309 socket
+        /// </summary>
+        [JsonProperty("s309-3P-16A")]
+        s309_3P_16A,
+        /// <summary>
+        ///  32A 3 phase IEC60309 socket
+        /// </summary>
+        [JsonProperty("s309-3P-32A")]
+        s309_3P_32A,
+        /// <summary>
+        ///  UK domestic socket a.k.a. 13Amp
+        /// </summary>
+        sBS1361,
+        /// <summary>
+        ///  CEE 7/7 16A socket. May represent 7/4 & 7/5 a.k.a Schuko
+        /// </summary>
+        [JsonProperty("sCEE-7-7")]
+        sCEE_7_7,
+        /// <summary>
+        ///  IEC62196-2 Type 2 socket a.k.a. Mennekes connector
+        /// </summary>
+        sType2,
+        /// <summary>
+        ///  IEC62196-2 Type 2 socket a.k.a. Scame
+        /// </summary>
+        sType3,
+        /// <summary>
+        ///  Other single phase (domestic) sockets not mentioned above, rated at no more than 16A. CEE7/17, AS3112,
+        /// NEMA 5-15, NEMA 5-20, JISC8303, TIS166, SI 32, CPCS-CCC, SEV1011, etc.
+        /// </summary>
+        Other1PhMax16A,
+        /// <summary>
+        ///  Other single phase sockets not mentioned above (over 16A)
+        /// </summary>
+        Other1PhOver16A,
+        /// <summary>
+        ///  Other 3 phase sockets not mentioned above. NEMA14-30, NEMA14-50.
+        /// </summary>
+        Other3Ph,
+        /// <summary>
+        ///  Pantograph connector
+        /// </summary>
+        Pan,
+        /// <summary>
+        ///  Wireless inductively coupled connection (generic)
+        /// </summary>
+        wInductive,
+        /// <summary>
+        ///  Wireless resonant coupled connection (generic)
+        /// </summary>
+        wResonant,
+        /// <summary>
+        ///  Yet to be determined (e.g. before plugged in)
+        /// </summary>
+        Undetermined,
+        /// <summary>
+        ///  Unknown; not determinable
+        /// </summary>
+        Unknown
+    }
+}

+ 30 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ConnectorStatusEnumType.cs

@@ -0,0 +1,30 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ConnectorStatusEnumType
+    {
+        /// <summary>
+        ///  When a Connector becomes available for a new User(Operative)
+        /// </summary>
+        Available = 1,
+        /// <summary>
+        ///  When a Connector becomes occupied, so it is not available for a new EV driver. (Operative)
+        /// </summary>
+        Occupied,
+        /// <summary>
+        ///  When a Connector becomes reserved as a result of ReserveNow command(Operative)
+        /// </summary>
+        Reserved,
+        /// <summary>
+        ///  When a Connector becomes unavailable as the result of a Change Availability command or an event upon
+        ///which the Charging Station transitions to unavailable at its discretion.Upon receipt of ChangeAvailability
+        ///message command, the status MAY change immediately or the change MAY be scheduled.When
+        ///scheduled, StatusNotification SHALL be send when the availability change becomes effective (Inoperative)
+        /// </summary>
+        Unavailable,
+        /// <summary>
+        ///  When a Connector (or the EVSE or the entire Charging Station it belongs to) has reported an error and is not
+        ///available for energy delivery. (Inoperative).
+        /// </summary>
+        Faulted
+    }
+}

+ 20 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/CostKindEnumType.cs

@@ -0,0 +1,20 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum CostKindEnumType
+    {
+        /// <summary>
+        /// Absolute value. Carbon Dioxide emissions, in grams per kWh.
+        /// </summary>
+        CarbonDioxideEmission,
+        /// <summary>
+        /// Relative value. Price per kWh, as percentage relative to the maximum price stated in any of all tariffs
+        ///indicated to the EV.
+        /// </summary>
+        RelativePricePercentage,
+        /// <summary>
+        /// Relative value. Percentage of renewable generation within total generation.
+        /// </summary>
+        RenewableGenerationPercentage,
+
+    }
+}

+ 18 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/CustomerInformationStatusEnumType.cs

@@ -0,0 +1,18 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum CustomerInformationStatusEnumType
+    {
+        /// <summary>
+        ///  The Charging Station accepted the message.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  When the Charging Station is in a state where it cannot process this request.
+        /// </summary>
+        Rejected,
+        /// <summary>
+        ///  In a request to the Charging Station no reference to a customer is included.
+        /// </summary>
+        Invalid
+    }
+}

+ 44 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/DataEnumType.cs

@@ -0,0 +1,44 @@
+using Newtonsoft.Json;
+
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum DataEnumType
+    {
+
+        /// <summary>
+        ///  This variable is of the type string.
+        /// </summary>
+        [JsonProperty("string")]
+        _string,
+        /// <summary>
+        ///  This variable is of the type decimal.
+        /// </summary>
+        [JsonProperty("decimal")]
+        _decimal,
+        /// <summary>
+        ///  This variable is of the type integer.
+        /// </summary>
+        integer,
+        /// <summary>
+        ///  DateTime following the [RFC3339] specification.
+        /// </summary>
+        dateTime,
+        /// <summary>
+        ///  This variable is of the type boolean.
+        /// </summary>
+        boolean,
+        /// <summary>
+        ///  Supported/allowed values for a single choice, enumerated, text variable.
+        /// </summary>
+        OptionList,
+        /// <summary>
+        ///  Supported/allowed values for an ordered sequence variable.
+        /// </summary>
+        SequenceList,
+        /// <summary>
+        ///  Supported/allowed values for a mathematical set variable.
+        /// </summary>
+        MemberList
+
+    }
+}

+ 22 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/DataTransferStatusEnumType.cs

@@ -0,0 +1,22 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum DataTransferStatusEnumType
+    {
+        /// <summary>
+        ///  Message has been accepted and the contained request is accepted.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Message has been accepted but the contained request is rejected.
+        /// </summary>
+        Rejected,
+        /// <summary>
+        ///  Message could not be interpreted due to unknown messageId string.
+        /// </summary>
+        UnknownMessageId,
+        /// <summary>
+        ///  Message could not be interpreted due to unknown vendorId string.
+        /// </summary>
+        UnknownVendorId
+    }
+}

+ 18 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/DeleteCertificateStatusEnumType.cs

@@ -0,0 +1,18 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum DeleteCertificateStatusEnumType
+    {
+        /// <summary>
+        ///  Normal successful completion (no errors).
+        /// </summary>
+        Accepted,
+        /// <summary>
+        ///  Processing failure.
+        /// </summary>
+        Failed,
+        /// <summary>
+        ///  Requested resource not found.
+        /// </summary>
+        NotFound
+    }
+}

+ 30 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/DisplayMessageStatusEnumType.cs

@@ -0,0 +1,30 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum DisplayMessageStatusEnumType
+    {
+        /// <summary>
+        ///  Request to display message accepted.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        /// None of the formats in the given message are supported.
+        /// </summary>
+        NotSupportedMessageFormat,
+        /// <summary>
+        ///  Request cannot be handled.
+        /// </summary>
+        Rejected,
+        /// <summary>
+        /// The given MessagePriority not supported for displaying messages by Charging Station.
+        /// </summary>
+        NotSupportedPriority,
+        /// <summary>
+        ///  The given MessageState not supported for displaying messages by Charging Station.
+        /// </summary>
+        NotSupportedState,
+        /// <summary>
+        /// Given Transaction not known/ongoing.
+        /// </summary>
+        UnknownTransaction
+    }
+}

+ 22 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/EnergyTransferModeEnumType.cs

@@ -0,0 +1,22 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum EnergyTransferModeEnumType
+    {
+        /// <summary>
+        ///  DC charging.
+        /// </summary>
+        DC = 1,
+        /// <summary>
+        ///  AC single phase charging according to IEC 62196.
+        /// </summary>
+        AC_single_phase,
+        /// <summary>
+        ///  AC two phase charging according to IEC 62196.
+        /// </summary>
+        AC_two_phase,
+        /// <summary>
+        ///  AC three phase charging according to IEC 62196.
+        /// </summary>
+        AC_three_phase
+    }
+}

+ 23 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/EventNotificationEnumType.cs

@@ -0,0 +1,23 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum EventNotificationEnumType
+    {
+        /// <summary>
+        /// The software implemented by the manufacturer triggered a hardwired notification.
+        /// </summary>
+        HardWiredNotification = 1,
+        /// <summary>
+        ///  Triggered by a monitor, which is hardwired by the manufacturer.
+        /// </summary>
+        HardWiredMonitor,
+        /// <summary>
+        /// Triggered by a monitor, which is preconfigured by the manufacturer.
+        /// </summary>
+        PreconfiguredMonitor,
+        /// <summary>
+        ///  Triggered by a monitor, which is set with the setvariablemonitoringrequest message by the Charging Station
+        /// Operator.
+        /// </summary>
+        CustomMonitor
+    }
+}

+ 18 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/EventTriggerEnumType.cs

@@ -0,0 +1,18 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum EventTriggerEnumType
+    {
+        /// <summary>
+        ///  Monitored variable has passed an Alert or Critical threshold
+        /// </summary>
+        Alerting = 1,
+        /// <summary>
+        ///  Delta Monitored Variable value has changed by more than specified amount
+        /// </summary>
+        Delta,
+        /// <summary>
+        ///  Periodic Monitored Variable has been sampled for reporting at the specified interval
+        /// </summary>
+        Periodic
+    }
+}

+ 66 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/FirmwareStatusEnumType.cs

@@ -0,0 +1,66 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum FirmwareStatusEnumType
+    {
+        /// <summary>
+        ///  Intermediate state. New firmware has been downloaded by Charging Station.
+        /// </summary>
+        Downloaded = 1,
+        /// <summary>
+        ///  Failure end state. Charging Station failed to download firmware.
+        /// </summary>
+        DownloadFailed,
+        /// <summary>
+        ///  Intermediate state. Firmware is being downloaded.
+        /// </summary>
+        Downloading,
+        /// <summary>
+        ///  Intermediate state. Downloading of new firmware has been scheduled.
+        /// </summary>
+        DownloadScheduled,
+        /// <summary>
+        ///  Intermediate state. Downloading has been paused.
+        /// </summary>
+        DownloadPaused,
+        /// <summary>
+        ///  Charging Station is not performing firmware update related tasks. Status Idle SHALL only be used as in a
+        /// FirmwareStatusNotificationRequest that was triggered by TriggerMessageRequest.
+        /// </summary>
+        Idle,
+        /// <summary>
+        ///  Failure end state. Installation of new firmware has failed.
+        /// </summary>
+        InstallationFailed,
+        /// <summary>
+        ///  Intermediate state.Firmware is being installed.
+        /// </summary>
+        Installing,
+        /// <summary>
+        ///  Successful end state.New firmware has successfully been installed in Charging Station.
+        /// </summary>
+        Installed,
+        /// <summary>
+        ///  Intermediate state.Charging Station is about to reboot to activate new firmware.This status MAY be omitted
+        //if a reboot is an integral part of the installation and cannot be reported separately.
+        /// </summary>
+        InstallRebooting,
+        /// <summary>
+        ///  Intermediate state.Installation of the downloaded firmware is scheduled to take place on installDateTime
+        ///  given in UpdateFirmware request.
+        /// </summary>
+        InstallScheduled,
+        /// <summary>
+        /// Failure end state. Verification of the new firmware(e.g. using a checksum or some other means) has failed
+        ///and installation will not proceed. (Final failure state)
+        /// </summary>
+        InstallVerificationFailed,
+        /// <summary>
+        ///  Failure end state.The firmware signature is not valid.
+        /// </summary>
+        InvalidSignature,
+        /// <summary>
+        ///  Intermediate state.Provide signature successfully verified.
+        /// </summary>
+        SignatureVerified
+    }
+}

+ 22 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/GenericDeviceModelStatusEnumType.cs

@@ -0,0 +1,22 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum GenericDeviceModelStatusEnumType
+    {
+        /// <summary>
+        ///  Request has been accepted and will be executed.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Request has not been accepted and will not be executed.
+        /// </summary>
+        Rejected,
+        /// <summary>
+        ///  The content of the request message is not supported.
+        /// </summary>
+        NotSupported,
+        /// <summary>
+        ///  If the combination of received criteria result in an empty result set.
+        /// </summary>
+        EmptyResultSet
+    }
+}

+ 14 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/GenericStatusEnumType.cs

@@ -0,0 +1,14 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum GenericStatusEnumType
+    {
+        /// <summary>
+        ///  Request has been accepted and will be executed.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Request has not been accepted and will not be executed.
+        /// </summary>
+        Rejected
+    }
+}

+ 28 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/GetCertificateIdUseEnumType.cs

@@ -0,0 +1,28 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum GetCertificateIdUseEnumType
+    {
+        /// <summary>
+        ///  Use for certificate of the V2G Root.
+        /// </summary>
+        V2GRootCertificate = 1,
+        /// <summary>
+        ///  Use for certificate from an eMobility Service provider. To support PnC charging with contracts from service
+        ///providers that not derived their certificates from the V2G root.
+        /// </summary>
+        MORootCertificate,
+        /// <summary>
+        /// Root certificate for verification of the CSMS certificate.
+        /// </summary>
+        CSMSRootCertificate,
+        /// <summary>
+        ///  ISO 15118 V2G certificate chain (excluding the V2GRootCertificate).
+        /// </summary>
+        V2GCertificateChain,
+        /// <summary>
+        /// Root certificate for verification of the Manufacturer certificate.
+        /// </summary>
+        ManufacturerRootCertificate
+
+    }
+}

+ 14 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/GetCertificateStatusEnumType.cs

@@ -0,0 +1,14 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum GetCertificateStatusEnumType
+    {
+        /// <summary>
+        ///  Successfully retrieved the OCSP certificate status.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Failed to retrieve the OCSP certificate status.
+        /// </summary>
+        Failed
+    }
+}

+ 14 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/GetChargingProfileStatusEnumType.cs

@@ -0,0 +1,14 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum GetChargingProfileStatusEnumType
+    {
+        /// <summary>
+        ///  Normal successful completion (no errors).
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  No ChargingProfiles found that match the information in the GetChargingProfilesRequest.
+        /// </summary>
+        NoProfiles
+    }
+}

+ 15 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/GetDisplayMessagesStatusEnumType.cs

@@ -0,0 +1,15 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum GetDisplayMessagesStatusEnumType
+    {
+        /// <summary>
+        ///  Request accepted, there are Display Messages found that match all the requested criteria. The Charging
+        ///Station will send NotifyDisplayMessagesRequest messages to report the requested Display Messages.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  No messages found that match the given criteria.
+        /// </summary>
+        Unknown
+    }
+}

+ 15 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/GetInstalledCertificateStatusEnumType.cs

@@ -0,0 +1,15 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum GetInstalledCertificateStatusEnumType
+    {
+        /// <summary>
+        ///  Normal successful completion (no errors).
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Requested resource not found.
+        /// </summary>
+        NotFound
+
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/GetVariableStatusEnumType.cs

@@ -0,0 +1,27 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum GetVariableStatusEnumType
+    {
+        /// <summary>
+        ///  Variable successfully set.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Request is rejected.
+        /// </summary>
+        Rejected,
+        /// <summary>
+        /// Component is not known.
+        /// </summary>
+        UnknownComponent,
+        /// <summary>
+        ///  Variable is not known.
+        /// </summary>
+        UnknownVariable,
+        /// <summary>
+        /// The AttributeType is not supported.
+        /// </summary>
+        NotSupportedAttributeType
+
+    }
+}

+ 18 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/HashAlgorithmEnumType.cs

@@ -0,0 +1,18 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum HashAlgorithmEnumType
+    {
+        /// <summary>
+        ///  SHA-256 hash algorithm.
+        /// </summary>
+        SHA256 = 1,
+        /// <summary>
+        /// SHA-384 hash algorithm.
+        /// </summary>
+        SHA384 = 2,
+        /// <summary>
+        /// SHA-512 hash algorithm.
+        /// </summary>
+        SHA512 = 3,
+    }
+}

+ 37 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/IdTokenEnumType.cs

@@ -0,0 +1,37 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum IdTokenEnumType
+    {
+        /// <summary>
+        /// A centrally, in the CSMS (or other server) generated id (for example used for a remotely started transaction
+        ///that is activated by SMS). No format defined, might be a UUID.
+        /// </summary>
+        Central = 1,
+        /// <summary>
+        /// Electro-mobility account id as defined in ISO 15118
+        /// </summary>
+        eMAID = 2,
+        /// <summary>
+        /// ISO 14443 UID of RFID card. It is represented as an array of 4 or 7 bytes in hexadecimal representation.
+        /// </summary>
+        ISO14443 = 3,
+        /// <summary>
+        /// User use a private key-code to authorize a charging transaction. For example: Pin-code.
+        /// </summary>
+        KeyCode = 4,
+        /// <summary>
+        /// A locally generated id (e.g. internal id created by the Charging Station). No format defined, might be a UUID
+        /// </summary>
+        Local = 5,
+        /// <summary>
+        /// Transaction is started and no authorization possible. Charging Station only has a start button or mechanical
+        ///key etc. IdToken field SHALL be left empty.
+        /// </summary>
+        NoAuthorization = 6,
+        /// <summary>
+        /// ISO 15693 UID of RFID card. It is represented as an array of 8 bytes in hexadecimal representation.
+        /// </summary>
+        ISO15693 = 7
+
+    }
+}

+ 24 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/InstallCertificateStatusEnumType.cs

@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum InstallCertificateStatusEnumType
+    {
+        /// <summary>
+        ///  The installation of the certificate succeeded.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  The certificate is valid and correct, but there is another reason the installation did not succeed.
+        /// </summary>
+        Failed,
+        /// <summary>
+        ///  The certificate is invalid and/or incorrect OR the CSO tries to install more certificates than allowed
+        /// </summary>
+        Rejected
+    }
+}

+ 25 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/InstallCertificateUseEnumType.cs

@@ -0,0 +1,25 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum InstallCertificateUseEnumType
+    {
+        /// <summary>
+        ///  Use for certificate of the V2G Root, a V2G Charging Station Certificate MUST be derived from one of the
+        ///installed V2GRootCertificate certificates.
+        /// </summary>
+        V2GRootCertificate = 1,
+        /// <summary>
+        ///  Use for certificate from an eMobility Service provider. To support PnC charging with contracts from service
+        /// providers that not derived their certificates from the V2G root.
+        /// </summary>
+        MORootCertificate,
+        /// <summary>
+        /// Root certificate for verification of the CSMS certificate.
+        /// </summary>
+        CSMSRootCertificate,
+        /// <summary>
+        /// Root certificate for verification of the Manufacturer certificate.
+        /// </summary>
+        ManufacturerRootCertificate
+
+    }
+}

+ 15 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/Iso15118EVCertificateStatusEnumType.cs

@@ -0,0 +1,15 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum Iso15118EVCertificateStatusEnumType
+    {
+        /// <summary>
+        /// exiResponse included. This is no indication whether the update was successful, just that the message was
+        ///processed properly.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Processing of the message was not successful, no exiResponse included.
+        /// </summary>
+        Failed
+    }
+}

+ 26 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/LocationEnumType.cs

@@ -0,0 +1,26 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum LocationEnumType
+    {
+        /// <summary>
+        ///  Measurement inside body of Charging Station (e.g. Temperature).
+        /// </summary>
+        Body = 1,
+        /// <summary>
+        ///  Measurement taken from cable between EV and Charging Station.
+        /// </summary>
+        Cable,
+        /// <summary>
+        ///  Measurement taken by EV.
+        /// </summary>
+        EV,
+        /// <summary>
+        ///  Measurement at network ("grid") inlet connection.
+        /// </summary>
+        Inlet,
+        /// <summary>
+        ///  Measurement at a Connector. Default value.
+        /// </summary>
+        Outlet
+    }
+}

+ 14 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/LogEnumType.cs

@@ -0,0 +1,14 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum LogEnumType
+    {
+        /// <summary>
+        ///  This contains the field definition of a diagnostics log file
+        /// </summary>
+        DiagnosticsLog = 1,
+        /// <summary>
+        ///  Sent by the CSMS to the Charging Station to request that the Charging Station uploads the security log.
+        /// </summary>
+        SecurityLog
+    }
+}

+ 19 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/LogStatusEnumType.cs

@@ -0,0 +1,19 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum LogStatusEnumType
+    {
+        /// <summary>
+        ///  Accepted this log upload. This does not mean the log file is uploaded is successfully, the Charging Station
+        ///  will now start the log file upload.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Log update request rejected.
+        /// </summary>
+        Rejected,
+        /// <summary>
+        ///  Accepted this log upload, but in doing this has canceled an ongoing log file upload.
+        /// </summary>
+        AcceptedCanceled
+    }
+}

+ 30 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/LogStatusNotificationRequest.cs

@@ -0,0 +1,30 @@
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public class LogStatusNotificationRequest
+    {
+        /// <summary>
+        /// This contains the status of the log upload.
+        /// </summary>
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public UploadLogStatusEnumType Status { set; get; }
+
+        /// <summary>
+        /// The request id that was provided in
+        /// GetLogRequest that started this log upload. This field is
+        ///mandatory, unless the message was triggered by a
+        /// TriggerMessageRequest AND there is no log upload
+        /// ongoing.
+        /// </summary>
+        public int RequestId { set; get; }
+    }
+}

+ 13 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/LogStatusNotificationResponse.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+   public class LogStatusNotificationResponse
+    {
+        
+    }
+}

+ 143 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/MeasurandEnumType.cs

@@ -0,0 +1,143 @@
+using Newtonsoft.Json;
+
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum MeasurandEnumType
+    {
+        /// <summary>
+        ///  Instantaneous current flow from EV
+        /// </summary>
+        [JsonProperty("Current.Export")]
+        Current_Export = 1,
+        /// <summary>
+        ///  Instantaneous current flow to EV
+        /// </summary>
+        [JsonProperty("Current.Import")]
+        Current_Import,
+        /// <summary>
+        ///  Maximum current offered to EV
+        /// </summary>
+        [JsonProperty("Current.Offered")]
+        Current_Offered,
+        /// <summary>
+        /// Numerical value read from the "active electrical energy" (Wh or kWh) register of the (most authoritative)
+        ///electrical meter measuring energy exported (to the grid).
+        /// </summary>
+        [JsonProperty("Energy.Active.Export.Register")]
+        Energy_Active_Export_Register,
+        /// <summary>
+        /// Numerical value read from the "active electrical energy" (Wh or kWh) register of the (most authoritative)
+        ///electrical meter measuring energy imported (from the grid supply).
+        /// </summary>
+        [JsonProperty("Energy.Active.Import.Register")]
+        Energy_Active_Import_Register,
+        /// <summary>
+        /// Numerical value read from the "reactive electrical energy" (varh or kvarh) register of the (most authoritative)
+        ///electrical meter measuring energy exported (to the grid).
+        /// </summary>
+        [JsonProperty("Energy.Reactive.Export.Register")]
+        Energy_Reactive_Export_Register,
+        /// <summary>
+        ///  Numerical value read from the "reactive electrical energy" (varh or kvarh) register of the (most authoritative)
+        ///electrical meter measuring energy imported (from the grid supply).
+        /// </summary>
+        [JsonProperty("Energy.Reactive.Import.Register")]
+        Energy_Reactive_Import_Register,
+        /// <summary>
+        /// Absolute amount of "active electrical energy" (Wh or kWh) exported (to the grid) during an associated time
+        ///"interval", specified by a Metervalues ReadingContext, and applicable interval duration configuration values
+        ///(in seconds) for ClockAlignedDataInterval and TxnMeterValueSampleInterval.
+        /// </summary>
+        [JsonProperty("Energy.Active.Export.Interval")]
+        Energy_Active_Export_Interval,
+        /// <summary>
+        /// Absolute amount of "active electrical energy" (Wh or kWh) imported (from the grid supply) during an
+        /// associated time "interval", specified by a Metervalues ReadingContext, and applicable interval duration
+        ///configuration values (in seconds) for ClockAlignedDataInterval and TxnMeterValueSampleInterval.
+        /// </summary>
+        [JsonProperty("Energy.Active.Import.Interval")]
+        Energy_Active_Import_Interval,
+        /// <summary>
+        ///  Numerical value read from the “net active electrical energy" (Wh or kWh) register.
+        /// </summary>
+        [JsonProperty("Energy.Active.Net")]
+        Energy_Active_Net,
+        /// <summary>
+        /// Absolute amount of "reactive electrical energy" (varh or kvarh) exported (to the grid) during an associated
+        ///time "interval", specified by a Metervalues ReadingContext, and applicable interval duration configuration
+        ///values (in seconds) for ClockAlignedDataInterval and TxnMeterValueSampleInterval.
+        /// </summary>
+        [JsonProperty("Energy.Reactive.Export.Interval")]
+        Energy_Reactive_Export_Interval,
+        /// <summary>
+        ///  Absolute amount of "reactive electrical energy" (varh or kvarh) imported (from the grid supply) during an
+        ///associated time "interval", specified by a Metervalues ReadingContext, and applicable interval duration
+        ///configuration values (in seconds) for ClockAlignedDataInterval and TxnMeterValueSampleInterval.
+        /// </summary>
+        [JsonProperty("Energy.Reactive.Import.Interval")]
+        Energy_Reactive_Import_Interval,
+        /// <summary>
+        ///  Numerical value read from the “net reactive electrical energy" (varh or kvarh) register.
+        /// </summary>
+        [JsonProperty("Energy.Reactive.Net")]
+        Energy_Reactive_Net,
+        /// <summary>
+        ///  Numerical value read from the "apparent electrical energy" (VAh or kVAh) register.
+        /// </summary>
+        [JsonProperty("Energy.Apparent.Net")]
+        Energy_Apparent_Net,
+        /// <summary>
+        ///  Numerical value read from the "apparent electrical import energy" (VAh or kVAh) register.
+        /// </summary>
+        [JsonProperty("Energy.Apparent.Import")]
+        Energy_Apparent_Import,
+        /// <summary>
+        /// Numerical value read from the "apparent electrical export energy" (VAh or kVAh) register.
+        /// </summary>
+        [JsonProperty("Energy.Apparent.Export")]
+        Energy_Apparent_Export,
+        /// <summary>
+        ///  Instantaneous reading of powerline frequency
+        /// </summary>
+        Frequency,
+        /// <summary>
+        ///  Instantaneous active power exported by EV. (W or kW)
+        /// </summary>
+        [JsonProperty("Power.Active.Export")]
+        Power_Active_Export,
+        /// <summary>
+        ///  Instantaneous active power imported by EV. (W or kW)
+        /// </summary>
+        [JsonProperty("Power.Active.Import")]
+        Power_Active_Import,
+        /// <summary>
+        ///  Instantaneous power factor of total energy flow
+        /// </summary>
+        [JsonProperty("Power.Factor")]
+        Power_Factor,
+        /// <summary>
+        ///  Maximum power offered to EV
+        /// </summary>
+        [JsonProperty("Power.Offered")]
+        Power_Offered,
+        /// <summary>
+        /// Instantaneous reactive power exported by EV. (var or kvar)
+        /// </summary>
+        [JsonProperty("Power.Reactive.Export")]
+        Power_Reactive_Export,
+        /// <summary>
+        ///  Instantaneous reactive power imported by EV. (var or kvar)
+        /// </summary>
+        [JsonProperty("Power.Reactive.Import")]
+        Power_Reactive_Import,
+        /// <summary>
+        ///  State of charge of charging vehicle in percentage
+        /// </summary>
+        SoC,
+        /// <summary>
+        ///  Instantaneous DC or AC RMS supply voltage
+        /// </summary>
+        Voltage
+
+    }
+}

+ 23 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/MessageFormatEnumType.cs

@@ -0,0 +1,23 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum MessageFormatEnumType
+    {
+        /// <summary>
+        ///  Message content is ASCII formatted, only printable ASCII allowed.
+        /// </summary>
+        ASCII = 1,
+        /// <summary>
+        ///  Message content is HTML formatted.
+        /// </summary>
+        HTML,
+        /// <summary>
+        ///  Message content is URI that Charging Station should download and use to display. for example a HTML
+        ///page to be shown in a web-browser.
+        /// </summary>
+        URI,
+        /// <summary>
+        ///  Message content is UTF-8 formatted.
+        /// </summary>
+        UTF8
+    }
+}

+ 21 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/MessagePriorityEnumType.cs

@@ -0,0 +1,21 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum MessagePriorityEnumType
+    {
+        /// <summary>
+        ///  Show this message always in front. Highest priority, don’t cycle with other messages. When a newer
+        /// message with this MessagePriority is received, this message is replaced. No Charging Station own message
+        ///may override this message.
+        /// </summary>
+        AlwaysFront = 1,
+        /// <summary>
+        ///  Show this message in front of the normal cycle of messages. When more messages with this priority are to
+        /// be shown, they SHALL be cycled.
+        /// </summary>
+        InFront,
+        /// <summary>
+        ///  Show this message in the cycle of messages.
+        /// </summary>
+        NormalCycle
+    }
+}

+ 22 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/MessageStateEnumType.cs

@@ -0,0 +1,22 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum MessageStateEnumType
+    {
+        /// <summary>
+        ///  Message only to be shown while the Charging Station is charging.
+        /// </summary>
+        Charging = 1,
+        /// <summary>
+        ///  Message only to be shown while the Charging Station is in faulted state.
+        /// </summary>
+        Faulted,
+        /// <summary>
+        ///  Message only to be shown while the Charging Station is idle (not charging).
+        /// </summary>
+        Idle,
+        /// <summary>
+        ///  Message only to be shown while the Charging Station is in unavailable state.
+        /// </summary>
+        Unavailable
+    }
+}

+ 48 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/MessageTriggerEnumType.cs

@@ -0,0 +1,48 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum MessageTriggerEnumType
+    {
+        /// <summary>
+        ///  To trigger BootNotification.
+        /// </summary>
+        BootNotification = 1,
+        /// <summary>
+        /// To trigger LogStatusNotification.
+        /// </summary>
+        LogStatusNotification,
+        /// <summary>
+        /// To trigger FirmwareStatusNotification.
+        /// </summary>
+        FirmwareStatusNotification,
+        /// <summary>
+        ///  To trigger Heartbeat.
+        /// </summary>
+        Heartbeat,
+        /// <summary>
+        ///  To trigger MeterValues.
+        /// </summary>
+        MeterValues,
+        /// <summary>
+        /// To trigger a SignCertificate with typeOfCertificate: ChargingStationCertificate.
+        /// </summary>
+        SignChargingStationCertificate,
+        /// <summary>
+        ///  To trigger a SignCertificate with typeOfCertificate: V2GCertificate
+        ///StatusNotification To trigger StatusNotification.
+        /// </summary>
+        SignV2GCertificate,
+        /// <summary>
+        ///  To trigger TransactionEvent.
+        /// </summary>
+        TransactionEvent,
+        /// <summary>
+        ///   To trigger a SignCertificate with typeOfCertificate: ChargingStationCertificate AND V2GCertificate
+        /// </summary>
+        SignCombinedCertificate,
+        /// <summary>
+        /// To trigger PublishFirmwareStatusNotification.
+        /// </summary>
+        PublishFirmwareStatusNotification
+
+    }
+}

+ 26 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/MeterValuesRequest.cs

@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public class MeterValuesRequest
+    {
+        /// <summary>
+        /// This contains a number (>0) designating an
+      ///  EVSE of the Charging Station. ‘0’ (zero) is used to
+///designate the main power meter.
+        /// </summary>
+        [Required]
+        public int EvseId { set; get; }
+
+        /// <summary>
+        /// The sampled meter values with timestamps
+        /// </summary>
+        [Required]
+        public List<MeterValueType> MeterValue { set; get; }
+    }
+}

+ 12 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/MeterValuesResponse.cs

@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+   public class MeterValuesResponse
+    {
+    }
+}

+ 33 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/MonitorEnumType.cs

@@ -0,0 +1,33 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum MonitorEnumType
+    {
+        /// <summary>
+        /// Triggers an event notice when the actual value of the Variable rises above monitorValue
+        /// </summary>
+        UpperThreshold = 1,
+        /// <summary>
+        ///  Triggers an event notice when the actual value of the Variable drops below monitorValue.
+        /// </summary>
+        LowerThreshold,
+        /// <summary>
+        ///  Triggers an event notice when the actual value has changed more than plus or minus monitorValue since the
+        /// time that this monitor was set or since the last time this event notice was sent, whichever was last. For
+        ////boolean variables, use monitorValue = 1 to trigger an event notice whenever the boolean value toggles from
+        ////0 to 1 or vice versa.
+        /// </summary>
+        Delta,
+        /// <summary>
+        ///  Triggers an event notice every monitorValue seconds interval, starting from the time that this monitor was
+        ///set.
+        /// </summary>
+        Periodic,
+        /// <summary>
+        /// Triggers an event notice every monitorValue seconds interval, starting from the nearest clock-aligned interval
+        /// after this monitor was set. For example, a monitorValue of 900 will trigger event notices at 0, 15, 30 and 45
+        ///minutes after the hour, every hour.
+        /// </summary>
+        PeriodicClockAligned
+
+    }
+}

+ 19 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/MonitoringBaseEnumType.cs

@@ -0,0 +1,19 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum MonitoringBaseEnumType
+    {
+        /// <summary>
+        ///  Activate all pre-configured monitors.
+        /// </summary>
+        All = 1,
+        /// <summary>
+        ///  Activate the default monitoring settings as recommended by the manufacturer. This is a subset of all preconfigured
+        ///monitors.
+        /// </summary>
+        FactoryDefault,
+        /// <summary>
+        ///  Clears all custom monitors and disables all pre-configured monitors.
+        /// </summary>
+        HardWiredOnly
+    }
+}

+ 18 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/MonitoringCriterionEnumType.cs

@@ -0,0 +1,18 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum MonitoringCriterionEnumType
+    {
+        /// <summary>
+        /// Report variables and components with a monitor of type UpperThreshold or LowerThreshold.
+        /// </summary>
+        ThresholdMonitoring = 1,
+        /// <summary>
+        ///  Report variables and components with a monitor of type Delta.
+        /// </summary>
+        DeltaMonitoring,
+        /// <summary>
+        ///  Report variables and components with a monitor of type Periodic or PeriodicClockAligned.
+        /// </summary>
+        PeriodicMonitoring
+    }
+}

+ 18 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/MutabilityEnumType.cs

@@ -0,0 +1,18 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum MutabilityEnumType
+    {
+        /// <summary>
+        ///  This variable is read-only.
+        /// </summary>
+        ReadOnly = 1,
+        /// <summary>
+        ///  This variable is write-only.
+        /// </summary>
+        WriteOnly,
+        /// <summary>
+        ///  This variable is read-write.
+        /// </summary>
+        ReadWrite
+    }
+}

+ 31 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/NotifyChargingLimitRequest.cs

@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public class NotifyChargingLimitRequest
+    {
+        /// <summary>
+        /// The charging schedule contained in this
+        ///notification applies to an EVSE.evseId must be > 0.
+        /// </summary>
+        public int EvseId { set; get; }
+
+        /// <summary>
+        /// This contains the source of the charging limit
+        ///and whether it is grid critical
+        /// </summary>
+        [Required]
+        public ChargingLimitType ChargingLimit { set; get; }
+
+        /// <summary>
+        /// Contains limits for the available power or
+        ///current over time, as set by the external source
+        /// </summary>
+        public List<ChargingScheduleType> ChargingSchedule { set; get; }
+    } 
+}

+ 13 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/NotifyChargingLimitResponse.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+   public class NotifyChargingLimitResponse
+    {
+
+    }
+}

+ 18 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/NotifyEVChargingNeedsStatusEnumType.cs

@@ -0,0 +1,18 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum NotifyEVChargingNeedsStatusEnumType
+    {
+        /// <summary>
+        ///  a SASchedule will be provided momentarily.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Service not available.
+        /// </summary>
+        Rejected,
+        /// <summary>
+        ///  The CSMS is gathering information to provide an SASchedule.
+        /// </summary>
+        Processing
+    }
+}

+ 38 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/OCPPInterfaceEnumType.cs

@@ -0,0 +1,38 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum OCPPInterfaceEnumType
+    {
+        /// <summary>
+        ///  Use wired connection 0
+        /// </summary>
+        Wired0 = 1,
+        /// <summary>
+        ///  Use wired connection 1
+        /// </summary>
+        Wired1,
+        /// <summary>
+        /// Use wired connection 2
+        /// </summary>
+        Wired2,
+        /// <summary>
+        ///  Use wired connection 3
+        /// </summary>
+        Wired3,
+        /// <summary>
+        ///  Use wireless connection 0
+        /// </summary>
+        Wireless0,
+        /// <summary>
+        ///  Use wireless connection 1
+        /// </summary>
+        Wireless1,
+        /// <summary>
+        ///  Use wireless connection 2
+        /// </summary>
+        Wireless2,
+        /// <summary>
+        ///  Use wireless connection 3
+        /// </summary>
+        Wireless3
+    }
+}

+ 15 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/OCPPTransportEnumType.cs

@@ -0,0 +1,15 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum OCPPTransportEnumType
+    {
+        /// <summary>
+        ///  Use JSON over WebSockets for transport of OCPP PDU’s
+        /// </summary>
+        JSON = 1,
+        /// <summary>
+        ///  Use SOAP for transport of OCPP PDU’s
+        /// </summary>
+        SOAP
+
+    }
+}

+ 22 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/OCPPVersionEnumType.cs

@@ -0,0 +1,22 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum OCPPVersionEnumType
+    {
+        /// <summary>
+        ///  OCPP version 1.2
+        /// </summary>
+        OCPP12 = 1,
+        /// <summary>
+        ///  OCPP version 1.5
+        /// </summary>
+        OCPP15,
+        /// <summary>
+        ///  OCPP version 1.6
+        /// </summary>
+        OCPP16,
+        /// <summary>
+        ///  OCPP version 2.0
+        /// </summary>
+        OCPP20
+    }
+}

+ 14 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/OperationalStatusEnumType.cs

@@ -0,0 +1,14 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum OperationalStatusEnumType
+    {
+        /// <summary>
+        ///  Charging Station is not available for charging.
+        /// </summary>
+        Inoperative = 1,
+        /// <summary>
+        ///  Charging Station is available for charging.
+        /// </summary>
+        Operative,
+    }
+}

+ 54 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/PhaseEnumType.cs

@@ -0,0 +1,54 @@
+using Newtonsoft.Json;
+
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum PhaseEnumType
+    {
+        /// <summary>
+        ///  Measured on L1
+        /// </summary>
+        L1,
+        /// <summary>
+        ///  Measured on L2
+        /// </summary>
+        L2,
+        /// <summary>
+        ///  Measured on L3
+        /// </summary>
+        L3,
+        /// <summary>
+        ///  Measured on Neutral
+        /// </summary>
+        N,
+        /// <summary>
+        ///  Measured on L1 with respect to Neutral conductor
+        /// </summary>
+        [JsonProperty("L1-N")]
+        L1_N,
+        /// <summary>
+        ///  Measured on L2 with respect to Neutral conductor
+        /// </summary>
+        [JsonProperty("L2-N")]
+        L2_N,
+        /// <summary>
+        ///  Measured on L3 with respect to Neutral conductor
+        /// </summary>
+        [JsonProperty("L3-N")]
+        L3_N,
+        /// <summary>
+        /// Measured between L1 and L2
+        /// </summary>
+        [JsonProperty("L1-L2")]
+        L1_L2,
+        /// <summary>
+        ///  Measured between L2 and L3
+        /// </summary>
+        [JsonProperty("L2-L3")]
+        L2_L3,
+        /// <summary>
+        ///  Measured between L3 and L1
+        /// </summary>
+        [JsonProperty("L3-L1")]
+        L3_L1
+    }
+}

+ 42 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/PublishFirmwareStatusEnumType.cs

@@ -0,0 +1,42 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum PublishFirmwareStatusEnumType
+    {
+        /// <summary>
+        ///  Intermediate state. New firmware has been downloaded by Charging Station.
+        /// </summary>
+        Downloaded = 1,
+        /// <summary>
+        ///  Failure end state. Charging Station failed to download firmware.
+        /// </summary>
+        DownloadFailed,
+        /// <summary>
+        ///  Intermediate state. Firmware is being downloaded.
+        /// </summary>
+        Downloading,
+        /// <summary>
+        ///  Intermediate state. Downloading of new firmware has been scheduled.
+        /// </summary>
+        DownloadScheduled,
+        /// <summary>
+        /// Intermediate state. Downloading has been paused.
+        /// </summary>
+        DownloadPaused,
+        /// <summary>
+        ///  Publishing the new firmware has failed.
+        /// </summary>
+        PublishFailed,
+        /// <summary>
+        ///  The firmware has been successfully published.
+        /// </summary>
+        Published,
+        /// <summary>
+        /// Failure end state.The firmware checksum is not matching.
+        /// </summary>
+        InvalidChecksum,
+        /// <summary>
+        ///  Intermediate state.The Firmware checksum is successfully verified.
+        /// </summary>
+        ChecksumVerified
+    }
+}

+ 46 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ReadingContextEnumType.cs

@@ -0,0 +1,46 @@
+using Newtonsoft.Json;
+
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ReadingContextEnumType
+    {
+        /// <summary>
+        ///  Value taken at start of interruption.
+        /// </summary>
+        [JsonProperty("Interruption.Begin")]
+        Interruption_Begin = 1,
+        /// <summary>
+        ///  Value taken when resuming after interruption.
+        /// </summary>
+        [JsonProperty("Interruption.End")]
+        Interruption_End,
+        /// <summary>
+        ///  Value for any other situations.
+        /// </summary>
+        Other,
+        /// <summary>
+        ///  Value taken at clock aligned interval.
+        /// </summary>
+        [JsonProperty("Sample.Clock")]
+        Sample_Clock,
+        /// <summary>
+        ///  Value taken as periodic sample relative to start time of transaction.
+        /// </summary>
+        [JsonProperty("Sample.Periodic")]
+        Sample_Periodic,
+        /// <summary>
+        ///  Value taken at start of transaction.
+        /// </summary>
+        [JsonProperty("Transaction.Begin")]
+        Transaction_Begin,
+        /// <summary>
+        ///  Value taken at end of transaction.
+        /// </summary>
+        [JsonProperty("Transaction.End")]
+        Transaction_End,
+        /// <summary>
+        /// Value taken in response to TriggerMessageRequest.
+        /// </summary>
+        Trigger
+    }
+}

+ 81 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ReasonEnumType.cs

@@ -0,0 +1,81 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ReasonEnumType
+    {
+        /// <summary>
+        ///  The transaction was stopped because of the authorization status in the response to a
+        /// transactionEventRequest.
+        /// </summary>
+        DeAuthorized = 1,
+        /// <summary>
+        ///  Emergency stop button was used.
+        /// </summary>
+        EmergencyStop,
+        /// <summary>
+        ///  EV charging session reached a locally enforced maximum energy transfer limit
+        /// </summary>
+        EnergyLimitReached,
+        /// <summary>
+        /// Disconnecting of cable, vehicle moved away from inductive charge unit.
+        /// </summary>
+        EVDisconnected,
+        /// <summary>
+        ///  A GroundFault has occurred
+        /// </summary>
+        GroundFault,
+        /// <summary>
+        ///  A Reset(Immediate) command was received.
+        /// </summary>
+        ImmediateReset,
+        /// <summary>
+        /// Stopped locally on request of the EV Driver at the Charging Station. This is a regular termination of a
+        /// transaction. Examples: presenting an IdToken tag, pressing a button to stop.
+        /// </summary>
+        Local,
+        /// <summary>
+        ///  A local credit limit enforced through the Charging Station has been exceeded.
+        /// </summary>
+        LocalOutOfCredit,
+        /// <summary>
+        ///  Any other reason.
+        /// </summary>
+        Other,
+        /// <summary>
+        ///  A larger than intended electric current has occurred
+        /// </summary>
+        OvercurrentFault,
+        /// <summary>
+        /// Complete loss of power.
+        /// </summary>
+        PowerLoss,
+        /// <summary>
+        /// Quality of power too low, e.g. voltage too low/high, phase imbalance, etc.
+        /// </summary>
+        PowerQuality,
+        /// <summary>
+        ///  A locally initiated reset/reboot occurred. (for instance watchdog kicked in)
+        /// </summary>
+        Reboot,
+        /// <summary>
+        ///  Stopped remotely on request of the CSMS. This is a regular termination of a transaction. Examples:
+        ///  termination using a smartphone app, exceeding a(non local) prepaid credit.
+        /// </summary>
+        Remote,
+        /// <summary>
+        ///  Electric vehicle has reported reaching a locally enforced maximum battery State of Charge (SOC)
+        /// </summary>
+        SOCLimitReached,
+        /// <summary>
+        ///  The transaction was stopped by the EV
+        /// </summary>
+        StoppedByEV,
+        /// <summary>
+        ///  EV charging session reached a locally enforced time limit
+        /// </summary>
+        TimeLimitReached,
+        /// <summary>
+        ///  EV not connected within timeout
+        /// </summary>
+        Timeout
+    }
+}

+ 14 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/RecurrencyKindEnumType.cs

@@ -0,0 +1,14 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum RecurrencyKindEnumType
+    {
+        /// <summary>
+        ///  The schedule restarts at the beginning of the next day.
+        /// </summary>
+        Daily = 1,
+        /// <summary>
+        ///  The schedule restarts at the beginning of the next week (defined as Monday morning)
+        /// </summary>
+        Weekly
+    }
+}

+ 19 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/RegistrationStatusEnumType.cs

@@ -0,0 +1,19 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum RegistrationStatusEnumType
+    {
+        /// <summary>
+        ///  Charging Station is accepted by the CSMS.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  CSMS is not yet ready to accept the Charging Station. CSMS may send messages to retrieve information or
+        ///prepare the Charging Station.
+        /// </summary>
+        Pending,
+        /// <summary>
+        ///  Charging Station is not accepted by CSMS. This may happen when the Charging Station id is not known by
+        /// </summary>
+        Rejected
+    }
+}

+ 33 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/ReportBaseEnumType.cs

@@ -0,0 +1,33 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum ReportBaseEnumType
+    {
+        /// <summary>
+        /// Required. A (configuration) report that lists all Components/Variables that can be set by the operator.
+        /// </summary>
+        ConfigurationInventory = 1,
+        /// <summary>
+        ///  Required. A (full) report that lists everything except monitoring settings.
+        /// </summary>
+        FullInventory,
+        /// <summary>
+        ///  Optional. A (summary) report that lists Components/Variables relating to the Charging Station’s current
+        /// charging availability, and to any existing problem conditions.
+        ///   For the Charging Station Component:
+        ///- AvailabilityState.
+        /// For each EVSE Component:
+        ///- AvailabilityState.
+        ///For each Connector Component:
+        ///- AvailabilityState (if known and different from EVSE).
+        ///  For all Components in an abnormal State:
+        ///- Active (Problem, Tripped, Overload, Fallback) variables.
+        ///- Any other diagnostically relevant Variables of the Components.
+        ///- Include TechCode and TechInfo where available.
+        /// All monitored Component.Variables in Critical or Alert state shall also be included.
+        ///- Charging Stations that do not have Monitoring implemented are NOT REQUIRED to include Connector
+        ///  Availability, monitoring alerts, and MAY limit problem reporting detail to just the active Problem boolean
+        ///  Variable.
+        /// </summary>
+        SummaryInventory
+    }
+}

+ 14 - 0
EVCB_OCPP.Packet20/DataTypes/EnumTypes/RequestStartStopStatusEnumType.cs

@@ -0,0 +1,14 @@
+namespace EVCB_OCPP.Packet20.DataTypes.EnumTypes
+{
+    public enum RequestStartStopStatusEnumType
+    {
+        /// <summary>
+        ///  Command will be executed.
+        /// </summary>
+        Accepted = 1,
+        /// <summary>
+        ///  Command will not be executed.
+        /// </summary>
+        Rejected
+    }
+}

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است