diff options
Diffstat (limited to 'software/rda1846dongle/rda1846dongle.c')
-rw-r--r-- | software/rda1846dongle/rda1846dongle.c | 74 |
1 files changed, 61 insertions, 13 deletions
diff --git a/software/rda1846dongle/rda1846dongle.c b/software/rda1846dongle/rda1846dongle.c index 310e2ad..d6f1b85 100644 --- a/software/rda1846dongle/rda1846dongle.c +++ b/software/rda1846dongle/rda1846dongle.c @@ -43,15 +43,30 @@ #include "rda1846.h" #include "rda1846_defines.h" -#define DEFAULT_FREQ 145900 -//#define DEFAULT_FREQ 409750 -int32_t current_freq_kHz = DEFAULT_FREQ; +#define DEFAULT_FREQ_2M 145900 +#define DEFAULT_FREQ_70CM 435000 +int32_t default_freq = DEFAULT_FREQ_2M; +int32_t current_freq_kHz = DEFAULT_FREQ_2M; + +static void reset_rda(void) +{ + printf("soft resetting RDA1846.\r\n"); + rda1846_soft_reset(); + current_freq_kHz = default_freq = DEFAULT_FREQ_2M; +} + +static void reinit_rda(void) +{ + printf("initializing RDA1846.\r\n"); + rda1846_reg_init(); + current_freq_kHz = default_freq = DEFAULT_FREQ_2M; +} static void set_default_freq(void) { + current_freq_kHz = default_freq; printf("setting frequency to %d.%03d MHz .. ", (uint16_t)(current_freq_kHz / 1000), (uint16_t)(current_freq_kHz % 1000)); - current_freq_kHz = DEFAULT_FREQ; if(rda1846_set_freq_kHz(current_freq_kHz)) printf("error\r\n"); else @@ -83,7 +98,35 @@ static void update_current_freq(void) /* current_freq_kHz = print_actual_freq(); */ /* if(current_freq_kHz < 0) */ - /* current_freq_kHz = DEFAULT_FREQ; */ + /* current_freq_kHz = default_freq; */ +} + +static void set_band_2m(void) +{ + printf("setting band to 2m\r\n"); + rda1846_set_band_2m(); + default_freq = DEFAULT_FREQ_2M; + set_default_freq(); +} + +static void set_band_70cm(void) +{ + printf("setting band to 70cm\r\n"); + rda1846_set_band_70cm(); + default_freq = DEFAULT_FREQ_70CM; + set_default_freq(); +} + +static void set_bw_12k5(void) +{ + printf("setting band to 12.5 kHz\r\n"); + rda1846_set_bw_12k5(); +} + +static void set_bw_25k(void) +{ + printf("setting band to 25 kHz\r\n"); + rda1846_set_bw_25k(); } static void print_status(void) @@ -127,12 +170,17 @@ static void handle_cmd(uint8_t cmd) case '0': rda1846_gpio_AA(); led_off(); printf("led OFF\r\n"); break; case '1': rda1846_gpio_55(); led_on(); printf("led ON\r\n"); break; case 't': led_toggle(); printf("led TOGGLE\r\n"); break; - case '!': reset2bootloader(); break; + case '!': rda1846_soft_reset(); reset2bootloader(); break; - case 'r': rda1846_soft_reset(); printf("soft resetting RDA1846.\r\n"); break; - case 'i': rda1846_reg_init(); printf("initializing RDA1846.\r\n"); break; + case 'r': reset_rda(); break; + case 'i': reinit_rda(); break; case 'F': set_default_freq(); break; + case '2': set_band_2m(); break; + case '7': set_band_70cm(); break; + case 'b': set_bw_12k5(); break; + case 'B': set_bw_25k(); break; + case 'g': rda1846_gpio_off(); printf("GPIO off\r\n"); break; case 'G': rda1846_gpio_default(); printf("GPIO to defaults\r\n"); break; @@ -141,12 +189,12 @@ static void handle_cmd(uint8_t cmd) case 'd': print_dtmf(); break; case 'D': rda1846_dump_register(); break; - case 'p': rda1846_powerdown(); break; - case 'P': rda1846_wakeup(); break; + case 'p': rda1846_powerdown(); printf("powered down.\r\n"); break; + case 'P': rda1846_wakeup(); printf("woke up ...\r\n"); break; - case 'I': rda1846_idle(); break; - case 'R': rda1846_receive(); break; - case 'T': rda1846_transmit(); break; + case 'I': rda1846_idle(); printf("idle.\r\n"); break; + case 'R': rda1846_receive(); printf("receiving ...\r\n"); break; + case 'T': rda1846_transmit(); printf("transmitting ...\r\n"); break; case '+': current_freq_kHz+=25; update_current_freq(); break; case '-': current_freq_kHz-=25; update_current_freq(); break; |