chiark / gitweb /
sane handling of incoming detections
authorian <ian>
Sat, 12 Apr 2008 12:11:12 +0000 (12:11 +0000)
committerian <ian>
Sat, 12 Apr 2008 12:11:12 +0000 (12:11 +0000)
hostside/parse-proto-spec
hostside/startup.c
layout/data2safety

index c35319ee7d5327565ffd24bcef66972de482dadc..0dc083d0d5a0c7fc5a5d8e3ec8d83fceb598c881 100755 (executable)
@@ -95,7 +95,7 @@ sub process_line () {
        $v{noiselevel}=
            ($cname =~ m/nmradone/ ? 3 :
             $cname =~ m/p[io]ng/ ? 2 :
-            $cname =~ m/detect/ ? 1 :
+            $cname =~ m/detect/ ? 2 :
             0);
        $v{cnameyn}= $cname.$yval;
        $v{cnameynu}= uc($cname.$yval);
index 2e9ed335067b290c5cd6b13de13f3530d428e11b..f6a318ce030eac1a77b4b8600a12bf037e6b32a0 100644 (file)
@@ -207,10 +207,23 @@ void on_pic_spurious(const PicInsnInfo *pii, const PicInsn *pi, int objnum) {
          " detection interrupts\"", objnum);
 }
 
-void on_pic_detect1(const PicInsnInfo *pii, const PicInsn *pi, int segn) {
-  Segment *seg;
-  if (segn >= NUM_SEGMENTS) die("PIC sent detect @#%#x out of range",segn);
+static SegmentNum on_pic_detect_prep(int detyn, int objnum) {
+  SegmentNum segn;
+
+  if (objnum >= info_segmentmaplen ||
+      (segn= info_segmentmap[objnum]) < 0)
+    die("PIC sent detect%d @#%#x not in map",detyn,objnum);
 
+  oprintf(UPO,"picio in detect%d %s\n",detyn,info_segments[segn].pname);
+
+  return segn;
+}
+
+void on_pic_detect1(const PicInsnInfo *pii, const PicInsn *pi, int objnum) {
+  SegmentNum segn;
+  Segment *seg;
+  
+  segn= on_pic_detect_prep(1,objnum);
   seg= &segments[segn];
   
   switch (sta_state) {
@@ -239,6 +252,7 @@ void on_pic_nmradone(const PicInsnInfo *pii, const PicInsn *pi, int objnum) {
 }
 
 void on_pic_detect0(const PicInsnInfo *pii, const PicInsn *pi, int objnum) {
+  on_pic_detect_prep(0,objnum);
 }
 
 void choreographers_all_abandon(void) { }
index 58097be18469638454b49f69d7a29f7e6a79cb76..7e8e0eb7b50f8b6e625b54add34a302962bbe406 100755 (executable)
@@ -503,17 +503,18 @@ sub writeout () {
     }
     o("\n};\n");
     o("const BoardObject info_maxreverse= $maxreverseobjnum;\n");
-    o("#define U -1\n");
+    o("#define u -1\n");
     o("const SegmentNumInMap info_segmentmap[]= {\n");
     $i=0;
     foreach $seg (@sensemap) {
        o(!$i ? ' ' :
          !($i % 12) ? ",\n " :
          ",");
-       o(defined($seg) ? sprintf("%4d",$seg) : '   U');
+       o(defined($seg) ? sprintf("%4d",$seg) : '   u');
        $i++;
     }
     o("\n};\n".
+      "#undef u\n".
       "const int info_segmentmaplen= ".scalar(@sensemap).";\n");
 }