aboutsummaryrefslogtreecommitdiffstats
path: root/src/r2000/dsp.c
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2017-09-25 18:46:50 +0200
committerAndreas Eversberg <jolly@eversberg.eu>2017-10-12 19:46:30 +0200
commitba036de22680c5f46983f30144c23d212245842f (patch)
treef511133326644feb457810c524a2ff317aa945c3 /src/r2000/dsp.c
parente84d7a082c20b591a06fdfd38ccdbe458e276631 (diff)
Add function to display measurements on screen
Use 'm' key to toggle display.
Diffstat (limited to 'src/r2000/dsp.c')
-rw-r--r--src/r2000/dsp.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/r2000/dsp.c b/src/r2000/dsp.c
index 10b3a97..ca61122 100644
--- a/src/r2000/dsp.c
+++ b/src/r2000/dsp.c
@@ -109,6 +109,13 @@ int dsp_init_sender(r2000_t *r2000)
iir_highpass_init(&r2000->super_tx_hp, SUPER_CUTOFF_H, r2000->sender.samplerate, 2);
iir_highpass_init(&r2000->super_rx_hp, SUPER_CUTOFF_H, r2000->sender.samplerate, 2);
+ r2000->dmp_frame_level = display_measurements_add(&r2000->sender, "Frame Level", "%.1f %% (last)", DISPLAY_MEAS_LAST, DISPLAY_MEAS_LEFT, 0.0, 150.0, 100.0);
+ r2000->dmp_frame_quality = display_measurements_add(&r2000->sender, "Frame Quality", "%.1f %% (last)", DISPLAY_MEAS_LAST, DISPLAY_MEAS_LEFT, 0.0, 100.0, 100.0);
+ if (r2000->sysinfo.chan_type == CHAN_TYPE_TC || r2000->sysinfo.chan_type == CHAN_TYPE_CC_TC) {
+ r2000->dmp_super_level = display_measurements_add(&r2000->sender, "Super Level", "%.1f %%", DISPLAY_MEAS_AVG, DISPLAY_MEAS_LEFT, 0.0, 150.0, 100.0);
+ r2000->dmp_super_quality = display_measurements_add(&r2000->sender, "Super Quality", "%.1f %%", DISPLAY_MEAS_AVG, DISPLAY_MEAS_LEFT, 0.0, 100.0, 100.0);
+ }
+
return 0;
}
@@ -190,6 +197,10 @@ static void fsk_receive_bit(void *inst, int bit, double quality, double level)
}
level /= (double)r2000->rx_max; quality /= (double)r2000->rx_max;
+ /* update measurements */
+ display_measurements_update(r2000->dmp_frame_level, level * 100.0, 0.0);
+ display_measurements_update(r2000->dmp_frame_quality, quality * 100.0, 0.0);
+
/* send frame to upper layer */
r2000_receive_frame(r2000, r2000->rx_frame, quality, level);
}
@@ -202,6 +213,10 @@ static void super_receive_bit(void *inst, int bit, double quality, double level)
/* normalize supervisory level */
level /= TX_PEAK_SUPER;
+ /* update measurements (if dmp_* params are NULL, we omit this) */
+ display_measurements_update(r2000->dmp_super_level, level * 100.0, 0.0);
+ display_measurements_update(r2000->dmp_super_quality, quality * 100.0, 0.0);
+
/* store bit */
r2000->super_rx_word = (r2000->super_rx_word << 1) | bit;
r2000->super_rx_level[r2000->super_rx_index] = level;