protected async Task ReportAsync(string description) { var report = new VectorBehaviourPlusReport() { Description = description, Controller = controller, Robot = controller.Robot, Behaviour = this }; await controller.ReportAsync(report); }
public async Task StartMainLoopAsync(CancellationToken cancel, char?haltOn = ' ') { mainLoopRunning = true; var examineConsole = true; char?lastKeyPress = null; while (!cancel.IsCancellationRequested && mainLoopRunning && (haltOn == null || lastKeyPress != haltOn)) { await Task.Delay(100); try { if (examineConsole) { lastKeyPress = Console.KeyAvailable ? Console.ReadKey().KeyChar : (char?)null; if (lastKeyPress.HasValue) { OnKeyPress?.Invoke(lastKeyPress.Value); await OfferKeypressToBehavioursAsync(lastKeyPress.Value); } } } catch (InvalidOperationException e) { await ReportAsync(VectorBehaviourPlusReport.FromException(e)); examineConsole = false; } if (AnyBehavioursNeedCameraProcessing) { ProcessCameraFrame(); } if (AnyBehavioursNeedPermanentObjectMonitoring) { UpdateObjectMonitoring(); } } }
public async Task ReportAsync(VectorBehaviourPlusReport report) { Reports.Add(report); OnBehaviourReport?.Invoke(report); }