copied everything over from 2012 and removed all of the actual robot code except the drivetrain stuff


git-svn-id: https://robotics.mvla.net/svn/frc971/2013/trunk/src@4078 f308d9b7-e957-4cde-b6ac-9a88185e7312
diff --git a/aos/atom_code/input/JoystickInput.cpp b/aos/atom_code/input/JoystickInput.cpp
new file mode 100644
index 0000000..6aeca4b
--- /dev/null
+++ b/aos/atom_code/input/JoystickInput.cpp
@@ -0,0 +1,66 @@
+#include "aos/atom_code/input/JoystickInput.h"
+
+#include "aos/aos_core.h"
+#include "aos/common/Configuration.h"
+#include "aos/common/network/ReceiveSocket.h"
+#include "aos/common/messages/RobotState.q.h"
+
+namespace aos {
+
+void JoystickInput::SetupButtons() {
+  for (int i = 0; i < 4; ++i) {
+    old_buttons[i] = buttons[i];
+  }
+  buttons[0] = control_data_.stick0Buttons;
+  buttons[1] = control_data_.stick1Buttons;
+  buttons[2] = control_data_.stick2Buttons;
+  buttons[3] = control_data_.stick3Buttons;
+
+  buttons[0] |= (control_data_.enabled << (ENABLED - 9)) |
+      (control_data_.autonomous << (AUTONOMOUS - 9)) |
+      (control_data_.fmsAttached << (FMS_ATTACHED - 9));
+
+  for (int j = 0; j < 4; ++j) {
+    for (int k = 1; k <= 12; ++k) {
+      if (PosEdge(j, k)) {
+        LOG(INFO, "PosEdge(%d, %d)\n", j, k);
+      }
+      if (NegEdge(j, k)) {
+        LOG(INFO, "NegEdge(%d, %d)\n", j, k);
+      }
+    }
+  }
+  if (PosEdge(0, ENABLED)) LOG(INFO, "PosEdge(ENABLED)\n");
+  if (NegEdge(0, ENABLED)) LOG(INFO, "NegEdge(ENABLED)\n");
+  if (PosEdge(0, AUTONOMOUS)) LOG(INFO, "PosEdge(AUTONOMOUS)\n");
+  if (NegEdge(0, AUTONOMOUS)) LOG(INFO, "NegEdge(AUTONOMOUS)\n");
+  if (PosEdge(0, FMS_ATTACHED)) LOG(INFO, "PosEdge(FMS_ATTACHED)\n");
+  if (NegEdge(0, FMS_ATTACHED)) LOG(INFO, "NegEdge(FMS_ATTACHED)\n");
+}
+
+void JoystickInput::Run() {
+  ReceiveSocket sock(NetworkPort::kDS);
+  while (true) {
+    if (sock.Recv(&control_data_, sizeof(control_data_)) == -1) {
+      LOG(WARNING, "socket receive failed\n");
+      continue;
+    }
+    SetupButtons();
+    if (!robot_state.MakeWithBuilder().enabled(Pressed(0, ENABLED)).
+        autonomous(Pressed(0, AUTONOMOUS)).
+        team_id(ntohs(control_data_.teamID)).Send()) {
+			LOG(WARNING, "sending robot_state failed\n");
+		}
+		if (robot_state.FetchLatest()) {
+    	char state[1024];
+    	robot_state->Print(state, sizeof(state));
+    	LOG(DEBUG, "robot_state={%s}\n", state);
+		} else {
+			LOG(WARNING, "fetching robot_state failed\n");
+		}
+    RunIteration();
+  }
+}
+
+}  // namespace aos
+