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>]....
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
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{ \
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 }
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) {
* 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);