BasicInfoUpdateProcedure.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net.Sockets;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace AwInitilizer.Procedure
  8. {
  9. public class BasicInfoUpdateProcedure : ProcedureBase
  10. {
  11. public BasicInfoUpdateProcedure() : base()
  12. {
  13. Name = "Basic Intlize";
  14. Content = "Set and check Model Name,SerilNumber,DateTime.";
  15. }
  16. internal override async Task<bool> Run()
  17. {
  18. if (!await base.CheckAndCreateSocket())
  19. {
  20. LogPair.Add("BaseUpdateSocketConnect","0");
  21. InfoLog += "EVSE connect failed\n";
  22. ReportLog.Add("EVSE connect failed");
  23. return false;
  24. }
  25. //base.serialPortocol.OnMsgReceived += SerialPortocol_OnMsgReceived;
  26. if (!await serialPortocol.SetModelName(UpdateData.ModelName))
  27. {
  28. InfoLog += "Model Name update failed\n";
  29. Logger.Print("Model Name update Failed", isError: true);
  30. LogPair.Add("ModelNameWrite", "0");
  31. ReportLog.Add("Model Name update Failed");
  32. return false;
  33. }
  34. else
  35. {
  36. Logger.Print("Model Name write Success");
  37. LogPair.Add("ModelNameWrite", "1");
  38. }
  39. if (!await serialPortocol.SetSerialNumber(UpdateData.SerialNumber))
  40. {
  41. InfoLog += "Serial Number update failed\n";
  42. Logger.Print("Serial Number update Failed", isError: true);
  43. LogPair.Add("SerialNumberWrite", "0");
  44. ReportLog.Add("Serial Number update Failed");
  45. return false;
  46. }
  47. else
  48. {
  49. Logger.Print("Serial Number write Success");
  50. LogPair.Add("SerialNumberWrite", "1");
  51. }
  52. var setDateTime = DateTime.Now.ToUniversalTime();
  53. if (!await serialPortocol.SetUTCTime(setDateTime))
  54. {
  55. InfoLog += "RTC update failed\n";
  56. Logger.Print("RTC update Failed", isError: true);
  57. LogPair.Add("RtcUpdate", "0");
  58. ReportLog.Add("RTC update Failed");
  59. return false;
  60. }
  61. else
  62. {
  63. Logger.Print("RTC update write Success");
  64. LogPair.Add("RtcUpdate", "1");
  65. }
  66. if (!await serialPortocol.SettingChangeConfirm())
  67. {
  68. InfoLog += "Setting save request failed\n";
  69. Logger.Print("Setting save Failed", isError: true);
  70. LogPair.Add("SettingSave", "0");
  71. ReportLog.Add("Setting save request Failed");
  72. return false;
  73. }
  74. else
  75. {
  76. Logger.Print("Setting save Success");
  77. LogPair.Add("SettingSave", "1");
  78. }
  79. Logger.Print("Waiting EVSE reboot...");
  80. serialPortocol.Close();
  81. await Task.Delay(TimeSpan.FromMinutes(1));
  82. if (!await base.CheckAndCreateSocket())
  83. {
  84. InfoLog += "EVSE not found after reboot\n";
  85. Logger.Print("EVSE reboot timeout", isError: true);
  86. LogPair.Add("BaseUpdateSocketReConnect", "0");
  87. ReportLog.Add("EVSE not found after reboot");
  88. return false;
  89. }
  90. var receivedModelName = await serialPortocol.GetModelName();
  91. LogPair.Add("ModelNameRead", receivedModelName);
  92. if (string.IsNullOrEmpty(receivedModelName))
  93. {
  94. InfoLog += "Model name get failed after reboot\n";
  95. Logger.Print("Model Name read Failed", isError: true);
  96. ReportLog.Add("Model name get failed after reboot");
  97. return false;
  98. }
  99. else
  100. {
  101. ReportLog.Add(string.Format("Read Model name : {0} , Expect:{1}", receivedModelName, UpdateData.ModelName));
  102. InfoLog += $"Get Updated Model Name { receivedModelName }\n";
  103. if (receivedModelName != UpdateData.ModelName)
  104. {
  105. InfoLog += "Updated Model Name Mismatched\n";
  106. Logger.Print("Stored Model Name Mismatched", isError: true);
  107. return false;
  108. }
  109. Logger.Print("Model Name update Success");
  110. }
  111. var receivedSerialNumber = await serialPortocol.GetSerialNumber();
  112. LogPair.Add("SerialNumberRead", receivedSerialNumber);
  113. if (string.IsNullOrEmpty(receivedSerialNumber))
  114. {
  115. InfoLog += "Serial number get failed after reboot\n";
  116. InfoLog += serialPortocol.LatestNullMessage +"\n";
  117. Logger.Print("Stored Serial read Failed", isError: true);
  118. Logger.Print(serialPortocol.LatestNullMessage);
  119. ReportLog.Add("Serial number get failed after reboot");
  120. return false;
  121. }
  122. else
  123. {
  124. ReportLog.Add(string.Format("Read Serial number : {0} , Expect:{1}", receivedSerialNumber, UpdateData.SerialNumber));
  125. InfoLog += $"Get Updated serial number { receivedSerialNumber }\n";
  126. if (receivedSerialNumber != UpdateData.SerialNumber)
  127. {
  128. InfoLog += "Updated serial number mismatched\n";
  129. Logger.Print("Stored Serial Number Mismatched", isError: true);
  130. return false;
  131. }
  132. Logger.Print("Serial Number update Success");
  133. }
  134. var receivedDateTime = await serialPortocol.GetUTCTime();
  135. LogPair.Add("RtcRead", receivedDateTime?.ToString("yyyyMMddHHmmss"));
  136. if (receivedDateTime==null)
  137. {
  138. InfoLog += "UTC Time receive failed after reboot\n";
  139. Logger.Print("UTC Time receive failed", isError: true);
  140. ReportLog.Add("UTC Time receive failed after reboot");
  141. return false;
  142. }
  143. else
  144. {
  145. ReportLog.Add(string.Format("Read UTC time : {0} , CurrentTime:{1}", receivedDateTime?.ToString("yyyyMMddHHmmss"), DateTime.Now.ToUniversalTime().ToString("yyyyMMddHHmmss")));
  146. InfoLog += $"UTC Time received : {receivedDateTime.Value.ToString("yyyyMMddHHmmss")}\n";
  147. var diff = receivedDateTime.Value - DateTime.Now.ToUniversalTime();
  148. if (Math.Abs(diff.TotalSeconds) > 10)
  149. {
  150. InfoLog += "Stored UTC time Mismatched\n";
  151. Logger.Print("Stored UTC time Mismatched", isError: true);
  152. return false;
  153. }
  154. else
  155. {
  156. Logger.Print("Model Name update Success");
  157. }
  158. }
  159. return true;
  160. }
  161. }
  162. }