Browse Source

retry abs on fail

Martin Kunz 3 years ago
parent
commit
026029f85b
1 changed files with 20 additions and 13 deletions
  1. 20 13
      src/main/java/at/acdp/urweb/web/FestoXRServer.java

+ 20 - 13
src/main/java/at/acdp/urweb/web/FestoXRServer.java

@@ -62,22 +62,29 @@ public class FestoXRServer {
     @XRMethod(value = "abs", help = "abs")
     public static String abs(int targetPos, int speed) {
         try {
-            logger.info("Absolute to {} speed {}", targetPos, speed);
-            Main.fhm.bereitschaft();
-
-            Main.fhm.direktAuftrag(targetPos, speed, 0, false);
-            Thread.sleep(100);
-            Main.fhm.direktAuftrag(targetPos, speed, 1, false);
-
+            int round=1;
             while(true) {
-                boolean reached=checkPos(targetPos);
-                if(reached) {
-                    logger.info("Reached {}", targetPos);
-                    return "OK";
-                }
+                logger.info("Absolute to {} speed {} try {}", targetPos, speed, round++);
+                Main.fhm.bereitschaft();
+                Main.fhm.direktAuftrag(targetPos, speed, 0, false);
+                Thread.sleep(100);
+                Main.fhm.direktAuftrag(targetPos, speed, 1, false);
+
+                while (true) {
+                    boolean reached = checkPos(targetPos);
+                    Status s = Main.fhm.readStatus().get();
+                    if (s.fault) {
+                        logger.warn("fault, retry");
+                        break;
+                    }
+                    if (reached) {
+                        logger.info("Reached {}", targetPos);
+                        return "OK";
+                    }
                     Thread.sleep(100);
+                }
             }
-        } catch (InterruptedException e) {
+        } catch (ExecutionException|InterruptedException e) {
             logger.warn("abs failed", e);
             return "abs failed: "+e.toString();
         }