summaryrefslogtreecommitdiff
path: root/software/rda1846dongle/rda1846dongle.c
diff options
context:
space:
mode:
Diffstat (limited to 'software/rda1846dongle/rda1846dongle.c')
-rw-r--r--software/rda1846dongle/rda1846dongle.c74
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;