Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / src / drivers / ao_pad.c
index dc2c83fe0cf3c668668dfbf354cbae020d14533f..ffe46c6833723df2279559690e1bec2e7ad6272e 100644 (file)
@@ -29,6 +29,10 @@ static __pdata uint8_t       ao_pad_box;
 static __xdata uint8_t ao_pad_disabled;
 static __pdata uint16_t        ao_pad_packet_time;
 
 static __xdata uint8_t ao_pad_disabled;
 static __pdata uint16_t        ao_pad_packet_time;
 
+#ifndef AO_PAD_RSSI_MINIMUM
+#define AO_PAD_RSSI_MINIMUM    -90
+#endif
+
 #define DEBUG  1
 
 #if DEBUG
 #define DEBUG  1
 
 #if DEBUG
@@ -36,8 +40,8 @@ static __pdata uint8_t        ao_pad_debug;
 #define PRINTD(...) (ao_pad_debug ? (printf(__VA_ARGS__), 0) : 0)
 #define FLUSHD()    (ao_pad_debug ? (flush(), 0) : 0)
 #else
 #define PRINTD(...) (ao_pad_debug ? (printf(__VA_ARGS__), 0) : 0)
 #define FLUSHD()    (ao_pad_debug ? (flush(), 0) : 0)
 #else
-#define PRINTD(...) 
-#define FLUSHD()    
+#define PRINTD(...)
+#define FLUSHD()
 #endif
 
 static void
 #endif
 
 static void
@@ -123,6 +127,8 @@ ao_pad_monitor(void)
 
 #define VOLTS_TO_PYRO(x) ((int16_t) ((x) * 27.0 / 127.0 / 3.3 * 32767.0))
 
 
 #define VOLTS_TO_PYRO(x) ((int16_t) ((x) * 27.0 / 127.0 / 3.3 * 32767.0))
 
+               /* convert ADC value to voltage in tenths, then add .2 for the diode drop */
+               query.battery = (packet->adc.batt + 96) / 192 + 2;
                cur = 0;
                if (pyro > VOLTS_TO_PYRO(10)) {
                        query.arm_status = AO_PAD_ARM_STATUS_ARMED;
                cur = 0;
                if (pyro > VOLTS_TO_PYRO(10)) {
                        query.arm_status = AO_PAD_ARM_STATUS_ARMED;
@@ -138,7 +144,7 @@ ao_pad_monitor(void)
                }
                if ((ao_time() - ao_pad_packet_time) > AO_SEC_TO_TICKS(2))
                        cur |= AO_LED_RED;
                }
                if ((ao_time() - ao_pad_packet_time) > AO_SEC_TO_TICKS(2))
                        cur |= AO_LED_RED;
-               else if (ao_radio_cmac_rssi < -90)
+               else if (ao_radio_cmac_rssi < AO_PAD_RSSI_MINIMUM)
                        cur |= AO_LED_AMBER;
                else
                        cur |= AO_LED_GREEN;
                        cur |= AO_LED_AMBER;
                else
                        cur |= AO_LED_GREEN;
@@ -255,7 +261,7 @@ ao_pad(void)
                if (ret != AO_RADIO_CMAC_OK)
                        continue;
                ao_pad_packet_time = ao_time();
                if (ret != AO_RADIO_CMAC_OK)
                        continue;
                ao_pad_packet_time = ao_time();
-               
+
                ao_pad_box = ao_pad_read_box();
 
                PRINTD ("tick %d box %d (me %d) cmd %d channels %02x\n",
                ao_pad_box = ao_pad_read_box();
 
                PRINTD ("tick %d box %d (me %d) cmd %d channels %02x\n",