Browse Source

2019/07/30 Jessica 7972
Actions:
1. 新增 剩餘5個Profile
2. 調整資料庫內容

Modified Files:
1.~\EVCB_OCPP.Domain
2.~\EVCB_OCPP.Packet

Jessica.Tseng 5 years ago
parent
commit
cef6f162cf
61 changed files with 2391 additions and 25 deletions
  1. 35 0
      EVCB_OCPP.Domain/EVCB_OCPP.Domain.csproj
  2. 29 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260616245_Modified_MachineErrorTable.Designer.cs
  3. 24 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260616245_Modified_MachineErrorTable.cs
  4. 120 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260616245_Modified_MachineErrorTable.resx
  5. 29 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260708307_Modified_ServerMessageTable.Designer.cs
  6. 18 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260708307_Modified_ServerMessageTable.cs
  7. 120 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260708307_Modified_ServerMessageTable.resx
  8. 29 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260819022_Modified_ServerMessageTable1.Designer.cs
  9. 18 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260819022_Modified_ServerMessageTable1.cs
  10. 120 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260819022_Modified_ServerMessageTable1.resx
  11. 29 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260914124_Modified_ServerMessageTable2.Designer.cs
  12. 20 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260914124_Modified_ServerMessageTable2.cs
  13. 120 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260914124_Modified_ServerMessageTable2.resx
  14. 29 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260915479_Modified_ServerMessageTable3.Designer.cs
  15. 18 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260915479_Modified_ServerMessageTable3.cs
  16. 120 0
      EVCB_OCPP.Domain/MainDBContextMigrations/201907260915479_Modified_ServerMessageTable3.resx
  17. 5 4
      EVCB_OCPP.Domain/Models/Database/MachineError.cs
  18. 5 8
      EVCB_OCPP.Domain/Models/Database/ServerMessage.cs
  19. 41 1
      EVCB_OCPP.Packet/EVCB_OCPP.Packet.csproj
  20. 27 0
      EVCB_OCPP.Packet/Features/FirmwareManagement/DiagnosticsStatusNotificationFeature.cs
  21. 27 0
      EVCB_OCPP.Packet/Features/FirmwareManagement/FirmwareStatusNotificationFeature.cs
  22. 27 0
      EVCB_OCPP.Packet/Features/FirmwareManagement/GetDiagnosticsFeature.cs
  23. 27 0
      EVCB_OCPP.Packet/Features/FirmwareManagement/UpdateFirmwareFeature.cs
  24. 45 0
      EVCB_OCPP.Packet/Features/FirmwareManagementProfile.cs
  25. 27 0
      EVCB_OCPP.Packet/Features/LocalAuthListManagement/GetLocalListVersionFeature.cs
  26. 27 0
      EVCB_OCPP.Packet/Features/LocalAuthListManagement/SendLocalListFeature.cs
  27. 43 0
      EVCB_OCPP.Packet/Features/LocalAuthListManagementProfile.cs
  28. 27 0
      EVCB_OCPP.Packet/Features/RemoteTrigger/TriggerMessageFeature.cs
  29. 42 0
      EVCB_OCPP.Packet/Features/RemoteTriggerProfile.cs
  30. 27 0
      EVCB_OCPP.Packet/Features/Reservation/CancelReservationFeature.cs
  31. 27 0
      EVCB_OCPP.Packet/Features/Reservation/ReserveNowFeature.cs
  32. 43 0
      EVCB_OCPP.Packet/Features/ReservationProfile.cs
  33. 27 0
      EVCB_OCPP.Packet/Features/SmartCharging/ClearChargingProfileFeature.cs
  34. 27 0
      EVCB_OCPP.Packet/Features/SmartCharging/GetCompositeScheduleFeature.cs
  35. 27 0
      EVCB_OCPP.Packet/Features/SmartCharging/SetChargingProfileFeature.cs
  36. 45 0
      EVCB_OCPP.Packet/Features/SmartChargingProfile.cs
  37. 30 0
      EVCB_OCPP.Packet/Messages/FirmwareManagement/DiagnosticsStatusNotificationConfirmation.cs
  38. 39 0
      EVCB_OCPP.Packet/Messages/FirmwareManagement/DiagnosticsStatusNotificationRequest.cs
  39. 30 0
      EVCB_OCPP.Packet/Messages/FirmwareManagement/FirmwareStatusNotificationConfirmation.cs
  40. 39 0
      EVCB_OCPP.Packet/Messages/FirmwareManagement/FirmwareStatusNotificationRequest.cs
  41. 35 0
      EVCB_OCPP.Packet/Messages/FirmwareManagement/GetDiagnosticsConfirmation.cs
  42. 47 0
      EVCB_OCPP.Packet/Messages/FirmwareManagement/GetDiagnosticsRequest.cs
  43. 31 0
      EVCB_OCPP.Packet/Messages/FirmwareManagement/UpdateFirmwareConfirmation.cs
  44. 47 0
      EVCB_OCPP.Packet/Messages/FirmwareManagement/UpdateFirmwareRequest.cs
  45. 33 0
      EVCB_OCPP.Packet/Messages/LocalAuthListManagement/GetLocalListVersionConfirmation.cs
  46. 27 0
      EVCB_OCPP.Packet/Messages/LocalAuthListManagement/GetLocalListVersionRequest.cs
  47. 32 0
      EVCB_OCPP.Packet/Messages/LocalAuthListManagement/SendLocalListConfirmation.cs
  48. 44 0
      EVCB_OCPP.Packet/Messages/LocalAuthListManagement/SendLocalListRequest.cs
  49. 37 0
      EVCB_OCPP.Packet/Messages/RemoteTrigger/TriggerMessageConfirmation.cs
  50. 41 0
      EVCB_OCPP.Packet/Messages/RemoteTrigger/TriggerMessageRequest.cs
  51. 36 0
      EVCB_OCPP.Packet/Messages/Reservation/CancelReservationConfirmation.cs
  52. 36 0
      EVCB_OCPP.Packet/Messages/Reservation/CancelReservationRequest.cs
  53. 36 0
      EVCB_OCPP.Packet/Messages/Reservation/ReserveNowConfirmation.cs
  54. 50 0
      EVCB_OCPP.Packet/Messages/Reservation/ReserveNowRequest.cs
  55. 36 0
      EVCB_OCPP.Packet/Messages/SmartCharging/ClearChargingProfileConfirmation.cs
  56. 45 0
      EVCB_OCPP.Packet/Messages/SmartCharging/ClearChargingProfileRequest.cs
  57. 46 0
      EVCB_OCPP.Packet/Messages/SmartCharging/GetCompositeScheduleConfirmation.cs
  58. 44 0
      EVCB_OCPP.Packet/Messages/SmartCharging/GetCompositeScheduleRequest.cs
  59. 38 0
      EVCB_OCPP.Packet/Messages/SmartCharging/SetChargingProfileConfirmation.cs
  60. 41 0
      EVCB_OCPP.Packet/Messages/SmartCharging/SetChargingProfileRequest.cs
  61. 0 12
      EVCB_OCPP.Packet/Messages/SubTypes/Class1.cs

+ 35 - 0
EVCB_OCPP.Domain/EVCB_OCPP.Domain.csproj

@@ -85,6 +85,26 @@
     <Compile Include="MainDBContextMigrations\201907240912488_Modified_Table.Designer.cs">
       <DependentUpon>201907240912488_Modified_Table.cs</DependentUpon>
     </Compile>
+    <Compile Include="MainDBContextMigrations\201907260616245_Modified_MachineErrorTable.cs" />
+    <Compile Include="MainDBContextMigrations\201907260616245_Modified_MachineErrorTable.Designer.cs">
+      <DependentUpon>201907260616245_Modified_MachineErrorTable.cs</DependentUpon>
+    </Compile>
+    <Compile Include="MainDBContextMigrations\201907260708307_Modified_ServerMessageTable.cs" />
+    <Compile Include="MainDBContextMigrations\201907260708307_Modified_ServerMessageTable.Designer.cs">
+      <DependentUpon>201907260708307_Modified_ServerMessageTable.cs</DependentUpon>
+    </Compile>
+    <Compile Include="MainDBContextMigrations\201907260819022_Modified_ServerMessageTable1.cs" />
+    <Compile Include="MainDBContextMigrations\201907260819022_Modified_ServerMessageTable1.Designer.cs">
+      <DependentUpon>201907260819022_Modified_ServerMessageTable1.cs</DependentUpon>
+    </Compile>
+    <Compile Include="MainDBContextMigrations\201907260914124_Modified_ServerMessageTable2.cs" />
+    <Compile Include="MainDBContextMigrations\201907260914124_Modified_ServerMessageTable2.Designer.cs">
+      <DependentUpon>201907260914124_Modified_ServerMessageTable2.cs</DependentUpon>
+    </Compile>
+    <Compile Include="MainDBContextMigrations\201907260915479_Modified_ServerMessageTable3.cs" />
+    <Compile Include="MainDBContextMigrations\201907260915479_Modified_ServerMessageTable3.Designer.cs">
+      <DependentUpon>201907260915479_Modified_ServerMessageTable3.cs</DependentUpon>
+    </Compile>
     <Compile Include="MainDBContextMigrations\Configuration.cs" />
     <Compile Include="MeterValueDBContext.cs" />
     <Compile Include="MeterValueDBContextMigrations\201907150814558_Init.cs" />
@@ -154,6 +174,21 @@
     <EmbeddedResource Include="MainDBContextMigrations\201907240912488_Modified_Table.resx">
       <DependentUpon>201907240912488_Modified_Table.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="MainDBContextMigrations\201907260616245_Modified_MachineErrorTable.resx">
+      <DependentUpon>201907260616245_Modified_MachineErrorTable.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="MainDBContextMigrations\201907260708307_Modified_ServerMessageTable.resx">
+      <DependentUpon>201907260708307_Modified_ServerMessageTable.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="MainDBContextMigrations\201907260819022_Modified_ServerMessageTable1.resx">
+      <DependentUpon>201907260819022_Modified_ServerMessageTable1.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="MainDBContextMigrations\201907260914124_Modified_ServerMessageTable2.resx">
+      <DependentUpon>201907260914124_Modified_ServerMessageTable2.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="MainDBContextMigrations\201907260915479_Modified_ServerMessageTable3.resx">
+      <DependentUpon>201907260915479_Modified_ServerMessageTable3.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="MeterValueDBContextMigrations\201907150814558_Init.resx">
       <DependentUpon>201907150814558_Init.cs</DependentUpon>
     </EmbeddedResource>

+ 29 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260616245_Modified_MachineErrorTable.Designer.cs

@@ -0,0 +1,29 @@
+// <auto-generated />
+namespace EVCB_OCPP.Domain.MainDBContextMigrations
+{
+    using System.CodeDom.Compiler;
+    using System.Data.Entity.Migrations;
+    using System.Data.Entity.Migrations.Infrastructure;
+    using System.Resources;
+    
+    [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
+    public sealed partial class Modified_MachineErrorTable : IMigrationMetadata
+    {
+        private readonly ResourceManager Resources = new ResourceManager(typeof(Modified_MachineErrorTable));
+        
+        string IMigrationMetadata.Id
+        {
+            get { return "201907260616245_Modified_MachineErrorTable"; }
+        }
+        
+        string IMigrationMetadata.Source
+        {
+            get { return null; }
+        }
+        
+        string IMigrationMetadata.Target
+        {
+            get { return Resources.GetString("Target"); }
+        }
+    }
+}

+ 24 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260616245_Modified_MachineErrorTable.cs

@@ -0,0 +1,24 @@
+namespace EVCB_OCPP.Domain.MainDBContextMigrations
+{
+    using System;
+    using System.Data.Entity.Migrations;
+    
+    public partial class Modified_MachineErrorTable : DbMigration
+    {
+        public override void Up()
+        {
+            AddColumn("dbo.MachineError", "ErrorCodeId", c => c.Int(nullable: false));
+            AddColumn("dbo.MachineError", "VendorErrorCode", c => c.String(maxLength: 100));
+            DropColumn("dbo.MachineError", "ErrorCode");
+            DropColumn("dbo.MachineError", "VendorErrorCodeNum");
+        }
+        
+        public override void Down()
+        {
+            AddColumn("dbo.MachineError", "VendorErrorCodeNum", c => c.Int(nullable: false));
+            AddColumn("dbo.MachineError", "ErrorCode", c => c.Int(nullable: false));
+            DropColumn("dbo.MachineError", "VendorErrorCode");
+            DropColumn("dbo.MachineError", "ErrorCodeId");
+        }
+    }
+}

File diff suppressed because it is too large
+ 120 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260616245_Modified_MachineErrorTable.resx


+ 29 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260708307_Modified_ServerMessageTable.Designer.cs

@@ -0,0 +1,29 @@
+// <auto-generated />
+namespace EVCB_OCPP.Domain.MainDBContextMigrations
+{
+    using System.CodeDom.Compiler;
+    using System.Data.Entity.Migrations;
+    using System.Data.Entity.Migrations.Infrastructure;
+    using System.Resources;
+    
+    [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
+    public sealed partial class Modified_ServerMessageTable : IMigrationMetadata
+    {
+        private readonly ResourceManager Resources = new ResourceManager(typeof(Modified_ServerMessageTable));
+        
+        string IMigrationMetadata.Id
+        {
+            get { return "201907260708307_Modified_ServerMessageTable"; }
+        }
+        
+        string IMigrationMetadata.Source
+        {
+            get { return null; }
+        }
+        
+        string IMigrationMetadata.Target
+        {
+            get { return Resources.GetString("Target"); }
+        }
+    }
+}

+ 18 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260708307_Modified_ServerMessageTable.cs

@@ -0,0 +1,18 @@
+namespace EVCB_OCPP.Domain.MainDBContextMigrations
+{
+    using System;
+    using System.Data.Entity.Migrations;
+    
+    public partial class Modified_ServerMessageTable : DbMigration
+    {
+        public override void Up()
+        {
+            AlterColumn("dbo.ServerMessage", "OutAction", c => c.String(maxLength: 30));
+        }
+        
+        public override void Down()
+        {
+            AlterColumn("dbo.ServerMessage", "OutAction", c => c.String(maxLength: 15));
+        }
+    }
+}

File diff suppressed because it is too large
+ 120 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260708307_Modified_ServerMessageTable.resx


+ 29 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260819022_Modified_ServerMessageTable1.Designer.cs

@@ -0,0 +1,29 @@
+// <auto-generated />
+namespace EVCB_OCPP.Domain.MainDBContextMigrations
+{
+    using System.CodeDom.Compiler;
+    using System.Data.Entity.Migrations;
+    using System.Data.Entity.Migrations.Infrastructure;
+    using System.Resources;
+    
+    [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
+    public sealed partial class Modified_ServerMessageTable1 : IMigrationMetadata
+    {
+        private readonly ResourceManager Resources = new ResourceManager(typeof(Modified_ServerMessageTable1));
+        
+        string IMigrationMetadata.Id
+        {
+            get { return "201907260819022_Modified_ServerMessageTable1"; }
+        }
+        
+        string IMigrationMetadata.Source
+        {
+            get { return null; }
+        }
+        
+        string IMigrationMetadata.Target
+        {
+            get { return Resources.GetString("Target"); }
+        }
+    }
+}

+ 18 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260819022_Modified_ServerMessageTable1.cs

@@ -0,0 +1,18 @@
+namespace EVCB_OCPP.Domain.MainDBContextMigrations
+{
+    using System;
+    using System.Data.Entity.Migrations;
+    
+    public partial class Modified_ServerMessageTable1 : DbMigration
+    {
+        public override void Up()
+        {
+            AlterColumn("dbo.ServerMessage", "InMessage", c => c.String(maxLength: 800));
+        }
+        
+        public override void Down()
+        {
+            AlterColumn("dbo.ServerMessage", "InMessage", c => c.String(maxLength: 200));
+        }
+    }
+}

File diff suppressed because it is too large
+ 120 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260819022_Modified_ServerMessageTable1.resx


+ 29 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260914124_Modified_ServerMessageTable2.Designer.cs

@@ -0,0 +1,29 @@
+// <auto-generated />
+namespace EVCB_OCPP.Domain.MainDBContextMigrations
+{
+    using System.CodeDom.Compiler;
+    using System.Data.Entity.Migrations;
+    using System.Data.Entity.Migrations.Infrastructure;
+    using System.Resources;
+    
+    [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
+    public sealed partial class Modified_ServerMessageTable2 : IMigrationMetadata
+    {
+        private readonly ResourceManager Resources = new ResourceManager(typeof(Modified_ServerMessageTable2));
+        
+        string IMigrationMetadata.Id
+        {
+            get { return "201907260914124_Modified_ServerMessageTable2"; }
+        }
+        
+        string IMigrationMetadata.Source
+        {
+            get { return null; }
+        }
+        
+        string IMigrationMetadata.Target
+        {
+            get { return Resources.GetString("Target"); }
+        }
+    }
+}

+ 20 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260914124_Modified_ServerMessageTable2.cs

@@ -0,0 +1,20 @@
+namespace EVCB_OCPP.Domain.MainDBContextMigrations
+{
+    using System;
+    using System.Data.Entity.Migrations;
+    
+    public partial class Modified_ServerMessageTable2 : DbMigration
+    {
+        public override void Up()
+        {
+            AlterColumn("dbo.ServerMessage", "OutRequest", c => c.String(maxLength: 500));
+            AlterColumn("dbo.ServerMessage", "InMessage", c => c.String(maxLength: 1000));
+        }
+        
+        public override void Down()
+        {
+            AlterColumn("dbo.ServerMessage", "InMessage", c => c.String(maxLength: 800));
+            AlterColumn("dbo.ServerMessage", "OutRequest", c => c.String(maxLength: 400));
+        }
+    }
+}

File diff suppressed because it is too large
+ 120 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260914124_Modified_ServerMessageTable2.resx


+ 29 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260915479_Modified_ServerMessageTable3.Designer.cs

@@ -0,0 +1,29 @@
+// <auto-generated />
+namespace EVCB_OCPP.Domain.MainDBContextMigrations
+{
+    using System.CodeDom.Compiler;
+    using System.Data.Entity.Migrations;
+    using System.Data.Entity.Migrations.Infrastructure;
+    using System.Resources;
+    
+    [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
+    public sealed partial class Modified_ServerMessageTable3 : IMigrationMetadata
+    {
+        private readonly ResourceManager Resources = new ResourceManager(typeof(Modified_ServerMessageTable3));
+        
+        string IMigrationMetadata.Id
+        {
+            get { return "201907260915479_Modified_ServerMessageTable3"; }
+        }
+        
+        string IMigrationMetadata.Source
+        {
+            get { return null; }
+        }
+        
+        string IMigrationMetadata.Target
+        {
+            get { return Resources.GetString("Target"); }
+        }
+    }
+}

+ 18 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260915479_Modified_ServerMessageTable3.cs

@@ -0,0 +1,18 @@
+namespace EVCB_OCPP.Domain.MainDBContextMigrations
+{
+    using System;
+    using System.Data.Entity.Migrations;
+    
+    public partial class Modified_ServerMessageTable3 : DbMigration
+    {
+        public override void Up()
+        {
+            AlterColumn("dbo.ServerMessage", "CreatedBy", c => c.String(maxLength: 36));
+        }
+        
+        public override void Down()
+        {
+            AlterColumn("dbo.ServerMessage", "CreatedBy", c => c.String());
+        }
+    }
+}

File diff suppressed because it is too large
+ 120 - 0
EVCB_OCPP.Domain/MainDBContextMigrations/201907260915479_Modified_ServerMessageTable3.resx


+ 5 - 4
EVCB_OCPP.Domain/Models/Database/MachineError.cs

@@ -40,9 +40,9 @@ namespace EVCB_OCPP.Domain.Models.Database
         public int Status { get; set; }
 
         /// <summary>
-        /// 錯誤代碼
+        /// 錯誤代碼Id
         /// </summary>
-        public int ErrorCode { get; set; }
+        public int ErrorCodeId { get; set; }
 
         /// <summary>
         ///ErrorInfo
@@ -59,11 +59,12 @@ namespace EVCB_OCPP.Domain.Models.Database
         /// <summary>
         /// vendorErrorCode
         /// </summary>
-        public int VendorErrorCodeNum { set; get; }
+        [StringLength(100)]
+        public string VendorErrorCode { set; get; }
 
 
 
         [Required]
-        public DateTime? CreatedOn { get; set; }
+        public DateTime CreatedOn { get; set; }
     }
 }

+ 5 - 8
EVCB_OCPP.Domain/Models/Database/ServerMessage.cs

@@ -41,28 +41,25 @@ namespace EVCB_OCPP.Domain.Models.Database
         /// <summary>
         /// 輸入傳送Action
         /// </summary>
-        [StringLength(15)]
-        [DefaultValue("")]
+        [StringLength(30)]
         public string OutAction { get; set; }
 
         /// <summary>
         /// 輸入傳送資料
         /// </summary>
-        [StringLength(400)]
-        [DefaultValue("")]
+        [StringLength(500)]   
         public string OutRequest { get; set; }
 
         /// <summary>
         /// 收到傳送資料
-        /// </summary>
-        [DefaultValue("")]
-        [StringLength(200)]
+        /// </summary>      
+        [StringLength(1000)]
         public string InMessage { get; set; }     
 
       
         public DateTime CreatedOn { get; set; }
 
-        [DefaultValue("")]
+        [StringLength(36)]
         public string CreatedBy { get; set; }      
       
 

+ 41 - 1
EVCB_OCPP.Packet/EVCB_OCPP.Packet.csproj

@@ -64,7 +64,24 @@
     <Compile Include="Features\Core\StopTransactionFeature.cs" />
     <Compile Include="Features\Core\UnlockConnectorFeature.cs" />
     <Compile Include="Features\Feature.cs" />
+    <Compile Include="Features\FirmwareManagementProfile.cs" />
+    <Compile Include="Features\FirmwareManagement\DiagnosticsStatusNotificationFeature.cs" />
+    <Compile Include="Features\FirmwareManagement\FirmwareStatusNotificationFeature.cs" />
+    <Compile Include="Features\FirmwareManagement\GetDiagnosticsFeature.cs" />
+    <Compile Include="Features\FirmwareManagement\UpdateFirmwareFeature.cs" />
+    <Compile Include="Features\LocalAuthListManagementProfile.cs" />
+    <Compile Include="Features\LocalAuthListManagement\GetLocalListVersionFeature.cs" />
+    <Compile Include="Features\LocalAuthListManagement\SendLocalListFeature.cs" />
     <Compile Include="Features\Profile.cs" />
+    <Compile Include="Features\RemoteTriggerProfile.cs" />
+    <Compile Include="Features\RemoteTrigger\TriggerMessageFeature.cs" />
+    <Compile Include="Features\ReservationProfile.cs" />
+    <Compile Include="Features\Reservation\CancelReservationFeature.cs" />
+    <Compile Include="Features\Reservation\ReserveNowFeature.cs" />
+    <Compile Include="Features\SmartChargingProfile.cs" />
+    <Compile Include="Features\SmartCharging\ClearChargingProfileFeature.cs" />
+    <Compile Include="Features\SmartCharging\GetCompositeScheduleFeature.cs" />
+    <Compile Include="Features\SmartCharging\SetChargingProfileFeature.cs" />
     <Compile Include="Features\StandardConfiguration.cs" />
     <Compile Include="Messages\Basic\BaseMessage.cs" />
     <Compile Include="Messages\Basic\CallErrorMessage.cs" />
@@ -105,9 +122,33 @@
     <Compile Include="Messages\Core\UnlockConnectorConfirmation.cs" />
     <Compile Include="Messages\Core\UnlockConnectorRequest.cs" />
     <Compile Include="Messages\ErrorMessage.cs" />
+    <Compile Include="Messages\FirmwareManagement\DiagnosticsStatusNotificationConfirmation.cs" />
+    <Compile Include="Messages\FirmwareManagement\DiagnosticsStatusNotificationRequest.cs" />
+    <Compile Include="Messages\FirmwareManagement\FirmwareStatusNotificationConfirmation.cs" />
+    <Compile Include="Messages\FirmwareManagement\FirmwareStatusNotificationRequest.cs" />
+    <Compile Include="Messages\FirmwareManagement\GetDiagnosticsConfirmation.cs" />
+    <Compile Include="Messages\FirmwareManagement\GetDiagnosticsRequest.cs" />
+    <Compile Include="Messages\FirmwareManagement\UpdateFirmwareConfirmation.cs" />
+    <Compile Include="Messages\FirmwareManagement\UpdateFirmwareRequest.cs" />
     <Compile Include="Messages\IConfirmation.cs" />
     <Compile Include="Messages\IRequest.cs" />
     <Compile Include="Messages\IValidatable.cs" />
+    <Compile Include="Messages\LocalAuthListManagement\GetLocalListVersionConfirmation.cs" />
+    <Compile Include="Messages\LocalAuthListManagement\GetLocalListVersionRequest.cs" />
+    <Compile Include="Messages\LocalAuthListManagement\SendLocalListConfirmation.cs" />
+    <Compile Include="Messages\LocalAuthListManagement\SendLocalListRequest.cs" />
+    <Compile Include="Messages\RemoteTrigger\TriggerMessageConfirmation.cs" />
+    <Compile Include="Messages\RemoteTrigger\TriggerMessageRequest.cs" />
+    <Compile Include="Messages\Reservation\CancelReservationConfirmation.cs" />
+    <Compile Include="Messages\Reservation\CancelReservationRequest.cs" />
+    <Compile Include="Messages\Reservation\ReserveNowConfirmation.cs" />
+    <Compile Include="Messages\Reservation\ReserveNowRequest.cs" />
+    <Compile Include="Messages\SmartCharging\ClearChargingProfileConfirmation.cs" />
+    <Compile Include="Messages\SmartCharging\ClearChargingProfileRequest.cs" />
+    <Compile Include="Messages\SmartCharging\GetCompositeScheduleConfirmation.cs" />
+    <Compile Include="Messages\SmartCharging\GetCompositeScheduleRequest.cs" />
+    <Compile Include="Messages\SmartCharging\SetChargingProfileConfirmation.cs" />
+    <Compile Include="Messages\SmartCharging\SetChargingProfileRequest.cs" />
     <Compile Include="Messages\SubTypes\AuthorizationData.cs" />
     <Compile Include="Messages\SubTypes\AuthorizationStatus.cs" />
     <Compile Include="Messages\SubTypes\AuthorizeStatus.cs" />
@@ -135,7 +176,6 @@
     <Compile Include="Messages\SubTypes\ChargingSchedule.cs" />
     <Compile Include="Messages\SubTypes\ChargingSchedulePeriod.cs" />
     <Compile Include="Messages\SubTypes\ChargingStrategy.cs" />
-    <Compile Include="Messages\SubTypes\Class1.cs" />
     <Compile Include="Messages\SubTypes\ClearCacheStatus.cs" />
     <Compile Include="Messages\SubTypes\ClearChargingProfileStatus.cs" />
     <Compile Include="Messages\SubTypes\ConfigurationStatus.cs" />

+ 27 - 0
EVCB_OCPP.Packet/Features/FirmwareManagement/DiagnosticsStatusNotificationFeature.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Messages.FirmwareManagement;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features.FirmwareManagement
+{
+    public  class DiagnosticsStatusNotificationFeature : Feature
+    {
+        public override string GetAction()
+        {
+            return Actions.DiagnosticsStatusNotification.ToString();
+        }
+
+        public override Type GetConfirmationType()
+        {
+            return typeof(DiagnosticsStatusNotificationConfirmation);
+        }
+
+        public override Type GetRequestType()
+        {
+            return typeof(DiagnosticsStatusNotificationRequest);
+        }
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet/Features/FirmwareManagement/FirmwareStatusNotificationFeature.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Messages.FirmwareManagement;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features.FirmwareManagement
+{
+    public class FirmwareStatusNotificationFeature : Feature
+    {
+        public override string GetAction()
+        {
+            return Actions.FirmwareStatusNotification.ToString();
+        }
+
+        public override Type GetConfirmationType()
+        {
+            return typeof(FirmwareStatusNotificationConfirmation);
+        }
+
+        public override Type GetRequestType()
+        {
+            return typeof(FirmwareStatusNotificationRequest);
+        }
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet/Features/FirmwareManagement/GetDiagnosticsFeature.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Messages.FirmwareManagement;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features.FirmwareManagement
+{
+    public  class GetDiagnosticsFeature : Feature
+    {
+        public override string GetAction()
+        {
+            return Actions.GetDiagnostics.ToString();
+        }
+
+        public override Type GetConfirmationType()
+        {
+            return typeof(GetDiagnosticsConfirmation);
+        }
+
+        public override Type GetRequestType()
+        {
+            return typeof(GetDiagnosticsRequest);
+        }
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet/Features/FirmwareManagement/UpdateFirmwareFeature.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Messages.FirmwareManagement;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features.FirmwareManagement
+{
+    public class UpdateFirmwareFeature : Feature
+    {
+        public override string GetAction()
+        {
+            return Actions.UpdateFirmware.ToString();
+        }
+
+        public override Type GetConfirmationType()
+        {
+            return typeof(UpdateFirmwareConfirmation);
+        }
+
+        public override Type GetRequestType()
+        {
+            return typeof(UpdateFirmwareRequest);
+        }
+    }
+}

+ 45 - 0
EVCB_OCPP.Packet/Features/FirmwareManagementProfile.cs

@@ -0,0 +1,45 @@
+using EVCB_OCPP.Packet.Features.FirmwareManagement;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features
+{
+   
+    public class FirmwareManagementProfile : Profile
+    {
+        public FirmwareManagementProfile()
+        {
+            Name = "FirmwareManagement";
+            //加入支援的Features
+            features.Add(new GetDiagnosticsFeature());
+            features.Add(new DiagnosticsStatusNotificationFeature());
+            features.Add(new FirmwareStatusNotificationFeature());
+            features.Add(new UpdateFirmwareFeature());
+           
+
+            actions.Add(Actions.GetDiagnostics.ToString());
+            actions.Add(Actions.DiagnosticsStatusNotification.ToString());
+            actions.Add(Actions.FirmwareStatusNotification.ToString());
+            actions.Add(Actions.UpdateFirmware.ToString());
+           
+
+        }
+
+        public string GetActionFromConfirmation(Type seekType)
+        {
+            return features.Where(x => x.GetConfirmationType() == seekType).FirstOrDefault().GetAction();
+        }
+
+        public string GetActionFromRequest(Type seekType)
+        {
+            return GetFeaturebyType(seekType).GetAction();
+        }
+
+
+
+
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet/Features/LocalAuthListManagement/GetLocalListVersionFeature.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Messages.LocalAuthListManagement;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features.LocalAuthListManagement
+{
+    public class GetLocalListVersionFeature : Feature
+    {
+        public override string GetAction()
+        {
+            return Actions.GetLocalListVersion.ToString();
+        }
+
+        public override Type GetConfirmationType()
+        {
+            return typeof(GetLocalListVersionConfirmation);
+        }
+
+        public override Type GetRequestType()
+        {
+            return typeof(GetLocalListVersionRequest);
+        }
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet/Features/LocalAuthListManagement/SendLocalListFeature.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Messages.LocalAuthListManagement;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features.LocalAuthListManagement
+{
+    public class SendLocalListFeature : Feature
+    {
+        public override string GetAction()
+        {
+            return Actions.SendLocalList.ToString();
+        }
+
+        public override Type GetConfirmationType()
+        {
+            return typeof(SendLocalListConfirmation);
+        }
+
+        public override Type GetRequestType()
+        {
+            return typeof(SendLocalListRequest);
+        }
+    }
+}

+ 43 - 0
EVCB_OCPP.Packet/Features/LocalAuthListManagementProfile.cs

@@ -0,0 +1,43 @@
+using EVCB_OCPP.Packet.Features.LocalAuthListManagement;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features
+{
+    
+     public class LocalAuthListManagementProfile : Profile
+    {
+        public LocalAuthListManagementProfile()
+        {
+            Name = "LocalAuthListManagement";
+            //加入支援的Features
+            features.Add(new GetLocalListVersionFeature());
+            features.Add(new SendLocalListFeature());
+           
+
+
+            actions.Add(Actions.GetLocalListVersion.ToString());
+            actions.Add(Actions.SendLocalList.ToString());
+           
+
+
+        }
+
+        public string GetActionFromConfirmation(Type seekType)
+        {
+            return features.Where(x => x.GetConfirmationType() == seekType).FirstOrDefault().GetAction();
+        }
+
+        public string GetActionFromRequest(Type seekType)
+        {
+            return GetFeaturebyType(seekType).GetAction();
+        }
+
+
+
+
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet/Features/RemoteTrigger/TriggerMessageFeature.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Messages.RemoteTrigger;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features.RemoteTrigger
+{
+    public class TriggerMessageFeature : Feature
+    {
+        public override string GetAction()
+        {
+            return Actions.TriggerMessage.ToString();
+        }
+
+        public override Type GetConfirmationType()
+        {
+            return typeof(TriggerMessageConfirmation);
+        }
+
+        public override Type GetRequestType()
+        {
+            return typeof(TriggerMessageRequest);
+        }
+    }
+}

+ 42 - 0
EVCB_OCPP.Packet/Features/RemoteTriggerProfile.cs

@@ -0,0 +1,42 @@
+using EVCB_OCPP.Packet.Features.RemoteTrigger;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features
+{
+   
+    public class RemoteTriggerProfile : Profile
+    {
+        public RemoteTriggerProfile()
+        {
+            Name = "RemoteTrigger";
+            //加入支援的Features
+            features.Add(new TriggerMessageFeature());         
+
+
+
+            actions.Add(Actions.TriggerMessage.ToString());
+       
+
+
+
+        }
+
+        public string GetActionFromConfirmation(Type seekType)
+        {
+            return features.Where(x => x.GetConfirmationType() == seekType).FirstOrDefault().GetAction();
+        }
+
+        public string GetActionFromRequest(Type seekType)
+        {
+            return GetFeaturebyType(seekType).GetAction();
+        }
+
+
+
+
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet/Features/Reservation/CancelReservationFeature.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Messages.Reservation;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features.Reservation
+{
+    public class CancelReservationFeature : Feature
+    {
+        public override string GetAction()
+        {
+            return Actions.CancelReservation.ToString();
+        }
+
+        public override Type GetConfirmationType()
+        {
+            return typeof(CancelReservationConfirmation);
+        }
+
+        public override Type GetRequestType()
+        {
+            return typeof(CancelReservationRequest);
+        }
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet/Features/Reservation/ReserveNowFeature.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Messages.Reservation;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features.Reservation
+{
+    public class ReserveNowFeature : Feature
+    {
+        public override string GetAction()
+        {
+            return Actions.ReserveNow.ToString();
+        }
+
+        public override Type GetConfirmationType()
+        {
+            return typeof(ReserveNowConfirmation);
+        }
+
+        public override Type GetRequestType()
+        {
+            return typeof(ReserveNowRequest);
+        }
+    }
+}

+ 43 - 0
EVCB_OCPP.Packet/Features/ReservationProfile.cs

@@ -0,0 +1,43 @@
+using EVCB_OCPP.Packet.Features.Reservation;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features
+{
+   
+    public class ReservationProfile : Profile
+    {
+        public ReservationProfile()
+        {
+            Name = "Reservation";
+            //加入支援的Features
+            features.Add(new CancelReservationFeature());
+            features.Add(new ReserveNowFeature());
+
+
+
+            actions.Add(Actions.CancelReservation.ToString());
+            actions.Add(Actions.ReserveNow.ToString());
+
+
+
+        }
+
+        public string GetActionFromConfirmation(Type seekType)
+        {
+            return features.Where(x => x.GetConfirmationType() == seekType).FirstOrDefault().GetAction();
+        }
+
+        public string GetActionFromRequest(Type seekType)
+        {
+            return GetFeaturebyType(seekType).GetAction();
+        }
+
+
+
+
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet/Features/SmartCharging/ClearChargingProfileFeature.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Messages.SmartCharging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features.SmartCharging
+{
+    public class ClearChargingProfileFeature : Feature
+    {
+        public override string GetAction()
+        {
+            return Actions.ClearChargingProfile.ToString();
+        }
+
+        public override Type GetConfirmationType()
+        {
+            return typeof(ClearChargingProfileConfirmation);
+        }
+
+        public override Type GetRequestType()
+        {
+            return typeof(ClearChargingProfileRequest);
+        }
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet/Features/SmartCharging/GetCompositeScheduleFeature.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Messages.SmartCharging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features.SmartCharging
+{
+    public class GetCompositeScheduleFeature : Feature
+    {
+        public override string GetAction()
+        {
+            return Actions.GetCompositeSchedule.ToString();
+        }
+
+        public override Type GetConfirmationType()
+        {
+            return typeof(GetCompositeScheduleConfirmation);
+        }
+
+        public override Type GetRequestType()
+        {
+            return typeof(GetCompositeScheduleRequest);
+        }
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet/Features/SmartCharging/SetChargingProfileFeature.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Messages.SmartCharging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features.SmartCharging
+{
+    public class SetChargingProfileFeature : Feature
+    {
+        public override string GetAction()
+        {
+            return Actions.SetChargingProfile.ToString();
+        }
+
+        public override Type GetConfirmationType()
+        {
+            return typeof(SetChargingProfileConfirmation);
+        }
+
+        public override Type GetRequestType()
+        {
+            return typeof(SetChargingProfileRequest);
+        }
+    }
+}

+ 45 - 0
EVCB_OCPP.Packet/Features/SmartChargingProfile.cs

@@ -0,0 +1,45 @@
+using EVCB_OCPP.Packet.Features.SmartCharging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Features
+{
+    
+
+    public class SmartChargingProfile : Profile
+    {
+        public SmartChargingProfile()
+        {
+            Name = "SmartCharging";
+            //加入支援的Features
+            features.Add(new ClearChargingProfileFeature());
+            features.Add(new GetCompositeScheduleFeature());
+            features.Add(new SetChargingProfileFeature());
+
+
+            actions.Add(Actions.ClearChargingProfile.ToString());
+            actions.Add(Actions.GetCompositeSchedule.ToString());
+            actions.Add(Actions.SetChargingProfile.ToString());
+
+
+
+        }
+
+        public string GetActionFromConfirmation(Type seekType)
+        {
+            return features.Where(x => x.GetConfirmationType() == seekType).FirstOrDefault().GetAction();
+        }
+
+        public string GetActionFromRequest(Type seekType)
+        {
+            return GetFeaturebyType(seekType).GetAction();
+        }
+
+
+
+
+    }
+}

+ 30 - 0
EVCB_OCPP.Packet/Messages/FirmwareManagement/DiagnosticsStatusNotificationConfirmation.cs

@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Messages.FirmwareManagement
+{
+    public class DiagnosticsStatusNotificationConfirmation : IConfirmation
+    {
+        private IRequest _request = null;
+
+
+        public IRequest GetRequest()
+        {
+            return _request;
+        }
+
+        public void SetRequest(IRequest request)
+        {
+            _request = request;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 39 - 0
EVCB_OCPP.Packet/Messages/FirmwareManagement/DiagnosticsStatusNotificationRequest.cs

@@ -0,0 +1,39 @@
+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;
+using EVCB_OCPP.Packet.Messages.SubTypes;
+using EVCB_OCPP.Packet.Features;
+
+namespace EVCB_OCPP.Packet.Messages.FirmwareManagement
+{
+    public class DiagnosticsStatusNotificationRequest : IRequest
+    {
+        public DiagnosticsStatusNotificationRequest()
+        {
+            Action = Actions.DiagnosticsStatusNotification.ToString();
+        }
+
+        [JsonIgnore]
+        public string Action { set; get; }
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public DiagnosticsStatus status { set; get; }
+
+        public bool TransactionRelated()
+        {
+            return false;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 30 - 0
EVCB_OCPP.Packet/Messages/FirmwareManagement/FirmwareStatusNotificationConfirmation.cs

@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Messages.FirmwareManagement
+{
+    public class FirmwareStatusNotificationConfirmation : IConfirmation
+    {
+        private IRequest _request = null;
+        
+
+        public IRequest GetRequest()
+        {
+            return _request;
+        }
+
+        public void SetRequest(IRequest request)
+        {
+            _request = request;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 39 - 0
EVCB_OCPP.Packet/Messages/FirmwareManagement/FirmwareStatusNotificationRequest.cs

@@ -0,0 +1,39 @@
+using EVCB_OCPP.Packet.Features;
+using EVCB_OCPP.Packet.Messages.SubTypes;
+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.Packet.Messages.FirmwareManagement
+{
+    public class FirmwareStatusNotificationRequest : IRequest
+    {
+        public FirmwareStatusNotificationRequest()
+        {
+            Action = Actions.FirmwareStatusNotification.ToString();
+        }
+
+        [JsonIgnore]
+        public string Action { set; get; }
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public FirmwareStatus status { set; get; }
+
+        public bool TransactionRelated()
+        {
+            return false;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+
+}

+ 35 - 0
EVCB_OCPP.Packet/Messages/FirmwareManagement/GetDiagnosticsConfirmation.cs

@@ -0,0 +1,35 @@
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Messages.FirmwareManagement
+{
+    public class GetDiagnosticsConfirmation : IConfirmation
+    {
+
+        public string fileName { set; get; }
+
+        private IRequest _request = null;
+
+
+        public IRequest GetRequest()
+        {
+            return _request;
+        }
+
+        public void SetRequest(IRequest request)
+        {
+            _request = request;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}
+

+ 47 - 0
EVCB_OCPP.Packet/Messages/FirmwareManagement/GetDiagnosticsRequest.cs

@@ -0,0 +1,47 @@
+using EVCB_OCPP.Packet.Features;
+using EVCB_OCPP.Packet.Utilities;
+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.Packet.Messages.FirmwareManagement
+{
+    public class GetDiagnosticsRequest : IRequest
+    {
+        public GetDiagnosticsRequest()
+        {
+            Action = Actions.GetDiagnostics.ToString();
+        }
+
+        [JsonIgnore]
+        public string Action { set; get; }
+
+        [Required]
+        public Uri location { set; get; }
+
+        public int? retries { set; get; }
+
+        public int? retryInterval { set; get; }
+
+        [JsonConverter(typeof(UTCDateTimeConverter))]
+        public DateTime? startTime { set; get; }
+
+        [JsonConverter(typeof(UTCDateTimeConverter))]
+        public DateTime? stopTime { set; get; }
+
+        public bool TransactionRelated()
+        {
+            return false;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 31 - 0
EVCB_OCPP.Packet/Messages/FirmwareManagement/UpdateFirmwareConfirmation.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.Packet.Messages.FirmwareManagement
+{
+    public class UpdateFirmwareConfirmation : IConfirmation
+    {
+        private IRequest _request = null;
+
+
+        public IRequest GetRequest()
+        {
+            return _request;
+        }
+
+        public void SetRequest(IRequest request)
+        {
+            _request = request;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}
+

+ 47 - 0
EVCB_OCPP.Packet/Messages/FirmwareManagement/UpdateFirmwareRequest.cs

@@ -0,0 +1,47 @@
+using EVCB_OCPP.Packet.Features;
+using EVCB_OCPP.Packet.Utilities;
+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.Packet.Messages.FirmwareManagement
+{
+    public class UpdateFirmwareRequest : IRequest
+    {
+
+        public UpdateFirmwareRequest()
+        {
+            Action = Actions.UpdateFirmware.ToString();
+        }
+
+        [JsonIgnore]
+        public string Action { set; get; }
+
+        [Required]
+        public Uri location { set; get; }
+
+        public int? retries { set; get; }
+
+
+        [Required]
+        [JsonConverter(typeof(UTCDateTimeConverter))]
+        public DateTime retrieveDate { set; get; }
+
+
+        public int? retryInterval { set; get; }
+
+        public bool TransactionRelated()
+        {
+            return false;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 33 - 0
EVCB_OCPP.Packet/Messages/LocalAuthListManagement/GetLocalListVersionConfirmation.cs

@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EVCB_OCPP.Packet.Messages.LocalAuthListManagement
+{
+    public class GetLocalListVersionConfirmation : IConfirmation
+    {
+        private IRequest _request = null;
+
+
+        [Required]
+        public int listVersion { set; get; }
+
+        public IRequest GetRequest()
+        {
+            return _request;
+        }
+
+        public void SetRequest(IRequest request)
+        {
+            _request = request;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 27 - 0
EVCB_OCPP.Packet/Messages/LocalAuthListManagement/GetLocalListVersionRequest.cs

@@ -0,0 +1,27 @@
+using EVCB_OCPP.Packet.Features;
+using Newtonsoft.Json;
+using System.ComponentModel.DataAnnotations;
+
+namespace EVCB_OCPP.Packet.Messages.LocalAuthListManagement
+{
+    public class GetLocalListVersionRequest : IRequest
+    {
+        public GetLocalListVersionRequest()
+        {
+            Action = Actions.GetLocalListVersion.ToString();
+        }
+
+        [JsonIgnore]
+        public string Action { set; get; }
+
+        public bool TransactionRelated()
+        {
+            return false;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 32 - 0
EVCB_OCPP.Packet/Messages/LocalAuthListManagement/SendLocalListConfirmation.cs

@@ -0,0 +1,32 @@
+using EVCB_OCPP.Packet.Messages.SubTypes;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+
+using System.ComponentModel.DataAnnotations;
+
+namespace EVCB_OCPP.Packet.Messages.LocalAuthListManagement
+{
+    public class SendLocalListConfirmation : IConfirmation
+    {
+        private IRequest _request = null;
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public UpdateStatus updateStatus { set; get; }
+
+        public IRequest GetRequest()
+        {
+            return _request;
+        }
+
+        public void SetRequest(IRequest request)
+        {
+            _request = request;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 44 - 0
EVCB_OCPP.Packet/Messages/LocalAuthListManagement/SendLocalListRequest.cs

@@ -0,0 +1,44 @@
+using EVCB_OCPP.Packet.Features;
+using EVCB_OCPP.Packet.Messages.SubTypes;
+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.Packet.Messages.LocalAuthListManagement
+{
+    public class SendLocalListRequest : IRequest
+    {
+
+        public SendLocalListRequest()
+        {
+            Action = Actions.SendLocalList.ToString();
+        }
+
+        [JsonIgnore]
+        public string Action { set; get; }
+
+        [Required]
+        public int listVersion { set; get; }
+
+        public List<AuthorizationData> localAuthorizationList { set; get; }
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public UpdateType updateType { set; get; }
+
+        public bool TransactionRelated()
+        {
+            return false;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 37 - 0
EVCB_OCPP.Packet/Messages/RemoteTrigger/TriggerMessageConfirmation.cs

@@ -0,0 +1,37 @@
+using EVCB_OCPP.Packet.Messages.SubTypes;
+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.Packet.Messages.RemoteTrigger
+{
+    public class TriggerMessageConfirmation : IConfirmation
+    {
+        private IRequest _request = null;
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public TriggerMessageStatus status { set; get; }
+
+        public IRequest GetRequest()
+        {
+            return _request;
+        }
+
+        public void SetRequest(IRequest request)
+        {
+            _request = request;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 41 - 0
EVCB_OCPP.Packet/Messages/RemoteTrigger/TriggerMessageRequest.cs

@@ -0,0 +1,41 @@
+using EVCB_OCPP.Packet.Features;
+using EVCB_OCPP.Packet.Messages.SubTypes;
+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.Packet.Messages.RemoteTrigger
+{
+    public class TriggerMessageRequest : IRequest
+    {
+
+        public TriggerMessageRequest()
+        {
+            Action = Actions.TriggerMessage.ToString();
+        }
+
+        [JsonIgnore]
+        public string Action { set; get; }
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public MessageTrigger requestedMessage { set; get; }
+
+        public int? connectorId { set; get; }
+
+        public bool TransactionRelated()
+        {
+            return false;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 36 - 0
EVCB_OCPP.Packet/Messages/Reservation/CancelReservationConfirmation.cs

@@ -0,0 +1,36 @@
+using EVCB_OCPP.Packet.Messages.SubTypes;
+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.Packet.Messages.Reservation
+{
+    public class CancelReservationConfirmation : IConfirmation
+    {
+        private IRequest _request = null;
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public CancelReservationStatus status { set; get; }
+
+        public IRequest GetRequest()
+        {
+            return _request;
+        }
+
+        public void SetRequest(IRequest request)
+        {
+            _request = request;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 36 - 0
EVCB_OCPP.Packet/Messages/Reservation/CancelReservationRequest.cs

@@ -0,0 +1,36 @@
+using EVCB_OCPP.Packet.Features;
+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.Packet.Messages.Reservation
+{
+    public class CancelReservationRequest : IRequest
+    {
+
+        public CancelReservationRequest()
+        {
+            Action = Actions.CancelReservation.ToString();
+        }
+
+        [JsonIgnore]
+        public string Action { set; get; }
+
+        [Required]
+       public int reservationId { set; get; }
+
+        public bool TransactionRelated()
+        {
+            return false;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 36 - 0
EVCB_OCPP.Packet/Messages/Reservation/ReserveNowConfirmation.cs

@@ -0,0 +1,36 @@
+using EVCB_OCPP.Packet.Messages.SubTypes;
+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.Packet.Messages.Reservation
+{
+    public class ReserveNowConfirmation : IConfirmation
+    {
+        private IRequest _request = null;
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public ReservationStatus status { set; get; }
+
+        public IRequest GetRequest()
+        {
+            return _request;
+        }
+
+        public void SetRequest(IRequest request)
+        {
+            _request = request;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 50 - 0
EVCB_OCPP.Packet/Messages/Reservation/ReserveNowRequest.cs

@@ -0,0 +1,50 @@
+using EVCB_OCPP.Packet.Features;
+using EVCB_OCPP.Packet.Utilities;
+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.Packet.Messages.Reservation
+{
+    public class ReserveNowRequest : IRequest
+    {
+
+        public ReserveNowRequest()
+        {
+            Action = Actions.ReserveNow.ToString();
+        }
+
+        [JsonIgnore]
+        public string Action { set; get; }
+
+        [Required]
+        public int connectorId { set; get; }
+
+
+        [Required]
+        [JsonConverter(typeof(UTCDateTimeConverter))]
+        public DateTime expiryDate { set; get; }
+
+        [Required]
+        public string idTag { set; get; }
+
+        public string parentIdTag { set; get; }
+
+        [Required]
+        public int reservationId { set; get; }
+
+        public bool TransactionRelated()
+        {
+            return false;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 36 - 0
EVCB_OCPP.Packet/Messages/SmartCharging/ClearChargingProfileConfirmation.cs

@@ -0,0 +1,36 @@
+using EVCB_OCPP.Packet.Messages.SubTypes;
+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.Packet.Messages.SmartCharging
+{
+    public class ClearChargingProfileConfirmation : IConfirmation
+    {
+        private IRequest _request = null;
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public ClearChargingProfileStatus status { set; get; }
+
+        public IRequest GetRequest()
+        {
+            return _request;
+        }
+
+        public void SetRequest(IRequest request)
+        {
+            _request = request;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 45 - 0
EVCB_OCPP.Packet/Messages/SmartCharging/ClearChargingProfileRequest.cs

@@ -0,0 +1,45 @@
+using EVCB_OCPP.Packet.Features;
+using EVCB_OCPP.Packet.Messages.SubTypes;
+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.Packet.Messages.SmartCharging
+{
+    public class ClearChargingProfileRequest : IRequest
+    {
+
+        public ClearChargingProfileRequest()
+        {
+            Action = Actions.ClearChargingProfile.ToString();
+        }
+
+        [JsonIgnore]
+        public string Action { set; get; }
+
+        public int? id { set; get; }
+
+        public int connectorId { set; get; }
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public ChargingProfilePurposeType? chargingProfilePurpose { set; get; }
+
+        public int? stackLevel { set; get; }
+
+        public bool TransactionRelated()
+        {
+            return false;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 46 - 0
EVCB_OCPP.Packet/Messages/SmartCharging/GetCompositeScheduleConfirmation.cs

@@ -0,0 +1,46 @@
+using EVCB_OCPP.Packet.Messages.SubTypes;
+using EVCB_OCPP.Packet.Utilities;
+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.Packet.Messages.SmartCharging
+{
+    public class GetCompositeScheduleConfirmation : IConfirmation
+    {
+        private IRequest _request = null;
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public GetCompositeScheduleStatus status { set; get; }
+
+        public int? connectorId { set; get; }
+
+
+        [Required]
+        [JsonConverter(typeof(UTCDateTimeConverter))]
+        public DateTime? scheduleStart { set; get; }
+
+        public ChargingSchedule chargingSchedule { set; get; }
+
+        public IRequest GetRequest()
+        {
+            return _request;
+        }
+
+        public void SetRequest(IRequest request)
+        {
+            _request = request;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 44 - 0
EVCB_OCPP.Packet/Messages/SmartCharging/GetCompositeScheduleRequest.cs

@@ -0,0 +1,44 @@
+using EVCB_OCPP.Packet.Features;
+using EVCB_OCPP.Packet.Messages.SubTypes;
+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.Packet.Messages.SmartCharging
+{
+    public class GetCompositeScheduleRequest : IRequest
+    {
+
+        public GetCompositeScheduleRequest()
+        {
+            Action = Actions.GetCompositeSchedule.ToString();
+        }
+
+        [JsonIgnore]
+        public string Action { set; get; }
+
+        [Required]
+        public int connectorId { set; get; }
+        [Required]
+        public int duration { set; get; }
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public ChargingRateUnitType? chargingRateUnit { set; get; }
+
+        public bool TransactionRelated()
+        {
+            return false;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 38 - 0
EVCB_OCPP.Packet/Messages/SmartCharging/SetChargingProfileConfirmation.cs

@@ -0,0 +1,38 @@
+using EVCB_OCPP.Packet.Messages.SubTypes;
+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.Packet.Messages.SmartCharging
+{
+    public class SetChargingProfileConfirmation : IConfirmation
+    {
+        private IRequest _request = null;
+
+        [Required]
+        [JsonConverter(typeof(StringEnumConverter))]
+        public ChargingProfileStatus status { set; get; }
+
+
+        public IRequest GetRequest()
+        {
+            return _request;
+        }
+
+        public void SetRequest(IRequest request)
+        {
+            _request = request;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+
+    }
+}

+ 41 - 0
EVCB_OCPP.Packet/Messages/SmartCharging/SetChargingProfileRequest.cs

@@ -0,0 +1,41 @@
+using EVCB_OCPP.Packet.Features;
+using EVCB_OCPP.Packet.Messages.SubTypes;
+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.Packet.Messages.SmartCharging
+{
+    public class SetChargingProfileRequest : IRequest
+    {
+        public SetChargingProfileRequest()
+        {
+            Action = Actions.SetChargingProfile.ToString();
+        }
+
+        [JsonIgnore]
+        public string Action { set; get; }
+
+        [Required]
+        public int connectorId { set; get; }
+
+        [Required]       
+        public csChargingProfiles csChargingProfiles { set; get; }
+
+        //public int stackLevel { set; get; }
+
+        public bool TransactionRelated()
+        {
+            return false;
+        }
+
+        public bool Validate()
+        {
+            return Validator.TryValidateObject(this, new ValidationContext(this), null, true);
+        }
+    }
+}

+ 0 - 12
EVCB_OCPP.Packet/Messages/SubTypes/Class1.cs

@@ -1,12 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace EVCB_OCPP.Packet.Messages.SubTypes
-{
-    class Class1
-    {
-    }
-}

Some files were not shown because too many files changed in this diff