added analog sensors and cleaned up the sensor data structure a bit
diff --git a/gyro_board/src/usb/analog.c b/gyro_board/src/usb/analog.c
index 87d67ad..b00d1b4 100644
--- a/gyro_board/src/usb/analog.c
+++ b/gyro_board/src/usb/analog.c
@@ -1,50 +1,40 @@
-// ****************************************************************************
-// CopyLeft qwerk Robotics unINC. 2010 All Rights Reserved.
-// ****************************************************************************
-
 #include "analog.h"
 
-#include "FreeRTOS.h"
-#include "queue.h"
-#include "task.h"
+#include "LPC17xx.h"
 
 void analog_init(void) {
-  // b[1:0] CAN RD1 p0.0
-  // b[3:2] CAN TD1 p0.1
-  //PINCON->PINSEL0 = 0x00000005;
-
-  // b[29:28] USB_DMIN   p0.30
-  // b[27:26] USB_DPLUS  p0.29
-  // b[21:20] AD0.3  p0.26
-  // b[19:18] AD0.2  p0.25
-  // PINCON->PINSEL1 = 0x14140000;
-
-  // PINCON->PINSEL2 = 0x0;
-
-  // b[31:30] AD0.5  p1.31
-  // b[29:28] V_BUS  p1.30
-  // b[21:20] MCOB1  p1.26
-  // b[19:18] MCOA1  p1.25
-  // b[15:14] MCI1  p1.23
-  // b[13:12] MCOB0  p1.22
-  // b[09:08] MCI0  p1.20
-  // b[07:06] MCOA0  p1.19
-  // b[05:04] USB_UP_LED  p1.18
-  //PINCON->PINSEL3 = 0xE0145150;
   SC->PCONP |= PCONP_PCAD;
 
   // Enable AD0.0, AD0.1, AD0.2, AD0.3
-  PINCON->PINSEL1 &= 0xFFC03FFF;
-  PINCON->PINSEL1 |= 0x00D54000;
+  PINCON->PINSEL1 &= ~(2 << 14 | 2 << 16 | 2 << 18 | 2 << 20);
+  PINCON->PINSEL1 |= 1 << 14 | 1 << 16 | 1 << 18 | 1 << 20;
   ADC->ADCR = 0x00200500;
+  ADC->ADCR = (1 << 0 | 1 << 1 | 1 << 2 | 1 << 3) /* enable all 4 */ |
+      7 << 8 /* 100MHz / 8 = 12.5MHz */ |
+      1 << 16 /* enable burst mode */ |
+      1 << 21 /* turn on ADC */;
 }
 
+uint16_t analog(int channel) {
+  uint32_t value;
+  do {
+    switch (channel) {
+      case 0:
+        value = ADC->ADDR0;
+        break;
+      case 1:
+        value = ADC->ADDR1;
+        break;
+      case 2:
+        value = ADC->ADDR2;
+        break;
+      case 3:
+        value = ADC->ADDR3;
+        break;
+      default:
+        return 0xFFFF;
+    }
+  } while (!(value & 1 << 31));
 
-int analog(int channel) {
-  ADC->ADCR = ((ADC->ADCR & 0xF8FFFF00) | (0x01000000 | (1 << channel)));
-
-  // Poll until it is done.
-  while(!(ADC->ADGDR & 0x80000000));
-
-  return ((ADC->ADGDR & 0x0000FFF0) >> 4);
+  return ((value & 0xFFF0) >> 4);
 }