summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ao.h10
-rw-r--r--src/ao_radio.c58
2 files changed, 13 insertions, 55 deletions
diff --git a/src/ao.h b/src/ao.h
index cef20e61..c2d7d22b 100644
--- 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;
diff --git a/src/ao_radio.c b/src/ao_radio.c
index 7b7c5161..d156f543 100644
--- a/src/ao_radio.c
+++ b/src/ao_radio.c
@@ -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();
}