Robert 4 жил өмнө
parent
commit
2eaffe6332

+ 2 - 1
AwInitilizer/App.xaml.cs

@@ -27,7 +27,8 @@ namespace AwInitilizer
 
             var startResult = SajetConnect.SajetTransStart();
 
-            Cultures.CulturesHelper.Instance.ChangeCulture(System.Globalization.CultureInfo.GetCultureInfo("zh-CHS"));
+            //Cultures.CulturesHelper.Instance.ChangeCulture(System.Globalization.CultureInfo.GetCultureInfo("zh-CHS"));
+            Cultures.CulturesHelper.Instance.ChangeCulture(System.Globalization.CultureInfo.GetCultureInfo("en-US"));
         }
 
         private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)

+ 78 - 0
AwInitilizer/Cultures/StringResource.en-US.xaml

@@ -0,0 +1,78 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+                    xmlns:local="clr-namespace:AwInitilizer.Cultures"
+                    xmlns:sys="clr-namespace:System;assembly=mscorlib">
+    
+    <sys:String x:Key="Confirm">OK</sys:String>
+    
+    <sys:String x:Key="SigninDialogTitle">Sigin in</sys:String>
+    <sys:String x:Key="SigninDialogEnterIDHint">Enter ID</sys:String>
+    <sys:String x:Key="SigninDialogEnterWOHint">Enter WorkOrder</sys:String>
+    <sys:String x:Key="SigninDialogEnterWOError">WorkOrder Error</sys:String>
+    <sys:String x:Key="SigninDialogEnterIDError">ID Error</sys:String>
+    <sys:String x:Key="SigninDialogNoResponseError">MES no response</sys:String>
+
+    <sys:String x:Key="Account">Account</sys:String>
+    <sys:String x:Key="logout">logout</sys:String>
+    <sys:String x:Key="UserID">User Id</sys:String>
+    <sys:String x:Key="WorkOrder">Work Order</sys:String>
+
+    <sys:String x:Key="BarcodeSetting">Barcode Setting</sys:String>
+    <sys:String x:Key="ModelName">Model Name</sys:String>
+    <sys:String x:Key="SerialNumber">Serial Number</sys:String>
+    <sys:String x:Key="SimStatus">4G Sim Card Inserted</sys:String>
+    <sys:String x:Key="ICCID">Sim ICCID</sys:String>
+    <sys:String x:Key="IMSI">Sim IMSI</sys:String>
+
+    <sys:String x:Key="FirmwareVersion">Firmware version</sys:String>
+    <sys:String x:Key="FirmwareVersionHeaderName">Module</sys:String>
+    <sys:String x:Key="FirmwareVersionHeaderVersion">Version</sys:String>
+
+    <sys:String x:Key="StartProcedure">Start</sys:String>
+
+    <sys:String x:Key="StatusIdel">Idel</sys:String>
+    <sys:String x:Key="StatusUpdating">Updating</sys:String>
+    <sys:String x:Key="StatusSuccess">Success</sys:String>
+    <sys:String x:Key="StatusFail">Fail</sys:String>
+
+    <sys:String x:Key="StatusBarUpdating">Processing {0}</sys:String>
+    <sys:String x:Key="StatusBarFailed">Process {0} Failed</sys:String>
+
+    <sys:String x:Key="SnWoMisMatch">Serial Number or WorkOrder Error</sys:String>
+
+    <sys:String x:Key="ModelNameEmptyAlert">Model Name is Required</sys:String>
+    <sys:String x:Key="ModelNameMismatchAlert">Model Name setting is Mismathed</sys:String>
+    <sys:String x:Key="SerialNumberEmptyAlert">Serial Number is Required</sys:String>
+    <sys:String x:Key="ModelNameErrorAlert">Model Name format Error</sys:String>
+    <sys:String x:Key="FourGenVersionEmptyAlert">4G Module Version is Required</sys:String>
+    <sys:String x:Key="IccidEmptyAlert">ICCID is Required when sim installed</sys:String>
+    <sys:String x:Key="ImsiEmptyAlert">IMSI is Required when sim installed</sys:String>
+    <sys:String x:Key="FirmwareListNullAlert">FirmwareUpdateModels should be decalred</sys:String>
+    <sys:String x:Key="FirmwareNameEmptyAlert">Firmware module name is Required</sys:String>
+    <sys:String x:Key="FirmwareVersionEmptyAlert">Firmware version is Required</sys:String>
+    <sys:String x:Key="FirmwareFileEmptyAlert">Firmware file is Required</sys:String>
+
+    <sys:String x:Key="LoadConfigRootFolderNotfoundAlert">Firmware root path ERROR</sys:String>
+    <sys:String x:Key="LoadConfigFolderNotfoundAlert">Firmware root path not exist</sys:String>
+    <sys:String x:Key="LoadConfigModelFolderNotfoundAlert">Model firmware root path not exist</sys:String>
+    <sys:String x:Key="LoadConfigModelInitNotfoundAlert">Model firmware setting not exist</sys:String>
+    <sys:String x:Key="LoadConfigModelInitFormatErrorAlert">Setting file ERROR</sys:String>
+
+    <sys:String x:Key="InitModelNameEmptyAlert">ModelName is requred</sys:String>
+    <sys:String x:Key="InitModelNameErrorAlert">ModelName format Error</sys:String>
+    <sys:String x:Key="InitIccidEmptyAlert">ICCID should not empty while IsSimInsert is set</sys:String>
+    <sys:String x:Key="InitImsiEmptyAlert">IMSI should not empty while IsSimInsert is set</sys:String>
+    <sys:String x:Key="InitFirmwareNameEmptyAlert">Firmware module name should not empty</sys:String>
+    <sys:String x:Key="InitFirmwareVersionEmptyAlert">Version should not empty while {0} firmware is set</sys:String>
+    <sys:String x:Key="InitFirmwareFileEmptyAlert">File name should not empty while {0} version is set</sys:String>
+    <sys:String x:Key="InitFirmwareFileMissingAlert">{0} Firemware file is missing</sys:String>
+    <sys:String x:Key="InitFirmwareFileHeaderMismatchAlert">{0} Firemware and ModelName is Mismatched</sys:String>
+    <sys:String x:Key="InitFirmwareFileHeaderFormatAlert">{0} Firemware header ERROR</sys:String>
+
+    <sys:String x:Key="BtnPressHintTitle">Starting Button test</sys:String>
+    <sys:String x:Key="BtnPressUnpressHint">Please make sure All button is Unpressed&#x0a;Press Ok while complete</sys:String>
+    <sys:String x:Key="BtnPressPressHint">PRESS {0} 2 secnds</sys:String>
+    <sys:String x:Key="BtnPressGreenBtn">GREEN Button</sys:String>
+    <sys:String x:Key="BtnPressBlueBtn">BLUE Button</sys:String>
+    <sys:String x:Key="BtnPressEmergencyBtn">EMERGENCY Button</sys:String>
+</ResourceDictionary>

+ 2 - 0
AwInitilizer/DLL/SajetConnect.cs

@@ -122,10 +122,12 @@ namespace AwInitilizer.DLL
 
             if (string.IsNullOrEmpty(msg))
                 return false;
+#if DEBUG
             Result = false;
 
             if (!Result)
                 return true;
+#endif
 
             if (Result)
             {

+ 6 - 0
AwInitilizer/Initilizer.csproj

@@ -65,6 +65,7 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </ApplicationDefinition>
+    <Compile Include="Converter\PressStatusConverter.cs" />
     <Compile Include="Cultures\CulturesHelper.cs" />
     <Compile Include="Procedure\FirmwareBundleUploadProcedure.cs" />
     <Compile Include="Procedure\FirmwareCheckVersionProcedure.cs" />
@@ -88,6 +89,11 @@
       <Generator>MSBuild:Compile</Generator>
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
+    <Content Include="Cultures\StringResource.en-US.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
     <Page Include="HintDialog.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>

+ 16 - 8
AwInitilizer/MainWindow.xaml.cs

@@ -4,6 +4,7 @@ using Microsoft.Win32;
 using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.IO;
 using System.Linq;
 using System.Net;
@@ -96,6 +97,13 @@ namespace AwInitilizer
             LogoutTimer.Start();
         }
 
+        protected override void OnClosing(CancelEventArgs e)
+        {
+            base.OnClosing(e);
+
+            LogoutTimer.Tick -= LogoutTimer_Tick;
+        }
+
         private void MainWindow_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
         {
 
@@ -571,12 +579,12 @@ namespace AwInitilizer
             fileWriter.WriteLine("                                  test report");
             fileWriter.WriteLine("");
 
-            fileWriter.WriteLine("Test Program Name : {0,-30}    ", ViewModel.ModelName);
+            fileWriter.WriteLine("Test Program Name : {0,-30}    ", "FirmwareUpdate");
             fileWriter.WriteLine("Serial No         : {0,-30}System Time  : {1}", ViewModel.SerialNumber,DateTime.Now.ToString());
             fileWriter.WriteLine("Model Name        : {0,-30}Elapsed Time : {1}", ViewModel.ModelName, ViewModel.UpdateElpased.ToString(@"hh\:mm\:ss"));
             fileWriter.WriteLine("LOT Number        :                               Environment  : ");
             fileWriter.WriteLine("Order Number      :                               Inspector    : {0}", ViewModel.UserID);
-            fileWriter.WriteLine("Customer          :                               Test Result  : {0}", ViewModel.UpdateProcedure.Last().Status == ProcedureStatus.Success? "PASS":"Failed");
+            fileWriter.WriteLine("Customer          :                               Test Result  : {0}", ViewModel.UpdateProcedure.Last().Status == ProcedureStatus.Pass? "PASS":"Failed");
             fileWriter.WriteLine("");
 
             fileWriter.WriteLine(borderString);
@@ -584,10 +592,10 @@ namespace AwInitilizer
             for (int procedureIndex = 0; procedureIndex < ViewModel.UpdateProcedure.Count; procedureIndex++)
             {
                 var procedure = ViewModel.UpdateProcedure[procedureIndex];
-                fileWriter.WriteLine("STEP.{0} : {1,-63}{2,6}", procedureIndex, procedure.Name, procedure.Status.ToString());
-                foreach (var logPair in procedure.LogPair)
+                fileWriter.WriteLine("STEP.{0} : {1,-63}{2,6}", procedureIndex+1, procedure.Name, procedure.Status.ToString());
+                foreach(var reportLog in procedure.ReportLog)
                 {
-                    fileWriter.WriteLine("{0}:{1}", logPair.Key, logPair.Value);
+                    fileWriter.WriteLine(reportLog);
                 }
                 fileWriter.WriteLine(borderString);
             }
@@ -696,7 +704,7 @@ namespace AwInitilizer
 
             //init intilize procedure list
 
-            //procedures.Add(new ButtonStatusCheckPorcedure());
+            procedures.Add(new ButtonStatusCheckPorcedure());
             procedures.Add(new BasicInfoUpdateProcedure());
             procedures.Add(new FourGenModuleCheckProcedure());
             //for (int firemwareIndex = 0; firemwareIndex < ViewModel.FirmwareUpdateModels.Count ; firemwareIndex++)
@@ -898,8 +906,8 @@ namespace AwInitilizer
             }
             signinDialog.ShowDialog();
 
-            SystemID.TryParse("DSWU601J0UW2PHD2045A004A0", out var systemID);
-            SystemIDScanReseived(systemID);
+            //SystemID.TryParse("DSWU601J0UW2PHD2045A004A0", out var systemID);
+            //SystemIDScanReseived(systemID);
 
             if (signinDialog.DialogResult != true)
             {

+ 28 - 16
AwInitilizer/Procedure/BasicInfoUpdateProcedure.cs

@@ -19,8 +19,9 @@ namespace AwInitilizer.Procedure
         {
             if (!await base.CheckAndCreateSocket())
             {
-                LogPair.Add("BaseUpdateSocketConnect","fail");
+                LogPair.Add("BaseUpdateSocketConnect","0");
                 InfoLog += "EVSE connect failed\n";
+                ReportLog.Add("EVSE connect failed");
                 return false;
             }
 
@@ -29,26 +30,28 @@ namespace AwInitilizer.Procedure
             {
                 InfoLog += "Model Name update failed\n";
                 Logger.Print("Model Name update Failed", isError: true);
-                LogPair.Add("ModelNameWrite", "fail");
+                LogPair.Add("ModelNameWrite", "0");
+                ReportLog.Add("Model Name update Failed");
                 return false;
             }
             else
             {
                 Logger.Print("Model Name write Success");
-                LogPair.Add("ModelNameWrite", "success");
+                LogPair.Add("ModelNameWrite", "1");
             }
 
             if (!await serialPortocol.SetSerialNumber(UpdateData.SerialNumber))
             {
                 InfoLog += "Serial Number update failed\n";
                 Logger.Print("Serial Number update Failed", isError: true);
-                LogPair.Add("SerialNumberWrite", "fail");
+                LogPair.Add("SerialNumberWrite", "0");
+                ReportLog.Add("Serial Number update Failed");
                 return false;
             }
             else
             {
                 Logger.Print("Serial Number write Success");
-                LogPair.Add("SerialNumberWrite", "success");
+                LogPair.Add("SerialNumberWrite", "1");
             }
 
             var setDateTime = DateTime.Now.ToUniversalTime();
@@ -57,26 +60,28 @@ namespace AwInitilizer.Procedure
             {
                 InfoLog += "RTC update failed\n";
                 Logger.Print("RTC update Failed", isError: true);
-                LogPair.Add("RtcUpdate", "fail");
+                LogPair.Add("RtcUpdate", "0");
+                ReportLog.Add("RTC update Failed");
                 return false;
             }
             else
             {
                 Logger.Print("RTC update write Success");
-                LogPair.Add("RtcUpdate", "success");
+                LogPair.Add("RtcUpdate", "1");
             }
 
             if (!await serialPortocol.SettingChangeConfirm())
             {
                 InfoLog += "Setting save request failed\n";
                 Logger.Print("Setting save Failed", isError: true);
-                LogPair.Add("SettingSave", "fail");
+                LogPair.Add("SettingSave", "0");
+                ReportLog.Add("Setting save request Failed");
                 return false;
             }
             else
             {
                 Logger.Print("Setting save Success");
-                LogPair.Add("SettingSave", "success");
+                LogPair.Add("SettingSave", "1");
             }
 
             Logger.Print("Waiting EVSE reboot...");
@@ -87,7 +92,8 @@ namespace AwInitilizer.Procedure
             {
                 InfoLog += "EVSE not found after reboot\n";
                 Logger.Print("EVSE reboot timeout", isError: true);
-                LogPair.Add("BaseUpdateSocketReConnect", "fail");
+                LogPair.Add("BaseUpdateSocketReConnect", "0");
+                ReportLog.Add("EVSE not found after reboot");
                 return false;
             }
 
@@ -97,10 +103,12 @@ namespace AwInitilizer.Procedure
             {
                 InfoLog += "Model name get failed after reboot\n";
                 Logger.Print("Model Name read Failed", isError: true);
+                ReportLog.Add("Model name get failed after reboot");
                 return false;
             }
             else
             {
+                ReportLog.Add(string.Format("Read Model name : {0} , Expect:{1}", receivedModelName, UpdateData.ModelName));
                 InfoLog += $"Get Updated Model Name { receivedModelName }\n";
                 if (receivedModelName != UpdateData.ModelName)
                 {
@@ -111,20 +119,22 @@ namespace AwInitilizer.Procedure
                 Logger.Print("Model Name update Success");
             }
 
-            var receivedSeerialNumber = await serialPortocol.GetSerialNumber();
-            LogPair.Add("SerialNumberRead", receivedSeerialNumber);
-            if (string.IsNullOrEmpty(receivedSeerialNumber))
+            var receivedSerialNumber = await serialPortocol.GetSerialNumber();
+            LogPair.Add("SerialNumberRead", receivedSerialNumber);
+            if (string.IsNullOrEmpty(receivedSerialNumber))
             {
                 InfoLog += "Serial number get failed after reboot\n";
                 InfoLog += serialPortocol.LatestNullMessage +"\n";
                 Logger.Print("Stored Serial read Failed", isError: true);
                 Logger.Print(serialPortocol.LatestNullMessage);
+                ReportLog.Add("Serial number get failed after reboot");
                 return false;
             }
             else
             {
-                InfoLog += $"Get Updated serial number { receivedSeerialNumber }\n";
-                if (receivedSeerialNumber != UpdateData.SerialNumber)
+                ReportLog.Add(string.Format("Read Serial number : {0} , Expect:{1}", receivedSerialNumber, UpdateData.SerialNumber));
+                InfoLog += $"Get Updated serial number { receivedSerialNumber }\n";
+                if (receivedSerialNumber != UpdateData.SerialNumber)
                 {
                     InfoLog += "Updated serial number mismatched\n";
                     Logger.Print("Stored Serial Number Mismatched", isError: true);
@@ -135,14 +145,16 @@ namespace AwInitilizer.Procedure
 
             var receivedDateTime = await serialPortocol.GetUTCTime();
             LogPair.Add("RtcRead", receivedDateTime?.ToString("yyyyMMddHHmmss"));
-            if (string.IsNullOrEmpty(receivedModelName))
+            if (receivedDateTime==null)
             {
                 InfoLog += "UTC Time receive failed after reboot\n";
                 Logger.Print("UTC Time receive failed", isError: true);
+                ReportLog.Add("UTC Time receive failed after reboot");
                 return false;
             }
             else
             {
+                ReportLog.Add(string.Format("Read UTC time : {0} , CurrentTime:{1}", receivedDateTime?.ToString("yyyyMMddHHmmss"), DateTime.Now.ToUniversalTime().ToString("yyyyMMddHHmmss")));
                 InfoLog += $"UTC Time received : {receivedDateTime.Value.ToString("yyyyMMddHHmmss")}\n";
                 var diff = receivedDateTime.Value - DateTime.Now.ToUniversalTime();
                 if (Math.Abs(diff.TotalSeconds) > 10)

+ 19 - 5
AwInitilizer/Procedure/ButtonStatusCheckPorcedure.cs

@@ -32,8 +32,8 @@ namespace AwInitilizer.Procedure
             Logger.Print("Waiting response..");
 
             object response = false;
-            int pollinfCnt = 0;
-            for (pollinfCnt = 0; pollinfCnt < 14; pollinfCnt++)
+            int pollingCnt = 0;
+            for (pollingCnt = 0; pollingCnt < 14; pollingCnt++)
             {
                 response = await GetButtonStatus();
                 if (response!=null)
@@ -41,8 +41,10 @@ namespace AwInitilizer.Procedure
                 await Task.Delay(TimeSpan.FromSeconds(30));
             }
 
+            ReportLog.Add(string.Format("EVSE connet elapsed minute(s) : {0}, Expect:<14", pollingCnt * 0.5));
+
             //timeout
-            if (pollinfCnt >= 14)
+            if (pollingCnt >= 14)
             {
                 Logger.Print("Wait EVSE timeout", isError: true);
                 return false;
@@ -71,6 +73,10 @@ namespace AwInitilizer.Procedure
             InfoLog += $"Button1:{status.Button1},Button2:{status.Button2},EmgerncyButton:{status.EmergencyButton}\n";
             LogPair.Add("UnpressButtonTest", string.Format("{0}{1}{2}", status.Button1, status.Button2, status.EmergencyButton));
 
+            ReportLog.Add(string.Format("Button unpress test result : {0}, Expect:000",
+                string.Format("{0}{1}{2}", status.Button1, status.Button2, status.EmergencyButton)
+                ));
+
             bool isAllMatched = true;
             if (status != null)
             {
@@ -107,7 +113,7 @@ namespace AwInitilizer.Procedure
             }
 
             //stage 2 - check press sequence
-            Logger.Print("Button Unpress Status check Start");
+            Logger.Print("Button press Status check Start");
             //MessageBox.Show("Press Button1,Button2,EmergencyButton in order\neach press continuous 2 secondes\nPress Ok to start", "Starting Button test");
 
             bool isError = false;
@@ -209,7 +215,15 @@ namespace AwInitilizer.Procedure
                 DismisDialog();
                 InfoLog += $"Press check stage {btn} result\n";
                 InfoLog += $"Button1:{pressStatus.Button1},Button2:{pressStatus.Button2},EmgerncyButton:{pressStatus.EmergencyButton}\n";
-                LogPair.Add($"{btn}PressTest", string.Format("{0}{1}{2}", status.Button1, status.Button2, status.EmergencyButton));
+                LogPair.Add($"{btn}PressTest", string.Format("{0}{1}{2}", pressStatus.Button1, pressStatus.Button2, pressStatus.EmergencyButton));
+
+                ReportLog.Add(string.Format("{0} Button press test result : {1}, Expect:{2}{3}{4}",
+                    btn,
+                    string.Format("{0}{1}{2}", status.Button1, status.Button2, status.EmergencyButton),
+                    testType == 0 ? "1" : "0",
+                    testType == 1 ? "1" : "0",
+                    testType == 2 ? "1" : "0"
+                ));
 
                 if (testCnt >= 20)
                 {

+ 4 - 2
AwInitilizer/Procedure/FirmwareBundleUploadProcedure.cs

@@ -36,16 +36,18 @@ namespace AwInitilizer.Procedure
                     break;
             }
 
+            ReportLog.Add(string.Format("EVSE connet elapsed minute(s) : {0}, Expect:<14", pollingCnt * 0.25));
+
             //timeout
             if (pollingCnt >= 56)
             {
                 Logger.Print("Wait restart timeout", isError: true);
                 InfoLog += "Wait restart timeout\n";
-                LogPair.Add($"UploadStartWait", "fail");
+                LogPair.Add($"UploadStartWait", "0");
                 return false;
             }
 
-            LogPair.Add($"UploadStartWait", "0");
+            LogPair.Add($"UploadStartWait", "1");
 
             //upload firmware
             var updateList = UpdateData.FirmwareUpdateModels;

+ 4 - 0
AwInitilizer/Procedure/FirmwareCheckVersionProcedure.cs

@@ -35,6 +35,8 @@ namespace AwInitilizer.Procedure
                     break;
             }
 
+            ReportLog.Add(string.Format("EVSE connet elapsed minute(s) : {0}, Expect:<16", (pollingCnt * 0.25) + 2));
+
             //timeout
             if (pollingCnt >= 56)
             {
@@ -58,6 +60,8 @@ namespace AwInitilizer.Procedure
 
                 if(versionPair.Keys.Contains(model.Module))
                 {
+                    ReportLog.Add(string.Format("Read {0} version : {1} , Expect:{2}", model.Module, versionPair[model.Module], model.Version));
+
                     bool isVersionMatched = false;
                     if (model.Module == "CsuRootFsFwRev")
                     {

+ 20 - 8
AwInitilizer/Procedure/FourGenModuleCheckProcedure.cs

@@ -16,32 +16,36 @@ namespace AwInitilizer.Procedure
 
         internal override async Task<bool> Run()
         {
-            Logger.Print("Connecting to EVSE");
-            if (!await base.CheckAndCreateSocket())
-            {
-                InfoLog += "EVSE connect failed\n";
-                LogPair.Add("FourgenSocketConnect", "fail");
-                return false;
-            }
-
             if (!UpdateData.SystemID.ModelName.Network.ToString().Contains("4G"))
             {
                 //if does not support 4G then end init
                 InfoLog += "model name does not support 4g ,skip update process\n";
+                ReportLog.Add("4G not supported, skip procedure");
                 return true;
             }
 
+            Logger.Print("Connecting to EVSE");
+            if (!await base.CheckAndCreateSocket())
+            {
+                InfoLog += "EVSE connect failed\n";
+                LogPair.Add("FourgenSocketConnect", "0");
+                ReportLog.Add("EVSE connect failed");
+                return false;
+            }
+
             var fourthGenModuleVersion = await serialPortocol.GetFourGenModuleVersion();
             LogPair.Add("FourgenModuleVersion", fourthGenModuleVersion);
             if (string.IsNullOrEmpty(fourthGenModuleVersion))
             {
                 InfoLog += "4G module version read error\n";
                 Logger.Print("4G module version read error", isError: true);
+                ReportLog.Add("4G module version read error");
                 return false;
             }
             else
             {
                 InfoLog += $"Get 4G Module version :{fourthGenModuleVersion}\n";
+                ReportLog.Add(string.Format("Read 4G Module version : {0} , Expect:{1}", fourthGenModuleVersion, UpdateData.FourGenModuleVersion));
                 if (fourthGenModuleVersion != UpdateData.FourGenModuleVersion)
                 {
                     InfoLog += "4G module version not matched\n";
@@ -56,6 +60,7 @@ namespace AwInitilizer.Procedure
                 InfoLog += "Get sim status failed\n";
                 Logger.Print("Get sim status failed", isError: true);
                 LogPair.Add("SimStatus", "ReadFail");
+                ReportLog.Add("Get sim status failed");
                 return false;
             }
             else
@@ -66,6 +71,8 @@ namespace AwInitilizer.Procedure
 
                 if (simstatus.IsInstalled != UpdateData.IsSimInsert)
                 {
+                    ReportLog.Add(string.Format("Get Sim Status : {0} , Expect:{1}", simstatus.IsInstalled ? "installed" : "uninstalled", UpdateData.IsSimInsert ? "installed" : "uninstalled"));
+
                     Logger.Print("sim install status not matched", isError: true);
                     return false;
                 }
@@ -88,6 +95,9 @@ namespace AwInitilizer.Procedure
                         LogPair.Add("SimICCID", ICCIDstring);
                         LogPair.Add("SimIMSI", IMSIstring);
 
+                        ReportLog.Add(string.Format("Get Sim ICCID : {0} , Expect:{1}", ICCIDstring, UpdateData.ICCID));
+                        ReportLog.Add(string.Format("Get Sim IMSI : {0} , Expect:{1}", IMSIstring, UpdateData.IMSI));
+
                         InfoLog += $"Get sim info, inserted:{simstatus.IsInstalled},ICCID:{ICCIDstring},IMSI:{IMSIstring}\n";
 
                         if (ICCIDstring != UpdateData.ICCID)
@@ -111,6 +121,7 @@ namespace AwInitilizer.Procedure
                         if (!simstatus.ICCID.SequenceEqual(new byte[22]))
                         {
                             InfoLog += $"ICCID not empty : { BitConverter.ToString(simstatus.ICCID).Replace("-", " ")}\n";
+                            ReportLog.Add("ICCID not empty");
                             Logger.Print("sim card ICCID not empty", isError: true);
                             return false;
                         }
@@ -118,6 +129,7 @@ namespace AwInitilizer.Procedure
                         if (!simstatus.IMSI.SequenceEqual(new byte[16]))
                         {
                             InfoLog += $"IMSI not empty : { BitConverter.ToString(simstatus.IMSI).Replace("-", " ")}\n";
+                            ReportLog.Add("IMSI not empty");
                             Logger.Print("sim card IMSI not empty", isError: true);
                             return false;
                         }

+ 3 - 2
AwInitilizer/Procedure/ProcedureBase.cs

@@ -16,7 +16,7 @@ namespace AwInitilizer.Procedure
 {
     public enum ProcedureStatus
     {
-        Idle,Success,Failed
+        Idle,Pass,Failed
     }
 
     public class ProcedureBase
@@ -32,6 +32,7 @@ namespace AwInitilizer.Procedure
         public static IIogger Logger { get; set; }
 
         public Dictionary<string, string> LogPair { get; private set; } = new Dictionary<string, string>();
+        public List<string> ReportLog { get; private set; } = new List<string>();
 
         internal SerialPortocol serialPortocol { get; private set; }
 
@@ -44,7 +45,7 @@ namespace AwInitilizer.Procedure
             Logger.Print(Name + "Started");
             var result = await Run();
             Dispose();
-            Status = result ? ProcedureStatus.Success : ProcedureStatus.Failed;
+            Status = result ? ProcedureStatus.Pass : ProcedureStatus.Failed;
             Logger.Print(Name + "Complete");
             return result;
         }

+ 35 - 9
AwInitlizerInstaller/AwInitlizerInstaller.vdproj

@@ -27,6 +27,12 @@
         }
         "Entry"
         {
+        "MsmKey" = "8:_1F9F534236CB4D3D880F26914397E4BF"
+        "OwnerKey" = "8:_UNDEFINED"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
         "MsmKey" = "8:_757BA0BD19C3D246BA621DB64DE2384D"
         "OwnerKey" = "8:_DAA98DDE772D47D1A3A47A8277D61590"
         "MsmSig" = "8:_UNDEFINED"
@@ -64,19 +70,19 @@
         "Entry"
         {
         "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_757BA0BD19C3D246BA621DB64DE2384D"
+        "OwnerKey" = "8:_DAA98DDE772D47D1A3A47A8277D61590"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
         "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_DAA98DDE772D47D1A3A47A8277D61590"
+        "OwnerKey" = "8:_78ADCBE0D92EA001CDA0D5ECE8D69FA4"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
         "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_78ADCBE0D92EA001CDA0D5ECE8D69FA4"
+        "OwnerKey" = "8:_757BA0BD19C3D246BA621DB64DE2384D"
         "MsmSig" = "8:_UNDEFINED"
         }
     }
@@ -106,19 +112,19 @@
             "ComponentsUrl" = "8:"
                 "Items"
                 {
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2"
+                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.8"
                     {
-                    "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)"
-                    "ProductCode" = "8:.NETFramework,Version=v4.7.2"
+                    "Name" = "8:Microsoft .NET Framework 4.8 (x86 and x64)"
+                    "ProductCode" = "8:.NETFramework,Version=v4.8"
                     }
                     "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.NetCore.CoreRuntime.3.1.x64"
                     {
-                    "Name" = "8:.NET Core Runtime 3.1 (x64)"
+                    "Name" = "8:.NET Core Runtime 3.1.9 (x64)"
                     "ProductCode" = "8:Microsoft.NetCore.CoreRuntime.3.1.x64"
                     }
                     "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.NetCore.CoreRuntime.3.1.x86"
                     {
-                    "Name" = "8:.NET Core Runtime 3.1 (x86)"
+                    "Name" = "8:.NET Core Runtime 3.1.9 (x86)"
                     "ProductCode" = "8:Microsoft.NetCore.CoreRuntime.3.1.x86"
                     }
                 }
@@ -234,6 +240,26 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
+            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1F9F534236CB4D3D880F26914397E4BF"
+            {
+            "SourcePath" = "8:..\\AwInitilizer\\Cultures\\StringResource.en-US.xaml"
+            "TargetName" = "8:StringResource.en-US.xaml"
+            "Tag" = "8:"
+            "Folder" = "8:_86259A374A5843AD9608FFCDF2EFE3AD"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:FALSE"
+            "IsDependency" = "11:FALSE"
+            "IsolateTo" = "8:"
+            }
             "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_757BA0BD19C3D246BA621DB64DE2384D"
             {
             "AssemblyRegister" = "3:1"
@@ -435,7 +461,7 @@
         "Name" = "8:Microsoft Visual Studio"
         "ProductName" = "8:DCInitializerr"
         "ProductCode" = "8:{57BF893C-BD30-40C3-8C04-55FFFC6E3FFE}"
-        "PackageCode" = "8:{E56188BF-D337-4DAA-BA44-F5F017E0AE26}"
+        "PackageCode" = "8:{1A9310D1-13CC-454E-AF13-8F1CB20D59CD}"
         "UpgradeCode" = "8:{926B8A82-19A1-436D-A0E4-216EF638690B}"
         "AspNetVersion" = "8:4.0.30319.0"
         "RestartWWWService" = "11:FALSE"