using System; using System.Collections.Generic; using System.ComponentModel; 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.PPC.Common.SMS; using Tango.Settings; using Tango.Transport.Adapters; using Tango.Web; namespace Tango.PPC.Common { public enum EmulatorMode { InMemory, ExternalTCP, } public enum PowerSavingModes { [Description("30 Minutes")] Minimum = 30, [Description("1 Hour")] Default = 60, [Description("2 Hours")] Maximum = 160, [Description("Never")] Never = 0, } /// /// Represents the main PPC settings. /// /// public class PPCSettings : SettingsBase { private int _gradientGenerationResolution; /// /// Gets or sets the state of the application. /// public ApplicationStates ApplicationState { get; set; } /// /// Gets or sets the machine scanning timeout seconds. /// public int MachineScanningTimeoutSeconds { get; set; } /// /// Gets or sets the name of the WiFi network to automatically connect to when the application starts. /// public String AutoConnectWiFiName { get; set; } /// /// Gets or sets the password of the WiFi network to automatically connect to when the application starts. /// public String AutoConnectWiFiPassword { get; set; } /// /// Gets or sets the embedded COM port if not specified will use auto scanning. /// public String EmbeddedComPort { get; set; } /// /// Gets or sets the embedded USB serial baud rate when using USB and Eureka. /// public UsbSerialBaudRates EmbeddedBaudRate { get; set; } /// /// Gets or sets the embedded device scanning hint. /// public String EmbeddedDeviceHint { get; set; } /// /// Gets or sets a value indicating whether [enable external bridge]. /// public bool EnableExternalBridge { get; set; } /// /// Gets or sets the external bridge password. /// public String ExternalBridgePassword { get; set; } /// /// Gets or sets a value indicating whether [enable hot spot]. /// public bool EnableHotSpot { get; set; } /// /// Gets or sets the hot spot password. /// public String HotSpotPassword { get; set; } /// /// Gets or sets a value indicating whether to enable team viewer service. /// public bool EnableRemoteAssistance { get; set; } /// /// Gets or sets the deployment slot. /// public DeploymentSlot DeploymentSlot { get; set; } /// /// Gets or sets a value indicating whether to enable the watch dog process. /// public bool EnableWatchDog { get; set; } /// /// Gets or sets a value indicating whether to enable the technician mode when the application starts. /// public bool EnableTechnicianModeByDefault { get; set; } /// /// Gets or sets the job upload strategy. /// public JobUploadStrategy JobUploadStrategy { get; set; } /// /// Gets or sets a value indicating whether to enable gradient generation. /// public bool EnableGradientGeneration { get; set; } /// /// Gets or sets the gradient generation resolution. /// public int GradientGenerationResolution { get => Math.Max(40, _gradientGenerationResolution); set => _gradientGenerationResolution = value; } /// /// Gets or sets a value indicating whether to enable the application lock screen. /// public bool EnableLockScreen { get; set; } /// /// Gets or sets the lock screen timeout. /// public TimeSpan LockScreenTimeout { get; set; } /// /// Gets or sets the lock screen password. /// public String LockScreenPassword { get; set; } /// /// Gets or sets the enable emergency notifications. /// public bool EnableEmergencyNotifications { get; set; } /// /// Gets or sets the emergency COM port. /// public String EmergencyComPort { get; set; } /// /// Gets or sets a value indicating whether to enable the job liquid quantity validation. /// public bool EnableJobLiquidQuantityValidation { get; set; } /// /// Gets or sets the job number of units method. /// public JobUnitsMethods JobUnitsMethod { get; set; } /// /// Gets or sets the loaded RML unique identifier. /// public String LoadedRmlGuid { get; set; } /// /// Gets or sets the default RML unique identifier. /// public String DefaultRmlGuid { get; set; } /// /// Gets or sets the default color space unique identifier. /// public List SupportedColorSpaces { get; set; } /// /// Gets or sets the target job types. /// public List SupportedJobTypes { get; set; } /// /// Gets or sets the default spool type unique identifier. /// public String SpoolTypeGuid { get; set; } /// /// Gets or sets the default length of the segment. /// public int DefaultSegmentLength { get; set; } /// /// Gets or sets the previous application version. /// public String PreviousApplicationVersion { get; set; } /// /// Gets or sets a value indicating whether synchronize jobs with twine server. /// public bool SynchronizeJobs { get; set; } /// /// Gets or sets a value indicating whether synchronize diagnostics data. /// public bool SynchronizeDiagnostics { get; set; } /// /// Gets or sets the synchronization interval. /// public TimeSpan SynchronizationInterval { get; set; } /// /// Gets or sets the known firmware version. /// public String FirmwareVersion { get; set; } /// /// Gets or sets a value indicating whether to display the power up screen. /// public bool DisplayPowerUpScreen { get; set; } /// /// Gets or sets the power up screen timeout. /// public TimeSpan PowerUpScreenTimeout { get; set; } /// /// Gets or sets a value indicating whether to automatically check for software and database (quick) updates. /// public bool AutoCheckForUpdates { get; set; } /// /// Gets or sets the automatic update check interval. /// public TimeSpan AutoUpdateCheckInterval { get; set; } /// /// Gets or sets a value indicating whether to enable the automatic thread loading support. /// public bool EnableAutomaticThreadLoading { get; set; } /// /// Gets or sets a value indicating whether to display the thread loading screen. /// public bool DisplayAutomaticThreadLoadingScreen { get; set; } /// /// Gets or sets a value indicating whether to enable embedded debug logs. /// public bool EnableEmbeddedDebugLogs { get; set; } /// /// Gets or sets the TCP transport adapter write mode. /// public TcpTransportAdapterWriteMode TcpTransportAdapterWriteMode { get; set; } /// /// Gets or sets a value indicating whether to expose the external bridge service via SignalR. /// public bool EnableExternalBridgeSignalR { get; set; } /// /// Gets or sets the name of the exteral bridge SignalR hub. /// public String ExternalBridgeSignalRHub { get; set; } /// /// Gets or sets a value indicating whether to enable the internal remote desktop service. /// public bool EnableRemoteDesktop { get; set; } /// /// Gets or sets the internal remote desktop service frame rate (1-20). /// public int RemoteDesktopFrameRate { get; set; } /// /// Gets or sets a value indicating whether to enable insights. /// public bool InsightsEnabled { get; set; } /// /// Gets or sets the insights sampling interval. /// public TimeSpan InsightsSamplingInterval { get; set; } /// /// Gets or sets the insights storage cleanup interval. /// public TimeSpan InsightsStorageCleanupInterval { get; set; } /// /// Gets or sets the duration of the insights maximum storage duration. /// public TimeSpan InsightsMaxStorageDuration { get; set; } /// /// Gets or sets a value indicating whether to bypass Internet connectivity checks before attempting to perform an update for example. /// public bool BypassInternetConnectivityCheck { get; set; } /// /// 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. /// public String LastDatabaseBackupFile { get; set; } /// /// Gets or sets the RMLs lubrication levels. /// public List LubricationLevels { get; set; } /// /// Gets or sets a value indicating whether to enable the raising of the spool replacement dialog. /// public bool EnableSpoolReplacementDialog { get; set; } /// /// Gets or sets a value indicating whether enable the proxifier process. /// public bool EnableProxifier { get; set; } /// /// Gets or sets a value indicating whether to use the new jobs module. /// public bool UseJobsModuleV2 { get; set; } public ColorSpaces? DefaultTabColorSpace { get; set; } /// /// Gets or sets the fine tuning trial length in meters. /// public int FineTuningTrialLengthMeters { get; set; } /// /// Gets or sets a value indicating whether to enable the screen saver. /// public bool EnableScreenSaver { get; set; } private int _screenSaverStartDuration; /// /// Gets or sets the start duration of the screen saver. /// public int ScreenSaverStartDuration { get { return _screenSaverStartDuration; } set { _screenSaverStartDuration = Math.Max(value, 1); } } /// /// Gets or sets a value indicating whether to enable remote job uploads. /// public bool EnableRemoteJobUpload { get; set; } /// /// Gets or sets the fine tuning minimum limit dL to avoid change L. /// public double FineTuningMinLimitdL { get; set; } /// /// Gets or sets a value indicating whether to force full screen mode on TwineX4. /// public bool ForceTouchMode { get; set; } /// /// Gets or sets the emulator mode. /// public EmulatorMode EmulatorMode { get; set; } /// /// Gets or sets the storage root path. /// public String StorageRootPath { get; set; } /// /// Gets the machine service address. /// /// public String GetMachineServiceAddress() { return DeploymentSlot.ToAddress(); } /// /// Gets or sets the power saving mode idle. /// public PowerSavingModes PowerSavingModeIdle { get; set; } /// /// Gets or sets the power saving mode power off. /// public PowerSavingModes PowerSavingModePowerOff { get; set; } /// /// Gets or sets a value indicating whether to enable the jerrican change popup. /// public bool EnableJerricanChangePopup { get; set; } /// /// Gets or sets the SMS notification settings. /// public SMSNotificationSettings SMSNotificationSettings { get; set; } /// /// Gets or sets a value indicating whether to enable the machine buzzer. /// public bool EnableBuzzer { get; set; } /// /// Gets or sets the duration of the machine buzzer. /// public int BuzzerDuration { get; set; } /// /// Gets or sets a value indicating whether enable white thread skip. /// public bool EnableWhiteThreadSkip { get; set; } /// /// Gets or sets the production data start time. /// public int ProductionDataStartTimeHours { get; set; } public int ProductionDataRefreshRateSeconds { get; set; } /// /// Initializes a new instance of the class. /// public PPCSettings() { ProductionDataStartTimeHours = 6; ProductionDataRefreshRateSeconds = 60; EnableWhiteThreadSkip = false; BuzzerDuration = 30; EnableJerricanChangePopup = true; PowerSavingModeIdle = PowerSavingModes.Default; PowerSavingModePowerOff = PowerSavingModes.Maximum; EmulatorMode = EmulatorMode.InMemory; LubricationLevels = new List(); 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(); SupportedJobTypes = new List(); 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; SMSNotificationSettings = new SMSNotificationSettings(); } } }