projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Horrible kludge -- disable radio while talking with SD card
[fw/altos]
/
src
/
drivers
/
ao_cc115l.c
diff --git
a/src/drivers/ao_cc115l.c
b/src/drivers/ao_cc115l.c
index 6da1a6786a88e9af3285d529b3f28e790d909138..d6a938ac5c32a8fc0bf6152a08d7da0d64444389 100644
(file)
--- a/
src/drivers/ao_cc115l.c
+++ b/
src/drivers/ao_cc115l.c
@@
-23,7
+23,7
@@
#define AO_RADIO_MAX_SEND sizeof (struct ao_telemetry_generic)
#define AO_RADIO_MAX_SEND sizeof (struct ao_telemetry_generic)
-
static
uint8_t ao_radio_mutex;
+uint8_t ao_radio_mutex;
static uint8_t ao_radio_fifo; /* fifo drained interrupt received */
static uint8_t ao_radio_done; /* tx done interrupt received */
static uint8_t ao_radio_fifo; /* fifo drained interrupt received */
static uint8_t ao_radio_done; /* tx done interrupt received */
@@
-33,7
+33,7
@@
static uint8_t ao_radio_mcu_wake; /* MARC status change */
static uint8_t ao_radio_marcstate; /* Last read MARC state value */
/* Debugging commands */
static uint8_t ao_radio_marcstate; /* Last read MARC state value */
/* Debugging commands */
-#define CC115L_DEBUG
1
+#define CC115L_DEBUG
0
/* Runtime tracing */
#define CC115L_TRACE 0
/* Runtime tracing */
#define CC115L_TRACE 0
@@
-516,7
+516,7
@@
ao_radio_get(void)
}
static void
}
static void
-ao_radio_send_lots(ao_radio_fill_func fill, uint8_t mode);
+
_
ao_radio_send_lots(ao_radio_fill_func fill, uint8_t mode);
#define ao_radio_put() ao_mutex_put(&ao_radio_mutex)
#define ao_radio_put() ao_mutex_put(&ao_radio_mutex)
@@
-569,10
+569,12
@@
ao_radio_tone_fill(uint8_t *buf, int16_t len)
static void
ao_radio_tone_run(struct ao_radio_tone *tones, int ntones)
{
static void
ao_radio_tone_run(struct ao_radio_tone *tones, int ntones)
{
+ ao_radio_get();
ao_radio_tone = tones;
ao_radio_tone_current = 0;
ao_radio_tone_offset = 0;
ao_radio_tone = tones;
ao_radio_tone_current = 0;
ao_radio_tone_offset = 0;
- ao_radio_send_lots(ao_radio_tone_fill, AO_RADIO_MODE_RDF);
+ _ao_radio_send_lots(ao_radio_tone_fill, AO_RADIO_MODE_RDF);
+ ao_radio_put();
}
void
}
void
@@
-718,15
+720,19
@@
ao_radio_send_fill(uint8_t *buf, int16_t len)
void
ao_radio_send(const void *d, uint8_t size)
{
void
ao_radio_send(const void *d, uint8_t size)
{
+ int i;
+
+ ao_radio_get();
ao_radio_send_len = ao_fec_encode(d, size, tx_data);
ao_radio_send_buf = tx_data;
ao_radio_send_len = ao_fec_encode(d, size, tx_data);
ao_radio_send_buf = tx_data;
- ao_radio_send_lots(ao_radio_send_fill, AO_RADIO_MODE_PACKET_TX);
+ _ao_radio_send_lots(ao_radio_send_fill, AO_RADIO_MODE_PACKET_TX);
+ ao_radio_put();
}
#define AO_RADIO_LOTS 64
static void
}
#define AO_RADIO_LOTS 64
static void
-ao_radio_send_lots(ao_radio_fill_func fill, uint8_t mode)
+
_
ao_radio_send_lots(ao_radio_fill_func fill, uint8_t mode)
{
uint8_t buf[AO_RADIO_LOTS], *b;
int cnt;
{
uint8_t buf[AO_RADIO_LOTS], *b;
int cnt;
@@
-735,7
+741,6
@@
ao_radio_send_lots(ao_radio_fill_func fill, uint8_t mode)
uint8_t started = 0;
uint8_t fifo_space;
uint8_t started = 0;
uint8_t fifo_space;
- ao_radio_get();
fifo_space = CC115L_FIFO_SIZE;
ao_radio_done = 0;
ao_radio_fifo = 0;
fifo_space = CC115L_FIFO_SIZE;
ao_radio_done = 0;
ao_radio_fifo = 0;
@@
-795,13
+800,14
@@
ao_radio_send_lots(ao_radio_fill_func fill, uint8_t mode)
ao_radio_idle();
ao_radio_wait_done();
ao_radio_pa_off();
ao_radio_idle();
ao_radio_wait_done();
ao_radio_pa_off();
- ao_radio_put();
}
void
ao_radio_send_aprs(ao_radio_fill_func fill)
{
}
void
ao_radio_send_aprs(ao_radio_fill_func fill)
{
- ao_radio_send_lots(fill, AO_RADIO_MODE_APRS);
+ ao_radio_get();
+ _ao_radio_send_lots(fill, AO_RADIO_MODE_APRS);
+ ao_radio_put();
}
#if CC115L_DEBUG
}
#if CC115L_DEBUG