using AwInitilizer.Assist; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace AwInitilizer.Procedure.WifRssiCheck { public enum ErrorType { None, WifiModeDataNotFound, WifiModeNotClient, WifiRssiDataNotFound, WifiRssiLow, } public enum LogEvent { WifiRssi } public class WifRssiCheckProcedure : ProcedureBase { public ErrorType Error { get; set; } = ErrorType.None; private ProcedureLog.LogWriter LogWriter; private readonly static Dictionary ReportDict = new Dictionary() { { LogEvent.WifiRssi, "WifiRssi" } }; private readonly static Dictionary LogDict = new Dictionary() { { LogEvent.WifiRssi, "Get Wifi Rssi : {0}" } }; public WifRssiCheckProcedure() : base() { Name = "WiFi Rssi Check"; Content = "Check Wifi Rssi Signal"; LogWriter = new ProcedureLog.LogWriter(this) { ReportPair = ReportDict, LogPair = LogDict }; } internal override async Task Run() { //if (!UpdateData.SystemID.ModelName.Network.Description.Contains("WiFi")) if (UpdateData.SystemID.ModelName.GetWiFiCnt() > 0) { LogWriter.Log("Wifi not supported, skip procedure"); return true; } var checkResult = await CheckWifiRssi(); return checkResult; } internal async Task CheckWifiRssi() { var rssi = await GetWifiRssi(); //LogWriter.Report(LogEvent.WifiRssi, rssi.ToString()); if (rssi == 0) { LogWriter.Report(LogEvent.WifiRssi, rssi.ToString(), isError: true); return false; } else { var rssiCheckPass = rssi >= -80; if (rssiCheckPass) { LogWriter.Report(LogEvent.WifiRssi, rssi.ToString()); return true; } else { Error = ErrorType.WifiRssiLow; LogWriter.Report(LogEvent.WifiRssi, rssi.ToString(), isError: true); return false; } } } internal async Task GetWifiRssi() { try { var result = await EvApi.GetWifiRssi(); switch (result.Result.ErrorCode) { case 0: case 2: Error = ErrorType.WifiModeDataNotFound; break; case 1: Error = ErrorType.WifiModeNotClient; break; case 3: case 4: case 5: Error = ErrorType.WifiRssiDataNotFound; break; default: break; } LogWriter.Log($"GetResponse:{result.Response}", isDebugLog: true); return result.Result.Rssi; } catch (Exception e) { Error = ErrorType.WifiRssiDataNotFound; LogWriter.Log("Get Wifi Rssi Failed"); LogWriter.Log(e.Message, isDebugLog: true); return 0; } } } }