@@ -198,56 +198,59 @@ class LogicAnalyzerStateProvider extends ChangeNotifier {
198198 await Geolocator .getCurrentPosition (locationSettings: locationSettings);
199199 }
200200
201- Future <void > analyze () async {
201+ Future <bool > analyze () async {
202+ if (! _scienceLab.isConnected ()) {
203+ return false ;
204+ }
202205 isProcessing = true ;
203206 notifyListeners ();
204207
205- currentChannel = 0 ;
206- dataSets.clear ();
207- analysisChannelNames.clear ();
208- analysisEdgesNames.clear ();
209- digitalChannels.clear ();
208+ try {
209+ currentChannel = 0 ;
210+ dataSets.clear ();
211+ analysisChannelNames.clear ();
212+ analysisEdgesNames.clear ();
213+ digitalChannels.clear ();
210214
211- switch (channelMode) {
212- case 1 :
213- analysisChannelNames.add (channelSelectSpinner1);
214- analysisEdgesNames.add (edgeSelectSpinner1);
215- break ;
216- case 2 :
217- analysisChannelNames
218- .addAll ([channelSelectSpinner1, channelSelectSpinner2]);
219- analysisEdgesNames.addAll ([edgeSelectSpinner1, edgeSelectSpinner2]);
220- break ;
221- case 3 :
222- analysisChannelNames.addAll ([
223- channelSelectSpinner1,
224- channelSelectSpinner2,
225- channelSelectSpinner3
226- ]);
227- analysisEdgesNames.addAll (
228- [edgeSelectSpinner1, edgeSelectSpinner2, edgeSelectSpinner3]);
229- break ;
230- case 4 :
231- analysisChannelNames.addAll ([
232- channelSelectSpinner1,
233- channelSelectSpinner2,
234- channelSelectSpinner3,
235- channelSelectSpinner4
236- ]);
237- analysisEdgesNames.addAll ([
238- edgeSelectSpinner1,
239- edgeSelectSpinner2,
240- edgeSelectSpinner3,
241- edgeSelectSpinner4
242- ]);
243- break ;
244- default :
245- analysisChannelNames.add (channelSelectSpinner1);
246- analysisEdgesNames.add (edgeSelectSpinner1);
247- break ;
248- }
215+ switch (channelMode) {
216+ case 1 :
217+ analysisChannelNames.add (channelSelectSpinner1);
218+ analysisEdgesNames.add (edgeSelectSpinner1);
219+ break ;
220+ case 2 :
221+ analysisChannelNames
222+ .addAll ([channelSelectSpinner1, channelSelectSpinner2]);
223+ analysisEdgesNames.addAll ([edgeSelectSpinner1, edgeSelectSpinner2]);
224+ break ;
225+ case 3 :
226+ analysisChannelNames.addAll ([
227+ channelSelectSpinner1,
228+ channelSelectSpinner2,
229+ channelSelectSpinner3
230+ ]);
231+ analysisEdgesNames.addAll (
232+ [edgeSelectSpinner1, edgeSelectSpinner2, edgeSelectSpinner3]);
233+ break ;
234+ case 4 :
235+ analysisChannelNames.addAll ([
236+ channelSelectSpinner1,
237+ channelSelectSpinner2,
238+ channelSelectSpinner3,
239+ channelSelectSpinner4
240+ ]);
241+ analysisEdgesNames.addAll ([
242+ edgeSelectSpinner1,
243+ edgeSelectSpinner2,
244+ edgeSelectSpinner3,
245+ edgeSelectSpinner4
246+ ]);
247+ break ;
248+ default :
249+ analysisChannelNames.add (channelSelectSpinner1);
250+ analysisEdgesNames.add (edgeSelectSpinner1);
251+ break ;
252+ }
249253
250- if (_scienceLab.isConnected ()) {
251254 switch (channelMode) {
252255 case 1 :
253256 await captureOne (analysisChannelNames[0 ], analysisEdgesNames[0 ]);
@@ -273,9 +276,11 @@ class LogicAnalyzerStateProvider extends ChangeNotifier {
273276 break ;
274277 }
275278 isData = true ;
279+ return true ;
280+ } finally {
281+ isProcessing = false ;
282+ notifyListeners ();
276283 }
277- isProcessing = false ;
278- notifyListeners ();
279284 }
280285
281286 double getMaxY () {
0 commit comments