aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Integration/ExternalBridge
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2020-02-18 21:06:18 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2020-02-18 21:06:18 +0200
commit96691cea7e86b1df3f6cd5b3f45ae614e5f09821 (patch)
treebb6eb9c01a8257d072656f2e107eec54e0a10bcd /Software/Visual_Studio/Tango.Integration/ExternalBridge
parent00b7de2653058bd9657217075eae834f6a1a4ec5 (diff)
downloadTango-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.cs18
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);
}
}
}