MeterSize moved from "Logic.PrdctionToProductMapper" to "ProductionOrderCore",
RegionRadio split to Region (string) and RadioFrequencyMhz (Int32?), CoreRevision changed from string to Int32?, Service\MeterProcessState\Controllers\GetCorondelFw changed to GetCordonelFw and corrected
This commit is contained in:
@@ -155,7 +155,7 @@
|
||||
</site>
|
||||
<site name="MeterProcessState" id="2">
|
||||
<application path="/" applicationPool="Clr4IntegratedAppPool">
|
||||
<virtualDirectory path="/" physicalPath="C:\Users\drabesch_ro\Repo\lab\la_operations\laa_production\Common\Service\MeterProcessState" />
|
||||
<virtualDirectory path="/" physicalPath="D:\Projekte\SENSUS_GitLab\laa_production\Common\Service\MeterProcessState" />
|
||||
</application>
|
||||
<bindings>
|
||||
<binding protocol="http" bindingInformation="*:56011:localhost" />
|
||||
|
||||
@@ -10,139 +10,144 @@ namespace Xylem.Common.CommonCore.Configuration
|
||||
public static class ServiceUrls
|
||||
{
|
||||
private const String DefaultGetPcbIdsFromSafeServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/GetPcbIdsFromSafe?ContainerDbId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/GetPcbIdsFromSafe?ContainerDbId=";
|
||||
|
||||
private const String DefaultAddPcbIdsToSafeServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/AddPcbIdsToSafe?ContainerDbId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/AddPcbIdsToSafe?ContainerDbId=";
|
||||
|
||||
private const String DefaultDownloadFilesPartsServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/FileUpToDate/GetFileParts?ParentFileId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/FileUpToDate/GetFileParts?ParentFileId=";
|
||||
|
||||
private const String DefaultListAllFwPackagesServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/FileUpToDate/GetFwFiles?FileIsForDeveloperOnly=false&FileCategoryID=1";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/FileUpToDate/GetFwFiles?FileIsForDeveloperOnly=false&FileCategoryID=1";
|
||||
|
||||
private const String DefaultListAllSwPackagesServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/FileUpToDate/GetFwFiles?FileIsForDeveloperOnly=false&FileCategoryID=5";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/FileUpToDate/GetFwFiles?FileIsForDeveloperOnly=false&FileCategoryID=5";
|
||||
|
||||
private const String DefaultListAllConfigFilePackagesServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/FileUpToDate/GetFwFiles?FileIsForDeveloperOnly=false&FileCategoryID=6";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/FileUpToDate/GetFwFiles?FileIsForDeveloperOnly=false&FileCategoryID=6";
|
||||
|
||||
private const String DefaultListAllFwUpdateSafesServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/FileUpToDate/GetFwFiles?FileIsForDeveloperOnly=false&FileCategoryID=4";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/FileUpToDate/GetFwFiles?FileIsForDeveloperOnly=false&FileCategoryID=4";
|
||||
|
||||
private const String DefaultSetCordonelAppVersionServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/ProccesState/SetCordonelProgress?PcbId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/ProccesState/SetCordonelProgress?PcbId=";
|
||||
|
||||
private const String DefaultGetCordonelAppVersionServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/ProccesState/GetCordonelAppVersion?PcbId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/ProccesState/GetCordonelAppVersion?PcbId=";
|
||||
|
||||
private const String DefaultListAllCordonelCustomersWithFilterServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/Order/GetCordonelCustomers?FilterName=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/Order/GetCordonelCustomers?FilterName=";
|
||||
|
||||
private const String DefaultListAllCordonelCustomerOrdersServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/Order/GetCustomersCordonelOrders?CustomerNumber=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/Order/GetCustomersCordonelOrders?CustomerNumber=";
|
||||
|
||||
private const String DefaultListAllOrderCordonelsServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/Order/GetCordonelOrderList?CustomerOrderNumber=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/Order/GetCordonelOrderList?CustomerOrderNumber=";
|
||||
|
||||
private const String DefaultDownloadFwUpdateSafeServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/GetFWUpdateSafeContainerContent?SafeContainerId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/GetFWUpdateSafeContainerContent?SafeContainerId=";
|
||||
|
||||
private const String DefaultListAllFwUpdateSafesForUserServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/GetFWUpdateSafeContainers?UserId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/GetFWUpdateSafeContainers?UserId=";
|
||||
|
||||
private const String DefaultFileContentDownloadServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/GetFileContent?FileId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/GetFileContent?FileId=";
|
||||
|
||||
private const String DefaultFwUpdateReportUploadServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/PostFWUpdateReportFile";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/PostFWUpdateReportFile";
|
||||
|
||||
private const String DefaultFwUpdateReportDownloadServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/GetFWUpdateReportFile?";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/GetFWUpdateReportFile?";
|
||||
|
||||
private const String DefaultFwUpdateSafeContainerUploadServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/PostFWUpdateSafeOdd";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/PostFWUpdateSafeOdd";
|
||||
|
||||
private const String DefaultEditFwUpdateUserValidityServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/EditUserValidity?Id=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/EditUserValidity?Id=";
|
||||
|
||||
private const String DefaultRefreshFwUpdateUsersHardwareIdServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/RefreshUsersHardwareId?Id=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/RefreshUsersHardwareId?Id=";
|
||||
|
||||
private const String DefaultRefreshFwUpdateUsersPasswordHashServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/RefreshUsersPasswordHash?Id=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/RefreshUsersPasswordHash?Id=";
|
||||
|
||||
private const String DefaultCreateNewFwUpdateUserServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/AddNewUser?";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/AddNewUser?";
|
||||
|
||||
private const String DefaultListAllFwUpdateUsersServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/GetUserList";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/GetUserList";
|
||||
|
||||
private const String DefaultListAllFwUpdateBuilderOperatorsServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/GetAllBuilderOperator";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/GetAllBuilderOperator";
|
||||
|
||||
private const String DefaultGetFwUpdateUserByIdServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/GetUserList?Id=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/GetUserList?Id=";
|
||||
|
||||
private const String DefaultGetFwUpdateUserByLoginNameServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/GetUserList?LogInName=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/GetUserList?LogInName=";
|
||||
|
||||
private const String DefaultRegisterWatchServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/RegisterWatch/";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/RegisterWatch/";
|
||||
|
||||
private const String DefaultGenesisGetOrderNumberServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/Password/ordernumber?PcbId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/Password/ordernumber?PcbId=";
|
||||
|
||||
private const String DefaultGenesisGetRadioAddressServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/Password/radioadress?PcbId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/Password/radioadress?PcbId=";
|
||||
|
||||
private const String DefaultGenesisGetKeySetIdServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/Password/getkeysetid?PcbId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/Password/getkeysetid?PcbId=";
|
||||
|
||||
private const String DefaultGenesisGetPasswordServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/Password/GetPassword?PcbId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/Password/GetPassword?PcbId=";
|
||||
|
||||
private const String DefaultGenesisSetPasswordServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/Password/setpassword?PcbId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/Password/setpassword?PcbId=";
|
||||
|
||||
private const String DefaultGenesisPasswordContainerServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/Password/GetPasswordHashFileContent?PcbId=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/Password/GetPasswordHashFileContent?PcbId=";
|
||||
|
||||
private const String DefaultMarriageServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/Marriage/";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/Marriage/";
|
||||
|
||||
private const String DefaultMeterProcessStateUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/ProccesState/";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/ProccesState/";
|
||||
|
||||
private const String DefaultGenesisFinalCheckServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/FinalCheck/";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/FinalCheck/";
|
||||
|
||||
private const String DefaultGenesisRadioCheckServiceUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/RadioCheck/";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/RadioCheck/";
|
||||
|
||||
private const String DefaultGetSoftwareStartUpAccessUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/SoftwareAccess/GetVersionIsValid";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/SoftwareAccess/GetVersionIsValid";
|
||||
|
||||
private const String DefaultSetSoftwareLicenseUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/SoftwareAccess/SetVersionIsValid?Program=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/SoftwareAccess/SetVersionIsValid?Program=";
|
||||
|
||||
private const String DefaultGetSoftwareLicenseUrl =
|
||||
"http://10.49.40.25/MeterProcessState/api/SoftwareAccess/GetCurrentVersion?Program=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/SoftwareAccess/GetCurrentVersion?Program=";
|
||||
|
||||
private const String DefaultGenesisCalibrationResult =
|
||||
"http://10.49.40.25/MeterProcessState/api/GenesisMeter/PostCalibrationResult";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/GenesisMeter/PostCalibrationResult";
|
||||
|
||||
private const String DefaultGenesisMeter =
|
||||
"http://10.49.40.25/MeterProcessState/api/GenesisMeter/";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/GenesisMeter/";
|
||||
|
||||
private const String DefaultFileContentController =
|
||||
"http://10.49.40.25/MeterProcessState/api/FileUpToDate/";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/FileUpToDate/";
|
||||
|
||||
private const String DefaultKeyServerCustom =
|
||||
"https://nodes.sms-esaap.com/keygenproxy/api/v3/custom/";
|
||||
|
||||
private const String DefaultMeterInfoForTestBench =
|
||||
"http://10.49.40.25/MeterProcessState/api/TestBench/GetMeterInfoForTestBench?PcbID=";
|
||||
"http://sla12iis01.emea.sensus.net/MeterProcessState/api/TestBench/GetMeterInfoForTestBench?PcbID=";
|
||||
|
||||
//private const String DefaultCordonelFwInfoUrl =
|
||||
// "http://sla12iis01.emea.sensus.net/MeterProcessState/api/FileUpToDate/GetCordonelFw";
|
||||
private const String DefaultCordonelFwInfoUrl =
|
||||
"http://localhost:56011/api/FileUpToDate/GetCordonelFw";
|
||||
|
||||
|
||||
|
||||
@@ -186,6 +191,15 @@ namespace Xylem.Common.CommonCore.Configuration
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// List all Cordonel FW packages.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static String ListAllCordonelFwPackagesUrl()
|
||||
{
|
||||
return ConfigurationManager.AppSettings["CordonelFwInfoUrl"] ??
|
||||
DefaultCordonelFwInfoUrl;
|
||||
}
|
||||
/// <summary>
|
||||
/// List all PCB IDs from a safe. As the safe may be deleted, this information is still accessible.
|
||||
/// </summary>
|
||||
|
||||
@@ -257,6 +257,10 @@
|
||||
<Project>{D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}</Project>
|
||||
<Name>Logic.ProductionToProductMapper</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Logic\ProductionOrderCore\ProductionOrderCore.csproj">
|
||||
<Project>{6D2777BB-7A88-466D-A49B-3266F9BF0160}</Project>
|
||||
<Name>ProductionOrderCore</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Metrology\Measurements\Measurements.csproj">
|
||||
<Project>{6CCDB656-C676-4360-BABA-C4596AAD175D}</Project>
|
||||
<Name>Measurements</Name>
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
using System;
|
||||
using Logic.ProductionToProductMapper.Cordonel;
|
||||
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
|
||||
namespace CordonelPreadjustmentUi.Parameters
|
||||
namespace Xylem.Common.Ui.CordonelPreadjustmentUi.Parameters
|
||||
{
|
||||
public class FlushParams
|
||||
{
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using CordonelPreadjustmentUi.Parameters;
|
||||
using CordonelPreadjustmentUi.Processes;
|
||||
using CordonelPreadjustmentUi.Processes;
|
||||
using CordonelPreadjustmentUi.Processes.Actions;
|
||||
using CordonelPreadjustmentUi.Processes.Itinerary;
|
||||
using Logic.ProductionToProductMapper.Cordonel;
|
||||
@@ -13,6 +12,8 @@ using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Ui.CordonelPreadjustmentUi.Parameters;
|
||||
|
||||
namespace CordonelPreadjustmentUi
|
||||
{
|
||||
|
||||
@@ -5,6 +5,7 @@ using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.Consts;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
|
||||
namespace CordonelPreadjustmentUi
|
||||
{
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using CordonelPreadjustmentUi.Parameters;
|
||||
using System;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Threading;
|
||||
@@ -8,6 +7,8 @@ using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.Consts;
|
||||
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts;
|
||||
using Xylem.Common.Ui.CordonelPreadjustmentUi;
|
||||
using System.Collections.Generic;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Ui.CordonelPreadjustmentUi.Parameters;
|
||||
|
||||
namespace CordonelPreadjustmentUi.Processes.Itinerary
|
||||
{
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Applications
|
||||
/// <summary>
|
||||
/// Version string of application because of FLEXNETVERSION
|
||||
/// does return a different layout, instead of decimals it
|
||||
/// used hexadecimals. Therefore the version has to be safed as
|
||||
/// used hexadecimals. Therefore the version has to be saved as
|
||||
/// string at time of receiving for the FW-Update comparison
|
||||
/// </summary>
|
||||
public String StrVersion;
|
||||
|
||||
@@ -36,6 +36,7 @@ using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
|
||||
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts;
|
||||
using Xylem.Common.Hardware.WaterMeter.WaterMeterRegisters;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.File;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Logic.RelatePcb;
|
||||
using Xylem.Common.Logic.SoftwareAccessHelper;
|
||||
using Xylem.Common.Metrology.Measurements;
|
||||
@@ -1138,6 +1139,19 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
return msbPartString + $"{msb & 0x0F:X0}" + "." + $"{(lsb & 0xF0) >> 4:X1}" + $"{lsb & 0x0F:X1}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Building a version string with 2 decimals e.g. " 12.34"
|
||||
/// </summary>
|
||||
/// <remarks date="2022-Dec-02" author="Thomas Wiedebusch">
|
||||
/// - Initial.
|
||||
/// </remarks>
|
||||
/// <param name="version">the version</param>
|
||||
/// <returns>converted version to string </returns>
|
||||
public static String BuildFwVersionString(Int32? version)
|
||||
{
|
||||
return version == null ? "0.00" : $@"{version / 100}.{version % 100 :D2}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// List of all present meter applications
|
||||
/// </summary>
|
||||
@@ -1146,7 +1160,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// <summary>
|
||||
/// Core revision of boot code.
|
||||
/// </summary>
|
||||
public String CoreRevision;
|
||||
//public String CoreRevision;
|
||||
public Int32? CoreRevision;
|
||||
|
||||
/// <summary>
|
||||
/// This is the FLEXNET version which describes the entire packet.
|
||||
@@ -1164,9 +1179,14 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
public String MeterSize;
|
||||
|
||||
/// <summary>
|
||||
/// Region (EMEA or NA) and Radio frequency (433 or 868 or null).
|
||||
/// Region (EMEA or NA).
|
||||
/// </summary>
|
||||
public String RegionRadio;
|
||||
public String Region;
|
||||
|
||||
/// <summary>
|
||||
/// Radio frequency in MHz (433 or 868 or null).
|
||||
/// </summary>
|
||||
public Int32? RadioFrequencyMhz;
|
||||
|
||||
/// <summary>
|
||||
/// Metrology upgrade permission.
|
||||
@@ -1192,6 +1212,13 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// <remarks date="2022-Apr-27" author="Thomas Wiedebusch">
|
||||
/// - Read lockup table CRC bugfix with try, catch for legacy versions, where this register does not exists.
|
||||
/// </remarks>
|
||||
/// <remarks date="2022-Dec-02" author="Thomas Wiedebusch">
|
||||
/// - CoreRevision from String to Int32?,
|
||||
/// - MeterSize from String to MeterSize,
|
||||
/// - Region separated from RadioRegion as String,
|
||||
/// - RadioFrequencyMhz introduced as Int32? (null if "NA" region or not installed),
|
||||
/// - LutCrc from String to Int32?.
|
||||
/// </remarks>
|
||||
private void ReadMeterFirmwareAndAssignRegisters()
|
||||
{
|
||||
//avoid overwriting of list if this already exits
|
||||
@@ -1284,18 +1311,32 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
|
||||
//read core revision
|
||||
var coreRegisterRead = RegisterConverter.ConvertTo<String>(ReadRegister(Register.System.CoreRevision, 16));
|
||||
var coreRevision = coreRegisterRead?.Split('\0');
|
||||
CoreRevision = coreRevision == null ? "0.00" : $"{coreRevision[0].ToLower().Replace("cordonel ", "")}";
|
||||
CoreRevision = null;
|
||||
if (!string.IsNullOrEmpty(coreRegisterRead))
|
||||
{
|
||||
var coreRevisionStrings = coreRegisterRead.Split('\0');
|
||||
//remove Cordonel sub-string and the blanks
|
||||
var coreRevisionSubString = $"{coreRevisionStrings[0].ToLower().Replace("cordonel ", "")}";
|
||||
var coreRevisionSubStrings = coreRevisionSubString.Split('.');
|
||||
if (Int32.TryParse(coreRevisionSubStrings[0], out var coreRevisionMsb))
|
||||
{
|
||||
if (Int32.TryParse(coreRevisionSubStrings[1], out var coreRevisionLsb))
|
||||
{
|
||||
CoreRevision = coreRevisionMsb * 100 + coreRevisionLsb;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//read radio frequency
|
||||
RegionRadio = "NA";
|
||||
Region = "NA";
|
||||
RadioFrequencyMhz = null;
|
||||
try
|
||||
{
|
||||
var radioFrequencyRaw = ReadRegister(Register.Sensusradio.FrequencyIndicator);
|
||||
if (radioFrequencyRaw != null)
|
||||
{
|
||||
var radioFrequency = RegisterConverter.ConvertTo<UInt16>(radioFrequencyRaw);
|
||||
RegionRadio = $"EMEA_{radioFrequency}";
|
||||
Region = "EMEA";
|
||||
RadioFrequencyMhz = RegisterConverter.ConvertTo<Int32>(radioFrequencyRaw);
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
@@ -1309,10 +1350,15 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
_logger.Info($"Date time (UTC): {DateTimeOffset.UtcNow}");
|
||||
if (CoreRevision != null)
|
||||
{
|
||||
_logger.Info("System Core Revision: " + CoreRevision);
|
||||
_logger.Info("System Core Revision: " + BuildFwVersionString(CoreRevision));
|
||||
}
|
||||
|
||||
_logger.Info("Region and radio frequency[Mhz]: " + RegionRadio);
|
||||
_logger.Info("Region: " + Region);
|
||||
|
||||
if (RadioFrequencyMhz != null)
|
||||
{
|
||||
_logger.Info($"Radio frequency [MHz]: {RadioFrequencyMhz}");
|
||||
}
|
||||
|
||||
foreach (var fm in MeterAppListVersion.OrderBy(o => o.AppId))
|
||||
{
|
||||
@@ -2144,9 +2190,10 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
apps.Add(new CordonelAppVersion(item.AppId, item.StrVersion, item.AppId != 15));
|
||||
}
|
||||
|
||||
apps.Add(new CordonelAppVersion(-1, CoreRevision, false));
|
||||
apps.Add(new CordonelAppVersion(-1, BuildFwVersionString(CoreRevision), false));
|
||||
|
||||
var url = $"{ServiceUrls.MeterProcessStateUrl()}SetCordonelProgress?PcbId={PcbId}&ProgressName={progressName}&version={version}";
|
||||
var url = $"{ServiceUrls.MeterProcessStateUrl()}SetCordonelProgress?PcbId={PcbId}" +
|
||||
$"&ProgressName={progressName}&version={version}";
|
||||
LocalWebRequest.PostRequestAsync(url, json: apps);
|
||||
|
||||
}
|
||||
|
||||
@@ -136,6 +136,10 @@
|
||||
<Project>{D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}</Project>
|
||||
<Name>Logic.ProductionToProductMapper</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\..\Logic\ProductionOrderCore\ProductionOrderCore.csproj">
|
||||
<Project>{6D2777BB-7A88-466D-A49B-3266F9BF0160}</Project>
|
||||
<Name>ProductionOrderCore</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\..\Utils\Crc16Ccitt\Crc16Ccitt.csproj">
|
||||
<Project>{91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}</Project>
|
||||
<Name>Crc16Ccitt</Name>
|
||||
|
||||
@@ -99,19 +99,13 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
public Int32 MaxPartialFileDataSize = 2 * 1024;
|
||||
|
||||
/// <summary>
|
||||
/// Core revision minimum as double for comparison
|
||||
/// Core revision minimum as int32? with major * 100 + minor for comparison
|
||||
/// </summary>
|
||||
public Double? CoreRevisionMinimum
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
public Int32? CoreRevisionMinimum { get; private set; }
|
||||
/// <summary>
|
||||
/// Core revision maximum as double for comparison
|
||||
/// Core revision maximum as int32? with major * 100 + minor for comparison
|
||||
/// </summary>
|
||||
public Double? CoreRevisionMaximum
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
public Int32? CoreRevisionMaximum { get; private set; }
|
||||
|
||||
//reminder for the core minimum requirement as string
|
||||
private String _strCoreRevisionMinimum;
|
||||
@@ -1950,9 +1944,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
/// </summary>
|
||||
/// <param name="version"></param>
|
||||
/// <returns></returns>
|
||||
public static String ConvertVersionToString(UInt32 version)
|
||||
public static String ConvertVersionToString(Int32? version)
|
||||
{
|
||||
return $"{version / 100}.{version % 100:D2}";
|
||||
return version == null ? "0.00" : $"{version / 100}.{version % 100:D2}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -2062,7 +2056,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
/// Checks if the core version is in range of required minimum to maximum version.
|
||||
/// The package file has to be read in advance as this contains the min/max.
|
||||
/// </summary>
|
||||
/// <param name="coreVersionString">string containing the core version</param>
|
||||
/// <param name="coreRevision">containing the core version</param>
|
||||
/// <returns>true if version is in range</returns>
|
||||
/// <remarks date="2020-Dec-08" author="Thomas Wiedebusch">
|
||||
/// - Initial.
|
||||
@@ -2070,16 +2064,18 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
/// <remarks date="2021-Mar-10" author="Thomas Wiedebusch">
|
||||
/// - Removed "Cordonel " string check.
|
||||
/// </remarks>
|
||||
public Boolean CheckCoreRevision(String coreVersionString)
|
||||
/// <remarks date="2022-Dec-05" author="Thomas Wiedebusch">
|
||||
/// - Core revision data type changed from string ti int32?.
|
||||
/// </remarks>
|
||||
public Boolean CheckCoreRevision(Int32? coreRevision)
|
||||
{
|
||||
if (null == CoreRevisionMaximum || null == CoreRevisionMinimum || null == coreVersionString ||
|
||||
if (null == CoreRevisionMaximum || null == CoreRevisionMinimum || null == coreRevision ||
|
||||
null == _packageDescriptionFile)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var meterCoreRevision = ExtractVersionFromString(coreVersionString);
|
||||
return meterCoreRevision >= CoreRevisionMinimum && meterCoreRevision <= CoreRevisionMaximum;
|
||||
return coreRevision >= CoreRevisionMinimum && coreRevision <= CoreRevisionMaximum;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -2097,7 +2093,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
/// <remarks date="2021-Mar-09" author="Thomas Wiedebusch">
|
||||
/// - Changed to Int32 with major * 100 + minor.
|
||||
/// </remarks>
|
||||
public static Int32 ExtractVersionFromString(String versionString)
|
||||
private static Int32 ExtractVersionFromString(String versionString)
|
||||
|
||||
{
|
||||
var majorVersion = 0;
|
||||
|
||||
@@ -57,15 +57,18 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
/// The package file has to be read in advance as this contains the min/max.
|
||||
/// </summary>
|
||||
/// <param name="meterFwUpdate"></param>
|
||||
/// <param name="coreVersionString">string containing the core version</param>
|
||||
/// <param name="coreRevision">containing the core version</param>
|
||||
/// <returns>true if version is in range</returns>
|
||||
/// <remarks date="2020-Dec-08" author="Thomas Wiedebusch">
|
||||
/// - Initial.
|
||||
/// </remarks>
|
||||
public static Boolean CheckCoreRevision(MeterFwUpdate meterFwUpdate, String coreVersionString)
|
||||
/// <remarks date="2022-Dec-05" author="Thomas Wiedebusch">
|
||||
/// - Core revision data type changed from string ti int32?.
|
||||
/// </remarks>
|
||||
public static Boolean CheckCoreRevision(MeterFwUpdate meterFwUpdate, Int32? coreRevision)
|
||||
{
|
||||
if (meterFwUpdate == null || coreVersionString == null) return false;
|
||||
return meterFwUpdate.CheckCoreRevision(coreVersionString);
|
||||
if (meterFwUpdate == null || coreRevision == null) return false;
|
||||
return meterFwUpdate.CheckCoreRevision(coreRevision);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Logic.ProductionToProductMapper.Cordonel;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
|
||||
namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
{
|
||||
|
||||
@@ -4,12 +4,12 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using Logic.ProductionToProductMapper.Cordonel;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.Consts;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.Consts;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
|
||||
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Utils.Crc16Ccitt;
|
||||
using Xylem.Common.Utils.ProcessExec;
|
||||
using Xylem.Common.Utils.ProcessExec.EventArguments;
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
5ed75d99ee45ff67821090f1b3dbb001dd9e4fe3
|
||||
1a3d4919c9c702245832d925951f2b7cb72fc333
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
|
||||
namespace Logic.ProductionToProductMapper.Cordonel
|
||||
{
|
||||
|
||||
@@ -73,9 +73,7 @@
|
||||
</Compile>
|
||||
<Compile Include="Cordonel\CalibrationResult.cs" />
|
||||
<Compile Include="Cordonel\CordonelAppVersion.cs" />
|
||||
<Compile Include="Cordonel\MeterSize.cs" />
|
||||
<Compile Include="Cordonel\MarriagePossibleEnum.cs" />
|
||||
<Compile Include="Cordonel\MeterSizeConverter.cs" />
|
||||
<Compile Include="Cordonel\PickingCompareItem.cs" />
|
||||
<Compile Include="Cordonel\RegisterHistory.cs" />
|
||||
<Compile Include="Cordonel\SkipProcess.cs" />
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
|
||||
namespace Xylem.Common.Logic.ProductionOrderCore.FW
|
||||
{
|
||||
public class CordonelFw
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public int RadioFrequencyMhz { get; set; }
|
||||
|
||||
public int FlexnetAppId { get; set; }
|
||||
|
||||
public int Version { get; set; }
|
||||
public string Name { get; set; }
|
||||
|
||||
public string FileName { get; set; }
|
||||
public DateTime? DeletedDate { get; set; }
|
||||
|
||||
public bool ForPressure { get; set; }
|
||||
public int Metersize { get; set; }
|
||||
public Region Region { get; set; }
|
||||
public bool CurrentForProd { get; set; }
|
||||
public int? FileClusterStoreId { get; set; }
|
||||
public Int32? CoreRevisionMin { get; set; }
|
||||
public Int32? CoreRevisionMax { get; set; }
|
||||
public Int32? MetrologyVersion { get; set; }
|
||||
public Boolean IsReleased { get; set; }
|
||||
public DateTime? ReleaseDate { get; set; }
|
||||
public String Remark { get; set; }
|
||||
|
||||
public bool IsDeleted() { return DeletedDate.HasValue; }
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
using System;
|
||||
|
||||
namespace Xylem.Common.Logic.ProductionOrderCore.FW
|
||||
{
|
||||
/// <summary>
|
||||
/// This class collects all information needed to specify the FW-Update package.
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class CordonelFwPackageInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Used to keep the selection information on e.g. data tables stuck at the Cordonel.
|
||||
/// </summary>
|
||||
public Boolean IsSelected;
|
||||
|
||||
/// <summary>
|
||||
/// DB table entry
|
||||
/// </summary>
|
||||
public Int32 Id;
|
||||
|
||||
/// <summary>
|
||||
/// Frequency in MHz, null if not used or not assigned
|
||||
/// </summary>
|
||||
public Int32? RadioFrequencyMhz;
|
||||
|
||||
/// <summary>
|
||||
/// Application Id of FLEXNETVERSION
|
||||
/// </summary>
|
||||
public Int32 FlexnetAppId;
|
||||
|
||||
/// <summary>
|
||||
/// Version of FLEXNETVERSION as number
|
||||
/// </summary>
|
||||
public Int32? Version;
|
||||
|
||||
/// <summary>
|
||||
/// Version of FLEXNETVERSION as string
|
||||
/// </summary>
|
||||
public String Name;
|
||||
|
||||
/// <summary>
|
||||
/// Meter size
|
||||
/// </summary>
|
||||
public String MeterSize;
|
||||
|
||||
/// <summary>
|
||||
/// Meter size
|
||||
/// </summary>
|
||||
public String Region;
|
||||
|
||||
/// <summary>
|
||||
/// Current version for production
|
||||
/// </summary>
|
||||
public Boolean CurrentForProd;
|
||||
|
||||
/// <summary>
|
||||
/// Clustered file to connect to physical content
|
||||
/// </summary>
|
||||
public Int32 FileClusterStoreId;
|
||||
|
||||
/// <summary>
|
||||
/// Required minimum core version
|
||||
/// </summary>
|
||||
public Int32? CoreRevisionMin;
|
||||
|
||||
/// <summary>
|
||||
/// Required maximum core version
|
||||
/// </summary>
|
||||
public Int32? CoreRevisionMax;
|
||||
|
||||
/// <summary>
|
||||
/// Required metrology version
|
||||
/// </summary>
|
||||
public Int32? MetrologyVersion;
|
||||
|
||||
/// <summary>
|
||||
/// Marker if it is released.
|
||||
/// </summary>
|
||||
public Boolean IsReleased;
|
||||
|
||||
/// <summary>
|
||||
/// Date of release approval
|
||||
/// </summary>
|
||||
public DateTime? ReleaseDate;
|
||||
|
||||
/// <summary>
|
||||
/// Comment
|
||||
/// </summary>
|
||||
public String Remark;
|
||||
|
||||
/// <summary>
|
||||
/// Complete name of the FW release package
|
||||
/// </summary>
|
||||
public String FileName;
|
||||
|
||||
/// <summary>
|
||||
/// Date of deletion
|
||||
/// </summary>
|
||||
public DateTime? DeletedDate;
|
||||
|
||||
/// <summary>
|
||||
/// Returns is deleted if deletion date is set
|
||||
/// </summary>
|
||||
public Boolean IsDeleted() { return DeletedDate.HasValue; }
|
||||
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
namespace Logic.ProductionToProductMapper.Cordonel
|
||||
namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
||||
{
|
||||
/// <summary>
|
||||
/// Enumeration of meter sizes named as flow tube inner diameter,
|
||||
+3
-2
@@ -1,6 +1,6 @@
|
||||
using System;
|
||||
|
||||
namespace Logic.ProductionToProductMapper.Cordonel
|
||||
namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
||||
{
|
||||
/// <summary>
|
||||
/// Converter from meter size of production order to name or MeterSize enum or vice versa.
|
||||
@@ -10,8 +10,9 @@ namespace Logic.ProductionToProductMapper.Cordonel
|
||||
/// <summary>
|
||||
/// Convert Meter size enumeration to name .
|
||||
/// </summary>
|
||||
public static String ConvertMeterSizeEnumToSizeName(MeterSize meterSizeId)
|
||||
public static String ConvertMeterSizeEnumToSizeName(MeterSize? meterSizeId)
|
||||
{
|
||||
if (meterSizeId == null) return "*";
|
||||
switch (meterSizeId)
|
||||
{
|
||||
case MeterSize.DN40:
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
||||
namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
||||
{
|
||||
public enum Region
|
||||
{
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
|
||||
namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
|
||||
{
|
||||
/// <summary>
|
||||
/// Converter for region.
|
||||
/// </summary>
|
||||
public static class RegionConverter
|
||||
{
|
||||
/// <summary>
|
||||
/// Convert region enumeration to name .
|
||||
/// </summary>
|
||||
public static String ConvertRegionEnumToRegionName(Region? regionId)
|
||||
{
|
||||
if (regionId == null) return "*";
|
||||
|
||||
switch (regionId)
|
||||
{
|
||||
case Region.EMEA:
|
||||
return "EMEA";
|
||||
|
||||
case Region.NA:
|
||||
return "NA";
|
||||
|
||||
case Region.China:
|
||||
return "China";
|
||||
|
||||
default:
|
||||
return "*";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -88,11 +88,14 @@
|
||||
</Compile>
|
||||
<Compile Include="Csd\CsdParameterResult.cs" />
|
||||
<Compile Include="File\BaseFile.cs" />
|
||||
<Compile Include="FW\CordonelFw.cs" />
|
||||
<Compile Include="FW\CordonelFwPackageInfo.cs" />
|
||||
<Compile Include="FW\CordonelFWTypeEnum.cs" />
|
||||
<Compile Include="IProductionData.cs" />
|
||||
<Compile Include="KitronTestResults\JsonObject.cs" />
|
||||
<Compile Include="KitronTestResults\RadioTest.cs" />
|
||||
<Compile Include="OrderData\MeterSize.cs" />
|
||||
<Compile Include="OrderData\MeterSizeConverter.cs" />
|
||||
<Compile Include="OrderData\RegionConverter.cs" />
|
||||
<Compile Include="OrderData\OrderOverViewCordonel.cs" />
|
||||
<Compile Include="OrderData\OrderRadioParameter.cs" />
|
||||
<Compile Include="OrderData\OrderProgrammingParameters.cs" />
|
||||
|
||||
@@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System.Windows.Controls;
|
||||
using Xylem.Common.CommonCore.Configuration;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
|
||||
using Xylem.Common.Logic.SoftwareAccessHelper;
|
||||
|
||||
namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
@@ -46,13 +47,13 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
|
||||
var apps = new List<CordonelAppVersion>();
|
||||
foreach (var item in Meter.MeterAppListVersion)
|
||||
{
|
||||
apps.Add(new CordonelAppVersion(item.AppId, item.StrVersion, (item.AppId != 15 ? true : false)));
|
||||
apps.Add(new CordonelAppVersion(item.AppId, item.StrVersion, item.AppId != 15));
|
||||
}
|
||||
|
||||
apps.Add(new CordonelAppVersion(-1, Meter.CoreRevision, false));
|
||||
apps.Add(new CordonelAppVersion(-1, GenesisMeter.BuildFwVersionString(Meter.CoreRevision), false));
|
||||
|
||||
var url = $"{ServiceUrls.MeterProcessStateUrl()}SetCordonelProgress?PcbId={Meter.PcbId}&ProgressName=Shipping&version={Assembly.GetExecutingAssembly().GetName().Version.ToString()}";
|
||||
var a = LocalWebRequest.PostRequestAsync(url, json: apps);
|
||||
var url = $"{ServiceUrls.MeterProcessStateUrl()}SetCordonelProgress?PcbId={Meter.PcbId}&ProgressName=Shipping&version={Assembly.GetExecutingAssembly().GetName().Version}";
|
||||
LocalWebRequest.PostRequestAsync(url, json: apps);
|
||||
Meter.PushProgress("Shipping", Assembly.GetExecutingAssembly().GetName().Version.ToString());
|
||||
Meter.Logout();
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ using System.Web;
|
||||
using System.Web.Http;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.File;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.FW;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Logic.ServiceCore;
|
||||
|
||||
namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
@@ -460,26 +461,24 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Retruns filted FW files for Cordonel without content
|
||||
/// Returns filtered FW files for Cordonel without content
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("GetCorondelFw"), HttpGet]
|
||||
public async Task<HttpResponseMessage> GetCorondelFw(Int32? Metersize = null, int? Frequency = null, String Region = null, Boolean? ForProd = null, Boolean? Deleted = false)
|
||||
[Route("GetCordonelFw"), HttpGet]
|
||||
public async Task<HttpResponseMessage> GetCordonelFw(Int32? meterSize = null, Int32? radioFrequencyMhz = null,
|
||||
String region = null, Boolean? forProd = null, Boolean? deleted = false)
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
return await Task.Run(() =>
|
||||
{
|
||||
var ret = new List<CordonelFw>();
|
||||
var ret = new List<CordonelFwPackageInfo>();
|
||||
|
||||
|
||||
|
||||
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
|
||||
using (var dataAccess = new SqlDataAccess(GlobalConfig.connectionString.Value))
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
|
||||
|
||||
sb.AppendLine($" SELECT [Id] ");
|
||||
sb.AppendLine($" ,[RadioFrequencyMhz] ");
|
||||
sb.AppendLine($" ,[FlexnetAppId] ");
|
||||
@@ -500,104 +499,88 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
sb.AppendLine($" FROM[Auftrag].[dbo].[Cordonel_CurrentFw] ");
|
||||
sb.AppendLine($" left outer join [Auftrag].[dbo].[FileClusterStore] on [FileId] = [FileClusterStoreId]");
|
||||
sb.AppendLine($" where 1= 1 ");
|
||||
if (Metersize.HasValue)
|
||||
if (meterSize != null)
|
||||
{
|
||||
sb.AppendLine($" and Metersize= {Metersize.Value} ");
|
||||
sb.AppendLine($" and Metersize={meterSize} ");
|
||||
}
|
||||
if (!string.IsNullOrEmpty(Region))
|
||||
if (radioFrequencyMhz != null)
|
||||
{
|
||||
sb.AppendLine($" and Region ='{Region}' ");
|
||||
sb.AppendLine($" and radioFrequencyMhz={radioFrequencyMhz} ");
|
||||
}
|
||||
if (ForProd.HasValue)
|
||||
if (region != null)
|
||||
{
|
||||
sb.AppendLine($" and currentForProd ={(ForProd.Value ? "1" : "0") } ");
|
||||
sb.AppendLine($" and Region ='{region}' ");
|
||||
}
|
||||
if (Deleted.HasValue)
|
||||
if (forProd.HasValue)
|
||||
{
|
||||
sb.AppendLine($" and Deleted is {(Deleted.Value ? "not" : "")} null");
|
||||
sb.AppendLine($" and currentForProd ={(forProd.Value ? "1" : "0") } ");
|
||||
}
|
||||
if (deleted.HasValue)
|
||||
{
|
||||
sb.AppendLine($" and Deleted is {(deleted.Value ? "not" : "")} null");
|
||||
}
|
||||
|
||||
var retDT = dataacces.ExecuteQuery(sb.ToString());
|
||||
var retDT = dataAccess.ExecuteQuery(sb.ToString());
|
||||
|
||||
foreach (DataRow item in retDT.Rows)
|
||||
{
|
||||
|
||||
var add = new CordonelFw() { Id = (int)item["Id"] };
|
||||
add.RadioFrequencyMhz = (int)item["RadioFrequencyMhz"];
|
||||
add.Name = (string)item["Name"];
|
||||
|
||||
add.FileName = "";
|
||||
var add = new CordonelFwPackageInfo
|
||||
{
|
||||
Id = (Int32)item["Id"],
|
||||
RadioFrequencyMhz = (Int32?)item["RadioFrequencyMhz"],
|
||||
Name = (String)item["Name"],
|
||||
FlexnetAppId = (Int32)item["FlexnetAppId"],
|
||||
Version = (Int32)item["Version"],
|
||||
FileClusterStoreId = (Int32)item["FileClusterStoreId"],
|
||||
FileName = ""
|
||||
};
|
||||
|
||||
if (item["FileName"].GetType() != typeof(DBNull))
|
||||
{
|
||||
add.FileName = (string)item["FileName"];
|
||||
add.FileName = (String)item["FileName"];
|
||||
}
|
||||
|
||||
|
||||
if (item["Deleted"].GetType() != typeof(DBNull))
|
||||
{
|
||||
add.DeletedDate = (DateTime)item["Deleted"];
|
||||
}
|
||||
|
||||
add.FlexnetAppId = (int)item["FlexnetAppId"];
|
||||
add.Version = (int)item["Version"];
|
||||
|
||||
add.Metersize = (Int16)item["Metersize"];
|
||||
|
||||
|
||||
|
||||
add.FileClusterStoreId = null;
|
||||
if (item["FileClusterStoreId"].GetType() != typeof(DBNull))
|
||||
|
||||
if (item["Metersize"].GetType() != typeof(DBNull))
|
||||
{
|
||||
add.FileClusterStoreId = (int)item["FileClusterStoreId"];
|
||||
add.MeterSize = MeterSizeConverter.ConvertMeterSizeEnumToSizeName((MeterSize)(Int16)item["Metersize"]);
|
||||
}
|
||||
|
||||
add.CurrentForProd = false;
|
||||
if (item["CurrentForProd"].GetType() != typeof(DBNull))
|
||||
{
|
||||
|
||||
add.CurrentForProd = (bool)item["CurrentForProd"];
|
||||
add.CurrentForProd = (Boolean)item["CurrentForProd"];
|
||||
}
|
||||
|
||||
|
||||
switch ((string)item["Region"].ToString())
|
||||
if (item["Region"].GetType() != typeof(DBNull))
|
||||
{
|
||||
case "emea":
|
||||
add.Region = Logic.ProductionOrderCore.OrderData.Region.EMEA;
|
||||
break;
|
||||
case "na":
|
||||
add.Region = Logic.ProductionOrderCore.OrderData.Region.NA;
|
||||
break;
|
||||
case "china":
|
||||
add.Region = Logic.ProductionOrderCore.OrderData.Region.China;
|
||||
break;
|
||||
default:
|
||||
add.Region = Logic.ProductionOrderCore.OrderData.Region.EMEA;
|
||||
break;
|
||||
}
|
||||
var reg = (String)item["Region"];
|
||||
add.Region = reg.Replace(" ","");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
add.CoreRevisionMin = null;
|
||||
if (item["CoreRevisionMin"].GetType() != typeof(DBNull))
|
||||
{
|
||||
|
||||
add.CoreRevisionMin = (int)item["CoreRevisionMin"];
|
||||
add.CoreRevisionMin = (Int32)item["CoreRevisionMin"];
|
||||
}
|
||||
|
||||
add.CoreRevisionMax = null;
|
||||
if (item["CoreRevisionMax"].GetType() != typeof(DBNull))
|
||||
{
|
||||
|
||||
add.CoreRevisionMin = (int)item["CoreRevisionMax"];
|
||||
add.CoreRevisionMax = (Int32)item["CoreRevisionMax"];
|
||||
}
|
||||
add.MetrologyVersion = null;
|
||||
if (item["MetrologyVersion"].GetType() != typeof(DBNull))
|
||||
{
|
||||
|
||||
add.CoreRevisionMin = (int)item["MetrologyVersion"];
|
||||
add.MetrologyVersion = (Int32)item["MetrologyVersion"];
|
||||
}
|
||||
|
||||
|
||||
@@ -605,7 +588,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
if (item["IsReleased"].GetType() != typeof(DBNull))
|
||||
{
|
||||
|
||||
add.IsReleased = (bool)item["IsReleased"];
|
||||
add.IsReleased = (Boolean)item["IsReleased"];
|
||||
}
|
||||
add.ReleaseDate = null;
|
||||
if (item["ReleaseDate"].GetType() != typeof(DBNull))
|
||||
|
||||
@@ -723,16 +723,19 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
}
|
||||
|
||||
[Route("GetRecoveryFile"), HttpGet]
|
||||
public async Task<HttpResponseMessage> GetRecoveryFile(Int32 PcbID, Int32? RadioFrq, String Region, String FlexnetVersion)
|
||||
public async Task<HttpResponseMessage> GetRecoveryFile(Int32 pcbId, Int32? radioFrq, String region, String flexnetVersion)
|
||||
{
|
||||
|
||||
var file = new RecoverySettings() { PcbId = PcbID, RadioFrequencyMhz = RadioFrq, Region = Region, Release = FlexnetVersion };
|
||||
file.RecoveryRegisters = new List<RecoveryRegisterItem>();
|
||||
file.RecoveryRegisters.Add(new RecoveryRegisterItem() { RegisterIdent = "GENESISFLOW_SealDisplay", WriteValue = new Byte[] { 0x00, 0x00, 0x00, 0x00 }, IsCiritcal = true, ReadbackValue = new Byte[] { 0x00, 0x00, 0x00, 0x00 } });
|
||||
var file = new RecoverySettings { PcbId = pcbId, RadioFrequencyMhz = radioFrq, Region = region, Release = flexnetVersion,
|
||||
RecoveryRegisters = new List<RecoveryRegisterItem>
|
||||
{
|
||||
new RecoveryRegisterItem() { RegisterIdent = "GENESISFLOW_SealDisplay", WriteValue = new Byte[] { 0x00, 0x00, 0x00, 0x00 },
|
||||
IsCritical = true, ReadBackValue = new Byte[] { 0x00, 0x00, 0x00, 0x00 } }
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
var csdRet = OrderProgrammingParameters.GetProgrammingParameters(PcbID.ToString(), GlobalConfig.connectionString.Value);
|
||||
var csdRet = OrderProgrammingParameters.GetProgrammingParameters(pcbId.ToString(), GlobalConfig.connectionString.Value);
|
||||
|
||||
|
||||
foreach (var item in csdRet.Where(w => w.Source == Logic.ProductionOrderCore.ProgrammingSource.Vako))
|
||||
@@ -741,8 +744,8 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
{
|
||||
RegisterIdent = item.RegisterName,
|
||||
WriteValue = item.RegisterValue,
|
||||
ReadbackValue = null,
|
||||
IsCiritcal = false,
|
||||
ReadBackValue = null,
|
||||
IsCritical = false,
|
||||
Access = RegisterRecoveryAccess.SetAlways,
|
||||
});
|
||||
}
|
||||
@@ -753,26 +756,26 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
{
|
||||
RegisterIdent = item.RegisterName,
|
||||
WriteValue = item.RegisterValue,
|
||||
ReadbackValue = null,
|
||||
IsCiritcal = false,
|
||||
ReadBackValue = null,
|
||||
IsCritical = false,
|
||||
Access = RegisterRecoveryAccess.SetAlways,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
file.RecoveryRegisters.Add(new RecoveryRegisterItem() { RegisterIdent = "GENESISFLOW_SealDisplay", WriteValue = new Byte[] { 0x00, 0x00, 0x00, 0x01 }, IsCiritcal = true });
|
||||
file.RecoveryRegisters.Add(new RecoveryRegisterItem() { RegisterIdent = "GENESISFLOW_SealDisplay", WriteValue = new Byte[] { 0x00, 0x00, 0x00, 0x01 }, IsCritical = true });
|
||||
|
||||
|
||||
file.RecoveryRegisters.Add(new RecoveryRegisterItem() { RegisterIdent = "SENSUSRADIO_SystemState", WriteValue = new Byte[] { 0x00, 0x00, 0x00, 0x01 }, IsCiritcal = true, ReadbackValue = new Byte[] { 0x00, 0x00, 0x00, 0x0c } });
|
||||
file.RecoveryRegisters.Add(new RecoveryRegisterItem() { RegisterIdent = "SENSUSRADIO_SystemState", WriteValue = new Byte[] { 0x00, 0x00, 0x00, 0x01 }, IsCritical = true, ReadBackValue = new Byte[] { 0x00, 0x00, 0x00, 0x0c } });
|
||||
file.RecoveryRegisters.Add(new RecoveryRegisterItem() { RegisterIdent = "SENSUSRADIO_MainAlarmMask", WriteValue = new Byte[] { 0x00, 0x00, 0x00, 0x00 } });
|
||||
file.RecoveryRegisters.Add(new RecoveryRegisterItem() { RegisterIdent = "SENSUSRADIO_ExtendedAlarmMask", WriteValue = new Byte[] { 0x00, 0x00, 0x00, 0x00 } });
|
||||
|
||||
file.RecoveryRegisters.Add(new RecoveryRegisterItem() { RegisterIdent = "SENSUSRADIO_SystemState", WriteValue = new Byte[] { 0x00, 0x00, 0x00, 0xFF }, IsCiritcal = true, ReadbackValue = new Byte[] { 0x00, 0x00, 0x00, 0x0c } });
|
||||
file.RecoveryRegisters.Add(new RecoveryRegisterItem() { RegisterIdent = "SENSUSRADIO_SystemState", WriteValue = new Byte[] { 0x00, 0x00, 0x00, 0xFF }, IsCritical = true, ReadBackValue = new Byte[] { 0x00, 0x00, 0x00, 0x0c } });
|
||||
|
||||
|
||||
|
||||
var blacklist = new List<String>()
|
||||
var blackList = new List<String>()
|
||||
{
|
||||
"CUSTOMER_RebootCount",
|
||||
"GENESISFLOW_ForwardArrow",
|
||||
@@ -785,7 +788,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
};
|
||||
|
||||
|
||||
var Crit = new List<String>()
|
||||
var Critical = new List<String>()
|
||||
{
|
||||
"GENESISFLOW_SealDisplay",
|
||||
"GENESISFLOW_MeterSize",
|
||||
@@ -811,14 +814,9 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
|
||||
};
|
||||
|
||||
file.RecoveryRegisters.Where(d => Critical.Contains(d.RegisterIdent)).ToList().ForEach(f => { f.IsCritical = true; f.ReadBackValue = f.WriteValue; });
|
||||
|
||||
|
||||
|
||||
file.RecoveryRegisters.Where(d => Crit.Contains(d.RegisterIdent)).ToList().ForEach(f => { f.IsCiritcal = true; f.ReadbackValue = f.WriteValue; });
|
||||
|
||||
|
||||
|
||||
var onlyIfDefaultl = new List<String>()
|
||||
var onlyIfDefault = new List<String>()
|
||||
{
|
||||
"METROLOGYASST_PulseWeight",
|
||||
"METROLOGYASST_PressureUnits",
|
||||
@@ -841,7 +839,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers
|
||||
|
||||
};
|
||||
|
||||
file.RecoveryRegisters.Where(d => onlyIfDefaultl.Contains(d.RegisterIdent)).ToList().ForEach(f => f.Access = RegisterRecoveryAccess.SetIfDefault);
|
||||
file.RecoveryRegisters.Where(d => onlyIfDefault.Contains(d.RegisterIdent)).ToList().ForEach(f => f.Access = RegisterRecoveryAccess.SetIfDefault);
|
||||
|
||||
return Request.CreateResponse(HttpStatusCode.OK, file);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Logic.ProductionToProductMapper.Cordonel;
|
||||
using Logic.ProductionToProductMapper.Files.Fw;
|
||||
using Logic.ProductionToProductMapper.Files.Fw;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -10,6 +9,7 @@ using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Xylem.Common.CommonCore.Configuration;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.FW;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Logic.SoftwareAccessHelper;
|
||||
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
|
||||
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.FW;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Logic.SoftwareAccessHelper;
|
||||
using Xylem.Common.Ui.GenesisToolBox.Properties;
|
||||
|
||||
@@ -730,7 +731,8 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
lblConnectPcb.Text = StrPartPcbConnected + _currentGenesis.PcbId;
|
||||
lblCoreRevision.Text = StrCoreRevision + _currentGenesis.CoreRevision;
|
||||
lblCoreRevision.Text = StrCoreRevision +
|
||||
GenesisMeter.BuildFwVersionString(_currentGenesis.CoreRevision);
|
||||
lblConnectPcb.ForeColor = Color.Green;
|
||||
_meterFwUpdate?.CompareAllMeterAndFileApps();
|
||||
FillDataGridWithAllInfos();
|
||||
@@ -1857,10 +1859,9 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
else if (item.FileName.ToLower().EndsWith(".txt"))
|
||||
{
|
||||
//encode content
|
||||
String controlFileContent;
|
||||
|
||||
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
|
||||
controlFileContent = enc.GetString(item.FileContent.ToArray());
|
||||
var enc = new System.Text.ASCIIEncoding();
|
||||
var controlFileContent = enc.GetString(item.FileContent.ToArray());
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Text;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.File;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Logic.SoftwareAccessHelper;
|
||||
using Xylem.Common.Utils.Crc16Ccitt;
|
||||
|
||||
|
||||
+40
-17
@@ -30,7 +30,7 @@
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.grpSetup = new System.Windows.Forms.GroupBox();
|
||||
this.tbxRegionRadio = new System.Windows.Forms.TextBox();
|
||||
this.tbxRegion = new System.Windows.Forms.TextBox();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.tbxPcbId = new System.Windows.Forms.TextBox();
|
||||
this.tbxMeterFw = new System.Windows.Forms.TextBox();
|
||||
@@ -74,6 +74,8 @@
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.lblUpdateTime = new System.Windows.Forms.Label();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.tbxRadio = new System.Windows.Forms.TextBox();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.grpSetup.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.groupBox1.SuspendLayout();
|
||||
@@ -81,7 +83,9 @@
|
||||
//
|
||||
// grpSetup
|
||||
//
|
||||
this.grpSetup.Controls.Add(this.tbxRegionRadio);
|
||||
this.grpSetup.Controls.Add(this.label10);
|
||||
this.grpSetup.Controls.Add(this.tbxRadio);
|
||||
this.grpSetup.Controls.Add(this.tbxRegion);
|
||||
this.grpSetup.Controls.Add(this.label8);
|
||||
this.grpSetup.Controls.Add(this.tbxPcbId);
|
||||
this.grpSetup.Controls.Add(this.tbxMeterFw);
|
||||
@@ -96,31 +100,31 @@
|
||||
this.grpSetup.Controls.Add(this.cbComSlot);
|
||||
this.grpSetup.Location = new System.Drawing.Point(12, 69);
|
||||
this.grpSetup.Name = "grpSetup";
|
||||
this.grpSetup.Size = new System.Drawing.Size(248, 250);
|
||||
this.grpSetup.Size = new System.Drawing.Size(257, 250);
|
||||
this.grpSetup.TabIndex = 24;
|
||||
this.grpSetup.TabStop = false;
|
||||
this.grpSetup.Text = "Cordonel";
|
||||
//
|
||||
// tbxRegionRadio
|
||||
// tbxRegion
|
||||
//
|
||||
this.tbxRegionRadio.Location = new System.Drawing.Point(124, 178);
|
||||
this.tbxRegionRadio.Name = "tbxRegionRadio";
|
||||
this.tbxRegionRadio.ReadOnly = true;
|
||||
this.tbxRegionRadio.Size = new System.Drawing.Size(68, 20);
|
||||
this.tbxRegionRadio.TabIndex = 34;
|
||||
this.tbxRegion.Location = new System.Drawing.Point(128, 178);
|
||||
this.tbxRegion.Name = "tbxRegion";
|
||||
this.tbxRegion.ReadOnly = true;
|
||||
this.tbxRegion.Size = new System.Drawing.Size(68, 20);
|
||||
this.tbxRegion.TabIndex = 34;
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(10, 182);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(105, 13);
|
||||
this.label8.Size = new System.Drawing.Size(44, 13);
|
||||
this.label8.TabIndex = 33;
|
||||
this.label8.Text = "Region/Radio[MHz]:";
|
||||
this.label8.Text = "Region:";
|
||||
//
|
||||
// tbxPcbId
|
||||
//
|
||||
this.tbxPcbId.Location = new System.Drawing.Point(124, 59);
|
||||
this.tbxPcbId.Location = new System.Drawing.Point(128, 59);
|
||||
this.tbxPcbId.Name = "tbxPcbId";
|
||||
this.tbxPcbId.ReadOnly = true;
|
||||
this.tbxPcbId.Size = new System.Drawing.Size(68, 20);
|
||||
@@ -128,7 +132,7 @@
|
||||
//
|
||||
// tbxMeterFw
|
||||
//
|
||||
this.tbxMeterFw.Location = new System.Drawing.Point(124, 88);
|
||||
this.tbxMeterFw.Location = new System.Drawing.Point(128, 88);
|
||||
this.tbxMeterFw.Name = "tbxMeterFw";
|
||||
this.tbxMeterFw.ReadOnly = true;
|
||||
this.tbxMeterFw.Size = new System.Drawing.Size(68, 20);
|
||||
@@ -136,7 +140,7 @@
|
||||
//
|
||||
// tbxMeterMeterSize
|
||||
//
|
||||
this.tbxMeterMeterSize.Location = new System.Drawing.Point(124, 148);
|
||||
this.tbxMeterMeterSize.Location = new System.Drawing.Point(128, 148);
|
||||
this.tbxMeterMeterSize.Name = "tbxMeterMeterSize";
|
||||
this.tbxMeterMeterSize.ReadOnly = true;
|
||||
this.tbxMeterMeterSize.Size = new System.Drawing.Size(68, 20);
|
||||
@@ -144,7 +148,7 @@
|
||||
//
|
||||
// tbxMeterLutCrc
|
||||
//
|
||||
this.tbxMeterLutCrc.Location = new System.Drawing.Point(124, 118);
|
||||
this.tbxMeterLutCrc.Location = new System.Drawing.Point(128, 118);
|
||||
this.tbxMeterLutCrc.Name = "tbxMeterLutCrc";
|
||||
this.tbxMeterLutCrc.ReadOnly = true;
|
||||
this.tbxMeterLutCrc.Size = new System.Drawing.Size(68, 20);
|
||||
@@ -179,7 +183,7 @@
|
||||
//
|
||||
// btnConnect
|
||||
//
|
||||
this.btnConnect.Location = new System.Drawing.Point(123, 24);
|
||||
this.btnConnect.Location = new System.Drawing.Point(128, 24);
|
||||
this.btnConnect.Name = "btnConnect";
|
||||
this.btnConnect.Size = new System.Drawing.Size(116, 25);
|
||||
this.btnConnect.TabIndex = 24;
|
||||
@@ -534,6 +538,23 @@
|
||||
this.label7.TabIndex = 32;
|
||||
this.label7.Text = "Cordonel LUT Update";
|
||||
//
|
||||
// tbxRadio
|
||||
//
|
||||
this.tbxRadio.Location = new System.Drawing.Point(128, 208);
|
||||
this.tbxRadio.Name = "tbxRadio";
|
||||
this.tbxRadio.ReadOnly = true;
|
||||
this.tbxRadio.Size = new System.Drawing.Size(68, 20);
|
||||
this.tbxRadio.TabIndex = 35;
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(10, 212);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(116, 13);
|
||||
this.label10.TabIndex = 36;
|
||||
this.label10.Text = "Radio frequency[MHz]:";
|
||||
//
|
||||
// FrmLutUpdate
|
||||
//
|
||||
this.AccessibleRole = System.Windows.Forms.AccessibleRole.Sound;
|
||||
@@ -608,7 +629,7 @@
|
||||
private System.Windows.Forms.TextBox tbxMeterFw;
|
||||
private System.Windows.Forms.TextBox tbxPcbId;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.TextBox tbxRegionRadio;
|
||||
private System.Windows.Forms.TextBox tbxRegion;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.Label lblSelectDb;
|
||||
private System.Windows.Forms.RadioButton rbtDb;
|
||||
@@ -617,5 +638,7 @@
|
||||
private System.Windows.Forms.RadioButton rbtProd;
|
||||
private System.Windows.Forms.ComboBox cbxDbLuts;
|
||||
private System.Windows.Forms.Button btnLoadfromDb;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.TextBox tbxRadio;
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ using Newtonsoft.Json;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile;
|
||||
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Logic.SoftwareAccessHelper;
|
||||
using Xylem.Common.Utils.ProcessExec.EventArguments;
|
||||
|
||||
@@ -235,11 +236,17 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
tbxMeterFw.Text = _currentGenesis.FwVersion;
|
||||
tbxMeterMeterSize.Text = _currentGenesis.MeterSize;
|
||||
tbxMeterLutCrc.Text = _currentGenesis.LutCrc;
|
||||
tbxRegionRadio.Text = _currentGenesis.RegionRadio;
|
||||
tbxRegion.Text = _currentGenesis.Region;
|
||||
LogText("Meter FW Version: " + _currentGenesis.FwVersion);
|
||||
LogText("Meter LUT CRC: " + _currentGenesis.LutCrc);
|
||||
LogText("Meter Size: " + _currentGenesis.MeterSize);
|
||||
LogText("Meter Region/Radio[MHz]: " + _currentGenesis.RegionRadio);
|
||||
LogText("Meter Region: " + _currentGenesis.Region);
|
||||
if (_currentGenesis.RadioFrequencyMhz != null)
|
||||
{
|
||||
tbxRadio.Text = $@"{_currentGenesis.RadioFrequencyMhz}";
|
||||
LogText($"Meter radio frequency [MHz]: {_currentGenesis.RadioFrequencyMhz}");
|
||||
}
|
||||
|
||||
lblConnectPcb.ForeColor = Color.Green;
|
||||
CheckUpdateEnabled();
|
||||
_currentGenesis.Logout();
|
||||
@@ -379,7 +386,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
return;
|
||||
LogText(StrSeparator);
|
||||
LogText($"PCB ID: {_currentGenesis.PcbId}");
|
||||
LogText($"Core Version: {_currentGenesis.CoreRevision}");
|
||||
LogText($"Core Version: {GenesisMeter.BuildFwVersionString(_currentGenesis.CoreRevision)}");
|
||||
LogText("");
|
||||
LogText("Installed Applications:");
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Xylem.Common.CommonCore.Configuration;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Logic.SoftwareAccessHelper;
|
||||
|
||||
namespace Xylem.Common.Ui.GenesisToolBox
|
||||
|
||||
@@ -1092,7 +1092,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine($"PCBID: {_currentGenesis.PcbId}");
|
||||
sb.AppendLine($"Date: {DateTimeOffset.UtcNow}");
|
||||
sb.AppendLine($"System Core Revision: {_currentGenesis.CoreRevision}");
|
||||
sb.AppendLine($"System Core Revision: {GenesisMeter.BuildFwVersionString(_currentGenesis.CoreRevision)}");
|
||||
foreach (var fm in _currentGenesis.MeterAppListVersion.OrderBy(o => o.AppId))
|
||||
{
|
||||
var versionString = fm.IsInstalled
|
||||
@@ -1879,15 +1879,18 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
/// <remarks date="2021-Mar-10" author="Thomas Wiedebusch">
|
||||
/// - Changed version from Uint32 to String
|
||||
/// </remarks>
|
||||
/// <remarks date="2022-Dec-02" author="Thomas Wiedebusch">
|
||||
/// - Changed core revision from string to Int32?.
|
||||
/// </remarks>
|
||||
private void button3_Click(Object sender, EventArgs e)
|
||||
{
|
||||
var apps = new List<CordonelAppVersion>();
|
||||
foreach (var item in _currentGenesis.MeterAppListVersion)
|
||||
{
|
||||
apps.Add(new CordonelAppVersion(item.AppId, item.StrVersion, (item.AppId != 15 ? true : false)));
|
||||
apps.Add(new CordonelAppVersion(item.AppId, item.StrVersion, item.AppId != 15));
|
||||
}
|
||||
|
||||
apps.Add(new CordonelAppVersion(-1, _currentGenesis.CoreRevision, false));
|
||||
apps.Add(new CordonelAppVersion(-1, BuildFwVersionString(_currentGenesis.CoreRevision), false));
|
||||
|
||||
var url = $"{ServiceUrls.MeterProcessStateUrl()}SetCordonelProgress?PcbId={_currentGenesis.PcbId}&ProgressName=toolbox&version={Assembly.GetExecutingAssembly().GetName().Version}";
|
||||
var a = LocalWebRequest.PostRequestAsync(url, json: apps);
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using Logic.ProductionToProductMapper.Cordonel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using XylemCommonUiLegacyGenCtl.Enums;
|
||||
|
||||
namespace XylemCommonUiLegacyGenCtl.DataPackage
|
||||
|
||||
@@ -226,6 +226,10 @@
|
||||
<Project>{D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}</Project>
|
||||
<Name>Logic.ProductionToProductMapper</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Logic\ProductionOrderCore\ProductionOrderCore.csproj">
|
||||
<Project>{6D2777BB-7A88-466D-A49B-3266F9BF0160}</Project>
|
||||
<Name>ProductionOrderCore</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Metrology\Measurements\Measurements.csproj">
|
||||
<Project>{6CCDB656-C676-4360-BABA-C4596AAD175D}</Project>
|
||||
<Name>Measurements</Name>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using CordonelPreadjustmentUi;
|
||||
using CordonelPreadjustmentUi.Parameters;
|
||||
using CordonelPreadjustmentUi.Processes.Itinerary;
|
||||
using Newtonsoft.Json;
|
||||
using NLog;
|
||||
@@ -12,6 +11,7 @@ using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Xylem.Common.CommonCore.Consts;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig;
|
||||
using Xylem.Common.Ui.CordonelPreadjustmentUi.Parameters;
|
||||
using Xylem.Common.Utils.Logging;
|
||||
using XylemCommonUiLegacyGenCtl.DataPackage;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using Logic.ProductionToProductMapper.Cordonel;
|
||||
using System;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using XylemCommonUiLegacyGenCtl.DataPackage;
|
||||
|
||||
namespace XylemCommonUiLegacyGenCtl
|
||||
|
||||
+10
-10
@@ -772,7 +772,7 @@
|
||||
this.ctlMeterReady10.CustomerSerialNr = null;
|
||||
this.ctlMeterReady10.LastTestBechState = 0;
|
||||
this.ctlMeterReady10.Location = new System.Drawing.Point(3, 635);
|
||||
this.ctlMeterReady10.Metersize = Logic.ProductionToProductMapper.Cordonel.MeterSize.DN40;
|
||||
this.ctlMeterReady10.Metersize = Xylem.Common.Logic.ProductionOrderCore.OrderData.MeterSize.DN40;
|
||||
this.ctlMeterReady10.Name = "ctlMeterReady10";
|
||||
this.ctlMeterReady10.OrderNumber = null;
|
||||
this.ctlMeterReady10.RadioAdress = null;
|
||||
@@ -786,7 +786,7 @@
|
||||
this.ctlMeterReady9.CustomerSerialNr = null;
|
||||
this.ctlMeterReady9.LastTestBechState = 0;
|
||||
this.ctlMeterReady9.Location = new System.Drawing.Point(3, 579);
|
||||
this.ctlMeterReady9.Metersize = Logic.ProductionToProductMapper.Cordonel.MeterSize.DN40;
|
||||
this.ctlMeterReady9.Metersize = Xylem.Common.Logic.ProductionOrderCore.OrderData.MeterSize.DN40;
|
||||
this.ctlMeterReady9.Name = "ctlMeterReady9";
|
||||
this.ctlMeterReady9.OrderNumber = null;
|
||||
this.ctlMeterReady9.RadioAdress = null;
|
||||
@@ -800,7 +800,7 @@
|
||||
this.ctlMeterReady8.CustomerSerialNr = null;
|
||||
this.ctlMeterReady8.LastTestBechState = 0;
|
||||
this.ctlMeterReady8.Location = new System.Drawing.Point(3, 522);
|
||||
this.ctlMeterReady8.Metersize = Logic.ProductionToProductMapper.Cordonel.MeterSize.DN40;
|
||||
this.ctlMeterReady8.Metersize = Xylem.Common.Logic.ProductionOrderCore.OrderData.MeterSize.DN40;
|
||||
this.ctlMeterReady8.Name = "ctlMeterReady8";
|
||||
this.ctlMeterReady8.OrderNumber = null;
|
||||
this.ctlMeterReady8.RadioAdress = null;
|
||||
@@ -814,7 +814,7 @@
|
||||
this.ctlMeterReady7.CustomerSerialNr = null;
|
||||
this.ctlMeterReady7.LastTestBechState = 0;
|
||||
this.ctlMeterReady7.Location = new System.Drawing.Point(3, 466);
|
||||
this.ctlMeterReady7.Metersize = Logic.ProductionToProductMapper.Cordonel.MeterSize.DN40;
|
||||
this.ctlMeterReady7.Metersize = Xylem.Common.Logic.ProductionOrderCore.OrderData.MeterSize.DN40;
|
||||
this.ctlMeterReady7.Name = "ctlMeterReady7";
|
||||
this.ctlMeterReady7.OrderNumber = null;
|
||||
this.ctlMeterReady7.RadioAdress = null;
|
||||
@@ -828,7 +828,7 @@
|
||||
this.ctlMeterReady6.CustomerSerialNr = null;
|
||||
this.ctlMeterReady6.LastTestBechState = 0;
|
||||
this.ctlMeterReady6.Location = new System.Drawing.Point(3, 410);
|
||||
this.ctlMeterReady6.Metersize = Logic.ProductionToProductMapper.Cordonel.MeterSize.DN40;
|
||||
this.ctlMeterReady6.Metersize = Xylem.Common.Logic.ProductionOrderCore.OrderData.MeterSize.DN40;
|
||||
this.ctlMeterReady6.Name = "ctlMeterReady6";
|
||||
this.ctlMeterReady6.OrderNumber = null;
|
||||
this.ctlMeterReady6.RadioAdress = null;
|
||||
@@ -842,7 +842,7 @@
|
||||
this.ctlMeterReady5.CustomerSerialNr = null;
|
||||
this.ctlMeterReady5.LastTestBechState = 0;
|
||||
this.ctlMeterReady5.Location = new System.Drawing.Point(3, 354);
|
||||
this.ctlMeterReady5.Metersize = Logic.ProductionToProductMapper.Cordonel.MeterSize.DN40;
|
||||
this.ctlMeterReady5.Metersize = Xylem.Common.Logic.ProductionOrderCore.OrderData.MeterSize.DN40;
|
||||
this.ctlMeterReady5.Name = "ctlMeterReady5";
|
||||
this.ctlMeterReady5.OrderNumber = null;
|
||||
this.ctlMeterReady5.RadioAdress = null;
|
||||
@@ -856,7 +856,7 @@
|
||||
this.ctlMeterReady4.CustomerSerialNr = null;
|
||||
this.ctlMeterReady4.LastTestBechState = 0;
|
||||
this.ctlMeterReady4.Location = new System.Drawing.Point(3, 298);
|
||||
this.ctlMeterReady4.Metersize = Logic.ProductionToProductMapper.Cordonel.MeterSize.DN40;
|
||||
this.ctlMeterReady4.Metersize = Xylem.Common.Logic.ProductionOrderCore.OrderData.MeterSize.DN40;
|
||||
this.ctlMeterReady4.Name = "ctlMeterReady4";
|
||||
this.ctlMeterReady4.OrderNumber = null;
|
||||
this.ctlMeterReady4.RadioAdress = null;
|
||||
@@ -870,7 +870,7 @@
|
||||
this.ctlMeterReady3.CustomerSerialNr = null;
|
||||
this.ctlMeterReady3.LastTestBechState = 0;
|
||||
this.ctlMeterReady3.Location = new System.Drawing.Point(3, 242);
|
||||
this.ctlMeterReady3.Metersize = Logic.ProductionToProductMapper.Cordonel.MeterSize.DN40;
|
||||
this.ctlMeterReady3.Metersize = Xylem.Common.Logic.ProductionOrderCore.OrderData.MeterSize.DN40;
|
||||
this.ctlMeterReady3.Name = "ctlMeterReady3";
|
||||
this.ctlMeterReady3.OrderNumber = null;
|
||||
this.ctlMeterReady3.RadioAdress = null;
|
||||
@@ -884,7 +884,7 @@
|
||||
this.ctlMeterReady2.CustomerSerialNr = null;
|
||||
this.ctlMeterReady2.LastTestBechState = 0;
|
||||
this.ctlMeterReady2.Location = new System.Drawing.Point(3, 186);
|
||||
this.ctlMeterReady2.Metersize = Logic.ProductionToProductMapper.Cordonel.MeterSize.DN40;
|
||||
this.ctlMeterReady2.Metersize = Xylem.Common.Logic.ProductionOrderCore.OrderData.MeterSize.DN40;
|
||||
this.ctlMeterReady2.Name = "ctlMeterReady2";
|
||||
this.ctlMeterReady2.OrderNumber = null;
|
||||
this.ctlMeterReady2.RadioAdress = null;
|
||||
@@ -900,7 +900,7 @@
|
||||
this.ctlMeterReady1.CustomerSerialNr = null;
|
||||
this.ctlMeterReady1.LastTestBechState = 0;
|
||||
this.ctlMeterReady1.Location = new System.Drawing.Point(3, 130);
|
||||
this.ctlMeterReady1.Metersize = Logic.ProductionToProductMapper.Cordonel.MeterSize.DN40;
|
||||
this.ctlMeterReady1.Metersize = Xylem.Common.Logic.ProductionOrderCore.OrderData.MeterSize.DN40;
|
||||
this.ctlMeterReady1.Name = "ctlMeterReady1";
|
||||
this.ctlMeterReady1.OrderNumber = null;
|
||||
this.ctlMeterReady1.RadioAdress = null;
|
||||
|
||||
@@ -10,6 +10,7 @@ using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Logic.SoftwareAccessHelper;
|
||||
using XylemCommonUiLegacyGenCtl.DataPackage;
|
||||
using XylemCommonUiLegacyGenCtl.Enums;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Logic.ProductionToProductMapper.Cordonel;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
@@ -15,6 +14,7 @@ using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
|
||||
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Logic.SoftwareAccessHelper;
|
||||
using XylemCommonUiLegacyGenCtl.DataPackage;
|
||||
using XylemCommonUiLegacyGenCtl.Enums;
|
||||
|
||||
@@ -15,6 +15,7 @@ using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
|
||||
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
|
||||
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
|
||||
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
||||
using Xylem.Common.Logic.SoftwareAccessHelper;
|
||||
using XylemCommonUiLegacyGenCtl.DataPackage;
|
||||
using XylemCommonUiLegacyGenCtl.Enums;
|
||||
|
||||
Reference in New Issue
Block a user