From 3db0c6fa3cc925754692d75d441cd38fb80a4bc3 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Tue, 3 Nov 2020 15:50:45 +0200 Subject: Fixed issue with PPC export multiple jobs invalid characters. --- .../Tango.PPC.Jobs/ViewModels/JobsViewVM.cs | 2 +- .../Tango.PPC.Storage/ViewModels/MainViewVM.cs | 6 +----- .../ExtensionMethods/StringExtensions.cs | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+), 6 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs index a6ccad7de..64931cbe3 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs @@ -809,7 +809,7 @@ namespace Tango.PPC.Jobs.ViewModels { var jobFile = await job.ToJobFile(); - using (FileStream fs = new FileStream(Path.Combine(result.Path, jobFile.Name) + ExplorerFileDefinition.Job.Extension, FileMode.Create)) + using (FileStream fs = new FileStream(Path.Combine(result.Path, jobFile.Name.ToValidFileName()) + ExplorerFileDefinition.Job.Extension, FileMode.Create)) { jobFile.WriteTo(fs); } diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs index b9d59334c..9b22fcdb5 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs @@ -22,7 +22,6 @@ namespace Tango.PPC.Storage.ViewModels { private bool _allow_exit; private ExplorerFileItem _selectedItem; - private static char[] _invalidChars = System.IO.Path.GetInvalidFileNameChars(); private String _currentPath; public String CurrentPath @@ -238,10 +237,7 @@ namespace Tango.PPC.Storage.ViewModels if (text != null) { - foreach (var c in _invalidChars) - { - text = text.Replace(c.ToString(), ""); - } + text = text.ToValidFileName(); _fileName = text; RaisePropertyChanged(nameof(FileName)); diff --git a/Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs b/Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs index ef17f0279..97c8773d6 100644 --- a/Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs +++ b/Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs @@ -224,6 +224,28 @@ public static class StringExtensions ); } + /// + /// Removes any invalid file name characters from the string. + /// + /// The string. + /// + public static string ToValidFileName(this string str) + { + char[] _invalidChars = System.IO.Path.GetInvalidFileNameChars(); + + String validFileName = str; + + if (validFileName != null) + { + foreach (var c in _invalidChars) + { + validFileName = validFileName.Replace(c.ToString(), ""); + } + } + + return validFileName; + } + public static String ToStringOrEmpty(this String str) { return str != null ? str : String.Empty; -- cgit v1.3.1 From ffa02c4e2516383d45a47f704a6c5054f777ec90 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Tue, 3 Nov 2020 18:30:27 +0200 Subject: Change machine state to ready when disconnecting. --- Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs | 1 + 1 file changed, 1 insertion(+) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index 464e0713f..fb33bec09 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -1384,6 +1384,7 @@ namespace Tango.Integration.Operation if (Status == MachineStatuses.Upgrading) return; Status = MachineStatuses.Disconnected; + MachineStatus.State = MachineState.Ready; SessionLogger.EndSession(); -- cgit v1.3.1 From ee3f1aa159ebb326e7c7053501130afa06bf47d4 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Tue, 3 Nov 2020 19:37:52 +0200 Subject: Moved ArcHeadCleaningMotorSpeed to RML => Head Cleaning Parameters. Modified local data store schema to unique machine,collection,key. --- Software/DB/PPC/Tango.mdf | Bin 75497472 -> 75497472 bytes Software/DB/PPC/Tango_log.ldf | Bin 53673984 -> 53673984 bytes Software/DB/TCC/TCC.mdf | Bin 8388608 -> 8388608 bytes Software/DB/TCC/TCC_log.ldf | Bin 8388608 -> 8388608 bytes Software/DB/Tango.mdf | Bin 75497472 -> 75497472 bytes Software/DB/Tango_log.ldf | Bin 22675456 -> 22675456 bytes .../Messages/Printing/HeadCleaningParameters.proto | 1 + .../PMR/Messages/Printing/ProcessParameters.proto | 2 - .../Views/HeadCleaningParametersView.xaml | 3 + .../Tango.BL/DTO/ProcessParametersTableDTOBase.cs | 8 - Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs | 8 + .../Entities/ProcessParametersTableBase.cs | 42 ------ .../Visual_Studio/Tango.BL/Entities/RmlBase.cs | 38 +++++ .../DB/PROCESS_PARAMETERS_TABLES.cs | 1 - Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs | 1 + .../Tango.DAL.Remote/DB/RemoteADO.edmx | 6 +- .../Tango.DAL.Remote/DB/RemoteADO.edmx.diagram | 164 ++++++++++----------- .../Tango.Integration/Operation/MachineOperator.cs | 1 + .../Tango.PMR/Printing/HeadCleaningParameters.cs | 36 ++++- .../Tango.PMR/Printing/ProcessParameters.cs | 35 +---- 20 files changed, 172 insertions(+), 174 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/DB/PPC/Tango.mdf b/Software/DB/PPC/Tango.mdf index 5c2d6f294..86dccf095 100644 Binary files a/Software/DB/PPC/Tango.mdf and b/Software/DB/PPC/Tango.mdf differ diff --git a/Software/DB/PPC/Tango_log.ldf b/Software/DB/PPC/Tango_log.ldf index 7da1b17b5..1e81d8c77 100644 Binary files a/Software/DB/PPC/Tango_log.ldf and b/Software/DB/PPC/Tango_log.ldf differ diff --git a/Software/DB/TCC/TCC.mdf b/Software/DB/TCC/TCC.mdf index 6a002658b..67f699f61 100644 Binary files a/Software/DB/TCC/TCC.mdf and b/Software/DB/TCC/TCC.mdf differ diff --git a/Software/DB/TCC/TCC_log.ldf b/Software/DB/TCC/TCC_log.ldf index a4e235de4..390749bbf 100644 Binary files a/Software/DB/TCC/TCC_log.ldf and b/Software/DB/TCC/TCC_log.ldf differ diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf index 20a7f0234..cb06a99d3 100644 Binary files a/Software/DB/Tango.mdf and b/Software/DB/Tango.mdf differ diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf index 8f1f49ea0..453bfc95d 100644 Binary files a/Software/DB/Tango_log.ldf and b/Software/DB/Tango_log.ldf differ diff --git a/Software/PMR/Messages/Printing/HeadCleaningParameters.proto b/Software/PMR/Messages/Printing/HeadCleaningParameters.proto index ca5a20d74..b9ecda142 100644 --- a/Software/PMR/Messages/Printing/HeadCleaningParameters.proto +++ b/Software/PMR/Messages/Printing/HeadCleaningParameters.proto @@ -6,4 +6,5 @@ option java_package = "com.twine.tango.pmr.printing"; message HeadCleaningParameters { double CleanerFlow = 1; + double ArcHeadCleaningMotorSpeed = 2; } diff --git a/Software/PMR/Messages/Printing/ProcessParameters.proto b/Software/PMR/Messages/Printing/ProcessParameters.proto index bb274828b..0a483d9bb 100644 --- a/Software/PMR/Messages/Printing/ProcessParameters.proto +++ b/Software/PMR/Messages/Printing/ProcessParameters.proto @@ -78,6 +78,4 @@ message ProcessParameters double PressureBuildUp = 31; - double ArcHeadCleaningMotorSpeed = 32; - } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/HeadCleaningParametersView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/HeadCleaningParametersView.xaml index 72e377c34..aec12aa63 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/HeadCleaningParametersView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/HeadCleaningParametersView.xaml @@ -44,6 +44,9 @@ + + + diff --git a/Software/Visual_Studio/Tango.BL/DTO/ProcessParametersTableDTOBase.cs b/Software/Visual_Studio/Tango.BL/DTO/ProcessParametersTableDTOBase.cs index 2294ec874..f0699bc72 100644 --- a/Software/Visual_Studio/Tango.BL/DTO/ProcessParametersTableDTOBase.cs +++ b/Software/Visual_Studio/Tango.BL/DTO/ProcessParametersTableDTOBase.cs @@ -285,13 +285,5 @@ namespace Tango.BL.DTO get; set; } - /// - /// arc head cleaning motor speed - /// - public Double ArcHeadCleaningMotorSpeed - { - get; set; - } - } } diff --git a/Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs b/Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs index 51b069d54..6bb8e951d 100644 --- a/Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs +++ b/Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs @@ -365,5 +365,13 @@ namespace Tango.BL.DTO get; set; } + /// + /// arc head cleaning motor speed + /// + public Double ArcHeadCleaningMotorSpeed + { + get; set; + } + } } diff --git a/Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTableBase.cs b/Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTableBase.cs index 172b5f18f..498bafc85 100644 --- a/Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTableBase.cs +++ b/Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTableBase.cs @@ -91,8 +91,6 @@ namespace Tango.BL.Entities public event EventHandler PressureBuildUpChanged; - public event EventHandler ArcHeadCleaningMotorSpeedChanged; - public event EventHandler ProcessParametersTablesGroupChanged; protected String _name; @@ -1109,37 +1107,6 @@ namespace Tango.BL.Entities } } - protected Double _archeadcleaningmotorspeed; - - /// - /// Gets or sets the processparameterstablebase arc head cleaning motor speed. - /// - - [Column("ARC_HEAD_CLEANING_MOTOR_SPEED")] - - [StringFormat("0.0")] - - [PropertyIndex(30)] - - public Double ArcHeadCleaningMotorSpeed - { - get - { - return _archeadcleaningmotorspeed; - } - - set - { - if (_archeadcleaningmotorspeed != value) - { - _archeadcleaningmotorspeed = value; - - OnArcHeadCleaningMotorSpeedChanged(value); - - } - } - } - protected ProcessParametersTablesGroup _processparameterstablesgroup; /// @@ -1460,15 +1427,6 @@ namespace Tango.BL.Entities RaisePropertyChanged(nameof(PressureBuildUp)); } - /// - /// Called when the ArcHeadCleaningMotorSpeed has changed. - /// - protected virtual void OnArcHeadCleaningMotorSpeedChanged(Double archeadcleaningmotorspeed) - { - ArcHeadCleaningMotorSpeedChanged?.Invoke(this, archeadcleaningmotorspeed); - RaisePropertyChanged(nameof(ArcHeadCleaningMotorSpeed)); - } - /// /// Called when the ProcessParametersTablesGroup has changed. /// diff --git a/Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs b/Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs index 2d3162c95..8958884a2 100644 --- a/Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs +++ b/Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs @@ -99,6 +99,8 @@ namespace Tango.BL.Entities public event EventHandler CleanerFlowChanged; + public event EventHandler ArcHeadCleaningMotorSpeedChanged; + public event EventHandler> CatsChanged; public event EventHandler CctChanged; @@ -1281,6 +1283,33 @@ namespace Tango.BL.Entities } } + protected Double _archeadcleaningmotorspeed; + + /// + /// Gets or sets the rmlbase arc head cleaning motor speed. + /// + + [Column("ARC_HEAD_CLEANING_MOTOR_SPEED")] + + public Double ArcHeadCleaningMotorSpeed + { + get + { + return _archeadcleaningmotorspeed; + } + + set + { + if (_archeadcleaningmotorspeed != value) + { + _archeadcleaningmotorspeed = value; + + OnArcHeadCleaningMotorSpeedChanged(value); + + } + } + } + protected SynchronizedObservableCollection _cats; /// @@ -2004,6 +2033,15 @@ namespace Tango.BL.Entities RaisePropertyChanged(nameof(CleanerFlow)); } + /// + /// Called when the ArcHeadCleaningMotorSpeed has changed. + /// + protected virtual void OnArcHeadCleaningMotorSpeedChanged(Double archeadcleaningmotorspeed) + { + ArcHeadCleaningMotorSpeedChanged?.Invoke(this, archeadcleaningmotorspeed); + RaisePropertyChanged(nameof(ArcHeadCleaningMotorSpeed)); + } + /// /// Called when the Cats has changed. /// diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/PROCESS_PARAMETERS_TABLES.cs b/Software/Visual_Studio/Tango.DAL.Remote/DB/PROCESS_PARAMETERS_TABLES.cs index 13c1a65f6..5896f742e 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/PROCESS_PARAMETERS_TABLES.cs +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/PROCESS_PARAMETERS_TABLES.cs @@ -50,7 +50,6 @@ namespace Tango.DAL.Remote.DB public double L_BLOWER_FLOW { get; set; } public double L_BLOWER_TEMP { get; set; } public double PRESSURE_BUILD_UP { get; set; } - public double ARC_HEAD_CLEANING_MOTOR_SPEED { get; set; } public virtual PROCESS_PARAMETERS_TABLES_GROUPS PROCESS_PARAMETERS_TABLES_GROUPS { get; set; } } diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs b/Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs index 93648de50..af0077df7 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs @@ -72,6 +72,7 @@ namespace Tango.DAL.Remote.DB public int WINDER_D { get; set; } public bool BYPASS_ROCKERS { get; set; } public int CLEANER_FLOW { get; set; } + public double ARC_HEAD_CLEANING_MOTOR_SPEED { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] public virtual ICollection CATS { get; set; } diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx index 01417ab3e..3b471ca54 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx @@ -933,7 +933,6 @@ - @@ -1023,6 +1022,7 @@ + @@ -4423,7 +4423,6 @@ - @@ -4518,6 +4517,7 @@ + @@ -6973,7 +6973,6 @@ - @@ -7057,6 +7056,7 @@ + diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram index 44584e115..357b569f8 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram @@ -5,90 +5,90 @@ - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index fb33bec09..e22d1a156 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -2700,6 +2700,7 @@ namespace Tango.Integration.Operation //Head Cleaning Parameters ticket.HeadCleaningParameters = new HeadCleaningParameters(); ticket.HeadCleaningParameters.CleanerFlow = job.Rml.CleanerFlow; + ticket.HeadCleaningParameters.ArcHeadCleaningMotorSpeed = job.Rml.ArcHeadCleaningMotorSpeed; JobHandler handler = null; StorageFileHandler fileUploadHandler = null; diff --git a/Software/Visual_Studio/Tango.PMR/Printing/HeadCleaningParameters.cs b/Software/Visual_Studio/Tango.PMR/Printing/HeadCleaningParameters.cs index e086fdddf..1c6786540 100644 --- a/Software/Visual_Studio/Tango.PMR/Printing/HeadCleaningParameters.cs +++ b/Software/Visual_Studio/Tango.PMR/Printing/HeadCleaningParameters.cs @@ -23,13 +23,13 @@ namespace Tango.PMR.Printing { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChxIZWFkQ2xlYW5pbmdQYXJhbWV0ZXJzLnByb3RvEhJUYW5nby5QTVIuUHJp", - "bnRpbmciLQoWSGVhZENsZWFuaW5nUGFyYW1ldGVycxITCgtDbGVhbmVyRmxv", - "dxgBIAEoAUIeChxjb20udHdpbmUudGFuZ28ucG1yLnByaW50aW5nYgZwcm90", - "bzM=")); + "bnRpbmciUAoWSGVhZENsZWFuaW5nUGFyYW1ldGVycxITCgtDbGVhbmVyRmxv", + "dxgBIAEoARIhChlBcmNIZWFkQ2xlYW5pbmdNb3RvclNwZWVkGAIgASgBQh4K", + "HGNvbS50d2luZS50YW5nby5wbXIucHJpbnRpbmdiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Printing.HeadCleaningParameters), global::Tango.PMR.Printing.HeadCleaningParameters.Parser, new[]{ "CleanerFlow" }, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Printing.HeadCleaningParameters), global::Tango.PMR.Printing.HeadCleaningParameters.Parser, new[]{ "CleanerFlow", "ArcHeadCleaningMotorSpeed" }, null, null, null) })); } #endregion @@ -61,6 +61,7 @@ namespace Tango.PMR.Printing { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public HeadCleaningParameters(HeadCleaningParameters other) : this() { cleanerFlow_ = other.cleanerFlow_; + arcHeadCleaningMotorSpeed_ = other.arcHeadCleaningMotorSpeed_; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -79,6 +80,17 @@ namespace Tango.PMR.Printing { } } + /// Field number for the "ArcHeadCleaningMotorSpeed" field. + public const int ArcHeadCleaningMotorSpeedFieldNumber = 2; + private double arcHeadCleaningMotorSpeed_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public double ArcHeadCleaningMotorSpeed { + get { return arcHeadCleaningMotorSpeed_; } + set { + arcHeadCleaningMotorSpeed_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as HeadCleaningParameters); @@ -93,6 +105,7 @@ namespace Tango.PMR.Printing { return true; } if (CleanerFlow != other.CleanerFlow) return false; + if (ArcHeadCleaningMotorSpeed != other.ArcHeadCleaningMotorSpeed) return false; return true; } @@ -100,6 +113,7 @@ namespace Tango.PMR.Printing { public override int GetHashCode() { int hash = 1; if (CleanerFlow != 0D) hash ^= CleanerFlow.GetHashCode(); + if (ArcHeadCleaningMotorSpeed != 0D) hash ^= ArcHeadCleaningMotorSpeed.GetHashCode(); return hash; } @@ -114,6 +128,10 @@ namespace Tango.PMR.Printing { output.WriteRawTag(9); output.WriteDouble(CleanerFlow); } + if (ArcHeadCleaningMotorSpeed != 0D) { + output.WriteRawTag(17); + output.WriteDouble(ArcHeadCleaningMotorSpeed); + } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -122,6 +140,9 @@ namespace Tango.PMR.Printing { if (CleanerFlow != 0D) { size += 1 + 8; } + if (ArcHeadCleaningMotorSpeed != 0D) { + size += 1 + 8; + } return size; } @@ -133,6 +154,9 @@ namespace Tango.PMR.Printing { if (other.CleanerFlow != 0D) { CleanerFlow = other.CleanerFlow; } + if (other.ArcHeadCleaningMotorSpeed != 0D) { + ArcHeadCleaningMotorSpeed = other.ArcHeadCleaningMotorSpeed; + } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -147,6 +171,10 @@ namespace Tango.PMR.Printing { CleanerFlow = input.ReadDouble(); break; } + case 17: { + ArcHeadCleaningMotorSpeed = input.ReadDouble(); + break; + } } } } diff --git a/Software/Visual_Studio/Tango.PMR/Printing/ProcessParameters.cs b/Software/Visual_Studio/Tango.PMR/Printing/ProcessParameters.cs index 0f03cf4f0..b0c29288f 100644 --- a/Software/Visual_Studio/Tango.PMR/Printing/ProcessParameters.cs +++ b/Software/Visual_Studio/Tango.PMR/Printing/ProcessParameters.cs @@ -23,7 +23,7 @@ namespace Tango.PMR.Printing { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChdQcm9jZXNzUGFyYW1ldGVycy5wcm90bxISVGFuZ28uUE1SLlByaW50aW5n", - "IvUFChFQcm9jZXNzUGFyYW1ldGVycxITCgtEeWVpbmdTcGVlZBgBIAEoARIU", + "ItIFChFQcm9jZXNzUGFyYW1ldGVycxITCgtEeWVpbmdTcGVlZBgBIAEoARIU", "CgxNaW5JbmtVcHRha2UYAiABKAESFAoMTWF4SW5rVXB0YWtlGAMgASgBEhUK", "DUZlZWRlclRlbnNpb24YBCABKAESFQoNUHVsbGVyVGVuc2lvbhgFIAEoARIV", "Cg1XaW5kZXJUZW5zaW9uGAYgASgBEhEKCU1peGVyVGVtcBgHIAEoARIVCg1I", @@ -39,12 +39,11 @@ namespace Tango.PMR.Printing { "cBgZIAEoARIWCg5IZWFkWm9uZTEyVGVtcBgaIAEoARITCgtSQmxvd2VyRmxv", "dxgbIAEoARITCgtSQmxvd2VyVGVtcBgcIAEoARITCgtMQmxvd2VyRmxvdxgd", "IAEoARITCgtMQmxvd2VyVGVtcBgeIAEoARIXCg9QcmVzc3VyZUJ1aWxkVXAY", - "HyABKAESIQoZQXJjSGVhZENsZWFuaW5nTW90b3JTcGVlZBggIAEoAUIeChxj", - "b20udHdpbmUudGFuZ28ucG1yLnByaW50aW5nYgZwcm90bzM=")); + "HyABKAFCHgocY29tLnR3aW5lLnRhbmdvLnBtci5wcmludGluZ2IGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Printing.ProcessParameters), global::Tango.PMR.Printing.ProcessParameters.Parser, new[]{ "DyeingSpeed", "MinInkUptake", "MaxInkUptake", "FeederTension", "PullerTension", "WinderTension", "MixerTemp", "HeadZone1Temp", "HeadZone2Temp", "HeadZone3Temp", "HeadZone4Temp", "HeadZone5Temp", "HeadZone6Temp", "DryerAirFlow", "DryerZone1Temp", "DryerZone2Temp", "DryerZone3Temp", "DryerBufferLength", "HeadAirFlow", "TableIndex", "HeadZone7Temp", "HeadZone8Temp", "HeadZone9Temp", "HeadZone10Temp", "HeadZone11Temp", "HeadZone12Temp", "RBlowerFlow", "RBlowerTemp", "LBlowerFlow", "LBlowerTemp", "PressureBuildUp", "ArcHeadCleaningMotorSpeed" }, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Printing.ProcessParameters), global::Tango.PMR.Printing.ProcessParameters.Parser, new[]{ "DyeingSpeed", "MinInkUptake", "MaxInkUptake", "FeederTension", "PullerTension", "WinderTension", "MixerTemp", "HeadZone1Temp", "HeadZone2Temp", "HeadZone3Temp", "HeadZone4Temp", "HeadZone5Temp", "HeadZone6Temp", "DryerAirFlow", "DryerZone1Temp", "DryerZone2Temp", "DryerZone3Temp", "DryerBufferLength", "HeadAirFlow", "TableIndex", "HeadZone7Temp", "HeadZone8Temp", "HeadZone9Temp", "HeadZone10Temp", "HeadZone11Temp", "HeadZone12Temp", "RBlowerFlow", "RBlowerTemp", "LBlowerFlow", "LBlowerTemp", "PressureBuildUp" }, null, null, null) })); } #endregion @@ -106,7 +105,6 @@ namespace Tango.PMR.Printing { lBlowerFlow_ = other.lBlowerFlow_; lBlowerTemp_ = other.lBlowerTemp_; pressureBuildUp_ = other.pressureBuildUp_; - arcHeadCleaningMotorSpeed_ = other.arcHeadCleaningMotorSpeed_; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -455,17 +453,6 @@ namespace Tango.PMR.Printing { } } - /// Field number for the "ArcHeadCleaningMotorSpeed" field. - public const int ArcHeadCleaningMotorSpeedFieldNumber = 32; - private double arcHeadCleaningMotorSpeed_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public double ArcHeadCleaningMotorSpeed { - get { return arcHeadCleaningMotorSpeed_; } - set { - arcHeadCleaningMotorSpeed_ = value; - } - } - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as ProcessParameters); @@ -510,7 +497,6 @@ namespace Tango.PMR.Printing { if (LBlowerFlow != other.LBlowerFlow) return false; if (LBlowerTemp != other.LBlowerTemp) return false; if (PressureBuildUp != other.PressureBuildUp) return false; - if (ArcHeadCleaningMotorSpeed != other.ArcHeadCleaningMotorSpeed) return false; return true; } @@ -548,7 +534,6 @@ namespace Tango.PMR.Printing { if (LBlowerFlow != 0D) hash ^= LBlowerFlow.GetHashCode(); if (LBlowerTemp != 0D) hash ^= LBlowerTemp.GetHashCode(); if (PressureBuildUp != 0D) hash ^= PressureBuildUp.GetHashCode(); - if (ArcHeadCleaningMotorSpeed != 0D) hash ^= ArcHeadCleaningMotorSpeed.GetHashCode(); return hash; } @@ -683,10 +668,6 @@ namespace Tango.PMR.Printing { output.WriteRawTag(249, 1); output.WriteDouble(PressureBuildUp); } - if (ArcHeadCleaningMotorSpeed != 0D) { - output.WriteRawTag(129, 2); - output.WriteDouble(ArcHeadCleaningMotorSpeed); - } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -785,9 +766,6 @@ namespace Tango.PMR.Printing { if (PressureBuildUp != 0D) { size += 2 + 8; } - if (ArcHeadCleaningMotorSpeed != 0D) { - size += 2 + 8; - } return size; } @@ -889,9 +867,6 @@ namespace Tango.PMR.Printing { if (other.PressureBuildUp != 0D) { PressureBuildUp = other.PressureBuildUp; } - if (other.ArcHeadCleaningMotorSpeed != 0D) { - ArcHeadCleaningMotorSpeed = other.ArcHeadCleaningMotorSpeed; - } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1026,10 +1001,6 @@ namespace Tango.PMR.Printing { PressureBuildUp = input.ReadDouble(); break; } - case 257: { - ArcHeadCleaningMotorSpeed = input.ReadDouble(); - break; - } } } } -- cgit v1.3.1 From 71e6a2bcd4082c6c85eeeb6cd3048b12ed149500 Mon Sep 17 00:00:00 2001 From: Mirta Date: Wed, 4 Nov 2020 13:43:05 +0200 Subject: Low Volume threshold implementation on both single colors and gradients --- .../ColorLib/Tango.ColorLib_v4/ColorConverter.cpp | 283 ++++++++++++++++++--- .../ColorLib/Tango.ColorLib_v4/ColorConverter.h | 4 + .../Tango.ColorLib_v4/Utils/NumConversions.cpp | 18 ++ .../Tango.ColorLib_v4/Utils/NumConversions.h | 1 + 4 files changed, 267 insertions(+), 39 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp index 23be99668..23caef58a 100644 --- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp +++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp @@ -253,14 +253,6 @@ void Tango::ColorLib::ColorConverter::ProcessHiveNeighbors(ConversionInput *conv VectorXd NLInkOut(m_nInks); ConvertToNLInks(DoubleToVector(InkOut, m_nInks), NLInkOut); - //Limit inks based on m_maxNlpercm - //Inks are limited in their nonlinear form - //Output Volume is in % - /* LimitInks(NLInkOut, InkOutP); - NLInkPToVolume(DoubleToVector(InkOutP, m_nInks), Vol); - GamutRegion[i] = GetGamutRegion(Vol, m_ProcessRangesMaxP); - LimitLowVolume(Vol, GamutRegion[i], Vol); - NLcmtoPercentage(Vol, Vol); */ LimitNLInks2Volume(NLInkOut, GamutRegion[i], Vol); //m_A2BTransform->evalInkP2Lab(InkOut, Lab1P, GamutRegion[i]); @@ -1451,15 +1443,6 @@ size_t Tango::ColorLib::ColorConverter::Convert(uint8_t * input_buffer, size_t i // Right now calibration is in the [0-100] range, values exceeding [0-100] are not transformed ConvertToNLInks(InkOut, NLInkOut); - //Limit inks based on m_maxNlpercm - //Inks are limited in their nonlinear form - //Output Volume is in % - // double *InkOutP = new double[m_nInks]; - /* LimitInks(NLInkOut, InkOutP); - NLInkPToVolume(DoubleToVector(InkOutP, m_nInks), Volume); - GamutRegion = GetGamutRegion(Volume, m_ProcessRangesMaxP); - LimitLowVolume(Volume, GamutRegion, Volume); - NLcmtoPercentage(Volume, Volume);*/ LimitNLInks2Volume(NLInkOut, GamutRegion, Volume); //OutputCoordinates outputCoords = OUTPUT_COORDINATES__INIT; /* if (InkOutP != NULL) @@ -2684,20 +2667,9 @@ void Tango::ColorLib::ColorConverter::ConvertGradStoptoVolume(InputCoordinates* } VectorXd NLInkOut(m_nInks); VectorXd VolumeOut(m_nInks); -/* double *InkOutL = new double[m_nInks];*/ - ConvertToNLInks(InkOut, NLInkOut); -/* LimitInks(NLInkOut, InkOutL); // InkOutL in [nl/cm] - NLInkPToVolume(DoubleToVector(InkOutL, m_nInks), Volume); - GamutRegion = GetGamutRegion(Volume, m_ProcessRangesMaxP); - LimitLowVolume(Volume, GamutRegion, Volume); - NLcmtoPercentage(Volume, Volume);*/ - LimitNLInks2Volume(NLInkOut, GamutRegion, Volume); -/* if (InkOutL != NULL) - { - delete[] InkOutL; - InkOutL = NULL; - }*/ + ConvertToNLInks(InkOut, NLInkOut); + LimitNLInks2VolumeThr(NLInkOut, GamutRegion, Volume); return; } @@ -2943,6 +2915,11 @@ void Tango::ColorLib::ColorConverter::PrepareGradient(GradientConversionInput* c ColorSpace SubStopsCS = COLOR_SPACE__LAB; //double NormFactor = m_ProcessRangesMaxP[m_nProcessRanges - 1] / 100.0; + + //Low Volume Threshold will be applied at the end of the sequence + //This is to avoid smoothing to reduce the ink % below the LowVolume threshold + //In order to keep continuity the simple Low Volume threshold will be applied. + VectorXd VolumeStop(m_nInks); MatrixXd MatVolume(nTotalStops, m_nInks); for (int iS = 0; iS < nTotalStops; ++iS) @@ -2959,6 +2936,7 @@ void Tango::ColorLib::ColorConverter::PrepareGradient(GradientConversionInput* c //Smooth Volumes VectorXd VIn(nTotalStops); VectorXd VOut(nTotalStops); + int FilterWidth = 7; for (int iSep = 0; iSep < m_nInks; ++iSep) { @@ -2969,7 +2947,14 @@ void Tango::ColorLib::ColorConverter::PrepareGradient(GradientConversionInput* c outputStops[jS]->outputliquids[iSep]->volume = VOut(jS); } //Temp Output - + for (int i = 0; i < nTotalStops; ++i) + { + for (int j = 0; j < m_nInks; ++j) + VolumeStop(j) = outputStops[i]->outputliquids[j]->volume; + LimitLowVolumeP(VolumeStop, GamutRegion, VolumeStop); + for (int j = 0; j < m_nInks; ++j) + outputStops[i]->outputliquids[j]->volume = VolumeStop(j); + } for (int i = 0; i < nTotalStops; ++i) { fprintf(stdout, "%d\t%6.3f\t%6.3f\t%6.3f\t%6.3f\t%6.3f\t%6.3f\t%6.3f\t%6.3f\t%d\t%d\t%d\n", i, @@ -3154,6 +3139,39 @@ void Tango::ColorLib::ColorConverter::LimitLowVolume(VectorXd InVolume, int &Gam } } +void Tango::ColorLib::ColorConverter::LimitLowVolumeP(VectorXd InVolume, int &GamutRegion, VectorXd &OutVolume) +{ + int indGR = 0; + //Find Gamut Region + for (int i = 1; i < m_nProcessRanges; ++i) + { + if (GamutRegion == i) + indGR = i; + } + //Limit Volume based on Gamut Region + double sumVol = 0; + for (int i = 0; i < m_nInks; ++i) + { + if (InVolume(i) >= LowVolumeThreshold) + OutVolume(i) = InVolume(i); + else if (InVolume(i) < LowVolHalf) + OutVolume(i) = 0.0; + else + OutVolume(i) = LowVolumeThreshold; + sumVol += OutVolume(i); + } + //recalculate GamutRegion + if (indGR == 0) + return; + else + { + for (int i = 1; i < indGR + 1; ++i) + { + if ((sumVol > m_NormGamutRegionMaxLim[i - 1]) & (sumVol <= m_NormGamutRegionMaxLim[i])) + GamutRegion = i; + } + } +} int Tango::ColorLib::ColorConverter::GetGamutRegion(VectorXd Volume, double *GamutLimits) { double TotalVolume = 0.0; @@ -3230,11 +3248,7 @@ void Tango::ColorLib::ColorConverter::ProcessGradientStops(InputCoordinates **in C_RGB_XYZ_Lab Lab(LabOutV[0], LabOutV[1], LabOutV[2]); C_RGB_XYZ_Lab RGB(RGBOut); ConvertToNLInks(InkOut, NLInkOut); - /* LimitInks(NLInkOut, InkOutL); - NLInkPToVolume(DoubleToVector(InkOutL, m_nInks), Volume); - GamutRegion = GetGamutRegion(Volume, m_ProcessRangesMaxP); - LimitLowVolume(Volume, GamutRegion, Volume); - NLcmtoPercentage(Volume, Volume);*/ + LimitNLInks2Volume(NLInkOut, GamutRegion, Volume); //fill data //fill volume @@ -3312,10 +3326,29 @@ void Tango::ColorLib::ColorConverter::SetLowVolThr_nlcm() void Tango::ColorLib::ColorConverter::LimitNLInks2Volume(VectorXd NLInks, int &GamutRegion, VectorXd &Volume) { - VectorXd NLInkOut(m_nInks); + //VectorXd NLInkOut(m_nInks); + double *InkOutL = new double[m_nInks]; + //ConvertToNLInks(NLInks, NLInkOut); + LimitInks(NLInks, InkOutL); // InkOutL in [nl/cm] + NLInkPToVolume(DoubleToVector(InkOutL, m_nInks), Volume); + GamutRegion = GetGamutRegion(Volume, m_ProcessRangesMaxP); + //LimitLowVolume(Volume, GamutRegion, Volume); + GetClosestInk(Volume, GamutRegion, Volume); + //NLcmtoPercentage(Volume, Volume); + + if (InkOutL != NULL) + { + delete[]InkOutL; + InkOutL = NULL; + } +} + +void Tango::ColorLib::ColorConverter::LimitNLInks2VolumeThr(VectorXd NLInks, int &GamutRegion, VectorXd &Volume) +{ +// VectorXd NLInkOut(m_nInks); double *InkOutL = new double[m_nInks]; - ConvertToNLInks(NLInks, NLInkOut); - LimitInks(NLInkOut, InkOutL); // InkOutL in [nl/cm] +// ConvertToNLInks(NLInks, NLInkOut); + LimitInks(NLInks, InkOutL); // InkOutL in [nl/cm] NLInkPToVolume(DoubleToVector(InkOutL, m_nInks), Volume); GamutRegion = GetGamutRegion(Volume, m_ProcessRangesMaxP); LimitLowVolume(Volume, GamutRegion, Volume); @@ -3327,3 +3360,175 @@ void Tango::ColorLib::ColorConverter::LimitNLInks2Volume(VectorXd NLInks, int &G InkOutL = NULL; } } + +void Tango::ColorLib::ColorConverter::GetClosestInk(VectorXd Volume, int &GamutRegion, VectorXd &BestVolume) +{ + VectorXd LabOut(3); + NumConversions D2B; + double *diffVolume = new double[m_nInks]; + int *LVThrIndex = new int[m_nInks]; + int indCount = -1; + for (int i = 0; i < m_nInks; ++i) + { + if (Volume(i) > 1.e-05) + diffVolume[i] = std::abs(Volume(i) - std::max(Volume(i), m_LowVolThr_nlcm[GamutRegion])); + else + diffVolume[i] = 0; + if (diffVolume[i] > 1.0E-04) + { + indCount++; + LVThrIndex[indCount] = i; + } + } + + if (diffVolume != NULL) + { + delete[]diffVolume; + diffVolume = NULL; + } + + NLcmtoPercentage(Volume, Volume); + indCount++; + if (indCount > 0) + { + double LabTarget[3]; + ConvertVolumeToLabRel(Volume, LabOut, GamutRegion); + VectorToDouble(LabOut, LabTarget); + int pwr2LVThr = (int)pow(2, indCount); + double **VolumeComb = new double*[pwr2LVThr]; + for (int i = 0; i < pwr2LVThr; ++i) + { + VolumeComb[i] = new double[m_nInks]; + for (int j=0; jSymmetricaldECMC(LabOut, DoubleToVector(LabTarget,3), dE[i]); + if (dE[i] < mindE) + { + mindE = dE[i]; + indMindE = i; + BestVolume = DoubleToVector(VolumeComb[i], m_nInks); + } + } + if (binPerm != NULL) + { + for (int i = 0; i < pwr2LVThr; ++i) + delete[]binPerm[i]; + delete[]binPerm; + binPerm = NULL; + } + if (VolumeComb != NULL) + { + for (int i = 0; i < pwr2LVThr; ++i) + delete[]VolumeComb[i]; + delete[]VolumeComb; + VolumeComb = NULL; + } + if (dE != NULL) + { + delete[]dE; + dE = NULL; + } + } + else + BestVolume = Volume; +} + +void Tango::ColorLib::ColorConverter::ConvertVolumeToLabRel(VectorXd &Volume, VectorXd &LabOut, int GamutRegion) +{ + VectorXd NLInkP(m_nInks); + VectorXd InkOut((int)(m_nInks)); + //Convert to Nonlinear Inks + double SumVol_Ink = 0.0; + //Volume is in [nl/cm] + VolumeToNLInkP(Volume, NLInkP); + double *InkOutP = new double[m_nInks]; + double *LinInkP = new double[m_nInks]; + + //Limit inks based on m_maxNlpercm + //Inks are limited in their nonlinear form + + LimitInks(NLInkP, InkOutP); + NLInkPToVolume(DoubleToVector(InkOutP, m_nInks), Volume); + GamutRegion = GetGamutRegion(Volume, m_ProcessRangesMaxP); + NLcmtoPercentage(Volume, Volume); //Volume is back to percentage + VolumeToNLInkP(Volume, NLInkP); + VectorToDouble(NLInkP, InkOutP); + //Convert to RGB + //GamutRegion = 0; + //Convert to Lab + + double *LabOutP = new double[3]; + + for (int i = 0; i < m_nInks; ++i) + InkOutP[i] *= m_colortable->GetInverseNormFactor(); + + m_colortable->m_A2BTransform->evalInkP2Lab(InkOutP, LabOutP, GamutRegion); + //LabOutP is in Relative Colorimetric + ColorConvert CConvertD65(D65, D65); + double *LabOutFinal1 = new double[3]; + double *LabOutFinal = new double[3]; + + CConvertD65.ChangeWP(LabOutP, LabOutFinal1, m_whitepointXYZ_Strip, m_WP); //To Absolute + for (int i = 0; i < 3; ++i) + LabOutFinal[i] = LabOutFinal1[i]; + + LabOut = DoubleToVector(LabOutFinal, 3); + + if (InkOutP != NULL) + { + delete[]InkOutP; + InkOutP = NULL; + } + if (LinInkP != NULL) + { + delete[]LinInkP; + LinInkP = NULL; + } + if (LabOutP != NULL) + { + delete[] LabOutP; + LabOutP = NULL; + } + + if (LabOutFinal1 != NULL) + { + delete[] LabOutFinal1; + LabOutFinal1 = NULL; + } + if (LabOutFinal != NULL) + { + delete[] LabOutFinal; + LabOutFinal = NULL; + } + return; + +} \ No newline at end of file diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.h index af621a082..e4190e75e 100644 --- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.h +++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.h @@ -78,6 +78,7 @@ namespace Tango void ConvertVolumeToRGBDisplay(InputCoordinates *IC, int n_processRanges,int colorspace, VectorXd &InkOut, VectorXd &RGBOut, VectorXd &LabOut, int &GamutRegion); + void ConvertVolumeToLabRel(VectorXd &Volume, VectorXd &LabOut, int GamutRegion); size_t Tango::ColorLib::ColorConverter::Convert(uint8_t * input_buffer, size_t input_buffer_size, uint8_t *& output_buffer); size_t Tango::ColorLib::ColorConverter::GenerateGradient(uint8_t * input_buffer, size_t input_buffer_size, uint8_t *& output_buffer); void ConvertToNLInks(VectorXd InkIn, VectorXd &InkOut); @@ -160,7 +161,10 @@ namespace Tango VectorXd &InkOut, VectorXd &RGBOut, VectorXd &LabOut, int &GamutRegion, bool &InGamut, SURROUND sur, CAM02CS CS); void LimitLowVolume(VectorXd InVolume, int &GamutRegion, VectorXd &OutVolume); + void LimitLowVolumeP(VectorXd InVolume, int &GamutRegion, VectorXd &OutVolume); void LimitNLInks2Volume(VectorXd NLInks, int &GamutRegion, VectorXd &OutVolume); + void LimitNLInks2VolumeThr(VectorXd NLInks, int &GamutRegion, VectorXd &Volume); + void GetClosestInk(VectorXd Volume, int &GamutRegion, VectorXd &BestVolume); }; } } diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/Utils/NumConversions.cpp b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/Utils/NumConversions.cpp index 050ad0283..f541b370c 100644 --- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/Utils/NumConversions.cpp +++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/Utils/NumConversions.cpp @@ -65,3 +65,21 @@ void NumConversions::getchar(uint32_t num, char &tmpC) tmpC[i] = getChar[nlen - 1 - i]; }*/ } + +void NumConversions::DecToBinary(int DecNumber, int *&BinOut, int nsize) +{ + //Store in reverse order, meaning the way it comes out of the calculation + // array to store binary number + + // counter for binary array + int i = 0; + for (int i = 0; i < nsize; ++i) + BinOut[i] = 0; + while (DecNumber > 0 && i Date: Thu, 5 Nov 2020 19:33:06 +0200 Subject: Completed ThreadBreak/Loading Wizards !!! --- Software/PMR/Messages/Common/MessageType.proto | 2 + .../AttemptThreadJoggingRequest.proto | 9 + .../AttemptThreadJoggingResponse.proto | 9 + .../Converters/MachineEventToViewConverter.cs | 1 + .../EventsViews/ThreadBreakView.xaml | 26 +++ .../EventsViews/ThreadBreakView.xaml.cs | 49 +++++ .../Tango.PPC.Events/Tango.PPC.Events.csproj | 9 +- .../Images/thread_loading.png | Bin 0 -> 7209 bytes .../Tango.PPC.Maintenance.csproj | 5 +- .../ViewModels/MaintenanceViewVM.cs | 14 +- .../Views/MaintenanceView.xaml | 38 +++- .../Connection/DefaultMachineProvider.cs | 2 +- .../Controls/ImageGalleryControl.cs | 114 ++++++++++ .../Controls/ImageGalleryControl.xaml | 101 +++++++++ .../PPC/Tango.PPC.Common/Resources/Merged.xaml | 3 + .../PPC/Tango.PPC.Common/Tango.PPC.Common.csproj | 7 +- .../ThreadLoading/IThreadLoadingService.cs | 3 +- .../PPC/Tango.PPC.UI/Dialogs/ThreadBreakView.xaml | 225 +++++++++++++++++++ .../Tango.PPC.UI/Dialogs/ThreadBreakView.xaml.cs | 28 +++ .../PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs | 243 +++++++++++++++++++++ .../Tango.PPC.UI/Dialogs/ThreadLoadingView.xaml | 111 ++++++---- .../Dialogs/ThreadLoadingViewVM - Copy.cs | 176 --------------- .../Tango.PPC.UI/Dialogs/ThreadLoadingViewVM.cs | 20 +- .../Images/ThreadLoading/DryerClose/1.jpg | Bin 0 -> 57998 bytes .../Images/ThreadLoading/DryerClose/2.jpg | Bin 0 -> 58057 bytes .../Images/ThreadLoading/DryerClose/3.jpg | Bin 0 -> 59306 bytes .../Images/ThreadLoading/DryerClose/4.jpg | Bin 0 -> 55777 bytes .../Images/ThreadLoading/FeedingUnits/1.JPG | Bin 0 -> 50823 bytes .../Images/ThreadLoading/FeedingUnits/2.JPG | Bin 0 -> 36100 bytes .../Images/ThreadLoading/FeedingUnits/3.JPG | Bin 0 -> 52652 bytes .../Images/ThreadLoading/FeedingUnits/4.JPG | Bin 0 -> 103042 bytes .../Images/ThreadLoading/FeedingUnits/arc/1.jpg | Bin 0 -> 50823 bytes .../Images/ThreadLoading/FeedingUnits/arc/2.jpg | Bin 0 -> 36100 bytes .../Images/ThreadLoading/FeedingUnits/arc/3.jpg | Bin 0 -> 52652 bytes .../Images/ThreadLoading/FeedingUnits/arc/4.jpg | Bin 0 -> 103042 bytes .../Images/ThreadLoading/FeedingUnits/arc/5.jpg | Bin 0 -> 123123 bytes .../Images/ThreadLoading/GuidingUnits/1.JPG | Bin 0 -> 47345 bytes .../NewThread/ReadyForLoading/arc/1.jpg | Bin 0 -> 70545 bytes .../NewThread/ReadyForLoading/arc/2.JPG | Bin 0 -> 50823 bytes .../NewThread/ReadyForLoading/arc/3.JPG | Bin 0 -> 36100 bytes .../NewThread/ReadyForLoading/arc/4.JPG | Bin 0 -> 85970 bytes .../NewThread/ReadyForLoading/arc/5.JPG | Bin 0 -> 123123 bytes .../NewThread/ReadyForLoading/arc/6.JPG | Bin 0 -> 67829 bytes .../NewThread/ReadyForLoading/arc/7.jpg | Bin 0 -> 229536 bytes .../NewThread/TS1800_CloseUp_Feeder_P.jpg | Bin 0 -> 94899 bytes .../ThreadLoading/NewThread/machine_full.jpg | Bin 0 -> 67243 bytes .../Images/ThreadLoading/TheDryer/1.jpg | Bin 0 -> 39336 bytes .../Images/ThreadLoading/TheDryer/2.jpg | Bin 0 -> 36100 bytes .../Images/ThreadLoading/TheDryer/3.jpg | Bin 0 -> 45420 bytes .../Images/ThreadLoading/TheDryer/4.jpg | Bin 0 -> 46782 bytes .../Images/ThreadLoading/TheDryer/5.jpg | Bin 0 -> 49932 bytes .../PPC/Tango.PPC.UI/Tango.PPC.UI.csproj | 39 +++- .../ThreadLoading/DefaultThreadLoadingService.cs | 17 +- .../Tango.Emulations/Emulators/MachineEmulator.cs | 17 ++ .../Operation/IMachineOperator.cs | 6 + .../Tango.Integration/Operation/MachineOperator.cs | 12 + .../Visual_Studio/Tango.PMR/Common/MessageType.cs | 17 +- Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj | 4 +- .../ThreadLoading/AttemptThreadJoggingRequest.cs | 132 +++++++++++ .../ThreadLoading/AttemptThreadJoggingResponse.cs | 132 +++++++++++ 60 files changed, 1330 insertions(+), 241 deletions(-) create mode 100644 Software/PMR/Messages/ThreadLoading/AttemptThreadJoggingRequest.proto create mode 100644 Software/PMR/Messages/ThreadLoading/AttemptThreadJoggingResponse.proto create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/EventsViews/ThreadBreakView.xaml create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/EventsViews/ThreadBreakView.xaml.cs create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/thread_loading.png create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/ImageGalleryControl.cs create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/ImageGalleryControl.xaml create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakView.xaml create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakView.xaml.cs create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs delete mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingViewVM - Copy.cs create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/1.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/2.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/3.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/4.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/1.JPG create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/2.JPG create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/3.JPG create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/4.JPG create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/1.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/2.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/3.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/4.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/5.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/GuidingUnits/1.JPG create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/1.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/2.JPG create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/3.JPG create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/4.JPG create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/5.JPG create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/6.JPG create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/7.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/TS1800_CloseUp_Feeder_P.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/machine_full.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/1.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/2.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/3.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/4.jpg create mode 100644 Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/5.jpg create mode 100644 Software/Visual_Studio/Tango.PMR/ThreadLoading/AttemptThreadJoggingRequest.cs create mode 100644 Software/Visual_Studio/Tango.PMR/ThreadLoading/AttemptThreadJoggingResponse.cs (limited to 'Software/Visual_Studio') diff --git a/Software/PMR/Messages/Common/MessageType.proto b/Software/PMR/Messages/Common/MessageType.proto index e8ad94156..cca26d375 100644 --- a/Software/PMR/Messages/Common/MessageType.proto +++ b/Software/PMR/Messages/Common/MessageType.proto @@ -303,6 +303,8 @@ enum MessageType StopThreadLoadingResponse = 11005; TryThreadLoadingRequest = 11006; TryThreadLoadingResponse = 11007; + AttemptThreadJoggingRequest = 11008; + AttemptThreadJoggingResponse = 11009; //IFS StartInkFillingStatusRequest = 12000; diff --git a/Software/PMR/Messages/ThreadLoading/AttemptThreadJoggingRequest.proto b/Software/PMR/Messages/ThreadLoading/AttemptThreadJoggingRequest.proto new file mode 100644 index 000000000..2dbd8a089 --- /dev/null +++ b/Software/PMR/Messages/ThreadLoading/AttemptThreadJoggingRequest.proto @@ -0,0 +1,9 @@ +syntax = "proto3"; + +package Tango.PMR.ThreadLoading; +option java_package = "com.twine.tango.pmr.threadloading"; + +message AttemptThreadJoggingRequest +{ + +} \ No newline at end of file diff --git a/Software/PMR/Messages/ThreadLoading/AttemptThreadJoggingResponse.proto b/Software/PMR/Messages/ThreadLoading/AttemptThreadJoggingResponse.proto new file mode 100644 index 000000000..9b34f94ed --- /dev/null +++ b/Software/PMR/Messages/ThreadLoading/AttemptThreadJoggingResponse.proto @@ -0,0 +1,9 @@ +syntax = "proto3"; + +package Tango.PMR.ThreadLoading; +option java_package = "com.twine.tango.pmr.threadloading"; + +message AttemptThreadJoggingResponse +{ + +} \ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/Converters/MachineEventToViewConverter.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/Converters/MachineEventToViewConverter.cs index 47c9e0ddf..6981bd5d6 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/Converters/MachineEventToViewConverter.cs +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/Converters/MachineEventToViewConverter.cs @@ -22,6 +22,7 @@ namespace Tango.PPC.Events.Converters _eventViews.Add(EventTypes.JOB_ABORTED, typeof(JobEventView)); _eventViews.Add(EventTypes.JOB_COMPLETED, typeof(JobEventView)); _eventViews.Add(EventTypes.JOB_FAILED, typeof(JobEventView)); + _eventViews.Add(EventTypes.THREAD_BREAK, typeof(ThreadBreakView)); } public object Convert(object value, Type targetType, object parameter, CultureInfo culture) diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/EventsViews/ThreadBreakView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/EventsViews/ThreadBreakView.xaml new file mode 100644 index 000000000..71c4ced07 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/EventsViews/ThreadBreakView.xaml @@ -0,0 +1,26 @@ + + + + + + + + + + + + LOAD THREAD BREAK WIZARD + + + + + diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/EventsViews/ThreadBreakView.xaml.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/EventsViews/ThreadBreakView.xaml.cs new file mode 100644 index 000000000..7e8337514 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/EventsViews/ThreadBreakView.xaml.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using Tango.Core.DI; +using Tango.PPC.Common.ThreadLoading; + +namespace Tango.PPC.Events.EventsViews +{ + /// + /// Interaction logic for ThreadBreakView.xaml + /// + public partial class ThreadBreakView : UserControl + { + public ThreadBreakView() + { + InitializeComponent(); + + btnLoadThreadBreakWizard.Click += BtnLoadThreadBreakWizard_Click; + } + + private void BtnLoadThreadBreakWizard_Click(object sender, RoutedEventArgs e) + { + try + { + var threadLoadingService = TangoIOC.Default.GetInstance(); + + if (threadLoadingService != null) + { + threadLoadingService.StartThreadBreakWizard(); + } + } + catch (Exception ex) + { + Logging.LogManager.Default.Log(ex, "Error loading the thread break wizard."); + } + } + } +} diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/Tango.PPC.Events.csproj b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/Tango.PPC.Events.csproj index e2133e585..e8d4683ee 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/Tango.PPC.Events.csproj +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/Tango.PPC.Events.csproj @@ -76,6 +76,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + MSBuild:Compile Designer @@ -98,6 +102,9 @@ JobEventView.xaml + + ThreadBreakView.xaml + Code @@ -180,7 +187,7 @@ - + \ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/thread_loading.png b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/thread_loading.png new file mode 100644 index 000000000..5d536e7ae Binary files /dev/null and b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/thread_loading.png differ diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj index 94dc4e2cb..f334dac5b 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj @@ -300,10 +300,13 @@ + + + - + \ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs index 9de8313f8..c8cb4415d 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs @@ -106,6 +106,8 @@ namespace Tango.PPC.Maintenance.ViewModels public RelayCommand StartThreadLoadingCommand { get; set; } + public RelayCommand StartThreadBreakCommand { get; set; } + public MaintenanceViewVM() { Guides = new ObservableCollection(GuideHelper.CreateAllGuides()); @@ -119,7 +121,8 @@ namespace Tango.PPC.Maintenance.ViewModels OpenCloseRightLeadingWheelsCommand = new OpenCloseRightLeadingWheelsCommand(); ResetThreadLoadingCommand = new ResetThreadLoadingCommand(); HeadCleaningCommand = new RelayCommand(PerformHeadCleaning, () => MachineProvider.MachineOperator.CanPrint); - StartThreadLoadingCommand = new RelayCommand(StartThreadLoading, () => MachineProvider.MachineOperator.CanPrint); + StartThreadLoadingCommand = new RelayCommand(StartThreadLoadingWizard, () => MachineProvider.MachineOperator.CanPrint); + StartThreadBreakCommand = new RelayCommand(StartThreadBreakWizard, () => MachineProvider.MachineOperator.CanPrint); WasteStates = new List() { @@ -282,9 +285,14 @@ namespace Tango.PPC.Maintenance.ViewModels await NotificationProvider.ShowDialog(); } - private void StartThreadLoading() + private void StartThreadLoadingWizard() + { + ThreadLoadingService.StartThreadLoadingWizard(); + } + + private void StartThreadBreakWizard() { - ThreadLoadingService.StartThreadLoading(); + ThreadLoadingService.StartThreadBreakWizard(); } } } diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml index 188983b3f..a24d336ee 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml @@ -12,7 +12,7 @@ xmlns:localControls="clr-namespace:Tango.PPC.Maintenance.Controls" xmlns:local="clr-namespace:Tango.PPC.Maintenance.Views" mc:Ignorable="d" - d:DesignHeight="1380" d:DesignWidth="800" d:DataContext="{d:DesignInstance Type=vm:MaintenanceViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MaintenanceViewVM}"> + d:DesignHeight="1800" d:DesignWidth="800" d:DataContext="{d:DesignInstance Type=vm:MaintenanceViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MaintenanceViewVM}"> @@ -252,18 +252,46 @@ - RESET THREAD LOADING - RUN HEAD CLEANING - THREAD LOADING WIZARD - EXPORT SYSTEM LOGS + + + + + + Thread Loading + + + + + + THREAD BREAK WIZARD + + + This wizard will help you resolve thread breaking issues + + + + + THREAD LOADING WIZARD + + + This wizard will help you load a new thread in to the system + + + + RESET THREAD LOADING + + + + + diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Connection/DefaultMachineProvider.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Connection/DefaultMachineProvider.cs index 244d26f28..b2c752ca8 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Connection/DefaultMachineProvider.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Connection/DefaultMachineProvider.cs @@ -136,7 +136,7 @@ namespace Tango.PPC.Common.Connection { if (IsConnected) { - OnMachineConnected(); + OnMachineDisconnected(); } } } diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/ImageGalleryControl.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/ImageGalleryControl.cs new file mode 100644 index 000000000..ba2550e25 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/ImageGalleryControl.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Threading; +using Tango.SharedUI.Controls; + +namespace Tango.PPC.Common.Controls +{ + [ContentProperty(nameof(Elements))] + public class ImageGalleryControl : Control + { + private NavigationControl _navigationControl; + private DispatcherTimer _timer; + + public int SelectedIndex + { + get { return (int)GetValue(SelectedIndexProperty); } + set { SetValue(SelectedIndexProperty, value); } + } + public static readonly DependencyProperty SelectedIndexProperty = + DependencyProperty.Register("SelectedIndex", typeof(int), typeof(ImageGalleryControl), new PropertyMetadata(0)); + + public ObservableCollection Elements + { + get { return (ObservableCollection)GetValue(ElementsProperty); } + set { SetValue(ElementsProperty, value); } + } + public static readonly DependencyProperty ElementsProperty = + DependencyProperty.Register("Elements", typeof(ObservableCollection), typeof(ImageGalleryControl), new PropertyMetadata(null)); + + public Duration Duration + { + get { return (Duration)GetValue(DurationProperty); } + set { SetValue(DurationProperty, value); } + } + public static readonly DependencyProperty DurationProperty = + DependencyProperty.Register("Duration", typeof(Duration), typeof(ImageGalleryControl), new PropertyMetadata(new Duration(TimeSpan.FromSeconds(2)))); + + + static ImageGalleryControl() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(ImageGalleryControl), new FrameworkPropertyMetadata(typeof(ImageGalleryControl))); + } + + public ImageGalleryControl() + { + Elements = new ObservableCollection(); + Loaded += ImageGalleryControl_Loaded; + + _timer = new DispatcherTimer(); + _timer.Tick += _timer_Tick; + } + + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + + _navigationControl = GetTemplateChild("navigationControl") as NavigationControl; + } + + private void ImageGalleryControl_Loaded(object sender, RoutedEventArgs e) + { + if (_navigationControl != null) + { + _navigationControl.Elements = Elements; + + _timer.Interval = Duration.TimeSpan; + + if (!DesignerProperties.GetIsInDesignMode(new DependencyObject())) + { + _timer.Start(); + } + } + } + + private void _timer_Tick(object sender, EventArgs e) + { + if (SelectedIndex < Elements.Count - 1) + { + SelectedIndex++; + } + else + { + SelectedIndex = 0; + } + } + + protected override void OnPreviewMouseDown(MouseButtonEventArgs e) + { + base.OnPreviewMouseDown(e); + _timer.Stop(); + } + + protected override void OnPreviewMouseUp(MouseButtonEventArgs e) + { + base.OnPreviewMouseUp(e); + _timer.Start(); + } + } +} diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/ImageGalleryControl.xaml b/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/ImageGalleryControl.xaml new file mode 100644 index 000000000..f3b45d5b8 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/ImageGalleryControl.xaml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Merged.xaml b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Merged.xaml index 806a94bb0..374f5b51b 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Merged.xaml +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Merged.xaml @@ -21,6 +21,9 @@ + + + diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj index 0a6e57f5d..4cb3b42dc 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj @@ -146,6 +146,7 @@ + TwineCatalogControl.xaml @@ -280,6 +281,10 @@ MSBuild:Compile Designer + + Designer + MSBuild:Compile + MSBuild:Compile Designer @@ -511,7 +516,7 @@ - + \ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/ThreadLoading/IThreadLoadingService.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/ThreadLoading/IThreadLoadingService.cs index ac878ed07..0394a17c2 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/ThreadLoading/IThreadLoadingService.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/ThreadLoading/IThreadLoadingService.cs @@ -8,6 +8,7 @@ namespace Tango.PPC.Common.ThreadLoading { public interface IThreadLoadingService { - void StartThreadLoading(); + void StartThreadLoadingWizard(); + void StartThreadBreakWizard(); } } diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakView.xaml new file mode 100644 index 000000000..6c64520a4 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakView.xaml @@ -0,0 +1,225 @@ + + + + + + Thread Break Wizard + + + + + + + + + + Back + + + + + + + + + + + + Found But Can't Fix + Found and Fixed + Can't Find It + + + + Please check guiding units on both sides of the system and fix/tie the thread if possible. + + + + + + + + + + + + + + Found and Fixed + Can't Fix + + + if the thread is out of is route or tangle on one of the components you can go to the maintenance screen and open the component to solve the problem + + + + + Open the covers and check the feeder and puller and fix/tie if possible. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed Successfully + Can't Remove + + + + + HOT SURFACE! + + + Recommended to cool down and/or to wear safety gloves + + + + + + Open the dryer, cut the thread and remove any residue. + + + + + + + + + + + + + + + + + + + Open The Thread Loading Wizard + + + You will be able to open the thread loading wizard once the dryer door is closed + + + + + Close the dryer door + + + + + + + + + + + + + + + + + + Close + + + + + Please Contact Twine Customer Care + + + + + support@twine-s.com + + + + + + + + + + + + Verifying thread movement + + + + + working... + + + + + + + + + + + Close + + + + + Issue Resolved + + + + + + + + + + + + + + + + diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakView.xaml.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakView.xaml.cs new file mode 100644 index 000000000..c105a9a15 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace Tango.PPC.UI.Dialogs +{ + /// + /// Interaction logic for ThreadBreakWizard.xaml + /// + public partial class ThreadBreakView : UserControl + { + public ThreadBreakView() + { + InitializeComponent(); + } + } +} diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs new file mode 100644 index 000000000..131f976c1 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs @@ -0,0 +1,243 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Core.Commands; +using Tango.Core.DI; +using Tango.Logging; +using Tango.PPC.Common.Connection; +using Tango.PPC.Common.Notifications; +using Tango.SharedUI; + +namespace Tango.PPC.UI.Dialogs +{ + public class ThreadBreakViewVM : DialogViewVM + { + public enum ThreadBreakWizardResult + { + None, + StartThreadLoading + } + + public enum WizardStage + { + Welcome, + GuidingUnits, + FeedingUnits, + Jogging, + TheDryer, + DryerClose, + Fixed, + ContactSupport, + } + + [TangoInject] + private IMachineProvider MachineProvider { get; set; } + + [TangoInject] + private INotificationProvider NotificationProvider { get; set; } + + public ThreadBreakWizardResult Result { get; set; } + + private WizardStage _stage; + public WizardStage Stage + { + get { return _stage; } + set { _stage = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } + } + + private bool _isArcHead; + public bool IsArcHead + { + get { return _isArcHead; } + set { _isArcHead = value; RaisePropertyChangedAuto(); } + } + + public RelayCommand BackCommand { get; set; } + + //Guiding Units + public RelayCommand GuidingUnitsFoundCantFixCommand { get; set; } + public RelayCommand GuidingUnitsCantFindItCommand { get; set; } + public RelayCommand GuidingUnitsFoundAndFixedCommand { get; set; } + + //Feeding Units + public RelayCommand FeedingUnitsCantFixCommand { get; set; } + public RelayCommand FeedingUnitsFoundAndFixedCommand { get; set; } + + //The Dryer + public RelayCommand TheDryerCantRemoveCommand { get; set; } + public RelayCommand TheDryerRemovedSuccessfullyCommand { get; set; } + + //Dryer Close + public RelayCommand OpenThreadLoadingWizardCommand { get; set; } + + public ThreadBreakViewVM() + { + CanClose = true; + TangoIOC.Default.Inject(this); + + MachineProvider.MachineOperator.MachineEventsStateProvider.EventsChanged += MachineEventsStateProvider_EventsChanged; + MachineProvider.MachineDisconnected += MachineProvider_MachineDisconnected; + + IsArcHead = MachineProvider.Machine.MachineHeadType == BL.Enumerations.HeadTypes.Arc; + + BackCommand = new RelayCommand(GoBack, CanGoBack); + + //Guiding Units Commands + GuidingUnitsFoundCantFixCommand = new RelayCommand(GuidingUnitsFoundCantFix); + GuidingUnitsCantFindItCommand = new RelayCommand(GuidingUnitsCantFindIt); + GuidingUnitsFoundAndFixedCommand = new RelayCommand(GuidingUnitsFoundAndFixed); + + //Feeding Units Commands + FeedingUnitsCantFixCommand = new RelayCommand(FeedingUnitsCantFix); + FeedingUnitsFoundAndFixedCommand = new RelayCommand(FeedingUnitsFoundAndFixed); + + //The Dryer Commands + TheDryerRemovedSuccessfullyCommand = new RelayCommand(TheDryerRemovedSuccessfully); + TheDryerCantRemoveCommand = new RelayCommand(TheDryerCantRemove); + + OpenThreadLoadingWizardCommand = new RelayCommand(OpenThreadLoadingWizard, () => !MachineProvider.MachineOperator.MachineEventsStateProvider.Events.Any(x => x.Type == BL.Enumerations.EventTypes.DRYER_DOOR_OPEN)); + } + + private void MachineProvider_MachineDisconnected(object sender, EventArgs e) + { + InvokeUI(() => + { + Cancel(); + }); + } + + private void MachineEventsStateProvider_EventsChanged(object sender, IEnumerable e) + { + InvalidateRelayCommands(); + } + + #region Back + + private bool CanGoBack() + { + return Stage != WizardStage.GuidingUnits && + Stage != WizardStage.Jogging && + Stage != WizardStage.Fixed; + } + + private void GoBack() + { + switch (Stage) + { + case WizardStage.FeedingUnits: + Stage = WizardStage.GuidingUnits; + break; + case WizardStage.TheDryer: + Stage = WizardStage.GuidingUnits; + break; + case WizardStage.ContactSupport: + Stage = WizardStage.TheDryer; + break; + case WizardStage.DryerClose: + Stage = WizardStage.TheDryer; + break; + } + } + + #endregion + + #region Guiding Units Commands + + private async void GuidingUnitsFoundAndFixed() + { + Stage = WizardStage.Jogging; + + try + { + await MachineProvider.MachineOperator.AttemptThreadJogging(); + Stage = WizardStage.Fixed; + } + catch (Exception ex) + { + LogManager.Log(ex, LogCategory.Warning, "Error occurred while attempting to perform thread jogging."); + Stage = WizardStage.FeedingUnits; + } + } + + private void GuidingUnitsCantFindIt() + { + Stage = WizardStage.FeedingUnits; + } + + private void GuidingUnitsFoundCantFix() + { + Stage = WizardStage.TheDryer; + } + + #endregion + + #region Feeding Units Commands + + private void FeedingUnitsCantFix() + { + Stage = WizardStage.TheDryer; + } + + private async void FeedingUnitsFoundAndFixed() + { + Stage = WizardStage.Jogging; + + try + { + await MachineProvider.MachineOperator.AttemptThreadJogging(); + Stage = WizardStage.Fixed; + } + catch (Exception ex) + { + LogManager.Log(ex, LogCategory.Warning, "Error occurred while attempting to perform thread jogging."); + Stage = WizardStage.TheDryer; + } + } + + #endregion + + #region The Dryer Commands + + private void TheDryerCantRemove() + { + Stage = WizardStage.ContactSupport; + } + + private void TheDryerRemovedSuccessfully() + { + Stage = WizardStage.DryerClose; + } + + #endregion + + #region Dryer Close Commands + + private void OpenThreadLoadingWizard() + { + Result = ThreadBreakWizardResult.StartThreadLoading; + Accept(); + } + + #endregion + + protected override void Accept() + { + base.Accept(); + CleanUp(); + } + + protected override void Cancel() + { + base.Cancel(); + CleanUp(); + } + + private void CleanUp() + { + MachineProvider.MachineOperator.MachineEventsStateProvider.EventsChanged -= MachineEventsStateProvider_EventsChanged; + MachineProvider.MachineDisconnected -= MachineProvider_MachineDisconnected; + } + } +} diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingView.xaml index a88d7a598..3d37c81bd 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingView.xaml +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingView.xaml @@ -4,6 +4,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:touch="clr-namespace:Tango.Touch.Controls;assembly=Tango.Touch" + xmlns:commonControls="clr-namespace:Tango.PPC.Common.Controls;assembly=Tango.PPC.Common" xmlns:controls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI" xmlns:local="clr-namespace:Tango.PPC.UI.Dialogs" mc:Ignorable="d" @@ -17,123 +18,153 @@ + - - CLOSE - CONTINUE + + Continue Welcome to the automatic thread loading wizard. - - - Please ensure there are no thread residue in the system and press 'continue'. - + + + + Please ensure there are no thread residue in the system and press + continue + + - + + + - - CLOSE - CONTINUE + + Continue - + The system is now preparing... - + - + + - - CLOSE - CONTINUE + + Continue - Please select the thread type you are going to load and press 'continue'. + Please select the thread type you are going to load and press + continue - + + + + + + + + + + + + + + + + + + + + - - CLOSE - CONTINUE + + Continue The system is now loading the thread... - + - + + + + - - CLOSE + + Close - Thread loading completed successfully! + - + + - - CLOSE - RETRY + + Close + Retry - Something went wrong - + + - + + - - CLOSE - RETRY + + Close + Retry - Something went wrong - + + - + + + diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingViewVM - Copy.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingViewVM - Copy.cs deleted file mode 100644 index 95fb77e48..000000000 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingViewVM - Copy.cs +++ /dev/null @@ -1,176 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.BL.Entities; -using Tango.Core.Commands; -using Tango.Integration.Operation; -using Tango.PMR.ThreadLoading; -using Tango.PPC.Common.Connection; -using Tango.SharedUI; - -namespace Tango.PPC.UI.Dialogs -{ - public class ThreadLoadingViewVM : DialogViewVM - { - public class ThreadLoadingResult - { - public bool IsCompleted { get; set; } - public Exception FailedException { get; set; } - } - - private ThreadLoadingConfirmationRequiredEventArgs _confirmationArgs; - - public ThreadLoadingResult Result { get; set; } - - public IMachineProvider MachineProvider { get; set; } - - private StartThreadLoadingResponse _status; - public StartThreadLoadingResponse Status - { - get { return _status; } - set { _status = value; RaisePropertyChangedAuto(); } - } - - private bool _isFinalizing; - public bool IsFinalizing - { - get { return _isFinalizing; } - set { _isFinalizing = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } - } - - private bool _isPreparing; - public bool IsPreparing - { - get { return _isPreparing; } - set { _isPreparing = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } - } - - public List Rmls { get; set; } - - private Rml _selectedRml; - public Rml SelectedRml - { - get { return _selectedRml; } - set { _selectedRml = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } - } - - public RelayCommand ContinueCommand { get; set; } - - public ThreadLoadingViewVM(IMachineProvider machineProvider) - { - CanClose = false; - IsPreparing = true; - ContinueCommand = new RelayCommand(ContinueThreadLoading, () => !IsFinalizing && SelectedRml != null); - MachineProvider = machineProvider; - MachineProvider.MachineOperator.ThreadLoadingStatusChanged += MachineOperator_ThreadLoadingStatusChanged; - MachineProvider.MachineOperator.ThreadLoadingCompleted += MachineOperator_ThreadLoadingCompleted; - MachineProvider.MachineOperator.ThreadLoadingFailed += MachineOperator_ThreadLoadingFailed; - MachineProvider.MachineOperator.ThreadLoadingConfirmationRequired += MachineOperator_ThreadLoadingConfirmationRequired; - } - - public ThreadLoadingViewVM(IMachineProvider machineProvider, ThreadLoadingConfirmationRequiredEventArgs confirmationArgs) : this(machineProvider) - { - _confirmationArgs = confirmationArgs; - IsPreparing = false; - } - - private void MachineOperator_ThreadLoadingConfirmationRequired(object sender, ThreadLoadingConfirmationRequiredEventArgs e) - { - _confirmationArgs = e; - IsPreparing = false; - } - - private async void ContinueThreadLoading() - { - IsFinalizing = true; - - try - { - await Task.Factory.StartNew(() => { _confirmationArgs.Confirm(SelectedRml.GetActiveProcessGroup().ProcessParametersTables.FirstOrDefault()); }); - } - catch (Exception ex) - { - Result = new ThreadLoadingResult() - { - FailedException = ex, - }; - - IsFinalizing = false; - - if (IsVisible) - { - InvokeUI(() => - { - Accept(); - }); - } - } - } - - private void MachineOperator_ThreadLoadingCompleted(object sender, StartThreadLoadingResponse e) - { - Result = new ThreadLoadingResult() - { - IsCompleted = true - }; - - if (IsVisible) - { - InvokeUI(() => - { - Accept(); - }); - } - } - - private void MachineOperator_ThreadLoadingFailed(object sender, StartThreadLoadingResponse e) - { - Result = new ThreadLoadingResult() - { - FailedException = new Exception(e.ErrorReason), - }; - - if (IsVisible) - { - InvokeUI(() => - { - Accept(); - }); - } - } - - private void MachineOperator_ThreadLoadingStatusChanged(object sender, StartThreadLoadingResponse e) - { - Status = e; - - if (Status.State == ThreadLoadingState.Finalizing) - { - IsFinalizing = true; - } - } - - protected override void Cancel() - { - IsFinalizing = false; - ClearEvents(); - base.Cancel(); - } - - protected override void Accept() - { - IsFinalizing = false; - ClearEvents(); - base.Accept(); - } - - private void ClearEvents() - { - MachineProvider.MachineOperator.ThreadLoadingStatusChanged -= MachineOperator_ThreadLoadingStatusChanged; - MachineProvider.MachineOperator.ThreadLoadingCompleted -= MachineOperator_ThreadLoadingCompleted; - MachineProvider.MachineOperator.ThreadLoadingFailed -= MachineOperator_ThreadLoadingFailed; - MachineProvider.MachineOperator.ThreadLoadingConfirmationRequired -= MachineOperator_ThreadLoadingConfirmationRequired; - } - } -} diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingViewVM.cs index 75354caf2..bb503e718 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingViewVM.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingViewVM.cs @@ -67,6 +67,13 @@ namespace Tango.PPC.UI.Dialogs set { _stage = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } } + private bool _isArcHead; + public bool IsArcHead + { + get { return _isArcHead; } + set { _isArcHead = value; RaisePropertyChangedAuto(); } + } + private String _error; public String Error { @@ -74,7 +81,6 @@ namespace Tango.PPC.UI.Dialogs set { _error = value; RaisePropertyChangedAuto(); } } - public RelayCommand ContinueCommand { get; set; } public RelayCommand AbortCommand { get; set; } @@ -86,6 +92,9 @@ namespace Tango.PPC.UI.Dialogs _settings = SettingsManager.Default.GetOrCreate(); MachineProvider.MachineOperator.ThreadLoadingStatusChanged += MachineOperator_ThreadLoadingStatusChanged; + MachineProvider.MachineDisconnected += MachineProvider_MachineDisconnected; + + IsArcHead = MachineProvider.Machine.MachineHeadType == BL.Enumerations.HeadTypes.Arc; ContinueCommand = new RelayCommand(Continue, CanContinue); AbortCommand = new RelayCommand(Abort); @@ -93,6 +102,14 @@ namespace Tango.PPC.UI.Dialogs AdaptToState(userInvoked); } + private void MachineProvider_MachineDisconnected(object sender, EventArgs e) + { + InvokeUI(() => + { + Cancel(); + }); + } + private void AdaptToState(bool userInvoked = false) { var status = MachineProvider.MachineOperator.ThreadLoadingStatus; @@ -258,6 +275,7 @@ namespace Tango.PPC.UI.Dialogs private void CleanUp() { MachineProvider.MachineOperator.ThreadLoadingStatusChanged -= MachineOperator_ThreadLoadingStatusChanged; + MachineProvider.MachineDisconnected -= MachineProvider_MachineDisconnected; if (SelectedRml != null) { diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/1.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/1.jpg new file mode 100644 index 000000000..3b2f58620 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/1.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/2.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/2.jpg new file mode 100644 index 000000000..a2f5ae568 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/2.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/3.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/3.jpg new file mode 100644 index 000000000..6069e9c29 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/3.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/4.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/4.jpg new file mode 100644 index 000000000..7588d68e2 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/4.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/1.JPG b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/1.JPG new file mode 100644 index 000000000..68921f1ca Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/1.JPG differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/2.JPG b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/2.JPG new file mode 100644 index 000000000..a8b5d9ba4 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/2.JPG differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/3.JPG b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/3.JPG new file mode 100644 index 000000000..407f1eae6 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/3.JPG differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/4.JPG b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/4.JPG new file mode 100644 index 000000000..575066c23 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/4.JPG differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/1.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/1.jpg new file mode 100644 index 000000000..68921f1ca Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/1.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/2.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/2.jpg new file mode 100644 index 000000000..a8b5d9ba4 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/2.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/3.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/3.jpg new file mode 100644 index 000000000..407f1eae6 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/3.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/4.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/4.jpg new file mode 100644 index 000000000..575066c23 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/4.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/5.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/5.jpg new file mode 100644 index 000000000..fa2c8312d Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/5.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/GuidingUnits/1.JPG b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/GuidingUnits/1.JPG new file mode 100644 index 000000000..8d58771d4 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/GuidingUnits/1.JPG differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/1.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/1.jpg new file mode 100644 index 000000000..81aa412ec Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/1.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/2.JPG b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/2.JPG new file mode 100644 index 000000000..68921f1ca Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/2.JPG differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/3.JPG b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/3.JPG new file mode 100644 index 000000000..a8b5d9ba4 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/3.JPG differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/4.JPG b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/4.JPG new file mode 100644 index 000000000..9f200198d Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/4.JPG differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/5.JPG b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/5.JPG new file mode 100644 index 000000000..fa2c8312d Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/5.JPG differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/6.JPG b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/6.JPG new file mode 100644 index 000000000..7956b0695 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/6.JPG differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/7.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/7.jpg new file mode 100644 index 000000000..4ca8677cd Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/7.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/TS1800_CloseUp_Feeder_P.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/TS1800_CloseUp_Feeder_P.jpg new file mode 100644 index 000000000..f41898bc1 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/TS1800_CloseUp_Feeder_P.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/machine_full.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/machine_full.jpg new file mode 100644 index 000000000..212edc547 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/machine_full.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/1.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/1.jpg new file mode 100644 index 000000000..d8da5726d Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/1.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/2.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/2.jpg new file mode 100644 index 000000000..a8b5d9ba4 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/2.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/3.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/3.jpg new file mode 100644 index 000000000..86dd6f397 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/3.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/4.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/4.jpg new file mode 100644 index 000000000..9d36f3642 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/4.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/5.jpg b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/5.jpg new file mode 100644 index 000000000..6ac67aa46 Binary files /dev/null and b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/5.jpg differ diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj b/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj index 4e9c8af59..7f520ecc5 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj @@ -144,6 +144,10 @@ SafetyLevelOperationsConfirmationView.xaml + + ThreadBreakView.xaml + + ThreadLoadingView.xaml @@ -160,7 +164,6 @@ - FirmwareUpgradeFromFileView.xaml @@ -273,6 +276,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + MSBuild:Compile Designer @@ -454,6 +461,34 @@ PreserveNewest + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -726,7 +761,7 @@ if $(ConfigurationName) == Debug copy /Y "$(TargetDir)Packages" "$(TargetDir)" - + \ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ThreadLoading/DefaultThreadLoadingService.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ThreadLoading/DefaultThreadLoadingService.cs index 5656300a7..a6479da63 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ThreadLoading/DefaultThreadLoadingService.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ThreadLoading/DefaultThreadLoadingService.cs @@ -40,11 +40,26 @@ namespace Tango.PPC.UI.ThreadLoading } } - public async void StartThreadLoading() + public async void StartThreadLoadingWizard() { _dialogShown = true; await _notificationsProvider.ShowDialog(new ThreadLoadingViewVM(true)); _dialogShown = false; } + + public async void StartThreadBreakWizard() + { + if (!_dialogShown) + { + _dialogShown = true; + var vm = await _notificationsProvider.ShowDialog(); + _dialogShown = false; + + if (vm.Result == ThreadBreakViewVM.ThreadBreakWizardResult.StartThreadLoading) + { + StartThreadLoadingWizard(); + } + } + } } } diff --git a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs index 6b49ca4eb..1d420e33f 100644 --- a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs +++ b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs @@ -470,6 +470,9 @@ namespace Tango.Emulations.Emulators case MessageType.StandByRequest: HandleStandByRequest(MessageFactory.ParseTangoMessageFromContainer(container)); break; + case MessageType.AttemptThreadJoggingRequest: + HandleAttemptThreadJoggingRequest(MessageFactory.ParseTangoMessageFromContainer(container)); + break; } } @@ -1719,6 +1722,20 @@ namespace Tango.Emulations.Emulators await Transporter.SendResponse(new StandByResponse(), request.Container.Token); } + private async void HandleAttemptThreadJoggingRequest(TangoMessage request) + { + await Task.Delay(3000); + + if (_rnd.Next(0, 100) > 50) + { + await Transporter.SendResponse(new AttemptThreadJoggingResponse(), request.Container.Token); + } + else + { + await Transporter.SendResponse(new AttemptThreadJoggingResponse(), request.Container.Token, new TransportResponseConfig() { ErrorCode = ErrorCode.GeneralError }); + } + } + #endregion #region Public Methods diff --git a/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs index 8fd4a6438..232446cb6 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs @@ -544,5 +544,11 @@ namespace Tango.Integration.Operation /// The process parameters. /// Task ContinueThreadLoading(ProcessParametersTable processParameters); + + /// + /// Attempts to jog the thread in order to check whether there are no thread breaking issues. + /// + /// + Task AttemptThreadJogging(); } } diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index e22d1a156..30aa868f0 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -4133,6 +4133,18 @@ namespace Tango.Integration.Operation }, new TransportRequestConfig() { ShouldLog = true }); } + /// + /// Attempts to jog the thread in order to check whether there are no thread breaking issues. + /// + /// + public async Task AttemptThreadJogging() + { + var r = await SendRequest(new AttemptThreadJoggingRequest() + { + + }, new TransportRequestConfig() { ShouldLog = true, Timeout = TimeSpan.FromSeconds(10) }); + } + #endregion } } diff --git a/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs b/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs index 2ef40336c..e7e14f988 100644 --- a/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs +++ b/Software/Visual_Studio/Tango.PMR/Common/MessageType.cs @@ -22,7 +22,7 @@ namespace Tango.PMR.Common { static MessageTypeReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( - "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbircPQoLTWVz", + "ChFNZXNzYWdlVHlwZS5wcm90bxIQVGFuZ28uUE1SLkNvbW1vbiqhPgoLTWVz", "c2FnZVR5cGUSCAoETm9uZRAAEhEKDUVycm9yUmVzcG9uc2UQARIUChBDYWxj", "dWxhdGVSZXF1ZXN0EAMSFQoRQ2FsY3VsYXRlUmVzcG9uc2UQBBITCg9Qcm9n", "cmVzc1JlcXVlc3QQBRIUChBQcm9ncmVzc1Jlc3BvbnNlEAYSHAoYU3R1YkNh", @@ -194,12 +194,13 @@ namespace Tango.PMR.Common { "TG9hZGluZ1Jlc3BvbnNlEPtVEh0KGFN0b3BUaHJlYWRMb2FkaW5nUmVxdWVz", "dBD8VRIeChlTdG9wVGhyZWFkTG9hZGluZ1Jlc3BvbnNlEP1VEhwKF1RyeVRo", "cmVhZExvYWRpbmdSZXF1ZXN0EP5VEh0KGFRyeVRocmVhZExvYWRpbmdSZXNw", - "b25zZRD/VRIhChxTdGFydElua0ZpbGxpbmdTdGF0dXNSZXF1ZXN0EOBdEiIK", - "HVN0YXJ0SW5rRmlsbGluZ1N0YXR1c1Jlc3BvbnNlEOFdEhwKF1B1dERhdGFT", - "dG9yZUl0ZW1SZXF1ZXN0EMhlEh0KGFB1dERhdGFTdG9yZUl0ZW1SZXNwb25z", - "ZRDJZRIcChdHZXREYXRhU3RvcmVJdGVtUmVxdWVzdBDKZRIdChhHZXREYXRh", - "U3RvcmVJdGVtUmVzcG9uc2UQy2VCHAoaY29tLnR3aW5lLnRhbmdvLnBtci5j", - "b21tb25iBnByb3RvMw==")); + "b25zZRD/VRIgChtBdHRlbXB0VGhyZWFkSm9nZ2luZ1JlcXVlc3QQgFYSIQoc", + "QXR0ZW1wdFRocmVhZEpvZ2dpbmdSZXNwb25zZRCBVhIhChxTdGFydElua0Zp", + "bGxpbmdTdGF0dXNSZXF1ZXN0EOBdEiIKHVN0YXJ0SW5rRmlsbGluZ1N0YXR1", + "c1Jlc3BvbnNlEOFdEhwKF1B1dERhdGFTdG9yZUl0ZW1SZXF1ZXN0EMhlEh0K", + "GFB1dERhdGFTdG9yZUl0ZW1SZXNwb25zZRDJZRIcChdHZXREYXRhU3RvcmVJ", + "dGVtUmVxdWVzdBDKZRIdChhHZXREYXRhU3RvcmVJdGVtUmVzcG9uc2UQy2VC", + "HAoaY29tLnR3aW5lLnRhbmdvLnBtci5jb21tb25iBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.Common.MessageType), }, null)); @@ -517,6 +518,8 @@ namespace Tango.PMR.Common { [pbr::OriginalName("StopThreadLoadingResponse")] StopThreadLoadingResponse = 11005, [pbr::OriginalName("TryThreadLoadingRequest")] TryThreadLoadingRequest = 11006, [pbr::OriginalName("TryThreadLoadingResponse")] TryThreadLoadingResponse = 11007, + [pbr::OriginalName("AttemptThreadJoggingRequest")] AttemptThreadJoggingRequest = 11008, + [pbr::OriginalName("AttemptThreadJoggingResponse")] AttemptThreadJoggingResponse = 11009, /// ///IFS /// diff --git a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj index bb44ef591..18b1e2aa1 100644 --- a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj +++ b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj @@ -457,6 +457,8 @@ + + @@ -483,7 +485,7 @@ - + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.PMR/ThreadLoading/AttemptThreadJoggingRequest.cs b/Software/Visual_Studio/Tango.PMR/ThreadLoading/AttemptThreadJoggingRequest.cs new file mode 100644 index 000000000..dd3f7717c --- /dev/null +++ b/Software/Visual_Studio/Tango.PMR/ThreadLoading/AttemptThreadJoggingRequest.cs @@ -0,0 +1,132 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: AttemptThreadJoggingRequest.proto +#pragma warning disable 1591, 0612, 3021 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace Tango.PMR.ThreadLoading { + + /// Holder for reflection information generated from AttemptThreadJoggingRequest.proto + public static partial class AttemptThreadJoggingRequestReflection { + + #region Descriptor + /// File descriptor for AttemptThreadJoggingRequest.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static AttemptThreadJoggingRequestReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "CiFBdHRlbXB0VGhyZWFkSm9nZ2luZ1JlcXVlc3QucHJvdG8SF1RhbmdvLlBN", + "Ui5UaHJlYWRMb2FkaW5nIh0KG0F0dGVtcHRUaHJlYWRKb2dnaW5nUmVxdWVz", + "dEIjCiFjb20udHdpbmUudGFuZ28ucG1yLnRocmVhZGxvYWRpbmdiBnByb3Rv", + "Mw==")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { }, + new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.ThreadLoading.AttemptThreadJoggingRequest), global::Tango.PMR.ThreadLoading.AttemptThreadJoggingRequest.Parser, null, null, null, null) + })); + } + #endregion + + } + #region Messages + public sealed partial class AttemptThreadJoggingRequest : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AttemptThreadJoggingRequest()); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Tango.PMR.ThreadLoading.AttemptThreadJoggingRequestReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public AttemptThreadJoggingRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public AttemptThreadJoggingRequest(AttemptThreadJoggingRequest other) : this() { + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public AttemptThreadJoggingRequest Clone() { + return new AttemptThreadJoggingRequest(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as AttemptThreadJoggingRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(AttemptThreadJoggingRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + return true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(AttemptThreadJoggingRequest other) { + if (other == null) { + return; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + input.SkipLastField(); + break; + } + } + } + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/Software/Visual_Studio/Tango.PMR/ThreadLoading/AttemptThreadJoggingResponse.cs b/Software/Visual_Studio/Tango.PMR/ThreadLoading/AttemptThreadJoggingResponse.cs new file mode 100644 index 000000000..a3c20c6ff --- /dev/null +++ b/Software/Visual_Studio/Tango.PMR/ThreadLoading/AttemptThreadJoggingResponse.cs @@ -0,0 +1,132 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: AttemptThreadJoggingResponse.proto +#pragma warning disable 1591, 0612, 3021 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace Tango.PMR.ThreadLoading { + + /// Holder for reflection information generated from AttemptThreadJoggingResponse.proto + public static partial class AttemptThreadJoggingResponseReflection { + + #region Descriptor + /// File descriptor for AttemptThreadJoggingResponse.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static AttemptThreadJoggingResponseReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "CiJBdHRlbXB0VGhyZWFkSm9nZ2luZ1Jlc3BvbnNlLnByb3RvEhdUYW5nby5Q", + "TVIuVGhyZWFkTG9hZGluZyIeChxBdHRlbXB0VGhyZWFkSm9nZ2luZ1Jlc3Bv", + "bnNlQiMKIWNvbS50d2luZS50YW5nby5wbXIudGhyZWFkbG9hZGluZ2IGcHJv", + "dG8z")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { }, + new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.ThreadLoading.AttemptThreadJoggingResponse), global::Tango.PMR.ThreadLoading.AttemptThreadJoggingResponse.Parser, null, null, null, null) + })); + } + #endregion + + } + #region Messages + public sealed partial class AttemptThreadJoggingResponse : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AttemptThreadJoggingResponse()); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::Tango.PMR.ThreadLoading.AttemptThreadJoggingResponseReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public AttemptThreadJoggingResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public AttemptThreadJoggingResponse(AttemptThreadJoggingResponse other) : this() { + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public AttemptThreadJoggingResponse Clone() { + return new AttemptThreadJoggingResponse(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as AttemptThreadJoggingResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(AttemptThreadJoggingResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + return true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(AttemptThreadJoggingResponse other) { + if (other == null) { + return; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + input.SkipLastField(); + break; + } + } + } + + } + + #endregion + +} + +#endregion Designer generated code -- cgit v1.3.1 From 2cb8d17ae242f2570bf599147c4ae51cdb6a5131 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Fri, 6 Nov 2020 12:37:53 +0200 Subject: removing two columns from the alarm table and alarm generator --- .../EmbeddedParameters/AlarmHandlingItem.proto | 22 +++++++++++----------- .../Tango.AlarmParametersGenerator/Program.cs | 4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/PMR/Messages/EmbeddedParameters/AlarmHandlingItem.proto b/Software/PMR/Messages/EmbeddedParameters/AlarmHandlingItem.proto index 0dbc0a114..862b4dabe 100644 --- a/Software/PMR/Messages/EmbeddedParameters/AlarmHandlingItem.proto +++ b/Software/PMR/Messages/EmbeddedParameters/AlarmHandlingItem.proto @@ -10,15 +10,15 @@ import "EventType.proto"; message AlarmHandlingItem { AlarmSourceType AlarmSource = 1; - uint32 Frequency = 2; //1/10/100/1000 - uint32 DeviceId = 3; - uint32 ModuleDeviceId = 4; - uint32 AlarmValue = 5; - bool AlarmDirection = 6; - Debugging.DebugLogCategory Severity = 7; - uint32 Predecessor = 8; - uint32 DebounceValue = 9; - Diagnostics.EventType EventType = 10; - string EventName = 11; - bool IsPersistent = 12; + //uint32 Frequency = 2; //1/10/100/1000 + uint32 DeviceId = 2; + uint32 ModuleDeviceId = 3; + uint32 AlarmValue = 4; + bool AlarmDirection = 5; + Debugging.DebugLogCategory Severity = 6; + //uint32 Predecessor = 7; + uint32 DebounceValue = 7; + Diagnostics.EventType EventType = 8; + string EventName = 9; + bool IsPersistent = 10; } diff --git a/Software/Visual_Studio/Utilities/Tango.AlarmParametersGenerator/Program.cs b/Software/Visual_Studio/Utilities/Tango.AlarmParametersGenerator/Program.cs index a18befe34..2972b4892 100644 --- a/Software/Visual_Studio/Utilities/Tango.AlarmParametersGenerator/Program.cs +++ b/Software/Visual_Studio/Utilities/Tango.AlarmParametersGenerator/Program.cs @@ -94,13 +94,13 @@ namespace Tango.AlarmParametersGenerator AlarmHandlingItem alarm = new AlarmHandlingItem(); alarm.AlarmSource = item.Source.ToEnum(); - alarm.Frequency = item.Frequency.ToUint(); + //alarm.Frequency = item.Frequency.ToUint(); alarm.DeviceId = item.DeviceId.ToUint(); alarm.ModuleDeviceId = item.ApplicationDeviceID.ToUint(); alarm.AlarmValue = item.Criteria.ToUint(); alarm.AlarmDirection = item.Direction.ToBoolean(); alarm.Severity = item.Severity.ToEnum(); - alarm.Predecessor = item.Predeccesor.ToUint(); + //alarm.Predecessor = item.Predeccesor.ToUint(); alarm.DebounceValue = item.DebounceValue.ToUint(); alarm.EventType = (EventType)item.Code.ToUint(); alarm.IsPersistent = item.Persistent.ToBooleanYesNo(); -- cgit v1.3.1 From 42370757e73c70495384922615279817e1592e39 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Sat, 7 Nov 2020 22:51:47 +0200 Subject: Setup for new process region calc. --- .../Tango.ColorConversion/DefaultColorConverter.cs | 48 +++++++++++++++++++++- .../ExtensionMethods/ConversionOutputExtensions.cs | 24 +++++++++++ 2 files changed, 70 insertions(+), 2 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs b/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs index 6d21c69c3..e51d8a0e1 100644 --- a/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs +++ b/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs @@ -231,11 +231,55 @@ namespace Tango.ColorConversion } public ProcessParametersTable GetRecommendedProcessParameters(Job job, ProcessParametersTablesGroup group) + { + return GetRecommendedProcessParametersByGamutRegion(job, group); + } + + private ProcessParametersTable GetRecommendedProcessParametersByProcessParameters(Job job, ProcessParametersTablesGroup group) + { + if (group.ProcessParametersTables.Count == 0) + { + throw new InvalidOperationException("The specified RML process group does not contain any tables."); + } + + List stops = job.Segments.Select(x => x.Clone()).SelectMany(x => x.BrushStops).ToList(); + + if (stops.Count == 0) + { + return group.ProcessParametersTables[0]; + } + + foreach (var stop in stops) + { + if (stop.LiquidVolumes == null) + { + stop.SetLiquidVolumes(job.Machine.Configuration, job.Rml, group.ProcessParametersTables[0]); + } + + if (stop.BrushColorSpace != ColorSpaces.Catalog && stop.BrushColorSpace != ColorSpaces.Volume) + { + Convert(stop, false).ApplyOnBrushStopVolumesOnly(stop); + } + } + + double maxTotalVolume = stops.Max(x => x.TotalLiquidVolume); + + foreach (var table in group.ProcessParametersTables.OrderBy(x => x.MaxInkUptake)) + { + if (maxTotalVolume <= table.MaxInkUptake) return table; + } + + throw new InvalidOperationException($"The total liquid volume ({maxTotalVolume.ToString("0.0")}) does not fit any process table for one or more colors."); + + //Is MaxInkUptake a percentage ? because if not, i have to know what process parameters table to use to calculate the NlCm. + } + + private ProcessParametersTable GetRecommendedProcessParametersByGamutRegion(Job job, ProcessParametersTablesGroup group) { var stops = job.Segments.SelectMany(x => x.BrushStops).ToList(); - var standard_stops = stops.Where(x => x.BrushColorSpace == ColorSpaces.RGB || x.BrushColorSpace == ColorSpaces.LAB || x.BrushColorSpace == ColorSpaces.CMYK || x.BrushColorSpace == ColorSpaces.Volume); - var color_catalog_stops = stops.Where(x => x.BrushColorSpace != ColorSpaces.RGB && x.BrushColorSpace != ColorSpaces.LAB && x.BrushColorSpace != ColorSpaces.CMYK && x.BrushColorSpace != ColorSpaces.Volume); + var standard_stops = stops.Where(x => x.BrushColorSpace != ColorSpaces.Catalog); + var color_catalog_stops = stops.Where(x => x.BrushColorSpace == ColorSpaces.Catalog); var max_standard = 1; var max_catalog = 1; diff --git a/Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/ConversionOutputExtensions.cs b/Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/ConversionOutputExtensions.cs index bb94918f8..259afcfda 100644 --- a/Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/ConversionOutputExtensions.cs +++ b/Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/ConversionOutputExtensions.cs @@ -98,5 +98,29 @@ public static class ConversionOutputExtensions liquidVolume.Volume = outputLiquid.Volume; } } + + public static void ApplyOnBrushStopVolumesOnly(this ConversionOutput conversionOutput, BrushStop stop) + { + var output = conversionOutput; + + stop.IsOutOfGamut = conversionOutput.OutOfGamut; + + if (stop.LiquidVolumes == null || stop.LiquidVolumes.Count == 0) + { + throw new InvalidOperationException("The specified brush stop liquid volumes was not initialized. Could not apply the conversion output."); + } + + foreach (var outputLiquid in output.SingleCoordinates.OutputLiquids) + { + var liquidVolume = stop.LiquidVolumes.SingleOrDefault(x => x.IdsPack.LiquidType.Code == outputLiquid.LiquidType.ToInt32()); + + if (liquidVolume == null) + { + throw new NullReferenceException("Liquid volume not found for color conversion output liquid '" + outputLiquid.LiquidType + "'."); + } + + liquidVolume.Volume = outputLiquid.Volume; + } + } } -- cgit v1.3.1 From 2dbac1046c61d5542056c12f5dabfac92f7d9594 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Sat, 7 Nov 2020 23:50:16 +0200 Subject: Updated event types to rev 27. --- Software/DB/PPC/Tango.mdf | Bin 75497472 -> 75497472 bytes Software/DB/PPC/Tango_log.ldf | Bin 53673984 -> 53673984 bytes Software/DB/Tango.mdf | Bin 75497472 -> 75497472 bytes Software/DB/Tango_log.ldf | Bin 22675456 -> 22675456 bytes Software/PMR/Messages/Diagnostics/EventType.proto | 78 ++- .../Tango alarm events handling chart_Rev27.xlsx | Bin 0 -> 69986 bytes .../Tango.BL/Enumerations/EventTypes.cs | 96 +++- .../Tango.PMR/Diagnostics/EventType.cs | 635 ++++++++++++--------- .../EmbeddedParameters/AlarmHandlingItem.cs | 138 ++--- .../Tango.EventsTypesGenerator/Program.cs | 2 +- .../Tango.EventsTypesGenerator.csproj | 7 +- 11 files changed, 547 insertions(+), 409 deletions(-) create mode 100644 Software/Visual_Studio/Resources/Events Revisions/Tango alarm events handling chart_Rev27.xlsx (limited to 'Software/Visual_Studio') diff --git a/Software/DB/PPC/Tango.mdf b/Software/DB/PPC/Tango.mdf index 86dccf095..bfb58b8b9 100644 Binary files a/Software/DB/PPC/Tango.mdf and b/Software/DB/PPC/Tango.mdf differ diff --git a/Software/DB/PPC/Tango_log.ldf b/Software/DB/PPC/Tango_log.ldf index 1e81d8c77..734014f1e 100644 Binary files a/Software/DB/PPC/Tango_log.ldf and b/Software/DB/PPC/Tango_log.ldf differ diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf index cb06a99d3..276543dab 100644 Binary files a/Software/DB/Tango.mdf and b/Software/DB/Tango.mdf differ diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf index 453bfc95d..faf2a6f8c 100644 Binary files a/Software/DB/Tango_log.ldf and b/Software/DB/Tango_log.ldf differ diff --git a/Software/PMR/Messages/Diagnostics/EventType.proto b/Software/PMR/Messages/Diagnostics/EventType.proto index 2c2d76da3..075b39fa6 100644 --- a/Software/PMR/Messages/Diagnostics/EventType.proto +++ b/Software/PMR/Messages/Diagnostics/EventType.proto @@ -79,7 +79,7 @@ enum EventType //Cover is open. Cannot execute job (Group = GeneralHardware, Category = Error) FRONT_COVER_4_OPEN = 2005; - //Cartridges door is open. Cannot start new job (Group = GeneralHardware, Category = Warning) + //IFS door is open. Cannot start new job (Group = GeneralHardware, Category = Warning) CARTRIDGES_COVER_OPEN = 2006; //Cover is open. Cannot execute job (Group = GeneralHardware, Category = Error) @@ -97,7 +97,7 @@ enum EventType //Electrical cabinet fans RPM is too low. Cannot execute job (Group = GeneralHardware, Category = Warning) ELECTRICAL_CABINET_FANS_RPM_TOO_LOW = 2011; - //Electrical cabinet fans stopped. Cannot execute job (Group = GeneralHardware, Category = Critical) + //Electrical cabinet fans stopped. Cannot execute job (Group = GeneralHardware, Category = Warning) ELECTRICAL_CABINET_FANS_STOPPED = 2012; //Configuration file does not exist. Cannot execute job (Group = GeneralHardware, Category = Error) @@ -127,6 +127,15 @@ enum EventType //Temperature measurement error has occurred. Cannot execute job. (Group = GeneralHardware, Category = Error) TEMPERATURE_MEASUREMENT_ERROR = 2021; + //Cannot read the cartridge. Cannot perform ink filling (Group = GeneralHardware, Category = Error) + RFID_READER_MALFUNCTION_INK_SLOT = 2022; + + //Cannot read the cartridge. Cannot replace waste cartridge (Group = GeneralHardware, Category = Error) + RFID_READER_MALFUNCTION_WASTE_SLOT_1 = 2023; + + //Cannot read the cartridge. Cannot replace waste cartridge (Group = GeneralHardware, Category = Error) + RFID_READER_MALFUNCTION_WASTE_SLOT_2 = 2024; + //Thread break. Cannot execute job (Group = ThreadFeedingSystem, Category = Error) THREAD_BREAK = 3000; @@ -301,7 +310,7 @@ enum EventType //The temperature in dryer zone is too high. Cannot execute job (Group = Dryer, Category = Critical) DRYER_ZONE_1_OVERTEMPERATURE = 4005; - //The temperature in dryer zone is too high. Cannot execute job (Group = Dryer, Category = Critical) + //The temperature in dryer zone is too high. Cannot execute job (Group = Dryer, Category = Error) DRYER_ZONE_2_OVERTEMPERATURE = 4006; //The temperature in dryer zone is too low. Cannot execute job (Group = Dryer, Category = Warning) @@ -316,16 +325,16 @@ enum EventType //Thermal cut-off. Cannot execute job (Group = Dryer, Category = Critical) DRYER_THERMAL_CUTOFF = 4010; - //Dryer zone current is out of range. Cannot execute job (Group = Dryer, Category = Critical) + //Dryer zone current is out of range. Cannot execute job (Group = Dryer, Category = Warning) DRYER_HEATERS_ZONE_1_CURRENT_OUT_OF_RANGE = 4011; - //Dryer zone current is out of range. Cannot execute job (Group = Dryer, Category = Critical) + //Dryer zone current is out of range. Cannot execute job (Group = Dryer, Category = Warning) DRYER_HEATERS_ZONE_2_CURRENT_OUT_OF_RANGE = 4012; - //Dryer zone current loop break. Cannot execute job (Group = Dryer, Category = Critical) + //Dryer zone current loop break. Cannot execute job (Group = Dryer, Category = Error) DRYER_HEATERS_ZONE_1_CURRENT_LOOP_BREAK = 4013; - //Dryer zone current loop break. Cannot execute job (Group = Dryer, Category = Critical) + //Dryer zone current loop break. Cannot execute job (Group = Dryer, Category = Error) DRYER_HEATERS_ZONE_2_CURRENT_LOOP_BREAK = 4014; //Dryer fan RPM is too low. Cannot execute job (Group = Dryer, Category = Warning) @@ -478,22 +487,22 @@ enum EventType //The voltage in dyeing head cleaning head motor is too low. Cannot execute job (Group = DyeingHead, Category = Warning) DYEING_HEAD_CLEANING_HEAD_MOTOR_UNDERVOLTAGE = 5042; - //The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + //The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Error) DYEING_HEAD_ZONE_7_OVERTEMPERATURE = 5043; - //The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + //The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Error) DYEING_HEAD_ZONE_8_OVERTEMPERATURE = 5044; - //The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + //The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Error) DYEING_HEAD_ZONE_9_OVERTEMPERATURE = 5045; - //The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + //The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Error) DYEING_HEAD_ZONE_10_OVERTEMPERATURE = 5046; - //The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + //The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Error) DYEING_HEAD_ZONE_11_OVERTEMPERATURE = 5047; - //The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + //The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Error) DYEING_HEAD_ZONE_12_OVERTEMPERATURE = 5048; //The temperature in dyeing head zone is too low. Cannot execute job (Group = DyeingHead, Category = Warning) @@ -574,10 +583,10 @@ enum EventType //Dyeing head zone current loop break. Cannot execute job (Group = DyeingHead, Category = Error) DYEING_HEAD_ZONE_12_CURRENT_LOOP_BREAK = 5074; - //The temperature in dyeing head blower is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + //The temperature in dyeing head blower is too high. Cannot execute job (Group = DyeingHead, Category = Error) DYEING_HEAD_BLOWER_1_OVERTEMPERATURE = 5075; - //The temperature in dyeing head blower is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + //The temperature in dyeing head blower is too high. Cannot execute job (Group = DyeingHead, Category = Error) DYEING_HEAD_BLOWER_2_OVERTEMPERATURE = 5076; //The temperature in dyeing head blower is too low. Cannot execute job (Group = DyeingHead, Category = Warning) @@ -646,7 +655,7 @@ enum EventType //Dyeing head tunnel lid is open. Cannot execute job (Group = DyeingHead, Category = Error) DYEING_HEAD_TUNNEL_LID_IS_OPEN = 5098; - //The temperature in the mixer is too high. Cannot execute job (Group = Mixer, Category = Critical) + //The temperature in the mixer is too high. Cannot execute job (Group = Mixer, Category = Error) MIXER_OVERTEMPERATURE = 6000; //The temperature in the mixer is too low. Cannot execute job (Group = Mixer, Category = Warning) @@ -1099,10 +1108,10 @@ enum EventType //Cannot identify ink cartridge. Cannot execute job (Group = InkFillingSystem, Category = Error) INK_CARTRIDGE_RFID_TIMEOUT = 10001; - //Waste level is high. Insert waste cartridge (Group = InkFillingSystem, Category = Warning) + //No waste cartridge in system. Cannot execute job. Please insert waste cartridge (Group = InkFillingSystem, Category = Error) NO_WASTE_CARTRIDGE_AVAILABLE = 10002; - //Waste cartridge detected. Cannot execute job. Please extract waste cartridge (Group = InkFillingSystem, Category = Error) + //Both waste cartridges are full. Cannot execute job. Please replace waste cartridges (Group = InkFillingSystem, Category = Error) ALL_WASTE_CARTRIDGES_FULL = 10003; //Cannot detect waste cartridge. Cannot execute job (Group = InkFillingSystem, Category = Error) @@ -1111,4 +1120,37 @@ enum EventType //Cannot identify waste cartridge. Cannot execute job (Group = InkFillingSystem, Category = Error) WASTE_CARTRIDGE_RFID_TIMEOUT = 10005; + //Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error) + INK_CARTRIDGE_RFID_TAG_CANNOT_BE_READ = 10006; + + //Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error) + WASTE_CARTRIDGE_RFID_TAG_CANNOT_BE_READ = 10007; + + //Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error) + INK_CARTRIDGE_RFID_TAG_IS_NOT_VALID = 10008; + + //Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error) + WASTE_CARTRIDGE_RFID_TAG_IS_NOT_VALID = 10009; + + //Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error) + INK_CARTRIDGE_AUTHENTICATION_FAILED = 10010; + + //Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error) + WASTE_CARTRIDGE_AUTHENTICATION_FAILED = 10011; + + //Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error) + INK_CARTRIDGE_IS_BLOCKED = 10012; + + //Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error) + WASTE_CARTRIDGE_IS_BLOCKED = 10013; + + //Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error) + INK_CARTRIDGE_RFID_TAG_CANNOT_BE_UPDATED = 10014; + + //Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error) + WASTE_CARTRIDGE_RFID_TAG_CANNOT_BE_UPDATED = 10015; + + //Ink in cartridge is expired. Cannot perform ink filling (Group = InkFillingSystem, Category = Warning) + INK_IN_CARTRIDGE_IS_EXPIRED = 10016; + } diff --git a/Software/Visual_Studio/Resources/Events Revisions/Tango alarm events handling chart_Rev27.xlsx b/Software/Visual_Studio/Resources/Events Revisions/Tango alarm events handling chart_Rev27.xlsx new file mode 100644 index 000000000..51dbc42ba Binary files /dev/null and b/Software/Visual_Studio/Resources/Events Revisions/Tango alarm events handling chart_Rev27.xlsx differ diff --git a/Software/Visual_Studio/Tango.BL/Enumerations/EventTypes.cs b/Software/Visual_Studio/Tango.BL/Enumerations/EventTypes.cs index e0a5b0114..fe0009818 100644 --- a/Software/Visual_Studio/Tango.BL/Enumerations/EventTypes.cs +++ b/Software/Visual_Studio/Tango.BL/Enumerations/EventTypes.cs @@ -140,9 +140,9 @@ namespace Tango.BL.Enumerations FRONT_COVER_4_OPEN = 2005, /// - /// (Cartridges door is open. Cannot start new job ) + /// (IFS door is open. Cannot start new job ) /// - [Description("Cartridges door is open. Cannot start new job ")] + [Description("IFS door is open. Cannot start new job ")] CARTRIDGES_COVER_OPEN = 2006, /// @@ -235,6 +235,24 @@ namespace Tango.BL.Enumerations [Description("Temperature measurement error has occurred. Cannot execute job.")] TEMPERATURE_MEASUREMENT_ERROR = 2021, + /// + /// (Cannot read the cartridge. Cannot perform ink filling ) + /// + [Description("Cannot read the cartridge. Cannot perform ink filling ")] + RFID_READER_MALFUNCTION_INK_SLOT = 2022, + + /// + /// (Cannot read the cartridge. Cannot replace waste cartridge ) + /// + [Description("Cannot read the cartridge. Cannot replace waste cartridge ")] + RFID_READER_MALFUNCTION_WASTE_SLOT_1 = 2023, + + /// + /// (Cannot read the cartridge. Cannot replace waste cartridge ) + /// + [Description("Cannot read the cartridge. Cannot replace waste cartridge ")] + RFID_READER_MALFUNCTION_WASTE_SLOT_2 = 2024, + /// /// (Thread break. Cannot execute job) /// @@ -2180,15 +2198,15 @@ namespace Tango.BL.Enumerations INK_CARTRIDGE_RFID_TIMEOUT = 10001, /// - /// (Waste level is high. Insert waste cartridge) + /// (No waste cartridge in system. Cannot execute job. Please insert waste cartridge) /// - [Description("Waste level is high. Insert waste cartridge")] + [Description("No waste cartridge in system. Cannot execute job. Please insert waste cartridge")] NO_WASTE_CARTRIDGE_AVAILABLE = 10002, /// - /// (Waste cartridge detected. Cannot execute job. Please extract waste cartridge) + /// (Both waste cartridges are full. Cannot execute job. Please replace waste cartridges) /// - [Description("Waste cartridge detected. Cannot execute job. Please extract waste cartridge")] + [Description("Both waste cartridges are full. Cannot execute job. Please replace waste cartridges")] ALL_WASTE_CARTRIDGES_FULL = 10003, /// @@ -2203,5 +2221,71 @@ namespace Tango.BL.Enumerations [Description("Cannot identify waste cartridge. Cannot execute job ")] WASTE_CARTRIDGE_RFID_TIMEOUT = 10005, + /// + /// (Ink cartridge failure. Cannot perform ink filling) + /// + [Description("Ink cartridge failure. Cannot perform ink filling")] + INK_CARTRIDGE_RFID_TAG_CANNOT_BE_READ = 10006, + + /// + /// (Waste cartridge failure. Cannot replace waste cartridge) + /// + [Description("Waste cartridge failure. Cannot replace waste cartridge")] + WASTE_CARTRIDGE_RFID_TAG_CANNOT_BE_READ = 10007, + + /// + /// (Ink cartridge failure. Cannot perform ink filling) + /// + [Description("Ink cartridge failure. Cannot perform ink filling")] + INK_CARTRIDGE_RFID_TAG_IS_NOT_VALID = 10008, + + /// + /// (Waste cartridge failure. Cannot replace waste cartridge) + /// + [Description("Waste cartridge failure. Cannot replace waste cartridge")] + WASTE_CARTRIDGE_RFID_TAG_IS_NOT_VALID = 10009, + + /// + /// (Ink cartridge failure. Cannot perform ink filling) + /// + [Description("Ink cartridge failure. Cannot perform ink filling")] + INK_CARTRIDGE_AUTHENTICATION_FAILED = 10010, + + /// + /// (Waste cartridge failure. Cannot replace waste cartridge) + /// + [Description("Waste cartridge failure. Cannot replace waste cartridge")] + WASTE_CARTRIDGE_AUTHENTICATION_FAILED = 10011, + + /// + /// (Ink cartridge failure. Cannot perform ink filling) + /// + [Description("Ink cartridge failure. Cannot perform ink filling")] + INK_CARTRIDGE_IS_BLOCKED = 10012, + + /// + /// (Waste cartridge failure. Cannot replace waste cartridge) + /// + [Description("Waste cartridge failure. Cannot replace waste cartridge")] + WASTE_CARTRIDGE_IS_BLOCKED = 10013, + + /// + /// (Ink cartridge failure. Cannot perform ink filling) + /// + [Description("Ink cartridge failure. Cannot perform ink filling")] + INK_CARTRIDGE_RFID_TAG_CANNOT_BE_UPDATED = 10014, + + /// + /// (Waste cartridge failure. Cannot replace waste cartridge) + /// + [Description("Waste cartridge failure. Cannot replace waste cartridge")] + WASTE_CARTRIDGE_RFID_TAG_CANNOT_BE_UPDATED = 10015, + + /// + /// (Ink in cartridge is expired. Cannot perform ink filling) + /// + [Description("Ink in cartridge is expired. Cannot perform ink filling")] + INK_IN_CARTRIDGE_IS_EXPIRED = 10016, + } } diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/EventType.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/EventType.cs index c9dc70417..59a807634 100644 --- a/Software/Visual_Studio/Tango.PMR/Diagnostics/EventType.cs +++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/EventType.cs @@ -22,7 +22,7 @@ namespace Tango.PMR.Diagnostics { static EventTypeReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( - "Cg9FdmVudFR5cGUucHJvdG8SFVRhbmdvLlBNUi5EaWFnbm9zdGljcyr5YwoJ", + "Cg9FdmVudFR5cGUucHJvdG8SFVRhbmdvLlBNUi5EaWFnbm9zdGljcyq+aAoJ", "RXZlbnRUeXBlEggKBE5vbmUQABIRCgxSRVFVRVNUX1NFTlQQ6AcSFgoRUkVT", "UE9OU0VfUkVDRUlWRUQQ6QcSEwoOUkVRVUVTVF9GQUlMRUQQ6gcSGgoVQVBQ", "TElDQVRJT05fRVhDRVBUSU9OEOsHEhwKF0FQUExJQ0FUSU9OX0lORk9STUFU", @@ -45,270 +45,283 @@ namespace Tango.PMR.Diagnostics { "CiJNQUNISU5FX0lOVEVSTkFMX09WRVJURU1QRVJBVFVSRV8yEOEPEicKIkVM", "RUNUUklDQUxfQ0FCSU5FVF9PVkVSVEVNUEVSQVRVUkUQ4g8SHAoXRlBHQV9X", "QVRDSERPR19BQ1RJVkFURUQQ4w8SFQoQVU5JTlRFTkRFRF9SRVNFVBDkDxIi", - "Ch1URU1QRVJBVFVSRV9NRUFTVVJFTUVOVF9FUlJPUhDlDxIRCgxUSFJFQURf", - "QlJFQUsQuBcSMQosVEhSRUFEX1RFTlNJT05fQ09OVFJPTF9GQUlMVVJFX0ZF", - "RURFUl9EQU5DRVIQuRcSHwoaV0lOREVSX0NPTkVfRE9FU19OT1RfRVhJU1QQ", - "uhcSHQoYRkVFREVSX01PVE9SX09WRVJDVVJSRU5UELsXEiMKHlJJR0hUX0xP", - "QURFUl9NT1RPUl9PVkVSQ1VSUkVOVBC8FxIdChhQVUxMRVJfTU9UT1JfT1ZF", - "UkNVUlJFTlQQvRcSIgodTEVGVF9MT0FERVJfTU9UT1JfT1ZFUkNVUlJFTlQQ", - "vhcSHQoYV0lOREVSX01PVE9SX09WRVJDVVJSRU5UEL8XEhwKF1NDUkVXX01P", - "VE9SX09WRVJDVVJSRU5UEMAXEiIKHUxPQURJTkdfQVJNX01PVE9SX09WRVJD", - "VVJSRU5UEMEXEiEKHEZFRURFUl9NT1RPUl9PVkVSVEVNUEVSQVRVUkUQwhcS", - "JwoiUklHSFRfTE9BREVSX01PVE9SX09WRVJURU1QRVJBVFVSRRDDFxIhChxQ", - "VUxMRVJfTU9UT1JfT1ZFUlRFTVBFUkFUVVJFEMQXEiYKIUxFRlRfTE9BREVS", - "X01PVE9SX09WRVJURU1QRVJBVFVSRRDFFxIhChxXSU5ERVJfTU9UT1JfT1ZF", - "UlRFTVBFUkFUVVJFEMYXEiAKG1NDUkVXX01PVE9SX09WRVJURU1QRVJBVFVS", - "RRDHFxImCiFMT0FESU5HX0FSTV9NT1RPUl9PVkVSVEVNUEVSQVRVUkUQyBcS", - "FwoSRkVFREVSX01PVE9SX1NUQUxMEMkXEh0KGFJJR0hUX0xPQURFUl9NT1RP", - "Ul9TVEFMTBDKFxIXChJQVUxMRVJfTU9UT1JfU1RBTEwQyxcSHAoXTEVGVF9M", - "T0FERVJfTU9UT1JfU1RBTEwQzBcSFwoSV0lOREVSX01PVE9SX1NUQUxMEM0X", - "EhYKEVNDUkVXX01PVE9SX1NUQUxMEM4XEhwKF0xPQURJTkdfQVJNX01PVE9S", - "X1NUQUxMEM8XEh4KGUZFRURFUl9NT1RPUl9VTkRFUlZPTFRBR0UQ0BcSJAof", - "UklHSFRfTE9BREVSX01PVE9SX1VOREVSVk9MVEFHRRDRFxIeChlQVUxMRVJf", - "TU9UT1JfVU5ERVJWT0xUQUdFENIXEiMKHkxFRlRfTE9BREVSX01PVE9SX1VO", - "REVSVk9MVEFHRRDTFxIeChlXSU5ERVJfTU9UT1JfVU5ERVJWT0xUQUdFENQX", - "Eh0KGFNDUkVXX01PVE9SX1VOREVSVk9MVEFHRRDVFxIjCh5MT0FESU5HX0FS", - "TV9NT1RPUl9VTkRFUlZPTFRBR0UQ1hcSFAoPTFRGVV9VUF9USU1FT1VUENcX", - "EhYKEUxURlVfRE9XTl9USU1FT1VUENgXEhQKD1JURlVfVVBfVElNRU9VVBDZ", - "FxIWChFSVEZVX0RPV05fVElNRU9VVBDaFxIeChlTQ1JFV19NT1RPUl9MSU1J", - "VF9USU1FT1VUENsXEiQKH1dJTkRFUl9EQU5DRVJfTU9UT1JfT1ZFUkNVUlJF", - "TlQQ3BcSJAofUFVMTEVSX0RBTkNFUl9NT1RPUl9PVkVSQ1VSUkVOVBDdFxIk", - "Ch9GRUVERVJfREFOQ0VSX01PVE9SX09WRVJDVVJSRU5UEN4XEigKI1dJTkRF", - "Ul9EQU5DRVJfTU9UT1JfT1ZFUlRFTVBFUkFUVVJFEN8XEigKI1BVTExFUl9E", - "QU5DRVJfTU9UT1JfT1ZFUlRFTVBFUkFUVVJFEOAXEigKI0ZFRURFUl9EQU5D", - "RVJfTU9UT1JfT1ZFUlRFTVBFUkFUVVJFEOEXEh4KGVdJTkRFUl9EQU5DRVJf", - "TU9UT1JfU1RBTEwQ4hcSHgoZUFVMTEVSX0RBTkNFUl9NT1RPUl9TVEFMTBDj", - "FxIeChlGRUVERVJfREFOQ0VSX01PVE9SX1NUQUxMEOQXEiUKIFdJTkRFUl9E", - "QU5DRVJfTU9UT1JfVU5ERVJWT0xUQUdFEOUXEiUKIFBVTExFUl9EQU5DRVJf", - "TU9UT1JfVU5ERVJWT0xUQUdFEOYXEiUKIEZFRURFUl9EQU5DRVJfTU9UT1Jf", - "VU5ERVJWT0xUQUdFEOcXEjEKLFRIUkVBRF9URU5TSU9OX0NPTlRST0xfRkFJ", - "TFVSRV9QVUxMRVJfREFOQ0VSEOgXEjEKLFRIUkVBRF9URU5TSU9OX0NPTlRS", - "T0xfRkFJTFVSRV9XSU5ERVJfREFOQ0VSEOkXEiUKIE1BQ0hJTkVfU1RBVEVf", - "Tk9fVEhSRUFEX0RFVEVDVEVEEOoXEhkKFFRIUkVBRF9MT0FESU5HX0VSUk9S", - "EOsXEhwKF0RSWUVSX01PVE9SX09WRVJDVVJSRU5UEKAfEiAKG0RSWUVSX01P", - "VE9SX09WRVJURU1QRVJBVFVSRRChHxIWChFEUllFUl9NT1RPUl9TVEFMTBCi", - "HxIdChhEUllFUl9NT1RPUl9VTkRFUlZPTFRBR0UQox8SFAoPRFJZRVJfRE9P", - "Ul9PUEVOEKQfEiEKHERSWUVSX1pPTkVfMV9PVkVSVEVNUEVSQVRVUkUQpR8S", - "IQocRFJZRVJfWk9ORV8yX09WRVJURU1QRVJBVFVSRRCmHxIkCh9EUllFUl9a", - "T05FXzFfVU5ERVJURU1QRVJBVFVSRV9BEKcfEiQKH0RSWUVSX1pPTkVfMV9V", - "TkRFUlRFTVBFUkFUVVJFX0IQqB8SJAofRFJZRVJfWk9ORV8yX1VOREVSVEVN", - "UEVSQVRVUkVfQhCpHxIZChREUllFUl9USEVSTUFMX0NVVE9GRhCqHxIuCilE", - "UllFUl9IRUFURVJTX1pPTkVfMV9DVVJSRU5UX09VVF9PRl9SQU5HRRCrHxIu", - "CilEUllFUl9IRUFURVJTX1pPTkVfMl9DVVJSRU5UX09VVF9PRl9SQU5HRRCs", - "HxIsCidEUllFUl9IRUFURVJTX1pPTkVfMV9DVVJSRU5UX0xPT1BfQlJFQUsQ", - "rR8SLAonRFJZRVJfSEVBVEVSU19aT05FXzJfQ1VSUkVOVF9MT09QX0JSRUFL", - "EK4fEhoKFURSWUVSX0ZBTl9SUE1fVE9PX0xPVxCvHxIWChFEUllFUl9GQU5f", - "U1RPUFBFRBCwHxIgChtEUllFUl9MSURfTU9UT1JfT1ZFUkNVUlJFTlQQsR8S", - "JAofRFJZRVJfTElEX01PVE9SX09WRVJURU1QRVJBVFVSRRCyHxIaChVEUllF", - "Ul9MSURfTU9UT1JfU1RBTEwQsx8SIQocRFJZRVJfTElEX01PVE9SX1VOREVS", - "Vk9MVEFHRRC0HxIkCh9EUllFUl9aT05FXzJfVU5ERVJURU1QRVJBVFVSRV9B", - "ELUfEicKIkRZRUlOR19IRUFEX1pPTkVfMV9PVkVSVEVNUEVSQVRVUkUQiCcS", - "JwoiRFlFSU5HX0hFQURfWk9ORV8yX09WRVJURU1QRVJBVFVSRRCJJxInCiJE", - "WUVJTkdfSEVBRF9aT05FXzNfT1ZFUlRFTVBFUkFUVVJFEIonEicKIkRZRUlO", - "R19IRUFEX1pPTkVfNF9PVkVSVEVNUEVSQVRVUkUQiycSJwoiRFlFSU5HX0hF", - "QURfWk9ORV81X09WRVJURU1QRVJBVFVSRRCMJxInCiJEWUVJTkdfSEVBRF9a", - "T05FXzZfT1ZFUlRFTVBFUkFUVVJFEI0nEioKJURZRUlOR19IRUFEX1pPTkVf", - "MV9VTkRFUlRFTVBFUkFUVVJFX0EQjicSKgolRFlFSU5HX0hFQURfWk9ORV8y", - "X1VOREVSVEVNUEVSQVRVUkVfQRCPJxIqCiVEWUVJTkdfSEVBRF9aT05FXzNf", - "VU5ERVJURU1QRVJBVFVSRV9BEJAnEioKJURZRUlOR19IRUFEX1pPTkVfNF9V", - "TkRFUlRFTVBFUkFUVVJFX0EQkScSKgolRFlFSU5HX0hFQURfWk9ORV81X1VO", - "REVSVEVNUEVSQVRVUkVfQRCSJxIqCiVEWUVJTkdfSEVBRF9aT05FXzZfVU5E", - "RVJURU1QRVJBVFVSRV9BEJMnEioKJURZRUlOR19IRUFEX1pPTkVfMV9VTkRF", - "UlRFTVBFUkFUVVJFX0IQlCcSKgolRFlFSU5HX0hFQURfWk9ORV8yX1VOREVS", - "VEVNUEVSQVRVUkVfQhCVJxIqCiVEWUVJTkdfSEVBRF9aT05FXzNfVU5ERVJU", - "RU1QRVJBVFVSRV9CEJYnEioKJURZRUlOR19IRUFEX1pPTkVfNF9VTkRFUlRF", - "TVBFUkFUVVJFX0IQlycSKgolRFlFSU5HX0hFQURfWk9ORV81X1VOREVSVEVN", - "UEVSQVRVUkVfQhCYJxIqCiVEWUVJTkdfSEVBRF9aT05FXzZfVU5ERVJURU1Q", - "RVJBVFVSRV9CEJknEiwKJ0RZRUlOR19IRUFEX1pPTkVfMV9DVVJSRU5UX09V", - "VF9PRl9SQU5HRRCaJxIsCidEWUVJTkdfSEVBRF9aT05FXzJfQ1VSUkVOVF9P", - "VVRfT0ZfUkFOR0UQmycSLAonRFlFSU5HX0hFQURfWk9ORV8zX0NVUlJFTlRf", - "T1VUX09GX1JBTkdFEJwnEiwKJ0RZRUlOR19IRUFEX1pPTkVfNF9DVVJSRU5U", - "X09VVF9PRl9SQU5HRRCdJxIsCidEWUVJTkdfSEVBRF9aT05FXzVfQ1VSUkVO", - "VF9PVVRfT0ZfUkFOR0UQnicSKgolRFlFSU5HX0hFQURfWk9ORV8xX0NVUlJF", - "TlRfTE9PUF9CUkVBSxCfJxIqCiVEWUVJTkdfSEVBRF9aT05FXzJfQ1VSUkVO", - "VF9MT09QX0JSRUFLEKAnEioKJURZRUlOR19IRUFEX1pPTkVfM19DVVJSRU5U", - "X0xPT1BfQlJFQUsQoScSKgolRFlFSU5HX0hFQURfWk9ORV80X0NVUlJFTlRf", - "TE9PUF9CUkVBSxCiJxIqCiVEWUVJTkdfSEVBRF9aT05FXzVfQ1VSUkVOVF9M", - "T09QX0JSRUFLEKMnEh8KGkRZRUlOR19IRUFEX1RIRVJNQUxfQ1VUT0ZGEKQn", - "EiMKHkRZRUlOR19IRUFEX0NPVkVSX09QRU5fVElNRU9VVBClJxIkCh9EWUVJ", - "TkdfSEVBRF9DT1ZFUl9DTE9TRV9USU1FT1VUEKYnEigKI0RZRUlOR19IRUFE", - "X0NPVkVSX01PVE9SX09WRVJDVVJSRU5UEKcnEiwKJ0RZRUlOR19IRUFEX0NP", - "VkVSX01PVE9SX09WRVJURU1QRVJBVFVSRRCoJxIiCh1EWUVJTkdfSEVBRF9D", - "T1ZFUl9NT1RPUl9TVEFMTBCpJxIpCiREWUVJTkdfSEVBRF9DT1ZFUl9NT1RP", - "Ul9VTkRFUlZPTFRBR0UQqicSNQowRFlFSU5HX0hFQURfQ0xFQU5JTkdfTUVD", - "SEFOSVNNX01PVE9SX09WRVJDVVJSRU5UEKsnEjkKNERZRUlOR19IRUFEX0NM", - "RUFOSU5HX01FQ0hBTklTTV9NT1RPUl9PVkVSVEVNUEVSQVRVUkUQrCcSLwoq", - "RFlFSU5HX0hFQURfQ0xFQU5JTkdfTUVDSEFOSVNNX01PVE9SX1NUQUxMEK0n", - "EjYKMURZRUlOR19IRUFEX0NMRUFOSU5HX01FQ0hBTklTTV9NT1RPUl9VTkRF", - "UlZPTFRBR0UQricSMAorRFlFSU5HX0hFQURfQ0xFQU5JTkdfSEVBRF9NT1RP", - "Ul9PVkVSQ1VSUkVOVBCvJxI0Ci9EWUVJTkdfSEVBRF9DTEVBTklOR19IRUFE", - "X01PVE9SX09WRVJURU1QRVJBVFVSRRCwJxIqCiVEWUVJTkdfSEVBRF9DTEVB", - "TklOR19IRUFEX01PVE9SX1NUQUxMELEnEjEKLERZRUlOR19IRUFEX0NMRUFO", - "SU5HX0hFQURfTU9UT1JfVU5ERVJWT0xUQUdFELInEicKIkRZRUlOR19IRUFE", - "X1pPTkVfN19PVkVSVEVNUEVSQVRVUkUQsycSJwoiRFlFSU5HX0hFQURfWk9O", - "RV84X09WRVJURU1QRVJBVFVSRRC0JxInCiJEWUVJTkdfSEVBRF9aT05FXzlf", - "T1ZFUlRFTVBFUkFUVVJFELUnEigKI0RZRUlOR19IRUFEX1pPTkVfMTBfT1ZF", - "UlRFTVBFUkFUVVJFELYnEigKI0RZRUlOR19IRUFEX1pPTkVfMTFfT1ZFUlRF", - "TVBFUkFUVVJFELcnEigKI0RZRUlOR19IRUFEX1pPTkVfMTJfT1ZFUlRFTVBF", - "UkFUVVJFELgnEioKJURZRUlOR19IRUFEX1pPTkVfN19VTkRFUlRFTVBFUkFU", - "VVJFX0EQuScSKgolRFlFSU5HX0hFQURfWk9ORV84X1VOREVSVEVNUEVSQVRV", - "UkVfQRC6JxIqCiVEWUVJTkdfSEVBRF9aT05FXzlfVU5ERVJURU1QRVJBVFVS", - "RV9BELsnEisKJkRZRUlOR19IRUFEX1pPTkVfMTBfVU5ERVJURU1QRVJBVFVS", - "RV9BELwnEisKJkRZRUlOR19IRUFEX1pPTkVfMTFfVU5ERVJURU1QRVJBVFVS", - "RV9BEL0nEisKJkRZRUlOR19IRUFEX1pPTkVfMTJfVU5ERVJURU1QRVJBVFVS", - "RV9BEL4nEioKJURZRUlOR19IRUFEX1pPTkVfN19VTkRFUlRFTVBFUkFUVVJF", - "X0IQvycSKgolRFlFSU5HX0hFQURfWk9ORV84X1VOREVSVEVNUEVSQVRVUkVf", - "QhDAJxIqCiVEWUVJTkdfSEVBRF9aT05FXzlfVU5ERVJURU1QRVJBVFVSRV9C", - "EMEnEisKJkRZRUlOR19IRUFEX1pPTkVfMTBfVU5ERVJURU1QRVJBVFVSRV9C", - "EMInEisKJkRZRUlOR19IRUFEX1pPTkVfMTFfVU5ERVJURU1QRVJBVFVSRV9C", - "EMMnEisKJkRZRUlOR19IRUFEX1pPTkVfMTJfVU5ERVJURU1QRVJBVFVSRV9C", - "EMQnEiwKJ0RZRUlOR19IRUFEX1pPTkVfNl9DVVJSRU5UX09VVF9PRl9SQU5H", - "RRDFJxIsCidEWUVJTkdfSEVBRF9aT05FXzdfQ1VSUkVOVF9PVVRfT0ZfUkFO", - "R0UQxicSLAonRFlFSU5HX0hFQURfWk9ORV84X0NVUlJFTlRfT1VUX09GX1JB", - "TkdFEMcnEiwKJ0RZRUlOR19IRUFEX1pPTkVfOV9DVVJSRU5UX09VVF9PRl9S", - "QU5HRRDIJxItCihEWUVJTkdfSEVBRF9aT05FXzEwX0NVUlJFTlRfT1VUX09G", - "X1JBTkdFEMknEi0KKERZRUlOR19IRUFEX1pPTkVfMTFfQ1VSUkVOVF9PVVRf", - "T0ZfUkFOR0UQyicSLQooRFlFSU5HX0hFQURfWk9ORV8xMl9DVVJSRU5UX09V", - "VF9PRl9SQU5HRRDLJxIqCiVEWUVJTkdfSEVBRF9aT05FXzZfQ1VSUkVOVF9M", - "T09QX0JSRUFLEMwnEioKJURZRUlOR19IRUFEX1pPTkVfN19DVVJSRU5UX0xP", - "T1BfQlJFQUsQzScSKgolRFlFSU5HX0hFQURfWk9ORV84X0NVUlJFTlRfTE9P", - "UF9CUkVBSxDOJxIqCiVEWUVJTkdfSEVBRF9aT05FXzlfQ1VSUkVOVF9MT09Q", - "X0JSRUFLEM8nEisKJkRZRUlOR19IRUFEX1pPTkVfMTBfQ1VSUkVOVF9MT09Q", - "X0JSRUFLENAnEisKJkRZRUlOR19IRUFEX1pPTkVfMTFfQ1VSUkVOVF9MT09Q", - "X0JSRUFLENEnEisKJkRZRUlOR19IRUFEX1pPTkVfMTJfQ1VSUkVOVF9MT09Q", - "X0JSRUFLENInEikKJERZRUlOR19IRUFEX0JMT1dFUl8xX09WRVJURU1QRVJB", - "VFVSRRDTJxIpCiREWUVJTkdfSEVBRF9CTE9XRVJfMl9PVkVSVEVNUEVSQVRV", - "UkUQ1CcSLAonRFlFSU5HX0hFQURfQkxPV0VSXzFfVU5ERVJURU1QRVJBVFVS", - "RV9BENUnEiwKJ0RZRUlOR19IRUFEX0JMT1dFUl8yX1VOREVSVEVNUEVSQVRV", - "UkVfQRDWJxIsCidEWUVJTkdfSEVBRF9CTE9XRVJfMV9VTkRFUlRFTVBFUkFU", - "VVJFX0IQ1ycSLAonRFlFSU5HX0hFQURfQkxPV0VSXzJfVU5ERVJURU1QRVJB", - "VFVSRV9CENgnEi4KKURZRUlOR19IRUFEX0JMT1dFUl8xX0NVUlJFTlRfT1VU", - "X09GX1JBTkdFENknEi4KKURZRUlOR19IRUFEX0JMT1dFUl8yX0NVUlJFTlRf", - "T1VUX09GX1JBTkdFENonEiwKJ0RZRUlOR19IRUFEX0JMT1dFUl8xX0NVUlJF", - "TlRfTE9PUF9CUkVBSxDbJxIsCidEWUVJTkdfSEVBRF9CTE9XRVJfMl9DVVJS", - "RU5UX0xPT1BfQlJFQUsQ3CcSJQogRFlFSU5HX0hFQURfQkxPV0VSXzFfRkFO", - "X1NUT1BQRUQQ3ScSJQogRFlFSU5HX0hFQURfQkxPV0VSXzJfRkFOX1NUT1BQ", - "RUQQ3icSKQokRFlFSU5HX0hFQURfQkxPV0VSXzFfRkFOX1JQTV9UT09fTE9X", - "EN8nEikKJERZRUlOR19IRUFEX0JMT1dFUl8yX0ZBTl9SUE1fVE9PX0xPVxDg", - "JxIqCiVEWUVJTkdfSEVBRF9SSUdIVF9BQ1RVQVRPUl9VUF9USU1FT1VUEOEn", - "EikKJERZRUlOR19IRUFEX0xFRlRfQUNUVUFUT1JfVVBfVElNRU9VVBDiJxIs", - "CidEWUVJTkdfSEVBRF9SSUdIVF9BQ1RVQVRPUl9ET1dOX1RJTUVPVVQQ4ycS", - "KwomRFlFSU5HX0hFQURfTEVGVF9BQ1RVQVRPUl9ET1dOX1RJTUVPVVQQ5CcS", - "JwoiRFlFSU5HX0hFQURfQkxPV0VSXzFfRkxPV19UT09fSElHSBDlJxInCiJE", - "WUVJTkdfSEVBRF9CTE9XRVJfMl9GTE9XX1RPT19ISUdIEOYnEiYKIURZRUlO", - "R19IRUFEX0JMT1dFUl8xX0ZMT1dfVE9PX0xPVxDnJxImCiFEWUVJTkdfSEVB", - "RF9CTE9XRVJfMl9GTE9XX1RPT19MT1cQ6CcSIAobRFlFSU5HX0hFQURfQVJD", - "X0xJRF9JU19PUEVOEOknEiMKHkRZRUlOR19IRUFEX1RVTk5FTF9MSURfSVNf", - "T1BFThDqJxIaChVNSVhFUl9PVkVSVEVNUEVSQVRVUkUQ8C4SHQoYTUlYRVJf", - "VU5ERVJURU1QRVJBVFVSRV9BEPEuEh0KGE1JWEVSX1VOREVSVEVNUEVSQVRV", - "UkVfQhDyLhIZChRNSVhFUl9USEVSTUFMX0NVVE9GRhDzLhIfChpNSVhFUl9D", - "VVJSRU5UX09VVF9PRl9SQU5HRRD0LhIdChhNSVhFUl9DVVJSRU5UX0xPT1Bf", - "QlJFQUsQ9S4SHQoYRElTUEVOU0VSXzFfT1ZFUlBSRVNTVVJFENg2Eh0KGERJ", - "U1BFTlNFUl8yX09WRVJQUkVTU1VSRRDZNhIdChhESVNQRU5TRVJfM19PVkVS", - "UFJFU1NVUkUQ2jYSHQoYRElTUEVOU0VSXzRfT1ZFUlBSRVNTVVJFENs2Eh0K", - "GERJU1BFTlNFUl81X09WRVJQUkVTU1VSRRDcNhIdChhESVNQRU5TRVJfNl9P", - "VkVSUFJFU1NVUkUQ3TYSHQoYRElTUEVOU0VSXzdfT1ZFUlBSRVNTVVJFEN42", - "Eh0KGERJU1BFTlNFUl84X09WRVJQUkVTU1VSRRDfNhIeChlESVNQRU5TRVJf", - "MV9VTkRFUlBSRVNTVVJFEOA2Eh4KGURJU1BFTlNFUl8yX1VOREVSUFJFU1NV", - "UkUQ4TYSHgoZRElTUEVOU0VSXzNfVU5ERVJQUkVTU1VSRRDiNhIeChlESVNQ", - "RU5TRVJfNF9VTkRFUlBSRVNTVVJFEOM2Eh4KGURJU1BFTlNFUl81X1VOREVS", - "UFJFU1NVUkUQ5DYSHgoZRElTUEVOU0VSXzZfVU5ERVJQUkVTU1VSRRDlNhIe", - "ChlESVNQRU5TRVJfN19VTkRFUlBSRVNTVVJFEOY2Eh4KGURJU1BFTlNFUl84", - "X1VOREVSUFJFU1NVUkUQ5zYSFgoRRElTUEVOU0VSXzFfRU1QVFkQ6DYSFgoR", - "RElTUEVOU0VSXzJfRU1QVFkQ6TYSFgoRRElTUEVOU0VSXzNfRU1QVFkQ6jYS", - "FgoRRElTUEVOU0VSXzRfRU1QVFkQ6zYSFgoRRElTUEVOU0VSXzVfRU1QVFkQ", - "7DYSFgoRRElTUEVOU0VSXzZfRU1QVFkQ7TYSFgoRRElTUEVOU0VSXzdfRU1Q", - "VFkQ7jYSFgoRRElTUEVOU0VSXzhfRU1QVFkQ7zYSHwoaRElTUEVOU0VSXzFf", - "UkVGSUxMX0ZBSUxVUkUQ8DYSHwoaRElTUEVOU0VSXzJfUkVGSUxMX0ZBSUxV", - "UkUQ8TYSHwoaRElTUEVOU0VSXzNfUkVGSUxMX0ZBSUxVUkUQ8jYSHwoaRElT", - "UEVOU0VSXzRfUkVGSUxMX0ZBSUxVUkUQ8zYSHwoaRElTUEVOU0VSXzVfUkVG", - "SUxMX0ZBSUxVUkUQ9DYSHwoaRElTUEVOU0VSXzZfUkVGSUxMX0ZBSUxVUkUQ", - "9TYSHwoaRElTUEVOU0VSXzdfUkVGSUxMX0ZBSUxVUkUQ9jYSHwoaRElTUEVO", - "U0VSXzhfUkVGSUxMX0ZBSUxVUkUQ9zYSIgodRElTUEVOU0VSXzFfTU9UT1Jf", - "T1ZFUkNVUlJFTlQQ+DYSIgodRElTUEVOU0VSXzJfTU9UT1JfT1ZFUkNVUlJF", - "TlQQ+TYSIgodRElTUEVOU0VSXzNfTU9UT1JfT1ZFUkNVUlJFTlQQ+jYSIgod", - "RElTUEVOU0VSXzRfTU9UT1JfT1ZFUkNVUlJFTlQQ+zYSIgodRElTUEVOU0VS", - "XzVfTU9UT1JfT1ZFUkNVUlJFTlQQ/DYSIgodRElTUEVOU0VSXzZfTU9UT1Jf", - "T1ZFUkNVUlJFTlQQ/TYSIgodRElTUEVOU0VSXzdfTU9UT1JfT1ZFUkNVUlJF", - "TlQQ/jYSIgodRElTUEVOU0VSXzhfTU9UT1JfT1ZFUkNVUlJFTlQQ/zYSJgoh", - "RElTUEVOU0VSXzFfTU9UT1JfT1ZFUlRFTVBFUkFUVVJFEIA3EiYKIURJU1BF", - "TlNFUl8yX01PVE9SX09WRVJURU1QRVJBVFVSRRCBNxImCiFESVNQRU5TRVJf", - "M19NT1RPUl9PVkVSVEVNUEVSQVRVUkUQgjcSJgohRElTUEVOU0VSXzRfTU9U", - "T1JfT1ZFUlRFTVBFUkFUVVJFEIM3EiYKIURJU1BFTlNFUl81X01PVE9SX09W", - "RVJURU1QRVJBVFVSRRCENxImCiFESVNQRU5TRVJfNl9NT1RPUl9PVkVSVEVN", - "UEVSQVRVUkUQhTcSJgohRElTUEVOU0VSXzdfTU9UT1JfT1ZFUlRFTVBFUkFU", - "VVJFEIY3EiYKIURJU1BFTlNFUl84X01PVE9SX09WRVJURU1QRVJBVFVSRRCH", - "NxIcChdESVNQRU5TRVJfMV9NT1RPUl9TVEFMTBCINxIcChdESVNQRU5TRVJf", - "Ml9NT1RPUl9TVEFMTBCJNxIcChdESVNQRU5TRVJfM19NT1RPUl9TVEFMTBCK", - "NxIcChdESVNQRU5TRVJfNF9NT1RPUl9TVEFMTBCLNxIcChdESVNQRU5TRVJf", - "NV9NT1RPUl9TVEFMTBCMNxIcChdESVNQRU5TRVJfNl9NT1RPUl9TVEFMTBCN", - "NxIcChdESVNQRU5TRVJfN19NT1RPUl9TVEFMTBCONxIcChdESVNQRU5TRVJf", - "OF9NT1RPUl9TVEFMTBCPNxIjCh5ESVNQRU5TRVJfMV9NT1RPUl9VTkRFUlZP", - "TFRBR0UQkDcSIwoeRElTUEVOU0VSXzJfTU9UT1JfVU5ERVJWT0xUQUdFEJE3", - "EiMKHkRJU1BFTlNFUl8zX01PVE9SX1VOREVSVk9MVEFHRRCSNxIjCh5ESVNQ", - "RU5TRVJfNF9NT1RPUl9VTkRFUlZPTFRBR0UQkzcSIwoeRElTUEVOU0VSXzVf", - "TU9UT1JfVU5ERVJWT0xUQUdFEJQ3EiMKHkRJU1BFTlNFUl82X01PVE9SX1VO", - "REVSVk9MVEFHRRCVNxIjCh5ESVNQRU5TRVJfN19NT1RPUl9VTkRFUlZPTFRB", - "R0UQljcSIwoeRElTUEVOU0VSXzhfTU9UT1JfVU5ERVJWT0xUQUdFEJc3EiEK", - "HERJU1BFTlNFUl8xX1VQUEVSX0hBUkRfTElNSVQQmDcSIQocRElTUEVOU0VS", - "XzJfVVBQRVJfSEFSRF9MSU1JVBCZNxIhChxESVNQRU5TRVJfM19VUFBFUl9I", - "QVJEX0xJTUlUEJo3EiEKHERJU1BFTlNFUl80X1VQUEVSX0hBUkRfTElNSVQQ", - "mzcSIQocRElTUEVOU0VSXzVfVVBQRVJfSEFSRF9MSU1JVBCcNxIhChxESVNQ", - "RU5TRVJfNl9VUFBFUl9IQVJEX0xJTUlUEJ03EiEKHERJU1BFTlNFUl83X1VQ", - "UEVSX0hBUkRfTElNSVQQnjcSIQocRElTUEVOU0VSXzhfVVBQRVJfSEFSRF9M", - "SU1JVBCfNxIhChxESVNQRU5TRVJfMV9MT1dFUl9IQVJEX0xJTUlUEKA3EiEK", - "HERJU1BFTlNFUl8yX0xPV0VSX0hBUkRfTElNSVQQoTcSIQocRElTUEVOU0VS", - "XzNfTE9XRVJfSEFSRF9MSU1JVBCiNxIhChxESVNQRU5TRVJfNF9MT1dFUl9I", - "QVJEX0xJTUlUEKM3EiEKHERJU1BFTlNFUl81X0xPV0VSX0hBUkRfTElNSVQQ", - "pDcSIQocRElTUEVOU0VSXzZfTE9XRVJfSEFSRF9MSU1JVBClNxIhChxESVNQ", - "RU5TRVJfN19MT1dFUl9IQVJEX0xJTUlUEKY3EiEKHERJU1BFTlNFUl84X0xP", - "V0VSX0hBUkRfTElNSVQQpzcSHgoZRElTUEVOU0VSXzFfSElHSF9QUkVTU1VS", - "RRCoNxIeChlESVNQRU5TRVJfMl9ISUdIX1BSRVNTVVJFEKk3Eh4KGURJU1BF", - "TlNFUl8zX0hJR0hfUFJFU1NVUkUQqjcSHgoZRElTUEVOU0VSXzRfSElHSF9Q", - "UkVTU1VSRRCrNxIeChlESVNQRU5TRVJfNV9ISUdIX1BSRVNTVVJFEKw3Eh4K", - "GURJU1BFTlNFUl82X0hJR0hfUFJFU1NVUkUQrTcSHgoZRElTUEVOU0VSXzdf", - "SElHSF9QUkVTU1VSRRCuNxIeChlESVNQRU5TRVJfOF9ISUdIX1BSRVNTVVJF", - "EK83EhkKFE1JRF9UQU5LXzFfTE9XX0xFVkVMEMA+EhkKFE1JRF9UQU5LXzJf", - "TE9XX0xFVkVMEME+EhkKFE1JRF9UQU5LXzNfTE9XX0xFVkVMEMI+EhkKFE1J", - "RF9UQU5LXzRfTE9XX0xFVkVMEMM+EhkKFE1JRF9UQU5LXzVfTE9XX0xFVkVM", - "EMQ+EhkKFE1JRF9UQU5LXzZfTE9XX0xFVkVMEMU+EhkKFE1JRF9UQU5LXzdf", - "TE9XX0xFVkVMEMY+EhkKFE1JRF9UQU5LXzhfTE9XX0xFVkVMEMc+EhUKEE1J", - "RF9UQU5LXzFfRU1QVFkQyD4SFQoQTUlEX1RBTktfMl9FTVBUWRDJPhIVChBN", - "SURfVEFOS18zX0VNUFRZEMo+EhUKEE1JRF9UQU5LXzRfRU1QVFkQyz4SFQoQ", - "TUlEX1RBTktfNV9FTVBUWRDMPhIVChBNSURfVEFOS182X0VNUFRZEM0+EhUK", - "EE1JRF9UQU5LXzdfRU1QVFkQzj4SFQoQTUlEX1RBTktfOF9FTVBUWRDPPhIY", - "ChNNSURfVEFOS18xX09WRVJGTE9XENA+EhgKE01JRF9UQU5LXzJfT1ZFUkZM", - "T1cQ0T4SGAoTTUlEX1RBTktfM19PVkVSRkxPVxDSPhIYChNNSURfVEFOS180", - "X09WRVJGTE9XENM+EhgKE01JRF9UQU5LXzVfT1ZFUkZMT1cQ1D4SGAoTTUlE", - "X1RBTktfNl9PVkVSRkxPVxDVPhIYChNNSURfVEFOS183X09WRVJGTE9XENY+", - "EhgKE01JRF9UQU5LXzhfT1ZFUkZMT1cQ1z4SHAoXTUlEX1RBTktfMV9GSUxM", - "X1RJTUVPVVQQ2D4SHAoXTUlEX1RBTktfMl9GSUxMX1RJTUVPVVQQ2T4SHAoX", - "TUlEX1RBTktfM19GSUxMX1RJTUVPVVQQ2j4SHAoXTUlEX1RBTktfNF9GSUxM", - "X1RJTUVPVVQQ2z4SHAoXTUlEX1RBTktfNV9GSUxMX1RJTUVPVVQQ3D4SHAoX", - "TUlEX1RBTktfNl9GSUxMX1RJTUVPVVQQ3T4SHAoXTUlEX1RBTktfN19GSUxM", - "X1RJTUVPVVQQ3j4SHAoXTUlEX1RBTktfOF9GSUxMX1RJTUVPVVQQ3z4SHQoY", - "QUlSX0ZJTFRFUl9OT1RfSU5TVEFMTEVEEKhGEhcKEkFJUl9GSUxURVJfQ0xP", - "R0dFRBCpRhIlCiBXQVNURV9DT05UQUlORVJfRU1QVFlJTkdfVElNRU9VVBCq", - "RhIUCg9OT19BSVJfUFJFU1NVUkUQq0YSHQoYV0FTVEVfQ09OVEFJTkVSX09W", - "RVJGTE9XEKxGEhoKFVZPQ19TRU5TT1JfQUxBUk1fVElNRRCtRhIYChNDSElM", - "TEVSX0RSWV9DT05UQUNUEK5GEhoKFUlOU1VGRklDSUVOVF9BSVJfRkxPVxCv", - "RhIbChZWT0NfU0VOU09SX0FMQVJNX1NMT1BFELBGEh0KGFBSRV9DT09MRVJf", - "RkFOXzFfU1RPUFBFRBCxRhIdChhQUkVfQ09PTEVSX0ZBTl8yX1NUT1BQRUQQ", - "skYSGQoUQ09PTEVSX0ZBTl8xX1NUT1BQRUQQs0YSGQoUQ09PTEVSX0ZBTl8y", - "X1NUT1BQRUQQtEYSGQoUQ09PTEVSX0ZBTl8zX1NUT1BQRUQQtUYSGQoUQ09P", - "TEVSX0ZBTl80X1NUT1BQRUQQtkYSIQocUFJFX0NPT0xFUl9GQU5fMV9SUE1f", - "VE9PX0xPVxC3RhIhChxQUkVfQ09PTEVSX0ZBTl8yX1JQTV9UT09fTE9XELhG", - "Eh0KGENPT0xFUl9GQU5fMV9SUE1fVE9PX0xPVxC5RhIdChhDT09MRVJfRkFO", - "XzJfUlBNX1RPT19MT1cQukYSHQoYQ09PTEVSX0ZBTl8zX1JQTV9UT09fTE9X", - "ELtGEh0KGENPT0xFUl9GQU5fNF9SUE1fVE9PX0xPVxC8RhIgChtDT09MRVJf", - "VEVNUEVSQVRVUkVfVE9PX0hJR0gQvUYSHwoaQ09PTEVSX1RFTVBFUkFUVVJF", - "X1RPT19MT1cQvkYSKgolSU5LX0NBUlRSSURHRV9QUkVTRU5DRV9TRU5TT1Jf", - "VElNRU9VVBCQThIfChpJTktfQ0FSVFJJREdFX1JGSURfVElNRU9VVBCRThIh", - "ChxOT19XQVNURV9DQVJUUklER0VfQVZBSUxBQkxFEJJOEh4KGUFMTF9XQVNU", - "RV9DQVJUUklER0VTX0ZVTEwQk04SLAonV0FTVEVfQ0FSVFJJREdFX1BSRVNF", - "TkNFX1NFTlNPUl9USU1FT1VUEJROEiEKHFdBU1RFX0NBUlRSSURHRV9SRklE", - "X1RJTUVPVVQQlU5CIQofY29tLnR3aW5lLnRhbmdvLnBtci5kaWFnbm9zdGlj", - "c2IGcHJvdG8z")); + "Ch1URU1QRVJBVFVSRV9NRUFTVVJFTUVOVF9FUlJPUhDlDxIlCiBSRklEX1JF", + "QURFUl9NQUxGVU5DVElPTl9JTktfU0xPVBDmDxIpCiRSRklEX1JFQURFUl9N", + "QUxGVU5DVElPTl9XQVNURV9TTE9UXzEQ5w8SKQokUkZJRF9SRUFERVJfTUFM", + "RlVOQ1RJT05fV0FTVEVfU0xPVF8yEOgPEhEKDFRIUkVBRF9CUkVBSxC4FxIx", + "CixUSFJFQURfVEVOU0lPTl9DT05UUk9MX0ZBSUxVUkVfRkVFREVSX0RBTkNF", + "UhC5FxIfChpXSU5ERVJfQ09ORV9ET0VTX05PVF9FWElTVBC6FxIdChhGRUVE", + "RVJfTU9UT1JfT1ZFUkNVUlJFTlQQuxcSIwoeUklHSFRfTE9BREVSX01PVE9S", + "X09WRVJDVVJSRU5UELwXEh0KGFBVTExFUl9NT1RPUl9PVkVSQ1VSUkVOVBC9", + "FxIiCh1MRUZUX0xPQURFUl9NT1RPUl9PVkVSQ1VSUkVOVBC+FxIdChhXSU5E", + "RVJfTU9UT1JfT1ZFUkNVUlJFTlQQvxcSHAoXU0NSRVdfTU9UT1JfT1ZFUkNV", + "UlJFTlQQwBcSIgodTE9BRElOR19BUk1fTU9UT1JfT1ZFUkNVUlJFTlQQwRcS", + "IQocRkVFREVSX01PVE9SX09WRVJURU1QRVJBVFVSRRDCFxInCiJSSUdIVF9M", + "T0FERVJfTU9UT1JfT1ZFUlRFTVBFUkFUVVJFEMMXEiEKHFBVTExFUl9NT1RP", + "Ul9PVkVSVEVNUEVSQVRVUkUQxBcSJgohTEVGVF9MT0FERVJfTU9UT1JfT1ZF", + "UlRFTVBFUkFUVVJFEMUXEiEKHFdJTkRFUl9NT1RPUl9PVkVSVEVNUEVSQVRV", + "UkUQxhcSIAobU0NSRVdfTU9UT1JfT1ZFUlRFTVBFUkFUVVJFEMcXEiYKIUxP", + "QURJTkdfQVJNX01PVE9SX09WRVJURU1QRVJBVFVSRRDIFxIXChJGRUVERVJf", + "TU9UT1JfU1RBTEwQyRcSHQoYUklHSFRfTE9BREVSX01PVE9SX1NUQUxMEMoX", + "EhcKElBVTExFUl9NT1RPUl9TVEFMTBDLFxIcChdMRUZUX0xPQURFUl9NT1RP", + "Ul9TVEFMTBDMFxIXChJXSU5ERVJfTU9UT1JfU1RBTEwQzRcSFgoRU0NSRVdf", + "TU9UT1JfU1RBTEwQzhcSHAoXTE9BRElOR19BUk1fTU9UT1JfU1RBTEwQzxcS", + "HgoZRkVFREVSX01PVE9SX1VOREVSVk9MVEFHRRDQFxIkCh9SSUdIVF9MT0FE", + "RVJfTU9UT1JfVU5ERVJWT0xUQUdFENEXEh4KGVBVTExFUl9NT1RPUl9VTkRF", + "UlZPTFRBR0UQ0hcSIwoeTEVGVF9MT0FERVJfTU9UT1JfVU5ERVJWT0xUQUdF", + "ENMXEh4KGVdJTkRFUl9NT1RPUl9VTkRFUlZPTFRBR0UQ1BcSHQoYU0NSRVdf", + "TU9UT1JfVU5ERVJWT0xUQUdFENUXEiMKHkxPQURJTkdfQVJNX01PVE9SX1VO", + "REVSVk9MVEFHRRDWFxIUCg9MVEZVX1VQX1RJTUVPVVQQ1xcSFgoRTFRGVV9E", + "T1dOX1RJTUVPVVQQ2BcSFAoPUlRGVV9VUF9USU1FT1VUENkXEhYKEVJURlVf", + "RE9XTl9USU1FT1VUENoXEh4KGVNDUkVXX01PVE9SX0xJTUlUX1RJTUVPVVQQ", + "2xcSJAofV0lOREVSX0RBTkNFUl9NT1RPUl9PVkVSQ1VSUkVOVBDcFxIkCh9Q", + "VUxMRVJfREFOQ0VSX01PVE9SX09WRVJDVVJSRU5UEN0XEiQKH0ZFRURFUl9E", + "QU5DRVJfTU9UT1JfT1ZFUkNVUlJFTlQQ3hcSKAojV0lOREVSX0RBTkNFUl9N", + "T1RPUl9PVkVSVEVNUEVSQVRVUkUQ3xcSKAojUFVMTEVSX0RBTkNFUl9NT1RP", + "Ul9PVkVSVEVNUEVSQVRVUkUQ4BcSKAojRkVFREVSX0RBTkNFUl9NT1RPUl9P", + "VkVSVEVNUEVSQVRVUkUQ4RcSHgoZV0lOREVSX0RBTkNFUl9NT1RPUl9TVEFM", + "TBDiFxIeChlQVUxMRVJfREFOQ0VSX01PVE9SX1NUQUxMEOMXEh4KGUZFRURF", + "Ul9EQU5DRVJfTU9UT1JfU1RBTEwQ5BcSJQogV0lOREVSX0RBTkNFUl9NT1RP", + "Ul9VTkRFUlZPTFRBR0UQ5RcSJQogUFVMTEVSX0RBTkNFUl9NT1RPUl9VTkRF", + "UlZPTFRBR0UQ5hcSJQogRkVFREVSX0RBTkNFUl9NT1RPUl9VTkRFUlZPTFRB", + "R0UQ5xcSMQosVEhSRUFEX1RFTlNJT05fQ09OVFJPTF9GQUlMVVJFX1BVTExF", + "Ul9EQU5DRVIQ6BcSMQosVEhSRUFEX1RFTlNJT05fQ09OVFJPTF9GQUlMVVJF", + "X1dJTkRFUl9EQU5DRVIQ6RcSJQogTUFDSElORV9TVEFURV9OT19USFJFQURf", + "REVURUNURUQQ6hcSGQoUVEhSRUFEX0xPQURJTkdfRVJST1IQ6xcSHAoXRFJZ", + "RVJfTU9UT1JfT1ZFUkNVUlJFTlQQoB8SIAobRFJZRVJfTU9UT1JfT1ZFUlRF", + "TVBFUkFUVVJFEKEfEhYKEURSWUVSX01PVE9SX1NUQUxMEKIfEh0KGERSWUVS", + "X01PVE9SX1VOREVSVk9MVEFHRRCjHxIUCg9EUllFUl9ET09SX09QRU4QpB8S", + "IQocRFJZRVJfWk9ORV8xX09WRVJURU1QRVJBVFVSRRClHxIhChxEUllFUl9a", + "T05FXzJfT1ZFUlRFTVBFUkFUVVJFEKYfEiQKH0RSWUVSX1pPTkVfMV9VTkRF", + "UlRFTVBFUkFUVVJFX0EQpx8SJAofRFJZRVJfWk9ORV8xX1VOREVSVEVNUEVS", + "QVRVUkVfQhCoHxIkCh9EUllFUl9aT05FXzJfVU5ERVJURU1QRVJBVFVSRV9C", + "EKkfEhkKFERSWUVSX1RIRVJNQUxfQ1VUT0ZGEKofEi4KKURSWUVSX0hFQVRF", + "UlNfWk9ORV8xX0NVUlJFTlRfT1VUX09GX1JBTkdFEKsfEi4KKURSWUVSX0hF", + "QVRFUlNfWk9ORV8yX0NVUlJFTlRfT1VUX09GX1JBTkdFEKwfEiwKJ0RSWUVS", + "X0hFQVRFUlNfWk9ORV8xX0NVUlJFTlRfTE9PUF9CUkVBSxCtHxIsCidEUllF", + "Ul9IRUFURVJTX1pPTkVfMl9DVVJSRU5UX0xPT1BfQlJFQUsQrh8SGgoVRFJZ", + "RVJfRkFOX1JQTV9UT09fTE9XEK8fEhYKEURSWUVSX0ZBTl9TVE9QUEVEELAf", + "EiAKG0RSWUVSX0xJRF9NT1RPUl9PVkVSQ1VSUkVOVBCxHxIkCh9EUllFUl9M", + "SURfTU9UT1JfT1ZFUlRFTVBFUkFUVVJFELIfEhoKFURSWUVSX0xJRF9NT1RP", + "Ul9TVEFMTBCzHxIhChxEUllFUl9MSURfTU9UT1JfVU5ERVJWT0xUQUdFELQf", + "EiQKH0RSWUVSX1pPTkVfMl9VTkRFUlRFTVBFUkFUVVJFX0EQtR8SJwoiRFlF", + "SU5HX0hFQURfWk9ORV8xX09WRVJURU1QRVJBVFVSRRCIJxInCiJEWUVJTkdf", + "SEVBRF9aT05FXzJfT1ZFUlRFTVBFUkFUVVJFEIknEicKIkRZRUlOR19IRUFE", + "X1pPTkVfM19PVkVSVEVNUEVSQVRVUkUQiicSJwoiRFlFSU5HX0hFQURfWk9O", + "RV80X09WRVJURU1QRVJBVFVSRRCLJxInCiJEWUVJTkdfSEVBRF9aT05FXzVf", + "T1ZFUlRFTVBFUkFUVVJFEIwnEicKIkRZRUlOR19IRUFEX1pPTkVfNl9PVkVS", + "VEVNUEVSQVRVUkUQjScSKgolRFlFSU5HX0hFQURfWk9ORV8xX1VOREVSVEVN", + "UEVSQVRVUkVfQRCOJxIqCiVEWUVJTkdfSEVBRF9aT05FXzJfVU5ERVJURU1Q", + "RVJBVFVSRV9BEI8nEioKJURZRUlOR19IRUFEX1pPTkVfM19VTkRFUlRFTVBF", + "UkFUVVJFX0EQkCcSKgolRFlFSU5HX0hFQURfWk9ORV80X1VOREVSVEVNUEVS", + "QVRVUkVfQRCRJxIqCiVEWUVJTkdfSEVBRF9aT05FXzVfVU5ERVJURU1QRVJB", + "VFVSRV9BEJInEioKJURZRUlOR19IRUFEX1pPTkVfNl9VTkRFUlRFTVBFUkFU", + "VVJFX0EQkycSKgolRFlFSU5HX0hFQURfWk9ORV8xX1VOREVSVEVNUEVSQVRV", + "UkVfQhCUJxIqCiVEWUVJTkdfSEVBRF9aT05FXzJfVU5ERVJURU1QRVJBVFVS", + "RV9CEJUnEioKJURZRUlOR19IRUFEX1pPTkVfM19VTkRFUlRFTVBFUkFUVVJF", + "X0IQlicSKgolRFlFSU5HX0hFQURfWk9ORV80X1VOREVSVEVNUEVSQVRVUkVf", + "QhCXJxIqCiVEWUVJTkdfSEVBRF9aT05FXzVfVU5ERVJURU1QRVJBVFVSRV9C", + "EJgnEioKJURZRUlOR19IRUFEX1pPTkVfNl9VTkRFUlRFTVBFUkFUVVJFX0IQ", + "mScSLAonRFlFSU5HX0hFQURfWk9ORV8xX0NVUlJFTlRfT1VUX09GX1JBTkdF", + "EJonEiwKJ0RZRUlOR19IRUFEX1pPTkVfMl9DVVJSRU5UX09VVF9PRl9SQU5H", + "RRCbJxIsCidEWUVJTkdfSEVBRF9aT05FXzNfQ1VSUkVOVF9PVVRfT0ZfUkFO", + "R0UQnCcSLAonRFlFSU5HX0hFQURfWk9ORV80X0NVUlJFTlRfT1VUX09GX1JB", + "TkdFEJ0nEiwKJ0RZRUlOR19IRUFEX1pPTkVfNV9DVVJSRU5UX09VVF9PRl9S", + "QU5HRRCeJxIqCiVEWUVJTkdfSEVBRF9aT05FXzFfQ1VSUkVOVF9MT09QX0JS", + "RUFLEJ8nEioKJURZRUlOR19IRUFEX1pPTkVfMl9DVVJSRU5UX0xPT1BfQlJF", + "QUsQoCcSKgolRFlFSU5HX0hFQURfWk9ORV8zX0NVUlJFTlRfTE9PUF9CUkVB", + "SxChJxIqCiVEWUVJTkdfSEVBRF9aT05FXzRfQ1VSUkVOVF9MT09QX0JSRUFL", + "EKInEioKJURZRUlOR19IRUFEX1pPTkVfNV9DVVJSRU5UX0xPT1BfQlJFQUsQ", + "oycSHwoaRFlFSU5HX0hFQURfVEhFUk1BTF9DVVRPRkYQpCcSIwoeRFlFSU5H", + "X0hFQURfQ09WRVJfT1BFTl9USU1FT1VUEKUnEiQKH0RZRUlOR19IRUFEX0NP", + "VkVSX0NMT1NFX1RJTUVPVVQQpicSKAojRFlFSU5HX0hFQURfQ09WRVJfTU9U", + "T1JfT1ZFUkNVUlJFTlQQpycSLAonRFlFSU5HX0hFQURfQ09WRVJfTU9UT1Jf", + "T1ZFUlRFTVBFUkFUVVJFEKgnEiIKHURZRUlOR19IRUFEX0NPVkVSX01PVE9S", + "X1NUQUxMEKknEikKJERZRUlOR19IRUFEX0NPVkVSX01PVE9SX1VOREVSVk9M", + "VEFHRRCqJxI1CjBEWUVJTkdfSEVBRF9DTEVBTklOR19NRUNIQU5JU01fTU9U", + "T1JfT1ZFUkNVUlJFTlQQqycSOQo0RFlFSU5HX0hFQURfQ0xFQU5JTkdfTUVD", + "SEFOSVNNX01PVE9SX09WRVJURU1QRVJBVFVSRRCsJxIvCipEWUVJTkdfSEVB", + "RF9DTEVBTklOR19NRUNIQU5JU01fTU9UT1JfU1RBTEwQrScSNgoxRFlFSU5H", + "X0hFQURfQ0xFQU5JTkdfTUVDSEFOSVNNX01PVE9SX1VOREVSVk9MVEFHRRCu", + "JxIwCitEWUVJTkdfSEVBRF9DTEVBTklOR19IRUFEX01PVE9SX09WRVJDVVJS", + "RU5UEK8nEjQKL0RZRUlOR19IRUFEX0NMRUFOSU5HX0hFQURfTU9UT1JfT1ZF", + "UlRFTVBFUkFUVVJFELAnEioKJURZRUlOR19IRUFEX0NMRUFOSU5HX0hFQURf", + "TU9UT1JfU1RBTEwQsScSMQosRFlFSU5HX0hFQURfQ0xFQU5JTkdfSEVBRF9N", + "T1RPUl9VTkRFUlZPTFRBR0UQsicSJwoiRFlFSU5HX0hFQURfWk9ORV83X09W", + "RVJURU1QRVJBVFVSRRCzJxInCiJEWUVJTkdfSEVBRF9aT05FXzhfT1ZFUlRF", + "TVBFUkFUVVJFELQnEicKIkRZRUlOR19IRUFEX1pPTkVfOV9PVkVSVEVNUEVS", + "QVRVUkUQtScSKAojRFlFSU5HX0hFQURfWk9ORV8xMF9PVkVSVEVNUEVSQVRV", + "UkUQticSKAojRFlFSU5HX0hFQURfWk9ORV8xMV9PVkVSVEVNUEVSQVRVUkUQ", + "tycSKAojRFlFSU5HX0hFQURfWk9ORV8xMl9PVkVSVEVNUEVSQVRVUkUQuCcS", + "KgolRFlFSU5HX0hFQURfWk9ORV83X1VOREVSVEVNUEVSQVRVUkVfQRC5JxIq", + "CiVEWUVJTkdfSEVBRF9aT05FXzhfVU5ERVJURU1QRVJBVFVSRV9BELonEioK", + "JURZRUlOR19IRUFEX1pPTkVfOV9VTkRFUlRFTVBFUkFUVVJFX0EQuycSKwom", + "RFlFSU5HX0hFQURfWk9ORV8xMF9VTkRFUlRFTVBFUkFUVVJFX0EQvCcSKwom", + "RFlFSU5HX0hFQURfWk9ORV8xMV9VTkRFUlRFTVBFUkFUVVJFX0EQvScSKwom", + "RFlFSU5HX0hFQURfWk9ORV8xMl9VTkRFUlRFTVBFUkFUVVJFX0EQvicSKgol", + "RFlFSU5HX0hFQURfWk9ORV83X1VOREVSVEVNUEVSQVRVUkVfQhC/JxIqCiVE", + "WUVJTkdfSEVBRF9aT05FXzhfVU5ERVJURU1QRVJBVFVSRV9CEMAnEioKJURZ", + "RUlOR19IRUFEX1pPTkVfOV9VTkRFUlRFTVBFUkFUVVJFX0IQwScSKwomRFlF", + "SU5HX0hFQURfWk9ORV8xMF9VTkRFUlRFTVBFUkFUVVJFX0IQwicSKwomRFlF", + "SU5HX0hFQURfWk9ORV8xMV9VTkRFUlRFTVBFUkFUVVJFX0IQwycSKwomRFlF", + "SU5HX0hFQURfWk9ORV8xMl9VTkRFUlRFTVBFUkFUVVJFX0IQxCcSLAonRFlF", + "SU5HX0hFQURfWk9ORV82X0NVUlJFTlRfT1VUX09GX1JBTkdFEMUnEiwKJ0RZ", + "RUlOR19IRUFEX1pPTkVfN19DVVJSRU5UX09VVF9PRl9SQU5HRRDGJxIsCidE", + "WUVJTkdfSEVBRF9aT05FXzhfQ1VSUkVOVF9PVVRfT0ZfUkFOR0UQxycSLAon", + "RFlFSU5HX0hFQURfWk9ORV85X0NVUlJFTlRfT1VUX09GX1JBTkdFEMgnEi0K", + "KERZRUlOR19IRUFEX1pPTkVfMTBfQ1VSUkVOVF9PVVRfT0ZfUkFOR0UQyScS", + "LQooRFlFSU5HX0hFQURfWk9ORV8xMV9DVVJSRU5UX09VVF9PRl9SQU5HRRDK", + "JxItCihEWUVJTkdfSEVBRF9aT05FXzEyX0NVUlJFTlRfT1VUX09GX1JBTkdF", + "EMsnEioKJURZRUlOR19IRUFEX1pPTkVfNl9DVVJSRU5UX0xPT1BfQlJFQUsQ", + "zCcSKgolRFlFSU5HX0hFQURfWk9ORV83X0NVUlJFTlRfTE9PUF9CUkVBSxDN", + "JxIqCiVEWUVJTkdfSEVBRF9aT05FXzhfQ1VSUkVOVF9MT09QX0JSRUFLEM4n", + "EioKJURZRUlOR19IRUFEX1pPTkVfOV9DVVJSRU5UX0xPT1BfQlJFQUsQzycS", + "KwomRFlFSU5HX0hFQURfWk9ORV8xMF9DVVJSRU5UX0xPT1BfQlJFQUsQ0CcS", + "KwomRFlFSU5HX0hFQURfWk9ORV8xMV9DVVJSRU5UX0xPT1BfQlJFQUsQ0ScS", + "KwomRFlFSU5HX0hFQURfWk9ORV8xMl9DVVJSRU5UX0xPT1BfQlJFQUsQ0icS", + "KQokRFlFSU5HX0hFQURfQkxPV0VSXzFfT1ZFUlRFTVBFUkFUVVJFENMnEikK", + "JERZRUlOR19IRUFEX0JMT1dFUl8yX09WRVJURU1QRVJBVFVSRRDUJxIsCidE", + "WUVJTkdfSEVBRF9CTE9XRVJfMV9VTkRFUlRFTVBFUkFUVVJFX0EQ1ScSLAon", + "RFlFSU5HX0hFQURfQkxPV0VSXzJfVU5ERVJURU1QRVJBVFVSRV9BENYnEiwK", + "J0RZRUlOR19IRUFEX0JMT1dFUl8xX1VOREVSVEVNUEVSQVRVUkVfQhDXJxIs", + "CidEWUVJTkdfSEVBRF9CTE9XRVJfMl9VTkRFUlRFTVBFUkFUVVJFX0IQ2CcS", + "LgopRFlFSU5HX0hFQURfQkxPV0VSXzFfQ1VSUkVOVF9PVVRfT0ZfUkFOR0UQ", + "2ScSLgopRFlFSU5HX0hFQURfQkxPV0VSXzJfQ1VSUkVOVF9PVVRfT0ZfUkFO", + "R0UQ2icSLAonRFlFSU5HX0hFQURfQkxPV0VSXzFfQ1VSUkVOVF9MT09QX0JS", + "RUFLENsnEiwKJ0RZRUlOR19IRUFEX0JMT1dFUl8yX0NVUlJFTlRfTE9PUF9C", + "UkVBSxDcJxIlCiBEWUVJTkdfSEVBRF9CTE9XRVJfMV9GQU5fU1RPUFBFRBDd", + "JxIlCiBEWUVJTkdfSEVBRF9CTE9XRVJfMl9GQU5fU1RPUFBFRBDeJxIpCiRE", + "WUVJTkdfSEVBRF9CTE9XRVJfMV9GQU5fUlBNX1RPT19MT1cQ3ycSKQokRFlF", + "SU5HX0hFQURfQkxPV0VSXzJfRkFOX1JQTV9UT09fTE9XEOAnEioKJURZRUlO", + "R19IRUFEX1JJR0hUX0FDVFVBVE9SX1VQX1RJTUVPVVQQ4ScSKQokRFlFSU5H", + "X0hFQURfTEVGVF9BQ1RVQVRPUl9VUF9USU1FT1VUEOInEiwKJ0RZRUlOR19I", + "RUFEX1JJR0hUX0FDVFVBVE9SX0RPV05fVElNRU9VVBDjJxIrCiZEWUVJTkdf", + "SEVBRF9MRUZUX0FDVFVBVE9SX0RPV05fVElNRU9VVBDkJxInCiJEWUVJTkdf", + "SEVBRF9CTE9XRVJfMV9GTE9XX1RPT19ISUdIEOUnEicKIkRZRUlOR19IRUFE", + "X0JMT1dFUl8yX0ZMT1dfVE9PX0hJR0gQ5icSJgohRFlFSU5HX0hFQURfQkxP", + "V0VSXzFfRkxPV19UT09fTE9XEOcnEiYKIURZRUlOR19IRUFEX0JMT1dFUl8y", + "X0ZMT1dfVE9PX0xPVxDoJxIgChtEWUVJTkdfSEVBRF9BUkNfTElEX0lTX09Q", + "RU4Q6ScSIwoeRFlFSU5HX0hFQURfVFVOTkVMX0xJRF9JU19PUEVOEOonEhoK", + "FU1JWEVSX09WRVJURU1QRVJBVFVSRRDwLhIdChhNSVhFUl9VTkRFUlRFTVBF", + "UkFUVVJFX0EQ8S4SHQoYTUlYRVJfVU5ERVJURU1QRVJBVFVSRV9CEPIuEhkK", + "FE1JWEVSX1RIRVJNQUxfQ1VUT0ZGEPMuEh8KGk1JWEVSX0NVUlJFTlRfT1VU", + "X09GX1JBTkdFEPQuEh0KGE1JWEVSX0NVUlJFTlRfTE9PUF9CUkVBSxD1LhId", + "ChhESVNQRU5TRVJfMV9PVkVSUFJFU1NVUkUQ2DYSHQoYRElTUEVOU0VSXzJf", + "T1ZFUlBSRVNTVVJFENk2Eh0KGERJU1BFTlNFUl8zX09WRVJQUkVTU1VSRRDa", + "NhIdChhESVNQRU5TRVJfNF9PVkVSUFJFU1NVUkUQ2zYSHQoYRElTUEVOU0VS", + "XzVfT1ZFUlBSRVNTVVJFENw2Eh0KGERJU1BFTlNFUl82X09WRVJQUkVTU1VS", + "RRDdNhIdChhESVNQRU5TRVJfN19PVkVSUFJFU1NVUkUQ3jYSHQoYRElTUEVO", + "U0VSXzhfT1ZFUlBSRVNTVVJFEN82Eh4KGURJU1BFTlNFUl8xX1VOREVSUFJF", + "U1NVUkUQ4DYSHgoZRElTUEVOU0VSXzJfVU5ERVJQUkVTU1VSRRDhNhIeChlE", + "SVNQRU5TRVJfM19VTkRFUlBSRVNTVVJFEOI2Eh4KGURJU1BFTlNFUl80X1VO", + "REVSUFJFU1NVUkUQ4zYSHgoZRElTUEVOU0VSXzVfVU5ERVJQUkVTU1VSRRDk", + "NhIeChlESVNQRU5TRVJfNl9VTkRFUlBSRVNTVVJFEOU2Eh4KGURJU1BFTlNF", + "Ul83X1VOREVSUFJFU1NVUkUQ5jYSHgoZRElTUEVOU0VSXzhfVU5ERVJQUkVT", + "U1VSRRDnNhIWChFESVNQRU5TRVJfMV9FTVBUWRDoNhIWChFESVNQRU5TRVJf", + "Ml9FTVBUWRDpNhIWChFESVNQRU5TRVJfM19FTVBUWRDqNhIWChFESVNQRU5T", + "RVJfNF9FTVBUWRDrNhIWChFESVNQRU5TRVJfNV9FTVBUWRDsNhIWChFESVNQ", + "RU5TRVJfNl9FTVBUWRDtNhIWChFESVNQRU5TRVJfN19FTVBUWRDuNhIWChFE", + "SVNQRU5TRVJfOF9FTVBUWRDvNhIfChpESVNQRU5TRVJfMV9SRUZJTExfRkFJ", + "TFVSRRDwNhIfChpESVNQRU5TRVJfMl9SRUZJTExfRkFJTFVSRRDxNhIfChpE", + "SVNQRU5TRVJfM19SRUZJTExfRkFJTFVSRRDyNhIfChpESVNQRU5TRVJfNF9S", + "RUZJTExfRkFJTFVSRRDzNhIfChpESVNQRU5TRVJfNV9SRUZJTExfRkFJTFVS", + "RRD0NhIfChpESVNQRU5TRVJfNl9SRUZJTExfRkFJTFVSRRD1NhIfChpESVNQ", + "RU5TRVJfN19SRUZJTExfRkFJTFVSRRD2NhIfChpESVNQRU5TRVJfOF9SRUZJ", + "TExfRkFJTFVSRRD3NhIiCh1ESVNQRU5TRVJfMV9NT1RPUl9PVkVSQ1VSUkVO", + "VBD4NhIiCh1ESVNQRU5TRVJfMl9NT1RPUl9PVkVSQ1VSUkVOVBD5NhIiCh1E", + "SVNQRU5TRVJfM19NT1RPUl9PVkVSQ1VSUkVOVBD6NhIiCh1ESVNQRU5TRVJf", + "NF9NT1RPUl9PVkVSQ1VSUkVOVBD7NhIiCh1ESVNQRU5TRVJfNV9NT1RPUl9P", + "VkVSQ1VSUkVOVBD8NhIiCh1ESVNQRU5TRVJfNl9NT1RPUl9PVkVSQ1VSUkVO", + "VBD9NhIiCh1ESVNQRU5TRVJfN19NT1RPUl9PVkVSQ1VSUkVOVBD+NhIiCh1E", + "SVNQRU5TRVJfOF9NT1RPUl9PVkVSQ1VSUkVOVBD/NhImCiFESVNQRU5TRVJf", + "MV9NT1RPUl9PVkVSVEVNUEVSQVRVUkUQgDcSJgohRElTUEVOU0VSXzJfTU9U", + "T1JfT1ZFUlRFTVBFUkFUVVJFEIE3EiYKIURJU1BFTlNFUl8zX01PVE9SX09W", + "RVJURU1QRVJBVFVSRRCCNxImCiFESVNQRU5TRVJfNF9NT1RPUl9PVkVSVEVN", + "UEVSQVRVUkUQgzcSJgohRElTUEVOU0VSXzVfTU9UT1JfT1ZFUlRFTVBFUkFU", + "VVJFEIQ3EiYKIURJU1BFTlNFUl82X01PVE9SX09WRVJURU1QRVJBVFVSRRCF", + "NxImCiFESVNQRU5TRVJfN19NT1RPUl9PVkVSVEVNUEVSQVRVUkUQhjcSJgoh", + "RElTUEVOU0VSXzhfTU9UT1JfT1ZFUlRFTVBFUkFUVVJFEIc3EhwKF0RJU1BF", + "TlNFUl8xX01PVE9SX1NUQUxMEIg3EhwKF0RJU1BFTlNFUl8yX01PVE9SX1NU", + "QUxMEIk3EhwKF0RJU1BFTlNFUl8zX01PVE9SX1NUQUxMEIo3EhwKF0RJU1BF", + "TlNFUl80X01PVE9SX1NUQUxMEIs3EhwKF0RJU1BFTlNFUl81X01PVE9SX1NU", + "QUxMEIw3EhwKF0RJU1BFTlNFUl82X01PVE9SX1NUQUxMEI03EhwKF0RJU1BF", + "TlNFUl83X01PVE9SX1NUQUxMEI43EhwKF0RJU1BFTlNFUl84X01PVE9SX1NU", + "QUxMEI83EiMKHkRJU1BFTlNFUl8xX01PVE9SX1VOREVSVk9MVEFHRRCQNxIj", + "Ch5ESVNQRU5TRVJfMl9NT1RPUl9VTkRFUlZPTFRBR0UQkTcSIwoeRElTUEVO", + "U0VSXzNfTU9UT1JfVU5ERVJWT0xUQUdFEJI3EiMKHkRJU1BFTlNFUl80X01P", + "VE9SX1VOREVSVk9MVEFHRRCTNxIjCh5ESVNQRU5TRVJfNV9NT1RPUl9VTkRF", + "UlZPTFRBR0UQlDcSIwoeRElTUEVOU0VSXzZfTU9UT1JfVU5ERVJWT0xUQUdF", + "EJU3EiMKHkRJU1BFTlNFUl83X01PVE9SX1VOREVSVk9MVEFHRRCWNxIjCh5E", + "SVNQRU5TRVJfOF9NT1RPUl9VTkRFUlZPTFRBR0UQlzcSIQocRElTUEVOU0VS", + "XzFfVVBQRVJfSEFSRF9MSU1JVBCYNxIhChxESVNQRU5TRVJfMl9VUFBFUl9I", + "QVJEX0xJTUlUEJk3EiEKHERJU1BFTlNFUl8zX1VQUEVSX0hBUkRfTElNSVQQ", + "mjcSIQocRElTUEVOU0VSXzRfVVBQRVJfSEFSRF9MSU1JVBCbNxIhChxESVNQ", + "RU5TRVJfNV9VUFBFUl9IQVJEX0xJTUlUEJw3EiEKHERJU1BFTlNFUl82X1VQ", + "UEVSX0hBUkRfTElNSVQQnTcSIQocRElTUEVOU0VSXzdfVVBQRVJfSEFSRF9M", + "SU1JVBCeNxIhChxESVNQRU5TRVJfOF9VUFBFUl9IQVJEX0xJTUlUEJ83EiEK", + "HERJU1BFTlNFUl8xX0xPV0VSX0hBUkRfTElNSVQQoDcSIQocRElTUEVOU0VS", + "XzJfTE9XRVJfSEFSRF9MSU1JVBChNxIhChxESVNQRU5TRVJfM19MT1dFUl9I", + "QVJEX0xJTUlUEKI3EiEKHERJU1BFTlNFUl80X0xPV0VSX0hBUkRfTElNSVQQ", + "ozcSIQocRElTUEVOU0VSXzVfTE9XRVJfSEFSRF9MSU1JVBCkNxIhChxESVNQ", + "RU5TRVJfNl9MT1dFUl9IQVJEX0xJTUlUEKU3EiEKHERJU1BFTlNFUl83X0xP", + "V0VSX0hBUkRfTElNSVQQpjcSIQocRElTUEVOU0VSXzhfTE9XRVJfSEFSRF9M", + "SU1JVBCnNxIeChlESVNQRU5TRVJfMV9ISUdIX1BSRVNTVVJFEKg3Eh4KGURJ", + "U1BFTlNFUl8yX0hJR0hfUFJFU1NVUkUQqTcSHgoZRElTUEVOU0VSXzNfSElH", + "SF9QUkVTU1VSRRCqNxIeChlESVNQRU5TRVJfNF9ISUdIX1BSRVNTVVJFEKs3", + "Eh4KGURJU1BFTlNFUl81X0hJR0hfUFJFU1NVUkUQrDcSHgoZRElTUEVOU0VS", + "XzZfSElHSF9QUkVTU1VSRRCtNxIeChlESVNQRU5TRVJfN19ISUdIX1BSRVNT", + "VVJFEK43Eh4KGURJU1BFTlNFUl84X0hJR0hfUFJFU1NVUkUQrzcSGQoUTUlE", + "X1RBTktfMV9MT1dfTEVWRUwQwD4SGQoUTUlEX1RBTktfMl9MT1dfTEVWRUwQ", + "wT4SGQoUTUlEX1RBTktfM19MT1dfTEVWRUwQwj4SGQoUTUlEX1RBTktfNF9M", + "T1dfTEVWRUwQwz4SGQoUTUlEX1RBTktfNV9MT1dfTEVWRUwQxD4SGQoUTUlE", + "X1RBTktfNl9MT1dfTEVWRUwQxT4SGQoUTUlEX1RBTktfN19MT1dfTEVWRUwQ", + "xj4SGQoUTUlEX1RBTktfOF9MT1dfTEVWRUwQxz4SFQoQTUlEX1RBTktfMV9F", + "TVBUWRDIPhIVChBNSURfVEFOS18yX0VNUFRZEMk+EhUKEE1JRF9UQU5LXzNf", + "RU1QVFkQyj4SFQoQTUlEX1RBTktfNF9FTVBUWRDLPhIVChBNSURfVEFOS181", + "X0VNUFRZEMw+EhUKEE1JRF9UQU5LXzZfRU1QVFkQzT4SFQoQTUlEX1RBTktf", + "N19FTVBUWRDOPhIVChBNSURfVEFOS184X0VNUFRZEM8+EhgKE01JRF9UQU5L", + "XzFfT1ZFUkZMT1cQ0D4SGAoTTUlEX1RBTktfMl9PVkVSRkxPVxDRPhIYChNN", + "SURfVEFOS18zX09WRVJGTE9XENI+EhgKE01JRF9UQU5LXzRfT1ZFUkZMT1cQ", + "0z4SGAoTTUlEX1RBTktfNV9PVkVSRkxPVxDUPhIYChNNSURfVEFOS182X09W", + "RVJGTE9XENU+EhgKE01JRF9UQU5LXzdfT1ZFUkZMT1cQ1j4SGAoTTUlEX1RB", + "TktfOF9PVkVSRkxPVxDXPhIcChdNSURfVEFOS18xX0ZJTExfVElNRU9VVBDY", + "PhIcChdNSURfVEFOS18yX0ZJTExfVElNRU9VVBDZPhIcChdNSURfVEFOS18z", + "X0ZJTExfVElNRU9VVBDaPhIcChdNSURfVEFOS180X0ZJTExfVElNRU9VVBDb", + "PhIcChdNSURfVEFOS181X0ZJTExfVElNRU9VVBDcPhIcChdNSURfVEFOS182", + "X0ZJTExfVElNRU9VVBDdPhIcChdNSURfVEFOS183X0ZJTExfVElNRU9VVBDe", + "PhIcChdNSURfVEFOS184X0ZJTExfVElNRU9VVBDfPhIdChhBSVJfRklMVEVS", + "X05PVF9JTlNUQUxMRUQQqEYSFwoSQUlSX0ZJTFRFUl9DTE9HR0VEEKlGEiUK", + "IFdBU1RFX0NPTlRBSU5FUl9FTVBUWUlOR19USU1FT1VUEKpGEhQKD05PX0FJ", + "Ul9QUkVTU1VSRRCrRhIdChhXQVNURV9DT05UQUlORVJfT1ZFUkZMT1cQrEYS", + "GgoVVk9DX1NFTlNPUl9BTEFSTV9USU1FEK1GEhgKE0NISUxMRVJfRFJZX0NP", + "TlRBQ1QQrkYSGgoVSU5TVUZGSUNJRU5UX0FJUl9GTE9XEK9GEhsKFlZPQ19T", + "RU5TT1JfQUxBUk1fU0xPUEUQsEYSHQoYUFJFX0NPT0xFUl9GQU5fMV9TVE9Q", + "UEVEELFGEh0KGFBSRV9DT09MRVJfRkFOXzJfU1RPUFBFRBCyRhIZChRDT09M", + "RVJfRkFOXzFfU1RPUFBFRBCzRhIZChRDT09MRVJfRkFOXzJfU1RPUFBFRBC0", + "RhIZChRDT09MRVJfRkFOXzNfU1RPUFBFRBC1RhIZChRDT09MRVJfRkFOXzRf", + "U1RPUFBFRBC2RhIhChxQUkVfQ09PTEVSX0ZBTl8xX1JQTV9UT09fTE9XELdG", + "EiEKHFBSRV9DT09MRVJfRkFOXzJfUlBNX1RPT19MT1cQuEYSHQoYQ09PTEVS", + "X0ZBTl8xX1JQTV9UT09fTE9XELlGEh0KGENPT0xFUl9GQU5fMl9SUE1fVE9P", + "X0xPVxC6RhIdChhDT09MRVJfRkFOXzNfUlBNX1RPT19MT1cQu0YSHQoYQ09P", + "TEVSX0ZBTl80X1JQTV9UT09fTE9XELxGEiAKG0NPT0xFUl9URU1QRVJBVFVS", + "RV9UT09fSElHSBC9RhIfChpDT09MRVJfVEVNUEVSQVRVUkVfVE9PX0xPVxC+", + "RhIqCiVJTktfQ0FSVFJJREdFX1BSRVNFTkNFX1NFTlNPUl9USU1FT1VUEJBO", + "Eh8KGklOS19DQVJUUklER0VfUkZJRF9USU1FT1VUEJFOEiEKHE5PX1dBU1RF", + "X0NBUlRSSURHRV9BVkFJTEFCTEUQkk4SHgoZQUxMX1dBU1RFX0NBUlRSSURH", + "RVNfRlVMTBCTThIsCidXQVNURV9DQVJUUklER0VfUFJFU0VOQ0VfU0VOU09S", + "X1RJTUVPVVQQlE4SIQocV0FTVEVfQ0FSVFJJREdFX1JGSURfVElNRU9VVBCV", + "ThIqCiVJTktfQ0FSVFJJREdFX1JGSURfVEFHX0NBTk5PVF9CRV9SRUFEEJZO", + "EiwKJ1dBU1RFX0NBUlRSSURHRV9SRklEX1RBR19DQU5OT1RfQkVfUkVBRBCX", + "ThIoCiNJTktfQ0FSVFJJREdFX1JGSURfVEFHX0lTX05PVF9WQUxJRBCYThIq", + "CiVXQVNURV9DQVJUUklER0VfUkZJRF9UQUdfSVNfTk9UX1ZBTElEEJlOEigK", + "I0lOS19DQVJUUklER0VfQVVUSEVOVElDQVRJT05fRkFJTEVEEJpOEioKJVdB", + "U1RFX0NBUlRSSURHRV9BVVRIRU5USUNBVElPTl9GQUlMRUQQm04SHQoYSU5L", + "X0NBUlRSSURHRV9JU19CTE9DS0VEEJxOEh8KGldBU1RFX0NBUlRSSURHRV9J", + "U19CTE9DS0VEEJ1OEi0KKElOS19DQVJUUklER0VfUkZJRF9UQUdfQ0FOTk9U", + "X0JFX1VQREFURUQQnk4SLwoqV0FTVEVfQ0FSVFJJREdFX1JGSURfVEFHX0NB", + "Tk5PVF9CRV9VUERBVEVEEJ9OEiAKG0lOS19JTl9DQVJUUklER0VfSVNfRVhQ", + "SVJFRBCgTkIhCh9jb20udHdpbmUudGFuZ28ucG1yLmRpYWdub3N0aWNzYgZw", + "cm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.Diagnostics.EventType), }, null)); @@ -403,7 +416,7 @@ namespace Tango.PMR.Diagnostics { /// [pbr::OriginalName("FRONT_COVER_4_OPEN")] FrontCover4Open = 2005, /// - ///Cartridges door is open. Cannot start new job (Group = GeneralHardware, Category = Warning) + ///IFS door is open. Cannot start new job (Group = GeneralHardware, Category = Warning) /// [pbr::OriginalName("CARTRIDGES_COVER_OPEN")] CartridgesCoverOpen = 2006, /// @@ -427,7 +440,7 @@ namespace Tango.PMR.Diagnostics { /// [pbr::OriginalName("ELECTRICAL_CABINET_FANS_RPM_TOO_LOW")] ElectricalCabinetFansRpmTooLow = 2011, /// - ///Electrical cabinet fans stopped. Cannot execute job (Group = GeneralHardware, Category = Critical) + ///Electrical cabinet fans stopped. Cannot execute job (Group = GeneralHardware, Category = Warning) /// [pbr::OriginalName("ELECTRICAL_CABINET_FANS_STOPPED")] ElectricalCabinetFansStopped = 2012, /// @@ -467,6 +480,18 @@ namespace Tango.PMR.Diagnostics { /// [pbr::OriginalName("TEMPERATURE_MEASUREMENT_ERROR")] TemperatureMeasurementError = 2021, /// + ///Cannot read the cartridge. Cannot perform ink filling (Group = GeneralHardware, Category = Error) + /// + [pbr::OriginalName("RFID_READER_MALFUNCTION_INK_SLOT")] RfidReaderMalfunctionInkSlot = 2022, + /// + ///Cannot read the cartridge. Cannot replace waste cartridge (Group = GeneralHardware, Category = Error) + /// + [pbr::OriginalName("RFID_READER_MALFUNCTION_WASTE_SLOT_1")] RfidReaderMalfunctionWasteSlot1 = 2023, + /// + ///Cannot read the cartridge. Cannot replace waste cartridge (Group = GeneralHardware, Category = Error) + /// + [pbr::OriginalName("RFID_READER_MALFUNCTION_WASTE_SLOT_2")] RfidReaderMalfunctionWasteSlot2 = 2024, + /// ///Thread break. Cannot execute job (Group = ThreadFeedingSystem, Category = Error) /// [pbr::OriginalName("THREAD_BREAK")] ThreadBreak = 3000, @@ -699,7 +724,7 @@ namespace Tango.PMR.Diagnostics { /// [pbr::OriginalName("DRYER_ZONE_1_OVERTEMPERATURE")] DryerZone1Overtemperature = 4005, /// - ///The temperature in dryer zone is too high. Cannot execute job (Group = Dryer, Category = Critical) + ///The temperature in dryer zone is too high. Cannot execute job (Group = Dryer, Category = Error) /// [pbr::OriginalName("DRYER_ZONE_2_OVERTEMPERATURE")] DryerZone2Overtemperature = 4006, /// @@ -719,19 +744,19 @@ namespace Tango.PMR.Diagnostics { /// [pbr::OriginalName("DRYER_THERMAL_CUTOFF")] DryerThermalCutoff = 4010, /// - ///Dryer zone current is out of range. Cannot execute job (Group = Dryer, Category = Critical) + ///Dryer zone current is out of range. Cannot execute job (Group = Dryer, Category = Warning) /// [pbr::OriginalName("DRYER_HEATERS_ZONE_1_CURRENT_OUT_OF_RANGE")] DryerHeatersZone1CurrentOutOfRange = 4011, /// - ///Dryer zone current is out of range. Cannot execute job (Group = Dryer, Category = Critical) + ///Dryer zone current is out of range. Cannot execute job (Group = Dryer, Category = Warning) /// [pbr::OriginalName("DRYER_HEATERS_ZONE_2_CURRENT_OUT_OF_RANGE")] DryerHeatersZone2CurrentOutOfRange = 4012, /// - ///Dryer zone current loop break. Cannot execute job (Group = Dryer, Category = Critical) + ///Dryer zone current loop break. Cannot execute job (Group = Dryer, Category = Error) /// [pbr::OriginalName("DRYER_HEATERS_ZONE_1_CURRENT_LOOP_BREAK")] DryerHeatersZone1CurrentLoopBreak = 4013, /// - ///Dryer zone current loop break. Cannot execute job (Group = Dryer, Category = Critical) + ///Dryer zone current loop break. Cannot execute job (Group = Dryer, Category = Error) /// [pbr::OriginalName("DRYER_HEATERS_ZONE_2_CURRENT_LOOP_BREAK")] DryerHeatersZone2CurrentLoopBreak = 4014, /// @@ -935,27 +960,27 @@ namespace Tango.PMR.Diagnostics { /// [pbr::OriginalName("DYEING_HEAD_CLEANING_HEAD_MOTOR_UNDERVOLTAGE")] DyeingHeadCleaningHeadMotorUndervoltage = 5042, /// - ///The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + ///The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Error) /// [pbr::OriginalName("DYEING_HEAD_ZONE_7_OVERTEMPERATURE")] DyeingHeadZone7Overtemperature = 5043, /// - ///The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + ///The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Error) /// [pbr::OriginalName("DYEING_HEAD_ZONE_8_OVERTEMPERATURE")] DyeingHeadZone8Overtemperature = 5044, /// - ///The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + ///The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Error) /// [pbr::OriginalName("DYEING_HEAD_ZONE_9_OVERTEMPERATURE")] DyeingHeadZone9Overtemperature = 5045, /// - ///The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + ///The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Error) /// [pbr::OriginalName("DYEING_HEAD_ZONE_10_OVERTEMPERATURE")] DyeingHeadZone10Overtemperature = 5046, /// - ///The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + ///The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Error) /// [pbr::OriginalName("DYEING_HEAD_ZONE_11_OVERTEMPERATURE")] DyeingHeadZone11Overtemperature = 5047, /// - ///The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + ///The temperature in dyeing head zone is too high. Cannot execute job (Group = DyeingHead, Category = Error) /// [pbr::OriginalName("DYEING_HEAD_ZONE_12_OVERTEMPERATURE")] DyeingHeadZone12Overtemperature = 5048, /// @@ -1063,11 +1088,11 @@ namespace Tango.PMR.Diagnostics { /// [pbr::OriginalName("DYEING_HEAD_ZONE_12_CURRENT_LOOP_BREAK")] DyeingHeadZone12CurrentLoopBreak = 5074, /// - ///The temperature in dyeing head blower is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + ///The temperature in dyeing head blower is too high. Cannot execute job (Group = DyeingHead, Category = Error) /// [pbr::OriginalName("DYEING_HEAD_BLOWER_1_OVERTEMPERATURE")] DyeingHeadBlower1Overtemperature = 5075, /// - ///The temperature in dyeing head blower is too high. Cannot execute job (Group = DyeingHead, Category = Critical) + ///The temperature in dyeing head blower is too high. Cannot execute job (Group = DyeingHead, Category = Error) /// [pbr::OriginalName("DYEING_HEAD_BLOWER_2_OVERTEMPERATURE")] DyeingHeadBlower2Overtemperature = 5076, /// @@ -1159,7 +1184,7 @@ namespace Tango.PMR.Diagnostics { /// [pbr::OriginalName("DYEING_HEAD_TUNNEL_LID_IS_OPEN")] DyeingHeadTunnelLidIsOpen = 5098, /// - ///The temperature in the mixer is too high. Cannot execute job (Group = Mixer, Category = Critical) + ///The temperature in the mixer is too high. Cannot execute job (Group = Mixer, Category = Error) /// [pbr::OriginalName("MIXER_OVERTEMPERATURE")] MixerOvertemperature = 6000, /// @@ -1763,11 +1788,11 @@ namespace Tango.PMR.Diagnostics { /// [pbr::OriginalName("INK_CARTRIDGE_RFID_TIMEOUT")] InkCartridgeRfidTimeout = 10001, /// - ///Waste level is high. Insert waste cartridge (Group = InkFillingSystem, Category = Warning) + ///No waste cartridge in system. Cannot execute job. Please insert waste cartridge (Group = InkFillingSystem, Category = Error) /// [pbr::OriginalName("NO_WASTE_CARTRIDGE_AVAILABLE")] NoWasteCartridgeAvailable = 10002, /// - ///Waste cartridge detected. Cannot execute job. Please extract waste cartridge (Group = InkFillingSystem, Category = Error) + ///Both waste cartridges are full. Cannot execute job. Please replace waste cartridges (Group = InkFillingSystem, Category = Error) /// [pbr::OriginalName("ALL_WASTE_CARTRIDGES_FULL")] AllWasteCartridgesFull = 10003, /// @@ -1778,6 +1803,50 @@ namespace Tango.PMR.Diagnostics { ///Cannot identify waste cartridge. Cannot execute job (Group = InkFillingSystem, Category = Error) /// [pbr::OriginalName("WASTE_CARTRIDGE_RFID_TIMEOUT")] WasteCartridgeRfidTimeout = 10005, + /// + ///Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error) + /// + [pbr::OriginalName("INK_CARTRIDGE_RFID_TAG_CANNOT_BE_READ")] InkCartridgeRfidTagCannotBeRead = 10006, + /// + ///Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error) + /// + [pbr::OriginalName("WASTE_CARTRIDGE_RFID_TAG_CANNOT_BE_READ")] WasteCartridgeRfidTagCannotBeRead = 10007, + /// + ///Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error) + /// + [pbr::OriginalName("INK_CARTRIDGE_RFID_TAG_IS_NOT_VALID")] InkCartridgeRfidTagIsNotValid = 10008, + /// + ///Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error) + /// + [pbr::OriginalName("WASTE_CARTRIDGE_RFID_TAG_IS_NOT_VALID")] WasteCartridgeRfidTagIsNotValid = 10009, + /// + ///Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error) + /// + [pbr::OriginalName("INK_CARTRIDGE_AUTHENTICATION_FAILED")] InkCartridgeAuthenticationFailed = 10010, + /// + ///Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error) + /// + [pbr::OriginalName("WASTE_CARTRIDGE_AUTHENTICATION_FAILED")] WasteCartridgeAuthenticationFailed = 10011, + /// + ///Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error) + /// + [pbr::OriginalName("INK_CARTRIDGE_IS_BLOCKED")] InkCartridgeIsBlocked = 10012, + /// + ///Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error) + /// + [pbr::OriginalName("WASTE_CARTRIDGE_IS_BLOCKED")] WasteCartridgeIsBlocked = 10013, + /// + ///Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error) + /// + [pbr::OriginalName("INK_CARTRIDGE_RFID_TAG_CANNOT_BE_UPDATED")] InkCartridgeRfidTagCannotBeUpdated = 10014, + /// + ///Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error) + /// + [pbr::OriginalName("WASTE_CARTRIDGE_RFID_TAG_CANNOT_BE_UPDATED")] WasteCartridgeRfidTagCannotBeUpdated = 10015, + /// + ///Ink in cartridge is expired. Cannot perform ink filling (Group = InkFillingSystem, Category = Warning) + /// + [pbr::OriginalName("INK_IN_CARTRIDGE_IS_EXPIRED")] InkInCartridgeIsExpired = 10016, } #endregion diff --git a/Software/Visual_Studio/Tango.PMR/EmbeddedParameters/AlarmHandlingItem.cs b/Software/Visual_Studio/Tango.PMR/EmbeddedParameters/AlarmHandlingItem.cs index 0d957f6be..42ff24301 100644 --- a/Software/Visual_Studio/Tango.PMR/EmbeddedParameters/AlarmHandlingItem.cs +++ b/Software/Visual_Studio/Tango.PMR/EmbeddedParameters/AlarmHandlingItem.cs @@ -24,21 +24,20 @@ namespace Tango.PMR.EmbeddedParameters { string.Concat( "ChdBbGFybUhhbmRsaW5nSXRlbS5wcm90bxIcVGFuZ28uUE1SLkVtYmVkZGVk", "UGFyYW1ldGVycxoVQWxhcm1Tb3VyY2VUeXBlLnByb3RvGhZEZWJ1Z0xvZ0Nh", - "dGVnb3J5LnByb3RvGg9FdmVudFR5cGUucHJvdG8igwMKEUFsYXJtSGFuZGxp", + "dGVnb3J5LnByb3RvGg9FdmVudFR5cGUucHJvdG8i2wIKEUFsYXJtSGFuZGxp", "bmdJdGVtEkIKC0FsYXJtU291cmNlGAEgASgOMi0uVGFuZ28uUE1SLkVtYmVk", - "ZGVkUGFyYW1ldGVycy5BbGFybVNvdXJjZVR5cGUSEQoJRnJlcXVlbmN5GAIg", - "ASgNEhAKCERldmljZUlkGAMgASgNEhYKDk1vZHVsZURldmljZUlkGAQgASgN", - "EhIKCkFsYXJtVmFsdWUYBSABKA0SFgoOQWxhcm1EaXJlY3Rpb24YBiABKAgS", - "NwoIU2V2ZXJpdHkYByABKA4yJS5UYW5nby5QTVIuRGVidWdnaW5nLkRlYnVn", - "TG9nQ2F0ZWdvcnkSEwoLUHJlZGVjZXNzb3IYCCABKA0SFQoNRGVib3VuY2VW", - "YWx1ZRgJIAEoDRIzCglFdmVudFR5cGUYCiABKA4yIC5UYW5nby5QTVIuRGlh", - "Z25vc3RpY3MuRXZlbnRUeXBlEhEKCUV2ZW50TmFtZRgLIAEoCRIUCgxJc1Bl", - "cnNpc3RlbnQYDCABKAhCKAomY29tLnR3aW5lLnRhbmdvLnBtci5lbWJlZGRl", - "ZHBhcmFtZXRlcnNiBnByb3RvMw==")); + "ZGVkUGFyYW1ldGVycy5BbGFybVNvdXJjZVR5cGUSEAoIRGV2aWNlSWQYAiAB", + "KA0SFgoOTW9kdWxlRGV2aWNlSWQYAyABKA0SEgoKQWxhcm1WYWx1ZRgEIAEo", + "DRIWCg5BbGFybURpcmVjdGlvbhgFIAEoCBI3CghTZXZlcml0eRgGIAEoDjIl", + "LlRhbmdvLlBNUi5EZWJ1Z2dpbmcuRGVidWdMb2dDYXRlZ29yeRIVCg1EZWJv", + "dW5jZVZhbHVlGAcgASgNEjMKCUV2ZW50VHlwZRgIIAEoDjIgLlRhbmdvLlBN", + "Ui5EaWFnbm9zdGljcy5FdmVudFR5cGUSEQoJRXZlbnROYW1lGAkgASgJEhQK", + "DElzUGVyc2lzdGVudBgKIAEoCEIoCiZjb20udHdpbmUudGFuZ28ucG1yLmVt", + "YmVkZGVkcGFyYW1ldGVyc2IGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Tango.PMR.EmbeddedParameters.AlarmSourceTypeReflection.Descriptor, global::Tango.PMR.Debugging.DebugLogCategoryReflection.Descriptor, global::Tango.PMR.Diagnostics.EventTypeReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.EmbeddedParameters.AlarmHandlingItem), global::Tango.PMR.EmbeddedParameters.AlarmHandlingItem.Parser, new[]{ "AlarmSource", "Frequency", "DeviceId", "ModuleDeviceId", "AlarmValue", "AlarmDirection", "Severity", "Predecessor", "DebounceValue", "EventType", "EventName", "IsPersistent" }, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.EmbeddedParameters.AlarmHandlingItem), global::Tango.PMR.EmbeddedParameters.AlarmHandlingItem.Parser, new[]{ "AlarmSource", "DeviceId", "ModuleDeviceId", "AlarmValue", "AlarmDirection", "Severity", "DebounceValue", "EventType", "EventName", "IsPersistent" }, null, null, null) })); } #endregion @@ -70,13 +69,11 @@ namespace Tango.PMR.EmbeddedParameters { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public AlarmHandlingItem(AlarmHandlingItem other) : this() { alarmSource_ = other.alarmSource_; - frequency_ = other.frequency_; deviceId_ = other.deviceId_; moduleDeviceId_ = other.moduleDeviceId_; alarmValue_ = other.alarmValue_; alarmDirection_ = other.alarmDirection_; severity_ = other.severity_; - predecessor_ = other.predecessor_; debounceValue_ = other.debounceValue_; eventType_ = other.eventType_; eventName_ = other.eventName_; @@ -99,23 +96,12 @@ namespace Tango.PMR.EmbeddedParameters { } } - /// Field number for the "Frequency" field. - public const int FrequencyFieldNumber = 2; - private uint frequency_; - /// - ///1/10/100/1000 - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint Frequency { - get { return frequency_; } - set { - frequency_ = value; - } - } - /// Field number for the "DeviceId" field. - public const int DeviceIdFieldNumber = 3; + public const int DeviceIdFieldNumber = 2; private uint deviceId_; + /// + ///uint32 Frequency = 2; //1/10/100/1000 + /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public uint DeviceId { get { return deviceId_; } @@ -125,7 +111,7 @@ namespace Tango.PMR.EmbeddedParameters { } /// Field number for the "ModuleDeviceId" field. - public const int ModuleDeviceIdFieldNumber = 4; + public const int ModuleDeviceIdFieldNumber = 3; private uint moduleDeviceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public uint ModuleDeviceId { @@ -136,7 +122,7 @@ namespace Tango.PMR.EmbeddedParameters { } /// Field number for the "AlarmValue" field. - public const int AlarmValueFieldNumber = 5; + public const int AlarmValueFieldNumber = 4; private uint alarmValue_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public uint AlarmValue { @@ -147,7 +133,7 @@ namespace Tango.PMR.EmbeddedParameters { } /// Field number for the "AlarmDirection" field. - public const int AlarmDirectionFieldNumber = 6; + public const int AlarmDirectionFieldNumber = 5; private bool alarmDirection_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public bool AlarmDirection { @@ -158,7 +144,7 @@ namespace Tango.PMR.EmbeddedParameters { } /// Field number for the "Severity" field. - public const int SeverityFieldNumber = 7; + public const int SeverityFieldNumber = 6; private global::Tango.PMR.Debugging.DebugLogCategory severity_ = 0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public global::Tango.PMR.Debugging.DebugLogCategory Severity { @@ -168,20 +154,12 @@ namespace Tango.PMR.EmbeddedParameters { } } - /// Field number for the "Predecessor" field. - public const int PredecessorFieldNumber = 8; - private uint predecessor_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint Predecessor { - get { return predecessor_; } - set { - predecessor_ = value; - } - } - /// Field number for the "DebounceValue" field. - public const int DebounceValueFieldNumber = 9; + public const int DebounceValueFieldNumber = 7; private uint debounceValue_; + /// + ///uint32 Predecessor = 7; + /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public uint DebounceValue { get { return debounceValue_; } @@ -191,7 +169,7 @@ namespace Tango.PMR.EmbeddedParameters { } /// Field number for the "EventType" field. - public const int EventTypeFieldNumber = 10; + public const int EventTypeFieldNumber = 8; private global::Tango.PMR.Diagnostics.EventType eventType_ = 0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public global::Tango.PMR.Diagnostics.EventType EventType { @@ -202,7 +180,7 @@ namespace Tango.PMR.EmbeddedParameters { } /// Field number for the "EventName" field. - public const int EventNameFieldNumber = 11; + public const int EventNameFieldNumber = 9; private string eventName_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public string EventName { @@ -213,7 +191,7 @@ namespace Tango.PMR.EmbeddedParameters { } /// Field number for the "IsPersistent" field. - public const int IsPersistentFieldNumber = 12; + public const int IsPersistentFieldNumber = 10; private bool isPersistent_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public bool IsPersistent { @@ -237,13 +215,11 @@ namespace Tango.PMR.EmbeddedParameters { return true; } if (AlarmSource != other.AlarmSource) return false; - if (Frequency != other.Frequency) return false; if (DeviceId != other.DeviceId) return false; if (ModuleDeviceId != other.ModuleDeviceId) return false; if (AlarmValue != other.AlarmValue) return false; if (AlarmDirection != other.AlarmDirection) return false; if (Severity != other.Severity) return false; - if (Predecessor != other.Predecessor) return false; if (DebounceValue != other.DebounceValue) return false; if (EventType != other.EventType) return false; if (EventName != other.EventName) return false; @@ -255,13 +231,11 @@ namespace Tango.PMR.EmbeddedParameters { public override int GetHashCode() { int hash = 1; if (AlarmSource != 0) hash ^= AlarmSource.GetHashCode(); - if (Frequency != 0) hash ^= Frequency.GetHashCode(); if (DeviceId != 0) hash ^= DeviceId.GetHashCode(); if (ModuleDeviceId != 0) hash ^= ModuleDeviceId.GetHashCode(); if (AlarmValue != 0) hash ^= AlarmValue.GetHashCode(); if (AlarmDirection != false) hash ^= AlarmDirection.GetHashCode(); if (Severity != 0) hash ^= Severity.GetHashCode(); - if (Predecessor != 0) hash ^= Predecessor.GetHashCode(); if (DebounceValue != 0) hash ^= DebounceValue.GetHashCode(); if (EventType != 0) hash ^= EventType.GetHashCode(); if (EventName.Length != 0) hash ^= EventName.GetHashCode(); @@ -280,48 +254,40 @@ namespace Tango.PMR.EmbeddedParameters { output.WriteRawTag(8); output.WriteEnum((int) AlarmSource); } - if (Frequency != 0) { - output.WriteRawTag(16); - output.WriteUInt32(Frequency); - } if (DeviceId != 0) { - output.WriteRawTag(24); + output.WriteRawTag(16); output.WriteUInt32(DeviceId); } if (ModuleDeviceId != 0) { - output.WriteRawTag(32); + output.WriteRawTag(24); output.WriteUInt32(ModuleDeviceId); } if (AlarmValue != 0) { - output.WriteRawTag(40); + output.WriteRawTag(32); output.WriteUInt32(AlarmValue); } if (AlarmDirection != false) { - output.WriteRawTag(48); + output.WriteRawTag(40); output.WriteBool(AlarmDirection); } if (Severity != 0) { - output.WriteRawTag(56); + output.WriteRawTag(48); output.WriteEnum((int) Severity); } - if (Predecessor != 0) { - output.WriteRawTag(64); - output.WriteUInt32(Predecessor); - } if (DebounceValue != 0) { - output.WriteRawTag(72); + output.WriteRawTag(56); output.WriteUInt32(DebounceValue); } if (EventType != 0) { - output.WriteRawTag(80); + output.WriteRawTag(64); output.WriteEnum((int) EventType); } if (EventName.Length != 0) { - output.WriteRawTag(90); + output.WriteRawTag(74); output.WriteString(EventName); } if (IsPersistent != false) { - output.WriteRawTag(96); + output.WriteRawTag(80); output.WriteBool(IsPersistent); } } @@ -332,9 +298,6 @@ namespace Tango.PMR.EmbeddedParameters { if (AlarmSource != 0) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) AlarmSource); } - if (Frequency != 0) { - size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Frequency); - } if (DeviceId != 0) { size += 1 + pb::CodedOutputStream.ComputeUInt32Size(DeviceId); } @@ -350,9 +313,6 @@ namespace Tango.PMR.EmbeddedParameters { if (Severity != 0) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Severity); } - if (Predecessor != 0) { - size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Predecessor); - } if (DebounceValue != 0) { size += 1 + pb::CodedOutputStream.ComputeUInt32Size(DebounceValue); } @@ -376,9 +336,6 @@ namespace Tango.PMR.EmbeddedParameters { if (other.AlarmSource != 0) { AlarmSource = other.AlarmSource; } - if (other.Frequency != 0) { - Frequency = other.Frequency; - } if (other.DeviceId != 0) { DeviceId = other.DeviceId; } @@ -394,9 +351,6 @@ namespace Tango.PMR.EmbeddedParameters { if (other.Severity != 0) { Severity = other.Severity; } - if (other.Predecessor != 0) { - Predecessor = other.Predecessor; - } if (other.DebounceValue != 0) { DebounceValue = other.DebounceValue; } @@ -424,46 +378,38 @@ namespace Tango.PMR.EmbeddedParameters { break; } case 16: { - Frequency = input.ReadUInt32(); - break; - } - case 24: { DeviceId = input.ReadUInt32(); break; } - case 32: { + case 24: { ModuleDeviceId = input.ReadUInt32(); break; } - case 40: { + case 32: { AlarmValue = input.ReadUInt32(); break; } - case 48: { + case 40: { AlarmDirection = input.ReadBool(); break; } - case 56: { + case 48: { severity_ = (global::Tango.PMR.Debugging.DebugLogCategory) input.ReadEnum(); break; } - case 64: { - Predecessor = input.ReadUInt32(); - break; - } - case 72: { + case 56: { DebounceValue = input.ReadUInt32(); break; } - case 80: { + case 64: { eventType_ = (global::Tango.PMR.Diagnostics.EventType) input.ReadEnum(); break; } - case 90: { + case 74: { EventName = input.ReadString(); break; } - case 96: { + case 80: { IsPersistent = input.ReadBool(); break; } diff --git a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs index e5f94d95e..af1e6cfeb 100644 --- a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs +++ b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs @@ -16,7 +16,7 @@ namespace Tango.EventsTypesGenerator { class Program { - private static string EVENTS_FILE = "Tango alarm events handling chart_Rev25.xlsx"; + private static string EVENTS_FILE = "Tango alarm events handling chart_Rev27.xlsx"; private class ExcelEventType { diff --git a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj index 7461a88a8..240ba67f5 100644 --- a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj +++ b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj @@ -56,13 +56,10 @@ - - Tango alarm events handling chart_Rev25.xlsx + + Tango alarm events handling chart_Rev27.xlsx PreserveNewest - - Tango alarm events handling chart_Rev25_Persistent.xlsx - -- cgit v1.3.1 From 89e1d65818f707b09b12dcec078797ccabcf731e Mon Sep 17 00:00:00 2001 From: Mirta Date: Sun, 8 Nov 2020 08:56:06 +0200 Subject: Added tests to GradientTest. Fixed Logic bug in ColorConverter --- .../ColorLib/Tango.ColorLib_v4/ColorConverter.cpp | 2 +- .../Tango.ColorLib.GradientTest.CLI/Program.cs | 405 +++++++++++++-------- 2 files changed, 263 insertions(+), 144 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp index 23caef58a..39b093539 100644 --- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp +++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp @@ -2777,7 +2777,7 @@ void Tango::ColorLib::ColorConverter::PrepareGradient(GradientConversionInput* c //Choose Gamut Region for Gradient calculation bool same_regions = true; - if ((maxreg != minreg) & (maxreg > 0)) + if ((maxreg != minreg) | (maxreg > 0)) same_regions = false; double dEThr = 0.8; //find intermediate points diff --git a/Software/Visual_Studio/Tango.ColorLib.GradientTest.CLI/Program.cs b/Software/Visual_Studio/Tango.ColorLib.GradientTest.CLI/Program.cs index 437ae1df0..b52661796 100644 --- a/Software/Visual_Studio/Tango.ColorLib.GradientTest.CLI/Program.cs +++ b/Software/Visual_Studio/Tango.ColorLib.GradientTest.CLI/Program.cs @@ -74,155 +74,274 @@ namespace Tango.ColorLib.GradientTest.CLI - //RGB Stop 1 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Rgb, - Offset = 0, - Red = 255, - Green = 0, - Blue = 0, - /* ColorSpace = ColorSpace.Lab, - Offset = 0, - L=44, - A = -31, - B = -14,*/ - // ColorSpace = ColorSpace.Volume, - - // Cyan = 200, - // Magenta =0, - // Yellow =0, - // Key = 0, - }); - - //RGB Stop 2 - input.Stops.Add(new GradientInputStop() + /* //RGB Stop 1 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset = 0, + Red = 160, + Green = 200, + Blue = 200, + }); + + //RGB Stop 2 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset =0.5, + Red =100, + Green =100, + Blue = 160, + }); + //RGB Stop 3 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset = 1, + Red = 0, + Green = 150, + Blue = 200, + });*/ + //Lab Stop 1 + /* input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.0, + L = 44.75, + A =15.14, + B =-32.5, + }); + + //Lab Stop 2 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.5, + L = 39.70, + A = 25.0, + B = -4.8, + }); + //Lab Stop 3 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 1, + L = 53, + A = -15.0, + B = -35, + }); */ + /* //Volume Stop 1 + GradientInputStop a = new GradientInputStop() + { + ColorSpace = ColorSpace.Volume, + Offset =0.0, + }; + a.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Cyan, + Volume = 100 + }); + a.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Magenta, + Volume = 50 + }); + a.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Yellow, + Volume = 0 + }); + a.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Black, + Volume = 0 + }); + input.Stops.Add(a); + //Volume Stop 2 + GradientInputStop b = new GradientInputStop() + { + ColorSpace = ColorSpace.Volume, + Offset = 0.5, + }; + b.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Cyan, + Volume = 0 + }); + b.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Magenta, + Volume = 100 + }); + b.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Yellow, + Volume =50 + }); + b.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Black, + Volume = 0 + }); + input.Stops.Add(b); + //Volume Stop 3 + GradientInputStop c = new GradientInputStop() + { + ColorSpace = ColorSpace.Volume, + Offset =1, + }; + c.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Cyan, + Volume = 50 + }); + c.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Magenta, + Volume = 0 + }); + c.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Yellow, + Volume = 100 + }); + c.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Black, + Volume = 0 + }); + input.Stops.Add(c); + */ + /* //Lab Stop 1 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.0, + L = 51, + A =70, + B =35, + }); + + //Lab Stop 2 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.3, + L = 37, + A = 24, + B = -50, + }); + //Lab Stop 3 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 1, + L = 78, + A = -50, + B = -75, + });*/ + /* //RGB Stop 1 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset = 0, + Red = 180, + Green = 152, + Blue = 116, + }); + + //RGB Stop 2 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset =0.4, + Red =34, + Green =108, + Blue = 80, + }); + //RGB Stop 3 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset = 1, + Red = 70, + Green = 50, + Blue = 50, + });*/ + //Lab Stop 1 + /* input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.0, + L = 73, + A =-30, + B =45, + }); + + //Lab Stop 2 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.6, + L = 27, + A = 5, + B = -15, + }); + //Lab Stop 3 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 1, + L = 74, + A = -12, + B = 35, + });*/ + + input.Stops.Add(new GradientInputStop() { - ColorSpace = ColorSpace.Rgb, - Offset =0.5, - Red =0, - Green =255, - Blue = 0, - //ColorSpace = ColorSpace.Lab, - // Offset = 0.3, - // L = 80.092825, - // A =- 11.94398025, - // B = 90.89376625, - //ColorSpace = ColorSpace.Volume, - - //Cyan = 0, - //Magenta = 0, - // Yellow = 0, - // Key = 0, + ColorSpace = ColorSpace.Rgb, + Offset = 0, + Red = 93, + Green = 123, + Blue = 95, }); - //RGB Stop 2 + //Lab Stop 2 input.Stops.Add(new GradientInputStop() { - ColorSpace = ColorSpace.Rgb, + ColorSpace = ColorSpace.Lab, + Offset = 0.6, + L = 50, + A = -10, + B = -10, + }); + //Volume Stop 3 + GradientInputStop c = new GradientInputStop() + { + ColorSpace = ColorSpace.Volume, Offset = 1, - Red = 0, - Green = 255, - Blue = 255, + }; + c.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Cyan, + Volume = 50 }); - /* //Volume Stop 3 - GradientInputStop a = new GradientInputStop() - { - ColorSpace = ColorSpace.Volume, - Offset = 1.0, - }; - a.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Cyan, - Volume = 100 - }); - a.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Magenta, - Volume = 0 - }); - a.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Yellow, - Volume = 0 - }); - a.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Black, - Volume = 0 - }); - input.Stops.Add(a);*/ - /* GradientInputStop c = new GradientInputStop() - { - ColorSpace = ColorSpace.Volume, - Offset = 0.5, - }; - c.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Cyan, - Volume = 0 - }); - c.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Magenta, - Volume = 100 - }); - c.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Yellow, - Volume = 0 - }); - c.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Black, - Volume = 0 - }); - input.Stops.Add(c); - GradientInputStop b = new GradientInputStop() - { - ColorSpace = ColorSpace.Volume, - Offset = 1.0, - }; - b.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Cyan, - Volume = 0 - }); - b.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Magenta, - Volume = 80 - }); - b.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Yellow, - Volume = 20 - }); - b.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Black, - Volume = 0 - }); - input.Stops.Add(b);*/ - //RGB Stop 4 - /* input.Stops.Add(new GradientInputStop() - { - // ColorSpace = ColorSpace.Rgb, - // Offset = 0, - // Red = 25, - // Green = 139, - // Blue = 246, - ColorSpace = ColorSpace.Lab, - Offset = 1, - L = 52, - A = 25.3326, - B = -15.6336,*/ - /* ColorSpace = ColorSpace.Volume, - Offset = 0, - Cyan = 41.7186, - Magenta = 28.1257, - Yellow =0, - Key = 0.5887, - });*/ + c.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Magenta, + Volume = 0 + }); + c.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Yellow, + Volume = 50 + }); + c.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Black, + Volume = 0 + }); + input.Stops.Add(c); + Console.WriteLine($"Testing input:\n{input.ToJsonString(nameof(input.ForwardData),nameof(CalibrationData))}"); Console.WriteLine(); -- cgit v1.3.1 From e8a1a623b5f19b763941eb1fe1cbb117de01d8ec Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Sun, 8 Nov 2020 10:41:19 +0200 Subject: Fixed issue with default color converter gradient generation offset input. --- Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs | 1 + 1 file changed, 1 insertion(+) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs b/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs index e51d8a0e1..fb19c758b 100644 --- a/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs +++ b/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs @@ -477,6 +477,7 @@ namespace Tango.ColorConversion { GradientInputStop istop = new GradientInputStop(); istop.ColorSpace = (PMR.ColorLab.ColorSpace)stop.ColorSpace.Code; + istop.Offset = stop.OffsetPercent / 100d; istop.L = stop.L; istop.A = stop.A; istop.B = stop.B; -- cgit v1.3.1 From 2aedb03950474e37e7fd0c0cdaa8528504750790 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Sun, 8 Nov 2020 14:29:15 +0200 Subject: Fixed single file selection on storage PPC. --- .../Visual_Studio/PPC/Modules/Tango.PPC.Storage/Views/MainView.xaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Views/MainView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Views/MainView.xaml index e8d402d89..c57735a7b 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Views/MainView.xaml +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Views/MainView.xaml @@ -112,7 +112,8 @@ - + + -- cgit v1.3.1 From 72a323fc0449a362919428958c6f95f6901301e8 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Sun, 8 Nov 2020 14:31:05 +0200 Subject: Process window by max ink uptake without color lib should work now. --- .../Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs b/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs index fb19c758b..fa60fbd69 100644 --- a/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs +++ b/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs @@ -262,14 +262,14 @@ namespace Tango.ColorConversion } } - double maxTotalVolume = stops.Max(x => x.TotalLiquidVolume); + double maxNlCM = stops.Max(x => x.TotalLiquidNanoliterPerCentimeter); foreach (var table in group.ProcessParametersTables.OrderBy(x => x.MaxInkUptake)) { - if (maxTotalVolume <= table.MaxInkUptake) return table; + if (maxNlCM <= table.MaxInkUptake) return table; } - throw new InvalidOperationException($"The total liquid volume ({maxTotalVolume.ToString("0.0")}) does not fit any process table for one or more colors."); + throw new InvalidOperationException($"The total liquid quantity ({maxNlCM.ToString("0.0")} nl/cm) does not fit any process table for one or more colors."); //Is MaxInkUptake a percentage ? because if not, i have to know what process parameters table to use to calculate the NlCm. } -- cgit v1.3.1 From 5e0350325fc8082509731fb33753825aaf21e924 Mon Sep 17 00:00:00 2001 From: Victoria Plitt Date: Sun, 8 Nov 2020 19:07:37 +0200 Subject: Added tests for the gradients. --- .../Tango.ColorLib.GradientTest.CLI/Program.cs | 878 +++++++++++++++------ 1 file changed, 633 insertions(+), 245 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/Tango.ColorLib.GradientTest.CLI/Program.cs b/Software/Visual_Studio/Tango.ColorLib.GradientTest.CLI/Program.cs index b52661796..f2a9651c9 100644 --- a/Software/Visual_Studio/Tango.ColorLib.GradientTest.CLI/Program.cs +++ b/Software/Visual_Studio/Tango.ColorLib.GradientTest.CLI/Program.cs @@ -16,7 +16,178 @@ namespace Tango.ColorLib.GradientTest.CLI static void Main(string[] args) { GradientGenerator generator = new GradientGenerator(); + //RGB, Gamut Region 0, In Gamut + //TEST1 + TestRGBGamutRegion0(generator); + Console.WriteLine("Press enter to nextTestLABGamutRegion0 test..."); + Console.ReadLine(); + // Lab, Gamut Region 0, In Gamut + //TEST2 + TestLABGamutRegion0(generator); + Console.WriteLine("Press enter to next TestVolumeGamutRegion0 test..."); + Console.ReadLine(); + //Volume, Gamut Region 0, In Gamut + //TEST3 + TestVolumeGamutRegion0(generator); + Console.WriteLine("Press enter to next TestVolumeGamutRegion1 test..."); + Console.ReadLine(); + //Volume, Gamut Region 1, In Gamut + //TEST4 + TestVolumeGamutRegion1(generator); + Console.WriteLine("Press enter to next TestRGBMixedGamut test..."); + Console.ReadLine(); + + //RGB, Mixed Gamut Regions, In Gamut + //TEST5 + TestRGBMixedGamut(generator); + Console.WriteLine("Press enter to next TestLABOutOfGamut test..."); + Console.ReadLine(); + + //LAB, Gamut Region 0, Out of Gamut + //TEST6 + TestLABOutOfGamut(generator); + Console.WriteLine("Press enter to next TestLABMixedGamut test..."); + Console.ReadLine(); + + //7. Lab, Mixed Gamut Regions, In Gamut + //TEST7 + TestLABMixedGamut(generator); + Console.WriteLine("Press enter to next TestMixedEnvironment test..."); + Console.ReadLine(); + + //8. Mixed Environment + //TEST8 + TestMixedEnvironment(generator); + { + /*GradientConversionInput input = new GradientConversionInput(); + + //CCT + input.ForwardData = ByteString.CopyFrom(File.ReadAllBytes(@"Sylko_HV_IL350R.cct")); //TODO: Load CCT file from local drive. + + //RML Liquid Factors + input.InputLiquids.Add(new InputLiquid() + { + LiquidType = LiquidType.Cyan, + CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Cyan), + MaxNanoliterPerCentimeter = 200, + }); + + input.InputLiquids.Add(new InputLiquid() + { + LiquidType = LiquidType.Magenta, + CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Magenta), + MaxNanoliterPerCentimeter = 200, + }); + + input.InputLiquids.Add(new InputLiquid() + { + LiquidType = LiquidType.Yellow, + CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Yellow), + MaxNanoliterPerCentimeter = 200, + }); + + input.InputLiquids.Add(new InputLiquid() + { + LiquidType = LiquidType.Black, + CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Black), + MaxNanoliterPerCentimeter =200, + }); + //Process Ranges + input.ProcessRanges.Add(new ProcessRange() + { + MinInkUptake = 200, + MaxInkUptake =200, + }); + + input.ProcessRanges.Add(new ProcessRange() + { + MinInkUptake = 200, + MaxInkUptake = 400, + }); + + //White Point + input.ThreadL = 92.7867 ; + input.ThreadA = -0.2519; + input.ThreadB = 0.6968; + + //Segment length + input.SegmentLength = 1000;*/ + } + { + /* + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset = 0, + Red = 93, + Green = 123, + Blue = 95, + }); + //Lab Stop 2 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.6, + L = 50, + A = -10, + B = -10, + }); + //Volume Stop 3 + GradientInputStop c = new GradientInputStop() + { + ColorSpace = ColorSpace.Volume, + Offset = 1, + }; + c.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Cyan, + Volume = 50 + }); + c.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Magenta, + Volume = 0 + }); + c.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Yellow, + Volume = 50 + }); + c.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Black, + Volume = 0 + }); + input.Stops.Add(c); + + Console.WriteLine($"Testing input:\n{input.ToJsonString(nameof(input.ForwardData),nameof(CalibrationData))}"); + + Console.WriteLine(); + + Console.WriteLine("Processing..."); + + Stopwatch watch = new Stopwatch(); + watch.Start(); + + GradientConversionOutput output = generator.GenerateGradient(input); + + watch.Stop(); + Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); + + //watch.Elapsed.TotalSeconds.ToString("0.0")} + + Console.WriteLine(); + Console.WriteLine($"Result:\n{output.ToJsonString()}"); + Console.WriteLine();*/ + } + + Console.WriteLine("Press return to exit..."); + Console.ReadLine(); + } + + static GradientConversionInput CreateBaseGradientConversionInput() + { GradientConversionInput input = new GradientConversionInput(); //CCT @@ -48,14 +219,14 @@ namespace Tango.ColorLib.GradientTest.CLI { LiquidType = LiquidType.Black, CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Black), - MaxNanoliterPerCentimeter =200, + MaxNanoliterPerCentimeter = 200, }); //Process Ranges input.ProcessRanges.Add(new ProcessRange() { MinInkUptake = 200, - MaxInkUptake =200, + MaxInkUptake = 200, }); input.ProcessRanges.Add(new ProcessRange() @@ -65,238 +236,464 @@ namespace Tango.ColorLib.GradientTest.CLI }); //White Point - input.ThreadL = 92.7867 ; + input.ThreadL = 92.7867; input.ThreadA = -0.2519; input.ThreadB = 0.6968; //Segment length input.SegmentLength = 1000; + return input; + } + + /// + /// 1. RGB, Gamut Region 0, In Gamut + /// + static void TestRGBGamutRegion0(GradientGenerator generator) + { + GradientConversionInput input = CreateBaseGradientConversionInput(); + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset = 0, + Red = 160, + Green = 200, + Blue = 200, + }); + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset = 0.5, + Red = 100, + Green = 100, + Blue = 160, + }); + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset = 1, + Red = 0, + Green = 150, + Blue = 200, + }); + Console.WriteLine($"TestRGBGamutRegion0 input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); + Console.WriteLine(); + Console.WriteLine("Processing..."); + Stopwatch watch = new Stopwatch(); + watch.Start(); + GradientConversionOutput output = generator.GenerateGradient(input); - /* //RGB Stop 1 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Rgb, - Offset = 0, - Red = 160, - Green = 200, - Blue = 200, - }); - - //RGB Stop 2 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Rgb, - Offset =0.5, - Red =100, - Green =100, - Blue = 160, - }); - //RGB Stop 3 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Rgb, - Offset = 1, - Red = 0, - Green = 150, - Blue = 200, - });*/ - //Lab Stop 1 - /* input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Lab, - Offset = 0.0, - L = 44.75, - A =15.14, - B =-32.5, - }); - - //Lab Stop 2 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Lab, - Offset = 0.5, - L = 39.70, - A = 25.0, - B = -4.8, - }); - //Lab Stop 3 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Lab, - Offset = 1, - L = 53, - A = -15.0, - B = -35, - }); */ - /* //Volume Stop 1 - GradientInputStop a = new GradientInputStop() - { - ColorSpace = ColorSpace.Volume, - Offset =0.0, - }; - a.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Cyan, - Volume = 100 - }); - a.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Magenta, - Volume = 50 - }); - a.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Yellow, - Volume = 0 - }); - a.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Black, - Volume = 0 - }); - input.Stops.Add(a); - //Volume Stop 2 - GradientInputStop b = new GradientInputStop() - { - ColorSpace = ColorSpace.Volume, - Offset = 0.5, - }; - b.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Cyan, - Volume = 0 - }); - b.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Magenta, - Volume = 100 - }); - b.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Yellow, - Volume =50 - }); - b.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Black, - Volume = 0 - }); - input.Stops.Add(b); - //Volume Stop 3 - GradientInputStop c = new GradientInputStop() - { - ColorSpace = ColorSpace.Volume, - Offset =1, - }; - c.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Cyan, - Volume = 50 - }); - c.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Magenta, - Volume = 0 - }); - c.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Yellow, - Volume = 100 - }); - c.LiquidVolumes.Add(new LiquidVolume() - { - LiquidType = LiquidType.Black, - Volume = 0 - }); - input.Stops.Add(c); - */ - /* //Lab Stop 1 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Lab, - Offset = 0.0, - L = 51, - A =70, - B =35, - }); - - //Lab Stop 2 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Lab, - Offset = 0.3, - L = 37, - A = 24, - B = -50, - }); - //Lab Stop 3 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Lab, - Offset = 1, - L = 78, - A = -50, - B = -75, - });*/ - /* //RGB Stop 1 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Rgb, - Offset = 0, - Red = 180, - Green = 152, - Blue = 116, - }); - - //RGB Stop 2 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Rgb, - Offset =0.4, - Red =34, - Green =108, - Blue = 80, - }); - //RGB Stop 3 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Rgb, - Offset = 1, - Red = 70, - Green = 50, - Blue = 50, - });*/ - //Lab Stop 1 - /* input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Lab, - Offset = 0.0, - L = 73, - A =-30, - B =45, - }); - - //Lab Stop 2 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Lab, - Offset = 0.6, - L = 27, - A = 5, - B = -15, - }); - //Lab Stop 3 - input.Stops.Add(new GradientInputStop() - { - ColorSpace = ColorSpace.Lab, - Offset = 1, - L = 74, - A = -12, - B = 35, - });*/ + watch.Stop(); + Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); + Console.WriteLine(); + Console.WriteLine($"Result TestRGBGamutRegion0 :\n{output.ToJsonString()}"); + Console.WriteLine(); + } + /// + /// 2. LAB, Gamut Region 0, In Gamut + /// + static void TestLABGamutRegion0(GradientGenerator generator) + { + GradientConversionInput input = CreateBaseGradientConversionInput(); + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.0, + L = 44.75, + A = 15.14, + B = -32.5, + }); + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.5, + L = 39.70, + A = 25.0, + B = -4.8, + }); + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 1, + L = 53, + A = -15.0, + B = -35, + }); + + Console.WriteLine($"TestLABGamutRegion0 input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); + Console.WriteLine(); + Console.WriteLine("Processing..."); + Stopwatch watch = new Stopwatch(); + watch.Start(); + + GradientConversionOutput output = generator.GenerateGradient(input); + + watch.Stop(); + Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); + Console.WriteLine(); + Console.WriteLine($"Result TestLABGamutRegion0 :\n{output.ToJsonString()}"); + Console.WriteLine(); + } + + /// + /// 3. VolumeAB, Gamut Region 0, In Gamut + /// + static void TestVolumeGamutRegion0(GradientGenerator generator) + { + GradientConversionInput input = CreateBaseGradientConversionInput(); + + GradientInputStop gradientInputStop1 = new GradientInputStop() + { + ColorSpace = ColorSpace.Volume, + Offset = 0.0, + }; + gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Cyan, + Volume = 50 + }); + gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Magenta, + Volume = 50 + }); + gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Yellow, + Volume = 0 + }); + gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Black, + Volume = 0 + }); + input.Stops.Add(gradientInputStop1); + + GradientInputStop gradientInputStop2 = new GradientInputStop() + { + ColorSpace = ColorSpace.Volume, + Offset = 0.5, + }; + gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Cyan, + Volume = 0 + }); + gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Magenta, + Volume = 50 + }); + gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Yellow, + Volume = 50 + }); + gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Black, + Volume = 0 + }); + input.Stops.Add(gradientInputStop2); + + GradientInputStop gradientInputStop3 = new GradientInputStop() + { + ColorSpace = ColorSpace.Volume, + Offset = 1, + }; + gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Cyan, + Volume = 50 + }); + gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Magenta, + Volume = 0 + }); + gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Yellow, + Volume = 50 + }); + gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Black, + Volume = 0 + }); + input.Stops.Add(gradientInputStop3); + + Console.WriteLine($"TestVolumeGamutRegion0 input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); + Console.WriteLine(); + Console.WriteLine("Processing..."); + Stopwatch watch = new Stopwatch(); + watch.Start(); + + GradientConversionOutput output = generator.GenerateGradient(input); + + watch.Stop(); + Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); + Console.WriteLine(); + Console.WriteLine($"Result TestVolumeGamutRegion0 :\n{output.ToJsonString()}"); + Console.WriteLine(); + } + + /// + /// 4. VolumeAB, Gamut Region 1, In Gamut + /// + static void TestVolumeGamutRegion1(GradientGenerator generator) + { + GradientConversionInput input = CreateBaseGradientConversionInput(); + + GradientInputStop gradientInputStop1 = new GradientInputStop() + { + ColorSpace = ColorSpace.Volume, + Offset = 0.0, + }; + gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Cyan, + Volume = 100 + }); + gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Magenta, + Volume = 50 + }); + gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Yellow, + Volume = 0 + }); + gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Black, + Volume = 0 + }); + input.Stops.Add(gradientInputStop1); + + //Volume, Gamut Region 1, In Gamut + GradientInputStop gradientInputStop2 = new GradientInputStop() + { + ColorSpace = ColorSpace.Volume, + Offset = 0.5, + }; + gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Cyan, + Volume = 0 + }); + gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Magenta, + Volume = 100 + }); + gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Yellow, + Volume = 50 + }); + gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Black, + Volume = 0 + }); + input.Stops.Add(gradientInputStop2); + + GradientInputStop gradientInputStop3 = new GradientInputStop() + { + ColorSpace = ColorSpace.Volume, + Offset = 1, + }; + gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Cyan, + Volume = 50 + }); + gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Magenta, + Volume = 0 + }); + gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Yellow, + Volume = 100 + }); + gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() + { + LiquidType = LiquidType.Black, + Volume = 0 + }); + input.Stops.Add(gradientInputStop3); + + Console.WriteLine($"TestVolumeGamutRegion1 input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); + Console.WriteLine(); + Console.WriteLine("Processing..."); + Stopwatch watch = new Stopwatch(); + watch.Start(); + + GradientConversionOutput output = generator.GenerateGradient(input); + + watch.Stop(); + Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); + Console.WriteLine(); + Console.WriteLine($"Result TestVolumeGamutRegion1 :\n{output.ToJsonString()}"); + Console.WriteLine(); + } + + /// + /// 5. RGB, Mixed Gamut Regions, In Gamut + /// + static void TestRGBMixedGamut(GradientGenerator generator) + { + GradientConversionInput input = CreateBaseGradientConversionInput(); + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset = 0, + Red = 180, + Green = 152, + Blue = 116, + }); + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset = 0.4, + Red = 34, + Green = 108, + Blue = 80, + }); + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Rgb, + Offset = 1, + Red = 70, + Green = 50, + Blue = 50, + }); + + Console.WriteLine($"TestRGBMixedGamut input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); + Console.WriteLine(); + Console.WriteLine("Processing..."); + Stopwatch watch = new Stopwatch(); + watch.Start(); + + GradientConversionOutput output = generator.GenerateGradient(input); + + watch.Stop(); + Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); + Console.WriteLine(); + Console.WriteLine($"Result TestRGBMixedGamut :\n{output.ToJsonString()}"); + Console.WriteLine(); + } + + /// + /// 6. Lab, Gamut Region 0, Out of Gamut + /// + static void TestLABOutOfGamut(GradientGenerator generator) + { + GradientConversionInput input = CreateBaseGradientConversionInput(); + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.0, + L = 51, + A = 70, + B = 35, + }); + + //Lab Stop 2 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.3, + L = 37, + A = 24, + B = -50, + }); + //Lab Stop 3 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 1, + L = 78, + A = -50, + B = 75, + }); + + Console.WriteLine($"TestLABOutOfGamut input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); + Console.WriteLine(); + Console.WriteLine("Processing..."); + Stopwatch watch = new Stopwatch(); + watch.Start(); + + GradientConversionOutput output = generator.GenerateGradient(input); + + watch.Stop(); + Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); + Console.WriteLine(); + Console.WriteLine($"Result TestLABOutOfGamut :\n{output.ToJsonString()}"); + Console.WriteLine(); + } + + /// + ///7. Lab, Mixed Gamut Regions, In Gamut + /// + static void TestLABMixedGamut(GradientGenerator generator) + { + GradientConversionInput input = CreateBaseGradientConversionInput(); + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.0, + L = 73, + A = -30, + B = 45, + }); + + //Lab Stop 2 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 0.6, + L = 27, + A = 5, + B = -15, + }); + //Lab Stop 3 + input.Stops.Add(new GradientInputStop() + { + ColorSpace = ColorSpace.Lab, + Offset = 1, + L = 74, + A = -12, + B = 35, + }); + + Console.WriteLine($"TestLABMixedGamut input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); + Console.WriteLine(); + Console.WriteLine("Processing..."); + Stopwatch watch = new Stopwatch(); + watch.Start(); + + GradientConversionOutput output = generator.GenerateGradient(input); + + watch.Stop(); + Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); + Console.WriteLine(); + Console.WriteLine($"Result TestLABMixedGamut :\n{output.ToJsonString()}"); + Console.WriteLine(); + } + + /// + ///8. Mixed Environment + /// + static void TestMixedEnvironment(GradientGenerator generator) + { + GradientConversionInput input = CreateBaseGradientConversionInput(); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Rgb, @@ -305,7 +702,7 @@ namespace Tango.ColorLib.GradientTest.CLI Green = 123, Blue = 95, }); - //Lab Stop 2 + input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Lab, @@ -314,40 +711,37 @@ namespace Tango.ColorLib.GradientTest.CLI A = -10, B = -10, }); - //Volume Stop 3 - GradientInputStop c = new GradientInputStop() + + GradientInputStop gradientInputStop1 = new GradientInputStop() { ColorSpace = ColorSpace.Volume, - Offset = 1, + Offset = 1.0, }; - c.LiquidVolumes.Add(new LiquidVolume() + gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Cyan, Volume = 50 }); - c.LiquidVolumes.Add(new LiquidVolume() + gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Magenta, Volume = 0 }); - c.LiquidVolumes.Add(new LiquidVolume() + gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Yellow, Volume = 50 }); - c.LiquidVolumes.Add(new LiquidVolume() + gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Black, Volume = 0 }); - input.Stops.Add(c); - - Console.WriteLine($"Testing input:\n{input.ToJsonString(nameof(input.ForwardData),nameof(CalibrationData))}"); + input.Stops.Add(gradientInputStop1); + Console.WriteLine($"TestMixedEnvironment input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); Console.WriteLine(); - Console.WriteLine("Processing..."); - Stopwatch watch = new Stopwatch(); watch.Start(); @@ -355,15 +749,9 @@ namespace Tango.ColorLib.GradientTest.CLI watch.Stop(); Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); - -//watch.Elapsed.TotalSeconds.ToString("0.0")} - Console.WriteLine(); - Console.WriteLine($"Result:\n{output.ToJsonString()}"); + Console.WriteLine($"Result TestMixedEnvironment :\n{output.ToJsonString()}"); Console.WriteLine(); - - Console.WriteLine("Press return to exit..."); - Console.ReadLine(); } } } -- cgit v1.3.1 From 8bcd08cf4053ad4e47247f08677df16c274cdfd1 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Mon, 9 Nov 2020 02:00:42 +0200 Subject: Readiness for TI threshold. --- .../Dispensing/TransparentLiquidDispensingCalc.cs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/Tango.BL/Dispensing/TransparentLiquidDispensingCalc.cs b/Software/Visual_Studio/Tango.BL/Dispensing/TransparentLiquidDispensingCalc.cs index 40a716c13..2340cdd62 100644 --- a/Software/Visual_Studio/Tango.BL/Dispensing/TransparentLiquidDispensingCalc.cs +++ b/Software/Visual_Studio/Tango.BL/Dispensing/TransparentLiquidDispensingCalc.cs @@ -25,10 +25,15 @@ namespace Tango.BL.Dispensing if (liquidVolume.Configuration != null && liquidVolume.RML != null && liquidVolume.ProcessParametersTable != null) { double nlPcmSum = liquidVolume.BrushStop.LiquidVolumes.Where(x => (IdsPackFormulas)x.IdsPack.IdsPackFormula.Code == IdsPackFormulas.StandardColor).Sum(x => x.NanoliterPerCentimeter); - double minInkUptake = liquidVolume.ProcessParametersTable.MinInkUptake; - double virtual_volume = Math.Max(0, minInkUptake - nlPcmSum); - return virtual_volume; - //(liquidVolume.Volume / 100d) * (Math.Min(liquidVolume.LiquidMaxNanoliterPerCentimeter, liquidVolume.ProcessParametersTable.MinInkUptake)); + + nlPcmSum = Math.Max(0, liquidVolume.ProcessParametersTable.MinInkUptake - nlPcmSum); + + //if (liquidVolume.RML.ColorConversionVersion > 3) + //{ + // nlPcmSum = nlPcmSum <= 0.5 ? 0 : nlPcmSum; + //} + + return nlPcmSum; } else { @@ -45,9 +50,6 @@ namespace Tango.BL.Dispensing { if (liquidVolume.ProcessParametersTable != null) { - //double nlPcmSum = liquidVolume.BrushStop.LiquidVolumes.Where(x => (IdsPackFormulas)x.IdsPack.IdsPackFormula.Code == IdsPackFormulas.StandardColor).Sum(x => x.NanoliterPerCentimeter); - //double minInkUptake = liquidVolume.ProcessParametersTable.MinInkUptake; - //double volume = ((liquidVolume.LiquidMaxNanoliterPerCentimeter - nlPcmSum) / liquidVolume.LiquidMaxNanoliterPerCentimeter) * 100d; return Math.Max(100d - liquidVolume.BrushStop.LiquidVolumes.Where(x => (IdsPackFormulas)x.IdsPack.IdsPackFormula.Code == IdsPackFormulas.StandardColor).Sum(x => x.Volume), 0); } else -- cgit v1.3.1 From f151ebc9584408ef420d66ddb2568a0c8ccae674 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Mon, 9 Nov 2020 02:03:13 +0200 Subject: Increased attempt thread jogging timeout to 20. --- Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index 30aa868f0..83579d776 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -4142,7 +4142,7 @@ namespace Tango.Integration.Operation var r = await SendRequest(new AttemptThreadJoggingRequest() { - }, new TransportRequestConfig() { ShouldLog = true, Timeout = TimeSpan.FromSeconds(10) }); + }, new TransportRequestConfig() { ShouldLog = true, Timeout = TimeSpan.FromSeconds(20) }); } #endregion -- cgit v1.3.1 From 906b39989f5686d3cb738b6a0a16402472c865fd Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Mon, 9 Nov 2020 15:36:38 +0200 Subject: Redundant. --- Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest index efc5f8179..d72e75011 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest @@ -16,7 +16,7 @@ Remove this element if your application requires this virtualization for backwards compatibility. --> - + -- cgit v1.3.1 From ec216afccbe57d15a253698d18aa9bae624380f3 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Mon, 9 Nov 2020 15:42:54 +0200 Subject: PPC 1.2.0 --- .../PPC Installer-cache/cacheIndex.txt | Bin 52 -> 52 bytes .../Advanced Installer Projects/PPC Installer.aip | 40 +++++++++++---------- 2 files changed, 22 insertions(+), 18 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt index 5fe5afe5a..9453b5c13 100644 Binary files a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt and b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt differ diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip index 7cd6c02b1..33b2306fa 100644 --- a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip +++ b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip @@ -73,9 +73,7 @@ - - @@ -158,6 +156,7 @@ + @@ -165,15 +164,19 @@ - + + + + + @@ -203,7 +206,6 @@ - @@ -522,23 +524,23 @@ - - - - - - - - - - + + + + + + + + + + @@ -825,15 +827,17 @@ - - - - + + + + + + -- cgit v1.3.1 From c2c8c5eeeffbaa1d1e9675ac92dc805336c4742a Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Mon, 9 Nov 2020 15:47:09 +0200 Subject: Redundant. --- .../PPC Installer-cache/cacheIndex.txt | Bin 52 -> 52 bytes .../Advanced Installer Projects/PPC Installer.aip | 93 ++++++++++----------- 2 files changed, 42 insertions(+), 51 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt index 9453b5c13..5fe5afe5a 100644 Binary files a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt and b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt differ diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip index 33b2306fa..872e4b938 100644 --- a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip +++ b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip @@ -227,28 +227,26 @@ - - - - - - - - - - - - + + + + + + + - - - - + + + + + + + @@ -509,28 +507,9 @@ - - - - - - - - - - - - - - - - - - - @@ -618,6 +597,20 @@ + + + + + + + + + + + + + + @@ -815,29 +808,27 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + -- cgit v1.3.1 From 1b057d7f51681dd82c6e6cc879f12d766fa4eccf Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Mon, 9 Nov 2020 15:55:29 +0200 Subject: Redundant. --- .../Machine Studio Installer.aip | 81 +++++++++++---------- .../Help/proc-doc.chm | Bin 208671 -> 233761 bytes 2 files changed, 42 insertions(+), 39 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip index bf2235681..13f3dae11 100644 --- a/Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip +++ b/Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip @@ -16,10 +16,10 @@ - + - + @@ -343,24 +343,30 @@ - - - - - + + + + + + + + + + + + - @@ -388,17 +394,11 @@ - - - - - - @@ -847,6 +847,21 @@ + + + + + + + + + + + + + + + @@ -858,7 +873,7 @@ - + @@ -959,18 +974,6 @@ - - - - - - - - - - - - @@ -1341,18 +1344,18 @@ - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chm b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chm index 49bfd2707..30bac0262 100644 Binary files a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chm and b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chm differ -- cgit v1.3.1 From 2e8b90feb300a56820b09ad8939d6433506e560a Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Mon, 9 Nov 2020 16:00:00 +0200 Subject: Redundant. --- .../Advanced Installer Projects/FSE Installer.aip | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip index f5347ea7d..3b2172443 100644 --- a/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip +++ b/Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip @@ -29,10 +29,10 @@ - + - + @@ -303,6 +303,8 @@ + + @@ -758,6 +760,11 @@ + + + + + @@ -772,7 +779,7 @@ - + @@ -1244,6 +1251,8 @@ + + -- cgit v1.3.1 From c9089eeb57aa43b8ca088070fcd54cc0044cc4e7 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Mon, 9 Nov 2020 20:32:43 +0200 Subject: Block environment selection for none twine users. --- .../FSE/Tango.FSE.UI/ViewModels/LoginViewVM.cs | 16 +++++++++++++++- .../Visual_Studio/FSE/Tango.FSE.UI/Views/LoginView.xaml | 8 ++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModels/LoginViewVM.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModels/LoginViewVM.cs index 27c490c80..70a68918a 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModels/LoginViewVM.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModels/LoginViewVM.cs @@ -66,7 +66,7 @@ namespace Tango.FSE.UI.ViewModels public String Email { get { return _email; } - set { _email = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } + set { _email = value; RaisePropertyChangedAuto(); RaisePropertyChanged(nameof(DisplayEnvironment)); InvalidateRelayCommands(); } } private String _password; @@ -153,6 +153,14 @@ namespace Tango.FSE.UI.ViewModels } } + /// + /// Gets or sets a value indicating whether to display the environment selection. + /// + public bool DisplayEnvironment + { + get { return Email.IsNotNullOrEmpty() && Email.ToLower().EndsWith("@twine-s.com"); } + } + #endregion #region Commands @@ -288,6 +296,12 @@ namespace Tango.FSE.UI.ViewModels } IsFree = false; + + if (!DisplayEnvironment) //Force production environment if not a twine user. + { + SelectedEnvironment = Services.GatewayService.Environments.SingleOrDefault(x => x.Name == "PROD"); + } + SelectedView = LoginViews.Logging; var result = await AuthenticationProvider.Login(Email, Password, SelectedEnvironment, (status) => Status = status); diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LoginView.xaml b/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LoginView.xaml index b4ff8030c..260c0a532 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LoginView.xaml +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LoginView.xaml @@ -65,7 +65,9 @@ - + + +