Skip to content

Commit 44d11c0

Browse files
authored
Improvements in device connection (#115)
***NO_CI***
1 parent 978e0fd commit 44d11c0

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed

source/TestAdapter/Executor.cs

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -187,12 +187,20 @@ private async Task<List<TestResult>> RunTestOnHardwareAsync(List<TestCase> tests
187187
List<TestResult> results = PrepareListResult(tests);
188188
List<byte[]> assemblies = new List<byte[]>();
189189
int retryCount = 0;
190-
string port = _settings.RealHardwarePort == string.Empty ? "COM4" : _settings.RealHardwarePort;
191-
//var serialDebugClient = PortBase.CreateInstanceForSerial("", null, true, new List<string>() { port });
192-
var serialDebugClient = PortBase.CreateInstanceForSerial(true, null);
190+
191+
var serialDebugClient = PortBase.CreateInstanceForSerial(true, 2000);
193192

194193
retryConnection:
195-
_logger.LogMessage($"Checking device on port {port}.", Settings.LoggingLevel.Verbose);
194+
195+
if(string.IsNullOrEmpty(_settings.RealHardwarePort))
196+
{
197+
_logger.LogMessage($"Waiting for device enumeration to complete.", Settings.LoggingLevel.Verbose);
198+
}
199+
else
200+
{
201+
_logger.LogMessage($"Checking device on port {_settings.RealHardwarePort}.", Settings.LoggingLevel.Verbose);
202+
}
203+
196204
while (!serialDebugClient.IsDevicesEnumerationComplete)
197205
{
198206
Thread.Sleep(1);
@@ -218,17 +226,29 @@ private async Task<List<TestResult>> RunTestOnHardwareAsync(List<TestCase> tests
218226

219227
retryCount = 0;
220228
NanoDeviceBase device;
221-
if (serialDebugClient.NanoFrameworkDevices.Count > 1)
229+
230+
if (serialDebugClient.NanoFrameworkDevices.Count > 1
231+
&& !string.IsNullOrEmpty(_settings.RealHardwarePort))
222232
{
223-
device = serialDebugClient.NanoFrameworkDevices.Where(m => m.SerialNumber == port).First();
233+
// get the device at the requested COM port (if there is one)
234+
device = serialDebugClient.NanoFrameworkDevices.FirstOrDefault(m => m.SerialNumber == _settings.RealHardwarePort);
235+
236+
// sanity check
237+
if(device is null)
238+
{
239+
// no device, done here
240+
_logger.LogMessage($"No device available at {_settings.RealHardwarePort}.", Settings.LoggingLevel.Verbose);
241+
return results;
242+
}
224243
}
225244
else
226245
{
246+
// no COM port requested, just grab the 1st one
227247
device = serialDebugClient.NanoFrameworkDevices[0];
228248
}
229249

230250
_logger.LogMessage(
231-
$"Getting things with {device.Description}",
251+
$"Getting things ready with {device.Description}",
232252
Settings.LoggingLevel.Detailed);
233253

234254
// check if debugger engine exists
@@ -251,6 +271,7 @@ private async Task<List<TestResult>> RunTestOnHardwareAsync(List<TestCase> tests
251271
// Give it a bit of time
252272
await Task.Delay(100);
253273
retryCount++;
274+
254275
goto retryDebug;
255276
}
256277
else

0 commit comments

Comments
 (0)