コード例 #1
0
 private void ForwardCompReport(UrbanChallenge.Behaviors.CompletionReport.CompletionReport report)
 {
     if (forwardPackets)
     {
         ForwardObject(report, false, compReportStream);
     }
 }
コード例 #2
0
        public void SendCompletionReport(UrbanChallenge.Behaviors.CompletionReport.CompletionReport report)
        {
            //OperationalTrace.WriteInformation("sending completion report {0}, listener {1}", report, listener == null ? "<null>" : listener.ToString());
            OperationalListener l = listener;

            if (l != null)
            {
                try {
                    l.OnCompletionReport(report);
                    OperationalTrace.WriteVerbose("completion report succeeded");
                }
                catch (Exception ex) {
                    OperationalTrace.WriteWarning("completion report send failed: {0}", ex);
                }

                ForwardCompReport(report);
            }
        }
コード例 #3
0
 public abstract void OnCompletionReport(CompletionReport report);
コード例 #4
0
        protected override void ForwardCompletionReport(CompletionReport report)
        {
            // we only want to forward success completion reports
            if (report is SuccessCompletionReport) {
                base.ForwardCompletionReport(report);
            }
            else {
                // otherwise, we have a blockage
                // if it's dynamically infeasible, then we want to do a reverse and try again
                Console.WriteLine("zone trizavel: intercepted blockage report");

                if (reverseGear) {
                    Console.WriteLine("in reverse, switch to forward");
                    // we're in reverse, switch back to forward
                    reverseGear = false;
                    lastDynInfeasibleTime = null;
                    prevCurvature = double.NaN;
                }
                else {
                    if (arcMode) {
                        Console.WriteLine("arc mode blocked, switch to reverse");
                        reverseGear = true;
                        lastDynInfeasibleTime = null;
                        prevCurvature = double.NaN;
                        InitializeReverse();
                    }
                    else {
                        Console.WriteLine("switch to arc mode");
                        arcMode = true;
                        lastDynInfeasibleTime = null;
                        arcModeTimer = Stopwatch.StartNew();
                        prevCurvature = double.NaN;
                    }
                }
            }
        }
コード例 #5
0
 protected override void ForwardCompletionReport(CompletionReport report)
 {
     if (reverseGear && report is TrajectoryBlockedReport) {
         // just because we're assholes, replace the blockage with a success when we're in reverse and
         // execute a hold brake
         Services.BehaviorManager.Execute(new HoldBrakeBehavior(), null, true);
         base.ForwardCompletionReport(new SuccessCompletionReport(typeof(StayInLaneBehavior)));
     }
     else {
         base.ForwardCompletionReport(report);
     }
 }
コード例 #6
0
        public CompletionReport TestBehavior(Behavior b)
        {
            IOperationalBehavior operBehavior = null;
            try {
                testMode = true;
                Console.WriteLine("Testing behavior " + b.ToString() + " -- type " + b.GetType().Name);

                cachedCompletionReport = new SuccessCompletionReport(b.GetType());
                HandleDecorators(b.Decorators);
                operBehavior = MapBehavior(b);
                operBehavior.Initialize(b);
                operBehavior.Process(null);

                Console.WriteLine("Result: " + cachedCompletionReport.ToString());

                cachedCompletionReport.BehaviorId = b.UniqueId();

                return cachedCompletionReport;
            }
            catch (Exception ex) {
                TraceSource.TraceEvent(TraceEventType.Error, 0, "error testing behavior {0}: {1}", b.GetType(), ex);
                throw;
            }
            finally {
                if (operBehavior != null && operBehavior is IDisposable) {
                    ((IDisposable)operBehavior).Dispose();
                }
            }
        }
コード例 #7
0
 public void ForwardCompletionReport(CompletionReport report)
 {
     if (testMode) {
         cachedCompletionReport = report;
         Console.WriteLine("forward comp report: " + report.ToString());
     }
     else {
         if (report is TrajectoryBlockedReport) {
             ((TrajectoryBlockedReport)report).SAUDILevel = saudiLevel;
         }
         if (Services.Operational != null) {
             Services.Operational.SendCompletionReport(report);
         }
     }
 }
コード例 #8
0
 protected virtual void ForwardCompletionReport(CompletionReport report)
 {
     Services.BehaviorManager.ForwardCompletionReport(report);
 }