From: ian Date: Tue, 15 Apr 2008 01:28:41 +0000 (+0000) Subject: wip more safety debugging X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=da1c07ae188e729ce8c6e8f2bf316b8dca0a0cf7;p=trains.git wip more safety debugging --- diff --git a/hostside/TODO b/hostside/TODO index 655aebe..f6da014 100644 --- a/hostside/TODO +++ b/hostside/TODO @@ -1,3 +1,48 @@ + + +with santafe at X8, we get this: + + picio out polarity <> + lay_train X8 @santafe added_slop=0 maxinto=509 tra->backwards=0 tloc.backwards=1 + lay_train_pass santafe @X8+509 check_clash=1 advance=20 speed=0 remain=20 backwards=0 + lay_train_pass loop @X8 remain=20 + lay_train_pass further=1 tloc=@X6+0 remain=20 + lay_train_pass loop @X6 remain=20 + lay_train_pass further=0 tloc=@X6+20 remain=0 + lay_train_pass santafe @X8+509 check_clash=0 advance=0 speed=0 remain=0 backwards=0 + lay_train_pass loop @X8 remain=0 + lay_train_pass santafe @X8+0 check_clash=1 advance=605 speed=0 remain=605 backwards=1 + lay_train_pass loop @X8 remain=605 + lay_train_pass further=1 tloc=@X10+0 remain=96 + lay_train_pass loop @X10 remain=96 + message safety @X10 santafe: collision with shinkansen + lay_train_pass further=0 tloc=@X10+96 remain=0 + message safety @X8 santafe: emergency stop on reaching here + lay_train X8 @santafe added_slop=300 maxinto=509 tra->backwards=0 tloc.backwards=1 + lay_train_pass santafe @X8+509 check_clash=1 advance=320 speed=0 remain=320 backwards=0 + lay_train_pass loop @X8 remain=320 + lay_train_pass further=1 tloc=@X6+0 remain=320 + lay_train_pass loop @X6 remain=320 + lay_train_pass further=1 tloc=@X5+0 remain=68 + lay_train_pass loop @X5 remain=68 + lay_train_pass further=0 tloc=@X5+68 remain=0 + lay_train_pass santafe @X8+509 check_clash=0 advance=0 speed=0 remain=0 backwards=0 + lay_train_pass loop @X8 remain=0 + lay_train_pass santafe @X8+0 check_clash=1 advance=605 speed=0 remain=605 backwards=1 + lay_train_pass loop @X8 remain=605 + lay_train_pass further=1 tloc=@X10+0 remain=96 + lay_train_pass loop @X10 remain=96 + lay_train_pass further=0 tloc=@X10+96 remain=0 + picio out polarity <> + +but why does emergency stop help ? + + + + + + + dunno but maybe before can test wiring to gui display diff --git a/hostside/homes.record b/hostside/homes.record index cf8735c..1103863 100644 --- a/hostside/homes.record +++ b/hostside/homes.record @@ -1,3 +1,3 @@ -train santafe home -X5 +train santafe home -X8 train shinkansen home -X7 -X9 -A5 -A6 end diff --git a/hostside/resolve.c b/hostside/resolve.c index cd5cc6a..32a55c6 100644 --- a/hostside/resolve.c +++ b/hostside/resolve.c @@ -208,6 +208,11 @@ int resolve_complete(void) { if (d->owner) { /* 3a perhaps */ oprintf(UPO, "resolving expected %s\n", t->pname); + if (t->addr < 0) { + oprintf(UPO, "resolving expected-is-not-addressable\n"); + goto not_3a; + } + if (t->resolution == RR_H) { oprintf(UPO, "resolving expected-is-at-home\n"); goto not_3a; @@ -257,6 +262,11 @@ int resolve_complete(void) { Train *t1= d->home; /* t' st d \elem H(t') */ oprintf(UPO, "resolving home %s\n", t1->pname); + if (t1->addr < 0) { + oprintf(UPO, "resolving home-is-not-addressable\n"); + goto not_3b; + } + oprintf(UPO, "resolving reset-expecteds\n"); FOR_TRAIN(tplus, NOOP,NOOP) { if (tplus->resolution == RR_E) { @@ -279,6 +289,7 @@ int resolve_complete(void) { oprintf(UPO, "resolving supposing %s at-home\n", t1->pname); continue; } + not_3b: /* Oh dear, 3c. */ if (phase<2) @@ -291,6 +302,9 @@ int resolve_complete(void) { } FOR_SEGMENT(d,NOOP,NOOP) { + if (problems) + goto x_problems; + d->tr_updated= 0; d->cm_autostop= 0; @@ -332,7 +346,8 @@ int resolve_complete(void) { } if (problems) { - oprintf(UPO,"resolution problems (%d)\n",problems); + x_problems: + oprintf(UPO,"resolution problems %d\n",problems); return -1; }