diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs
index 16fccf6b..46c7beea 100644
--- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs
+++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs
@@ -941,8 +941,12 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
///
/// - Initial
///
+ ///
+ /// - Immediately returns if already logged in.
+ ///
public Boolean ReLogin()
{
+ if (IsLoggedOn) return true;
return string.IsNullOrEmpty(_password) ? Login() : Login(_password);
}
@@ -970,7 +974,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
}
}
- url = url + PcbId;
+ url += PcbId;
try
{
//use
@@ -2134,6 +2138,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
/// - Removed comparison of allConfigRegisters less than 8 because the NA version has less registers and new
/// apps will have a new register.
///
+ ///
+ /// - Removed temporary NA2ALARMS readback as this has no handler in the FW.
+ ///
public Boolean StoreAllConfigurations()
{
@@ -2141,11 +2148,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
a.Key.RegisterName.ToLower() == "storeconfiguration" ||
a.Key.RegisterName.ToLower() == "storecalibration");
- //if (allConfigRegisters < 8)
- //{
- // return false;
- //}
-
try
{
foreach (var a in _configRegister.MeterRegisterDic.Where(a =>
@@ -2174,7 +2176,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
// Wait for storing
Thread.Sleep(400);
- if (a.Key.AppName == "SENSUSRADIO")
+ //TODO enable this for R1.2.x
+ if (a.Key.AppName == "SENSUSRADIO" || a.Key.AppName == "NA2WALARMS")
{
done = true;
allConfigRegisters -= 1;
@@ -2201,6 +2204,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
catch (Exception)
{
+ // ignored
}
return allConfigRegisters == 0;
diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/CordonelFwPackageInfo.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/CordonelFwPackageInfo.cs
index 9c2716b4..59188d3f 100644
--- a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/CordonelFwPackageInfo.cs
+++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/CordonelFwPackageInfo.cs
@@ -1,8 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder
{
diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.cs
index cad2f612..fbc0726b 100644
--- a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.cs
+++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.cs
@@ -1091,7 +1091,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder
btnLicenseFwUpdateBuilder.Enabled = false;
tbxCustomerName.Text = "";
lblCustomerNumber.Text = "";
- tbxOrderNumber.Text = @"1234567890";
+ tbxOrderNumber.Text = @"0001";
tbxOrderPosition.Text = @"10";
var tabControlImages = new ImageList { ColorDepth = ColorDepth.Depth24Bit };
@@ -1177,6 +1177,11 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder
///
/// - Skip loading of FW update SW if already done in preceding run.
///
+ ///
+ /// - Removed special characters (e.g. characters from other language like "Umlaute") from file name,
+ /// as DB problems may ocure on FwUpdateSafe load, limit customer name length to 45 characters to
+ /// keep the file name small.
+ ///
public Boolean BuildFwUpdateSafe()
{
if (string.IsNullOrEmpty(lblUpdateOperator.Text))
@@ -1312,7 +1317,15 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder
// first replace the underlines as these are used for the file name and later to separate for customer and order number
var fileName = tbxCustomerName.Text.Replace(FwUpdateConfig.FwUpdateFileFieldSeparator.ToString(), "");
// leave all word characters (including the umlaut in for multilingual support), numbers the "-" and the white space in
- fileName = Regex.Replace(fileName, @"[^\w\d\-\s]", "");
+ // fileName = Regex.Replace(fileName, @"[^\w\d\-\s]", "");
+ // remove special multilingual characters as they cause problems in DB, leave numbers, the "-", the "&", the "."
+ // and the white space in.
+ fileName = Regex.Replace(fileName, @"[^a-zA-Z0-9\-\s\&\.]", "");
+ // limit customer name length to 45
+ if (fileName.Length > 45)
+ {
+ fileName = fileName.Substring(0, 45);
+ }
// The safe shall look like "Thames Water_01234567890-10.safe"
_fwUpdateSafeName = $@"{fileName}{FwUpdateConfig.FwUpdateFileFieldSeparator}" +
@@ -4986,7 +4999,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder
/// The software is a container of dll files, language packages and logging setups.
/// The configuration files contain the latest MeterFwUpdateRuler.json (needed for the FwUpdateBuilder),
/// the latest configuration.json and the latest MeterEraseRestore.json (needed for the FwUpdateSw).
- /// Creates License, FileCrc, FileLength and SubDiractories.
+ /// Creates License, FileCrc, FileLength and SubDirectories.
///
/// license information of valid software
/// true if successful
diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateLoader/FrmRegister.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateLoader/FrmRegister.cs
index 73e4e5cb..f58bfa9c 100644
--- a/ServiceFwUpdate/Ui/ServiceFwUpdateLoader/FrmRegister.cs
+++ b/ServiceFwUpdate/Ui/ServiceFwUpdateLoader/FrmRegister.cs
@@ -75,6 +75,9 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateLoader
///
/// - DB object passed by to get result back to caller.
///
+ ///
+ /// - Preset domain and loginName on unknown user.
+ ///
public FrmRegister(String userRegistrationPathFileFile, Boolean fwUpdateSafesAvailable,
UserInformation regUser, FwUpdateDb fwUpdateDb)
{
@@ -95,6 +98,11 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateLoader
tbxDomain.Text = _regUser.Domain;
tbxLogInName.Text = _regUser.LogInName;
}
+ else
+ {
+ tbxDomain.Text = CryptInformation.GetSysDomain();
+ tbxLogInName.Text = CryptInformation.GetSysUserLoginName();
+ }
// Only one full name can be used for a specific user,if this is already set in the
// registration file, it has to remain as is (delete the registration file to set a new name)!
@@ -116,12 +124,6 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateLoader
tbxFullName.Text = _regUser.FullName;
}
- //if (_regUser != null)
- //{
- // tbxDomain.Text = _regUser.Domain;
- // tbxLogInName.Text = _regUser.LogInName;
- //}
-
// Read initial DB users, compare DB content with given sys user
ReadDbUsers();
CheckUserRegistration();
@@ -356,11 +358,21 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateLoader
///
/// - Write registration to file after update of all information in DB.
///
+ ///
+ /// - Initial user information set.
+ ///
private void btnRegisterToDb_Click(Object sender, EventArgs e)
{
if (_regUser == null || string.IsNullOrEmpty(_regUser.FullName) || _fwUpdateDb == null) return;
btnRegisterToDb.Enabled = false;
+
+ if (!File.Exists(_userRegistrationPathFile))
+ {
+ // register anyway, as safes are not of interest if user isn't registered
+ if (!_fwUpdateDb.RefreshUserValidation(_regUser, false)) return;
+ }
+
if (!_fwUpdateDb.RefreshUserValidation(_regUser, _fwUpdateSafesAvailable)) return;
// The FullName has to be set in advance before searching it in fully registered users!
diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs
index 5aca00ad..7881b062 100644
--- a/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs
+++ b/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs
@@ -229,6 +229,9 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw
///
/// - Release display on idle entry.
///
+ ///
+ /// - Release display on success entry.
+ ///
private void FwUpdateSwStateMachine()
{
while (!_processToken.IsCancellationRequested)
@@ -367,6 +370,7 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw
break;
case ProcessState.FirmwareUpdateSuccess:
+ ReleaseDisplay();
FwUpdateSuccessMessage();
_processState = ProcessState.Idle;
break;
@@ -1405,8 +1409,8 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw
///
/// - Initial.
///
- ///
- /// - Store all configurations after display release.
+ ///
+ /// - Store configuration genesisflow after display release.
///
private void ReleaseDisplay()
{
@@ -1419,6 +1423,7 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw
// deactivate LED, not needed to get measurements during the update or on repeated start after system
// failure. This overwrites the settings in _meterFwUpdate.
_currentGenesis.WriteRegister(Register.Genesisflow.LedMode, new[] { (Byte)LedMode.Off });
+ _currentGenesis.WriteRegister(Register.Genesisflow.StoreConfiguration, 1);
LogText(Resources.StrDisplayReleased);
_currentGenesis.Logout();
}