diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2024-12-07 19:06:56 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2024-12-07 19:06:56 +0800 |
| commit | 9ed70e05ffb6b0bdc8cd3c5160b5f21457b04654 (patch) | |
| tree | 3625633803cdd86208c0dba681bc5f7990eb2f3a /rf_test | |
| parent | 64cf73f8e1ca561bc3fa1831ea422f8908c64ed3 (diff) | |
| download | smart-home-9ed70e05ffb6b0bdc8cd3c5160b5f21457b04654.tar.gz | |
wip: radio init.
Diffstat (limited to 'rf_test')
| -rw-r--r-- | rf_test/radio.c | 24 | ||||
| -rw-r--r-- | rf_test/radio.h | 1 |
2 files changed, 20 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); diff --git a/rf_test/radio.h b/rf_test/radio.h index fe715b2..719af14 100644 --- a/rf_test/radio.h +++ b/rf_test/radio.h @@ -4,6 +4,7 @@ #include <stdint.h> struct radio_cfg { + uint8_t network_id; uint8_t payload_len; }; |
