altos: Support telefire products in cc1200 driver
[fw/altos] / src / drivers / ao_cc1200.c
index df4bd335a974ba3d6df76143f4faf9b67de14d58..6bccb18863f9439ac0f4ed46f76dc7bd90adabcd 100644 (file)
@@ -20,6 +20,9 @@
 #include <ao_exti.h>
 #include <ao_fec.h>
 #include <ao_packet.h>
+#if HAS_PAD
+#include <ao_pad.h>
+#endif
 
 static uint8_t ao_radio_mutex;
 
@@ -41,7 +44,11 @@ int8_t       ao_radio_rssi;                  /* Last received RSSI value */
 
 extern const uint32_t  ao_radio_cal;
 
+#ifdef AO_CC1200_FOSC
+#define FOSC   AO_CC1200_FOSC
+#else
 #define FOSC   40000000
+#endif
 
 #define ao_radio_select()      ao_spi_get_mask(AO_CC1200_SPI_CS_PORT,(1 << AO_CC1200_SPI_CS_PIN),AO_CC1200_SPI_BUS,AO_SPI_SPEED_FAST)
 #define ao_radio_deselect()    ao_spi_put_mask(AO_CC1200_SPI_CS_PORT,(1 << AO_CC1200_SPI_CS_PIN),AO_CC1200_SPI_BUS)
@@ -301,20 +308,28 @@ ao_radio_idle(void)
  *     CHANBW = 5.0 (round to 9.5)
  */
 
+#if FOSC == 40000000
 #define PACKET_SYMBOL_RATE_M           1013008
-
 #define PACKET_SYMBOL_RATE_E_384       8
+#define PACKET_SYMBOL_RATE_E_96                6
+#define PACKET_SYMBOL_RATE_E_24                4
+#endif
+
+#if FOSC == 32000000
+#define PACKET_SYMBOL_RATE_M           239914
+#define PACKET_SYMBOL_RATE_E_384       9
+#define PACKET_SYMBOL_RATE_E_96                7
+#define PACKET_SYMBOL_RATE_E_24                5
+#endif
 
 /* 200 / 2 = 100 */
 #define PACKET_CHAN_BW_384     ((CC1200_CHAN_BW_ADC_CIC_DECFACT_12 << CC1200_CHAN_BW_ADC_CIC_DECFACT) | \
                                 (16 << CC1200_CHAN_BW_BB_CIC_DECFACT))
 
-#define PACKET_SYMBOL_RATE_E_96                6
 /* 200 / 10 = 20 */
 #define PACKET_CHAN_BW_96      ((CC1200_CHAN_BW_ADC_CIC_DECFACT_48 << CC1200_CHAN_BW_ADC_CIC_DECFACT) | \
                                 (16 << CC1200_CHAN_BW_BB_CIC_DECFACT))
 
-#define PACKET_SYMBOL_RATE_E_24                4
 /* 200 / 25 = 8 */
 #define PACKET_CHAN_BW_24      ((CC1200_CHAN_BW_ADC_CIC_DECFACT_48 << CC1200_CHAN_BW_ADC_CIC_DECFACT) | \
                                 (44 << CC1200_CHAN_BW_BB_CIC_DECFACT))
@@ -800,6 +815,9 @@ ao_radio_test_cmd(void)
 #endif
 #if PACKET_HAS_SLAVE
                ao_packet_slave_stop();
+#endif
+#if HAS_PAD
+               ao_pad_disable();
 #endif
                ao_radio_get(0xff);
                ao_radio_set_mode(AO_RADIO_MODE_TEST);
@@ -825,6 +843,9 @@ ao_radio_test_cmd(void)
                radio_on = 0;
 #if HAS_MONITOR
                ao_monitor_enable();
+#endif
+#if HAS_PAD
+               ao_pad_enable();
 #endif
        }
 }