From ebc42d143660126f380b143d2376c8b24a9efab2 Mon Sep 17 00:00:00 2001 From: djnitehawk Date: Sun, 16 Mar 2025 11:29:19 +0530 Subject: [PATCH] fix settings bit shifting --- src/Client/Pages/Settings.razor | 53 ++++++------------- .../InverterService/FelicityInverter.cs | 5 +- 2 files changed, 19 insertions(+), 39 deletions(-) diff --git a/src/Client/Pages/Settings.razor b/src/Client/Pages/Settings.razor index fafd3e4..fbcaeea 100644 --- a/src/Client/Pages/Settings.razor +++ b/src/Client/Pages/Settings.razor @@ -279,30 +279,14 @@ { isSuccess = false; - switch (priority) + currentButton = priority switch { - case ChargePriority.OnlySolar: - currentButton = Button.ChOnlySolar; - - break; - case ChargePriority.SolarFirst: - currentButton = Button.ChSolarFirst; - - break; - case ChargePriority.SolarAndUtility: - currentButton = Button.ChSolarAndUtility; - - break; - case ChargePriority.UtilityFirst: - currentButton = Button.ChUtilityFirst; - - break; - default: - currentButton = null; - - break; - } - ; + ChargePriority.OnlySolar => Button.ChOnlySolar, + ChargePriority.SolarFirst => Button.ChSolarFirst, + ChargePriority.SolarAndUtility => Button.ChSolarAndUtility, + ChargePriority.UtilityFirst => Button.ChUtilityFirst, + _ => null + }; if (await Http.GetStringAsync($"api/settings/set-setting/{Setting.ChargePriority}/{priority}") == "true") { @@ -362,12 +346,15 @@ value = settings!.BackToBatteryVoltage; break; + case Setting.ChargePriority: + case Setting.OutputPriority: + case Setting.CombinedChargeCurrent: + case Setting.UtilityChargeCurrent: default: currentButton = null; break; } - ; if (await Http.GetStringAsync($"api/settings/set-setting/{setting}/{value}") == "true") { @@ -379,20 +366,12 @@ { isSuccess = false; - switch (setting) + currentButton = setting switch { - case Setting.CombinedChargeCurrent: - currentButton = Button.MaxCombinedChargeCurrent; - - break; - - case Setting.UtilityChargeCurrent: - currentButton = Button.MaxUtilityChargeCurrent; - - break; - } - - var xxx = $"api/settings/set-setting/{setting}/{value}"; + Setting.CombinedChargeCurrent => Button.MaxCombinedChargeCurrent, + Setting.UtilityChargeCurrent => Button.MaxUtilityChargeCurrent, + _ => currentButton + }; if (await Http.GetStringAsync($"api/settings/set-setting/{setting}/{value}") == "true") { diff --git a/src/Server/InverterService/FelicityInverter.cs b/src/Server/InverterService/FelicityInverter.cs index 9096dc8..ad50587 100644 --- a/src/Server/InverterService/FelicityInverter.cs +++ b/src/Server/InverterService/FelicityInverter.cs @@ -128,6 +128,7 @@ public sealed class FelicitySolarInverter _ => throw new ArgumentException("Invalid setting!") }; + var registerAddress = (ushort)setting; var settingValue = (ushort)value; // Build request frame: @@ -136,8 +137,8 @@ public sealed class FelicitySolarInverter var frame = new byte[8]; frame[0] = SlaveAddress; frame[1] = 0x06; - frame[2] = (byte)((ushort)setting >> 8); - frame[3] = (byte)((ushort)setting & 0xFF); + frame[2] = (byte)(registerAddress >> 8); + frame[3] = (byte)(registerAddress & 0xFF); frame[4] = (byte)(settingValue >> 8); frame[5] = (byte)(settingValue & 0xFF); var crc = CalculateCrc(frame, 6);