summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/ao_cc115l.c5
-rw-r--r--src/drivers/ao_rf_cc115l.h2
-rw-r--r--src/drivers/ao_rfpa0133.c7
3 files changed, 9 insertions, 5 deletions
diff --git a/src/drivers/ao_cc115l.c b/src/drivers/ao_cc115l.c
index feff82af..5b0ec3d7 100644
--- a/src/drivers/ao_cc115l.c
+++ b/src/drivers/ao_cc115l.c
@@ -452,6 +452,7 @@ static void
ao_radio_get(uint8_t len)
{
static uint32_t last_radio_setting;
+ static uint8_t last_power_setting;
ao_mutex_get(&ao_radio_mutex);
if (!ao_radio_configured)
@@ -462,6 +463,10 @@ ao_radio_get(uint8_t len)
ao_radio_reg_write(CC115L_FREQ0, ao_config.radio_setting);
last_radio_setting = ao_config.radio_setting;
}
+ if (ao_config.radio_power != last_power_setting) {
+ ao_radio_reg_write(CC115L_PA, ao_config.radio_power);
+ last_power_setting = ao_config.radio_power;
+ }
ao_radio_set_len(len);
}
diff --git a/src/drivers/ao_rf_cc115l.h b/src/drivers/ao_rf_cc115l.h
index 6eb30bf2..50a730ab 100644
--- a/src/drivers/ao_rf_cc115l.h
+++ b/src/drivers/ao_rf_cc115l.h
@@ -80,4 +80,4 @@
CC115L_TEST1, 0x35, /* Various Test Settings */
CC115L_TEST0, 0x09, /* Various Test Settings */
- CC115L_PA, 0x60, /* Power setting (0dBm) */
+ CC115L_PA, 0x00, /* Power setting (0dBm) */
diff --git a/src/drivers/ao_rfpa0133.c b/src/drivers/ao_rfpa0133.c
index 70d5edba..a98e261a 100644
--- a/src/drivers/ao_rfpa0133.c
+++ b/src/drivers/ao_rfpa0133.c
@@ -17,10 +17,8 @@
#include "ao.h"
-static uint8_t power = 0;
-
static void
-ao_rfpa0133_set_power(void)
+ao_rfpa0133_set_power(uint8_t power)
{
ao_gpio_set(AO_PA_GAIN_8_GPIO, AO_PA_GAIN_8_PIN, AO_PA_GAIN_8, power & 1);
ao_gpio_set(AO_PA_GAIN_16_GPIO, AO_PA_GAIN_16_PIN, AO_PA_GAIN_16, (power >> 1) & 1);
@@ -29,7 +27,7 @@ ao_rfpa0133_set_power(void)
void
ao_radio_pa_on(void)
{
- ao_rfpa0133_set_power();
+ ao_rfpa0133_set_power(ao_config.radio_amp);
ao_gpio_set(AO_PA_POWER_GPIO, AO_PA_POWER_PIN, AO_PA_POWER, 1);
}
@@ -37,6 +35,7 @@ void
ao_radio_pa_off(void)
{
ao_gpio_set(AO_PA_POWER_GPIO, AO_PA_POWER_PIN, AO_PA_POWER, 0);
+ ao_rfpa0133_set_power(0);
}
void