diff options
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.Common/Connection')
| -rw-r--r-- | Software/Visual_Studio/PPC/Tango.PPC.Common/Connection/DefaultMachineProvider.cs | 64 |
1 files changed, 64 insertions, 0 deletions
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 5b85aab52..8ca943b8c 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Connection/DefaultMachineProvider.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Connection/DefaultMachineProvider.cs @@ -118,6 +118,70 @@ namespace Tango.PPC.Common.Connection } } + public static async Task<IMachineOperator> CreateMinimalMachineOperator() + { + var machineOperator = new MachineOperator(); + machineOperator.EnableDiagnostics = false; + machineOperator.EnableEmbeddedDebugging = false; + machineOperator.EnableEventsNotification = false; + machineOperator.EnableJobResume = false; + + LogManager.Default.Log("Starting machine connection procedure..."); + + var settings = SettingsManager.Default.GetOrCreate<PPCSettings>(); + + var demo = settings.DemoMode; + + if (!demo) + { + if (String.IsNullOrWhiteSpace(settings.EmbeddedComPort)) + { + TimeSpan timeout = TimeSpan.FromSeconds(SettingsManager.Default.GetOrCreate<PPCSettings>().MachineScanningTimeoutSeconds); + + LogManager.Default.Log("Scanning for machine on available serial ports..."); + Transport.Discovery.UsbCommunicationScanner<ConnectRequest, ConnectResponse> scanner = new Transport.Discovery.UsbCommunicationScanner<ConnectRequest, ConnectResponse>(UsbSerialBaudRates.BR_115200); + var response = await scanner.Scan(new ConnectRequest() { Password = "1234" }, timeout); + + LogManager.Default.Log("Machine discovered on port: " + response.Adapter.Address); + LogManager.Default.Log("Device Information:"); + LogManager.Default.Log(response.Response.DeviceInformation.ToJsonString()); + + LogManager.Default.Log("Disconnecting machine operator..."); + machineOperator.Adapter = response.Adapter; + machineOperator.JobHandlingMode = JobHandlerModes.SettingUp; + LogManager.Default.Log("Connecting machine operator..."); + await machineOperator.Connect(); + } + else + { + LogManager.Default.Log($"Connecting to machine on {settings.EmbeddedComPort}..."); + + UsbTransportAdapter adapter = new UsbTransportAdapter(settings.EmbeddedComPort, UsbSerialBaudRates.BR_115200); + machineOperator.Adapter = adapter; + machineOperator.JobHandlingMode = JobHandlerModes.SettingUp; + await machineOperator.Connect(); + } + } + else + { + LogManager.Default.Log("Application in demo mode!"); + + LogManager.Default.Log("Starting embedded emulator..."); + MachineEmulator emulator = new MachineEmulator(new BasicTransporter(new MemoryTransportAdapter("emulator"))); + await emulator.Start(); + + LogManager.Default.Log("Emulator started. Connecting to emulator..."); + + MemoryTransportAdapter adapter = new MemoryTransportAdapter("emulator"); + machineOperator.Adapter = adapter; + machineOperator.JobHandlingMode = JobHandlerModes.SettingUp; + LogManager.Default.Log("Connecting machine operator..."); + await machineOperator.Connect(); + } + + return machineOperator; + } + /// <summary> /// Tries to connect to the machine by scanning all available serial ports. /// The timeout for a scan cycle is specified on <see cref="PPCSettings.MachineScanningTimeoutSeconds"/>. |
