BasicInfoUpdateProcedure.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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","fail");
  21. InfoLog += "EVSE connect failed\n";
  22. return false;
  23. }
  24. //base.serialPortocol.OnMsgReceived += SerialPortocol_OnMsgReceived;
  25. if (!await serialPortocol.SetModelName(UpdateData.ModelName))
  26. {
  27. InfoLog += "Model Name update failed\n";
  28. Logger.Print("Model Name update Failed", isError: true);
  29. LogPair.Add("ModelNameWrite", "fail");
  30. return false;
  31. }
  32. else
  33. {
  34. Logger.Print("Model Name write Success");
  35. LogPair.Add("ModelNameWrite", "success");
  36. }
  37. if (!await serialPortocol.SetSerialNumber(UpdateData.SerialNumber))
  38. {
  39. InfoLog += "Serial Number update failed\n";
  40. Logger.Print("Serial Number update Failed", isError: true);
  41. LogPair.Add("SerialNumberWrite", "fail");
  42. return false;
  43. }
  44. else
  45. {
  46. Logger.Print("Serial Number write Success");
  47. LogPair.Add("SerialNumberWrite", "success");
  48. }
  49. var setDateTime = DateTime.Now.ToUniversalTime();
  50. if (!await serialPortocol.SetUTCTime(setDateTime))
  51. {
  52. InfoLog += "RTC update failed\n";
  53. Logger.Print("RTC update Failed", isError: true);
  54. LogPair.Add("RtcUpdate", "fail");
  55. return false;
  56. }
  57. else
  58. {
  59. Logger.Print("RTC update write Success");
  60. LogPair.Add("RtcUpdate", "success");
  61. }
  62. if (!await serialPortocol.SettingChangeConfirm())
  63. {
  64. InfoLog += "Setting save request failed\n";
  65. Logger.Print("Setting save Failed", isError: true);
  66. LogPair.Add("SettingSave", "fail");
  67. return false;
  68. }
  69. else
  70. {
  71. Logger.Print("Setting save Success");
  72. LogPair.Add("SettingSave", "success");
  73. }
  74. Logger.Print("Waiting EVSE reboot...");
  75. serialPortocol.Close();
  76. await Task.Delay(TimeSpan.FromMinutes(1));
  77. if (!await base.CheckAndCreateSocket())
  78. {
  79. InfoLog += "EVSE not found after reboot\n";
  80. Logger.Print("EVSE reboot timeout", isError: true);
  81. LogPair.Add("BaseUpdateSocketReConnect", "fail");
  82. return false;
  83. }
  84. var receivedModelName = await serialPortocol.GetModelName();
  85. LogPair.Add("ModelNameRead", receivedModelName);
  86. if (string.IsNullOrEmpty(receivedModelName))
  87. {
  88. InfoLog += "Model name get failed after reboot\n";
  89. Logger.Print("Model Name read Failed", isError: true);
  90. return false;
  91. }
  92. else
  93. {
  94. InfoLog += $"Get Updated Model Name { receivedModelName }\n";
  95. if (receivedModelName != UpdateData.ModelName)
  96. {
  97. InfoLog += "Updated Model Name Mismatched\n";
  98. Logger.Print("Stored Model Name Mismatched", isError: true);
  99. return false;
  100. }
  101. Logger.Print("Model Name update Success");
  102. }
  103. var receivedSeerialNumber = await serialPortocol.GetSerialNumber();
  104. LogPair.Add("SerialNumberRead", receivedSeerialNumber);
  105. if (string.IsNullOrEmpty(receivedSeerialNumber))
  106. {
  107. InfoLog += "Serial number get failed after reboot\n";
  108. InfoLog += serialPortocol.LatestNullMessage +"\n";
  109. Logger.Print("Stored Serial read Failed", isError: true);
  110. Logger.Print(serialPortocol.LatestNullMessage);
  111. return false;
  112. }
  113. else
  114. {
  115. InfoLog += $"Get Updated serial number { receivedSeerialNumber }\n";
  116. if (receivedSeerialNumber != UpdateData.SerialNumber)
  117. {
  118. InfoLog += "Updated serial number mismatched\n";
  119. Logger.Print("Stored Serial Number Mismatched", isError: true);
  120. return false;
  121. }
  122. Logger.Print("Serial Number update Success");
  123. }
  124. var receivedDateTime = await serialPortocol.GetUTCTime();
  125. LogPair.Add("RtcRead", receivedDateTime?.ToString("yyyyMMddHHmmss"));
  126. if (string.IsNullOrEmpty(receivedModelName))
  127. {
  128. InfoLog += "UTC Time receive failed after reboot\n";
  129. Logger.Print("UTC Time receive failed", isError: true);
  130. return false;
  131. }
  132. else
  133. {
  134. InfoLog += $"UTC Time received : {receivedDateTime.Value.ToString("yyyyMMddHHmmss")}\n";
  135. var diff = receivedDateTime.Value - DateTime.Now.ToUniversalTime();
  136. if (Math.Abs(diff.TotalSeconds) > 10)
  137. {
  138. InfoLog += "Stored UTC time Mismatched\n";
  139. Logger.Print("Stored UTC time Mismatched", isError: true);
  140. return false;
  141. }
  142. else
  143. {
  144. Logger.Print("Model Name update Success");
  145. }
  146. }
  147. return true;
  148. }
  149. }
  150. }