*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
#define FOSC 26000000
-#define ao_radio_select() ao_spi_get_mask(AO_CC115L_SPI_CS_PORT,(1 << AO_CC115L_SPI_CS_PIN),AO_CC115L_SPI_BUS,AO_SPI_SPEED_1MHz)
+#define AO_CC115L_SPI_SPEED ao_spi_speed(AO_CC115L_SPI_BUS, 6500000) /* for back-to-back access */
+
+#define ao_radio_select() ao_spi_get_mask(AO_CC115L_SPI_CS_PORT,(1 << AO_CC115L_SPI_CS_PIN),AO_CC115L_SPI_BUS,AO_CC115L_SPI_SPEED)
#define ao_radio_deselect() ao_spi_put_mask(AO_CC115L_SPI_CS_PORT,(1 << AO_CC115L_SPI_CS_PIN),AO_CC115L_SPI_BUS)
#define ao_radio_spi_send(d,l) ao_spi_send((d), (l), AO_CC115L_SPI_BUS)
#define ao_radio_spi_send_fixed(d,l) ao_spi_send_fixed((d), (l), AO_CC115L_SPI_BUS)
const char *comment;
};
-#define NUM_TRACE 256
+#define NUM_TRACE 32
static struct ao_cc115l_trace trace[NUM_TRACE];
static int trace_i;
if (new_mode == ao_radio_mode)
return;
- changes = new_mode & (~ao_radio_mode);
+ changes = (uint16_t) (new_mode & (~ao_radio_mode));
if (changes & AO_RADIO_MODE_BITS_PACKET_TX) {
ao_radio_reg_write(CC115L_MDMCFG4, packet_rate_setup[ao_config.radio_rate].mdmcfg4);
ao_radio_reg_write(CC115L_DEVIATN, packet_rate_setup[ao_config.radio_rate].deviatn);
for (i = 0; i < sizeof (packet_setup) / sizeof (packet_setup[0]); i += 2)
- ao_radio_reg_write(packet_setup[i], packet_setup[i+1]);
+ ao_radio_reg_write((uint8_t) packet_setup[i], (uint8_t) packet_setup[i+1]);
}
if (changes & AO_RADIO_MODE_BITS_RDF)
for (i = 0; i < sizeof (rdf_setup) / sizeof (rdf_setup[0]); i += 2)
- ao_radio_reg_write(rdf_setup[i], rdf_setup[i+1]);
+ ao_radio_reg_write((uint8_t) rdf_setup[i], (uint8_t) rdf_setup[i+1]);
if (changes & AO_RADIO_MODE_BITS_APRS)
for (i = 0; i < sizeof (aprs_setup) / sizeof (aprs_setup[0]); i += 2)
- ao_radio_reg_write(aprs_setup[i], aprs_setup[i+1]);
+ ao_radio_reg_write((uint8_t) aprs_setup[i], (uint8_t) aprs_setup[i+1]);
if (changes & AO_RADIO_MODE_BITS_INFINITE)
ao_radio_reg_write(CC115L_PKTCTRL0, AO_PKTCTRL0_INFINITE);
#if HAS_RADIO_POWER
#define RADIO_POWER ao_config.radio_power
#else
-#define RADIO_POWER 0xc0
+
+#if 0
+#define RADIO_POWER 0x03 /* -31.75dBm on the test board */
+#endif
+
+#define RADIO_POWER 0xc0 /* full power */
+
#endif
static void
ao_delay(AO_MS_TO_TICKS(10));
for (i = 0; i < sizeof (radio_setup) / sizeof (radio_setup[0]); i += 2)
- ao_radio_reg_write(radio_setup[i], radio_setup[i+1]);
+ ao_radio_reg_write((uint8_t) radio_setup[i], (uint8_t) radio_setup[i+1]);
ao_radio_mode = 0;
if (!ao_radio_configured)
ao_radio_setup();
if (ao_config.radio_setting != last_radio_setting) {
- ao_radio_reg_write(CC115L_FREQ2, ao_config.radio_setting >> 16);
- ao_radio_reg_write(CC115L_FREQ1, ao_config.radio_setting >> 8);
- ao_radio_reg_write(CC115L_FREQ0, ao_config.radio_setting);
+ ao_radio_reg_write(CC115L_FREQ2, (uint8_t) (ao_config.radio_setting >> 16));
+ ao_radio_reg_write(CC115L_FREQ1, (uint8_t) (ao_config.radio_setting >> 8));
+ ao_radio_reg_write(CC115L_FREQ0, (uint8_t) (ao_config.radio_setting));
last_radio_setting = ao_config.radio_setting;
/* Make sure the RF calibration is current */
ao_radio_strobe(CC115L_SCAL);
}
if (ao_config.radio_rate != last_radio_rate) {
- ao_radio_mode &= ~AO_RADIO_MODE_BITS_PACKET_TX;
+ ao_radio_mode &= (uint16_t) ~AO_RADIO_MODE_BITS_PACKET_TX;
last_radio_rate = ao_config.radio_rate;
}
}
uint8_t ao_radio_tone_current;
uint8_t ao_radio_tone_offset;
-int16_t
+static int16_t
ao_radio_tone_fill(uint8_t *buf, int16_t len)
{
int16_t ret = 0;
this_time = len;
/* queue the data */
- memset(buf, t->value, this_time);
+ memset(buf, t->value, (size_t) this_time);
/* mark as sent */
len -= this_time;
- ao_radio_tone_offset += this_time;
+ ao_radio_tone_offset += (uint8_t) this_time;
ret += this_time;
if (ao_radio_tone_offset >= t->len) {
ao_radio_tone = tones;
ao_radio_tone_current = 0;
ao_radio_tone_offset = 0;
- ao_radio_tone_count = ntones;
+ ao_radio_tone_count = (uint8_t) ntones;
_ao_radio_send_lots(ao_radio_tone_fill, AO_RADIO_MODE_RDF);
ao_radio_put();
}
uint8_t mode = 2;
static uint8_t radio_on;
ao_cmd_white();
- if (ao_cmd_lex_c != '\n') {
- ao_cmd_decimal();
- mode = (uint8_t) ao_cmd_lex_u32;
- }
+ if (ao_cmd_lex_c != '\n')
+ mode = (uint8_t) ao_cmd_decimal();
mode++;
if ((mode & 2) && !radio_on) {
#if HAS_MONITOR
this_time = ao_radio_send_len;
if (this_time > len)
this_time = len;
- memcpy(buf, ao_radio_send_buf, this_time);
+ memcpy(buf, ao_radio_send_buf, (size_t) this_time);
ao_radio_send_buf += this_time;
ao_radio_send_len -= this_time;
if (ao_radio_send_len == 0)
/* At the last buffer, set the total length */
if (done) {
- ao_radio_set_len(total & 0xff);
+ ao_radio_set_len((uint8_t) (total & 0xff));
ao_radio_set_mode(mode | AO_RADIO_MODE_BITS_FIXED);
} else {
ao_radio_set_len(0xff);
b = buf;
while (cnt) {
- uint8_t this_len = cnt;
+ uint8_t this_len = (uint8_t) cnt;
/* Wait for some space in the fifo */
while (!ao_radio_abort && (fifo_space = ao_radio_tx_fifo_space()) == 0) {