summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-03-29 12:13:59 -0700
committerKeith Packard <keithp@keithp.com>2013-03-29 12:13:59 -0700
commit9aeed244879f90b5b6dab1c7ca095cc001b03fe5 (patch)
tree4e8114a4b927d2117cf6a6a24dfdb5e21d38b02e /src/drivers
parent86e1039e14304ac13db540f2ee3afd4ff170b8b4 (diff)
altos: Add temporary RF power settings
These expose the raw cc115l and rfpa0133 register settings so that we can calibrate them against measured power outputs. I've tested them to verify that they change how much power the board consumes, so they're clearly doing something... Signed-off-by: Keith Packard <keithp@keithp.com>
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