chiark / gitweb /
do not panic on interference detection
authorian <ian>
Sun, 4 May 2008 21:12:06 +0000 (21:12 +0000)
committerian <ian>
Sun, 4 May 2008 21:12:06 +0000 (21:12 +0000)
hostside/safety.c

index 69774f959497c7655ccd2884e0f6321537de52f6..f1bb81e6a1e6f52744d5387564f39b20a6be5e8f 100644 (file)
@@ -814,10 +814,20 @@ static void detection_report_problem(Train *tra, Segment *seg,
 void safety_notify_detection(Segment *seg) {
   Train *tra;
   ErrorCode ec;
+  Segment *interferer;
 
   if (seg->det_ignore) return;
-  if (!seg->det_expected)
-    safety_panic(0,seg, "unexpected detection");
+  if (!seg->det_expected) {
+    interferer= segment_interferes(0,seg);
+    if (!interferer) safety_panic(0,seg, "unexpected detection");
+    if (interferer->det_ignore) return;
+    if (!interferer->det_expected)
+      safety_panic(0,seg, "unexpected detection, perhaps really at %s",
+                  interferer->i->pname);
+    oprintf(DUPO("safety") "detection %s using interferer %s",
+           seg->i->pname, interferer->i->pname);
+    seg= interferer;
+  }
 
   tra= seg->owner;
   if (seg->movposcomb < 0)