aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.Common/PPCSettings.cs
blob: 03215553b4aa17e6e7b4dda06ea52be5bfb8f51c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
using Tango.BL.Enumerations;
using Tango.Integration.Operation;
using Tango.Logging;
using Tango.PMR.Integration;
using Tango.PMR.Printing;
using Tango.PPC.Common.Lubrication;
using Tango.Settings;
using Tango.Transport.Adapters;
using Tango.Web;

namespace Tango.PPC.Common
{
    public enum EmulatorMode
    {
        InMemory,
        ExternalTCP,
    }

    /// <summary>
    /// Represents the main PPC settings.
    /// </summary>
    /// <seealso cref="Tango.Settings.SettingsBase" />
    public class PPCSettings : SettingsBase
    {
        private int _gradientGenerationResolution;

        /// <summary>
        /// Gets or sets the state of the application.
        /// </summary>
        public ApplicationStates ApplicationState { get; set; }

        /// <summary>
        /// Gets or sets the machine scanning timeout seconds.
        /// </summary>
        public int MachineScanningTimeoutSeconds { get; set; }

        /// <summary>
        /// Gets or sets the name of the WiFi network to automatically connect to when the application starts.
        /// </summary>
        public String AutoConnectWiFiName { get; set; }

        /// <summary>
        /// Gets or sets the password of the WiFi network to automatically connect to when the application starts.
        /// </summary>
        public String AutoConnectWiFiPassword { get; set; }

        /// <summary>
        /// Gets or sets the embedded COM port if not specified will use auto scanning.
        /// </summary>
        public String EmbeddedComPort { get; set; }

        /// <summary>
        /// Gets or sets the embedded USB serial baud rate when using USB and Eureka.
        /// </summary>
        public UsbSerialBaudRates EmbeddedBaudRate { get; set; }

        /// <summary>
        /// Gets or sets the embedded device scanning hint.
        /// </summary>
        public String EmbeddedDeviceHint { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether [enable external bridge].
        /// </summary>
        public bool EnableExternalBridge { get; set; }

        /// <summary>
        /// Gets or sets the external bridge password.
        /// </summary>
        public String ExternalBridgePassword { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether [enable hot spot].
        /// </summary>
        public bool EnableHotSpot { get; set; }

        /// <summary>
        /// Gets or sets the hot spot password.
        /// </summary>
        public String HotSpotPassword { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to enable team viewer service.
        /// </summary>
        public bool EnableRemoteAssistance { get; set; }

        /// <summary>
        /// Gets or sets the deployment slot.
        /// </summary>
        public DeploymentSlot DeploymentSlot { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to enable the watch dog process.
        /// </summary>
        public bool EnableWatchDog { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to enable the technician mode when the application starts.
        /// </summary>
        public bool EnableTechnicianModeByDefault { get; set; }

        /// <summary>
        /// Gets or sets the job upload strategy.
        /// </summary>
        public JobUploadStrategy JobUploadStrategy { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to enable gradient generation.
        /// </summary>
        public bool EnableGradientGeneration { get; set; }

        /// <summary>
        /// Gets or sets the gradient generation resolution.
        /// </summary>
        public int GradientGenerationResolution { get => Math.Max(40, _gradientGenerationResolution); set => _gradientGenerationResolution = value; }

        /// <summary>
        /// Gets or sets a value indicating whether to enable the application lock screen.
        /// </summary>
        public bool EnableLockScreen { get; set; }

        /// <summary>
        /// Gets or sets the lock screen timeout.
        /// </summary>
        public TimeSpan LockScreenTimeout { get; set; }

        /// <summary>
        /// Gets or sets the lock screen password.
        /// </summary>
        public String LockScreenPassword { get; set; }

        /// <summary>
        /// Gets or sets the enable emergency notifications.
        /// </summary>
        public bool EnableEmergencyNotifications { get; set; }

        /// <summary>
        /// Gets or sets the emergency COM port.
        /// </summary>
        public String EmergencyComPort { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to enable the job liquid quantity validation.
        /// </summary>
        public bool EnableJobLiquidQuantityValidation { get; set; }

        /// <summary>
        /// Gets or sets the job number of units method.
        /// </summary>
        public JobUnitsMethods JobUnitsMethod { get; set; }

        /// <summary>
        /// Gets or sets the loaded RML unique identifier.
        /// </summary>
        public String LoadedRmlGuid { get; set; }

        /// <summary>
        /// Gets or sets the default RML unique identifier.
        /// </summary>
        public String DefaultRmlGuid { get; set; }

        /// <summary>
        /// Gets or sets the default color space unique identifier.
        /// </summary>
        public List<ColorSpaces> SupportedColorSpaces { get; set; }

        /// <summary>
        /// Gets or sets the target job types.
        /// </summary>
        public List<JobTypes> SupportedJobTypes { get; set; }

        /// <summary>
        /// Gets or sets the default spool type unique identifier.
        /// </summary>
        public String SpoolTypeGuid { get; set; }

        /// <summary>
        /// Gets or sets the default length of the segment.
        /// </summary>
        public int DefaultSegmentLength { get; set; }

        /// <summary>
        /// Gets or sets the previous application version.
        /// </summary>
        public String PreviousApplicationVersion { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether synchronize jobs with twine server.
        /// </summary>
        public bool SynchronizeJobs { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether synchronize diagnostics data.
        /// </summary>
        public bool SynchronizeDiagnostics { get; set; }

        /// <summary>
        /// Gets or sets the synchronization interval.
        /// </summary>
        public TimeSpan SynchronizationInterval { get; set; }

        /// <summary>
        /// Gets or sets the known firmware version.
        /// </summary>
        public String FirmwareVersion { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to display the power up screen.
        /// </summary>
        public bool DisplayPowerUpScreen { get; set; }

        /// <summary>
        /// Gets or sets the power up screen timeout.
        /// </summary>
        public TimeSpan PowerUpScreenTimeout { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to automatically check for software and database (quick) updates.
        /// </summary>
        public bool AutoCheckForUpdates { get; set; }

        /// <summary>
        /// Gets or sets the automatic update check interval.
        /// </summary>
        public TimeSpan AutoUpdateCheckInterval { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to enable the automatic thread loading support.
        /// </summary>
        public bool EnableAutomaticThreadLoading { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to display the thread loading screen.
        /// </summary>
        public bool DisplayAutomaticThreadLoadingScreen { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to enable embedded debug logs.
        /// </summary>
        public bool EnableEmbeddedDebugLogs { get; set; }

        /// <summary>
        /// Gets or sets the TCP transport adapter write mode.
        /// </summary>
        public TcpTransportAdapterWriteMode TcpTransportAdapterWriteMode { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to expose the external bridge service via SignalR.
        /// </summary>
        public bool EnableExternalBridgeSignalR { get; set; }

        /// <summary>
        /// Gets or sets the name of the exteral bridge SignalR hub.
        /// </summary>
        public String ExternalBridgeSignalRHub { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to enable the internal remote desktop service.
        /// </summary>
        public bool EnableRemoteDesktop { get; set; }

        /// <summary>
        /// Gets or sets the internal remote desktop service frame rate (1-20).
        /// </summary>
        public int RemoteDesktopFrameRate { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to enable insights.
        /// </summary>
        public bool InsightsEnabled { get; set; }

        /// <summary>
        /// Gets or sets the insights sampling interval.
        /// </summary>
        public TimeSpan InsightsSamplingInterval { get; set; }

        /// <summary>
        /// Gets or sets the insights storage cleanup interval.
        /// </summary>
        public TimeSpan InsightsStorageCleanupInterval { get; set; }

        /// <summary>
        /// Gets or sets the duration of the insights maximum storage duration.
        /// </summary>
        public TimeSpan InsightsMaxStorageDuration { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to bypass Internet connectivity checks before attempting to perform an update for example.
        /// </summary>
        public bool BypassInternetConnectivityCheck { get; set; }

        /// <summary>
        /// Gets or sets the last database backup file that was generated before application update.
        /// If updater utility was successful, this file should be deleted. Otherwise should be restored.
        /// </summary>
        public String LastDatabaseBackupFile { get; set; }

        /// <summary>
        /// Gets or sets the RMLs lubrication levels.
        /// </summary>
        public List<RmlLubricationLevel> LubricationLevels { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to enable the raising of the spool replacement dialog.
        /// </summary>
        public bool EnableSpoolReplacementDialog { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether enable the proxifier process.
        /// </summary>
        public bool EnableProxifier { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to use the new jobs module.
        /// </summary>
        public bool UseJobsModuleV2 { get; set; }

        public ColorSpaces? DefaultTabColorSpace
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the fine tuning trial length in meters.
        /// </summary>
        public int FineTuningTrialLengthMeters { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to enable the screen saver.
        /// </summary>
        public bool EnableScreenSaver { get; set; }

        private int _screenSaverStartDuration;
        /// <summary>
        /// Gets or sets the start duration of the screen saver.
        /// </summary>
        public int ScreenSaverStartDuration
        {
            get { return _screenSaverStartDuration; }
            set
            {
                _screenSaverStartDuration = Math.Max(value, 1);
            }
        }

        /// <summary>
        /// Gets or sets a value indicating whether to enable remote job uploads.
        /// </summary>
        public bool EnableRemoteJobUpload { get; set; }

        /// <summary>
        /// Gets or sets the fine tuning minimum limit dL to avoid change L.
        /// </summary>
        public double FineTuningMinLimitdL { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether to force full screen mode on TwineX4.
        /// </summary>
        public bool ForceTouchMode { get; set; }

        /// <summary>
        /// Gets or sets the emulator mode.
        /// </summary>
        public EmulatorMode EmulatorMode { get; set; }

        /// <summary>
        /// Gets or sets the storage root path.
        /// </summary>
        public String StorageRootPath { get; set; }

        /// <summary>
        /// Gets the machine service address.
        /// </summary>
        /// <returns></returns>
        public String GetMachineServiceAddress()
        {
            return DeploymentSlot.ToAddress();
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="PPCSettings"/> class.
        /// </summary>
        public PPCSettings()
        {
            EmulatorMode = EmulatorMode.InMemory;
            LubricationLevels = new List<RmlLubricationLevel>();
            JobUploadStrategy = JobUploadStrategy.JobDescriptionFile;
            FineTuningTrialLengthMeters = 200;
            FineTuningMinLimitdL = 0.0;
            EnableGradientGeneration = true;
            GradientGenerationResolution = 40;
            MachineScanningTimeoutSeconds = 20;
            EmbeddedComPort = "COM10";

#if Eureka
            EmbeddedBaudRate = UsbSerialBaudRates.BR_1000000;
#else
            EmbeddedBaudRate = UsbSerialBaudRates.BR_115200;
#endif

            EmbeddedDeviceHint = "Tango USB Serial Port";
            ExternalBridgePassword = "Aa123456";
            HotSpotPassword = "Aa123456";
            LockScreenTimeout = TimeSpan.FromMinutes(10);
            LockScreenPassword = "1111";
            DeploymentSlot = DeploymentSlot.DEV;
            EnableWatchDog = true;
            EnableEmergencyNotifications = true;
            EmergencyComPort = "COM2";
            EnableJobLiquidQuantityValidation = true;
            JobUnitsMethod = JobUnitsMethods.Device;
            DefaultSegmentLength = 100;
            SupportedColorSpaces = new List<ColorSpaces>();
            SupportedJobTypes = new List<JobTypes>();
            PreviousApplicationVersion = "1.0.0.0";
            SynchronizeJobs = false;
            SynchronizeDiagnostics = true;
            SynchronizationInterval = TimeSpan.FromMinutes(60);
            FirmwareVersion = "1.0.0.0";
            DisplayPowerUpScreen = true;
            PowerUpScreenTimeout = TimeSpan.FromSeconds(60);
            AutoCheckForUpdates = true;
            AutoUpdateCheckInterval = TimeSpan.FromMinutes(30);
            EnableAutomaticThreadLoading = true;
            DisplayAutomaticThreadLoadingScreen = true;
            EnableEmbeddedDebugLogs = true;
            TcpTransportAdapterWriteMode = TcpTransportAdapterWriteMode.Interval;
            EnableExternalBridgeSignalR = true;
            ExternalBridgeSignalRHub = "ExternalBridgeHub";
            EnableRemoteDesktop = true;
            RemoteDesktopFrameRate = 5;
            BypassInternetConnectivityCheck = false;

            InsightsEnabled = true;
            InsightsSamplingInterval = TimeSpan.FromMinutes(1);
            InsightsMaxStorageDuration = TimeSpan.FromDays(30);
            InsightsStorageCleanupInterval = TimeSpan.FromMinutes(60);

            EnableSpoolReplacementDialog = true;
            EnableProxifier = true;
            UseJobsModuleV2 = true;
            DefaultTabColorSpace = ColorSpaces.CMYK;
            ScreenSaverStartDuration = 5;
            EnableScreenSaver = true;
            EnableRemoteJobUpload = true;
        }
    }
}