summaryrefslogtreecommitdiffstats
path: root/rf_test/radio.c
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2024-12-07 19:06:56 +0800
committerSadeep Madurange <sadeep@asciimx.com>2024-12-07 19:06:56 +0800
commit9ed70e05ffb6b0bdc8cd3c5160b5f21457b04654 (patch)
tree3625633803cdd86208c0dba681bc5f7990eb2f3a /rf_test/radio.c
parent64cf73f8e1ca561bc3fa1831ea422f8908c64ed3 (diff)
downloadsmart-home-9ed70e05ffb6b0bdc8cd3c5160b5f21457b04654.tar.gz
wip: radio init.
Diffstat (limited to 'rf_test/radio.c')
-rw-r--r--rf_test/radio.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/rf_test/radio.c b/rf_test/radio.c
index bda4c77..6f8c9c4 100644
--- a/rf_test/radio.c
+++ b/rf_test/radio.c
@@ -103,12 +103,26 @@ uint8_t radio_recv(char *buf, uint8_t n)
return read_len;
}
-void set_power_level(uint8_t pwl)
+static inline void set_high_power_pa(uint8_t enable)
{
- uint8_t pa;
+ write_reg(0x5A, (enable ? 0x5D : 0x55));
+ write_reg(0x5C, (enable ? 0x7C : 0x70));
+}
+
+static inline void set_power_level(uint8_t pwl)
+{
+ uint8_t pa_mask;
- if (pwl < 16)
+ if (pwl < 16) {
pwl += 16;
+ pa_mask = 0x40;
+ } else {
+ pwl += pwl < 20 ? 10 : 8;
+ pa_mask = 0x40 | 0x20;
+ }
+
+ set_high_power_pa(1);
+ write_reg(0x11, (pa_mask | pwl));
}
void radio_high_power(void)
@@ -125,11 +139,11 @@ void radio_init(struct radio_cfg *cfg)
do {
write_reg(0x2F, 0xAA);
- } while (read_reg(0x2F) != 0xAA)
+ } while (read_reg(0x2F) != 0xAA);
do {
write_reg(0x2F, 0x55);
- } while (read_reg(0x2F) != 0x55)
+ } while (read_reg(0x2F) != 0x55);
write_reg(0x01, 0x04);