ao_radio: generalise setup of packet size
authorAnthony Towns <aj@erisian.com.au>
Wed, 2 Feb 2011 09:12:57 +0000 (19:12 +1000)
committerKeith Packard <keithp@keithp.com>
Sat, 19 Feb 2011 00:04:14 +0000 (16:04 -0800)
src/ao.h
src/ao_radio.c

index cef20e61731e869a5a3a517d7a2186cf9fa5c694..c2d7d22bfdbc22cd0be50d4ed16f543c16a3e15b 100644 (file)
--- a/src/ao.h
+++ b/src/ao.h
@@ -922,13 +922,13 @@ ao_radio_get(void);
 #define ao_radio_put() ao_mutex_put(&ao_radio_mutex)
 
 void
-ao_radio_set_telemetry(void);
+ao_radio_set_fixed_pkt(size_t size);
 
-void
-ao_radio_set_packet(void);
+#define ao_radio_set_telemetry() \
+        ao_radio_set_fixed_pkt(sizeof (struct ao_telemetry))
 
-void
-ao_radio_set_rdf(void);
+#define ao_radio_set_packet() \
+        ao_radio_set_fixed_pkt(sizeof (struct ao_packet))
 
 void
 ao_radio_send(__xdata void *data, uint8_t size) __reentrant;
index 7b7c5161fb0ac95c2d730f7f44b91136a292c84b..d156f54349caefffa33bc24bc638b560e2d3982e 100644 (file)
@@ -217,7 +217,7 @@ static __code uint8_t rdf_setup[] = {
                                 RF_PKTCTRL0_LENGTH_CONFIG_FIXED),
 };
 
-static __code uint8_t telemetry_setup[] = {
+static __code uint8_t fixed_pkt_setup[] = {
        RF_MDMCFG4_OFF,         ((CHANBW_E << RF_MDMCFG4_CHANBW_E_SHIFT) |
                                 (CHANBW_M << RF_MDMCFG4_CHANBW_M_SHIFT) |
                                 (DRATE_E << RF_MDMCFG4_DRATE_E_SHIFT)),
@@ -232,34 +232,8 @@ static __code uint8_t telemetry_setup[] = {
        RF_DEVIATN_OFF,         ((DEVIATION_E << RF_DEVIATN_DEVIATION_E_SHIFT) |
                                 (DEVIATION_M << RF_DEVIATN_DEVIATION_M_SHIFT)),
 
-       /* max packet length */
-       RF_PKTLEN_OFF,          sizeof (struct ao_telemetry),
-       RF_PKTCTRL1_OFF,        ((1 << PKTCTRL1_PQT_SHIFT)|
-                                PKTCTRL1_APPEND_STATUS|
-                                PKTCTRL1_ADR_CHK_NONE),
-       RF_PKTCTRL0_OFF,        (RF_PKTCTRL0_WHITE_DATA|
-                                RF_PKTCTRL0_PKT_FORMAT_NORMAL|
-                                RF_PKTCTRL0_CRC_EN|
-                                RF_PKTCTRL0_LENGTH_CONFIG_FIXED),
-};
-
-static __code uint8_t packet_setup[] = {
-       RF_MDMCFG4_OFF,         ((CHANBW_E << RF_MDMCFG4_CHANBW_E_SHIFT) |
-                                (CHANBW_M << RF_MDMCFG4_CHANBW_M_SHIFT) |
-                                (DRATE_E << RF_MDMCFG4_DRATE_E_SHIFT)),
-       RF_MDMCFG3_OFF,         (DRATE_M << RF_MDMCFG3_DRATE_M_SHIFT),
-       RF_MDMCFG2_OFF,         (RF_MDMCFG2_DEM_DCFILT_OFF |
-                                RF_MDMCFG2_MOD_FORMAT_GFSK |
-                                RF_MDMCFG2_SYNC_MODE_15_16_THRES),
-       RF_MDMCFG1_OFF,         (RF_MDMCFG1_FEC_EN |
-                                RF_MDMCFG1_NUM_PREAMBLE_4 |
-                                (2 << RF_MDMCFG1_CHANSPC_E_SHIFT)),
-
-       RF_DEVIATN_OFF,         ((DEVIATION_E << RF_DEVIATN_DEVIATION_E_SHIFT) |
-                                (DEVIATION_M << RF_DEVIATN_DEVIATION_M_SHIFT)),
-
-       /* max packet length */
-       RF_PKTLEN_OFF,          sizeof (struct ao_packet),
+       /* max packet length -- now set inline */
+       // RF_PKTLEN_OFF,               sizeof (struct ao_telemetry),
        RF_PKTCTRL1_OFF,        ((1 << PKTCTRL1_PQT_SHIFT)|
                                 PKTCTRL1_APPEND_STATUS|
                                 PKTCTRL1_ADR_CHK_NONE),
@@ -290,27 +264,12 @@ ao_radio_general_isr(void) __interrupt 16
 }
 
 void
-ao_radio_set_telemetry(void)
+ao_radio_set_fixed_pkt(size_t size)
 {
        uint8_t i;
-       for (i = 0; i < sizeof (telemetry_setup); i += 2)
-               RF[telemetry_setup[i]] = telemetry_setup[i+1];
-}
-
-void
-ao_radio_set_packet(void)
-{
-       uint8_t i;
-       for (i = 0; i < sizeof (packet_setup); i += 2)
-               RF[packet_setup[i]] = packet_setup[i+1];
-}
-
-void
-ao_radio_set_rdf(void)
-{
-       uint8_t i;
-       for (i = 0; i < sizeof (rdf_setup); i += 2)
-               RF[rdf_setup[i]] = rdf_setup[i+1];
+       for (i = 0; i < sizeof (fixed_pkt_setup); i += 2)
+               RF[fixed_pkt_setup[i]] = fixed_pkt_setup[i+1];
+       RF[RF_PKTLEN_OFF] = size;
 }
 
 void
@@ -452,8 +411,7 @@ ao_radio_rdf(int ms)
                ao_dma_abort(ao_radio_dma);
                ao_radio_idle();
        }
-       for (i = 0; i < sizeof (telemetry_setup); i += 2)
-               RF[telemetry_setup[i]] = telemetry_setup[i+1];
+       ao_radio_set_telemetry();
        ao_radio_put();
 }