diff --git a/WebContent/index.html b/WebContent/index.html index 2810777..23dde1b 100644 --- a/WebContent/index.html +++ b/WebContent/index.html @@ -17,6 +17,8 @@
  • finch/in/accelerationX
  • finch/in/accelerationY
  • finch/in/accelerationZ
  • +
  • finch/in/lastTappedTime
  • +
  • finch/in/lastShakenTime
  • finch/in/temperature
  • finch/in/motor (provides current value of motor speeds)
  • finch/in/led (provides current RGB color intensities of LED)
  • diff --git a/src/birdbrain/finchandHummingbirdServer/FinchServlet.java b/src/birdbrain/finchandHummingbirdServer/FinchServlet.java index b1f2fb0..9124c66 100644 --- a/src/birdbrain/finchandHummingbirdServer/FinchServlet.java +++ b/src/birdbrain/finchandHummingbirdServer/FinchServlet.java @@ -53,6 +53,8 @@ public void setConnectionState(boolean state) { * in/accelerationY * in/accelerationZ * in/temperature + * in/lastTappedTime + * in/lastShakenTime * */ @@ -217,6 +219,12 @@ else if(urlPath.substring(4).equals("temperature")) { response.getWriter().print(Math.floor(finch.getTemperature()*100)/100); } + else if(urlPath.substring(4).equals("lastTappedTime")) { + response.getWriter().print(finch.getLastTappedTime()); + } + else if(urlPath.substring(4).equals("lastShakenTime")) { + response.getWriter().print(finch.getLastShakenTime()); + } // If the Finch is active and you wrote "in" but the remainder is garbage, send an error message else { response.getWriter().print("Wrong sensor request"); diff --git a/src/birdbrain/finchandHummingbirdServer/FinchServletWrapper.java b/src/birdbrain/finchandHummingbirdServer/FinchServletWrapper.java index c0508af..0823b95 100644 --- a/src/birdbrain/finchandHummingbirdServer/FinchServletWrapper.java +++ b/src/birdbrain/finchandHummingbirdServer/FinchServletWrapper.java @@ -14,6 +14,9 @@ public class FinchServletWrapper { private Double temperature; private boolean[] obstacles; private int[] lights; + // The time when the last tapped and shaken events were recorded + private long lastTappedTime = 0; + private long lastShakenTime = 0; // We poll sensors in a separate thread to minimize the timer doGet has to wait private Thread sensorLoop; @@ -29,6 +32,12 @@ public void run() { { try { // Each finch.get takes 8 ms, then sleep to allow other things to happen + if (finch.isTapped()) + lastTappedTime = System.currentTimeMillis(); + Thread.sleep(12); + if (finch.isShaken()) + lastShakenTime = System.currentTimeMillis(); + Thread.sleep(12); accelerations = finch.getAccelerations(); Thread.sleep(12); temperature = finch.getTemperature(); @@ -144,8 +153,16 @@ public boolean[] getObstacle() { } - - + public long getLastTappedTime() { + return lastTappedTime; + } + + public long getLastShakenTime() { + return lastShakenTime; + } + + + // Parses the Finch output string and sets it public boolean setOutput(String setter) {