aboutsummaryrefslogtreecommitdiffstats
path: root/Software
diff options
context:
space:
mode:
Diffstat (limited to 'Software')
-rw-r--r--Software/DB/PPC/Tango.mdfbin75497472 -> 75497472 bytes
-rw-r--r--Software/DB/PPC/Tango_log.ldfbin53673984 -> 53673984 bytes
-rw-r--r--Software/DB/TCC/TCC.mdfbin8388608 -> 8388608 bytes
-rw-r--r--Software/DB/TCC/TCC_log.ldfbin8388608 -> 8388608 bytes
-rw-r--r--Software/DB/Tango.mdfbin75497472 -> 75497472 bytes
-rw-r--r--Software/DB/Tango_log.ldfbin22675456 -> 22675456 bytes
-rw-r--r--Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c2
-rw-r--r--Software/Embedded_SW/Embedded/Communication/Container.c3
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c26
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h2
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.c422
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.h16
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/HeadCleaningParameters.pb-c.c19
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/HeadCleaningParameters.pb-c.h4
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c19
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h4
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingRequest.pb-c.c72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingRequest.pb-c.h70
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingResponse.pb-c.c72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingResponse.pb-c.h70
-rw-r--r--Software/Embedded_SW/Embedded/DataDef.h6
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c10
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h1
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.c17
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.h4
-rw-r--r--Software/Embedded_SW/Embedded/Embedded.cfg2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c187
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c25
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/process.c8
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/process.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c24
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c8
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c26
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IFS/ifs.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c21
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c50
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c23
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c22
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c2
-rw-r--r--Software/Embedded_SW/Embedded/Software Release Notes.txt9
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c208
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c9
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h1
-rw-r--r--Software/PMR/Messages/Common/MessageType.proto2
-rw-r--r--Software/PMR/Messages/Diagnostics/EventType.proto78
-rw-r--r--Software/PMR/Messages/Printing/HeadCleaningParameters.proto1
-rw-r--r--Software/PMR/Messages/Printing/ProcessParameters.proto2
-rw-r--r--Software/PMR/Messages/ThreadLoading/AttemptThreadJoggingRequest.proto9
-rw-r--r--Software/PMR/Messages/ThreadLoading/AttemptThreadJoggingResponse.proto9
-rw-r--r--Software/Stubs Collection/alarm generator/alarm_gen.exebin0 -> 3760128 bytes
-rw-r--r--Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs6
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/FSE Installer.aip15
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip81
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip133
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp285
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.h4
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/Utils/NumConversions.cpp18
-rw-r--r--Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/Utils/NumConversions.h1
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures.Documentation/Help/proc-doc.chmbin208671 -> 233761 bytes
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs2
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModels/LoginViewVM.cs16
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LoginView.xaml8
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/HeadCleaningParametersView.xaml3
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/Converters/MachineEventToViewConverter.cs1
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/EventsViews/ThreadBreakView.xaml26
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/EventsViews/ThreadBreakView.xaml.cs49
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Events/Tango.PPC.Events.csproj9
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs2
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/thread_loading.pngbin0 -> 7209 bytes
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj5
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs14
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml38
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs6
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Views/MainView.xaml3
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Connection/DefaultMachineProvider.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/ImageGalleryControl.cs114
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Controls/ImageGalleryControl.xaml101
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/Merged.xaml3
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj7
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/ThreadLoading/IThreadLoadingService.cs3
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakView.xaml225
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakView.xaml.cs28
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs243
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingView.xaml111
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingViewVM - Copy.cs176
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadLoadingViewVM.cs20
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/1.jpgbin0 -> 57998 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/2.jpgbin0 -> 58057 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/3.jpgbin0 -> 59306 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/4.jpgbin0 -> 55777 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/1.JPGbin0 -> 50823 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/2.JPGbin0 -> 36100 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/3.JPGbin0 -> 52652 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/4.JPGbin0 -> 103042 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/1.jpgbin0 -> 50823 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/2.jpgbin0 -> 36100 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/3.jpgbin0 -> 52652 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/4.jpgbin0 -> 103042 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/5.jpgbin0 -> 123123 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/GuidingUnits/1.JPGbin0 -> 47345 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/1.jpgbin0 -> 70545 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/2.JPGbin0 -> 50823 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/3.JPGbin0 -> 36100 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/4.JPGbin0 -> 85970 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/5.JPGbin0 -> 123123 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/6.JPGbin0 -> 67829 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/7.jpgbin0 -> 229536 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/TS1800_CloseUp_Feeder_P.jpgbin0 -> 94899 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/machine_full.jpgbin0 -> 67243 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/1.jpgbin0 -> 39336 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/2.jpgbin0 -> 36100 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/3.jpgbin0 -> 45420 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/4.jpgbin0 -> 46782 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/5.jpgbin0 -> 49932 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj39
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ThreadLoading/DefaultThreadLoadingService.cs17
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest2
-rw-r--r--Software/Visual_Studio/Resources/Events Revisions/Tango alarm events handling chart_Rev27.xlsxbin0 -> 69986 bytes
-rw-r--r--Software/Visual_Studio/Tango.BL/DTO/ProcessParametersTableDTOBase.cs8
-rw-r--r--Software/Visual_Studio/Tango.BL/DTO/RmlDTOBase.cs8
-rw-r--r--Software/Visual_Studio/Tango.BL/Dispensing/TransparentLiquidDispensingCalc.cs16
-rw-r--r--Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTableBase.cs42
-rw-r--r--Software/Visual_Studio/Tango.BL/Entities/RmlBase.cs38
-rw-r--r--Software/Visual_Studio/Tango.BL/Enumerations/EventTypes.cs96
-rw-r--r--Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs49
-rw-r--r--Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/ConversionOutputExtensions.cs24
-rw-r--r--Software/Visual_Studio/Tango.ColorLib.GradientTest.CLI/Program.cs805
-rw-r--r--Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs22
-rw-r--r--Software/Visual_Studio/Tango.DAL.Remote/DB/PROCESS_PARAMETERS_TABLES.cs1
-rw-r--r--Software/Visual_Studio/Tango.DAL.Remote/DB/RML.cs1
-rw-r--r--Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx6
-rw-r--r--Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram164
-rw-r--r--Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs17
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/IMachineOperator.cs6
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs14
-rw-r--r--Software/Visual_Studio/Tango.PMR/Common/MessageType.cs17
-rw-r--r--Software/Visual_Studio/Tango.PMR/Diagnostics/EventType.cs635
-rw-r--r--Software/Visual_Studio/Tango.PMR/EmbeddedParameters/AlarmHandlingItem.cs138
-rw-r--r--Software/Visual_Studio/Tango.PMR/Printing/HeadCleaningParameters.cs36
-rw-r--r--Software/Visual_Studio/Tango.PMR/Printing/ProcessParameters.cs35
-rw-r--r--Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj4
-rw-r--r--Software/Visual_Studio/Tango.PMR/ThreadLoading/AttemptThreadJoggingRequest.cs132
-rw-r--r--Software/Visual_Studio/Tango.PMR/ThreadLoading/AttemptThreadJoggingResponse.cs132
-rw-r--r--Software/Visual_Studio/Utilities/Tango.AlarmParametersGenerator/Program.cs4
-rw-r--r--Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs2
-rw-r--r--Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj7
153 files changed, 4208 insertions, 1650 deletions
diff --git a/Software/DB/PPC/Tango.mdf b/Software/DB/PPC/Tango.mdf
index 5c2d6f294..bfb58b8b9 100644
--- a/Software/DB/PPC/Tango.mdf
+++ b/Software/DB/PPC/Tango.mdf
Binary files differ
diff --git a/Software/DB/PPC/Tango_log.ldf b/Software/DB/PPC/Tango_log.ldf
index 7da1b17b5..734014f1e 100644
--- a/Software/DB/PPC/Tango_log.ldf
+++ b/Software/DB/PPC/Tango_log.ldf
Binary files differ
diff --git a/Software/DB/TCC/TCC.mdf b/Software/DB/TCC/TCC.mdf
index 6a002658b..67f699f61 100644
--- a/Software/DB/TCC/TCC.mdf
+++ b/Software/DB/TCC/TCC.mdf
Binary files differ
diff --git a/Software/DB/TCC/TCC_log.ldf b/Software/DB/TCC/TCC_log.ldf
index a4e235de4..390749bbf 100644
--- a/Software/DB/TCC/TCC_log.ldf
+++ b/Software/DB/TCC/TCC_log.ldf
Binary files differ
diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf
index 20a7f0234..276543dab 100644
--- a/Software/DB/Tango.mdf
+++ b/Software/DB/Tango.mdf
Binary files differ
diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf
index 8f1f49ea0..faf2a6f8c 100644
--- a/Software/DB/Tango_log.ldf
+++ b/Software/DB/Tango_log.ldf
Binary files differ
diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c
index 9f5a27eeb..1ec53d6ec 100644
--- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c
+++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c
@@ -20,7 +20,7 @@ typedef struct
} TangoVersion_t;
-TangoVersion_t _gTangoVersion = {1,5,1,2};
+TangoVersion_t _gTangoVersion = {1,5,1,4};
#define BUILD_DATE __DATE__
char Dat[50] = BUILD_DATE;
diff --git a/Software/Embedded_SW/Embedded/Communication/Container.c b/Software/Embedded_SW/Embedded/Communication/Container.c
index 5bed0bcdc..b386ae20f 100644
--- a/Software/Embedded_SW/Embedded/Communication/Container.c
+++ b/Software/Embedded_SW/Embedded/Communication/Container.c
@@ -491,6 +491,9 @@ void receive_callback(char* buffer, size_t length)
case MESSAGE_TYPE__StopThreadLoadingRequest:
StopThreadLoadingFunc(requestContainer);
break;
+ case MESSAGE_TYPE__AttemptThreadJoggingRequest:
+ AttemptThreadJoggingFunc(requestContainer);
+ break;
case MESSAGE_TYPE__StubDispenserEEpromRequest:
StubDispenserEEpromRequestFunc(requestContainer);
break;
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c
index d7fe911c1..4b8277d75 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c
@@ -7,7 +7,7 @@
#endif
#include "MessageType.pb-c.h"
-static const ProtobufCEnumValue message_type__enum_values_by_number[269] =
+static const ProtobufCEnumValue message_type__enum_values_by_number[271] =
{
{ "", "", 0 },
{ "", "", 1 },
@@ -272,6 +272,8 @@ static const ProtobufCEnumValue message_type__enum_values_by_number[269] =
{ "", "", 11005 },
{ "", "", 11006 },
{ "", "", 11007 },
+ { "", "", 11008 },
+ { "", "", 11009 },
{ "", "", 12000 },
{ "", "", 12001 },
{ "", "", 13000 },
@@ -280,9 +282,9 @@ static const ProtobufCEnumValue message_type__enum_values_by_number[269] =
{ "", "", 13003 },
};
static const ProtobufCIntRange message_type__value_ranges[] = {
-{0, 0},{3, 2},{1000, 114},{2000, 135},{2044, 175},{3000, 177},{4000, 191},{5000, 199},{6000, 203},{7000, 209},{8000, 233},{9000, 241},{10000, 245},{11000, 255},{12000, 263},{13000, 265},{0, 269}
+{0, 0},{3, 2},{1000, 114},{2000, 135},{2044, 175},{3000, 177},{4000, 191},{5000, 199},{6000, 203},{7000, 209},{8000, 233},{9000, 241},{10000, 245},{11000, 255},{12000, 265},{13000, 267},{0, 271}
};
-static const ProtobufCEnumValueIndex message_type__enum_values_by_name[269] =
+static const ProtobufCEnumValueIndex message_type__enum_values_by_name[271] =
{
{ "", 189 },
{ "", 190 },
@@ -294,6 +296,8 @@ static const ProtobufCEnumValueIndex message_type__enum_values_by_name[269] =
{ "", 252 },
{ "", 231 },
{ "", 232 },
+ { "", 263 },
+ { "", 264 },
{ "", 2 },
{ "", 3 },
{ "", 175 },
@@ -344,8 +348,8 @@ static const ProtobufCEnumValueIndex message_type__enum_values_by_name[269] =
{ "", 210 },
{ "", 131 },
{ "", 132 },
- { "", 267 },
- { "", 268 },
+ { "", 269 },
+ { "", 270 },
{ "", 223 },
{ "", 224 },
{ "", 221 },
@@ -375,8 +379,8 @@ static const ProtobufCEnumValueIndex message_type__enum_values_by_name[269] =
{ "", 122 },
{ "", 4 },
{ "", 5 },
- { "", 265 },
- { "", 266 },
+ { "", 267 },
+ { "", 268 },
{ "", 161 },
{ "", 162 },
{ "", 185 },
@@ -407,8 +411,8 @@ static const ProtobufCEnumValueIndex message_type__enum_values_by_name[269] =
{ "", 166 },
{ "", 187 },
{ "", 188 },
- { "", 263 },
- { "", 264 },
+ { "", 265 },
+ { "", 266 },
{ "", 241 },
{ "", 242 },
{ "", 245 },
@@ -561,9 +565,9 @@ const ProtobufCEnumDescriptor message_type__descriptor =
"",
"",
"",
- 269,
+ 271,
message_type__enum_values_by_number,
- 269,
+ 271,
message_type__enum_values_by_name,
16,
message_type__value_ranges,
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h
index cacc241b3..133d64f2d 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h
@@ -283,6 +283,8 @@ typedef enum _MessageType {
MESSAGE_TYPE__StopThreadLoadingResponse = 11005,
MESSAGE_TYPE__TryThreadLoadingRequest = 11006,
MESSAGE_TYPE__TryThreadLoadingResponse = 11007,
+ MESSAGE_TYPE__AttemptThreadJoggingRequest = 11008,
+ MESSAGE_TYPE__AttemptThreadJoggingResponse = 11009,
MESSAGE_TYPE__StartInkFillingStatusRequest = 12000,
MESSAGE_TYPE__StartInkFillingStatusResponse = 12001,
MESSAGE_TYPE__PutDataStoreItemRequest = 13000,
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.c
index 7f667ae6d..7aa6f71d4 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.c
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.c
@@ -7,7 +7,7 @@
#endif
#include "EventType.pb-c.h"
-static const ProtobufCEnumValue event_type__enum_values_by_number[365] =
+static const ProtobufCEnumValue event_type__enum_values_by_number[379] =
{
{ "", "", 0 },
{ "", "", 1000 },
@@ -46,6 +46,9 @@ static const ProtobufCEnumValue event_type__enum_values_by_number[365] =
{ "", "", 2019 },
{ "", "", 2020 },
{ "", "", 2021 },
+ { "", "", 2022 },
+ { "", "", 2023 },
+ { "", "", 2024 },
{ "", "", 3000 },
{ "", "", 3001 },
{ "", "", 3002 },
@@ -374,65 +377,43 @@ static const ProtobufCEnumValue event_type__enum_values_by_number[365] =
{ "", "", 10003 },
{ "", "", 10004 },
{ "", "", 10005 },
+ { "", "", 10006 },
+ { "", "", 10007 },
+ { "", "", 10008 },
+ { "", "", 10009 },
+ { "", "", 10010 },
+ { "", "", 10011 },
+ { "", "", 10012 },
+ { "", "", 10013 },
+ { "", "", 10014 },
+ { "", "", 10015 },
+ { "", "", 10016 },
};
static const ProtobufCIntRange event_type__value_ranges[] = {
-{0, 0},{1000, 1},{2000, 15},{3000, 37},{4000, 89},{5000, 111},{6000, 210},{7000, 216},{8000, 304},{9000, 336},{10000, 359},{0, 365}
+{0, 0},{1000, 1},{2000, 15},{3000, 40},{4000, 92},{5000, 114},{6000, 213},{7000, 219},{8000, 307},{9000, 339},{10000, 362},{0, 379}
};
-static const ProtobufCEnumValueIndex event_type__enum_values_by_name[365] =
+static const ProtobufCEnumValueIndex event_type__enum_values_by_name[379] =
{
- { "", 337 },
- { "", 336 },
- { "", 362 },
+ { "", 340 },
+ { "", 339 },
+ { "", 365 },
{ "", 4 },
{ "", 5 },
{ "", 6 },
{ "", 7 },
{ "", 22 },
{ "", 21 },
- { "", 342 },
- { "", 353 },
- { "", 347 },
- { "", 354 },
- { "", 348 },
- { "", 355 },
- { "", 349 },
+ { "", 345 },
{ "", 356 },
{ "", 350 },
{ "", 357 },
+ { "", 351 },
{ "", 358 },
- { "", 232 },
- { "", 296 },
- { "", 288 },
- { "", 248 },
- { "", 256 },
- { "", 264 },
- { "", 272 },
- { "", 216 },
- { "", 240 },
- { "", 224 },
- { "", 280 },
- { "", 233 },
- { "", 297 },
- { "", 289 },
- { "", 249 },
- { "", 257 },
- { "", 265 },
- { "", 273 },
- { "", 217 },
- { "", 241 },
- { "", 225 },
- { "", 281 },
- { "", 234 },
- { "", 298 },
- { "", 290 },
- { "", 250 },
- { "", 258 },
- { "", 266 },
- { "", 274 },
- { "", 218 },
- { "", 242 },
- { "", 226 },
- { "", 282 },
+ { "", 352 },
+ { "", 359 },
+ { "", 353 },
+ { "", 360 },
+ { "", 361 },
{ "", 235 },
{ "", 299 },
{ "", 291 },
@@ -488,67 +469,145 @@ static const ProtobufCEnumValueIndex event_type__enum_values_by_name[365] =
{ "", 247 },
{ "", 231 },
{ "", 287 },
- { "", 93 },
- { "", 104 },
+ { "", 240 },
+ { "", 304 },
+ { "", 296 },
+ { "", 256 },
+ { "", 264 },
+ { "", 272 },
+ { "", 280 },
+ { "", 224 },
+ { "", 248 },
+ { "", 232 },
+ { "", 288 },
+ { "", 241 },
+ { "", 305 },
+ { "", 297 },
+ { "", 257 },
+ { "", 265 },
+ { "", 273 },
+ { "", 281 },
+ { "", 225 },
+ { "", 249 },
+ { "", 233 },
+ { "", 289 },
+ { "", 242 },
+ { "", 306 },
+ { "", 298 },
+ { "", 258 },
+ { "", 266 },
+ { "", 274 },
+ { "", 282 },
+ { "", 226 },
+ { "", 250 },
+ { "", 234 },
+ { "", 290 },
+ { "", 96 },
+ { "", 107 },
+ { "", 108 },
{ "", 105 },
- { "", 102 },
- { "", 100 },
{ "", 103 },
- { "", 101 },
{ "", 106 },
- { "", 107 },
- { "", 108 },
+ { "", 104 },
{ "", 109 },
- { "", 89 },
- { "", 90 },
- { "", 91 },
+ { "", 110 },
+ { "", 111 },
+ { "", 112 },
{ "", 92 },
- { "", 99 },
+ { "", 93 },
{ "", 94 },
- { "", 96 },
- { "", 97 },
{ "", 95 },
- { "", 110 },
+ { "", 102 },
+ { "", 97 },
+ { "", 99 },
+ { "", 100 },
{ "", 98 },
- { "", 208 },
- { "", 194 },
- { "", 192 },
- { "", 198 },
- { "", 196 },
- { "", 204 },
- { "", 206 },
- { "", 186 },
- { "", 188 },
- { "", 190 },
+ { "", 113 },
+ { "", 101 },
+ { "", 211 },
+ { "", 197 },
{ "", 195 },
- { "", 193 },
+ { "", 201 },
{ "", 199 },
- { "", 197 },
- { "", 205 },
{ "", 207 },
- { "", 187 },
+ { "", 209 },
{ "", 189 },
{ "", 191 },
+ { "", 193 },
+ { "", 198 },
+ { "", 196 },
+ { "", 202 },
+ { "", 200 },
+ { "", 208 },
+ { "", 210 },
+ { "", 190 },
+ { "", 192 },
+ { "", 194 },
+ { "", 153 },
+ { "", 154 },
+ { "", 155 },
+ { "", 156 },
+ { "", 149 },
{ "", 150 },
{ "", 151 },
{ "", 152 },
- { "", 153 },
+ { "", 144 },
+ { "", 145 },
{ "", 146 },
{ "", 147 },
{ "", 148 },
- { "", 149 },
- { "", 141 },
- { "", 142 },
{ "", 143 },
- { "", 144 },
- { "", 145 },
- { "", 140 },
+ { "", 206 },
+ { "", 204 },
+ { "", 205 },
{ "", 203 },
- { "", 201 },
- { "", 202 },
- { "", 200 },
+ { "", 142 },
+ { "", 212 },
+ { "", 186 },
+ { "", 179 },
+ { "", 160 },
+ { "", 166 },
+ { "", 172 },
+ { "", 187 },
+ { "", 180 },
+ { "", 161 },
+ { "", 167 },
+ { "", 173 },
+ { "", 188 },
+ { "", 181 },
+ { "", 162 },
+ { "", 168 },
+ { "", 174 },
+ { "", 137 },
+ { "", 132 },
+ { "", 114 },
+ { "", 120 },
+ { "", 126 },
+ { "", 138 },
+ { "", 133 },
+ { "", 115 },
+ { "", 121 },
+ { "", 127 },
{ "", 139 },
- { "", 209 },
+ { "", 134 },
+ { "", 116 },
+ { "", 122 },
+ { "", 128 },
+ { "", 140 },
+ { "", 135 },
+ { "", 117 },
+ { "", 123 },
+ { "", 129 },
+ { "", 141 },
+ { "", 136 },
+ { "", 118 },
+ { "", 124 },
+ { "", 130 },
+ { "", 182 },
+ { "", 175 },
+ { "", 119 },
+ { "", 125 },
+ { "", 131 },
{ "", 183 },
{ "", 176 },
{ "", 157 },
@@ -564,86 +623,47 @@ static const ProtobufCEnumValueIndex event_type__enum_values_by_name[365] =
{ "", 159 },
{ "", 165 },
{ "", 171 },
- { "", 134 },
- { "", 129 },
- { "", 111 },
- { "", 117 },
- { "", 123 },
- { "", 135 },
- { "", 130 },
- { "", 112 },
- { "", 118 },
- { "", 124 },
- { "", 136 },
- { "", 131 },
- { "", 113 },
- { "", 119 },
- { "", 125 },
- { "", 137 },
- { "", 132 },
- { "", 114 },
- { "", 120 },
- { "", 126 },
- { "", 138 },
- { "", 133 },
- { "", 115 },
- { "", 121 },
- { "", 127 },
- { "", 179 },
- { "", 172 },
- { "", 116 },
- { "", 122 },
- { "", 128 },
- { "", 180 },
- { "", 173 },
- { "", 154 },
- { "", 160 },
- { "", 166 },
- { "", 181 },
- { "", 174 },
- { "", 155 },
- { "", 161 },
- { "", 167 },
- { "", 182 },
- { "", 175 },
- { "", 156 },
- { "", 162 },
- { "", 168 },
{ "", 26 },
{ "", 27 },
{ "", 33 },
{ "", 16 },
- { "", 75 },
{ "", 78 },
{ "", 81 },
{ "", 84 },
- { "", 40 },
- { "", 47 },
- { "", 54 },
- { "", 61 },
+ { "", 87 },
+ { "", 43 },
+ { "", 50 },
+ { "", 57 },
+ { "", 64 },
{ "", 34 },
{ "", 17 },
{ "", 18 },
{ "", 19 },
{ "", 20 },
- { "", 359 },
- { "", 360 },
- { "", 343 },
+ { "", 372 },
+ { "", 374 },
+ { "", 362 },
+ { "", 368 },
+ { "", 376 },
+ { "", 370 },
+ { "", 363 },
+ { "", 378 },
+ { "", 346 },
{ "", 12 },
{ "", 14 },
{ "", 13 },
{ "", 11 },
{ "", 10 },
- { "", 43 },
- { "", 50 },
- { "", 57 },
- { "", 64 },
{ "", 46 },
{ "", 53 },
{ "", 60 },
{ "", 67 },
- { "", 69 },
- { "", 68 },
+ { "", 49 },
+ { "", 56 },
+ { "", 63 },
+ { "", 70 },
+ { "", 72 },
+ { "", 71 },
{ "", 24 },
{ "", 25 },
{ "", 23 },
@@ -651,19 +671,7 @@ static const ProtobufCEnumValueIndex event_type__enum_values_by_name[365] =
{ "", 29 },
{ "", 30 },
{ "", 28 },
- { "", 87 },
- { "", 312 },
- { "", 328 },
- { "", 304 },
- { "", 320 },
- { "", 313 },
- { "", 329 },
- { "", 305 },
- { "", 321 },
- { "", 314 },
- { "", 330 },
- { "", 306 },
- { "", 322 },
+ { "", 90 },
{ "", 315 },
{ "", 331 },
{ "", 307 },
@@ -684,67 +692,87 @@ static const ProtobufCEnumValueIndex event_type__enum_values_by_name[365] =
{ "", 335 },
{ "", 311 },
{ "", 327 },
- { "", 215 },
- { "", 214 },
- { "", 210 },
+ { "", 320 },
+ { "", 336 },
+ { "", 312 },
+ { "", 328 },
+ { "", 321 },
+ { "", 337 },
+ { "", 313 },
+ { "", 329 },
+ { "", 322 },
+ { "", 338 },
+ { "", 314 },
+ { "", 330 },
+ { "", 218 },
+ { "", 217 },
{ "", 213 },
- { "", 211 },
- { "", 212 },
- { "", 339 },
- { "", 361 },
+ { "", 216 },
+ { "", 214 },
+ { "", 215 },
+ { "", 342 },
+ { "", 364 },
{ "", 0 },
{ "", 15 },
- { "", 351 },
- { "", 345 },
- { "", 352 },
- { "", 346 },
- { "", 74 },
+ { "", 354 },
+ { "", 348 },
+ { "", 355 },
+ { "", 349 },
{ "", 77 },
{ "", 80 },
{ "", 83 },
- { "", 42 },
- { "", 49 },
- { "", 56 },
- { "", 63 },
+ { "", 86 },
+ { "", 45 },
+ { "", 52 },
+ { "", 59 },
+ { "", 66 },
{ "", 8 },
{ "", 9 },
{ "", 3 },
{ "", 1 },
{ "", 2 },
- { "", 41 },
+ { "", 37 },
+ { "", 38 },
+ { "", 39 },
+ { "", 44 },
+ { "", 51 },
+ { "", 58 },
+ { "", 65 },
+ { "", 74 },
+ { "", 73 },
+ { "", 75 },
{ "", 48 },
{ "", 55 },
{ "", 62 },
- { "", 71 },
- { "", 70 },
- { "", 72 },
- { "", 45 },
- { "", 52 },
- { "", 59 },
- { "", 66 },
+ { "", 69 },
{ "", 36 },
- { "", 37 },
+ { "", 40 },
+ { "", 91 },
+ { "", 41 },
{ "", 88 },
- { "", 38 },
- { "", 85 },
- { "", 86 },
+ { "", 89 },
{ "", 35 },
{ "", 31 },
+ { "", 347 },
{ "", 344 },
+ { "", 373 },
+ { "", 375 },
+ { "", 366 },
+ { "", 369 },
+ { "", 377 },
+ { "", 371 },
+ { "", 367 },
{ "", 341 },
- { "", 363 },
- { "", 364 },
- { "", 338 },
- { "", 340 },
- { "", 39 },
- { "", 73 },
+ { "", 343 },
+ { "", 42 },
{ "", 76 },
{ "", 79 },
{ "", 82 },
- { "", 44 },
- { "", 51 },
- { "", 58 },
- { "", 65 },
+ { "", 85 },
+ { "", 47 },
+ { "", 54 },
+ { "", 61 },
+ { "", 68 },
};
const ProtobufCEnumDescriptor event_type__descriptor =
{
@@ -753,9 +781,9 @@ const ProtobufCEnumDescriptor event_type__descriptor =
"",
"",
"",
- 365,
+ 379,
event_type__enum_values_by_number,
- 365,
+ 379,
event_type__enum_values_by_name,
11,
event_type__value_ranges,
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.h
index cfb700260..9b2147774 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.h
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/EventType.pb-c.h
@@ -57,6 +57,9 @@ typedef enum _EventType {
EVENT_TYPE__FPGA_WATCHDOG_ACTIVATED = 2019,
EVENT_TYPE__UNINTENDED_RESET = 2020,
EVENT_TYPE__TEMPERATURE_MEASUREMENT_ERROR = 2021,
+ EVENT_TYPE__RFID_READER_MALFUNCTION_INK_SLOT = 2022,
+ EVENT_TYPE__RFID_READER_MALFUNCTION_WASTE_SLOT_1 = 2023,
+ EVENT_TYPE__RFID_READER_MALFUNCTION_WASTE_SLOT_2 = 2024,
EVENT_TYPE__THREAD_BREAK = 3000,
EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_FEEDER_DANCER = 3001,
EVENT_TYPE__WINDER_CONE_DOES_NOT_EXIST = 3002,
@@ -384,7 +387,18 @@ typedef enum _EventType {
EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE = 10002,
EVENT_TYPE__ALL_WASTE_CARTRIDGES_FULL = 10003,
EVENT_TYPE__WASTE_CARTRIDGE_PRESENCE_SENSOR_TIMEOUT = 10004,
- EVENT_TYPE__WASTE_CARTRIDGE_RFID_TIMEOUT = 10005
+ EVENT_TYPE__WASTE_CARTRIDGE_RFID_TIMEOUT = 10005,
+ EVENT_TYPE__INK_CARTRIDGE_RFID_TAG_CANNOT_BE_READ = 10006,
+ EVENT_TYPE__WASTE_CARTRIDGE_RFID_TAG_CANNOT_BE_READ = 10007,
+ EVENT_TYPE__INK_CARTRIDGE_RFID_TAG_IS_NOT_VALID = 10008,
+ EVENT_TYPE__WASTE_CARTRIDGE_RFID_TAG_IS_NOT_VALID = 10009,
+ EVENT_TYPE__INK_CARTRIDGE_AUTHENTICATION_FAILED = 10010,
+ EVENT_TYPE__WASTE_CARTRIDGE_AUTHENTICATION_FAILED = 10011,
+ EVENT_TYPE__INK_CARTRIDGE_IS_BLOCKED = 10012,
+ EVENT_TYPE__WASTE_CARTRIDGE_IS_BLOCKED = 10013,
+ EVENT_TYPE__INK_CARTRIDGE_RFID_TAG_CANNOT_BE_UPDATED = 10014,
+ EVENT_TYPE__WASTE_CARTRIDGE_RFID_TAG_CANNOT_BE_UPDATED = 10015,
+ EVENT_TYPE__INK_IN_CARTRIDGE_IS_EXPIRED = 10016
PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(EVENT_TYPE)
} EventType;
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/HeadCleaningParameters.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/HeadCleaningParameters.pb-c.c
index 699470ded..a5fba86d3 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/HeadCleaningParameters.pb-c.c
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/HeadCleaningParameters.pb-c.c
@@ -52,7 +52,7 @@ void head_cleaning_parameters__free_unpacked
assert(message->base.descriptor == &head_cleaning_parameters__descriptor);
protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
-static const ProtobufCFieldDescriptor head_cleaning_parameters__field_descriptors[1] =
+static const ProtobufCFieldDescriptor head_cleaning_parameters__field_descriptors[2] =
{
{
"",
@@ -66,14 +66,27 @@ static const ProtobufCFieldDescriptor head_cleaning_parameters__field_descriptor
0, /* flags */
0,NULL,NULL /* reserved1,reserved2, etc */
},
+ {
+ "",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HeadCleaningParameters, has_archeadcleaningmotorspeed),
+ offsetof(HeadCleaningParameters, archeadcleaningmotorspeed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
};
static const unsigned head_cleaning_parameters__field_indices_by_name[] = {
+ 1, /* field[1] = ArcHeadCleaningMotorSpeed */
0, /* field[0] = CleanerFlow */
};
static const ProtobufCIntRange head_cleaning_parameters__number_ranges[1 + 1] =
{
{ 1, 0 },
- { 0, 1 }
+ { 0, 2 }
};
const ProtobufCMessageDescriptor head_cleaning_parameters__descriptor =
{
@@ -83,7 +96,7 @@ const ProtobufCMessageDescriptor head_cleaning_parameters__descriptor =
"",
"",
sizeof(HeadCleaningParameters),
- 1,
+ 2,
head_cleaning_parameters__field_descriptors,
head_cleaning_parameters__field_indices_by_name,
1, head_cleaning_parameters__number_ranges,
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/HeadCleaningParameters.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/HeadCleaningParameters.pb-c.h
index 9213143bb..08c7b7248 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/HeadCleaningParameters.pb-c.h
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/HeadCleaningParameters.pb-c.h
@@ -28,10 +28,12 @@ struct _HeadCleaningParameters
ProtobufCMessage base;
protobuf_c_boolean has_cleanerflow;
double cleanerflow;
+ protobuf_c_boolean has_archeadcleaningmotorspeed;
+ double archeadcleaningmotorspeed;
};
#define HEAD_CLEANING_PARAMETERS__INIT \
{ PROTOBUF_C_MESSAGE_INIT (&head_cleaning_parameters__descriptor) \
- , 0, 0 }
+ , 0, 0, 0, 0 }
/* HeadCleaningParameters methods */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c
index 44acaa3ad..a27a2202e 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c
@@ -52,7 +52,7 @@ void process_parameters__free_unpacked
assert(message->base.descriptor == &process_parameters__descriptor);
protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
-static const ProtobufCFieldDescriptor process_parameters__field_descriptors[32] =
+static const ProtobufCFieldDescriptor process_parameters__field_descriptors[31] =
{
{
"",
@@ -426,21 +426,8 @@ static const ProtobufCFieldDescriptor process_parameters__field_descriptors[32]
0, /* flags */
0,NULL,NULL /* reserved1,reserved2, etc */
},
- {
- "",
- 32,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_DOUBLE,
- offsetof(ProcessParameters, has_archeadcleaningmotorspeed),
- offsetof(ProcessParameters, archeadcleaningmotorspeed),
- NULL,
- NULL,
- 0, /* flags */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
};
static const unsigned process_parameters__field_indices_by_name[] = {
- 31, /* field[31] = ArcHeadCleaningMotorSpeed */
13, /* field[13] = DryerAirFlow */
17, /* field[17] = DryerBufferLength */
14, /* field[14] = DryerZone1Temp */
@@ -476,7 +463,7 @@ static const unsigned process_parameters__field_indices_by_name[] = {
static const ProtobufCIntRange process_parameters__number_ranges[1 + 1] =
{
{ 1, 0 },
- { 0, 32 }
+ { 0, 31 }
};
const ProtobufCMessageDescriptor process_parameters__descriptor =
{
@@ -486,7 +473,7 @@ const ProtobufCMessageDescriptor process_parameters__descriptor =
"",
"",
sizeof(ProcessParameters),
- 32,
+ 31,
process_parameters__field_descriptors,
process_parameters__field_indices_by_name,
1, process_parameters__number_ranges,
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h
index aa762a3d6..9a6453221 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h
@@ -88,12 +88,10 @@ struct _ProcessParameters
double lblowertemp;
protobuf_c_boolean has_pressurebuildup;
double pressurebuildup;
- protobuf_c_boolean has_archeadcleaningmotorspeed;
- double archeadcleaningmotorspeed;
};
#define PROCESS_PARAMETERS__INIT \
{ PROTOBUF_C_MESSAGE_INIT (&process_parameters__descriptor) \
- , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
/* ProcessParameters methods */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingRequest.pb-c.c
new file mode 100644
index 000000000..78659ae90
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingRequest.pb-c.c
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: AttemptThreadJoggingRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "AttemptThreadJoggingRequest.pb-c.h"
+void attempt_thread_jogging_request__init
+ (AttemptThreadJoggingRequest *message)
+{
+ static const AttemptThreadJoggingRequest init_value = ATTEMPT_THREAD_JOGGING_REQUEST__INIT;
+ *message = init_value;
+}
+size_t attempt_thread_jogging_request__get_packed_size
+ (const AttemptThreadJoggingRequest *message)
+{
+ assert(message->base.descriptor == &attempt_thread_jogging_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t attempt_thread_jogging_request__pack
+ (const AttemptThreadJoggingRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &attempt_thread_jogging_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t attempt_thread_jogging_request__pack_to_buffer
+ (const AttemptThreadJoggingRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &attempt_thread_jogging_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+AttemptThreadJoggingRequest *
+ attempt_thread_jogging_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (AttemptThreadJoggingRequest *)
+ protobuf_c_message_unpack (&attempt_thread_jogging_request__descriptor,
+ allocator, len, data);
+}
+void attempt_thread_jogging_request__free_unpacked
+ (AttemptThreadJoggingRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &attempt_thread_jogging_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+#define attempt_thread_jogging_request__field_descriptors NULL
+#define attempt_thread_jogging_request__field_indices_by_name NULL
+#define attempt_thread_jogging_request__number_ranges NULL
+const ProtobufCMessageDescriptor attempt_thread_jogging_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "",
+ "",
+ "",
+ "",
+ sizeof(AttemptThreadJoggingRequest),
+ 0,
+ attempt_thread_jogging_request__field_descriptors,
+ attempt_thread_jogging_request__field_indices_by_name,
+ 0, attempt_thread_jogging_request__number_ranges,
+ (ProtobufCMessageInit) attempt_thread_jogging_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingRequest.pb-c.h
new file mode 100644
index 000000000..366498be8
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingRequest.pb-c.h
@@ -0,0 +1,70 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: AttemptThreadJoggingRequest.proto */
+
+#ifndef PROTOBUF_C_AttemptThreadJoggingRequest_2eproto__INCLUDED
+#define PROTOBUF_C_AttemptThreadJoggingRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _AttemptThreadJoggingRequest AttemptThreadJoggingRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _AttemptThreadJoggingRequest
+{
+ ProtobufCMessage base;
+};
+#define ATTEMPT_THREAD_JOGGING_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&attempt_thread_jogging_request__descriptor) \
+ }
+
+
+/* AttemptThreadJoggingRequest methods */
+void attempt_thread_jogging_request__init
+ (AttemptThreadJoggingRequest *message);
+size_t attempt_thread_jogging_request__get_packed_size
+ (const AttemptThreadJoggingRequest *message);
+size_t attempt_thread_jogging_request__pack
+ (const AttemptThreadJoggingRequest *message,
+ uint8_t *out);
+size_t attempt_thread_jogging_request__pack_to_buffer
+ (const AttemptThreadJoggingRequest *message,
+ ProtobufCBuffer *buffer);
+AttemptThreadJoggingRequest *
+ attempt_thread_jogging_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void attempt_thread_jogging_request__free_unpacked
+ (AttemptThreadJoggingRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*AttemptThreadJoggingRequest_Closure)
+ (const AttemptThreadJoggingRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor attempt_thread_jogging_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_AttemptThreadJoggingRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingResponse.pb-c.c
new file mode 100644
index 000000000..d75845c99
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingResponse.pb-c.c
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: AttemptThreadJoggingResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "AttemptThreadJoggingResponse.pb-c.h"
+void attempt_thread_jogging_response__init
+ (AttemptThreadJoggingResponse *message)
+{
+ static const AttemptThreadJoggingResponse init_value = ATTEMPT_THREAD_JOGGING_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t attempt_thread_jogging_response__get_packed_size
+ (const AttemptThreadJoggingResponse *message)
+{
+ assert(message->base.descriptor == &attempt_thread_jogging_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t attempt_thread_jogging_response__pack
+ (const AttemptThreadJoggingResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &attempt_thread_jogging_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t attempt_thread_jogging_response__pack_to_buffer
+ (const AttemptThreadJoggingResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &attempt_thread_jogging_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+AttemptThreadJoggingResponse *
+ attempt_thread_jogging_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (AttemptThreadJoggingResponse *)
+ protobuf_c_message_unpack (&attempt_thread_jogging_response__descriptor,
+ allocator, len, data);
+}
+void attempt_thread_jogging_response__free_unpacked
+ (AttemptThreadJoggingResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &attempt_thread_jogging_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+#define attempt_thread_jogging_response__field_descriptors NULL
+#define attempt_thread_jogging_response__field_indices_by_name NULL
+#define attempt_thread_jogging_response__number_ranges NULL
+const ProtobufCMessageDescriptor attempt_thread_jogging_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "",
+ "",
+ "",
+ "",
+ sizeof(AttemptThreadJoggingResponse),
+ 0,
+ attempt_thread_jogging_response__field_descriptors,
+ attempt_thread_jogging_response__field_indices_by_name,
+ 0, attempt_thread_jogging_response__number_ranges,
+ (ProtobufCMessageInit) attempt_thread_jogging_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingResponse.pb-c.h
new file mode 100644
index 000000000..e7324b29b
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/ThreadLoading/AttemptThreadJoggingResponse.pb-c.h
@@ -0,0 +1,70 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: AttemptThreadJoggingResponse.proto */
+
+#ifndef PROTOBUF_C_AttemptThreadJoggingResponse_2eproto__INCLUDED
+#define PROTOBUF_C_AttemptThreadJoggingResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _AttemptThreadJoggingResponse AttemptThreadJoggingResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _AttemptThreadJoggingResponse
+{
+ ProtobufCMessage base;
+};
+#define ATTEMPT_THREAD_JOGGING_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&attempt_thread_jogging_response__descriptor) \
+ }
+
+
+/* AttemptThreadJoggingResponse methods */
+void attempt_thread_jogging_response__init
+ (AttemptThreadJoggingResponse *message);
+size_t attempt_thread_jogging_response__get_packed_size
+ (const AttemptThreadJoggingResponse *message);
+size_t attempt_thread_jogging_response__pack
+ (const AttemptThreadJoggingResponse *message,
+ uint8_t *out);
+size_t attempt_thread_jogging_response__pack_to_buffer
+ (const AttemptThreadJoggingResponse *message,
+ ProtobufCBuffer *buffer);
+AttemptThreadJoggingResponse *
+ attempt_thread_jogging_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void attempt_thread_jogging_response__free_unpacked
+ (AttemptThreadJoggingResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*AttemptThreadJoggingResponse_Closure)
+ (const AttemptThreadJoggingResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor attempt_thread_jogging_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_AttemptThreadJoggingResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h
index e128094a5..755e5a962 100644
--- a/Software/Embedded_SW/Embedded/DataDef.h
+++ b/Software/Embedded_SW/Embedded/DataDef.h
@@ -26,7 +26,8 @@
//#define FOUR_WINDERS
#ifdef FOUR_WINDERS
-#define BTSR_NO_TFU
+#define BTSR_NO_FEEDER_TFU
+#define BTSR_NO_PULLER_TFU
#endif
//#define USE_POWERSTEP01 -NA
@@ -35,7 +36,8 @@
//#define VAC_TEST
#define DISPENSER_VALVES_OPEN
//#define USE_TUNNEL_PT100
-//#define BTSR_NO_TFU
+//#define BTSR_NO_FEEDER_TFU
+//#define BTSR_NO_PULLER_TFU
//#define IGNORE_SPIKE
//#define SPECIAL_DISPENSERS
extern bool Special_Dispensers;
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c
index 95651eba2..0b308408c 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c
@@ -350,15 +350,15 @@ uint32_t Dryer_Read_Blower_Tach()
return RPM;
}
*/
+uint32_t Drayer_Fan_Speed_RPM = 0;
+uint32_t Get_Dryer_Fan_Tacho()
+{
+ return Drayer_Fan_Speed_RPM;
+}
uint32_t Read_Dryer_Fan_Tacho()
{
-
- uint32_t Drayer_Fan_Speed_RPM = 0;
-
Drayer_Fan_Speed_RPM = Calculate_Tacho_Fan_Speed(FPGA_Freq, 12, F1_Prescaler1_reg5, F1_Tacho_reg8);
-
-
return Drayer_Fan_Speed_RPM;
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h
index e660b450a..121211c69 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h
@@ -15,6 +15,7 @@ void Control_Dryer_Fan_PWM(uint8_t PWM_Command_Precent);
void Machine_Idle_Breathing_Led();
uint32_t Read_Dryer_Fan_Tacho();
+uint32_t Get_Dryer_Fan_Tacho();
void Set_Speed_Sensor_TypeII_Registers(uint32_t Counter, uint32_t Prescaler);
uint32_t Read_Speed_Sensor_TypeII();
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
index 495f27652..00502d3ba 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
@@ -905,8 +905,6 @@ void Pumps_Control(PUMPS_ENUM Pump_Id, bool Direction) //1 - OPEN, 0 - CLOSE ??
//F1_GPO_Reg.bits.F1_GPO_WASTECH_PUMP2 = Direction;
SecondaryPumpActive = Direction;
}
- else
- LOG_ERROR(WHS_Type,"Pump activated on new whs");
break;
case WHS_WTANKPUMP2:
#ifndef EVALUATION_BOARD
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.c
index 6c2d54111..335aab113 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.c
@@ -199,7 +199,7 @@ bool WHS_PT100_config(TEMPERATURE_SENSOR_ID_ENUM SensorId)
//ADS122_WriteAllReg(uint8_t i2cbus, WHS_chip_address i2cadd, D_ADS122C04_TempSensConfigStruc *p_writeValue);
}
-bool WHS_PT100_Get(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint8_t *value )
+bool WHS_PT100_Get(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint32_t *value )
{
bool Status = OK;
switch (SensorId)
@@ -225,7 +225,7 @@ bool WHS_PT100_Get(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint8_t *value )
}
-bool WHS_PT100_Read(TEMPERATURE_SENSOR_ID_ENUM SensorId)
+uint32_t WHS_PT100_Read(TEMPERATURE_SENSOR_ID_ENUM SensorId)
{
bool Status = OK;
uint32_t Temperatures = 0;
@@ -267,7 +267,10 @@ bool WHS_PT100_Read(TEMPERATURE_SENSOR_ID_ENUM SensorId)
break;
}
- return Status;
+ if (Status == OK)
+ return Temperatures;
+ else
+ return (uint32_t)Status;
}
bool Test_WHS_PT100_ADC()
@@ -277,10 +280,10 @@ bool Test_WHS_PT100_ADC()
//status |= WHS_PT100_InitConfigReg();
- status |= WHS_PT100_Read(/*TEMPERATURE_SENSOR_ID_ENUM*/ WHS_PT100_1_0X80_0);
- status |= WHS_PT100_Read(/*TEMPERATURE_SENSOR_ID_ENUM*/ WHS_PT100_3_0X82_0);
- status |= WHS_PT100_Read(/*TEMPERATURE_SENSOR_ID_ENUM*/ WHS_PT100_2_0X80_1);
- status |= WHS_PT100_Read(/*TEMPERATURE_SENSOR_ID_ENUM*/ WHS_PT100_4_0X82_1);
+ //status |= WHS_PT100_Read(/*TEMPERATURE_SENSOR_ID_ENUM*/ WHS_PT100_1_0X80_0);
+ //status |= WHS_PT100_Read(/*TEMPERATURE_SENSOR_ID_ENUM*/ WHS_PT100_3_0X82_0);
+ //status |= WHS_PT100_Read(/*TEMPERATURE_SENSOR_ID_ENUM*/ WHS_PT100_2_0X80_1);
+ //status |= WHS_PT100_Read(/*TEMPERATURE_SENSOR_ID_ENUM*/ WHS_PT100_4_0X82_1);
return status;
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.h
index ab09f0e9d..78900af52 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.h
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.h
@@ -25,8 +25,8 @@ extern uint32_t was_Data_ADC_Head;
bool WHS_PT100_InitConfigReg();
bool WHS_PT100_ControlMux_Before_Reading(TEMPERATURE_SENSOR_ID_ENUM SensorId);
-bool WHS_PT100_Read(TEMPERATURE_SENSOR_ID_ENUM SensorId);
-bool WHS_PT100_Get(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint8_t *value );
+uint32_t WHS_PT100_Read(TEMPERATURE_SENSOR_ID_ENUM SensorId);
+bool WHS_PT100_Get(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint32_t *value );
bool Test_WHS_PT100_ADC();
#endif /* DRIVERS_I2C_COMMUNICATION_WHS_CARD_PT100_PT100_ADC_H_ */
diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg
index cce6b3440..7fdf21819 100644
--- a/Software/Embedded_SW/Embedded/Embedded.cfg
+++ b/Software/Embedded_SW/Embedded/Embedded.cfg
@@ -19,7 +19,7 @@ var Task = xdc.useModule('ti.sysbios.knl.Task');
var HeapTrack = xdc.useModule('ti.sysbios.heaps.HeapTrack');
//var Memory = xdc.useModule('xdc.runtime.Memory');
-BIOS.heapSize = 60000; // bios heapmem
+BIOS.heapSize = 68000; // bios heapmem
//Memory.defaultHeapSize = 20000;
//Program.heap = 40000;
//Program.stack = 4096;
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index 127ccbabf..e754b0df2 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -1,3 +1,4 @@
+
/*
* AlarmHandling.c
@@ -491,14 +492,14 @@ uint32_t AlarmHandlingLoadFile(void)
{
FileAlarmItem[F_count].AlarmDirection = AlarmParametersTable->alarmitem[i]->alarmdirection;
FileAlarmItem[F_count].AlarmDirection = AlarmParametersTable->alarmitem[i]->alarmdirection;
- FileAlarmItem[F_count].Frequency = AlarmParametersTable->alarmitem[i]->frequency; //1/10/100/1000
+ //FileAlarmItem[F_count].Frequency = AlarmParametersTable->alarmitem[i]->frequency; //1/10/100/1000
FileAlarmItem[F_count].AlarmSource = AlarmParametersTable->alarmitem[i]->alarmsource;
FileAlarmItem[F_count].DeviceId = AlarmParametersTable->alarmitem[i]->deviceid;
FileAlarmItem[F_count].ModuleDeviceId = AlarmParametersTable->alarmitem[i]->moduledeviceid;
FileAlarmItem[F_count].AlarmValue = AlarmParametersTable->alarmitem[i]->alarmvalue;
FileAlarmItem[F_count].AlarmDirection = AlarmParametersTable->alarmitem[i]->alarmdirection;
FileAlarmItem[F_count].Severity = AlarmParametersTable->alarmitem[i]->severity;
- FileAlarmItem[F_count].Predecessor = AlarmParametersTable->alarmitem[i]->predecessor;
+ //FileAlarmItem[F_count].Predecessor = AlarmParametersTable->alarmitem[i]->predecessor;
FileAlarmItem[F_count].DebounceValue = AlarmParametersTable->alarmitem[i]->debouncevalue;
FileAlarmItem[F_count].EventType = AlarmParametersTable->alarmitem[i]->eventtype;
FileAlarmItem[F_count].isPersistent = AlarmParametersTable->alarmitem[i]->ispersistent;
@@ -1021,6 +1022,10 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
}
}
}
+ if (FoundReason == JOB_OK)
+ {
+ FoundReason = Winder_Check_Cone();
+ }
if (FoundReason != JOB_OK)
{
JobEndReason = getEndReason(AlarmId);
@@ -1080,7 +1085,7 @@ void AlarmHandlingInternalSetAlarm(uint32_t AlarmId, bool value)
if (AlarmItem[Alarm_i].EventType == AlarmId)
{
//if (0) // PERSISTENT ALARM
- if ((AlarmItem[Alarm_i].isPersistent == true)) // PERSISTENT ALARM simulate
+ if ((AlarmItem[Alarm_i].isPersistent == true)&&(value == true)) // PERSISTENT ALARM simulate Currently looking for "true" value, otherwise the currently existing OFF event appears
{
if (PersistentEventsResponse.events == NULL)
PersistentEventsResponse.events = (Event **)my_malloc(sizeof(Event*)*(PersistentEventsResponse.n_events+1));
@@ -1213,29 +1218,8 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
if (AlarmItem[Alarm_i].AlarmSource > ALARM_SOURCE_TYPE__FluidLevelAlarm)
continue;
AlarmCounter++;
- if (tick%AlarmItem[Alarm_i].Frequency == 0)
+ switch (AlarmItem[Alarm_i].AlarmSource)
{
- switch (AlarmItem[Alarm_i].AlarmSource)
- {
- /*case ALARM_SOURCE_TYPE__TemperatureAlarm:
- ivalue = MillisecGetTemperatures((TEMPERATURE_SENSOR_ID_ENUM)AlarmItem[Alarm_i].DeviceId);
- if (AlarmItem[Alarm_i].AlarmDirection == true)
- {
- if (ivalue/100 >= AlarmItem[Alarm_i].AlarmValue)
- {
- //LOG_ERROR (ivalue/100,"Temperature spike");
- Status = true;
- }
- }
- else
- {
- if (ivalue/100 <= AlarmItem[Alarm_i].AlarmValue)
- {
- //LOG_ERROR (ivalue/100,"iTemperature spike");
- Status = true;
- }
- }
- break;*/
case ALARM_SOURCE_TYPE__CoversAlarm:
if (CheckTamperAlarms)
{
@@ -1261,14 +1245,6 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
if (CheckHardLimitAlarms)
{
Status = AlarmState[Alarm_i].Status;
- /*if (AlarmItem[Alarm_i].AlarmDirection == true)
- {
- value = Get_Notification_Disp_UP(AlarmItem[Alarm_i].DeviceId);
- }
- else
- {
- value = Get_Notification_Disp_Down(AlarmItem[Alarm_i].DeviceId);
- } polling in the safety */
}
else
{
@@ -1422,21 +1398,6 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
default:
Status = false;
}
- /*value = MotorGetStatus((TimerMotors_t)AlarmItem[Alarm_i].DeviceId);
- if (AlarmItem[Alarm_i].AlarmDirection == true)
- {
- if (value && AlarmItem[Alarm_i].AlarmValue)
- {
- Status = true;
- }
- }
- else
- {
- if ((value && AlarmItem[Alarm_i].AlarmValue)==false)
- {
- Status = true;
- }
- }*/
}
}
else
@@ -1473,7 +1434,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
case ALARM_SOURCE_TYPE__TachoAlarm: // add by shai
Status = false;
- if (CheckTamperAlarms)
+ if (CheckMotorAlarms)
{
// ReportWithPackageFilter(AlarmFilter,"------------FANS_RPM[Alarm_i]----------------", __FILE__,__LINE__,Alarm_i, RpMessage, value, 0);
@@ -1560,16 +1521,19 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
}
else
{
- value = Read_Dryer_Fan_Tacho();
+
+ value = Get_Dryer_Fan_Tacho();
if (AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Critical )
- if ((AlarmItem[Alarm_i].AlarmDirection == UNDER_VALUE) && (value == DRYER_FAN_STOP))
+ {
+ if (value == DRYER_FAN_STOP)
{
Status = true;
- //ReportWithPackageFilter(AlarmFilter,"----------- DRYER FAN RPM Error----------------", __FILE__,__LINE__,0, RpMessage, value, 0);
}
+ //ReportWithPackageFilter(AlarmFilter,"----------- DRYER FAN RPM ----------------", __FILE__,__LINE__,msec_millisecondCounter, RpMessage, value, 0);
+ }
else if (AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Warning)
{
- if ((AlarmItem[Alarm_i].AlarmDirection == UNDER_VALUE) && (value < DRYER_FAN_MIN_RPM))
+ if ((value>0)&&(value < DRYER_FAN_MIN_RPM))
{
Status = true;
//ReportWithPackageFilter(AlarmFilter,"----------- DRYER FAN RPM Error----------------", __FILE__,__LINE__,0, RpMessage, value, 0);
@@ -1621,78 +1585,77 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
break;
default:
break;
- } //switch
- if (AlarmItem[Alarm_i].DebounceValue > 0) //handle debouncing
+ } //switch
+ if (AlarmItem[Alarm_i].DebounceValue > 0) //handle debouncing
+ {
+ if (Status == true) //increase counter
{
- if (Status == true) //increase counter
+ AlarmState[Alarm_i].DebounceCounter++;
+ if (AlarmState[Alarm_i].Status == false) // alarm is not set yet
{
- AlarmState[Alarm_i].DebounceCounter++;
- if (AlarmState[Alarm_i].Status == false) // alarm is not set yet
- {
- if (AlarmState[Alarm_i].DebounceCounter < AlarmItem[Alarm_i].DebounceValue) //had not reached the debounce value
- {
- Status = false; //do not set the alarm
- } //else alarm will be set
- }
- else // alarm is already set
+ if (AlarmState[Alarm_i].DebounceCounter < AlarmItem[Alarm_i].DebounceValue) //had not reached the debounce value
{
- AlarmState[Alarm_i].DebounceCounter = AlarmItem[Alarm_i].DebounceValue; // do not go over the debounce value
- }
+ Status = false; //do not set the alarm
+ } //else alarm will be set
}
- else //status == false - decrease counter
+ else // alarm is already set
{
- AlarmState[Alarm_i].DebounceCounter--;
- if (AlarmState[Alarm_i].Status == true) // alarm is set
- {
- if (AlarmState[Alarm_i].DebounceCounter > 0) // had not reached zero yet
- {
- Status = true; // do not reset the alarm yet
- } // else reset the alarm
- }
- else // if the alarm is off
- {
- AlarmState[Alarm_i].DebounceCounter = 0; //do not go below 0
- }
+ AlarmState[Alarm_i].DebounceCounter = AlarmItem[Alarm_i].DebounceValue; // do not go over the debounce value
}
}
- /*if (AlarmItem[Alarm_i].Predecessor!=0xFF)
+ else //status == false - decrease counter
{
- if (AlarmState[AlarmItem[Alarm_i].Predecessor].Status == true) //higher hierarchy alarm is on
- Status = false;
- }*/
- if (Status != AlarmState[Alarm_i].Status) //change in alarm Status
- {
- if (Status == true) // alarm on
+ AlarmState[Alarm_i].DebounceCounter--;
+ if (AlarmState[Alarm_i].Status == true) // alarm is set
{
- // report the alarm!
- AlarmState[Alarm_i].EventPtr = my_malloc (sizeof(Event));
- if (AlarmState[Alarm_i].EventPtr)
+ if (AlarmState[Alarm_i].DebounceCounter > 0) // had not reached zero yet
{
- event__init(AlarmState[Alarm_i].EventPtr);
- AlarmState[Alarm_i].EventPtr->has_type = true;
- AlarmState[Alarm_i].EventPtr->type = AlarmItem[Alarm_i].EventType;
- AlarmState[Alarm_i].EventPtr->message = NULL;//AlarmItem[Alarm_i].EventName;
- }
- AlarmState[Alarm_i].Status = true;
- AlarmHandlingConsequentActions(Alarm_i, AlarmItem[Alarm_i].Severity);
- ReportWithPackageFilter(AlarmFilter,"Alarm ON ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpMessage, value, Alarm_i);
+ Status = true; // do not reset the alarm yet
+ } // else reset the alarm
}
- else // alarm off
+ else // if the alarm is off
{
- ReportWithPackageFilter(AlarmFilter,"Alarm OFF ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpMessage, 0, Alarm_i);
- if (AlarmState[Alarm_i].EventPtr)
- {
- //ROM_IntMasterDisable();
- Save_Alarm_i = Alarm_i;
- Save_Alarm_ptr = AlarmState[Alarm_i].EventPtr;
- Save_Alarm_Type = AlarmItem[Alarm_i].EventType;
- my_free(AlarmState[Alarm_i].EventPtr);
- AlarmState[Alarm_i].EventPtr = NULL;
- //ROM_IntMasterEnable();
- }
- AlarmState[Alarm_i].Status = false;
- AlarmHandlingConsequentActions(Alarm_i, DEBUG_LOG_CATEGORY__Info);
+ AlarmState[Alarm_i].DebounceCounter = 0; //do not go below 0
+ }
+ }
+ }
+ /*if (AlarmItem[Alarm_i].Predecessor!=0xFF)
+ {
+ if (AlarmState[AlarmItem[Alarm_i].Predecessor].Status == true) //higher hierarchy alarm is on
+ Status = false;
+ }*/
+ if (Status != AlarmState[Alarm_i].Status) //change in alarm Status
+ {
+ if (Status == true) // alarm on
+ {
+ // report the alarm!
+ AlarmState[Alarm_i].EventPtr = my_malloc (sizeof(Event));
+ if (AlarmState[Alarm_i].EventPtr)
+ {
+ event__init(AlarmState[Alarm_i].EventPtr);
+ AlarmState[Alarm_i].EventPtr->has_type = true;
+ AlarmState[Alarm_i].EventPtr->type = AlarmItem[Alarm_i].EventType;
+ AlarmState[Alarm_i].EventPtr->message = NULL;//AlarmItem[Alarm_i].EventName;
+ }
+ AlarmState[Alarm_i].Status = true;
+ AlarmHandlingConsequentActions(Alarm_i, AlarmItem[Alarm_i].Severity);
+ ReportWithPackageFilter(AlarmFilter,"Alarm ON ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpMessage, value, Alarm_i);
+ }
+ else // alarm off
+ {
+ ReportWithPackageFilter(AlarmFilter,"Alarm OFF ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpMessage, 0, Alarm_i);
+ if (AlarmState[Alarm_i].EventPtr)
+ {
+ //ROM_IntMasterDisable();
+ Save_Alarm_i = Alarm_i;
+ Save_Alarm_ptr = AlarmState[Alarm_i].EventPtr;
+ Save_Alarm_Type = AlarmItem[Alarm_i].EventType;
+ my_free(AlarmState[Alarm_i].EventPtr);
+ AlarmState[Alarm_i].EventPtr = NULL;
+ //ROM_IntMasterEnable();
}
+ AlarmState[Alarm_i].Status = false;
+ AlarmHandlingConsequentActions(Alarm_i, DEBUG_LOG_CATEGORY__Info);
}
}
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 689219583..1057ddbc3 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -610,21 +610,21 @@ uint32_t MillisecLowLoop(uint32_t tick)
//call all modules Millisec functions
//test dancers and speed encoders
//check all callback units (state machine waiting for completion of a change)
- bool Ten_msTick, Fifty_msTick, Hundred_msTick , m20msecTick,m70msecTick,m90msecTick, Onesecond_Tick,Tensecond_Tick,OneMinute_Tick,TenMinutes_Tick,OneHourTick,Gradient_Tick;
- bool O700Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick;
+ bool Ten_msTick, Fifty_msTick, Hundred_msTick , m20msecTick,m90msecTick, Onesecond_Tick,Tensecond_Tick,OneMinute_Tick,TenMinutes_Tick,OneHourTick,Gradient_Tick;
+ bool O700Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick,O800Millisecond_Tick;
//bool O100Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick,O800Millisecond_Tick,O900Millisecond_Tick;
Ten_msTick = (tick%eTenMillisecond == 0) ?true:false;
Fifty_msTick = (tick%eHundredMillisecond == 40) ?true:false; //eFiftyMillisecond
Hundred_msTick = (tick%eHundredMillisecond == 0) ?true:false;
m20msecTick = (tick%eHundredMillisecond == 20) ?true:false;
- m70msecTick = (tick%eHundredMillisecond == 70) ?true:false;
+ //m70msecTick = (tick%eHundredMillisecond == 70) ?true:false;
m90msecTick = (tick%eHundredMillisecond == 90) ?true:false;
O700Millisecond_Tick = (tick%eOneSecond == 700) ?true:false;
O200Millisecond_Tick = (tick%eOneSecond == 200) ?true:false;
O400Millisecond_Tick = (tick%eOneSecond == 400) ?true:false;
O500Millisecond_Tick = (tick%eOneSecond == 500) ?true:false;
O600Millisecond_Tick = (tick%eOneSecond == 600) ?true:false;
- //O800Millisecond_Tick = (tick%eOneSecond == 800) ?true:false;
+ O800Millisecond_Tick = (tick%eOneSecond == 800) ?true:false;
//O900Millisecond_Tick = (tick%eOneSecond == 900) ?true:false;
Gradient_Tick = (tick%400 == 0) ?true:false;
Onesecond_Tick = (tick%eOneSecond == 0) ?true:false;
@@ -660,10 +660,10 @@ uint32_t MillisecLowLoop(uint32_t tick)
Trigger_PT100_Read();//call every 50mSec (minimum delay 30mSec)
//Set_HeadCard_PT100();//call every 50mSec (minimum delay 30mSec)
}
- if(m70msecTick)
+ /*if(m70msecTick)
{
AlarmHandling_ControlTrigger(0,0);
- }
+ }*/
if (m90msecTick)
{
for (Sensor_i = StartPT100;Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID;Sensor_i++)
@@ -717,14 +717,11 @@ uint32_t MillisecLowLoop(uint32_t tick)
}
if (Gradient_Tick)
DispensersCollectionCall();
- if (O700Millisecond_Tick)
- {
- Trigger_Heater_Current_Read();
- }
if (O200Millisecond_Tick)
{
Trigger_WHS_MAX11614_Read_allADC();
FPGA_GetAllDispensersValveBusyOCD();
+ Read_Dryer_Fan_Tacho();
temp = Read_Fans_Tacho();
DrawerFansStatus = temp & 0x1F;
SystemFansStatus = temp & 0xE0;
@@ -755,6 +752,14 @@ uint32_t MillisecLowLoop(uint32_t tick)
}
}
}
+ if (O700Millisecond_Tick)
+ {
+ Trigger_Heater_Current_Read();
+ }
+ if (O800Millisecond_Tick)
+ {
+ AlarmHandling_ControlTrigger(0,0);
+ }
if (Onesecond_Tick)
{
//char Lenstr[160];
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index eb855fd4a..b159897aa 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -923,8 +923,8 @@ void DiagnosticOneSecCollection(void)
tempFlow = HeadFlowMeter;
}*/
WasteLevel = GetWHSWasteTankLevelMiliLiter()/1000;//change from ml to litter
- static double InitCounter = 60.0;
- if ((GetMachineState()<MACHINE_STATE_NO_PROCESS_PARAMS) &&(GetMachineState()>=MACHINE_STATE_WAIT_FOR_COOLER))
+ static double InitCounter = 85.0;
+ if (GetMachineState()<=MACHINE_STATE_WAIT_FOR_COOLER)
{
InitCounter-=1.0;
if(InitCounter<0)InitCounter = 0;
diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
index a0b1b30c2..5c41d03f3 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
@@ -157,6 +157,7 @@ int MachineUpdateResponseFunc(void)
else
return ERROR;
+ // Report("Sending machine state",__FILE__,__LINE__,(int)MachineStatus.state,RpWarning,(int)MachineStatus.overalltemperature,0);
responseContainer = /*MachineUpdate*/createContainer(MESSAGE_TYPE__StartMachineStatusUpdateResponse, MachineUpdateToken, false, &response, &start_machine_status_update_response__pack, &start_machine_status_update_response__get_packed_size);
responseContainer.has_continuous = true;
diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c
index 4538d0336..872f772e2 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/process.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/process.c
@@ -41,8 +41,7 @@ double dryerairflow = 5.0;
double pressurebuildup = 0;
double dryerzone1temp = 0;
int32_t tableindex = 0;
-double headBlowersFlow[2] = {1.0,1.0};
-double ArcCleaningMotorSpeed = 0.0;
+double headBlowersFlow[2] = {1.5,1.5};
double dryerbufferMeters = 0;
double dryerbufferCentimeters = 0;
@@ -134,6 +133,10 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
{
if (ProcessParams->has_headairflow == false)
ProcessParams->headairflow = headairflow;
+ if (ProcessParams->has_lblowerflow == false)
+ ProcessParams->lblowerflow = headBlowersFlow[HEAD_FAN_LEFT];
+ if (ProcessParams->has_rblowerflow == false)
+ ProcessParams->rblowerflow = headBlowersFlow[HEAD_FAN_RIGHT];
if (ProcessParams->has_feedertension == false)
ProcessParams->feedertension = feedertension;
if (ProcessParams->has_windertension == false)
@@ -159,7 +162,6 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
dryerairflow = ProcessParams->dryerairflow;
pressurebuildup = ProcessParams->pressurebuildup;
dryerzone1temp = ProcessParams->dryerzone1temp;
- ArcCleaningMotorSpeed = ProcessParams->archeadcleaningmotorspeed;
if (MachineReadyForHeating == false)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.h b/Software/Embedded_SW/Embedded/Modules/General/process.h
index 4a1583aa8..f7f16d11e 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/process.h
+++ b/Software/Embedded_SW/Embedded/Modules/General/process.h
@@ -20,7 +20,6 @@ extern double dryerairflow;
extern double pressurebuildup;
extern double dryerzone1temp;
extern double headBlowersFlow[2];
-extern double ArcCleaningMotorSpeed;
extern int32_t tableindex;
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c
index 4a43485cd..59a0aee51 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_Blowers.c
@@ -51,10 +51,11 @@
#define ARC_ALARM_LIMIT 3
#define PRESSURE_SENSOR_CP 0.269
+#define PRESSURE_SENSOR_B 0.45
extern uint16_t Head_Fan_Tach[2];
extern uint8_t Head_Fan_PWM_Command[2];
-double PressureSensorV0[2] = {0.0, 0.0};
+uint32_t PressureSensorV0[2] = {0, 0};
uint8_t HeadBlowersCloseLoopTime[2] = {2, 2};
uint8_t HeadBlowersEnable = 1;
uint8_t BlowerIdToSensorId[2] = {HEAD_PT100_ZONE_5_0X84_0, HEAD_PT100_ZONE_7_0X86_0}; //HEAD_FAN_RIGHT, HEAD_FAN_LEFT
@@ -315,14 +316,15 @@ void HeadBlowersControlLoop ()
int blowerId;
static int count[2] = {0, 0};
- ArcHeadAlarms();
-
if (GetMachineState() < MACHINE_STATE_WAIT_FOR_COOLER)
return; //do not start before controller is initialized and running
if (!HeadBlowersEnable) {
return;
}
+
+ ArcHeadAlarms();
+
for (blowerId = 0; blowerId <= 1; blowerId++) {
if (count[blowerId] == HeadBlowersCloseLoopTime[blowerId]) {
count[blowerId] = 0;
@@ -343,11 +345,12 @@ void HeadBlowersCfg()
}
}
-double PressureSensorInit(int blowerId)
+uint32_t PressureSensorInit(int blowerId)
{
- PressureSensorV0[blowerId] = MillisecGetTemperatures(BlowerIdToSensorId[blowerId]);
- PressureSensorV0[blowerId] /= 10;
- return PressureSensorV0[blowerId];
+ uint32_t V0;
+ V0 = MillisecGetTemperatures(BlowerIdToSensorId[blowerId]);
+ V0 /= 10;
+ return V0;
}
int HeadBlowersGetRPM(uint8_t blowerId)
@@ -368,15 +371,16 @@ int HeadBlowersGetPWM(uint8_t blowerId)
double PressureSensorGetPressure(uint8_t SensorId)
{
- double V0, Vm, Q, Cp;
+ double V0, Vm, Q;
int FanId;
- Cp = PRESSURE_SENSOR_CP;
FanId = HeadBlowerSensorIdToFanId(SensorId);
V0 = PressureSensorV0[FanId];
Vm = (double)(MillisecGetTemperatures(SensorId));
Vm /= 10.0;
- Q = sqrt(Vm - V0 + 22) * Cp;
+ if ((Vm - V0 + 22)<0)
+ return 0.0;
+ Q = sqrt(Vm - V0 + 22) * PRESSURE_SENSOR_CP - PRESSURE_SENSOR_B;
return Q;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
index 2c675606b..a23abf559 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
@@ -46,7 +46,7 @@ void HeatersControlStop(void);
uint32_t Heaters_Init(void);
double PressureSensorGetPressure(uint8_t SensorId);
int HeadBlowersGetRPM(uint8_t fanId);
-double PressureSensorInit();
+uint32_t PressureSensorInit();
void HeadBlowersInit();
uint32_t HeadBlowerPidRequestMessage(void* request, int BlowerId);
void HeadBlowersCfg();
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index e702d7072..84013add6 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -560,8 +560,8 @@ uint32_t HeatersSingleHeaterEnd(int HeaterId)
}
DeActivateHeater(HEATER_TYPE__DryerMainHeater);
DeActivateHeater(HEATER_TYPE__DryerSecondaryHeater);
- //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]);
- //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]);
+ Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]);
+ Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]);
HeaterPIDConfig[HeaterId].m_SetParam = 0;
HeaterCmd[HeaterId].targettemperatue = 0;
HeaterReady[HeaterId] = true;
@@ -1449,8 +1449,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
}
}*/
HeaterReady[index] = true;
- //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]);
- //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]);
+ Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]);
+ Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]);
}
return OK;
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h
index 1c17c4f6b..d86d7ab2d 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h
@@ -16,6 +16,7 @@ extern uint32_t InitialDispenserSpeed;
extern double InitialDispenserPressure;
extern uint32_t InitialDispenserTimeout;
+extern double ArcCleaningMotorSpeed;
extern uint32_t DispenserIdToMotorId[MAX_SYSTEM_DISPENSERS];
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
index 0e28134c4..0ae017c13 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c
@@ -19,7 +19,7 @@
#include "drivers/motors/motor.h"
#include "drivers/valves/valve.h"
#include "Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h"
-
+double ArcCleaningMotorSpeed = 750;
int SaveLeftRockerSpeed = 50, SaveRightRockerSpeed = 50;
typedef enum
{
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index d2fd74256..fcd1c05a2 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -591,7 +591,10 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
{
DispenserTotalPrepareSteps[i]+=(CurrentDispenserSpeed[i]*PRESSURE_READ_TIME_GAP/eOneSecond);
HW_Motor_Id = DispenserIdToMotorId[i];
-
+ if ((DispenserTotalPrepareSteps[i]>TargetNumberOfStepsPreRun)&&(DispenserTotalPrepareSteps[i]<(TargetNumberOfStepsPreRun+InitialDispenserSpeed)))
+ {
+ ReportWithPackageFilter(IDSFilter,"IDS dispenser pre-run ended",__FILE__,i,(int)DispenserTotalPrepareSteps[i],RpWarning,(int)(pressure*100),0);
+ }
if (DispenserTotalPrepareSteps[i]<TargetNumberOfStepsPreRun)
{
AdjustDispenserSpeedToPressure(i,MaximalPressurePreRun,pressure);
@@ -635,8 +638,11 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
}
if (pressureReady == true)
{
+ usnprintf(IdMessage, 80,"pressureReady = true %d K %d,C %d,M %d,Y %d,TI %d",(int)(DispenserPreparePressure*100),(int)(GetDispenserPressure(0)*100),(int)(GetDispenserPressure(1)*100)
+ ,(int)(GetDispenserPressure(2)*100),(int)(GetDispenserPressure(3)*100),(int)(GetDispenserPressure(4)*100));
+ ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, __LINE__, DispenserBuildTimeCounter, RpWarning, NumofReadyDispensers, 0);
DispenserBuildTimeCounter = 0;
- ReportWithPackageFilter(IDSFilter,"pressureReady = true",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)(DispenserPreparePressure*100),0);
+ //ReportWithPackageFilter(IDSFilter,"pressureReady = true",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)(DispenserPreparePressure*100),0);
}
if (DispenserBuildTimeCounter >= DispenserPrepareTimeout)
{
@@ -730,7 +736,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
}
}
}//for
- usnprintf(IdMessage, 80,"WFCF %d D1 %d,D2 %d,D3 %d,D4 %d,D5 %d",WFCF,CurrentDispenserSpeed[0],
+ usnprintf(IdMessage, 80,"WFCF %d K %d,C %d,M %d,Y %d,TI %d",WFCF,CurrentDispenserSpeed[0],
CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]);
ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, __LINE__, DispenserBuildTimeCounter, RpWarning, WFCF, 0);
@@ -788,13 +794,15 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
JobEndSequence = false;
if ((pressurebuildup>0.1)&&(pressurebuildup<4.5))
{
- ReportWithPackageFilter(IDSFilter,"Setting pressure from RML feeder tension",__FILE__,__LINE__,(int)(pressurebuildup*100),RpWarning,(int)(DispenserPreparePressure*100),0);
+ ReportWithPackageFilter(IDSFilter,"Setting pressure from RML pressure buildup",__FILE__,__LINE__,(int)(pressurebuildup*100),RpWarning,(int)(DispenserPreparePressure*100),0);
DispenserPreparePressure = pressurebuildup;
}
if (JobTicket->headcleaningparameters)
{
if (JobTicket->headcleaningparameters->has_cleanerflow)
cleanerFlow = JobTicket->headcleaningparameters->cleanerflow;
+ if (JobTicket->headcleaningparameters->has_archeadcleaningmotorspeed)
+ ArcCleaningMotorSpeed = JobTicket->headcleaningparameters->archeadcleaningmotorspeed;
}
if ((cleanerFlow>200)&&(cleanerFlow<1150))
{
@@ -1079,7 +1087,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
}
}
}//for
- usnprintf(IdMessage, 80,"Presegment Prepare D1 %d,D2 %d,D3 %d,D4 %d,D5 %d",CurrentDispenserSpeed[0],
+ usnprintf(IdMessage, 80,"Presegment Prepare K %d,C %d,M %d,Y %d,TI %d",CurrentDispenserSpeed[0],
CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]);
ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, segmentfirst_speed, 0);
@@ -1281,7 +1289,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
//SendJobProgress(0.0, 0, false, IdsMessage);*/
}
}//for
- usnprintf(IdMessage, 80,"Presegment WFCF %d D1 %d,D2 %d,D3 %d,D4 %d,D5 %d",WFCF,CurrentDispenserSpeed[0],
+ usnprintf(IdMessage, 80,"Presegment WFCF %d K %d,C %d,M %d,Y %d,TI %d",WFCF,CurrentDispenserSpeed[0],
CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]);
ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, __LINE__, FileBrushStop->index, RpWarning, lInterSegmentLength, 0);
}
@@ -1608,9 +1616,9 @@ void IDS_StartBrushStop(int n_dispensers, JobDispenser** Dispensers)
}
} //for
}
- usnprintf(IdMessage, 80,"IDS_StartBrushStop %d D1 %d,D2 %d,D3 %d,D4 %d,D5 %d",WFCF,CurrentDispenserSpeed[0],
+ usnprintf(IdMessage, 80,"IDS_StartBrushStop %d/%d K %d,C %d,M %d,Y %d,TI %d",FileBrushStop->index,SegmentNumOfBrushStops,CurrentDispenserSpeed[0],
CurrentDispenserSpeed[1],CurrentDispenserSpeed[2],CurrentDispenserSpeed[3],CurrentDispenserSpeed[4]);
- ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, __LINE__, FileBrushStop->index, RpWarning,n_dispensers, 0);
+ ReportWithPackageFilter(IDSFilter,IdMessage, __FILE__, SegmentNumOfBrushStops, FileBrushStop->index, RpWarning,(int)FileBrushStop->offsetmeters, 0);
}
uint32_t IDSBrushStopRestartCallback(uint32_t IfIndex, uint32_t readValue)
@@ -1676,7 +1684,7 @@ uint32_t IDSBrushStopRestartCallback(uint32_t IfIndex, uint32_t readValue)
IDS_StartBrushStop(n_dispensers, Dispensers);
}
JobBrushStopId++;
- ReportWithPackageFilter(IDSFilter,"brushstop",__FILE__,__LINE__,(int)JobBrushStopId,RpMessage,(int)SegmentNumOfBrushStops,0);
+ //ReportWithPackageFilter(IDSFilter,"brushstop",__FILE__,__LINE__,(int)JobBrushStopId,RpMessage,(int)SegmentNumOfBrushStops,0);
if (JobBrushStopId >= SegmentNumOfBrushStops)
{
ReportWithPackageFilter(IDSFilter,"last brushstop",__FILE__,__LINE__,(int)JobBrushStopId,RpWarning,(int)SegmentNumOfBrushStops,0);
diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
index b2498ee7f..329357ed4 100644
--- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
+++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
@@ -335,7 +335,7 @@ void midTankStateMachine(void)
if (midTankCartColor == MIDTANK_8)
{
- CartridgeInkTimeout = CARTRIDGE_INK_TIMEOUT*4;
+ CartridgeInkTimeout = CARTRIDGE_INK_TIMEOUT*10;
CartridgeCheckTime = FIVE_SECONDS*3;
}
// set valve selection
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index b9b916eb6..c6cfbb1d1 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -1233,6 +1233,27 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
response.has_progress = true;
}
else
+ if(request->amount == 0xB23) //Set loading arm cycles
+ {
+ REPORT_MSG(request->delay,"Control dryer fan tacho");
+ if (request->delay>0)
+ Control_Dryer_Fan(START,request->delay);//use START or STOP, 0 - 100%();
+ else
+ Control_Dryer_Fan(STOP,0);//use START or STOP, 0 - 100%();
+ Task_sleep(1000);
+
+ response.progress = (double)Get_Dryer_Fan_Tacho();
+ response.has_progress = true;
+ }
+ else
+ if(request->amount == 0xB24) //Set loading arm cycles
+ {
+ REPORT_MSG(request->delay,"AttemptThreadJoggingFunc");
+ AttemptThreadJoggingFunc(NULL);
+ response.progress = 0xb24;
+ response.has_progress = true;
+ }
+ else
if(request->amount == 0xC3) //suspend I2C task
{
if (request->delay == 0)
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
index 63072e4d8..cdb726b5e 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
@@ -49,6 +49,7 @@
#include "PMR/ThreadLoading/TryThreadLoadingResponse.pb-c.h"
#include "PMR/ThreadLoading/StopThreadLoadingRequest.pb-c.h"
#include "PMR/ThreadLoading/StopThreadLoadingResponse.pb-c.h"
+#include "PMR/ThreadLoading/AttemptThreadJoggingResponse.pb-c.h"
//#include <stdint.h>
//#include <stdbool.h>
@@ -1597,3 +1598,52 @@ uint32_t StopThreadLoadingFunc(MessageContainer* requestContainer)
return OK;
}
+uint8_t attemptJogCounter = 0;
+#define ATTEMPT_JOG_TIMEOUT 18
+char AttemptJoggingToken[36+1] = {0};
+
+uint32_t AttemptThreadJoggingCallback(uint32_t index, uint32_t ReadValue)
+{
+ AttemptThreadJoggingResponse response = ATTEMPT_THREAD_JOGGING_RESPONSE__INIT;
+ MessageContainer responseContainer;
+
+ attemptJogCounter++;
+ Report("AttemptThreadJoggingCallback",__FILE__,attemptJogCounter,JobEndReason,RpWarning,(int)JobIsActive(),0);
+ if (attemptJogCounter<ATTEMPT_JOG_TIMEOUT)
+ {
+ if (JobIsActive() == true)//jog still preparing/running
+ return OK;
+ }
+ if (JobEndReason == JOB_OK)
+ ThreadAbortJoggingFunc();
+ else
+ {
+ responseContainer.has_error = true;
+ responseContainer.error = getJobError_to_ErrorCode(JobEndReason);
+ }
+ SafeRemoveControlCallback(LoadingControlId, AttemptThreadJoggingCallback );
+ LoadingControlId = 0xFF;
+
+ if (AttemptJoggingToken[0])
+ {
+ responseContainer = createContainer(MESSAGE_TYPE__AttemptThreadJoggingResponse, AttemptJoggingToken, true, &response, &attempt_thread_jogging_response__pack, &attempt_thread_jogging_response__get_packed_size);
+ responseContainer.continuous = false;
+ uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ my_free(responseContainer.data.data);
+ SendChars((char*)container_buffer, container_size);
+ }
+ return OK;
+
+}
+uint32_t AttemptThreadJoggingFunc(MessageContainer* requestContainer)
+{
+ attemptJogCounter = 0;
+ if(requestContainer)
+ ustrncpy (AttemptJoggingToken, requestContainer->token,36);
+ Report("AttemptThreadJoggingFunc",__FILE__,__LINE__,0xFF,RpWarning,(int)ATTEMPT_JOG_TIMEOUT,0);
+ LoadingControlId = AddControlCallback("Load jog",AttemptThreadJoggingCallback, eOneSecond,TemplateDataReadCBFunction,0,0,0);
+ ThreadJoggingFunc(30);
+ return OK;
+}
+
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
index a6cb25c45..8ecb3f404 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
@@ -141,6 +141,25 @@ uint32_t InternalWindingConfigMessage(JobSpool* request)
* report ready to the job STM
*/
int Screw_wait_counter;
+uint32_t Winder_Check_Cone(void)
+{
+ if (FPGA_Read_limit_Switches(GPI_SW_SPOOL_EXISTS)==LIMIT)
+ {
+ REPORT_MSG(LIMIT, "No cone in winder");
+ if (Is_PP_Machine())
+ {
+ if (IgnoreConeMissing == false)
+ {
+ //JobEndReason = JOB_THREAD_BREAK;
+ usnprintf(AlarmReasonStr, 100, "No cone in winder");
+ //PrepareReady(Module_Winder,ModuleFail);
+ AlarmHandlingSetAlarm(EVENT_TYPE__WINDER_CONE_DOES_NOT_EXIST,true);
+ return JOB_THREAD_BREAK;
+ }
+ }
+ }
+ return JOB_OK;
+}
uint32_t Winder_Prepare(void *JobDetails)
{
JobTicket* JobTicket = JobDetails;
@@ -159,7 +178,7 @@ uint32_t Winder_Prepare(void *JobDetails)
* report ready to the job STM
*/
- if (FPGA_Read_limit_Switches(GPI_SW_SPOOL_EXISTS)==LIMIT)
+ /*if (FPGA_Read_limit_Switches(GPI_SW_SPOOL_EXISTS)==LIMIT)
{
REPORT_MSG(LIMIT, "No cone in winder");
if (Is_PP_Machine())
@@ -173,7 +192,7 @@ uint32_t Winder_Prepare(void *JobDetails)
return ERROR;
}
}
- }
+ }*/
#ifdef READ_SCREW_ENCODER
ScrewLocationRun[0] = 0;
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
index 0861b677b..07ecf5d0b 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
@@ -53,6 +53,7 @@ uint32_t LoadDancerConfigMessage(void);
extern float NumberOfRotationPerPassage; //debug for rotation per passage trials
uint32_t Winder_Init(void);
+uint32_t Winder_Check_Cone(void);
uint32_t Winder_Prepare(void *JobDetails);
uint32_t Winder_Presegment(void *JobDetails, uint32_t SegmentId);
uint32_t WinderDistanceToSpoolState(void );
@@ -88,6 +89,8 @@ uint32_t StartThreadLoadingFunc(MessageContainer* requestContainer);
uint32_t ContinueThreadLoadingFunc(MessageContainer* requestContainer);
uint32_t StopThreadLoadingFunc(MessageContainer* requestContainer);
uint32_t TryThreadLoadingFunc(MessageContainer* requestContainer);
+uint32_t AttemptThreadJoggingFunc(MessageContainer* requestContainer);
+
void ThreadCheckArcHeadCovers(void);
uint32_t Thread_Load_End(void);
uint32_t ThreadLoadingRestartReport(void); //sending after a failure in the finalizing stage
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index bc4e6cb8f..8d41f3b9a 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -337,7 +337,7 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
}**/
//}
-#ifdef BTSR_NO_TFU
+#ifdef BTSR_NO_PULLER_TFU
if (CurrentControlledSpeed[WINDER_MOTOR]>100)
length = dyeingspeed/10;
#endif
@@ -917,7 +917,7 @@ uint32_t Release_Right_TFU_TensionCallback(uint32_t deviceID, uint32_t BusyFlag)
uint32_t Release_Right_TFU_Tension()
{
uint32_t status = OK;
-#ifndef BTSR_NO_TFU
+#ifndef BTSR_NO_FEEDER_TFU
if (RTFU_Up == true)
{
Report("Release_Right_TFU_Tension",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_RDANCER,RpMessage,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].pulseperround/4,0);
@@ -931,7 +931,7 @@ int SecondFeederCorrection = 4;
int PrepareWaitCount = 0;
uint32_t Adjust_Right_TFU_Tension_2nd_Callback(uint32_t MotorId, uint32_t ReadValue)
{
-#ifndef BTSR_NO_TFU
+#ifndef BTSR_NO_FEEDER_TFU
MotorStop (HARDWARE_MOTOR_TYPE__MOTO_RDANCER,Soft_Stop); //per L6470 errata between mov and run commands
Report("Adjust_Right_TFU_Tension_2ndCallback x more steps",__FILE__,__LINE__,MotorId,RpMessage,SecondFeederCorrection,0);
if (JobIsActive()==false)
@@ -955,7 +955,7 @@ uint32_t Adjust_Right_TFU_Tension_2nd_Callback(uint32_t MotorId, uint32_t ReadVa
}
uint32_t Adjust_Right_TFU_Tension_Callback(uint32_t MotorId, uint32_t ReadValue)
{
-#ifndef BTSR_NO_TFU
+#ifndef BTSR_NO_FEEDER_TFU
Report("Adjust_Right_TFU_Tension_Callback",__FILE__,__LINE__,MotorId,RpMessage,0,0);
MotorMoveWithCallback(HARDWARE_MOTOR_TYPE__MOTO_RDANCER, 1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].directionthreadwize,SecondFeederCorrection* MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].microstep, Adjust_Right_TFU_Tension_2nd_Callback,1000);
RTFU_Up = true;
@@ -966,7 +966,7 @@ uint32_t Adjust_Right_TFU_Tension_Callback(uint32_t MotorId, uint32_t ReadValue)
uint32_t Adjust_Right_TFU_Tension(double tension)
{
uint32_t status = OK;
-#ifndef BTSR_NO_TFU
+#ifndef BTSR_NO_FEEDER_TFU
if (tension > 0.5) //0 = lower position, 1 = high position
{
if (FPGA_Read_limit_Switches(GPI_LS_RDANCER_UP) == NO_LIMIT)
@@ -1093,11 +1093,13 @@ uint32_t ThreadPrepareState(void *JobDetails)
IntersegmentLength = JobTicket->intersegmentlength;
PrepareWaitCount = 0;
-#ifndef BTSR_NO_TFU
status = ThreadPrepare_Tension (HARDWARE_DANCER_TYPE__LeftDancer, windertension);
ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_Tension Winder",__FILE__,HARDWARE_DANCER_TYPE__LeftDancer,PrepareWaitCount,RpWarning,(int)windertension,0);
+#ifndef BTSR_NO_PULLER_TFU
status = ThreadPrepare_Tension (HARDWARE_DANCER_TYPE__MiddleDancer, pullertension);
ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_Tension Puller",__FILE__,HARDWARE_DANCER_TYPE__MiddleDancer,PrepareWaitCount,RpWarning,(int)pullertension,0);
+#endif
+#ifndef BTSR_NO_FEEDER_TFU
status = ThreadPrepare_Tension (HARDWARE_DANCER_TYPE__RightDancer, feedertension);
ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_Tension Feeder",__FILE__,HARDWARE_DANCER_TYPE__RightDancer,PrepareWaitCount,RpWarning,(int)feedertension,0);
#endif
@@ -1219,7 +1221,7 @@ uint32_t ThreadPrepareState(void *JobDetails)
/////////////////////////////////////////////////////
MotorSetDirection((TimerMotors_t)HW_Motor_Id,MotorsCfg[HW_Motor_Id].directionthreadwize);
-#ifndef BTSR_NO_TFU
+#ifndef BTSR_NO_FEEDER_TFU
if (Motor_i == FEEDER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled
{
ReportWithPackageFilter(ThreadFilter,"Feeder Control",__FILE__,Motor_i,MotorControlConfig[Motor_i].m_params.Kp,RpWarning,MotorControlConfig[Motor_i].m_params.Ki,0);
@@ -1233,6 +1235,7 @@ uint32_t ThreadPrepareState(void *JobDetails)
SpeedControlId = AddControlCallback(NULL,ThreadLengthCBFunction, eHundredMillisecond,MotorGetPositionFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i);
}
#endif
+#ifndef BTSR_NO_PULLER_TFU
if (Motor_i == POOLER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled
{
ReportWithPackageFilter(ThreadFilter,"Puller Control",__FILE__,Motor_i,MotorControlConfig[Motor_i].m_params.Kp,RpWarning,MotorControlConfig[Motor_i].m_params.Ki,0);
@@ -1246,7 +1249,8 @@ uint32_t ThreadPrepareState(void *JobDetails)
PoolerLengthCalculationMultiplier = (MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulleyradius*2*PI)/(MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulseperround*MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].microstep);
PoolerSpeedControlId = AddControlCallback(NULL,PoolerThreadLengthCBFunction, eHundredMillisecond,MotorGetPositionFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i);
}
-#ifndef BTSR_NO_TFU
+#endif
+#ifndef BTSR_NO_FEEDER_TFU
if (Motor_i == FEEDER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled
{
if (ControlIdtoMotorId[Motor_i] != 0xFF)
@@ -1261,6 +1265,8 @@ uint32_t ThreadPrepareState(void *JobDetails)
//AddControlCallback(NULL,ThreadControlSpeedReadFunction, eHundredMillisecond,MotorGetSpeedFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i);
#endif
}
+#endif
+#ifndef BTSR_NO_PULLER_TFU
if (Motor_i == POOLER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will n//ot be controlled
{
if (ControlIdtoMotorId[Motor_i] != 0xFF)
diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
index 5471397aa..25fb8e962 100644
--- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
+++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
@@ -608,6 +608,8 @@ uint32_t Waste_PrepareCallbak(uint32_t IfIndex, uint32_t ReadValue)
{
SafeRemoveControlCallback(WasteReadyControlId,Waste_PrepareCallbak);
WasteReadyControlId = 0xFF;
+ JobEndReason = JOB_PRESSURE_ALARM;
+ usnprintf(AlarmReasonStr, 100, "Module waste prepare - air flow not stabilized");
Report("Module waste prepare failed!", __FILE__, __LINE__, headready, RpMessage, headready, 0);
PrepareReady(Module_Waste,ModuleFail);
}
diff --git a/Software/Embedded_SW/Embedded/Software Release Notes.txt b/Software/Embedded_SW/Embedded/Software Release Notes.txt
index 341cf3a48..4e1f7104f 100644
--- a/Software/Embedded_SW/Embedded/Software Release Notes.txt
+++ b/Software/Embedded_SW/Embedded/Software Release Notes.txt
@@ -1,3 +1,12 @@
+Embedded SW Release note - Version 1.5.1(4) - Pack 3
+=============================================================
+fix tunnel pressure calculation
+support standby request
+waste prepare failure - fix report
+fix fan alarms
+improve event handling
+fix StartPowerUpResponse handling
+
Embedded SW Release note - Version 1.5.1(3) - Pack 3
=============================================================
preparations for persistent alarms
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
index 0c007f755..d5e125337 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
@@ -83,6 +83,7 @@ uint32_t InitSequenceMachineReadyToDye(void);
uint32_t InitSequenceStateMachine( INIT_SEQUENCE_STAGES_ENUM ReadValue);
uint32_t PowerUpUpdate(MACHINE_STATE_STAGES_ENUM stage);
int InitFailures = 0;
+extern uint32_t PressureSensorV0[2];
MACHINE_STATE_STAGES_ENUM GetMachineState(void)
{
@@ -90,8 +91,11 @@ MACHINE_STATE_STAGES_ENUM GetMachineState(void)
}
void SetMachineState(MACHINE_STATE_STAGES_ENUM NewState)
{
- MachineStateDetail = NewState;
- PowerUpUpdate(NewState);
+ if (MachineStateDetail != NewState)
+ {
+ MachineStateDetail = NewState;
+ PowerUpUpdate(NewState);
+ }
}
void StopInitSequence(void)
{
@@ -145,7 +149,7 @@ uint32_t InitScheduler(uint32_t IfIndex, uint32_t BusyFlag)
StoredInitStages = InitStages;
InitSequenceStateMachine(InitStages);
}
- PowerUpUpdate(MachineStateDetail);
+ //PowerUpUpdate(MachineStateDetail);
return OK;
}
/*******************************************************************************************************/
@@ -230,12 +234,13 @@ uint32_t InitSequenceMidTankCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag
}
uint32_t InitSequenceBlowerCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag)
{
- double V0[2] = {0.0, 0.0};
if (SafeRemoveControlCallback(HWControlId, InitSequenceBlowerCallBackFunction )==OK)
HWControlId = 0xFF;
else
Report("Remove control callback failed",__FILE__,__LINE__,(int)HWControlId,RpWarning,(int)InitSequenceBlowerCallBackFunction,0);
+
+
Turn_the_Blower_On();//Turn on with the Default_Voltage
if (BlowerCfg.heatingvoltage)
Control_Voltage_To_Blower(BlowerCfg.heatingvoltage);
@@ -244,35 +249,10 @@ uint32_t InitSequenceBlowerCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag)
WHS_enable_control_loop(true);
WHS_Set_SetPoint_Q_value(headairflow);
- AlarmHandlingSetAlarm (EVENT_TYPE__MACHINE_STATE_INITIAL_BLOWER_FAILED,OFF); //handle alarm detection and operation
+ //AlarmHandlingSetAlarm (EVENT_TYPE__MACHINE_STATE_INITIAL_BLOWER_FAILED,OFF); //handle alarm detection and operation
waste_seq_step1();// include 1Sec delay <- to open !!!!
- if (Head_Type == HEAD_TYPE_ARC) {
- if (ResetReason & SYSCTL_CAUSE_POR) {
- V0[0] = PressureSensorInit(0);
- V0[1] = PressureSensorInit(1);
- ReportWithPackageFilter(InitFilter,"read pressure sensor v0[0],v0[1]", __FILE__,__LINE__, (int)V0[0], RpMessage, (int)V0[1], 0);
- if (V0[0] > 1000) {
- MCU_E2PromProgram(EEPROM_ORIFICE1_ZERO_VALUE, V0[0]);
- ReportWithPackageFilter(InitFilter,"store pressure sensor v0[0]", __FILE__,__LINE__, (int)V0[0], RpMessage, 0, 0);
- } else {
- MCU_E2PromRead(EEPROM_ORIFICE1_ZERO_VALUE, &V0[0]);
- ReportWithPackageFilter(InitFilter,"load from EEPROM", __FILE__,__LINE__, (int)V0[0], RpMessage, 0, 0);
- }
- if (V0[1] > 1000) {
- MCU_E2PromProgram(EEPROM_ORIFICE1_ZERO_VALUE, V0[1]);
- ReportWithPackageFilter(InitFilter,"store pressure sensor v0[1]", __FILE__,__LINE__, (int)V0[1], RpMessage, 0, 0);
- } else {
- MCU_E2PromRead(EEPROM_ORIFICE1_ZERO_VALUE, &V0[1]);
- ReportWithPackageFilter(InitFilter,"load from EEPROM", __FILE__,__LINE__, (int)V0[1], RpMessage, 0, 0);
- }
- } else {
- MCU_E2PromRead(EEPROM_ORIFICE1_ZERO_VALUE, &V0[0]);
- MCU_E2PromRead(EEPROM_ORIFICE1_ZERO_VALUE, &V0[1]);
- ReportWithPackageFilter(InitFilter,"load initial values from EEPROM", __FILE__,__LINE__, (int)V0[0], RpMessage, (int)V0[1], 0);
- }
- }
Safety_Init();
InitStages++;
@@ -433,70 +413,109 @@ uint32_t InitSequencePowerManagementInit(void)
// InitStages++;
return OK;
}
-uint32_t InitSequenceInitialBlowerActivation(void)
+uint32_t InitSequenceWHSAirFlowCalibration(void)
{
- SetMachineState(MACHINE_STATE_INITIAL_BLOWER_ACTIVATION);
int i,total1=0,total2=0,total3=0;
uint32_t ZeroValue;
uint16_t value = 0;
- //WHS_Start_Blower_Control_Closed_Loop(0.0);
- WHS_enable_control_loop(false);
- if (WHS_Type == WHS_TYPE_NEW)
+
+ if (ResetReason & SYSCTL_CAUSE_POR)
{
- if (ResetReason & SYSCTL_CAUSE_POR)
+ for (i=0;i<8;i++)
{
- Control_Voltage_To_Blower(1); //stop the blower
- Task_sleep (1000);
- for (i=0;i<8;i++)
- {
- Trigger_WHS_MAX11614_Read_allADC();
- Task_sleep (100);
- get_orf_1(&value);
- total1+=value;
- get_orf_2(&value);
- total2+=value;
- get_orf_3(&value);
- total3+=value;
- ReportWithPackageFilter(InitFilter,"load initial orifice value", __FILE__,total1,total2, RpMessage, total3, 0);
- Task_sleep(100);
- }
- total1/=8;
- total2/=8;
- total3/=8;
- MCU_E2PromRead(EEPROM_ORIFICE1_ZERO_VALUE,&ZeroValue);
- if ((total1>800)&&(total1<2000))
- {
- MCU_E2PromProgram(EEPROM_ORIFICE1_ZERO_VALUE,total1);
- }
- else
- total1 = ZeroValue;
- ReportWithPackageFilter(InitFilter,"store initial orifice 1 value", __FILE__,EEPROM_ORIFICE1_ZERO_VALUE,total1, RpMessage, ZeroValue, 0);
- MCU_E2PromRead(EEPROM_ORIFICE3_ZERO_VALUE,&ZeroValue);
- if ((total3>1000)&&(total3<1500))
- {
- MCU_E2PromProgram(EEPROM_ORIFICE3_ZERO_VALUE,total3);
- }
- else
- total3 = ZeroValue;
- ReportWithPackageFilter(InitFilter,"store initial orifice 3 value", __FILE__,EEPROM_ORIFICE3_ZERO_VALUE,total3, RpMessage, ZeroValue, 0);
- WHS_MAX11614_Load_OrificeZeroValue(total1,total2,total3);
+ Trigger_WHS_MAX11614_Read_allADC();
+ Task_sleep (100);
+ get_orf_1(&value);
+ total1+=value;
+ get_orf_2(&value);
+ total2+=value;
+ get_orf_3(&value);
+ total3+=value;
+ ReportWithPackageFilter(InitFilter,"load initial orifice value", __FILE__,total1,total2, RpMessage, total3, 0);
+ Task_sleep(100);
+ }
+ total1/=8;
+ total2/=8;
+ total3/=8;
+ MCU_E2PromRead(EEPROM_ORIFICE1_ZERO_VALUE,&ZeroValue);
+ if ((total1>800)&&(total1<2000))
+ {
+ MCU_E2PromProgram(EEPROM_ORIFICE1_ZERO_VALUE,total1);
}
else
+ total1 = ZeroValue;
+ ReportWithPackageFilter(InitFilter,"store initial orifice 1 value", __FILE__,EEPROM_ORIFICE1_ZERO_VALUE,total1, RpMessage, ZeroValue, 0);
+ MCU_E2PromRead(EEPROM_ORIFICE3_ZERO_VALUE,&ZeroValue);
+ if ((total3>1000)&&(total3<1500))
{
- MCU_E2PromRead(EEPROM_ORIFICE1_ZERO_VALUE,&total1);
- MCU_E2PromRead(EEPROM_ORIFICE3_ZERO_VALUE,&total3);
- ReportWithPackageFilter(InitFilter,"load initial values from EEPROM", __FILE__,0,total3, RpMessage, total1, 0);
- WHS_MAX11614_Load_OrificeZeroValue(total1,total1,total3);
+ MCU_E2PromProgram(EEPROM_ORIFICE3_ZERO_VALUE,total3);
}
+ else
+ total3 = ZeroValue;
+ ReportWithPackageFilter(InitFilter,"store initial orifice 3 value", __FILE__,EEPROM_ORIFICE3_ZERO_VALUE,total3, RpMessage, ZeroValue, 0);
+ WHS_MAX11614_Load_OrificeZeroValue(total1,total2,total3);
+ }
+ else
+ {
+ MCU_E2PromRead(EEPROM_ORIFICE1_ZERO_VALUE,&total1);
+ MCU_E2PromRead(EEPROM_ORIFICE3_ZERO_VALUE,&total3);
+ ReportWithPackageFilter(InitFilter,"load initial values from EEPROM", __FILE__,0,total3, RpMessage, total1, 0);
+ WHS_MAX11614_Load_OrificeZeroValue(total1,total1,total3);
}
+ return OK;
+
+}
+uint32_t InitSequenceArcAirflowCalibration(void)
+{
+ uint32_t V0[2] = {0, 0};
+ if (ResetReason & SYSCTL_CAUSE_POR) {
+ V0[0] = PressureSensorInit(0);
+ V0[1] = PressureSensorInit(1);
+ ReportWithPackageFilter(InitFilter,"read pressure sensor v0[0],v0[1]", __FILE__,__LINE__, (int)V0[0], RpMessage, (int)V0[1], 0);
+ if (V0[0] > 1000) {
+ MCU_E2PromProgram(EEPROM_PRESSURE_SENSOR_V0_0, V0[0]);
+ ReportWithPackageFilter(InitFilter,"store pressure sensor v0[0]", __FILE__,__LINE__, (int)V0[0], RpMessage, 0, 0);
+ } else {
+ MCU_E2PromRead(EEPROM_PRESSURE_SENSOR_V0_0, &V0[0]);
+ ReportWithPackageFilter(InitFilter,"load from EEPROM", __FILE__,__LINE__, (int)V0[0], RpMessage, 0, 0);
+ }
+ if (V0[1] > 1000) {
+ MCU_E2PromProgram(EEPROM_PRESSURE_SENSOR_V0_1, V0[1]);
+ ReportWithPackageFilter(InitFilter,"store pressure sensor v0[1]", __FILE__,__LINE__, (int)V0[1], RpMessage, 0, 0);
+ } else {
+ MCU_E2PromRead(EEPROM_PRESSURE_SENSOR_V0_1, &V0[1]);
+ ReportWithPackageFilter(InitFilter,"load from EEPROM", __FILE__,__LINE__, (int)V0[1], RpMessage, 0, 0);
+ }
+ } else {
+ MCU_E2PromRead(EEPROM_PRESSURE_SENSOR_V0_0, &V0[0]);
+ MCU_E2PromRead(EEPROM_PRESSURE_SENSOR_V0_1, &V0[1]);
+ ReportWithPackageFilter(InitFilter,"load initial values from EEPROM", __FILE__,__LINE__, (int)V0[0], RpMessage, (int)V0[1], 0);
+ }
+ PressureSensorV0[0] = V0[0];
+ PressureSensorV0[1] = V0[1];
+ return OK;
+}
+uint32_t InitSequenceInitialBlowerActivation(void)
+{
+ WHS_enable_control_loop(false);
+ Turn_the_Blower_On();//Turn on with the Default_Voltage
+ Control_Voltage_To_Blower(1); //stop the blower
HeadBlowersInit();
+ Task_sleep (1000);
+
+ if (WHS_Type == WHS_TYPE_NEW)
+ {
+ InitSequenceWHSAirFlowCalibration();
+ }
+ if (Head_Type == HEAD_TYPE_ARC)
+ {
+ InitSequenceArcAirflowCalibration();
+ }
+
Voc_Sensor_Zero_Calibration();
+ SetMachineState(MACHINE_STATE_INITIAL_BLOWER_ACTIVATION);
- Turn_the_Blower_On();//Turn on with the Default_Voltage
-// if (BlowerCfg.voltage)
-// Control_Voltage_To_Blower(BlowerCfg.voltage);
-// else
- Control_Voltage_To_Blower(4200);
+ Control_Voltage_To_Blower(4200);
Set_All_WHS_Fans(200);
Report("AddControlCallback INIT",__FILE__,__LINE__,(int)HWControlId,RpWarning,(int)InitStages,0);
HWControlId = AddControlCallback("Init Blower", InitSequenceBlowerCallBackFunction, 10* eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
@@ -732,6 +751,14 @@ uint32_t InitSequenceStateMachine( INIT_SEQUENCE_STAGES_ENUM ReadValue)
return OK;
}
char PowerUpToken[36+1] = {0};
+//char init_string[100];
+uint32_t PowerUpLoadControlId = 0xFF;
+uint32_t PowerUpUpdateCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag)
+{
+
+ PowerUpUpdate(MachineStateDetail);
+ return OK;
+}
uint32_t PowerUpUpdate(MACHINE_STATE_STAGES_ENUM stage)
{
uint32_t status = NOT_SUPPORTED;
@@ -746,7 +773,7 @@ uint32_t PowerUpUpdate(MACHINE_STATE_STAGES_ENUM stage)
if (PowerUpToken[0] == 0)
return OK;
- Report("PowerUpUpdate",__FILE__,last,InitStages,RpWarning,(int)stage,0);
+ //Report("PowerUpUpdate",__FILE__,last,InitStages,RpWarning,(int)stage,0);
response.has_state = true;
response.has_progresspercentage = true;
@@ -858,7 +885,8 @@ uint32_t PowerUpUpdate(MACHINE_STATE_STAGES_ENUM stage)
Error = ERROR_CODE__POWER_UP_NO_CFG_FILE;
break;
}
- //Report("PowerUpUpdate",__FILE__,last,(int)response.progresspercentage,RpWarning,(int)stage,0);
+ //usnprintf(init_string, 80, "PowerUpUpdate token %s",PowerUpToken);
+ Report("PowerUpUpdate",__FILE__,InitStages,(int)response.progresspercentage,RpWarning,(int)stage,0);
responseContainer = createContainer(MESSAGE_TYPE__StartPowerUpResponse, PowerUpToken, last, &response, &start_power_up_response__pack, &start_power_up_response__get_packed_size);
responseContainer.has_continuous = true;
responseContainer.continuous = true;
@@ -875,8 +903,18 @@ uint32_t PowerUpUpdate(MACHINE_STATE_STAGES_ENUM stage)
SendChars((char*)container_buffer, container_size);
//MessageContainer responseContainer;
+ if (last == true)
+ {
+ if (PowerUpLoadControlId!= 0xFF)
+ {
+ RemoveControlCallback(PowerUpLoadControlId, PowerUpUpdateCallBackFunction);
+ PowerUpLoadControlId = 0xFF;
+ }
+ }
return status;
}
+
+
uint32_t PowerUpUpdateFunc(MessageContainer* requestContainer)
{
uint32_t status = NOT_SUPPORTED;
@@ -884,11 +922,13 @@ uint32_t PowerUpUpdateFunc(MessageContainer* requestContainer)
// MachineUpdateInitParams InitParams;
- Report("PowerUpUpdateFunc",__FILE__,__LINE__,(int)0,RpWarning,(int)0,0);
StartPowerUpRequest* request = start_power_up_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
ustrncpy (PowerUpToken, requestContainer->token,36);
+ //usnprintf(init_string, 80, "PowerUpUpdateFunc token %s",PowerUpToken);
+ Report("PowerUpUpdateFunc",__FILE__,__LINE__,(int)0,RpWarning,(int)0,0);
+ PowerUpLoadControlId = AddControlCallback("PowerUpLoad", PowerUpUpdateCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
- PowerUpUpdate(MachineStateDetail);
+ //PowerUpUpdate(MachineStateDetail);
start_power_up_request__free_unpacked(request,NULL);
return status;
}
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
index 155d84fdb..82601a162 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
@@ -184,6 +184,13 @@ bool JobIsActive(void)
return retcode;
}*/
+ErrorCode getJobError_to_ErrorCode(JobEndReasonEnum JobError)
+{
+ if (JobError<JOB_ERRORS_MAX)
+ return JobError_to_ErrorCode[JobError];
+ else
+ return ERROR_CODE__KEY_NOT_FOUND;
+}
//********************************************************************************************************************
bool GetHeatersPrepareWaiting(void)
{
@@ -1193,7 +1200,7 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes
switch (JobEndReason)
{
case JOB_THREAD_BREAK:
- AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_BREAK,true);
+ //AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_BREAK,true);
break;
case JOB_POOLER_DANCER_FAIL:
AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_PULLER_DANCER,true);
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h
index 9fdd7b85f..dde582749 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h
@@ -106,6 +106,7 @@ typedef enum
JOB_ERRORS_MAX
}JobEndReasonEnum;
extern JobEndReasonEnum JobEndReason;
+ErrorCode getJobError_to_ErrorCode(JobEndReasonEnum JobError);
#define MAX_JOB_NAME_LEN 40
#define MAX_SEGMENT_NUM 30
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/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/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/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/Stubs Collection/alarm generator/alarm_gen.exe b/Software/Stubs Collection/alarm generator/alarm_gen.exe
new file mode 100644
index 000000000..6044e0ef0
--- /dev/null
+++ b/Software/Stubs Collection/alarm generator/alarm_gen.exe
Binary files differ
diff --git a/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs b/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs
index 2fb4695dd..9a4805843 100644
--- a/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs
+++ b/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs
@@ -149,10 +149,12 @@ AllowedRangeForHeadBlowerDeviation = 7;
configurationParameters.GeneralParameters.Add(AllowedRangeForHeadBlowerDeviation);
double AllowedRangeForWasteBlowerDeviation = new Double();
-AllowedRangeForWasteBlowerDeviation = 10;
+AllowedRangeForWasteBlowerDeviation = 20;
configurationParameters.GeneralParameters.Add(AllowedRangeForWasteBlowerDeviation);
-
+double Voltage_Hysteresis = new Double();
+Voltage_Hysteresis = 4;
+configurationParameters.GeneralParameters.Add(Voltage_Hysteresis);
File.WriteAllBytes("C:/temp/EmbParam.cfg",configurationParameters.ToBytes());
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 @@
<ROW Property="ExtractFilesFirst" Value="1"/>
<ROW Property="LogoIcon" Value="externalui.ico" MultiBuildValue="DefaultBuild:machine_full_0UZ_icon.ico_1" Type="1" MsiKey="LogoIcon"/>
<ROW Property="Manufacturer" Value="Twine Solutions LTD"/>
- <ROW Property="ProductCode" Value="1033:{AAD4B0FB-3B13-446E-A63A-79E146A26A47} " Type="16"/>
+ <ROW Property="ProductCode" Value="1033:{60135750-CBB3-42F2-BCFC-9C43156DCA8A} " Type="16"/>
<ROW Property="ProductLanguage" Value="1033"/>
<ROW Property="ProductName" Value="Tango FSE"/>
- <ROW Property="ProductVersion" Value="1.0.12.0" Type="32"/>
+ <ROW Property="ProductVersion" Value="1.1.0.0" Type="32"/>
<ROW Property="RUNAPPLICATION" Value="1" Type="4"/>
<ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/>
<ROW Property="UpgradeCode" Value="{0E13CB0D-89F7-465E-9F56-F1CBD6773E6E}"/>
@@ -303,6 +303,8 @@
<ROW Component="Tango.Console.dll" ComponentId="{EA15B4D4-5171-4747-8F7D-0D21CF8CAFD3}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Console.dll"/>
<ROW Component="Tango.Core.dll" ComponentId="{FEA537DB-7B1F-4B88-940A-9911A4D29057}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Core.dll"/>
<ROW Component="Tango.DAL.Remote.dll" ComponentId="{62700DCA-5334-45BB-9B3F-1E60D8E1CB51}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.DAL.Remote.dll"/>
+ <ROW Component="Tango.DataStore.Remote.dll" ComponentId="{DC3934E7-E3F0-4995-A415-117E35345F66}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.DataStore.Remote.dll"/>
+ <ROW Component="Tango.DataStore.dll" ComponentId="{935AC8A1-F425-4763-B91B-FBD559AA35F0}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.DataStore.dll"/>
<ROW Component="Tango.Documents.dll" ComponentId="{FB9E5160-6481-4879-AFC6-89C3D7E21ED6}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Documents.dll"/>
<ROW Component="Tango.DragAndDrop.dll" ComponentId="{E660863F-2225-48FE-B966-E7375A48FBF1}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.DragAndDrop.dll"/>
<ROW Component="Tango.Emulations.dll" ComponentId="{87B4BB2B-DA02-47A4-B738-F0D388ED5B03}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Emulations.dll"/>
@@ -758,6 +760,11 @@
<ROW File="turbojpeg.dll_1" Component_="turbojpeg.dll_1" FileName="TURBOJ~1.DLL|turbojpeg.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\win7-x86\turbojpeg.dll" SelfReg="false"/>
<ROW File="turbojpeg.dll.meta_1" Component_="turbojpeg.dll.meta_1" FileName="TURBOJ~1.MET|turbojpeg.dll.meta" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\win7-x86\turbojpeg.dll.meta" SelfReg="false"/>
<ROW File="DeviceId.dll" Component_="DeviceId.dll" FileName="DeviceId.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\DeviceId.dll" SelfReg="false"/>
+ <ROW File="Tango.DataStore.dll" Component_="Tango.DataStore.dll" FileName="TANGOD~2.DLL|Tango.DataStore.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Tango.DataStore.dll" SelfReg="false"/>
+ <ROW File="Tango.DataStore.pdb" Component_="Tango.DataStore.dll" FileName="TANGOD~2.PDB|Tango.DataStore.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Tango.DataStore.pdb" SelfReg="false"/>
+ <ROW File="Tango.DataStore.Remote.dll" Component_="Tango.DataStore.Remote.dll" FileName="TANGOD~5.DLL|Tango.DataStore.Remote.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Tango.DataStore.Remote.dll" SelfReg="false"/>
+ <ROW File="Tango.DataStore.Remote.pdb" Component_="Tango.DataStore.Remote.dll" FileName="TANGOD~5.PDB|Tango.DataStore.Remote.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Tango.DataStore.Remote.pdb" SelfReg="false"/>
+ <ROW File="Tango.DataStore.xml" Component_="Dragablz.xml" FileName="TANGOD~1.XML|Tango.DataStore.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\FSE\Release\Tango.DataStore.xml" SelfReg="false"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.AiRemoveFileComponent">
<ROW RemoveFile="_" Options="3"/>
@@ -772,7 +779,7 @@
<ROW Action="AI_DetectSoftware" Sequence="101"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
- <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\FSE\Release" PackageFileName="Tango FSE v1.0.12" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Tango FSE v1.0.12"/>
+ <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\FSE\Release" PackageFileName="Tango FSE v1.1.0" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Tango FSE v1.1.0"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
<ROW Path="&lt;AI_DICTS&gt;ui.ail"/>
@@ -1244,6 +1251,8 @@
<ROW Feature_="TangoFSE" Component_="turbojpeg.dll_1"/>
<ROW Feature_="TangoFSE" Component_="turbojpeg.dll.meta_1"/>
<ROW Feature_="TangoFSE" Component_="DeviceId.dll"/>
+ <ROW Feature_="TangoFSE" Component_="Tango.DataStore.dll"/>
+ <ROW Feature_="TangoFSE" Component_="Tango.DataStore.Remote.dll"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiIconsComponent">
<ROW Name="Tango.FSE.LogViewer.UI.exe" SourcePath="..\..\Graphics\FSE\log_viewer_icon.ico" Index="0"/>
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 @@
<ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/>
<ROW Property="ARPNOREPAIR" MultiBuildValue="DefaultBuild:1"/>
<ROW Property="Manufacturer" Value="Twine"/>
- <ROW Property="ProductCode" Value="1033:{EE8C56DC-7409-4562-9366-398B3F5DB27A} " Type="16"/>
+ <ROW Property="ProductCode" Value="1033:{730EA73A-6350-443D-9767-230B8178CB4E} " Type="16"/>
<ROW Property="ProductLanguage" Value="1033"/>
<ROW Property="ProductName" Value="Machine Studio"/>
- <ROW Property="ProductVersion" Value="4.1.20.0" Type="32"/>
+ <ROW Property="ProductVersion" Value="4.2.0.0" Type="32"/>
<ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/>
<ROW Property="UpgradeCode" Value="{CBEE5CAE-7C5A-4280-98DE-AA98113764E4}"/>
<ROW Property="WindowsType9X" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/>
@@ -343,24 +343,30 @@
<ROW Component="WriteableBitmapEx.Wpf.dll" ComponentId="{BAFB96A8-B5C1-407F-A4DB-8C5DABB73210}" Directory_="APPDIR" Attributes="0" KeyPath="WriteableBitmapEx.Wpf.dll"/>
<ROW Component="ZedGraph.dll" ComponentId="{26CEF5FC-DB1D-42D0-8080-6F453FA04474}" Directory_="APPDIR" Attributes="0" KeyPath="ZedGraph.dll"/>
<ROW Component="ZedGraph.resources.dll" ComponentId="{C19A98E8-041E-475F-B94C-2DBD2C3AEB54}" Directory_="APPDIR" Attributes="0" KeyPath="ZedGraph.resources.dll"/>
- <ROW Component="alpine.3.9x64" ComponentId="{35763209-C56A-46BC-B3AF-7C0443B84800}" Directory_="alpine.3.9x64_Dir" Attributes="0"/>
- <ROW Component="alpinex64" ComponentId="{A19D9514-0A1F-43AE-B717-5B79D2DEDDDF}" Directory_="alpinex64_Dir" Attributes="0"/>
<ROW Component="benchmarks_rgb_lab.csv" ComponentId="{227CFC36-C088-48B6-B3FB-99170EB7B182}" Directory_="TCC_Dir" Attributes="0" KeyPath="benchmarks_rgb_lab.csv" Type="0"/>
<ROW Component="concrt140.dll" ComponentId="{BA1FDE96-3FAB-4FE6-BCDF-547FB5468791}" Directory_="APPDIR" Attributes="256" KeyPath="concrt140.dll"/>
<ROW Component="cvextern.dll" ComponentId="{5FBA3BA5-D6C4-48B0-B108-61E7F9915D5A}" Directory_="APPDIR" Attributes="256" KeyPath="cvextern.dll"/>
- <ROW Component="debian.9x64" ComponentId="{66571329-844A-4BA2-8E49-CA00BB66415A}" Directory_="debian.9x64_Dir" Attributes="0"/>
- <ROW Component="debianarm64" ComponentId="{DD4F1C49-90D2-466A-913F-6A973B65E7A7}" Directory_="debianarm64_Dir" Attributes="0"/>
- <ROW Component="fedorax64" ComponentId="{CD6E3E27-1699-4AAC-A179-4E159CA5AE3F}" Directory_="fedorax64_Dir" Attributes="0"/>
<ROW Component="fpgen.exe" ComponentId="{457206AA-0093-4C01-80E4-BBCAB192F18F}" Directory_="APPDIR" Attributes="0" KeyPath="fpgen.exe"/>
+ <ROW Component="git2106a5f2.dll" ComponentId="{16263A91-E9CF-4A2E-BD95-E9A7D805B098}" Directory_="x64_1_Dir" Attributes="256" KeyPath="git2106a5f2.dll"/>
+ <ROW Component="git2106a5f2.dll_1" ComponentId="{5CE2807D-387F-41AB-A493-CDD0CE48E5BC}" Directory_="x86_1_Dir" Attributes="0" KeyPath="git2106a5f2.dll_1"/>
<ROW Component="libMagickCore2.dll" ComponentId="{858FD670-C906-401C-834B-AA69D5D7B106}" Directory_="APPDIR" Attributes="0" KeyPath="libMagickCore2.dll"/>
<ROW Component="libMagickWand2.dll" ComponentId="{2E38FD24-82A5-432F-9847-E9A78CB2A5A6}" Directory_="APPDIR" Attributes="0" KeyPath="libMagickWand2.dll"/>
+ <ROW Component="libgit2106a5f2.dylib" ComponentId="{5C43C7F8-FA6A-4DFA-A79E-6E9D58264073}" Directory_="osx_Dir" Attributes="0" KeyPath="libgit2106a5f2.dylib" Type="0"/>
+ <ROW Component="libgit2106a5f2.so" ComponentId="{BBC8E395-EE58-4519-ADC2-91B52EB88641}" Directory_="alpinex64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so" Type="0"/>
+ <ROW Component="libgit2106a5f2.so_1" ComponentId="{8486919E-8025-4563-8ED5-02DCE8EB754A}" Directory_="alpine.3.9x64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_1" Type="0"/>
+ <ROW Component="libgit2106a5f2.so_2" ComponentId="{17FA8D37-2266-40ED-A5B2-BD78A7A1008C}" Directory_="debianarm64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_2" Type="0"/>
+ <ROW Component="libgit2106a5f2.so_3" ComponentId="{4810D88F-B06E-4C7F-A645-49E838E5DFF7}" Directory_="debian.9x64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_3" Type="0"/>
+ <ROW Component="libgit2106a5f2.so_4" ComponentId="{67204EC0-70C7-4175-9AA6-49B29B45EC76}" Directory_="fedorax64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_4" Type="0"/>
+ <ROW Component="libgit2106a5f2.so_5" ComponentId="{273CC194-382B-4029-A734-34D7F5C0122D}" Directory_="linuxx64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_5" Type="0"/>
+ <ROW Component="libgit2106a5f2.so_6" ComponentId="{BC011615-79FC-4D4A-89AA-C899292BC35A}" Directory_="rhelx64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_6" Type="0"/>
+ <ROW Component="libgit2106a5f2.so_7" ComponentId="{EAC7C83F-C579-4225-966A-6517B91622C7}" Directory_="ubuntu.16.04arm64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_7" Type="0"/>
+ <ROW Component="libgit2106a5f2.so_8" ComponentId="{857F80A6-743B-4FE8-B291-31F3E0CF019E}" Directory_="ubuntu.18.04x64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_8" Type="0"/>
<ROW Component="libiconv2.dll" ComponentId="{2700198B-26A6-4D84-93C7-8855FD014A13}" Directory_="APPDIR" Attributes="0" KeyPath="libiconv2.dll"/>
<ROW Component="libjpeg7.dll" ComponentId="{88A7E4EB-DBA8-40A6-AB9A-54F0DE726F06}" Directory_="APPDIR" Attributes="0" KeyPath="libjpeg7.dll"/>
<ROW Component="libpng120.dll" ComponentId="{45735C72-6B1C-421C-8F92-561795B2B945}" Directory_="APPDIR" Attributes="0" KeyPath="libpng120.dll"/>
<ROW Component="libtiff3.dll" ComponentId="{B0AFF3A9-FDF3-45E6-957F-0DDD9015A945}" Directory_="APPDIR" Attributes="0" KeyPath="libtiff3.dll"/>
<ROW Component="libxml22.dll" ComponentId="{DD4CEEAA-1435-4088-B282-1713DC646832}" Directory_="APPDIR" Attributes="0" KeyPath="libxml22.dll"/>
<ROW Component="libzbar0.dll" ComponentId="{1C46ED02-3AD0-4C0E-B80C-E519040270CD}" Directory_="APPDIR" Attributes="0" KeyPath="libzbar0.dll"/>
- <ROW Component="linuxx64" ComponentId="{EA306049-77CF-4BAC-A1A3-1714BF3F3D49}" Directory_="linuxx64_Dir" Attributes="0"/>
<ROW Component="mscoree.dll" ComponentId="{B7304190-8E59-45C3-B972-4611DEB9DE60}" Directory_="APPDIR" Attributes="0" KeyPath="mscoree.dll"/>
<ROW Component="msvcp140.dll" ComponentId="{552CD5DA-6369-4853-9E3A-550AA2609CC0}" Directory_="APPDIR" Attributes="256" KeyPath="msvcp140.dll"/>
<ROW Component="msvcp140d.dll" ComponentId="{6B725C2A-71DF-44D3-A761-EB3D28379956}" Directory_="APPDIR" Attributes="0" KeyPath="msvcp140d.dll"/>
@@ -388,17 +394,11 @@
<ROW Component="opencv_video330d.dll" ComponentId="{961A4293-2F0D-43AE-B49A-CDEB8911F176}" Directory_="APPDIR" Attributes="0" KeyPath="opencv_video330d.dll"/>
<ROW Component="opencv_videoio330d.dll" ComponentId="{FCE62E62-C669-4BE2-90ED-EF4639CDAAD6}" Directory_="APPDIR" Attributes="0" KeyPath="opencv_videoio330d.dll"/>
<ROW Component="opencv_videostab330d.dll" ComponentId="{98E1A941-24F3-4054-A292-F897A688B0C0}" Directory_="APPDIR" Attributes="0" KeyPath="opencv_videostab330d.dll"/>
- <ROW Component="osx" ComponentId="{A2F3AE7D-68A3-4CB8-B3B0-B6A6D482FC0E}" Directory_="osx_Dir" Attributes="0"/>
<ROW Component="protobufnet.dll" ComponentId="{EC7E9950-BFF7-4B28-918D-7F5EBAD54696}" Directory_="APPDIR" Attributes="0" KeyPath="protobufnet.dll"/>
- <ROW Component="rhelx64" ComponentId="{6F6E7CCC-1B6A-4FA3-81C6-2DF27A8D7934}" Directory_="rhelx64_Dir" Attributes="0"/>
<ROW Component="template.bmp" ComponentId="{927DB4C0-6F7A-4D61-8BFC-16AE3116AD96}" Directory_="TCC_Dir" Attributes="0" KeyPath="template.bmp"/>
- <ROW Component="ubuntu.16.04arm64" ComponentId="{0D505378-BAF1-4D33-BF26-34CADDC50B01}" Directory_="ubuntu.16.04arm64_Dir" Attributes="0"/>
- <ROW Component="ubuntu.18.04x64" ComponentId="{66285ECB-9F6D-430E-9443-7FC9D1F85537}" Directory_="ubuntu.18.04x64_Dir" Attributes="0"/>
<ROW Component="ucrtbased.dll" ComponentId="{4188BB88-A714-488A-A02D-98710ACC94F5}" Directory_="APPDIR" Attributes="0" KeyPath="ucrtbased.dll"/>
<ROW Component="vcruntime140.dll" ComponentId="{078A42AF-E964-4CA3-8A9C-CBE6D0FD76AA}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140.dll"/>
<ROW Component="vcruntime140d.dll" ComponentId="{AF42196B-67BB-4EBA-8C3A-38B9527F9775}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140d.dll"/>
- <ROW Component="x64" ComponentId="{BFBEB159-4825-47FB-B091-241335276D07}" Directory_="x64_1_Dir" Attributes="0"/>
- <ROW Component="x86" ComponentId="{5E3FA9D0-FD9E-4952-AE1E-D1C46383010C}" Directory_="x86_1_Dir" Attributes="0"/>
<ROW Component="zlib1.dll" ComponentId="{B1077B58-3ED7-4166-8329-8FF92411C301}" Directory_="APPDIR" Attributes="0" KeyPath="zlib1.dll"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiFeatsComponent">
@@ -847,6 +847,21 @@
<ROW File="LibGit2Sharp.pdb" Component_="LibGit2Sharp.dll" FileName="LIBGIT~1.PDB|LibGit2Sharp.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\LibGit2Sharp.pdb" SelfReg="false"/>
<ROW File="Tango.Git.dll" Component_="Tango.Git.dll" FileName="TANGOG~1.DLL|Tango.Git.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Tango.Git.dll" SelfReg="false"/>
<ROW File="Tango.Git.pdb" Component_="Tango.Git.dll" FileName="TANGOG~1.PDB|Tango.Git.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Tango.Git.pdb" SelfReg="false"/>
+ <ROW File="libgit2106a5f2.so" Component_="libgit2106a5f2.so" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\alpine-x64\libgit2-106a5f2.so" SelfReg="false"/>
+ <ROW File="libgit2106a5f2.so_1" Component_="libgit2106a5f2.so_1" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\alpine.3.9-x64\libgit2-106a5f2.so" SelfReg="false"/>
+ <ROW File="libgit2106a5f2.so_2" Component_="libgit2106a5f2.so_2" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\debian-arm64\libgit2-106a5f2.so" SelfReg="false"/>
+ <ROW File="libgit2106a5f2.so_3" Component_="libgit2106a5f2.so_3" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\debian.9-x64\libgit2-106a5f2.so" SelfReg="false"/>
+ <ROW File="libgit2106a5f2.so_4" Component_="libgit2106a5f2.so_4" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\fedora-x64\libgit2-106a5f2.so" SelfReg="false"/>
+ <ROW File="libgit2106a5f2.so_5" Component_="libgit2106a5f2.so_5" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\linux-x64\libgit2-106a5f2.so" SelfReg="false"/>
+ <ROW File="libgit2106a5f2.dylib" Component_="libgit2106a5f2.dylib" FileName="LIBGIT~1.DYL|libgit2-106a5f2.dylib" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\osx\libgit2-106a5f2.dylib" SelfReg="false"/>
+ <ROW File="libgit2106a5f2.so_6" Component_="libgit2106a5f2.so_6" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\rhel-x64\libgit2-106a5f2.so" SelfReg="false"/>
+ <ROW File="libgit2106a5f2.so_7" Component_="libgit2106a5f2.so_7" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\ubuntu.16.04-arm64\libgit2-106a5f2.so" SelfReg="false"/>
+ <ROW File="libgit2106a5f2.so_8" Component_="libgit2106a5f2.so_8" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\ubuntu.18.04-x64\libgit2-106a5f2.so" SelfReg="false"/>
+ <ROW File="git2106a5f2.dll" Component_="git2106a5f2.dll" FileName="GIT2-1~1.DLL|git2-106a5f2.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\win32\x64\git2-106a5f2.dll" SelfReg="false"/>
+ <ROW File="git2106a5f2.pdb" Component_="git2106a5f2.dll" FileName="GIT2-1~1.PDB|git2-106a5f2.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\win32\x64\git2-106a5f2.pdb" SelfReg="false"/>
+ <ROW File="git2106a5f2.dll_1" Component_="git2106a5f2.dll_1" FileName="GIT2-1~1.DLL|git2-106a5f2.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\win32\x86\git2-106a5f2.dll" SelfReg="false"/>
+ <ROW File="git2106a5f2.pdb_1" Component_="git2106a5f2.dll_1" FileName="GIT2-1~1.PDB|git2-106a5f2.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\lib\win32\x86\git2-106a5f2.pdb" SelfReg="false"/>
+ <ROW File="LibGit2Sharp.dll.config" Component_="Dragablz.xml" FileName="LIBGIT~1.CON|LibGit2Sharp.dll.config" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\LibGit2Sharp.dll.config" SelfReg="false"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.AiRemoveFileComponent">
<ROW RemoveFile="_" Options="3"/>
@@ -858,7 +873,7 @@
<ROW Action="AI_DetectSoftware" Sequence="101"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
- <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\Machine Studio\Release" PackageFileName="Machine Studio Installer_v4.0.9" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Machine Studio Installer_v4.1.20"/>
+ <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\Machine Studio\Release" PackageFileName="Machine Studio Installer_v4.2.0" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Machine Studio Installer_v4.2.0"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
<ROW Path="&lt;AI_DICTS&gt;ui.ail"/>
@@ -959,18 +974,6 @@
<COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent">
<ROW Directory_="SHORTCUTDIR" Component_="SHORTCUTDIR" ManualDelete="false"/>
<ROW Directory_="APPDIR" Component_="APPDIR" ManualDelete="true"/>
- <ROW Directory_="alpinex64_Dir" Component_="alpinex64" ManualDelete="false"/>
- <ROW Directory_="alpine.3.9x64_Dir" Component_="alpine.3.9x64" ManualDelete="false"/>
- <ROW Directory_="debianarm64_Dir" Component_="debianarm64" ManualDelete="false"/>
- <ROW Directory_="debian.9x64_Dir" Component_="debian.9x64" ManualDelete="false"/>
- <ROW Directory_="fedorax64_Dir" Component_="fedorax64" ManualDelete="false"/>
- <ROW Directory_="linuxx64_Dir" Component_="linuxx64" ManualDelete="false"/>
- <ROW Directory_="osx_Dir" Component_="osx" ManualDelete="false"/>
- <ROW Directory_="rhelx64_Dir" Component_="rhelx64" ManualDelete="false"/>
- <ROW Directory_="ubuntu.16.04arm64_Dir" Component_="ubuntu.16.04arm64" ManualDelete="false"/>
- <ROW Directory_="ubuntu.18.04x64_Dir" Component_="ubuntu.18.04x64" ManualDelete="false"/>
- <ROW Directory_="x64_1_Dir" Component_="x64" ManualDelete="false"/>
- <ROW Directory_="x86_1_Dir" Component_="x86" ManualDelete="false"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiCustActComponent">
<ROW Action="AI_AiRemoveFilesCommit" Type="11777" Source="ResourceCleaner.dll" Target="OnAiRemoveFilesCommit" WithoutSeq="true"/>
@@ -1341,18 +1344,18 @@
<ROW Feature_="MachineStudio" Component_="Tango.ColorLib_v4.dll"/>
<ROW Feature_="MachineStudio" Component_="LibGit2Sharp.dll"/>
<ROW Feature_="MachineStudio" Component_="Tango.Git.dll"/>
- <ROW Feature_="MachineStudio" Component_="x86"/>
- <ROW Feature_="MachineStudio" Component_="alpinex64"/>
- <ROW Feature_="MachineStudio" Component_="alpine.3.9x64"/>
- <ROW Feature_="MachineStudio" Component_="debianarm64"/>
- <ROW Feature_="MachineStudio" Component_="debian.9x64"/>
- <ROW Feature_="MachineStudio" Component_="fedorax64"/>
- <ROW Feature_="MachineStudio" Component_="linuxx64"/>
- <ROW Feature_="MachineStudio" Component_="osx"/>
- <ROW Feature_="MachineStudio" Component_="rhelx64"/>
- <ROW Feature_="MachineStudio" Component_="ubuntu.16.04arm64"/>
- <ROW Feature_="MachineStudio" Component_="ubuntu.18.04x64"/>
- <ROW Feature_="MachineStudio" Component_="x64"/>
+ <ROW Feature_="MachineStudio" Component_="libgit2106a5f2.so"/>
+ <ROW Feature_="MachineStudio" Component_="libgit2106a5f2.so_1"/>
+ <ROW Feature_="MachineStudio" Component_="libgit2106a5f2.so_2"/>
+ <ROW Feature_="MachineStudio" Component_="libgit2106a5f2.so_3"/>
+ <ROW Feature_="MachineStudio" Component_="libgit2106a5f2.so_4"/>
+ <ROW Feature_="MachineStudio" Component_="libgit2106a5f2.so_5"/>
+ <ROW Feature_="MachineStudio" Component_="libgit2106a5f2.dylib"/>
+ <ROW Feature_="MachineStudio" Component_="libgit2106a5f2.so_6"/>
+ <ROW Feature_="MachineStudio" Component_="libgit2106a5f2.so_7"/>
+ <ROW Feature_="MachineStudio" Component_="libgit2106a5f2.so_8"/>
+ <ROW Feature_="MachineStudio" Component_="git2106a5f2.dll"/>
+ <ROW Feature_="MachineStudio" Component_="git2106a5f2.dll_1"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent">
<ROW Action="AI_DOWNGRADE" Condition="AI_NEWERPRODUCTFOUND AND (UILevel &lt;&gt; 5)" Sequence="210"/>
diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip
index 7cd6c02b1..872e4b938 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 @@
<ROW Component="DocumentFormat.OpenXml.dll" ComponentId="{DF22F9D3-CEF7-4D41-8D0D-1D45C509376E}" Directory_="APPDIR" Attributes="0" KeyPath="DocumentFormat.OpenXml.dll"/>
<ROW Component="EFCache.dll" ComponentId="{E15AE519-6E9A-4860-AE1B-36A611A2ACC2}" Directory_="APPDIR" Attributes="0" KeyPath="EFCache.dll"/>
<ROW Component="EntityFramework.SqlServer.dll" ComponentId="{38839FC0-3C26-4FF6-B4F7-83CE250C9BA2}" Directory_="APPDIR" Attributes="0" KeyPath="EntityFramework.SqlServer.dll"/>
- <ROW Component="EntityFramework.SqlServer.dll_1" ComponentId="{618EF41C-2BB3-4EFB-87D5-6218117DA04B}" Directory_="Packages_Dir" Attributes="0" KeyPath="EntityFramework.SqlServer.dll_1"/>
<ROW Component="EntityFramework.dll" ComponentId="{84E4D21B-268D-488B-B890-EC2958C2FFBC}" Directory_="APPDIR" Attributes="0" KeyPath="EntityFramework.dll"/>
- <ROW Component="EntityFramework.dll_1" ComponentId="{BEAA311D-850A-4779-8BB6-CEF1F36296F8}" Directory_="Packages_Dir" Attributes="0" KeyPath="EntityFramework.dll_1"/>
<ROW Component="FluentFTP.dll" ComponentId="{212CBAE7-9A31-46CD-AA9C-2585FB7EC2E5}" Directory_="APPDIR" Attributes="0" KeyPath="FluentFTP.dll"/>
<ROW Component="FontAwesome.WPF.dll" ComponentId="{303DB9BF-511C-4AAB-8DD9-C0B773679FFF}" Directory_="APPDIR" Attributes="0" KeyPath="FontAwesome.WPF.dll"/>
<ROW Component="Google.Protobuf.dll" ComponentId="{974E6663-6A5F-4596-A2A1-BBD1B21850E8}" Directory_="APPDIR" Attributes="0" KeyPath="Google.Protobuf.dll"/>
@@ -158,6 +156,7 @@
<ROW Component="System.Reactive.Interfaces.dll" ComponentId="{C23DD172-ACE0-4811-90D6-0C2F38B2C27E}" Directory_="APPDIR" Attributes="0" KeyPath="System.Reactive.Interfaces.dll"/>
<ROW Component="System.Reactive.Linq.dll" ComponentId="{572F229C-22E6-4934-BDB9-68600F354F67}" Directory_="APPDIR" Attributes="0" KeyPath="System.Reactive.Linq.dll"/>
<ROW Component="System.Reactive.PlatformServices.dll" ComponentId="{84B191EA-72B0-4FA8-B352-AEF6BBD48F31}" Directory_="APPDIR" Attributes="0" KeyPath="System.Reactive.PlatformServices.dll"/>
+ <ROW Component="System.Spatial.dll" ComponentId="{ABC8AAEE-2D43-49D7-8038-3CE15B23E699}" Directory_="APPDIR" Attributes="0" KeyPath="System.Spatial.dll"/>
<ROW Component="System.Web.Http.WebHost.dll" ComponentId="{9F1DD6B2-3514-4C62-AACA-EE7368ECB36B}" Directory_="APPDIR" Attributes="0" KeyPath="System.Web.Http.WebHost.dll"/>
<ROW Component="System.Web.Http.dll" ComponentId="{0ABCDC64-DE4A-4994-B4C8-3B0146F68F09}" Directory_="APPDIR" Attributes="0" KeyPath="System.Web.Http.dll"/>
<ROW Component="System.Web.Razor.dll" ComponentId="{231E534C-FAF8-41DD-A21F-B5CACF6AB05F}" Directory_="APPDIR" Attributes="0" KeyPath="System.Web.Razor.dll"/>
@@ -165,15 +164,19 @@
<ROW Component="Tango.AdvancedInstaller.dll" ComponentId="{5C51256D-50D1-46F5-A44F-73AF2E63EAF5}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.AdvancedInstaller.dll"/>
<ROW Component="Tango.AnimatedGif.dll" ComponentId="{2DCBEDC8-EDA7-4C90-8852-39E0B13DABF7}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.AnimatedGif.dll"/>
<ROW Component="Tango.BL.dll" ComponentId="{56D29CF3-E600-48A5-BF55-045EEE7CFDC6}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.BL.dll"/>
- <ROW Component="Tango.BL.dll_1" ComponentId="{CA63BB8F-8EF2-4DF9-A796-6D546B0F5FCE}" Directory_="Packages_Dir" Attributes="0" KeyPath="Tango.BL.dll_1"/>
<ROW Component="Tango.CSV.dll" ComponentId="{7980426F-EE8B-472C-A2E5-D5E09258E1B1}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.CSV.dll"/>
<ROW Component="Tango.CodeGeneration.dll" ComponentId="{7BE2B8CB-E5B7-435B-A585-C49EB042E9EB}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.CodeGeneration.dll"/>
<ROW Component="Tango.ColorConversion.dll" ComponentId="{A7FB8123-03C9-41A1-AEFE-1516E5A04224}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.ColorConversion.dll"/>
<ROW Component="Tango.ColorLib_v1.dll" ComponentId="{2144DE18-A79A-4811-ABBD-080FB91B0977}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.ColorLib_v1.dll"/>
<ROW Component="Tango.ColorLib_v2.dll" ComponentId="{BF397BA6-85CE-4A7A-9C1B-76F8FD3210D8}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.ColorLib_v2.dll"/>
<ROW Component="Tango.ColorLib_v3.dll" ComponentId="{3264F593-EBB0-4AAB-BC34-AF382E485620}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.ColorLib_v3.dll"/>
+ <ROW Component="Tango.ColorLib_v4.dll" ComponentId="{ECFA3C0A-1834-4F60-9A19-5AB6DA9CB5E6}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.ColorLib_v4.dll"/>
<ROW Component="Tango.Console.dll" ComponentId="{9F335170-14FF-472E-B3A5-1AAFA7C3067B}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Console.dll"/>
<ROW Component="Tango.Core.dll" ComponentId="{4DF6644D-C4EC-419D-9622-2F79BBBC5A3F}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Core.dll"/>
+ <ROW Component="Tango.DataStore.EF.dll" ComponentId="{8CB699F6-2992-4E8B-A985-BFB711F00887}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.DataStore.EF.dll"/>
+ <ROW Component="Tango.DataStore.Lite.dll" ComponentId="{A4DE7D38-9FFE-4876-8EA5-D2DFFF941DD7}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.DataStore.Lite.dll"/>
+ <ROW Component="Tango.DataStore.Remote.dll" ComponentId="{75E21DF0-35CB-4C0D-9542-79176449F9E1}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.DataStore.Remote.dll"/>
+ <ROW Component="Tango.DataStore.dll" ComponentId="{8CD7FAF4-6184-490D-B632-FA65A392F79F}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.DataStore.dll"/>
<ROW Component="Tango.Documents.dll" ComponentId="{1FFC36F6-BF53-47D7-A4DB-92ABBDCC127B}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Documents.dll"/>
<ROW Component="Tango.DragAndDrop.dll" ComponentId="{E9081F1C-7A40-402F-83B4-62F4E3D5E4BE}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.DragAndDrop.dll"/>
<ROW Component="Tango.Emulations.dll" ComponentId="{51084E24-6781-469C-97CF-AE6CBB6E8A25}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Emulations.dll"/>
@@ -203,7 +206,6 @@
<ROW Component="Tango.PPC.Packages.SamplePostPackage.dll" ComponentId="{B5384C95-9D5A-48EE-A938-DBFE32FC2E25}" Directory_="Packages_Dir" Attributes="0" KeyPath="Tango.PPC.Packages.SamplePostPackage.dll"/>
<ROW Component="Tango.PPC.Packages.SamplePrePackage.dll" ComponentId="{30CD58AB-F4B9-4690-8962-DCBAB4DD059D}" Directory_="Packages_Dir" Attributes="0" KeyPath="Tango.PPC.Packages.SamplePrePackage.dll"/>
<ROW Component="Tango.PPC.Shared.dll" ComponentId="{AA769313-AC05-4C33-A72C-43CF04DF6EBD}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.PPC.Shared.dll"/>
- <ROW Component="Tango.PPC.Shared.dll_1" ComponentId="{79B609E5-FDCC-4169-ACB7-84A1503DFF2A}" Directory_="Packages_Dir" Attributes="0" KeyPath="Tango.PPC.Shared.dll_1"/>
<ROW Component="Tango.PPC.Storage.dll" ComponentId="{5FDB1CE0-A29E-44F9-83E2-AD7A5FC7DF22}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.PPC.Storage.dll"/>
<ROW Component="Tango.PPC.Technician.dll" ComponentId="{B96E96EB-9E0A-49D1-A8E5-E2989E81F142}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.PPC.Technician.dll"/>
<ROW Component="Tango.PPC.UI.exe" ComponentId="{ABCBFD0F-3957-42AF-A7E5-931A097E4814}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.PPC.UI.exe"/>
@@ -225,28 +227,26 @@
<ROW Component="Tango.WiFi.dll" ComponentId="{8082C9BD-5BDB-4C52-BCA6-E8604D4D232B}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.WiFi.dll"/>
<ROW Component="WebRtc.NET.dll" ComponentId="{11563A6C-E1FC-4578-8BDD-8A8C30677126}" Directory_="APPDIR" Attributes="0" KeyPath="WebRtc.NET.dll"/>
<ROW Component="WindowsInput.dll" ComponentId="{916884AD-CD7D-4AB0-8B3B-A2205ACFBDF4}" Directory_="APPDIR" Attributes="0" KeyPath="WindowsInput.dll"/>
- <ROW Component="git2106a5f2.dll" ComponentId="{3FE9C608-F478-4E38-898A-160256F0207A}" Directory_="x64_Dir" Attributes="256" KeyPath="git2106a5f2.dll"/>
- <ROW Component="git2106a5f2.dll_1" ComponentId="{034CC49B-B60E-454A-9643-18180F3D7D0E}" Directory_="x86_Dir" Attributes="0" KeyPath="git2106a5f2.dll_1"/>
- <ROW Component="libgit2106a5f2.dylib" ComponentId="{7F920851-4EC7-4DF7-B150-61CDB649EB3F}" Directory_="osx_Dir" Attributes="0" KeyPath="libgit2106a5f2.dylib" Type="0"/>
- <ROW Component="libgit2106a5f2.so" ComponentId="{A767A633-DB48-42D4-ABEE-A8A578F95EC4}" Directory_="alpinex64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so" Type="0"/>
- <ROW Component="libgit2106a5f2.so_1" ComponentId="{316FC4F2-3D64-4777-A62D-7D06C4C6FF8F}" Directory_="alpine.3.9x64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_1" Type="0"/>
- <ROW Component="libgit2106a5f2.so_2" ComponentId="{7F5E08CD-38C5-4B15-B06B-19976D817463}" Directory_="debianarm64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_2" Type="0"/>
- <ROW Component="libgit2106a5f2.so_3" ComponentId="{3C3270C3-3155-4C87-9508-3DA75A04B567}" Directory_="debian.9x64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_3" Type="0"/>
- <ROW Component="libgit2106a5f2.so_4" ComponentId="{C8ECEF88-EF7E-41CD-B096-63A127E8EA86}" Directory_="fedorax64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_4" Type="0"/>
- <ROW Component="libgit2106a5f2.so_5" ComponentId="{AF241129-A015-49D0-8235-1DC392831CBF}" Directory_="linuxx64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_5" Type="0"/>
- <ROW Component="libgit2106a5f2.so_6" ComponentId="{3631727D-7F4D-4790-B843-A22D9A7ACD8A}" Directory_="rhelx64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_6" Type="0"/>
- <ROW Component="libgit2106a5f2.so_7" ComponentId="{DADA6055-E0A4-40CF-A68B-9539D7B5F3DE}" Directory_="ubuntu.16.04arm64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_7" Type="0"/>
- <ROW Component="libgit2106a5f2.so_8" ComponentId="{EC200D68-EA0F-4188-A631-5D0FAA7B529B}" Directory_="ubuntu.18.04x64_Dir" Attributes="0" KeyPath="libgit2106a5f2.so_8" Type="0"/>
+ <ROW Component="alpine.3.9x64" ComponentId="{D4BCF305-49A6-4295-82B6-104C83D9D3A6}" Directory_="alpine.3.9x64_Dir" Attributes="0"/>
+ <ROW Component="alpinex64" ComponentId="{61852CDB-13E7-4A1B-8E80-5EC2F09698B7}" Directory_="alpinex64_Dir" Attributes="0"/>
+ <ROW Component="debian.9x64" ComponentId="{DC31704C-C7AF-47FD-9EE8-116E5F602B68}" Directory_="debian.9x64_Dir" Attributes="0"/>
+ <ROW Component="debianarm64" ComponentId="{FC83A31E-4E0A-4840-A044-BDDD61B0FE1E}" Directory_="debianarm64_Dir" Attributes="0"/>
+ <ROW Component="fedorax64" ComponentId="{24C8A0D2-96C5-428E-97B3-3DAA62B414E9}" Directory_="fedorax64_Dir" Attributes="0"/>
+ <ROW Component="linuxx64" ComponentId="{D88F848F-666F-4CD1-A62D-F8CDE2CBA18F}" Directory_="linuxx64_Dir" Attributes="0"/>
<ROW Component="mscoree.dll" ComponentId="{85F439D0-8FD0-4B99-888D-336C7A125E3D}" Directory_="APPDIR" Attributes="0" KeyPath="mscoree.dll"/>
<ROW Component="msvcp140d.dll" ComponentId="{69E32675-9ACF-4C23-A495-300B78913B66}" Directory_="APPDIR" Attributes="0" KeyPath="msvcp140d.dll"/>
+ <ROW Component="osx" ComponentId="{EFAA0F58-2E8D-4EAA-9E30-58E5A062EBB0}" Directory_="osx_Dir" Attributes="0"/>
<ROW Component="protobufnet.dll" ComponentId="{163F1E17-6462-4ABE-BC86-E055F7690139}" Directory_="APPDIR" Attributes="0" KeyPath="protobufnet.dll"/>
- <ROW Component="turbojpeg.dll" ComponentId="{A46C81B7-627E-4493-8AAE-071A649795BD}" Directory_="win7x64_Dir" Attributes="256" KeyPath="turbojpeg.dll"/>
- <ROW Component="turbojpeg.dll.meta" ComponentId="{D02BE769-2478-40E5-87F6-72F9118F1F66}" Directory_="win7x64_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta" Type="0"/>
- <ROW Component="turbojpeg.dll.meta_1" ComponentId="{2E34E404-D1CB-4367-B793-B979811AA003}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta_1" Type="0"/>
- <ROW Component="turbojpeg.dll_1" ComponentId="{A1261149-D64C-43FD-902A-6F9A36BA420C}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll_1"/>
+ <ROW Component="rhelx64" ComponentId="{20FDADE2-65E8-4ABA-8ED2-A7923A4EFE86}" Directory_="rhelx64_Dir" Attributes="0"/>
+ <ROW Component="ubuntu.16.04arm64" ComponentId="{C6CE6C53-EF79-4EFC-8616-5FDC856F8644}" Directory_="ubuntu.16.04arm64_Dir" Attributes="0"/>
+ <ROW Component="ubuntu.18.04x64" ComponentId="{81511E67-ED99-4AE0-AA1C-5F4C3BD93282}" Directory_="ubuntu.18.04x64_Dir" Attributes="0"/>
<ROW Component="ucrtbased.dll" ComponentId="{B8D025EA-CD16-4EE7-A3E7-713E2BE82BF3}" Directory_="APPDIR" Attributes="0" KeyPath="ucrtbased.dll"/>
<ROW Component="vcruntime140.dll" ComponentId="{144594CC-D19B-45E4-A420-7A1BBB122EE3}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140.dll"/>
<ROW Component="vcruntime140d.dll" ComponentId="{7653420C-C6C3-4F31-97E8-D6DE417D3DF2}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140d.dll"/>
+ <ROW Component="win7x64" ComponentId="{A4F0F832-0F44-4BEB-B50F-1C6B8C5BE876}" Directory_="win7x64_Dir" Attributes="0"/>
+ <ROW Component="win7x86" ComponentId="{19161320-54C7-4E88-A0CF-999336DC5173}" Directory_="win7x86_Dir" Attributes="0"/>
+ <ROW Component="x64" ComponentId="{29CA5548-8E90-4F84-BCB4-C74FB4B2AE7B}" Directory_="x64_Dir" Attributes="0"/>
+ <ROW Component="x86" ComponentId="{0DBB98B7-0CE8-446B-9540-D4A7A2E28B08}" Directory_="x86_Dir" Attributes="0"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiFeatsComponent">
<ROW Feature="MainFeature" Title="MainFeature" Description="Description" Display="1" Level="1" Directory_="APPDIR" Attributes="0"/>
@@ -507,38 +507,19 @@
<ROW File="LibGit2Sharp.pdb" Component_="LibGit2Sharp.dll" FileName="LIBGIT~1.PDB|LibGit2Sharp.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\LibGit2Sharp.pdb" SelfReg="false"/>
<ROW File="Tango.Git.dll" Component_="Tango.Git.dll" FileName="TANGOG~1.DLL|Tango.Git.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.Git.dll" SelfReg="false"/>
<ROW File="Tango.Git.pdb" Component_="Tango.Git.dll" FileName="TANGOG~1.PDB|Tango.Git.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.Git.pdb" SelfReg="false"/>
- <ROW File="libgit2106a5f2.so" Component_="libgit2106a5f2.so" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\alpine-x64\libgit2-106a5f2.so" SelfReg="false"/>
- <ROW File="libgit2106a5f2.so_1" Component_="libgit2106a5f2.so_1" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\alpine.3.9-x64\libgit2-106a5f2.so" SelfReg="false"/>
- <ROW File="libgit2106a5f2.so_2" Component_="libgit2106a5f2.so_2" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\debian-arm64\libgit2-106a5f2.so" SelfReg="false"/>
- <ROW File="libgit2106a5f2.so_3" Component_="libgit2106a5f2.so_3" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\debian.9-x64\libgit2-106a5f2.so" SelfReg="false"/>
- <ROW File="libgit2106a5f2.so_4" Component_="libgit2106a5f2.so_4" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\fedora-x64\libgit2-106a5f2.so" SelfReg="false"/>
- <ROW File="libgit2106a5f2.so_5" Component_="libgit2106a5f2.so_5" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\linux-x64\libgit2-106a5f2.so" SelfReg="false"/>
- <ROW File="libgit2106a5f2.dylib" Component_="libgit2106a5f2.dylib" FileName="LIBGIT~1.DYL|libgit2-106a5f2.dylib" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\osx\libgit2-106a5f2.dylib" SelfReg="false"/>
- <ROW File="libgit2106a5f2.so_6" Component_="libgit2106a5f2.so_6" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\rhel-x64\libgit2-106a5f2.so" SelfReg="false"/>
- <ROW File="libgit2106a5f2.so_7" Component_="libgit2106a5f2.so_7" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\ubuntu.16.04-arm64\libgit2-106a5f2.so" SelfReg="false"/>
- <ROW File="libgit2106a5f2.so_8" Component_="libgit2106a5f2.so_8" FileName="LIBGIT~1.SO|libgit2-106a5f2.so" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\ubuntu.18.04-x64\libgit2-106a5f2.so" SelfReg="false"/>
- <ROW File="git2106a5f2.dll" Component_="git2106a5f2.dll" FileName="GIT2-1~1.DLL|git2-106a5f2.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\win32\x64\git2-106a5f2.dll" SelfReg="false"/>
- <ROW File="git2106a5f2.pdb" Component_="git2106a5f2.dll" FileName="GIT2-1~1.PDB|git2-106a5f2.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\win32\x64\git2-106a5f2.pdb" SelfReg="false"/>
- <ROW File="git2106a5f2.dll_1" Component_="git2106a5f2.dll_1" FileName="GIT2-1~1.DLL|git2-106a5f2.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\win32\x86\git2-106a5f2.dll" SelfReg="false"/>
- <ROW File="git2106a5f2.pdb_1" Component_="git2106a5f2.dll_1" FileName="GIT2-1~1.PDB|git2-106a5f2.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\lib\win32\x86\git2-106a5f2.pdb" SelfReg="false"/>
- <ROW File="LibGit2Sharp.dll.config" Component_="CommandLine.xml" FileName="LIBGIT~1.CON|LibGit2Sharp.dll.config" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\LibGit2Sharp.dll.config" SelfReg="false"/>
- <ROW File="EntityFramework.dll_1" Component_="EntityFramework.dll_1" FileName="ENTITY~1.DLL|EntityFramework.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\EntityFramework.dll" SelfReg="false"/>
- <ROW File="EntityFramework.SqlServer.dll_1" Component_="EntityFramework.SqlServer.dll_1" FileName="ENTITY~2.DLL|EntityFramework.SqlServer.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\EntityFramework.SqlServer.dll" SelfReg="false"/>
- <ROW File="EntityFramework.SqlServer.xml" Component_="Tango.PPC.Packages.JobRunsStartTimePatch.dll.config" FileName="ENTITY~1.XML|EntityFramework.SqlServer.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\EntityFramework.SqlServer.xml" SelfReg="false"/>
- <ROW File="EntityFramework.xml" Component_="Tango.PPC.Packages.JobRunsStartTimePatch.dll.config" FileName="ENTITY~2.XML|EntityFramework.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\EntityFramework.xml" SelfReg="false"/>
- <ROW File="Tango.BL.dll_1" Component_="Tango.BL.dll_1" FileName="TANGOB~1.DLL|Tango.BL.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\Tango.BL.dll" SelfReg="false"/>
- <ROW File="Tango.BL.dll.config_1" Component_="Tango.PPC.Packages.JobRunsStartTimePatch.dll.config" FileName="TANGOB~1.CON|Tango.BL.dll.config" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\Tango.BL.dll.config" SelfReg="false"/>
- <ROW File="Tango.BL.pdb_1" Component_="Tango.BL.dll_1" FileName="TANGOB~1.PDB|Tango.BL.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\Tango.BL.pdb" SelfReg="false"/>
<ROW File="Tango.PPC.Packages.Auth2.dll" Component_="Tango.PPC.Packages.Auth2.dll" FileName="TANGOP~5.DLL|Tango.PPC.Packages.Auth2.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\Tango.PPC.Packages.Auth2.dll" SelfReg="false"/>
<ROW File="Tango.PPC.Packages.Auth2.dll.config" Component_="Tango.PPC.Packages.JobRunsStartTimePatch.dll.config" FileName="TANGOP~2.CON|Tango.PPC.Packages.Auth2.dll.config" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\Tango.PPC.Packages.Auth2.dll.config" SelfReg="false"/>
<ROW File="Tango.PPC.Packages.Auth2.pdb" Component_="Tango.PPC.Packages.Auth2.dll" FileName="TANGOP~5.PDB|Tango.PPC.Packages.Auth2.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\Tango.PPC.Packages.Auth2.pdb" SelfReg="false"/>
- <ROW File="Tango.PPC.Shared.dll_1" Component_="Tango.PPC.Shared.dll_1" FileName="TANGOP~6.DLL|Tango.PPC.Shared.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\Tango.PPC.Shared.dll" SelfReg="false"/>
- <ROW File="Tango.PPC.Shared.pdb_1" Component_="Tango.PPC.Shared.dll_1" FileName="TANGOP~6.PDB|Tango.PPC.Shared.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\Tango.PPC.Shared.pdb" SelfReg="false"/>
- <ROW File="Tango.PPC.Shared.xml" Component_="Tango.PPC.Packages.JobRunsStartTimePatch.dll.config" FileName="TANGOP~1.XML|Tango.PPC.Shared.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Packages\Tango.PPC.Shared.xml" SelfReg="false"/>
- <ROW File="turbojpeg.dll" Component_="turbojpeg.dll" FileName="TURBOJ~1.DLL|turbojpeg.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x64\turbojpeg.dll" SelfReg="false"/>
- <ROW File="turbojpeg.dll.meta" Component_="turbojpeg.dll.meta" FileName="TURBOJ~1.MET|turbojpeg.dll.meta" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x64\turbojpeg.dll.meta" SelfReg="false"/>
- <ROW File="turbojpeg.dll_1" Component_="turbojpeg.dll_1" FileName="TURBOJ~1.DLL|turbojpeg.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x86\turbojpeg.dll" SelfReg="false"/>
- <ROW File="turbojpeg.dll.meta_1" Component_="turbojpeg.dll.meta_1" FileName="TURBOJ~1.MET|turbojpeg.dll.meta" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x86\turbojpeg.dll.meta" SelfReg="false"/>
+ <ROW File="System.Spatial.dll" Component_="System.Spatial.dll" FileName="SYSTE~11.DLL|System.Spatial.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\System.Spatial.dll" SelfReg="false"/>
+ <ROW File="Tango.ColorLib_v4.dll" Component_="Tango.ColorLib_v4.dll" FileName="TANGOC~9.DLL|Tango.ColorLib_v4.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.ColorLib_v4.dll" SelfReg="false"/>
+ <ROW File="Tango.DataStore.dll" Component_="Tango.DataStore.dll" FileName="TANGOD~3.DLL|Tango.DataStore.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.DataStore.dll" SelfReg="false"/>
+ <ROW File="Tango.DataStore.EF.dll" Component_="Tango.DataStore.EF.dll" FileName="TANGOD~4.DLL|Tango.DataStore.EF.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.DataStore.EF.dll" SelfReg="false"/>
+ <ROW File="Tango.DataStore.EF.pdb" Component_="Tango.DataStore.EF.dll" FileName="TANGOD~3.PDB|Tango.DataStore.EF.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.DataStore.EF.pdb" SelfReg="false"/>
+ <ROW File="Tango.DataStore.Lite.dll" Component_="Tango.DataStore.Lite.dll" FileName="TANGOD~5.DLL|Tango.DataStore.Lite.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.DataStore.Lite.dll" SelfReg="false"/>
+ <ROW File="Tango.DataStore.Lite.pdb" Component_="Tango.DataStore.Lite.dll" FileName="TANGOD~4.PDB|Tango.DataStore.Lite.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.DataStore.Lite.pdb" SelfReg="false"/>
+ <ROW File="Tango.DataStore.pdb" Component_="Tango.DataStore.dll" FileName="TANGOD~5.PDB|Tango.DataStore.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.DataStore.pdb" SelfReg="false"/>
+ <ROW File="Tango.DataStore.Remote.dll" Component_="Tango.DataStore.Remote.dll" FileName="TANGOD~6.DLL|Tango.DataStore.Remote.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.DataStore.Remote.dll" SelfReg="false"/>
+ <ROW File="Tango.DataStore.Remote.pdb" Component_="Tango.DataStore.Remote.dll" FileName="TANGOD~6.PDB|Tango.DataStore.Remote.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.DataStore.Remote.pdb" SelfReg="false"/>
<ATTRIBUTE name="DontAddFileAttributes" value="true"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.BootstrOptComponent">
@@ -616,6 +597,20 @@
<COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent">
<ROW Directory_="SHORTCUTDIR" Component_="SHORTCUTDIR" ManualDelete="false"/>
<ROW Directory_="APPDIR" Component_="APPDIR" ManualDelete="true"/>
+ <ROW Directory_="alpinex64_Dir" Component_="alpinex64" ManualDelete="false"/>
+ <ROW Directory_="alpine.3.9x64_Dir" Component_="alpine.3.9x64" ManualDelete="false"/>
+ <ROW Directory_="debianarm64_Dir" Component_="debianarm64" ManualDelete="false"/>
+ <ROW Directory_="debian.9x64_Dir" Component_="debian.9x64" ManualDelete="false"/>
+ <ROW Directory_="fedorax64_Dir" Component_="fedorax64" ManualDelete="false"/>
+ <ROW Directory_="linuxx64_Dir" Component_="linuxx64" ManualDelete="false"/>
+ <ROW Directory_="osx_Dir" Component_="osx" ManualDelete="false"/>
+ <ROW Directory_="rhelx64_Dir" Component_="rhelx64" ManualDelete="false"/>
+ <ROW Directory_="ubuntu.16.04arm64_Dir" Component_="ubuntu.16.04arm64" ManualDelete="false"/>
+ <ROW Directory_="ubuntu.18.04x64_Dir" Component_="ubuntu.18.04x64" ManualDelete="false"/>
+ <ROW Directory_="x64_Dir" Component_="x64" ManualDelete="false"/>
+ <ROW Directory_="x86_Dir" Component_="x86" ManualDelete="false"/>
+ <ROW Directory_="win7x64_Dir" Component_="win7x64" ManualDelete="false"/>
+ <ROW Directory_="win7x86_Dir" Component_="win7x86" ManualDelete="false"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiCustActComponent">
<ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Type="51" Source="AI_SETUPEXEPATH_ORIGINAL" Target="[AI_SETUPEXEPATH]"/>
@@ -813,27 +808,27 @@
<ROW Feature_="MainFeature" Component_="Tango.Insights.dll"/>
<ROW Feature_="MainFeature" Component_="LibGit2Sharp.dll"/>
<ROW Feature_="MainFeature" Component_="Tango.Git.dll"/>
- <ROW Feature_="MainFeature" Component_="libgit2106a5f2.so"/>
- <ROW Feature_="MainFeature" Component_="libgit2106a5f2.so_1"/>
- <ROW Feature_="MainFeature" Component_="libgit2106a5f2.so_2"/>
- <ROW Feature_="MainFeature" Component_="libgit2106a5f2.so_3"/>
- <ROW Feature_="MainFeature" Component_="libgit2106a5f2.so_4"/>
- <ROW Feature_="MainFeature" Component_="libgit2106a5f2.so_5"/>
- <ROW Feature_="MainFeature" Component_="libgit2106a5f2.dylib"/>
- <ROW Feature_="MainFeature" Component_="libgit2106a5f2.so_6"/>
- <ROW Feature_="MainFeature" Component_="libgit2106a5f2.so_7"/>
- <ROW Feature_="MainFeature" Component_="libgit2106a5f2.so_8"/>
- <ROW Feature_="MainFeature" Component_="git2106a5f2.dll"/>
- <ROW Feature_="MainFeature" Component_="git2106a5f2.dll_1"/>
- <ROW Feature_="MainFeature" Component_="EntityFramework.dll_1"/>
- <ROW Feature_="MainFeature" Component_="EntityFramework.SqlServer.dll_1"/>
- <ROW Feature_="MainFeature" Component_="Tango.BL.dll_1"/>
<ROW Feature_="MainFeature" Component_="Tango.PPC.Packages.Auth2.dll"/>
- <ROW Feature_="MainFeature" Component_="Tango.PPC.Shared.dll_1"/>
- <ROW Feature_="MainFeature" Component_="turbojpeg.dll"/>
- <ROW Feature_="MainFeature" Component_="turbojpeg.dll.meta"/>
- <ROW Feature_="MainFeature" Component_="turbojpeg.dll_1"/>
- <ROW Feature_="MainFeature" Component_="turbojpeg.dll.meta_1"/>
+ <ROW Feature_="MainFeature" Component_="System.Spatial.dll"/>
+ <ROW Feature_="MainFeature" Component_="Tango.ColorLib_v4.dll"/>
+ <ROW Feature_="MainFeature" Component_="Tango.DataStore.dll"/>
+ <ROW Feature_="MainFeature" Component_="Tango.DataStore.EF.dll"/>
+ <ROW Feature_="MainFeature" Component_="Tango.DataStore.Lite.dll"/>
+ <ROW Feature_="MainFeature" Component_="Tango.DataStore.Remote.dll"/>
+ <ROW Feature_="MainFeature" Component_="alpinex64"/>
+ <ROW Feature_="MainFeature" Component_="alpine.3.9x64"/>
+ <ROW Feature_="MainFeature" Component_="debianarm64"/>
+ <ROW Feature_="MainFeature" Component_="debian.9x64"/>
+ <ROW Feature_="MainFeature" Component_="fedorax64"/>
+ <ROW Feature_="MainFeature" Component_="linuxx64"/>
+ <ROW Feature_="MainFeature" Component_="osx"/>
+ <ROW Feature_="MainFeature" Component_="rhelx64"/>
+ <ROW Feature_="MainFeature" Component_="ubuntu.16.04arm64"/>
+ <ROW Feature_="MainFeature" Component_="ubuntu.18.04x64"/>
+ <ROW Feature_="MainFeature" Component_="x64"/>
+ <ROW Feature_="MainFeature" Component_="x86"/>
+ <ROW Feature_="MainFeature" Component_="win7x64"/>
+ <ROW Feature_="MainFeature" Component_="win7x86"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent">
<ROW Action="AI_STORE_LOCATION" Condition="(Not Installed) OR REINSTALL" Sequence="1502"/>
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/ColorConverter.cpp
index 23be99668..39b093539 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;
}
@@ -2805,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
@@ -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; j<m_nInks; ++j)
+ VolumeComb[ i][j] = Volume(j);
+ }
+ int **binPerm = new int*[pwr2LVThr];
+ for (int i = 0; i < pwr2LVThr; ++i)
+ {
+ binPerm[i] = new int[indCount];
+ for (int k = 0; k < indCount ; ++k)
+ binPerm[i][k] = -1;
+ D2B.DecToBinary(i, binPerm[i], indCount);
+ }
+ double *dE = new double[pwr2LVThr];
+ double mindE = 10000.0;
+ int indMindE = -1;
+ for (int i = 0; i < pwr2LVThr; ++i)
+ {
+ for (int j=0; j<indCount ; ++j)
+ VolumeComb[i][LVThrIndex[j]] = (double)(binPerm[i][j])* LowVolumeThreshold;
+ }
+ //find the volume with smallest dE from Target.
+ //Convert Volume to Lab and calculate dE from Volume
+ double sumVolComb = 0;
+ for (int isum = 0; isum < m_nInks; ++isum)
+ sumVolComb += VolumeComb[0][isum];
+ int istart = 0;
+ if (sumVolComb < 1.0e-04)
+ istart = 1;
+
+ for (int i = istart; i < pwr2LVThr; ++i)
+ {
+ ConvertVolumeToLabRel(DoubleToVector(VolumeComb[i], m_nInks), LabOut, GamutRegion);
+ m_Conv02->SymmetricaldECMC(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<nsize)
+ {
+ // store remainder in binary array
+ BinOut[i] = DecNumber % 2;
+ DecNumber = DecNumber / 2;
+ i++;
+ }
+} \ No newline at end of file
diff --git a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/Utils/NumConversions.h b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/Utils/NumConversions.h
index 51559f71a..a2ac26306 100644
--- a/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/Utils/NumConversions.h
+++ b/Software/Visual_Studio/ColorLib/Tango.ColorLib_v4/Utils/NumConversions.h
@@ -12,6 +12,7 @@ class NumConversions
int ByteToInt(uint8_t *byteN, int Start);
uint16_t ByteToShort(uint8_t *byteN, int Start);
void getchar(uint32_t num, char &tmpC);
+ void DecToBinary(int DecNumber,int *&BinOut, int nsize);
private:
};
#endif //__NUMCONVERSIONS_H__ \ No newline at end of file
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..dd4a2d6c4 100644
--- 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
Binary files differ
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs
index 45f1f1c67..fa70e630e 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/AssemblyInfo.cs
@@ -8,5 +8,5 @@ using System.Windows;
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Tango FSE")]
-[assembly: AssemblyVersion("1.1.0.0")]
+[assembly: AssemblyVersion("1.1.1.0")]
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
}
}
+ /// <summary>
+ /// Gets or sets a value indicating whether to display the environment selection.
+ /// </summary>
+ 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 @@
<TextBox Margin="0 20 0 0" Text="{Binding Email,UpdateSourceTrigger=PropertyChanged}" material:HintAssist.Hint="Email" material:HintAssist.IsFloating="True"></TextBox>
<PasswordBox Margin="0 20 0 0" helpers:PasswordHelper.Attach="True" helpers:PasswordHelper.Password="{Binding Password,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" material:HintAssist.Hint="Password" material:HintAssist.IsFloating="True"></PasswordBox>
- <ToggleButton x:Name="chkEnv" Visibility="{Binding RelativeSource={RelativeSource Mode=Self},Path=IsChecked,Converter={StaticResource BooleanToVisibilityInverseConverter}}" HorizontalAlignment="Left" ToolTip="Select different environment" Margin="0 10 0 35" TextElement.Foreground="{StaticResource FSE_PrimaryAccentBrush}" Cursor="Hand">
+ <StackPanel MinHeight="100">
+ <StackPanel Visibility="{Binding DisplayEnvironment,Converter={StaticResource BooleanToVisibilityConverter}}">
+ <ToggleButton x:Name="chkEnv" Visibility="{Binding RelativeSource={RelativeSource Mode=Self},Path=IsChecked,Converter={StaticResource BooleanToVisibilityInverseConverter}}" HorizontalAlignment="Left" ToolTip="Select different environment" Margin="0 10 0 35" TextElement.Foreground="{StaticResource FSE_PrimaryAccentBrush}" Cursor="Hand">
<ToggleButton.Style>
<Style TargetType="ToggleButton">
<Setter Property="Template">
@@ -82,7 +84,9 @@
</ToggleButton.Style>
</ToggleButton>
- <ComboBox Visibility="{Binding Source={x:Reference Name=chkEnv},Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter}}" Margin="0 20 0 0" material:HintAssist.Hint="Environment" material:HintAssist.IsFloating="True" ItemsSource="{Binding Services.GatewayService.Environments}" SelectedItem="{Binding SelectedEnvironment}" DisplayMemberPath="Description"></ComboBox>
+ <ComboBox Visibility="{Binding Source={x:Reference Name=chkEnv},Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter}}" Margin="0 20 0 0" material:HintAssist.Hint="Environment" material:HintAssist.IsFloating="True" ItemsSource="{Binding Services.GatewayService.Environments}" SelectedItem="{Binding SelectedEnvironment}" DisplayMemberPath="Description"></ComboBox>
+ </StackPanel>
+ </StackPanel>
<CheckBox Margin="0 10 0 0" IsChecked="{Binding RememberMe}">remember my password</CheckBox>
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 @@
</controls:TableGrid.Resources>
<TextBlock Text="Cleaner Flow:" VerticalAlignment="Center"></TextBlock>
<mahapps:NumericUpDown Value="{Binding ActiveRML.CleanerFlow,Mode=TwoWay}" Minimum="0" Maximum="10000" InterceptArrowKeys="True" Background="Transparent" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="False" HorizontalContentAlignment="Left"></mahapps:NumericUpDown>
+
+ <TextBlock Text="Arc Head Cleaning Motor Speed:" VerticalAlignment="Center"></TextBlock>
+ <mahapps:NumericUpDown Value="{Binding ActiveRML.ArcHeadCleaningMotorSpeed,Mode=TwoWay}" Minimum="0" Maximum="10000" InterceptArrowKeys="True" Background="Transparent" BorderThickness="0" InterceptMouseWheel="True" HasDecimals="True" HorizontalContentAlignment="Left"></mahapps:NumericUpDown>
</controls:TableGrid>
</DockPanel>
</StackPanel>
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 @@
+<UserControl x:Class="Tango.PPC.Events.EventsViews.ThreadBreakView"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ 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:entities="clr-namespace:Tango.BL.Entities;assembly=Tango.BL"
+ xmlns:local="clr-namespace:Tango.PPC.Events.EventsViews"
+ mc:Ignorable="d"
+ d:DesignHeight="220" d:DesignWidth="750" d:DataContext="{d:DesignInstance Type=entities:MachinesEvent, IsDesignTimeCreatable=False}">
+ <Grid Background="{StaticResource TangoPrimaryBackgroundBrush}">
+ <DockPanel>
+ <Image Stretch="None" Margin="20" DockPanel.Dock="Right" Source="../Images/machine_small.png" RenderOptions.BitmapScalingMode="Fant" />
+ <DockPanel Margin="35 20 20 20">
+ <TextBlock FontSize="{StaticResource TangoTitleFontSize}" FontWeight="SemiBold" DockPanel.Dock="Top" Text="{Binding EventType.Title,FallbackValue='Unknown Event'}"></TextBlock>
+
+ <StackPanel Margin="0 30 0 0">
+ <TextBlock TextWrapping="Wrap" FontWeight="SemiBold" Text="{Binding EventType.Description,FallbackValue='No Description'}"></TextBlock>
+ <Rectangle Margin="0 5 0 10" StrokeThickness="2" Stroke="{StaticResource TangoDividerBrush}" />
+
+ <touch:TouchButton x:Name="btnLoadThreadBreakWizard" Margin="0 10 0 0" Height="55" Style="{StaticResource TangoHollowButton}" Width="280" HorizontalAlignment="Left">LOAD THREAD BREAK WIZARD</touch:TouchButton>
+ </StackPanel>
+ </DockPanel>
+ </DockPanel>
+ </Grid>
+</UserControl>
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
+{
+ /// <summary>
+ /// Interaction logic for ThreadBreakView.xaml
+ /// </summary>
+ 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<IThreadLoadingService>();
+
+ 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 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="EventsViews\ThreadBreakView.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
<Page Include="Resources\Styles.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -98,6 +102,9 @@
<Compile Include="EventsViews\JobEventView.xaml.cs">
<DependentUpon>JobEventView.xaml</DependentUpon>
</Compile>
+ <Compile Include="EventsViews\ThreadBreakView.xaml.cs">
+ <DependentUpon>ThreadBreakView.xaml</DependentUpon>
+ </Compile>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
@@ -180,7 +187,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
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.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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/thread_loading.png
Binary files 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 @@
<Resource Include="Images\Waste\present_empty_right.png" />
<Resource Include="Images\Waste\present_full_right.png" />
</ItemGroup>
+ <ItemGroup>
+ <Resource Include="Images\thread_loading.png" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ 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<GuideBase>(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<WasteStateModel>()
{
@@ -282,9 +285,14 @@ namespace Tango.PPC.Maintenance.ViewModels
await NotificationProvider.ShowDialog<HeadCleaningViewVM>();
}
- 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}">
<UserControl.Resources>
@@ -252,18 +252,46 @@
<localControls:ButtonState Value="Opened" Content="CLOSE DYEING HEAD LID" />
</localControls:StateTouchButton>
- <touch:TouchButton Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}" Command="{Binding ResetThreadLoadingCommand.Command}">RESET THREAD LOADING</touch:TouchButton>
-
<touch:TouchButton Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}" Command="{Binding HeadCleaningCommand}">RUN HEAD CLEANING</touch:TouchButton>
- <touch:TouchButton Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}" Command="{Binding StartThreadLoadingCommand}">THREAD LOADING WIZARD</touch:TouchButton>
-
<touch:TouchButton Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}" Command="{Binding ExportLogsCommand}" Visibility="{Binding ApplicationManager.IsInTechnicianMode,Converter={StaticResource BooleanToVisibilityConverter}}">EXPORT SYSTEM LOGS</touch:TouchButton>
</UniformGrid>
</StackPanel>
</StackPanel>
</touch:TouchDropShadowBorder>
+ <!--THREAD LOADING-->
+ <touch:TouchDropShadowBorder Margin="0 20 0 0" Padding="0 0 0 50" MinHeight="330">
+ <StackPanel>
+ <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Style="{StaticResource Level1Container}">
+ <Image Source="../Images/thread_loading.png" Width="48" RenderOptions.BitmapScalingMode="Fant" />
+ <TextBlock FontWeight="Medium" Margin="20 0 0 0" VerticalAlignment="Center" FontSize="{StaticResource TangoExpanderHeaderFontSize}">Thread Loading</TextBlock>
+ </StackPanel>
+
+ <StackPanel Style="{StaticResource Level2ContainerExtraMargin}">
+ <UniformGrid Columns="1" Margin="0 0" HorizontalAlignment="Left">
+ <StackPanel Margin="20">
+ <touch:TouchButton Width="280" HorizontalAlignment="Left" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}" Command="{Binding StartThreadBreakCommand}">THREAD BREAK WIZARD</touch:TouchButton>
+ <DockPanel Margin="15 10 0 0" TextElement.Foreground="{StaticResource TangoGrayTextBrush}" HorizontalAlignment="Left">
+ <touch:TouchIcon Icon="InformationOutline" Width="14" Height="18" VerticalAlignment="Center" />
+ <TextBlock Margin="5 0 0 0" FontSize="{StaticResource TangoSmallFontSize}">This wizard will help you resolve thread breaking issues</TextBlock>
+ </DockPanel>
+ </StackPanel>
+
+ <StackPanel Margin="20">
+ <touch:TouchButton Width="280" HorizontalAlignment="Left" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}" Command="{Binding StartThreadLoadingCommand}">THREAD LOADING WIZARD</touch:TouchButton>
+ <DockPanel Margin="15 10 0 0" TextElement.Foreground="{StaticResource TangoGrayTextBrush}" HorizontalAlignment="Left">
+ <touch:TouchIcon Icon="InformationOutline" Width="14" Height="18" VerticalAlignment="Center" />
+ <TextBlock Margin="5 0 0 0" FontSize="{StaticResource TangoSmallFontSize}">This wizard will help you load a new thread in to the system</TextBlock>
+ </DockPanel>
+ </StackPanel>
+
+ <touch:TouchButton Width="280" HorizontalAlignment="Left" Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}" Command="{Binding ResetThreadLoadingCommand.Command}">RESET THREAD LOADING</touch:TouchButton>
+ </UniformGrid>
+ </StackPanel>
+ </StackPanel>
+ </touch:TouchDropShadowBorder>
+
<!--GUIDES-->
<touch:TouchDropShadowBorder Margin="0 20 0 0" Padding="0 0 0 50">
<StackPanel>
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/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 @@
<Setter Property="EnableMultiSelect" Value="True"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Request.Intent}" Value="LoadFile">
- <Setter Property="EnableFileSelection" Value="False"></Setter>
+ <Setter Property="EnableFileSelection" Value="True"></Setter>
+ <Setter Property="EnableMultiSelect" Value="False"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
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<FrameworkElement> Elements
+ {
+ get { return (ObservableCollection<FrameworkElement>)GetValue(ElementsProperty); }
+ set { SetValue(ElementsProperty, value); }
+ }
+ public static readonly DependencyProperty ElementsProperty =
+ DependencyProperty.Register("Elements", typeof(ObservableCollection<FrameworkElement>), 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<FrameworkElement>();
+ 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 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:controls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI"
+ xmlns:local="clr-namespace:Tango.PPC.Common.Controls">
+
+ <Style TargetType="{x:Type ListBoxItem}" x:Key="Gallery_BlankListBoxItem">
+ <Setter Property="Background" Value="Transparent"/>
+ <Setter Property="BorderThickness" Value="0"></Setter>
+ <Setter Property="Foreground" Value="{Binding Path=(TextElement.Foreground), RelativeSource={RelativeSource AncestorType=ContentPresenter}}"></Setter>
+ <Setter Property="FocusVisualStyle" Value="{x:Null}"></Setter>
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="Padding" Value="0"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="{x:Type ListBoxItem}">
+ <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0" Background="{TemplateBinding Background}" Padding="0" SnapsToDevicePixels="true">
+ <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ </Border>
+ <ControlTemplate.Triggers>
+ <Trigger Property="IsSelected" Value="true">
+ <Setter Property="Background" TargetName="Bd" Value="Transparent"/>
+ </Trigger>
+ <MultiTrigger>
+ <MultiTrigger.Conditions>
+ <Condition Property="IsSelected" Value="true"/>
+ <Condition Property="Selector.IsSelectionActive" Value="false"/>
+ </MultiTrigger.Conditions>
+ <Setter Property="Background" TargetName="Bd" Value="Transparent"/>
+ </MultiTrigger>
+ <Trigger Property="IsEnabled" Value="false">
+ <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
+ </Trigger>
+ </ControlTemplate.Triggers>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+
+ <Style TargetType="{x:Type ListBox}" x:Key="Gallery_BlankListBox">
+ <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"></Setter>
+ <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled"></Setter>
+ <Setter Property="BorderThickness" Value="0"></Setter>
+ <Setter Property="Background" Value="Transparent"></Setter>
+ <Setter Property="ItemContainerStyle" Value="{StaticResource Gallery_BlankListBoxItem}"></Setter>
+ </Style>
+
+ <Style TargetType="{x:Type local:ImageGalleryControl}">
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="{x:Type local:ImageGalleryControl}">
+ <Border Background="{TemplateBinding Background}"
+ BorderBrush="{TemplateBinding BorderBrush}"
+ BorderThickness="{TemplateBinding BorderThickness}">
+
+ <DockPanel>
+
+ <ListBox DockPanel.Dock="Bottom" ItemsSource="{TemplateBinding Elements}" SelectedIndex="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},Path=SelectedIndex,Mode=TwoWay}" Style="{StaticResource Gallery_BlankListBox}">
+ <ListBox.ItemsPanel>
+ <ItemsPanelTemplate>
+ <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"></StackPanel>
+ </ItemsPanelTemplate>
+ </ListBox.ItemsPanel>
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource Gallery_BlankListBoxItem}">
+ <Setter Property="Margin" Value="10 0"></Setter>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="ListBoxItem">
+ <Ellipse x:Name="ellipse" Stroke="{StaticResource TangoPrimaryAccentBrush}" Width="20" Height="20" StrokeThickness="1">
+ <Ellipse.Style>
+ <Style TargetType="Ellipse">
+
+ </Style>
+ </Ellipse.Style>
+ </Ellipse>
+ <ControlTemplate.Triggers>
+ <Trigger Property="IsSelected" Value="True">
+ <Setter TargetName="ellipse" Property="Fill" Value="{StaticResource TangoGrayBrush}"></Setter>
+ </Trigger>
+ <Trigger Property="IsSelected" Value="False">
+ <Setter TargetName="ellipse" Property="Fill" Value="Transparent"></Setter>
+ </Trigger>
+ </ControlTemplate.Triggers>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
+ </ListBox>
+
+ <controls:NavigationControl x:Name="navigationControl" TransitionType="Slide" TransitionDuration="00:00:0.2" SelectedIndex="{TemplateBinding SelectedIndex}">
+
+ </controls:NavigationControl>
+ </DockPanel>
+ </Border>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+
+</ResourceDictionary> \ 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 @@
<ResourceDictionary Source="pack://application:,,,/Tango.PPC.Common;component/Resources/Fonts.xaml"/>
<ResourceDictionary Source="pack://application:,,,/Tango.PPC.Common;component/Resources/Styles.xaml"/>
+ <!--PPC Controls-->
+ <ResourceDictionary Source="pack://application:,,,/Tango.PPC.Common;component/Controls/ImageGalleryControl.xaml"/>
+
<!--Converters-->
</ResourceDictionary.MergedDictionaries>
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 @@
<Compile Include="Console\DefaultConsoleEngineService.cs" />
<Compile Include="Console\IConsoleEngineService.cs" />
<Compile Include="Controls\AsyncAdornerControl.cs" />
+ <Compile Include="Controls\ImageGalleryControl.cs" />
<Compile Include="Controls\TwineCatalogControl.xaml.cs">
<DependentUpon>TwineCatalogControl.xaml</DependentUpon>
</Compile>
@@ -280,6 +281,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
+ <Page Include="Controls\ImageGalleryControl.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
<Page Include="Controls\MultiPieChart.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -511,7 +516,7 @@
</Target>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
+ <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
</Project> \ 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 @@
+<UserControl x:Class="Tango.PPC.UI.Dialogs.ThreadBreakView"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ 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:controls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI"
+ xmlns:commonControls="clr-namespace:Tango.PPC.Common.Controls;assembly=Tango.PPC.Common"
+ xmlns:local="clr-namespace:Tango.PPC.UI.Dialogs"
+ mc:Ignorable="d"
+ Background="{StaticResource TangoPrimaryBackgroundBrush}" d:DesignHeight="555" d:DesignWidth="560" Width="700" Height="1150" d:DataContext="{d:DesignInstance Type=local:ThreadBreakViewVM, IsDesignTimeCreatable=False}">
+ <Grid>
+ <DockPanel>
+ <StackPanel DockPanel.Dock="Top" Margin="0 30 0 0">
+ <Image HorizontalAlignment="Center" Source="/Images/thread_loading.png" Stretch="None"></Image>
+ <TextBlock HorizontalAlignment="Center" FontSize="{StaticResource TangoHeaderFontSize}" Margin="0 30 0 0">Thread Break Wizard</TextBlock>
+ </StackPanel>
+
+ <StackPanel Margin="10 0 0 0" Orientation="Horizontal" DockPanel.Dock="Bottom">
+ <touch:TouchButton Command="{Binding BackCommand}">
+ <touch:TouchButton.Style>
+ <Style TargetType="touch:TouchButton" BasedOn="{StaticResource TangoFlatButton}">
+ <Setter Property="Foreground" Value="{StaticResource TangoPrimaryAccentBrush}"></Setter>
+ <Style.Triggers>
+ <Trigger Property="IsEnabled" Value="False">
+ <Setter Property="Foreground" Value="{StaticResource TangoGrayBrush}"></Setter>
+ </Trigger>
+ </Style.Triggers>
+ </Style>
+ </touch:TouchButton.Style>
+ <StackPanel>
+ <touch:TouchIcon Icon="ArrowLeft" Width="24" Height="24" />
+ <TextBlock Margin="0 5 0 0" HorizontalAlignment="Center">Back</TextBlock>
+ </StackPanel>
+ </touch:TouchButton>
+ </StackPanel>
+
+ <Grid Margin="0 20 0 0">
+ <controls:NavigationControl Margin="0 5 0 0" SelectedObject="{Binding Stage}" TransitionType="Slide" TransitionAlwaysFades="False" TransitionDuration="00:00:0.1" SelectedIndex="0">
+
+ <!--Guiding Units-->
+ <Grid controls:NavigationControl.NavigationName="GuidingUnits" Background="{StaticResource TangoPrimaryBackgroundBrush}">
+ <DockPanel>
+ <UniformGrid Margin="20" Columns="3" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Padding="30 0" HorizontalAlignment="Left" Command="{Binding GuidingUnitsFoundCantFixCommand}">Found But Can't Fix</touch:TouchButton>
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Padding="40 0" HorizontalAlignment="Right" Command="{Binding GuidingUnitsFoundAndFixedCommand}">Found and Fixed</touch:TouchButton>
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Padding="50 0" HorizontalAlignment="Right" Command="{Binding GuidingUnitsCantFindItCommand}">Can't Find It</touch:TouchButton>
+ </UniformGrid>
+ <DockPanel>
+ <StackPanel DockPanel.Dock="Top">
+ <TextBlock TextWrapping="Wrap" TextAlignment="Center" Margin="40 0" HorizontalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">Please check guiding units on both sides of the system and fix/tie the thread if possible.</TextBlock>
+ </StackPanel>
+
+ <commonControls:ImageGalleryControl Duration="00:00:02">
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/GuidingUnits/1.jpg"></Image>
+ </commonControls:ImageGalleryControl>
+ </DockPanel>
+ </DockPanel>
+ </Grid>
+
+ <!--Feeding Units-->
+ <Grid controls:NavigationControl.NavigationName="FeedingUnits" Background="{StaticResource TangoPrimaryBackgroundBrush}">
+ <DockPanel>
+ <UniformGrid Margin="20" Columns="2" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Left" Command="{Binding FeedingUnitsFoundAndFixedCommand}">Found and Fixed</touch:TouchButton>
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Right" Command="{Binding FeedingUnitsCantFixCommand}">Can't Fix</touch:TouchButton>
+ </UniformGrid>
+ <TextBlock Foreground="{StaticResource TangoErrorBrush}" DockPanel.Dock="Bottom" TextWrapping="Wrap" TextAlignment="Center" Margin="50 20">
+ 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
+ </TextBlock>
+ <DockPanel>
+ <StackPanel DockPanel.Dock="Top">
+ <TextBlock TextWrapping="Wrap" TextAlignment="Center" Margin="40 0" HorizontalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">
+ Open the covers and check the feeder and puller and fix/tie if possible.
+ </TextBlock>
+ </StackPanel>
+
+ <Grid>
+ <Grid Visibility="{Binding IsArcHead,Converter={StaticResource BooleanToVisibilityInverseConverter}}">
+ <commonControls:ImageGalleryControl Duration="00:00:02">
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/FeedingUnits/1.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/FeedingUnits/2.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/FeedingUnits/3.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/FeedingUnits/4.jpg"></Image>
+ </commonControls:ImageGalleryControl>
+ </Grid>
+
+ <Grid Visibility="{Binding IsArcHead,Converter={StaticResource BooleanToVisibilityConverter}}">
+ <commonControls:ImageGalleryControl Duration="00:00:02">
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/FeedingUnits/arc/1.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/FeedingUnits/arc/2.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/FeedingUnits/arc/3.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/FeedingUnits/arc/4.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/FeedingUnits/arc/5.jpg"></Image>
+ </commonControls:ImageGalleryControl>
+ </Grid>
+ </Grid>
+ </DockPanel>
+ </DockPanel>
+ </Grid>
+
+ <!--The Dryer-->
+ <Grid controls:NavigationControl.NavigationName="TheDryer" Background="{StaticResource TangoPrimaryBackgroundBrush}">
+ <DockPanel>
+ <UniformGrid Margin="20" Columns="2" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Left" Command="{Binding TheDryerRemovedSuccessfullyCommand}">Removed Successfully</touch:TouchButton>
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Right" Command="{Binding TheDryerCantRemoveCommand}">Can't Remove</touch:TouchButton>
+ </UniformGrid>
+ <StackPanel DockPanel.Dock="Bottom" TextElement.Foreground="{StaticResource TangoErrorBrush}" Margin="50 20">
+ <DockPanel HorizontalAlignment="Center">
+ <touch:TouchIcon Icon="Alert" Foreground="{StaticResource TangoErrorBrush}" />
+ <TextBlock Margin="5 0 0 0" VerticalAlignment="Center">HOT SURFACE!</TextBlock>
+ </DockPanel>
+ <TextBlock Margin="0 5 0 0" Foreground="{StaticResource TangoErrorBrush}" TextWrapping="Wrap" TextAlignment="Center">
+ Recommended to cool down and/or to wear safety gloves
+ </TextBlock>
+ </StackPanel>
+ <DockPanel>
+ <StackPanel DockPanel.Dock="Top">
+ <TextBlock TextWrapping="Wrap" TextAlignment="Center" Margin="40 0" HorizontalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">
+ Open the dryer, cut the thread and remove any residue.
+ </TextBlock>
+ </StackPanel>
+
+ <commonControls:ImageGalleryControl Duration="00:00:02">
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/TheDryer/1.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/TheDryer/2.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/TheDryer/3.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/TheDryer/4.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/TheDryer/5.jpg"></Image>
+ </commonControls:ImageGalleryControl>
+ </DockPanel>
+ </DockPanel>
+ </Grid>
+
+ <!--Dryer Close-->
+ <Grid controls:NavigationControl.NavigationName="DryerClose" Background="{StaticResource TangoPrimaryBackgroundBrush}">
+ <DockPanel>
+ <UniformGrid Margin="20" Columns="1" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="300" HorizontalAlignment="Center" Command="{Binding OpenThreadLoadingWizardCommand}">Open The Thread Loading Wizard</touch:TouchButton>
+ </UniformGrid>
+ <TextBlock DockPanel.Dock="Bottom" TextWrapping="Wrap" TextAlignment="Center" Margin="50 20">
+ You will be able to open the thread loading wizard once the dryer door is closed
+ </TextBlock>
+ <DockPanel>
+ <StackPanel DockPanel.Dock="Top">
+ <TextBlock TextWrapping="Wrap" TextAlignment="Center" Margin="40 0" HorizontalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">
+ Close the dryer door
+ </TextBlock>
+ </StackPanel>
+
+ <commonControls:ImageGalleryControl Duration="00:00:02">
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/DryerClose/1.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/DryerClose/2.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/DryerClose/3.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/DryerClose/4.jpg"></Image>
+ </commonControls:ImageGalleryControl>
+ </DockPanel>
+ </DockPanel>
+ </Grid>
+
+ <!--Contact Support-->
+ <Grid controls:NavigationControl.NavigationName="ContactSupport" Background="{StaticResource TangoPrimaryBackgroundBrush}">
+ <DockPanel>
+ <UniformGrid Margin="20" Columns="1" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Center" Command="{Binding CloseCommand}">Close</touch:TouchButton>
+ </UniformGrid>
+ <DockPanel>
+ <StackPanel DockPanel.Dock="Top">
+ <TextBlock TextWrapping="Wrap" TextAlignment="Center" Margin="40 0" HorizontalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">
+ Please Contact Twine Customer Care
+ </TextBlock>
+ </StackPanel>
+
+ <Grid>
+ <TextBlock HorizontalAlignment="Center" Margin="0 50 0 0" FontSize="40" Foreground="{StaticResource TangoPrimaryAccentBrush}">support@twine-s.com</TextBlock>
+ </Grid>
+ </DockPanel>
+ </DockPanel>
+ </Grid>
+
+ <!--Jogging-->
+ <Grid controls:NavigationControl.NavigationName="Jogging" Background="{StaticResource TangoPrimaryBackgroundBrush}">
+ <DockPanel>
+ <DockPanel>
+ <StackPanel DockPanel.Dock="Top">
+ <TextBlock TextWrapping="Wrap" TextAlignment="Center" Margin="40 0" HorizontalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">
+ Verifying thread movement
+ </TextBlock>
+ </StackPanel>
+
+ <StackPanel Margin="0 100 0 0">
+ <TextBlock HorizontalAlignment="Center" FontWeight="SemiBold">working...</TextBlock>
+ <touch:TouchBusyIndicator Foreground="{StaticResource TangoGrayBrush}" Width="130" Height="130" Margin="0 40 0 0" StrokeThickness="8" IsIndeterminate="{Binding IsVisible}" />
+ </StackPanel>
+ </DockPanel>
+ </DockPanel>
+ </Grid>
+
+ <!--Fixed-->
+ <Grid controls:NavigationControl.NavigationName="Fixed" Background="{StaticResource TangoPrimaryBackgroundBrush}">
+ <DockPanel>
+ <UniformGrid Margin="20" Columns="1" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Center" Command="{Binding CloseCommand}">Close</touch:TouchButton>
+ </UniformGrid>
+ <DockPanel>
+ <StackPanel DockPanel.Dock="Top">
+ <TextBlock TextWrapping="Wrap" TextAlignment="Center" Margin="40 0" HorizontalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">
+ Issue Resolved
+ </TextBlock>
+ </StackPanel>
+
+ <Grid>
+ <touch:TouchIcon Icon="CheckCircleOutline" Foreground="{StaticResource TangoSuccessBrush}" HorizontalAlignment="Center" VerticalAlignment="Top" Width="100" Margin="0 100 0 0" />
+ </Grid>
+ </DockPanel>
+ </DockPanel>
+ </Grid>
+ </controls:NavigationControl>
+ </Grid>
+ </DockPanel>
+
+ <touch:TouchIconButton Command="{Binding CloseCommand}" HorizontalAlignment="Right" VerticalAlignment="Top" Icon="Close" Width="45" Height="45" Padding="14" Foreground="{StaticResource TangoDarkForegroundBrush}" />
+ </Grid>
+</UserControl>
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
+{
+ /// <summary>
+ /// Interaction logic for ThreadBreakWizard.xaml
+ /// </summary>
+ 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<BL.Entities.MachinesEvent> 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 @@
<Grid Margin="0 20 0 0">
<controls:NavigationControl Margin="0 5 0 0" SelectedObject="{Binding Stage}" TransitionType="Slide" TransitionAlwaysFades="False" TransitionDuration="00:00:0.1" SelectedIndex="0">
+ <!--Welcome-->
<Grid controls:NavigationControl.NavigationName="Welcome" Background="{StaticResource TangoPrimaryBackgroundBrush}">
<DockPanel>
- <UniformGrid Margin="20" Columns="2" DockPanel.Dock="Bottom" Height="55">
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Left" Command="{Binding AbortCommand}">CLOSE</touch:TouchButton>
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Right" Command="{Binding ContinueCommand}">CONTINUE</touch:TouchButton>
+ <UniformGrid Margin="50" Columns="1" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Center" Command="{Binding ContinueCommand}">Continue</touch:TouchButton>
</UniformGrid>
<DockPanel Margin="0 50 0 0" >
<StackPanel DockPanel.Dock="Top">
<TextBlock HorizontalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">Welcome to the automatic thread loading wizard.</TextBlock>
- <DockPanel HorizontalAlignment="Center" Margin="0 20 0 0">
- <touch:TouchIcon Icon="Alert" VerticalAlignment="Center" Foreground="{StaticResource TangoWarningBrush}" />
- <TextBlock TextWrapping="Wrap" TextAlignment="Center" VerticalAlignment="Center" Margin="10 0 0 0">Please ensure there are no thread residue in the system and press 'continue'.</TextBlock>
- </DockPanel>
+ <StackPanel HorizontalAlignment="Center" Margin="0 20 0 0">
+ <touch:TouchIcon Icon="Alert" VerticalAlignment="Center" Foreground="{StaticResource TangoErrorBrush}" />
+ <TextBlock TextWrapping="Wrap" TextAlignment="Center" VerticalAlignment="Center" Margin="0 10 0 0" Width="400">
+ <Run>Please ensure there are no thread residue in the system and press</Run>
+ <Run FontWeight="SemiBold">continue</Run>
+ </TextBlock>
+ </StackPanel>
</StackPanel>
- <Image Stretch="Uniform" Source="/Images/thread_loading_preview.png" VerticalAlignment="Bottom"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/NewThread/TS1800_CloseUp_Feeder_P.jpg" VerticalAlignment="Center" Margin="50"></Image>
</DockPanel>
</DockPanel>
</Grid>
+
+ <!--Preparing-->
<Grid controls:NavigationControl.NavigationName="Preparing" Background="{StaticResource TangoPrimaryBackgroundBrush}">
<DockPanel>
- <UniformGrid Margin="20" Columns="2" DockPanel.Dock="Bottom" Height="55">
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Left" Command="{Binding AbortCommand}">CLOSE</touch:TouchButton>
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Right" Command="{Binding ContinueCommand}">CONTINUE</touch:TouchButton>
+ <UniformGrid Margin="50" Columns="1" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Center" Command="{Binding ContinueCommand}">Continue</touch:TouchButton>
</UniformGrid>
<DockPanel Margin="0 20 0 0">
- <StackPanel VerticalAlignment="Center" DockPanel.Dock="Top">
+ <StackPanel VerticalAlignment="Top" DockPanel.Dock="Top" Margin="0 40 0 0">
<TextBlock Margin="0 50 0 0" FontSize="{StaticResource TangoTitleFontSize}" HorizontalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center">
The system is now preparing...
</TextBlock>
- <touch:TouchProgressBar Margin="50 10 50 0" Height="10" IsIndeterminate="{Binding IsVisible}" />
+ <touch:TouchBusyIndicator Width="140" Height="140" StrokeThickness="8" IsIndeterminate="{Binding IsVisible}" Margin="0 50 0 0" Foreground="{StaticResource TangoGrayBrush}" />
</StackPanel>
- <Image VerticalAlignment="Bottom" Stretch="Uniform" Source="/Images/thread_loading_preview.png"></Image>
</DockPanel>
</DockPanel>
</Grid>
+
+ <!--Ready For Loading-->
<Grid controls:NavigationControl.NavigationName="ReadyForLoading" Background="{StaticResource TangoPrimaryBackgroundBrush}">
<DockPanel>
- <UniformGrid Margin="20" Columns="2" DockPanel.Dock="Bottom" Height="55">
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Left" Command="{Binding AbortCommand}">CLOSE</touch:TouchButton>
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Right" Command="{Binding ContinueCommand}">CONTINUE</touch:TouchButton>
+ <UniformGrid Margin="50" Columns="1" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Center" Command="{Binding ContinueCommand}">Continue</touch:TouchButton>
</UniformGrid>
<DockPanel Margin="0 50 0 0">
<StackPanel DockPanel.Dock="Top">
<TextBlock HorizontalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center">
- Please select the thread type you are going to load and press 'continue'.
+ <Run>Please select the thread type you are going to load and press</Run>
+ <Run FontWeight="SemiBold">continue</Run>
</TextBlock>
<touch:TouchComboBox Margin="0 40 0 0" Width="500" ItemsSource="{Binding Rmls}" SelectedItem="{Binding SelectedRml}" DisplayMemberPath="Name" Title="Select thread type"></touch:TouchComboBox>
</StackPanel>
- <touch:TouchGifAnimation Margin="10" Source="/Images/thread_loading.gif" VerticalAlignment="Bottom" Stretch="Uniform" EnableAnimation="{Binding IsVisible}" />
+
+ <Grid>
+ <Grid Visibility="{Binding IsArcHead,Converter={StaticResource BooleanToVisibilityInverseConverter}}">
+ <touch:TouchGifAnimation Margin="50" Source="/Images/thread_loading.gif" VerticalAlignment="Center" Stretch="Uniform" EnableAnimation="{Binding IsVisible}" />
+ </Grid>
+
+ <Grid>
+ <commonControls:ImageGalleryControl Duration="00:00:02">
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/NewThread/ReadyForLoading/arc/1.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/NewThread/ReadyForLoading/arc/2.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/NewThread/ReadyForLoading/arc/3.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/NewThread/ReadyForLoading/arc/4.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/NewThread/ReadyForLoading/arc/5.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/NewThread/ReadyForLoading/arc/6.jpg"></Image>
+ <Image Stretch="Uniform" Source="/Images/ThreadLoading/NewThread/ReadyForLoading/arc/7.jpg"></Image>
+ </commonControls:ImageGalleryControl>
+ </Grid>
+ </Grid>
</DockPanel>
</DockPanel>
</Grid>
+
+ <!--Finalizing-->
<Grid controls:NavigationControl.NavigationName="Finalizing" Background="{StaticResource TangoPrimaryBackgroundBrush}">
<DockPanel>
- <UniformGrid Margin="20" Columns="2" DockPanel.Dock="Bottom" Height="55">
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Left" Command="{Binding AbortCommand}">CLOSE</touch:TouchButton>
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Right" Command="{Binding ContinueCommand}">CONTINUE</touch:TouchButton>
+ <UniformGrid Margin="50" Columns="1" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Center" Command="{Binding ContinueCommand}">Continue</touch:TouchButton>
</UniformGrid>
<DockPanel Margin="0 20 0 0">
<StackPanel VerticalAlignment="Center" DockPanel.Dock="Top">
<TextBlock Margin="0 50 0 0" FontSize="{StaticResource TangoTitleFontSize}" HorizontalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center">
The system is now loading the thread...
</TextBlock>
- <touch:TouchProgressBar Margin="50 10 50 0" Height="10" IsIndeterminate="{Binding IsVisible}" />
+ <touch:TouchProgressBar Margin="50 40 50 0" Height="10" IsIndeterminate="{Binding IsVisible}" />
</StackPanel>
- <Image VerticalAlignment="Bottom" Stretch="Uniform" Source="/Images/thread_loading_preview.png"></Image>
+
+ <Image VerticalAlignment="Center" Margin="50" Stretch="Uniform" Source="/Images/ThreadLoading/NewThread/machine_full.jpg"></Image>
</DockPanel>
</DockPanel>
</Grid>
+
+ <!--Completed-->
<Grid controls:NavigationControl.NavigationName="Completed" Background="{StaticResource TangoPrimaryBackgroundBrush}">
<DockPanel>
- <UniformGrid Margin="20" DockPanel.Dock="Bottom" Height="55">
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Right" Command="{Binding AbortCommand}">CLOSE</touch:TouchButton>
+ <UniformGrid Margin="50" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Center" Command="{Binding AbortCommand}">Close</touch:TouchButton>
</UniformGrid>
<DockPanel Margin="0 50 0 0" >
<StackPanel DockPanel.Dock="Top">
- <touch:TouchIcon Icon="Check" HorizontalAlignment="Center" Foreground="{StaticResource TangoSuccessBrush}" Width="100" Height="100" />
<TextBlock HorizontalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">Thread loading completed successfully!</TextBlock>
+ <touch:TouchIcon Margin="0 40 0 0" Icon="CheckCircleOutline" HorizontalAlignment="Center" Foreground="{StaticResource TangoSuccessBrush}" Width="100" Height="100" />
</StackPanel>
- <Image Stretch="Uniform" Source="/Images/thread_loading_preview.png" VerticalAlignment="Bottom"></Image>
</DockPanel>
</DockPanel>
</Grid>
+
+ <!--Preparation Error-->
<Grid controls:NavigationControl.NavigationName="PreparationError" Background="{StaticResource TangoPrimaryBackgroundBrush}">
<DockPanel>
- <UniformGrid Margin="20" Columns="2" DockPanel.Dock="Bottom" Height="55">
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Left" Command="{Binding AbortCommand}">CLOSE</touch:TouchButton>
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Right" Command="{Binding ContinueCommand}">RETRY</touch:TouchButton>
+ <UniformGrid Margin="50" Columns="2" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Left" Command="{Binding AbortCommand}">Close</touch:TouchButton>
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Right" Command="{Binding ContinueCommand}">Retry</touch:TouchButton>
</UniformGrid>
<DockPanel Margin="0 50 0 0" >
<StackPanel DockPanel.Dock="Top">
- <touch:TouchIcon Icon="Alert" HorizontalAlignment="Center" Foreground="{StaticResource TangoErrorBrush}" Width="100" Height="100" />
<TextBlock HorizontalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">Something went wrong</TextBlock>
- <TextBlock Margin="0 5 0 0" FontSize="{StaticResource TangoSmallFontSize}" TextAlignment="Center" TextWrapping="Wrap" HorizontalAlignment="Center" Foreground="{StaticResource TangoGrayTextBrush}" Text="{Binding Error}"></TextBlock>
+ <touch:TouchIcon Icon="AlertCircleOutline" Margin="0 40 0 0" HorizontalAlignment="Center" Foreground="{StaticResource TangoErrorBrush}" Width="100" Height="100" />
+ <TextBlock Margin="0 10 0 0" FontSize="{StaticResource TangoSmallFontSize}" TextAlignment="Center" TextWrapping="Wrap" HorizontalAlignment="Center" Foreground="{StaticResource TangoGrayTextBrush}" Text="{Binding Error}"></TextBlock>
</StackPanel>
- <Image Stretch="Uniform" Source="/Images/thread_loading_preview.png" VerticalAlignment="Bottom"></Image>
</DockPanel>
</DockPanel>
</Grid>
+
+ <!--Finalization Error-->
<Grid controls:NavigationControl.NavigationName="FinalizationError" Background="{StaticResource TangoPrimaryBackgroundBrush}">
<DockPanel>
- <UniformGrid Margin="20" Columns="2" DockPanel.Dock="Bottom" Height="55">
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Left" Command="{Binding AbortCommand}">CLOSE</touch:TouchButton>
- <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Right" Command="{Binding ContinueCommand}">RETRY</touch:TouchButton>
+ <UniformGrid Margin="50" Columns="2" DockPanel.Dock="Bottom" Height="55">
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Left" Command="{Binding AbortCommand}">Close</touch:TouchButton>
+ <touch:TouchButton Style="{StaticResource TangoHollowButton}" Width="250" HorizontalAlignment="Right" Command="{Binding ContinueCommand}">Retry</touch:TouchButton>
</UniformGrid>
<DockPanel Margin="0 50 0 0" >
<StackPanel DockPanel.Dock="Top">
- <touch:TouchIcon Icon="Alert" HorizontalAlignment="Center" Foreground="{StaticResource TangoErrorBrush}" Width="100" Height="100" />
<TextBlock HorizontalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">Something went wrong</TextBlock>
- <TextBlock Margin="0 5 0 0" FontSize="{StaticResource TangoSmallFontSize}" TextAlignment="Center" TextWrapping="Wrap" HorizontalAlignment="Center" Foreground="{StaticResource TangoGrayTextBrush}" Text="{Binding Error}"></TextBlock>
+ <touch:TouchIcon Icon="AlertCircleOutline" Margin="0 40 0 0" HorizontalAlignment="Center" Foreground="{StaticResource TangoErrorBrush}" Width="100" Height="100" />
+ <TextBlock Margin="0 10 0 0" FontSize="{StaticResource TangoSmallFontSize}" TextAlignment="Center" TextWrapping="Wrap" HorizontalAlignment="Center" Foreground="{StaticResource TangoGrayTextBrush}" Text="{Binding Error}"></TextBlock>
</StackPanel>
- <Image Stretch="Uniform" Source="/Images/thread_loading_preview.png" VerticalAlignment="Bottom"></Image>
</DockPanel>
</DockPanel>
</Grid>
</controls:NavigationControl>
+
</Grid>
</DockPanel>
+
+ <touch:TouchIconButton Command="{Binding AbortCommand}" HorizontalAlignment="Right" VerticalAlignment="Top" Icon="Close" Width="45" Height="45" Padding="14" Foreground="{StaticResource TangoDarkForegroundBrush}" />
</Grid>
</UserControl>
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<Rml> 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<PPCSettings>();
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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/1.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/2.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/3.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/4.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/1.JPG
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/2.JPG
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/3.JPG
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/4.JPG
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/1.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/2.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/3.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/4.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/5.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/GuidingUnits/1.JPG
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/1.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/2.JPG
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/3.JPG
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/4.JPG
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/5.JPG
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/6.JPG
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/7.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/TS1800_CloseUp_Feeder_P.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/machine_full.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/1.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/2.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/3.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/4.jpg
Binary files 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
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/5.jpg
Binary files 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 @@
<DependentUpon>SafetyLevelOperationsConfirmationView.xaml</DependentUpon>
</Compile>
<Compile Include="Dialogs\SafetyLevelOperationsConfirmationViewVM.cs" />
+ <Compile Include="Dialogs\ThreadBreakView.xaml.cs">
+ <DependentUpon>ThreadBreakView.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="Dialogs\ThreadBreakViewVM.cs" />
<Compile Include="Dialogs\ThreadLoadingView.xaml.cs">
<DependentUpon>ThreadLoadingView.xaml</DependentUpon>
</Compile>
@@ -160,7 +164,6 @@
</Compile>
<Compile Include="Dialogs\ScreenLockViewVM.cs" />
<Compile Include="Dialogs\TechnicianModeLoginViewVM.cs" />
- <None Include="Dialogs\ThreadLoadingViewVM - Copy.cs" />
<Compile Include="Dialogs\ThreadLoadingViewVM.cs" />
<Compile Include="Dialogs\FirmwareUpgradeFromFileView.xaml.cs">
<DependentUpon>FirmwareUpgradeFromFileView.xaml</DependentUpon>
@@ -273,6 +276,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="Dialogs\ThreadBreakView.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
<Page Include="Dialogs\ThreadLoadingView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -454,6 +461,34 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Resource Include="Images\thread_loading_preview.png" />
+ <Resource Include="Images\ThreadLoading\FeedingUnits\1.JPG" />
+ <Resource Include="Images\ThreadLoading\FeedingUnits\2.JPG" />
+ <Resource Include="Images\ThreadLoading\FeedingUnits\3.JPG" />
+ <Resource Include="Images\ThreadLoading\FeedingUnits\4.JPG" />
+ <Resource Include="Images\ThreadLoading\GuidingUnits\1.JPG" />
+ <Resource Include="Images\ThreadLoading\TheDryer\1.jpg" />
+ <Resource Include="Images\ThreadLoading\TheDryer\2.jpg" />
+ <Resource Include="Images\ThreadLoading\TheDryer\3.jpg" />
+ <Resource Include="Images\ThreadLoading\TheDryer\4.jpg" />
+ <Resource Include="Images\ThreadLoading\TheDryer\5.jpg" />
+ <Resource Include="Images\ThreadLoading\DryerClose\1.jpg" />
+ <Resource Include="Images\ThreadLoading\DryerClose\2.jpg" />
+ <Resource Include="Images\ThreadLoading\DryerClose\3.jpg" />
+ <Resource Include="Images\ThreadLoading\DryerClose\4.jpg" />
+ <Resource Include="Images\ThreadLoading\FeedingUnits\arc\1.jpg" />
+ <Resource Include="Images\ThreadLoading\FeedingUnits\arc\2.jpg" />
+ <Resource Include="Images\ThreadLoading\FeedingUnits\arc\3.jpg" />
+ <Resource Include="Images\ThreadLoading\FeedingUnits\arc\4.jpg" />
+ <Resource Include="Images\ThreadLoading\FeedingUnits\arc\5.jpg" />
+ <Resource Include="Images\ThreadLoading\NewThread\TS1800_CloseUp_Feeder_P.jpg" />
+ <Resource Include="Images\ThreadLoading\NewThread\ReadyForLoading\arc\1.jpg" />
+ <Resource Include="Images\ThreadLoading\NewThread\ReadyForLoading\arc\2.JPG" />
+ <Resource Include="Images\ThreadLoading\NewThread\ReadyForLoading\arc\3.JPG" />
+ <Resource Include="Images\ThreadLoading\NewThread\ReadyForLoading\arc\4.JPG" />
+ <Resource Include="Images\ThreadLoading\NewThread\ReadyForLoading\arc\5.JPG" />
+ <Resource Include="Images\ThreadLoading\NewThread\ReadyForLoading\arc\6.JPG" />
+ <Resource Include="Images\ThreadLoading\NewThread\ReadyForLoading\arc\7.jpg" />
+ <Resource Include="Images\ThreadLoading\NewThread\machine_full.jpg" />
<Content Include="Manifests\release.xml" />
<Content Include="Manifests\debug.xml" />
<None Include="firmware_package.tfp">
@@ -726,7 +761,7 @@ if $(ConfigurationName) == Debug copy /Y "$(TargetDir)Packages" "$(TargetDir)"</
</PropertyGroup>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ 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<ThreadLoadingViewVM>(new ThreadLoadingViewVM(true));
_dialogShown = false;
}
+
+ public async void StartThreadBreakWizard()
+ {
+ if (!_dialogShown)
+ {
+ _dialogShown = true;
+ var vm = await _notificationsProvider.ShowDialog<ThreadBreakViewVM>();
+ _dialogShown = false;
+
+ if (vm.Result == ThreadBreakViewVM.ThreadBreakWizardResult.StartThreadLoading)
+ {
+ StartThreadLoadingWizard();
+ }
+ }
+ }
}
}
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.
-->
- <!--<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />-->
+ <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
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
--- /dev/null
+++ b/Software/Visual_Studio/Resources/Events Revisions/Tango alarm events handling chart_Rev27.xlsx
Binary files differ
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;
}
- /// <summary>
- /// arc head cleaning motor speed
- /// </summary>
- 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;
}
+ /// <summary>
+ /// arc head cleaning motor speed
+ /// </summary>
+ public Double ArcHeadCleaningMotorSpeed
+ {
+ get; set;
+ }
+
}
}
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
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<Double> PressureBuildUpChanged;
- public event EventHandler<Double> ArcHeadCleaningMotorSpeedChanged;
-
public event EventHandler<ProcessParametersTablesGroup> ProcessParametersTablesGroupChanged;
protected String _name;
@@ -1109,37 +1107,6 @@ namespace Tango.BL.Entities
}
}
- protected Double _archeadcleaningmotorspeed;
-
- /// <summary>
- /// Gets or sets the processparameterstablebase arc head cleaning motor speed.
- /// </summary>
-
- [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;
/// <summary>
@@ -1461,15 +1428,6 @@ namespace Tango.BL.Entities
}
/// <summary>
- /// Called when the ArcHeadCleaningMotorSpeed has changed.
- /// </summary>
- protected virtual void OnArcHeadCleaningMotorSpeedChanged(Double archeadcleaningmotorspeed)
- {
- ArcHeadCleaningMotorSpeedChanged?.Invoke(this, archeadcleaningmotorspeed);
- RaisePropertyChanged(nameof(ArcHeadCleaningMotorSpeed));
- }
-
- /// <summary>
/// Called when the ProcessParametersTablesGroup has changed.
/// </summary>
protected virtual void OnProcessParametersTablesGroupChanged(ProcessParametersTablesGroup processparameterstablesgroup)
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<Int32> CleanerFlowChanged;
+ public event EventHandler<Double> ArcHeadCleaningMotorSpeedChanged;
+
public event EventHandler<SynchronizedObservableCollection<Cat>> CatsChanged;
public event EventHandler<Cct> CctChanged;
@@ -1281,6 +1283,33 @@ namespace Tango.BL.Entities
}
}
+ protected Double _archeadcleaningmotorspeed;
+
+ /// <summary>
+ /// Gets or sets the rmlbase arc head cleaning motor speed.
+ /// </summary>
+
+ [Column("ARC_HEAD_CLEANING_MOTOR_SPEED")]
+
+ public Double ArcHeadCleaningMotorSpeed
+ {
+ get
+ {
+ return _archeadcleaningmotorspeed;
+ }
+
+ set
+ {
+ if (_archeadcleaningmotorspeed != value)
+ {
+ _archeadcleaningmotorspeed = value;
+
+ OnArcHeadCleaningMotorSpeedChanged(value);
+
+ }
+ }
+ }
+
protected SynchronizedObservableCollection<Cat> _cats;
/// <summary>
@@ -2005,6 +2034,15 @@ namespace Tango.BL.Entities
}
/// <summary>
+ /// Called when the ArcHeadCleaningMotorSpeed has changed.
+ /// </summary>
+ protected virtual void OnArcHeadCleaningMotorSpeedChanged(Double archeadcleaningmotorspeed)
+ {
+ ArcHeadCleaningMotorSpeedChanged?.Invoke(this, archeadcleaningmotorspeed);
+ RaisePropertyChanged(nameof(ArcHeadCleaningMotorSpeed));
+ }
+
+ /// <summary>
/// Called when the Cats has changed.
/// </summary>
protected virtual void OnCatsChanged(SynchronizedObservableCollection<Cat> cats)
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,
/// <summary>
- /// (Cartridges door is open. Cannot start new job )
+ /// (IFS door is open. Cannot start new job )
/// </summary>
- [Description("Cartridges door is open. Cannot start new job ")]
+ [Description("IFS door is open. Cannot start new job ")]
CARTRIDGES_COVER_OPEN = 2006,
/// <summary>
@@ -236,6 +236,24 @@ namespace Tango.BL.Enumerations
TEMPERATURE_MEASUREMENT_ERROR = 2021,
/// <summary>
+ /// (Cannot read the cartridge. Cannot perform ink filling )
+ /// </summary>
+ [Description("Cannot read the cartridge. Cannot perform ink filling ")]
+ RFID_READER_MALFUNCTION_INK_SLOT = 2022,
+
+ /// <summary>
+ /// (Cannot read the cartridge. Cannot replace waste cartridge )
+ /// </summary>
+ [Description("Cannot read the cartridge. Cannot replace waste cartridge ")]
+ RFID_READER_MALFUNCTION_WASTE_SLOT_1 = 2023,
+
+ /// <summary>
+ /// (Cannot read the cartridge. Cannot replace waste cartridge )
+ /// </summary>
+ [Description("Cannot read the cartridge. Cannot replace waste cartridge ")]
+ RFID_READER_MALFUNCTION_WASTE_SLOT_2 = 2024,
+
+ /// <summary>
/// (Thread break. Cannot execute job)
/// </summary>
[Description("Thread break. Cannot execute job")]
@@ -2180,15 +2198,15 @@ namespace Tango.BL.Enumerations
INK_CARTRIDGE_RFID_TIMEOUT = 10001,
/// <summary>
- /// (Waste level is high. Insert waste cartridge)
+ /// (No waste cartridge in system. Cannot execute job. Please insert waste cartridge)
/// </summary>
- [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,
/// <summary>
- /// (Waste cartridge detected. Cannot execute job. Please extract waste cartridge)
+ /// (Both waste cartridges are full. Cannot execute job. Please replace waste cartridges)
/// </summary>
- [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,
/// <summary>
@@ -2203,5 +2221,71 @@ namespace Tango.BL.Enumerations
[Description("Cannot identify waste cartridge. Cannot execute job ")]
WASTE_CARTRIDGE_RFID_TIMEOUT = 10005,
+ /// <summary>
+ /// (Ink cartridge failure. Cannot perform ink filling)
+ /// </summary>
+ [Description("Ink cartridge failure. Cannot perform ink filling")]
+ INK_CARTRIDGE_RFID_TAG_CANNOT_BE_READ = 10006,
+
+ /// <summary>
+ /// (Waste cartridge failure. Cannot replace waste cartridge)
+ /// </summary>
+ [Description("Waste cartridge failure. Cannot replace waste cartridge")]
+ WASTE_CARTRIDGE_RFID_TAG_CANNOT_BE_READ = 10007,
+
+ /// <summary>
+ /// (Ink cartridge failure. Cannot perform ink filling)
+ /// </summary>
+ [Description("Ink cartridge failure. Cannot perform ink filling")]
+ INK_CARTRIDGE_RFID_TAG_IS_NOT_VALID = 10008,
+
+ /// <summary>
+ /// (Waste cartridge failure. Cannot replace waste cartridge)
+ /// </summary>
+ [Description("Waste cartridge failure. Cannot replace waste cartridge")]
+ WASTE_CARTRIDGE_RFID_TAG_IS_NOT_VALID = 10009,
+
+ /// <summary>
+ /// (Ink cartridge failure. Cannot perform ink filling)
+ /// </summary>
+ [Description("Ink cartridge failure. Cannot perform ink filling")]
+ INK_CARTRIDGE_AUTHENTICATION_FAILED = 10010,
+
+ /// <summary>
+ /// (Waste cartridge failure. Cannot replace waste cartridge)
+ /// </summary>
+ [Description("Waste cartridge failure. Cannot replace waste cartridge")]
+ WASTE_CARTRIDGE_AUTHENTICATION_FAILED = 10011,
+
+ /// <summary>
+ /// (Ink cartridge failure. Cannot perform ink filling)
+ /// </summary>
+ [Description("Ink cartridge failure. Cannot perform ink filling")]
+ INK_CARTRIDGE_IS_BLOCKED = 10012,
+
+ /// <summary>
+ /// (Waste cartridge failure. Cannot replace waste cartridge)
+ /// </summary>
+ [Description("Waste cartridge failure. Cannot replace waste cartridge")]
+ WASTE_CARTRIDGE_IS_BLOCKED = 10013,
+
+ /// <summary>
+ /// (Ink cartridge failure. Cannot perform ink filling)
+ /// </summary>
+ [Description("Ink cartridge failure. Cannot perform ink filling")]
+ INK_CARTRIDGE_RFID_TAG_CANNOT_BE_UPDATED = 10014,
+
+ /// <summary>
+ /// (Waste cartridge failure. Cannot replace waste cartridge)
+ /// </summary>
+ [Description("Waste cartridge failure. Cannot replace waste cartridge")]
+ WASTE_CARTRIDGE_RFID_TAG_CANNOT_BE_UPDATED = 10015,
+
+ /// <summary>
+ /// (Ink in cartridge is expired. Cannot perform ink filling)
+ /// </summary>
+ [Description("Ink in cartridge is expired. Cannot perform ink filling")]
+ INK_IN_CARTRIDGE_IS_EXPIRED = 10016,
+
}
}
diff --git a/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs b/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs
index 6d21c69c3..fa60fbd69 100644
--- a/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs
+++ b/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs
@@ -232,10 +232,54 @@ 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<BrushStop> 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 maxNlCM = stops.Max(x => x.TotalLiquidNanoliterPerCentimeter);
+
+ foreach (var table in group.ProcessParametersTables.OrderBy(x => x.MaxInkUptake))
+ {
+ if (maxNlCM <= table.MaxInkUptake) return table;
+ }
+
+ 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.
+ }
+
+ 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;
@@ -433,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;
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;
+ }
+ }
}
diff --git a/Software/Visual_Studio/Tango.ColorLib.GradientTest.CLI/Program.cs b/Software/Visual_Studio/Tango.ColorLib.GradientTest.CLI/Program.cs
index 437ae1df0..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,170 +236,446 @@ 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;
+ }
+
+ /// <summary>
+ /// 1. RGB, Gamut Region 0, In Gamut
+ /// </summary>
+ 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 = 255,
- Green = 0,
- Blue = 0,
- /* ColorSpace = ColorSpace.Lab,
- Offset = 0,
- L=44,
- A = -31,
- B = -14,*/
- // ColorSpace = ColorSpace.Volume,
+ 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();
+ }
- // Cyan = 200,
- // Magenta =0,
- // Yellow =0,
- // Key = 0,
- });
+ /// <summary>
+ /// 2. LAB, Gamut Region 0, In Gamut
+ /// </summary>
+ 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();
- //RGB Stop 2
- input.Stops.Add(new GradientInputStop()
+ 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();
+ }
+
+ /// <summary>
+ /// 3. VolumeAB, Gamut Region 0, In Gamut
+ /// </summary>
+ 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()
{
- 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,
+ LiquidType = LiquidType.Black,
+ Volume = 0
+ });
+ input.Stops.Add(gradientInputStop2);
- //Cyan = 0,
- //Magenta = 0,
- // Yellow = 0,
- // Key = 0,
+ 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();
+ }
+
+ /// <summary>
+ /// 4. VolumeAB, Gamut Region 1, In Gamut
+ /// </summary>
+ 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();
+ }
+
+ /// <summary>
+ /// 5. RGB, Mixed Gamut Regions, In Gamut
+ /// </summary>
+ 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,
});
- //RGB Stop 2
input.Stops.Add(new GradientInputStop()
{
ColorSpace = ColorSpace.Rgb,
Offset = 1,
- Red = 0,
- Green = 255,
- Blue = 255,
+ Red = 70,
+ Green = 50,
+ Blue = 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,
- });*/
- Console.WriteLine($"Testing input:\n{input.ToJsonString(nameof(input.ForwardData),nameof(CalibrationData))}");
+ 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();
+ }
+
+ /// <summary>
+ /// 6. Lab, Gamut Region 0, Out of Gamut
+ /// </summary>
+ 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();
+ }
+
+ /// <summary>
+ ///7. Lab, Mixed Gamut Regions, In Gamut
+ /// </summary>
+ 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();
@@ -236,15 +683,75 @@ 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 TestLABMixedGamut :\n{output.ToJsonString()}");
Console.WriteLine();
+ }
- Console.WriteLine("Press return to exit...");
- Console.ReadLine();
+ /// <summary>
+ ///8. Mixed Environment
+ /// </summary>
+ static void TestMixedEnvironment(GradientGenerator generator)
+ {
+ GradientConversionInput input = CreateBaseGradientConversionInput();
+ input.Stops.Add(new GradientInputStop()
+ {
+ ColorSpace = ColorSpace.Rgb,
+ Offset = 0,
+ Red = 93,
+ Green = 123,
+ Blue = 95,
+ });
+
+ input.Stops.Add(new GradientInputStop()
+ {
+ ColorSpace = ColorSpace.Lab,
+ Offset = 0.6,
+ L = 50,
+ A = -10,
+ B = -10,
+ });
+
+ GradientInputStop gradientInputStop1 = new GradientInputStop()
+ {
+ ColorSpace = ColorSpace.Volume,
+ Offset = 1.0,
+ };
+ gradientInputStop1.LiquidVolumes.Add(new LiquidVolume()
+ {
+ LiquidType = LiquidType.Cyan,
+ Volume = 50
+ });
+ gradientInputStop1.LiquidVolumes.Add(new LiquidVolume()
+ {
+ LiquidType = LiquidType.Magenta,
+ Volume = 0
+ });
+ gradientInputStop1.LiquidVolumes.Add(new LiquidVolume()
+ {
+ LiquidType = LiquidType.Yellow,
+ Volume = 50
+ });
+ gradientInputStop1.LiquidVolumes.Add(new LiquidVolume()
+ {
+ LiquidType = LiquidType.Black,
+ Volume = 0
+ });
+ 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();
+
+ GradientConversionOutput output = generator.GenerateGradient(input);
+
+ watch.Stop();
+ Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds.");
+ Console.WriteLine();
+ Console.WriteLine($"Result TestMixedEnvironment :\n{output.ToJsonString()}");
+ Console.WriteLine();
}
}
}
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
);
}
+ /// <summary>
+ /// Removes any invalid file name characters from the string.
+ /// </summary>
+ /// <param name="str">The string.</param>
+ /// <returns></returns>
+ 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;
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<CAT> 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 @@
<Property Name="L_BLOWER_FLOW" Type="float" Nullable="false" />
<Property Name="L_BLOWER_TEMP" Type="float" Nullable="false" />
<Property Name="PRESSURE_BUILD_UP" Type="float" Nullable="false" />
- <Property Name="ARC_HEAD_CLEANING_MOTOR_SPEED" Type="float" Nullable="false" />
</EntityType>
<EntityType Name="PROCESS_PARAMETERS_TABLES_GROUPS">
<Key>
@@ -1023,6 +1022,7 @@
<Property Name="WINDER_D" Type="int" Nullable="false" />
<Property Name="BYPASS_ROCKERS" Type="bit" Nullable="false" />
<Property Name="CLEANER_FLOW" Type="int" Nullable="false" />
+ <Property Name="ARC_HEAD_CLEANING_MOTOR_SPEED" Type="float" Nullable="false" />
</EntityType>
<EntityType Name="RMLS_SPOOLS">
<Key>
@@ -4423,7 +4423,6 @@
<Property Name="L_BLOWER_FLOW" Type="Double" Nullable="false" />
<Property Name="L_BLOWER_TEMP" Type="Double" Nullable="false" />
<Property Name="PRESSURE_BUILD_UP" Type="Double" Nullable="false" />
- <Property Name="ARC_HEAD_CLEANING_MOTOR_SPEED" Type="Double" Nullable="false" />
<NavigationProperty Name="PROCESS_PARAMETERS_TABLES_GROUPS" Relationship="RemoteModel.FK_PROCESS_PARAMETERS_TABLES_PROCESS_PARAMETERS_TABLES_GROUPS" FromRole="PROCESS_PARAMETERS_TABLES" ToRole="PROCESS_PARAMETERS_TABLES_GROUPS" />
</EntityType>
<EntityType Name="PROCESS_PARAMETERS_TABLES_GROUPS">
@@ -4518,6 +4517,7 @@
<Property Name="WINDER_D" Type="Int32" Nullable="false" />
<Property Name="BYPASS_ROCKERS" Type="Boolean" Nullable="false" />
<Property Name="CLEANER_FLOW" Type="Int32" Nullable="false" />
+ <Property Name="ARC_HEAD_CLEANING_MOTOR_SPEED" Type="Double" Nullable="false" />
<NavigationProperty Name="CATS" Relationship="RemoteModel.FK_CATS_RMLS" FromRole="RML" ToRole="CAT" />
<NavigationProperty Name="CCT" Relationship="RemoteModel.FK_RMLS_CCTS" FromRole="RML" ToRole="CCT" />
<NavigationProperty Name="COLOR_CATALOGS_ITEMS_RECIPES" Relationship="RemoteModel.FK_COLOR_CATALOGS_ITEMS_RECIPES_RMLS" FromRole="RML" ToRole="COLOR_CATALOGS_ITEMS_RECIPES" />
@@ -6973,7 +6973,6 @@
<EntitySetMapping Name="PROCESS_PARAMETERS_TABLES">
<EntityTypeMapping TypeName="RemoteModel.PROCESS_PARAMETERS_TABLES">
<MappingFragment StoreEntitySet="PROCESS_PARAMETERS_TABLES">
- <ScalarProperty Name="ARC_HEAD_CLEANING_MOTOR_SPEED" ColumnName="ARC_HEAD_CLEANING_MOTOR_SPEED" />
<ScalarProperty Name="PRESSURE_BUILD_UP" ColumnName="PRESSURE_BUILD_UP" />
<ScalarProperty Name="L_BLOWER_TEMP" ColumnName="L_BLOWER_TEMP" />
<ScalarProperty Name="L_BLOWER_FLOW" ColumnName="L_BLOWER_FLOW" />
@@ -7057,6 +7056,7 @@
<EntitySetMapping Name="RMLS">
<EntityTypeMapping TypeName="RemoteModel.RML">
<MappingFragment StoreEntitySet="RMLS">
+ <ScalarProperty Name="ARC_HEAD_CLEANING_MOTOR_SPEED" ColumnName="ARC_HEAD_CLEANING_MOTOR_SPEED" />
<ScalarProperty Name="CLEANER_FLOW" ColumnName="CLEANER_FLOW" />
<ScalarProperty Name="BYPASS_ROCKERS" ColumnName="BYPASS_ROCKERS" />
<ScalarProperty Name="WINDER_D" ColumnName="WINDER_D" />
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 @@
<!-- Diagram content (shape and connector positions) -->
<edmx:Diagrams>
<Diagram DiagramId="f9ae01d708754bbd997add25a4bacc79" Name="Diagram1" ZoomLevel="87">
- <EntityTypeShape EntityType="RemoteModel.ACTION_LOGS" Width="1.5" PointX="11.25" PointY="27.75" />
- <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="1.5" PointY="36.25" />
- <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="4.5" PointY="68.625" />
- <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="62.75" />
- <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="4.5" PointY="59.875" />
+ <EntityTypeShape EntityType="RemoteModel.ACTION_LOGS" Width="1.5" PointX="11.25" PointY="27.25" />
+ <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="1.5" PointY="76" />
+ <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="1.5" PointY="62" />
+ <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="56.125" />
+ <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="1.5" PointY="64.875" />
<EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="15.75" PointY="17" />
- <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="7.75" PointY="42.625" />
- <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="5.25" PointY="23.875" />
- <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="0.75" PointY="20.25" />
- <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS" Width="1.5" PointX="1.5" PointY="7.75" />
- <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_GROUPS" Width="1.5" PointX="3.75" PointY="8.25" />
- <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS" Width="1.5" PointX="6" PointY="7" />
- <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS_RECIPES" Width="1.5" PointX="8.25" PointY="15.875" />
- <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="9" PointY="30" />
- <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="6.75" PointY="65.375" />
- <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="1.5" PointY="40.375" />
- <EntityTypeShape EntityType="RemoteModel.CUSTOMER" Width="1.5" PointX="9" PointY="11.875" />
- <EntityTypeShape EntityType="RemoteModel.DATA_STORE_ITEMS" Width="1.5" PointX="11.25" PointY="72.625" />
- <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="5.5" PointY="82.625" />
- <EntityTypeShape EntityType="RemoteModel.DISPENSER" Width="1.5" PointX="7.75" PointY="82" />
- <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="65.625" />
- <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="10" PointY="41.125" />
- <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="16" />
- <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="26.875" />
- <EntityTypeShape EntityType="RemoteModel.FSE_VERSIONS" Width="1.5" PointX="11.25" PointY="31.5" />
- <EntityTypeShape EntityType="RemoteModel.GLOBAL_DATA_STORE_ITEMS" Width="1.5" PointX="11.75" PointY="4.75" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWER_TYPES" Width="1.5" PointX="10.5" PointY="85.125" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWERS" Width="1.5" PointX="12.75" PointY="76.75" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSOR_TYPES" Width="1.5" PointX="12.5" PointY="59.125" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSORS" Width="1.5" PointX="14.75" PointY="64.875" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCER_TYPES" Width="1.5" PointX="4.5" PointY="86.125" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCERS" Width="1.5" PointX="6.75" PointY="76" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTOR_TYPES" Width="1.5" PointX="9.5" PointY="57" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTORS" Width="1.5" PointX="11.75" PointY="62.75" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROL_TYPES" Width="1.5" PointX="12.5" PointY="81.125" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROLS" Width="1.5" PointX="14.75" PointY="69.125" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSOR_TYPES" Width="1.5" PointX="4.5" PointY="76.125" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSORS" Width="1.5" PointX="6.75" PointY="71.875" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="71.5" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDER_TYPES" Width="1.5" PointX="7.5" PointY="87.125" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDERS" Width="1.5" PointX="9.75" PointY="76.875" />
- <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="7.75" PointY="34.75" />
- <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="10" PointY="47" />
- <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="16.75" PointY="0.75" />
- <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="11.25" PointY="16.5" />
- <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="24" />
- <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="3" PointY="28.75" />
- <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="5.25" PointY="20.125" />
- <EntityTypeShape EntityType="RemoteModel.MACHINE_STUDIO_VERSIONS" Width="1.5" PointX="11.25" PointY="52" />
- <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="6.75" PointY="56.5" />
- <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="9" PointY="61.25" />
- <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="12.25" PointY="44.5" />
- <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="13.125" />
- <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="29.75" />
- <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="32.75" />
- <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="7.75" PointY="38.625" />
- <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="0.75" PointY="1.5" />
- <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="12" PointY="8.5" />
+ <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="3.75" PointY="43.5" />
+ <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="8.25" PointY="19.875" />
+ <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="0.75" PointY="15.75" />
+ <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS" Width="1.5" PointX="1.5" PointY="7.625" />
+ <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_GROUPS" Width="1.5" PointX="3.75" PointY="8.125" />
+ <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS" Width="1.5" PointX="6" PointY="6.875" />
+ <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS_RECIPES" Width="1.5" PointX="8.25" PointY="15.75" />
+ <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="9" PointY="33.5" />
+ <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="3.75" PointY="61.75" />
+ <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="1.5" PointY="72.125" />
+ <EntityTypeShape EntityType="RemoteModel.CUSTOMER" Width="1.5" PointX="9" PointY="11.5" />
+ <EntityTypeShape EntityType="RemoteModel.DATA_STORE_ITEMS" Width="1.5" PointX="8.25" PointY="76.25" />
+ <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="1.5" PointY="36.5" />
+ <EntityTypeShape EntityType="RemoteModel.DISPENSER" Width="1.5" PointX="3.75" PointY="35.875" />
+ <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="59.125" />
+ <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="9" PointY="40.75" />
+ <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="20.25" />
+ <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="32.75" />
+ <EntityTypeShape EntityType="RemoteModel.FSE_VERSIONS" Width="1.5" PointX="11.25" PointY="42.625" />
+ <EntityTypeShape EntityType="RemoteModel.GLOBAL_DATA_STORE_ITEMS" Width="1.5" PointX="10.75" PointY="0.75" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWER_TYPES" Width="1.5" PointX="4.5" PointY="58.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWERS" Width="1.5" PointX="6.75" PointY="60" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSOR_TYPES" Width="1.5" PointX="6.5" PointY="80.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSORS" Width="1.5" PointX="8.75" PointY="64.125" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCER_TYPES" Width="1.5" PointX="1.5" PointY="80.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCERS" Width="1.5" PointX="3.75" PointY="67.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTOR_TYPES" Width="1.5" PointX="9.5" PointY="59.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTORS" Width="1.5" PointX="11.75" PointY="56" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROL_TYPES" Width="1.5" PointX="9.5" PointY="80.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROLS" Width="1.5" PointX="11.75" PointY="66.5" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSOR_TYPES" Width="1.5" PointX="6.5" PointY="88.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSORS" Width="1.5" PointX="8.75" PointY="72.125" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="67.875" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDER_TYPES" Width="1.5" PointX="6.5" PointY="84.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDERS" Width="1.5" PointX="8.75" PointY="68.25" />
+ <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="3.75" PointY="40.125" />
+ <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="6" PointY="32.125" />
+ <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="14.75" PointY="0.75" />
+ <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="11.25" PointY="16.375" />
+ <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="27" />
+ <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="3" PointY="2.625" />
+ <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="5.25" PointY="16" />
+ <EntityTypeShape EntityType="RemoteModel.MACHINE_STUDIO_VERSIONS" Width="1.5" PointX="11.25" PointY="31" />
+ <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="3.75" PointY="80.125" />
+ <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="6" PointY="64.875" />
+ <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="11.25" PointY="49.125" />
+ <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="24" />
+ <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="12.75" />
+ <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="29.875" />
+ <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="3.75" PointY="32.75" />
+ <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="3.75" PointY="74" />
+ <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="12" PointY="5.125" />
<EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="46.625" />
- <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="49.375" />
- <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS" Width="1.5" PointX="11.75" PointY="1" />
- <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS_VERSIONS" Width="1.5" PointX="14" PointY="1.125" />
- <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="15.25" />
- <EntityTypeShape EntityType="RemoteModel.RMLS_SPOOLS" Width="1.5" PointX="8.25" PointY="19.875" />
- <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="12" PointY="12.375" />
- <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="14.25" PointY="12.5" />
- <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="13.5" PointY="20.125" />
- <EntityTypeShape EntityType="RemoteModel.SITE" Width="1.5" PointX="3" PointY="1.125" />
- <EntityTypeShape EntityType="RemoteModel.SITES_CATALOGS" Width="1.5" PointX="5.25" PointY="3" />
- <EntityTypeShape EntityType="RemoteModel.SITES_RMLS" Width="1.5" PointX="5.25" PointY="16.375" />
- <EntityTypeShape EntityType="RemoteModel.SPOOL_TYPES" Width="1.5" PointX="9" PointY="5.125" />
- <EntityTypeShape EntityType="RemoteModel.SPOOL" Width="1.5" PointX="11.25" PointY="36" />
- <EntityTypeShape EntityType="RemoteModel.sysdiagram" Width="1.5" PointX="13.75" PointY="4.75" />
- <EntityTypeShape EntityType="RemoteModel.TANGO_UPDATES" Width="1.5" PointX="16.75" PointY="8.75" />
- <EntityTypeShape EntityType="RemoteModel.TANGO_VERSIONS" Width="1.5" PointX="14.25" PointY="39.875" />
- <EntityTypeShape EntityType="RemoteModel.TECH_CONTROLLERS" Width="1.5" PointX="17.75" PointY="13.75" />
- <EntityTypeShape EntityType="RemoteModel.TECH_DISPENSERS" Width="1.5" PointX="17.75" PointY="17.75" />
- <EntityTypeShape EntityType="RemoteModel.TECH_HEATERS" Width="1.5" PointX="18.75" PointY="0.75" />
- <EntityTypeShape EntityType="RemoteModel.TECH_IOS" Width="1.5" PointX="18.75" PointY="3.75" />
- <EntityTypeShape EntityType="RemoteModel.TECH_MONITORS" Width="1.5" PointX="18.75" PointY="8.75" />
- <EntityTypeShape EntityType="RemoteModel.TECH_VALVES" Width="1.5" PointX="19.75" PointY="13.75" />
- <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="9" PointY="24.125" />
- <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="14.25" PointY="27.5" />
- <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="9" PointY="2" />
+ <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="49.25" />
+ <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS" Width="1.5" PointX="5.75" PointY="1" />
+ <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS_VERSIONS" Width="1.5" PointX="8" PointY="1.125" />
+ <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="15" />
+ <EntityTypeShape EntityType="RemoteModel.RMLS_SPOOLS" Width="1.5" PointX="5.25" PointY="23.875" />
+ <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="12" PointY="9" />
+ <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="14.25" PointY="9.125" />
+ <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="13.5" PointY="20" />
+ <EntityTypeShape EntityType="RemoteModel.SITE" Width="1.5" PointX="3" PointY="29" />
+ <EntityTypeShape EntityType="RemoteModel.SITES_CATALOGS" Width="1.5" PointX="11.25" PointY="12.5" />
+ <EntityTypeShape EntityType="RemoteModel.SITES_RMLS" Width="1.5" PointX="5.25" PointY="20.25" />
+ <EntityTypeShape EntityType="RemoteModel.SPOOL_TYPES" Width="1.5" PointX="9" PointY="5.625" />
+ <EntityTypeShape EntityType="RemoteModel.SPOOL" Width="1.5" PointX="11.25" PointY="38.125" />
+ <EntityTypeShape EntityType="RemoteModel.sysdiagram" Width="1.5" PointX="5.75" PointY="12.75" />
+ <EntityTypeShape EntityType="RemoteModel.TANGO_UPDATES" Width="1.5" PointX="13.75" PointY="12.75" />
+ <EntityTypeShape EntityType="RemoteModel.TANGO_VERSIONS" Width="1.5" PointX="14.25" PointY="53.5" />
+ <EntityTypeShape EntityType="RemoteModel.TECH_CONTROLLERS" Width="1.5" PointX="15.75" PointY="12.75" />
+ <EntityTypeShape EntityType="RemoteModel.TECH_DISPENSERS" Width="1.5" PointX="16.75" PointY="0.75" />
+ <EntityTypeShape EntityType="RemoteModel.TECH_HEATERS" Width="1.5" PointX="16.75" PointY="3.75" />
+ <EntityTypeShape EntityType="RemoteModel.TECH_IOS" Width="1.5" PointX="16.75" PointY="6.75" />
+ <EntityTypeShape EntityType="RemoteModel.TECH_MONITORS" Width="1.5" PointX="17.75" PointY="11.75" />
+ <EntityTypeShape EntityType="RemoteModel.TECH_VALVES" Width="1.5" PointX="17.75" PointY="16.75" />
+ <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="9" PointY="27.75" />
+ <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="14.25" PointY="29.125" />
+ <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="9" PointY="24.625" />
<AssociationConnector Association="RemoteModel.FK_ACTION_LOGS_USERS" />
<AssociationConnector Association="RemoteModel.FK_ORGANIZATIONS_ADDRESSES" />
<AssociationConnector Association="RemoteModel.FK_USERS_ADDRESSES" />
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<StandByRequest>(container));
break;
+ case MessageType.AttemptThreadJoggingRequest:
+ HandleAttemptThreadJoggingRequest(MessageFactory.ParseTangoMessageFromContainer<AttemptThreadJoggingRequest>(container));
+ break;
}
}
@@ -1719,6 +1722,20 @@ namespace Tango.Emulations.Emulators
await Transporter.SendResponse(new StandByResponse(), request.Container.Token);
}
+ private async void HandleAttemptThreadJoggingRequest(TangoMessage<AttemptThreadJoggingRequest> 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
/// <param name="processParameters">The process parameters.</param>
/// <returns></returns>
Task ContinueThreadLoading(ProcessParametersTable processParameters);
+
+ /// <summary>
+ /// Attempts to jog the thread in order to check whether there are no thread breaking issues.
+ /// </summary>
+ /// <returns></returns>
+ Task AttemptThreadJogging();
}
}
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
index 464e0713f..83579d776 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();
@@ -2699,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;
@@ -4131,6 +4133,18 @@ namespace Tango.Integration.Operation
}, new TransportRequestConfig() { ShouldLog = true });
}
+ /// <summary>
+ /// Attempts to jog the thread in order to check whether there are no thread breaking issues.
+ /// </summary>
+ /// <returns></returns>
+ public async Task AttemptThreadJogging()
+ {
+ var r = await SendRequest<AttemptThreadJoggingRequest, AttemptThreadJoggingResponse>(new AttemptThreadJoggingRequest()
+ {
+
+ }, new TransportRequestConfig() { ShouldLog = true, Timeout = TimeSpan.FromSeconds(20) });
+ }
+
#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,
/// <summary>
///IFS
/// </summary>
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 {
/// </summary>
[pbr::OriginalName("FRONT_COVER_4_OPEN")] FrontCover4Open = 2005,
/// <summary>
- ///Cartridges door is open. Cannot start new job (Group = GeneralHardware, Category = Warning)
+ ///IFS door is open. Cannot start new job (Group = GeneralHardware, Category = Warning)
/// </summary>
[pbr::OriginalName("CARTRIDGES_COVER_OPEN")] CartridgesCoverOpen = 2006,
/// <summary>
@@ -427,7 +440,7 @@ namespace Tango.PMR.Diagnostics {
/// </summary>
[pbr::OriginalName("ELECTRICAL_CABINET_FANS_RPM_TOO_LOW")] ElectricalCabinetFansRpmTooLow = 2011,
/// <summary>
- ///Electrical cabinet fans stopped. Cannot execute job (Group = GeneralHardware, Category = Critical)
+ ///Electrical cabinet fans stopped. Cannot execute job (Group = GeneralHardware, Category = Warning)
/// </summary>
[pbr::OriginalName("ELECTRICAL_CABINET_FANS_STOPPED")] ElectricalCabinetFansStopped = 2012,
/// <summary>
@@ -467,6 +480,18 @@ namespace Tango.PMR.Diagnostics {
/// </summary>
[pbr::OriginalName("TEMPERATURE_MEASUREMENT_ERROR")] TemperatureMeasurementError = 2021,
/// <summary>
+ ///Cannot read the cartridge. Cannot perform ink filling (Group = GeneralHardware, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("RFID_READER_MALFUNCTION_INK_SLOT")] RfidReaderMalfunctionInkSlot = 2022,
+ /// <summary>
+ ///Cannot read the cartridge. Cannot replace waste cartridge (Group = GeneralHardware, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("RFID_READER_MALFUNCTION_WASTE_SLOT_1")] RfidReaderMalfunctionWasteSlot1 = 2023,
+ /// <summary>
+ ///Cannot read the cartridge. Cannot replace waste cartridge (Group = GeneralHardware, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("RFID_READER_MALFUNCTION_WASTE_SLOT_2")] RfidReaderMalfunctionWasteSlot2 = 2024,
+ /// <summary>
///Thread break. Cannot execute job (Group = ThreadFeedingSystem, Category = Error)
/// </summary>
[pbr::OriginalName("THREAD_BREAK")] ThreadBreak = 3000,
@@ -699,7 +724,7 @@ namespace Tango.PMR.Diagnostics {
/// </summary>
[pbr::OriginalName("DRYER_ZONE_1_OVERTEMPERATURE")] DryerZone1Overtemperature = 4005,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("DRYER_ZONE_2_OVERTEMPERATURE")] DryerZone2Overtemperature = 4006,
/// <summary>
@@ -719,19 +744,19 @@ namespace Tango.PMR.Diagnostics {
/// </summary>
[pbr::OriginalName("DRYER_THERMAL_CUTOFF")] DryerThermalCutoff = 4010,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("DRYER_HEATERS_ZONE_1_CURRENT_OUT_OF_RANGE")] DryerHeatersZone1CurrentOutOfRange = 4011,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("DRYER_HEATERS_ZONE_2_CURRENT_OUT_OF_RANGE")] DryerHeatersZone2CurrentOutOfRange = 4012,
/// <summary>
- ///Dryer zone current loop break. Cannot execute job (Group = Dryer, Category = Critical)
+ ///Dryer zone current loop break. Cannot execute job (Group = Dryer, Category = Error)
/// </summary>
[pbr::OriginalName("DRYER_HEATERS_ZONE_1_CURRENT_LOOP_BREAK")] DryerHeatersZone1CurrentLoopBreak = 4013,
/// <summary>
- ///Dryer zone current loop break. Cannot execute job (Group = Dryer, Category = Critical)
+ ///Dryer zone current loop break. Cannot execute job (Group = Dryer, Category = Error)
/// </summary>
[pbr::OriginalName("DRYER_HEATERS_ZONE_2_CURRENT_LOOP_BREAK")] DryerHeatersZone2CurrentLoopBreak = 4014,
/// <summary>
@@ -935,27 +960,27 @@ namespace Tango.PMR.Diagnostics {
/// </summary>
[pbr::OriginalName("DYEING_HEAD_CLEANING_HEAD_MOTOR_UNDERVOLTAGE")] DyeingHeadCleaningHeadMotorUndervoltage = 5042,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("DYEING_HEAD_ZONE_7_OVERTEMPERATURE")] DyeingHeadZone7Overtemperature = 5043,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("DYEING_HEAD_ZONE_8_OVERTEMPERATURE")] DyeingHeadZone8Overtemperature = 5044,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("DYEING_HEAD_ZONE_9_OVERTEMPERATURE")] DyeingHeadZone9Overtemperature = 5045,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("DYEING_HEAD_ZONE_10_OVERTEMPERATURE")] DyeingHeadZone10Overtemperature = 5046,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("DYEING_HEAD_ZONE_11_OVERTEMPERATURE")] DyeingHeadZone11Overtemperature = 5047,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("DYEING_HEAD_ZONE_12_OVERTEMPERATURE")] DyeingHeadZone12Overtemperature = 5048,
/// <summary>
@@ -1063,11 +1088,11 @@ namespace Tango.PMR.Diagnostics {
/// </summary>
[pbr::OriginalName("DYEING_HEAD_ZONE_12_CURRENT_LOOP_BREAK")] DyeingHeadZone12CurrentLoopBreak = 5074,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("DYEING_HEAD_BLOWER_1_OVERTEMPERATURE")] DyeingHeadBlower1Overtemperature = 5075,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("DYEING_HEAD_BLOWER_2_OVERTEMPERATURE")] DyeingHeadBlower2Overtemperature = 5076,
/// <summary>
@@ -1159,7 +1184,7 @@ namespace Tango.PMR.Diagnostics {
/// </summary>
[pbr::OriginalName("DYEING_HEAD_TUNNEL_LID_IS_OPEN")] DyeingHeadTunnelLidIsOpen = 5098,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("MIXER_OVERTEMPERATURE")] MixerOvertemperature = 6000,
/// <summary>
@@ -1763,11 +1788,11 @@ namespace Tango.PMR.Diagnostics {
/// </summary>
[pbr::OriginalName("INK_CARTRIDGE_RFID_TIMEOUT")] InkCartridgeRfidTimeout = 10001,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("NO_WASTE_CARTRIDGE_AVAILABLE")] NoWasteCartridgeAvailable = 10002,
/// <summary>
- ///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)
/// </summary>
[pbr::OriginalName("ALL_WASTE_CARTRIDGES_FULL")] AllWasteCartridgesFull = 10003,
/// <summary>
@@ -1778,6 +1803,50 @@ namespace Tango.PMR.Diagnostics {
///Cannot identify waste cartridge. Cannot execute job (Group = InkFillingSystem, Category = Error)
/// </summary>
[pbr::OriginalName("WASTE_CARTRIDGE_RFID_TIMEOUT")] WasteCartridgeRfidTimeout = 10005,
+ /// <summary>
+ ///Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("INK_CARTRIDGE_RFID_TAG_CANNOT_BE_READ")] InkCartridgeRfidTagCannotBeRead = 10006,
+ /// <summary>
+ ///Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("WASTE_CARTRIDGE_RFID_TAG_CANNOT_BE_READ")] WasteCartridgeRfidTagCannotBeRead = 10007,
+ /// <summary>
+ ///Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("INK_CARTRIDGE_RFID_TAG_IS_NOT_VALID")] InkCartridgeRfidTagIsNotValid = 10008,
+ /// <summary>
+ ///Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("WASTE_CARTRIDGE_RFID_TAG_IS_NOT_VALID")] WasteCartridgeRfidTagIsNotValid = 10009,
+ /// <summary>
+ ///Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("INK_CARTRIDGE_AUTHENTICATION_FAILED")] InkCartridgeAuthenticationFailed = 10010,
+ /// <summary>
+ ///Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("WASTE_CARTRIDGE_AUTHENTICATION_FAILED")] WasteCartridgeAuthenticationFailed = 10011,
+ /// <summary>
+ ///Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("INK_CARTRIDGE_IS_BLOCKED")] InkCartridgeIsBlocked = 10012,
+ /// <summary>
+ ///Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("WASTE_CARTRIDGE_IS_BLOCKED")] WasteCartridgeIsBlocked = 10013,
+ /// <summary>
+ ///Ink cartridge failure. Cannot perform ink filling (Group = InkFillingSystem, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("INK_CARTRIDGE_RFID_TAG_CANNOT_BE_UPDATED")] InkCartridgeRfidTagCannotBeUpdated = 10014,
+ /// <summary>
+ ///Waste cartridge failure. Cannot replace waste cartridge (Group = InkFillingSystem, Category = Error)
+ /// </summary>
+ [pbr::OriginalName("WASTE_CARTRIDGE_RFID_TAG_CANNOT_BE_UPDATED")] WasteCartridgeRfidTagCannotBeUpdated = 10015,
+ /// <summary>
+ ///Ink in cartridge is expired. Cannot perform ink filling (Group = InkFillingSystem, Category = Warning)
+ /// </summary>
+ [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 {
}
}
- /// <summary>Field number for the "Frequency" field.</summary>
- public const int FrequencyFieldNumber = 2;
- private uint frequency_;
- /// <summary>
- ///1/10/100/1000
- /// </summary>
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
- public uint Frequency {
- get { return frequency_; }
- set {
- frequency_ = value;
- }
- }
-
/// <summary>Field number for the "DeviceId" field.</summary>
- public const int DeviceIdFieldNumber = 3;
+ public const int DeviceIdFieldNumber = 2;
private uint deviceId_;
+ /// <summary>
+ ///uint32 Frequency = 2; //1/10/100/1000
+ /// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public uint DeviceId {
get { return deviceId_; }
@@ -125,7 +111,7 @@ namespace Tango.PMR.EmbeddedParameters {
}
/// <summary>Field number for the "ModuleDeviceId" field.</summary>
- 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 {
}
/// <summary>Field number for the "AlarmValue" field.</summary>
- 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 {
}
/// <summary>Field number for the "AlarmDirection" field.</summary>
- 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 {
}
/// <summary>Field number for the "Severity" field.</summary>
- 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 {
}
}
- /// <summary>Field number for the "Predecessor" field.</summary>
- public const int PredecessorFieldNumber = 8;
- private uint predecessor_;
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
- public uint Predecessor {
- get { return predecessor_; }
- set {
- predecessor_ = value;
- }
- }
-
/// <summary>Field number for the "DebounceValue" field.</summary>
- public const int DebounceValueFieldNumber = 9;
+ public const int DebounceValueFieldNumber = 7;
private uint debounceValue_;
+ /// <summary>
+ ///uint32 Predecessor = 7;
+ /// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public uint DebounceValue {
get { return debounceValue_; }
@@ -191,7 +169,7 @@ namespace Tango.PMR.EmbeddedParameters {
}
/// <summary>Field number for the "EventType" field.</summary>
- 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 {
}
/// <summary>Field number for the "EventName" field.</summary>
- 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 {
}
/// <summary>Field number for the "IsPersistent" field.</summary>
- 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/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 {
}
}
+ /// <summary>Field number for the "ArcHeadCleaningMotorSpeed" field.</summary>
+ 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 {
}
}
- /// <summary>Field number for the "ArcHeadCleaningMotorSpeed" field.</summary>
- 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;
- }
}
}
}
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 @@
<Compile Include="TCC\DetectionColorFile.cs" />
<Compile Include="TCC\DetectionInput.cs" />
<Compile Include="TCC\DetectionOutput.cs" />
+ <Compile Include="ThreadLoading\AttemptThreadJoggingRequest.cs" />
+ <Compile Include="ThreadLoading\AttemptThreadJoggingResponse.cs" />
<Compile Include="ThreadLoading\ContinueThreadLoadingRequest.cs" />
<Compile Include="ThreadLoading\ContinueThreadLoadingResponse.cs" />
<Compile Include="ThreadLoading\StartThreadLoadingRequest.cs" />
@@ -483,7 +485,7 @@
</PropertyGroup>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
+ <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
</Project> \ 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 {
+
+ /// <summary>Holder for reflection information generated from AttemptThreadJoggingRequest.proto</summary>
+ public static partial class AttemptThreadJoggingRequestReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for AttemptThreadJoggingRequest.proto</summary>
+ 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<AttemptThreadJoggingRequest> {
+ private static readonly pb::MessageParser<AttemptThreadJoggingRequest> _parser = new pb::MessageParser<AttemptThreadJoggingRequest>(() => new AttemptThreadJoggingRequest());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<AttemptThreadJoggingRequest> 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 {
+
+ /// <summary>Holder for reflection information generated from AttemptThreadJoggingResponse.proto</summary>
+ public static partial class AttemptThreadJoggingResponseReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for AttemptThreadJoggingResponse.proto</summary>
+ 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<AttemptThreadJoggingResponse> {
+ private static readonly pb::MessageParser<AttemptThreadJoggingResponse> _parser = new pb::MessageParser<AttemptThreadJoggingResponse>(() => new AttemptThreadJoggingResponse());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<AttemptThreadJoggingResponse> 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
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<AlarmSourceType>();
- 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<DebugLogCategory>();
- 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();
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 @@
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
- <None Include="..\..\Resources\Events Revisions\Tango alarm events handling chart_Rev25.xlsx">
- <Link>Tango alarm events handling chart_Rev25.xlsx</Link>
+ <None Include="..\..\Resources\Events Revisions\Tango alarm events handling chart_Rev27.xlsx">
+ <Link>Tango alarm events handling chart_Rev27.xlsx</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
- <None Include="..\..\Resources\Events Revisions\Tango alarm events handling chart_Rev25_Persistent.xlsx">
- <Link>Tango alarm events handling chart_Rev25_Persistent.xlsx</Link>
- </None>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>