diff options
Diffstat (limited to 'apps/plugins/oscilloscope.c')
-rw-r--r-- | apps/plugins/oscilloscope.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c index a4ec6a8789..4d807493d3 100644 --- a/apps/plugins/oscilloscope.c +++ b/apps/plugins/oscilloscope.c | |||
@@ -1200,13 +1200,14 @@ static long anim_peaks_vertical(void) | |||
1200 | /** Waveform View **/ | 1200 | /** Waveform View **/ |
1201 | 1201 | ||
1202 | #ifdef OSCILLOSCOPE_GRAPHMODE | 1202 | #ifdef OSCILLOSCOPE_GRAPHMODE |
1203 | static int16_t waveform_buffer[2*ALIGN_UP(NATIVE_FREQUENCY, 2048)+2*2048] | 1203 | static int16_t waveform_buffer[2*ALIGN_UP(PLAY_SAMPR_MAX, 2048)+2*2048] |
1204 | MEM_ALIGN_ATTR; | 1204 | MEM_ALIGN_ATTR; |
1205 | static size_t waveform_buffer_threshold = 0; | 1205 | static size_t waveform_buffer_threshold = 0; |
1206 | static size_t volatile waveform_buffer_have = 0; | 1206 | static size_t volatile waveform_buffer_have = 0; |
1207 | static size_t waveform_buffer_break = 0; | 1207 | static size_t waveform_buffer_break = 0; |
1208 | static unsigned long mixer_sampr = PLAY_SAMPR_DEFAULT; | ||
1208 | #define PCM_SAMPLESIZE (2*sizeof(int16_t)) | 1209 | #define PCM_SAMPLESIZE (2*sizeof(int16_t)) |
1209 | #define PCM_BYTERATE (NATIVE_FREQUENCY*PCM_SAMPLESIZE) | 1210 | #define PCM_BYTERATE(sampr) ((sampr)*PCM_SAMPLESIZE) |
1210 | 1211 | ||
1211 | #define WAVEFORM_SCALE_PCM(full_scale, sample) \ | 1212 | #define WAVEFORM_SCALE_PCM(full_scale, sample) \ |
1212 | ((((full_scale) * (sample)) + (1 << 14)) >> 15) | 1213 | ((((full_scale) * (sample)) + (1 << 14)) >> 15) |
@@ -1390,7 +1391,7 @@ static long anim_waveform_horizontal(void) | |||
1390 | return cur_tick + HZ/5; | 1391 | return cur_tick + HZ/5; |
1391 | } | 1392 | } |
1392 | 1393 | ||
1393 | int count = (NATIVE_FREQUENCY*osc_delay + 100*HZ - 1) / (100*HZ); | 1394 | int count = (mixer_sampr*osc_delay + 100*HZ - 1) / (100*HZ); |
1394 | 1395 | ||
1395 | waveform_buffer_set_threshold(count*PCM_SAMPLESIZE); | 1396 | waveform_buffer_set_threshold(count*PCM_SAMPLESIZE); |
1396 | 1397 | ||
@@ -1516,7 +1517,8 @@ static long anim_waveform_horizontal(void) | |||
1516 | osd_lcd_update(); | 1517 | osd_lcd_update(); |
1517 | 1518 | ||
1518 | long delay = get_next_delay(); | 1519 | long delay = get_next_delay(); |
1519 | return cur_tick + delay - waveform_buffer_have * HZ / PCM_BYTERATE; | 1520 | return cur_tick + delay - waveform_buffer_have * HZ / |
1521 | PCM_BYTERATE(mixer_sampr); | ||
1520 | } | 1522 | } |
1521 | 1523 | ||
1522 | static void anim_waveform_plot_filled_v(int y, int y_prev, | 1524 | static void anim_waveform_plot_filled_v(int y, int y_prev, |
@@ -1583,7 +1585,7 @@ static long anim_waveform_vertical(void) | |||
1583 | return cur_tick + HZ/5; | 1585 | return cur_tick + HZ/5; |
1584 | } | 1586 | } |
1585 | 1587 | ||
1586 | int count = (NATIVE_FREQUENCY*osc_delay + 100*HZ - 1) / (100*HZ); | 1588 | int count = (mixer_sampr*osc_delay + 100*HZ - 1) / (100*HZ); |
1587 | 1589 | ||
1588 | waveform_buffer_set_threshold(count*PCM_SAMPLESIZE); | 1590 | waveform_buffer_set_threshold(count*PCM_SAMPLESIZE); |
1589 | 1591 | ||
@@ -1709,7 +1711,8 @@ static long anim_waveform_vertical(void) | |||
1709 | osd_lcd_update(); | 1711 | osd_lcd_update(); |
1710 | 1712 | ||
1711 | long delay = get_next_delay(); | 1713 | long delay = get_next_delay(); |
1712 | return cur_tick + delay - waveform_buffer_have * HZ / PCM_BYTERATE; | 1714 | return cur_tick + delay - waveform_buffer_have * HZ |
1715 | / PCM_BYTERATE(mixer_sampr); | ||
1713 | } | 1716 | } |
1714 | 1717 | ||
1715 | static void anim_waveform_exit(void) | 1718 | static void anim_waveform_exit(void) |
@@ -1872,6 +1875,10 @@ static void osc_setup(void) | |||
1872 | osd_lcd_update(); | 1875 | osd_lcd_update(); |
1873 | #endif | 1876 | #endif |
1874 | 1877 | ||
1878 | #ifdef OSCILLOSCOPE_GRAPHMODE | ||
1879 | mixer_sampr = rb->mixer_get_frequency(); | ||
1880 | #endif | ||
1881 | |||
1875 | /* Turn off backlight timeout */ | 1882 | /* Turn off backlight timeout */ |
1876 | backlight_ignore_timeout(); | 1883 | backlight_ignore_timeout(); |
1877 | graphmode_setup(); | 1884 | graphmode_setup(); |