diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-11-09 23:34:01 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-11-09 23:34:01 +0200 |
| commit | e7cbb2ad47498bb072ee293baaf7fc9e2999fbec (patch) | |
| tree | 073fe0b1fee57246dd639c2f21dc6b175e197a23 /Software | |
| parent | f42acf4a2513bfb156f3323d2cd9dadf67809220 (diff) | |
| parent | 313970208cf06fe7925e41a9479e619fa1aca7f6 (diff) | |
| download | Tango-e7cbb2ad47498bb072ee293baaf7fc9e2999fbec.tar.gz Tango-e7cbb2ad47498bb072ee293baaf7fc9e2999fbec.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software')
153 files changed, 4208 insertions, 1650 deletions
diff --git a/Software/DB/PPC/Tango.mdf b/Software/DB/PPC/Tango.mdf Binary files differindex 5c2d6f294..bfb58b8b9 100644 --- a/Software/DB/PPC/Tango.mdf +++ b/Software/DB/PPC/Tango.mdf diff --git a/Software/DB/PPC/Tango_log.ldf b/Software/DB/PPC/Tango_log.ldf Binary files differindex 7da1b17b5..734014f1e 100644 --- a/Software/DB/PPC/Tango_log.ldf +++ b/Software/DB/PPC/Tango_log.ldf diff --git a/Software/DB/TCC/TCC.mdf b/Software/DB/TCC/TCC.mdf Binary files differindex 6a002658b..67f699f61 100644 --- a/Software/DB/TCC/TCC.mdf +++ b/Software/DB/TCC/TCC.mdf diff --git a/Software/DB/TCC/TCC_log.ldf b/Software/DB/TCC/TCC_log.ldf Binary files differindex a4e235de4..390749bbf 100644 --- a/Software/DB/TCC/TCC_log.ldf +++ b/Software/DB/TCC/TCC_log.ldf diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf Binary files differindex 20a7f0234..276543dab 100644 --- a/Software/DB/Tango.mdf +++ b/Software/DB/Tango.mdf diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf Binary files differindex 8f1f49ea0..faf2a6f8c 100644 --- a/Software/DB/Tango_log.ldf +++ b/Software/DB/Tango_log.ldf 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 Binary files differnew file mode 100644 index 000000000..6044e0ef0 --- /dev/null +++ b/Software/Stubs Collection/alarm generator/alarm_gen.exe 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="<AI_DICTS>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="<AI_DICTS>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 <> 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 Binary files differindex 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 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 Binary files differnew file mode 100644 index 000000000..5d536e7ae --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/thread_loading.png 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 Binary files differnew file mode 100644 index 000000000..3b2f58620 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/1.jpg 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 Binary files differnew file mode 100644 index 000000000..a2f5ae568 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/2.jpg 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 Binary files differnew file mode 100644 index 000000000..6069e9c29 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/3.jpg 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 Binary files differnew file mode 100644 index 000000000..7588d68e2 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/DryerClose/4.jpg 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 Binary files differnew file mode 100644 index 000000000..68921f1ca --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/1.JPG 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 Binary files differnew file mode 100644 index 000000000..a8b5d9ba4 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/2.JPG 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 Binary files differnew file mode 100644 index 000000000..407f1eae6 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/3.JPG 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 Binary files differnew file mode 100644 index 000000000..575066c23 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/4.JPG 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 Binary files differnew file mode 100644 index 000000000..68921f1ca --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/1.jpg 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 Binary files differnew file mode 100644 index 000000000..a8b5d9ba4 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/2.jpg 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 Binary files differnew file mode 100644 index 000000000..407f1eae6 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/3.jpg 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 Binary files differnew file mode 100644 index 000000000..575066c23 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/4.jpg 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 Binary files differnew file mode 100644 index 000000000..fa2c8312d --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/FeedingUnits/arc/5.jpg 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 Binary files differnew file mode 100644 index 000000000..8d58771d4 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/GuidingUnits/1.JPG 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 Binary files differnew file mode 100644 index 000000000..81aa412ec --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/1.jpg 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 Binary files differnew file mode 100644 index 000000000..68921f1ca --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/2.JPG 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 Binary files differnew file mode 100644 index 000000000..a8b5d9ba4 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/3.JPG 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 Binary files differnew file mode 100644 index 000000000..9f200198d --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/4.JPG 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 Binary files differnew file mode 100644 index 000000000..fa2c8312d --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/5.JPG 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 Binary files differnew file mode 100644 index 000000000..7956b0695 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/6.JPG 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 Binary files differnew file mode 100644 index 000000000..4ca8677cd --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/ReadyForLoading/arc/7.jpg 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 Binary files differnew file mode 100644 index 000000000..f41898bc1 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/TS1800_CloseUp_Feeder_P.jpg 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 Binary files differnew file mode 100644 index 000000000..212edc547 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/NewThread/machine_full.jpg 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 Binary files differnew file mode 100644 index 000000000..d8da5726d --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/1.jpg 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 Binary files differnew file mode 100644 index 000000000..a8b5d9ba4 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/2.jpg 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 Binary files differnew file mode 100644 index 000000000..86dd6f397 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/3.jpg 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 Binary files differnew file mode 100644 index 000000000..9d36f3642 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/4.jpg 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 Binary files differnew file mode 100644 index 000000000..6ac67aa46 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/ThreadLoading/TheDryer/5.jpg 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 Binary files differnew file mode 100644 index 000000000..51dbc42ba --- /dev/null +++ b/Software/Visual_Studio/Resources/Events Revisions/Tango alarm events handling chart_Rev27.xlsx 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> |
