chiark / gitweb /
problem report segment may be 0
authorian <ian>
Sun, 8 Jun 2008 22:50:38 +0000 (22:50 +0000)
committerian <ian>
Sun, 8 Jun 2008 22:50:38 +0000 (22:50 +0000)
hostside/README.commands
hostside/commands.c
hostside/gui
hostside/safety.c
hostside/safety.h

index 80a7f66ec1d87852a685ae3ef834c99305f10e56..b2fc91c61f3d022e2b0c5a47eed8d9b747e4cfe2 100644 (file)
@@ -72,7 +72,7 @@ POSSIBLY-ASYNCHRONOUS REPORTING OF INTERNAL STATE CHANGES ETC.
  U< ?info save-dump <dumpdir>
 
  U< ?train <train> signalling-problem ....
- U< ?train <train> signalling-problem <problematic-segment> : <message>
+ U< ?train <train> signalling-problem <problematic-segment>|- : <message>
 
  R< ?train <train> at [-]<segment>:<maxinto>+-<uncertainty> forwards|backwards
  R< ?train <train> has <markchar>[-]<segment>[/<movposcomb>]....
@@ -115,7 +115,7 @@ COMMANDS AND RESPONSES
  O< ?ack <command> <errorcode>
  O< ?ack <command> <errorcode> [<remaining info>] : <remaining error msg>...
  O< ?ack <command> SignallingPredictedProblem \
-          <problematic-train> <problematic-segment> : <error message>...
+          <problematic-train> <problematic-segment>|- : <error message>...
 
     when these come through the multiplexer, everything which is a
     result of _other_ clients' activities, between <executing> and
index d7a2b52d02a16b22aa8c418ae23e5d238503a6c0..02daa7ac3b4dc2dd5a5ebca904f10ab3eeb90e5d 100644 (file)
@@ -31,7 +31,7 @@ struct ManualRetransmitNode {
 static void cmd_ppc(Train *tra, Segment *seg, void *pu, const char *message) {
   const CmdInfo *ci= pu;
   ouprintf("ack %s SignallingPredictedProblem %s %s : %s\n",
-          ci->name, tra->pname, seg->i->pname, message);
+          ci->name, tra->pname, seg ? seg->i->pname : "-", message);
 }
 
 #define MUSTECRPREDICT(requester) do{                                  \
index d386db5aae3a3cb7811413d13c4310bbf09c2d0a..acbfdc7a81ba41745c4c1200826a1db47c6ded67 100755 (executable)
@@ -104,7 +104,10 @@ proc scmd_result {oknakerr message reporterrmsg} {
 register-event {} {} {^\+ack \S+ ok } { scmd_result ok $l "" }
 register-event {} {train segment error} \
        {^\+ack \S+ SignallingPredictedProblem (\S+) (\S+) \: (.*) $} {
-    scmd_result err $l "$train @$segment: $error"
+    set m $train
+    if {[string compare - $segment]} { append m " @$segment" }
+    append m ": $error"
+    scmd_result err $l $m
 }
 register-event {} {} {^\+ack } { scmd_result err $l $l }
 register-event {} {} {^\+nack \S+ } { scmd_result nak $l $l }
index a5b85045d078227e8d3bafdaf4902a9e23c07d7d..689c9868843e612cf241aca47c267431b9e137dd 100644 (file)
@@ -1054,7 +1054,7 @@ void report_train_ownerships(Train *tra, Segment *hindmost,
 static void detection_report_problem(Train *tra, Segment *seg,
                                     void *pu, const char *message) {
   ouprintf("train %s signalling-problem %s : %s\n",
-          tra->pname, seg->i->pname, message);
+          tra->pname, seg ? seg->i->pname : "-", message);
 }
 
 void safety_notify_detection(Segment *seg) {
index 6756e92b025099531a0ae607facb3f1195c562bd..ff85afc668031eed0e35b4382ed160b341637c8c 100644 (file)
@@ -100,7 +100,7 @@ void safety_panic(Train *tra, Segment *seg, const char *fmt,...)
  * etc.).
  */
 
-typedef void PredictionProblemCallback(Train *tra, Segment *seg,
+typedef void PredictionProblemCallback(Train *tra, Segment *seg /* may be 0 */,
                                       void *pu, const char *message);
 
 void safety_setdirection(Train* tra, int backwards);