remove all the crio, bbb, and 2014 code

This also meant upgrading to clang-3.5 from llvm.org to try to get it to
build code for the roboRIO.

Change-Id: I44df4af4e9e04296ee7934cc787da3101b1ac449
diff --git a/frc971/vision/CameraServer.cc b/frc971/vision/CameraServer.cc
new file mode 100644
index 0000000..35b16b4
--- /dev/null
+++ b/frc971/vision/CameraServer.cc
@@ -0,0 +1,82 @@
+#include <string.h>
+
+#include "aos/linux_code/output/HTTPServer.h"
+#include "aos/linux_code/output/evhttp_ctemplate_emitter.h"
+#include "aos/linux_code/output/ctemplate_cache.h"
+#include "ctemplate/template.h"
+#include "aos/linux_code/init.h"
+#include "aos/common/logging/logging.h"
+#include "aos/linux_code/configuration.h"
+
+#include "frc971/constants.h"
+
+RegisterTemplateFilename(ROBOT_HTML, "robot.html.tpl");
+
+namespace frc971 {
+
+class CameraServer : public aos::http::HTTPServer {
+ public:
+  CameraServer() : HTTPServer(::aos::configuration::GetRootDirectory(), 8080),
+      buf_(NULL) {
+    AddPage<CameraServer>("/robot.html", &CameraServer::RobotHTML, this);
+  }
+
+ private:
+  evbuffer *buf_;
+  bool Setup(evhttp_request *request, const char *content_type) {
+    if (evhttp_add_header(evhttp_request_get_output_headers(request),
+                          "Content-Type", content_type) == -1) {
+      LOG(WARNING, "adding Content-Type failed\n");
+      evhttp_send_error(request, HTTP_INTERNAL, NULL);
+      return false;
+    }
+    if (buf_ == NULL) buf_ = evbuffer_new();
+    if (buf_ == NULL) {
+      LOG(WARNING, "evbuffer_new() failed\n");
+      evhttp_send_error(request, HTTP_INTERNAL, NULL);
+      return false;
+    }
+    return true;
+  }
+  void RobotHTML(evhttp_request *request) {
+    if (!Setup(request, "text/html")) return;
+
+    ctemplate::TemplateDictionary dict(ROBOT_HTML);
+    const char *host = evhttp_find_header(
+        evhttp_request_get_input_headers(request), "Host");
+    if (host == NULL) {
+      evhttp_send_error(request, HTTP_BADREQUEST, "no Host header");
+      return;
+    }
+    const char *separator = strchrnul(host, ':');
+    size_t length = separator - host;
+    // Don't include the last ':' (or the terminating '\0') or anything else
+    // after it.
+    dict.SetValue("HOST", ctemplate::TemplateString(host, length));
+
+    dict.SetIntValue("CENTER", constants::GetValues().camera_center);
+
+    aos::http::EvhttpCtemplateEmitter emitter(buf_);
+    if (!aos::http::get_template_cache()->
+        ExpandWithData(ROBOT_HTML, ctemplate::STRIP_WHITESPACE,
+                       &dict, NULL, &emitter)) {
+      LOG(ERROR, "expanding the template failed\n");
+      evhttp_send_error(request, HTTP_INTERNAL, NULL);
+      return;
+    }
+    if (emitter.error()) {
+      evhttp_send_error(request, HTTP_INTERNAL, NULL);
+      return;
+    }
+    evhttp_send_reply(request, HTTP_OK, NULL, buf_);
+  }
+};
+
+}  // namespace frc971
+
+int main() {
+  ::aos::InitNRT();
+  ::frc971::CameraServer server;
+  server.Run();
+  ::aos::Cleanup();
+}
diff --git a/frc971/vision/robot.html.tpl b/frc971/vision/robot.html.tpl
new file mode 100644
index 0000000..7ae51a6
--- /dev/null
+++ b/frc971/vision/robot.html.tpl
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML>
+<html>
+  <head>
+    <title>971 Camera Code: Robot Stream</title>
+    <style type="text/css">
+      #body {
+        display: block;
+        margin: 0px;
+        margin-top: 0px;
+        margin-right: 0px;
+        margin-bottom: 0px;
+        margin-left: 0px;
+      }
+      #img {
+        position: absolute;
+        left: 50%;
+        top: 0%;
+        margin: 0 0 0 -320px;
+      }
+      #center {
+        left: 50%;
+        position: absolute;
+        width: 2px;
+        height: 100%;
+        background-color: red;
+      }
+      #middle {
+        top: 240px;
+        margin-top: -1px;
+        width: 100%;
+        position: absolute;
+        height: 2px;
+        background-color: red;
+      }
+      #footer {
+        top: 482px;
+        left: 10px;
+        position: absolute;
+      }
+      #center {
+        margin-left: {{CENTER}}px;
+      }
+    </style>
+  </head>
+  <body id="body">
+        <img id="img" src="http://{{HOST}}:9714" />
+        <div id="center"></div>
+        <div id="middle"></div>
+        <div id="footer">
+          <!--<form>
+            <input type="button" value="Camera Controls"
+           onclick="window.open('control.htm', 'Camera_Controls')">
+   </form>-->
+        </div>
+  </body>
+</html>
diff --git a/frc971/vision/vision.gyp b/frc971/vision/vision.gyp
new file mode 100644
index 0000000..b5cf558
--- /dev/null
+++ b/frc971/vision/vision.gyp
@@ -0,0 +1,26 @@
+{
+  'targets': [
+    {
+      'target_name': 'CameraServer',
+      'type': 'executable',
+      'sources': [
+        'CameraServer.cc',
+      ],
+      'dependencies': [
+        '<(AOS)/linux_code/output/output.gyp:http_server',
+        '../frc971.gyp:constants',
+        '<(AOS)/linux_code/linux_code.gyp:init',
+        '<(AOS)/build/aos.gyp:logging',
+        '<(AOS)/linux_code/linux_code.gyp:configuration',
+      ],
+      'copies': [
+        {
+          'destination': '<(rsync_dir)',
+          'files': [
+            'robot.html.tpl',
+          ],
+        },
+      ],
+    },
+  ],
+}