diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2020-02-18 21:06:18 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2020-02-18 21:06:18 +0200 |
| commit | 96691cea7e86b1df3f6cd5b3f45ae614e5f09821 (patch) | |
| tree | bb6eb9c01a8257d072656f2e107eec54e0a10bcd /Software/Visual_Studio/Tango.Integration/ExternalBridge | |
| parent | 00b7de2653058bd9657217075eae834f6a1a4ec5 (diff) | |
| download | Tango-96691cea7e86b1df3f6cd5b3f45ae614e5f09821.tar.gz Tango-96691cea7e86b1df3f6cd5b3f45ae614e5f09821.zip | |
FSE...
Diffstat (limited to 'Software/Visual_Studio/Tango.Integration/ExternalBridge')
| -rw-r--r-- | Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs index ff045a9e5..f158af53f 100644 --- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs @@ -39,6 +39,10 @@ namespace Tango.Integration.ExternalBridge private HubConnection _connection; private IHubProxy _proxy; + public event EventHandler<IExternalBridgeClient> MachineDiscovered; + + public event EventHandler<IExternalBridgeClient> MachineLost; + private SynchronizedObservableCollection<IExternalBridgeClient> _availableMachines; /// <summary> /// Gets the available machines. @@ -97,6 +101,11 @@ namespace Tango.Integration.ExternalBridge AvailableMachines.Remove(machine); } + foreach (var machine in AvailableMachines.OfType<ExternalBridgeSignalRClient>().ToList()) + { + AvailableMachines.Remove(machine); + } + _tcpDiscoveryThread = new Thread(TcpDiscoveryThreadMethod); _tcpDiscoveryThread.IsBackground = true; _tcpDiscoveryThread.Start(); @@ -166,7 +175,9 @@ namespace Tango.Integration.ExternalBridge LogManager.Log("Found a new machine via USB " + device.Description); ThreadsHelper.InvokeUINow(() => { - AvailableMachines.Add(new ExternalBridgeUsbClient(device.Port, device.Description, _settings.EmbeddedSerialBaudRate)); + var machine = new ExternalBridgeUsbClient(device.Port, device.Description, _settings.EmbeddedSerialBaudRate); + AvailableMachines.Add(machine); + MachineDiscovered?.Invoke(this, machine); }); } } @@ -209,6 +220,7 @@ namespace Tango.Integration.ExternalBridge { LogManager.Log("Disconnected machine detected via TCP: " + disconnected_machine.SerialNumber); AvailableMachines.Remove(disconnected_machine); + MachineLost?.Invoke(this, disconnected_machine); } continue; @@ -223,6 +235,7 @@ namespace Tango.Integration.ExternalBridge ThreadsHelper.InvokeUINow(() => { AvailableMachines.Insert(1, newMachine); + MachineDiscovered?.Invoke(this, newMachine); }); } } @@ -246,6 +259,7 @@ namespace Tango.Integration.ExternalBridge foreach (var machine in AvailableMachines.OfType<ExternalBridgeSignalRClient>().ToList().Where(x => !machines.Exists(y => y.SerialNumber == x.SerialNumber))) { AvailableMachines.Remove(machine); + MachineLost?.Invoke(this, machine); } foreach (var machine in machines.Where(x => !AvailableMachines.OfType<ExternalBridgeSignalRClient>().ToList().Exists(y => y.SerialNumber == x.SerialNumber))) @@ -255,6 +269,7 @@ namespace Tango.Integration.ExternalBridge ThreadsHelper.InvokeUINow(() => { AvailableMachines.Insert(1, newMachine); + MachineDiscovered?.Invoke(this, newMachine); }); } } @@ -291,6 +306,7 @@ namespace Tango.Integration.ExternalBridge { LogManager.Log("External bridge client failed or disposed. Removing from available machines..."); AvailableMachines.Remove(sender as IExternalBridgeClient); + MachineLost?.Invoke(this, sender as IExternalBridgeClient); } } } |
