diff --git a/pom.xml b/pom.xml
index 23c1faf..5801f07 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.2.53
+ 1.2.54
Web4Rail
jar
Java Model Railway Control
diff --git a/resources/logback.xml b/resources/logback.xml
index 45e617b..a1edc99 100644
--- a/resources/logback.xml
+++ b/resources/logback.xml
@@ -1,4 +1,5 @@
-
+
+
@@ -6,10 +7,11 @@
-
-
+
+
+
diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation
index 9587f09..7e1afe0 100644
--- a/resources/translations/Application.de.translation
+++ b/resources/translations/Application.de.translation
@@ -148,7 +148,7 @@ NORTH : Norden
Not connected to other bridge part! : Nicht mit anderem Brücken-Teil verbunden!
Notes : Notizen
No tile moved. : keine Kachel verschoben.
-{} now heading for {} : {} ist nun unterweg nach {}
+{} now heading for {} : {} ist nun unterwegs nach {}
{} now in auto-mode : {} ist nun im Automatikmodus
Occupied area\: : Belegte Abschnitte:
Off : Aus
diff --git a/src/main/java/de/srsoftware/web4rail/Command.java b/src/main/java/de/srsoftware/web4rail/Command.java
index 4ace0e2..e2a5d67 100644
--- a/src/main/java/de/srsoftware/web4rail/Command.java
+++ b/src/main/java/de/srsoftware/web4rail/Command.java
@@ -38,7 +38,7 @@ public class Command {
milis = Integer.parseInt(word.substring(word.length()-3));
code = scanner.nextInt();
message = scanner.nextLine().trim();
- LOG.info("recv {}.{} {} {}.",secs,milis,code,message);
+ LOG.debug("recv {}.{} {} {}.",secs,milis,code,message);
}
/**
diff --git a/src/main/java/de/srsoftware/web4rail/ControlUnit.java b/src/main/java/de/srsoftware/web4rail/ControlUnit.java
index 32e894c..00f60af 100644
--- a/src/main/java/de/srsoftware/web4rail/ControlUnit.java
+++ b/src/main/java/de/srsoftware/web4rail/ControlUnit.java
@@ -256,7 +256,7 @@ public class ControlUnit extends Thread implements Constants{
if (command == null || command.toString() == null) return;
String data = command.toString().replace("{}", ""+bus);
commandSocket.getOutputStream().write((data+"\n").getBytes(StandardCharsets.US_ASCII));
- LOG.info("sent {}.",data);
+ LOG.debug("sent {}.",data);
command.readReplyFrom(commandScanner);
}
@@ -315,7 +315,12 @@ public class ControlUnit extends Thread implements Constants{
case FEEDBACK:
int addr = Integer.parseInt(parts[5]);
boolean active = !parts[6].equals("0");
- ControlUnit.this.plan.sensor(addr,active);
+ new Thread() {
+ @Override
+ public void run() {
+ ControlUnit.this.plan.sensor(addr,active);
+ }
+ }.start();
case ACESSORY:
break;
default:
diff --git a/src/main/java/de/srsoftware/web4rail/PathFinder.java b/src/main/java/de/srsoftware/web4rail/PathFinder.java
index 08f3cb0..87f6acf 100644
--- a/src/main/java/de/srsoftware/web4rail/PathFinder.java
+++ b/src/main/java/de/srsoftware/web4rail/PathFinder.java
@@ -14,7 +14,7 @@ import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tiles.Block;
public class PathFinder extends BaseClass{
- private static final Logger LOG = LoggerFactory.getLogger(PathFinder.class);
+ public static final Logger LOG = LoggerFactory.getLogger(PathFinder.class);
private static TreeMap> availableRoutes(Context context,HashSet visitedRoutes){
LOG.debug("PathFinder.availableRoutes({})",context);
diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java
index 9c85ae9..9825a61 100644
--- a/src/main/java/de/srsoftware/web4rail/Route.java
+++ b/src/main/java/de/srsoftware/web4rail/Route.java
@@ -54,7 +54,7 @@ public class Route extends BaseClass {
public enum State {
FREE, LOCKED, PREPARED, STARTED;
}
- private static final Logger LOG = LoggerFactory.getLogger(Route.class);
+ public static final Logger LOG = LoggerFactory.getLogger(Route.class);
private static final String ACTIONS = "actions";
private static final String BRAKE_TIMES = "brake_times";
@@ -439,6 +439,7 @@ public class Route extends BaseClass {
train.setWaitTime(endBlock.getWaitTime(train,train.direction()));
}
if (train.route == this) train.route = null;
+ if (!train.onTrace(startBlock)) startBlock.setTrain(null);
}
train = null;
triggeredContacts.clear();
@@ -477,10 +478,10 @@ public class Route extends BaseClass {
}
public boolean isFreeFor(Context context) {
- LOG.debug("{}.isFreeFor({})",this,context);
+ PathFinder.LOG.debug("{}.isFreeFor({})",this,context);
for (int i=1; i trace = new Vector();
for (Tile t:path) {
trace.add(t);
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java
index c3aa1c4..c2bfd06 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Train.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java
@@ -104,13 +104,15 @@ public class Train extends BaseClass implements Comparable {
if (isSet(route)) {
if (o instanceof String) plan.stream((String)o);
//if (isSet(destination)) Thread.sleep(1000); // limit load on PathFinder
- } else Thread.sleep(1000); // limit load on PathFinder
+ } else waitTime = 1000; // limit load on PathFinder
}
} else Thread.sleep(250);
}
} catch (Exception e) {
e.printStackTrace();
- }
+ }
+ autopilot = null;
+ if (isSet(currentBlock)) plan.place(currentBlock);
}
}
@@ -180,6 +182,8 @@ public class Train extends BaseClass implements Comparable {
}
public void addToTrace(Vector newTiles) {
+ Route.LOG.debug("{}.addToTrace({})",this,newTiles);
+ Route.LOG.debug("old trace: {}",trace);
boolean active = trace.isEmpty();
for (Tile tile : newTiles) {
if (active) {
@@ -189,6 +193,7 @@ public class Train extends BaseClass implements Comparable {
if (dummy == tile) active = true;
}
}
+ Route.LOG.debug("new trace: {}",trace);
showTrace();
}
@@ -502,6 +507,11 @@ public class Train extends BaseClass implements Comparable {
public boolean nextRoutePrepared() {
return isSet(nextRoute) && nextRoute.state() == Route.State.PREPARED;
}
+
+ public boolean onTrace(Tile t) {
+ return trace.contains(t);
+ }
+
@Override
protected Window properties(List