chiark / gitweb /
realtime: actually do initial queueing of speedmanager's retransmit nodes (!)
authorIan Jackson <ian@liberator.relativity.greenend.org.uk>
Sat, 8 Jan 2011 20:37:45 +0000 (20:37 +0000)
committerIan Jackson <ian@liberator.relativity.greenend.org.uk>
Sat, 8 Jan 2011 20:37:56 +0000 (20:37 +0000)
hostside/realtime.c
hostside/safety.h
hostside/speed.c

index 131d377a6386118a6e35f86dafc32216dd04c2ec..20e75351affc0ba7231aa5694bd92f2c1d53b1fe 100644 (file)
@@ -523,6 +523,7 @@ int main(int argc, const char **argv) {
   persist_entrails_interpret();
   records_parse(argv);
   realtime_priority();
+  speedmanager_init();
   sta_startup();
 
   if (!simulate) oop_sys_run(sys_events);
index 46ef44fce90894a024f8bd6a8e19691d9e928348..2e4fc85201de66105db32bbf1533e3bcc56e1dac 100644 (file)
@@ -265,6 +265,8 @@ int speedmanager_stopped(Train *tra);
 
 void actual_speed(Train *tra, int step);
 
+void speedmanager_init(void);
+
 /*========== actual.c ==========*/
 /* actual.c should only be called from safety.c.
  * It is responsible for communicating with the PICs, including
index 44f21acc58e4af7b71532e2af5c3684a69843f46..e80aad2a6f6df146ef77a7f009decf8f2b38feb1 100644 (file)
@@ -199,3 +199,12 @@ void speedmanager_reset_train(Train *tra) {
 
   actual_speed(tra, 0);
 }
+
+void speedmanager_init(void) {
+  Nmra n;
+  TRA_IV;
+  FOR_TRA {
+    enco_nmra_idle(&n);
+    retransmit_urgent_queue_relaxed(&tra->speed.rn, &n);
+  }
+}