@@ -57,9 +57,6 @@ async Task ScanForDevices() {
5757 await client . StopScanningAsync ( ) ;
5858 }
5959
60- // Scan for devices before we get to the main menu.
61- await ScanForDevices ( ) ;
62-
6360 // Now we define the device control menus. After we've scanned for
6461 // devices, the user can use this menu to select a device, then
6562 // select an action for that device to take.
@@ -73,24 +70,45 @@ async Task ControlDevice() {
7370 // (which is why we can't just use an array index).
7471
7572 // Of course, if we don't have any devices yet, that's not gonna work.
76- if ( ! client . Devices . Any ( ) ) {
77- Console . WriteLine ( "No devices available. Please scan for a device." ) ;
78- return ;
73+ while ( true )
74+ {
75+ if ( ! client . Devices . Any ( ) )
76+ {
77+ // Scan for devices before we get to the main menu.
78+ await ScanForDevices ( ) ;
79+ Console . WriteLine ( "No devices available. Please scan for a device." ) ;
80+ }
81+ else
82+ {
83+ break ;
84+ }
7985 }
8086
8187 var options = new List < uint > ( ) ;
82-
8388 foreach ( var dev in client . Devices ) {
8489 Console . WriteLine ( $ "{ dev . Index } . { dev . Name } ") ;
8590 options . Add ( dev . Index ) ;
8691 }
92+
8793 Console . WriteLine ( "Choose a device: " ) ;
88- if ( ! uint . TryParse ( Console . ReadLine ( ) , out var deviceChoice ) ||
89- ! options . Contains ( deviceChoice ) ) {
90- Console . WriteLine ( "Invalid choice" ) ;
91- return ;
94+ uint deviceChoice ;
95+ while ( true )
96+ {
97+ var userinput = Console . ReadLine ( ) ;
98+ var validchoice = uint . TryParse ( userinput , out deviceChoice ) ;
99+ if ( ! validchoice || ! options . Contains ( deviceChoice ) )
100+ {
101+ Console . WriteLine ( "Invalid choice, Try again:" ) ;
102+ }
103+ else
104+ {
105+ var selectedDevice = client . Devices . First ( d => d . Index == deviceChoice ) ;
106+ Console . WriteLine ( $ "Device { selectedDevice . Name } selected") ;
107+ break ;
108+ }
92109 }
93110
111+
94112 var device = client . Devices . First ( dev => dev . Index == deviceChoice ) ;
95113
96114
0 commit comments