Fixed dtmf waterfall painting. Added constant for dtmf spacing.

This commit is contained in:
Jordan Sherer 2019-08-04 14:55:02 -04:00
parent 19e9428218
commit 3d590e93d5
4 changed files with 32 additions and 16 deletions

View File

@ -18,6 +18,14 @@
#endif #endif
#endif #endif
#ifndef TEST_FOX_WAVE_GEN_OFFSET
#if TEST_FOX_WAVE_GEN
#define TEST_FOX_WAVE_GEN_OFFSET 25
#else
#define TEST_FOX_WAVE_GEN_OFFSET 0
#endif
#endif
#ifdef __cplusplus #ifdef __cplusplus
#include <cstdbool> #include <cstdbool>
extern "C" { extern "C" {

View File

@ -2,6 +2,7 @@ subroutine foxfilt(nslots,nfreq,width,wave)
parameter (NN=79,ND=58,KK=87,NSPS=4*1920) parameter (NN=79,ND=58,KK=87,NSPS=4*1920)
parameter (NWAVE=NN*NSPS,NFFT=614400,NH=NFFT/2) parameter (NWAVE=NN*NSPS,NFFT=614400,NH=NFFT/2)
parameter (OFFSET=25)
real wave(NWAVE) real wave(NWAVE)
real x(NFFT) real x(NFFT)
complex cx(0:NH) complex cx(0:NH)
@ -12,7 +13,7 @@ subroutine foxfilt(nslots,nfreq,width,wave)
call four2a(x,NFFT,1,-1,0) !r2c call four2a(x,NFFT,1,-1,0) !r2c
df=48000.0/NFFT df=48000.0/NFFT
fa=nfreq - 0.5*6.25 fa=nfreq - 0.5*6.25
fb=nfreq + 7.5*6.25 + (nslots-1)*60.0 fb=nfreq + 7.5*6.25 + (nslots-1)*(width+OFFSET)
ia2=nint(fa/df) ia2=nint(fa/df)
ib1=nint(fb/df) ib1=nint(fb/df)
ia1=nint(ia2-width/df) ia1=nint(ia2-width/df)

View File

@ -17,6 +17,7 @@ subroutine foxgen()
use crc use crc
parameter (NN=79,ND=58,KK=87,NSPS=4*1920) parameter (NN=79,ND=58,KK=87,NSPS=4*1920)
parameter (NWAVE=NN*NSPS,NFFT=614400,NH=NFFT/2) parameter (NWAVE=NN*NSPS,NFFT=614400,NH=NFFT/2)
parameter (OFFSET=25)
character*40 cmsg character*40 cmsg
character*22 msg,msgsent character*22 msg,msgsent
character*6 mygrid character*6 mygrid
@ -36,8 +37,9 @@ subroutine foxgen()
equivalence (x,cx),(y,cy) equivalence (x,cx),(y,cy)
data icos7/4,2,5,6,1,3,0/ !Costas 7x7 tone pattern data icos7/4,2,5,6,1,3,0/ !Costas 7x7 tone pattern
width=50.0
bcontest=.false. bcontest=.false.
fstep=60.d0 fstep=width+OFFSET
dfreq=6.25d0 dfreq=6.25d0
dt=1.d0/48000.d0 dt=1.d0/48000.d0
twopi=8.d0*atan(1.d0) twopi=8.d0*atan(1.d0)
@ -127,7 +129,6 @@ subroutine foxgen()
! call plotspec(2,wave) !Plot the spectrum ! call plotspec(2,wave) !Plot the spectrum
width=50.0
call foxfilt(nslots,nfreq,width,wave) call foxfilt(nslots,nfreq,width,wave)
peak3=maxval(abs(wave)) peak3=maxval(abs(wave))
wave=wave/peak3 wave=wave/peak3

View File

@ -457,7 +457,7 @@ void CPlotter::DrawOverlay() //DrawOverlay()
if(m_mode=="FT8"){ if(m_mode=="FT8"){
int fwidth=XfromFreq(m_rxFreq+bw)-XfromFreq(m_rxFreq); int fwidth=XfromFreq(m_rxFreq+bw)-XfromFreq(m_rxFreq);
#if TEST_FOX_WAVE_GEN #if TEST_FOX_WAVE_GEN
int offset=XfromFreq(m_rxFreq+bw+10)-XfromFreq(m_rxFreq+bw); int offset=XfromFreq(m_rxFreq+bw+TEST_FOX_WAVE_GEN_OFFSET)-XfromFreq(m_rxFreq+bw) + 4; // + 4 for the line padding
#endif #endif
QPainter overPainter(&m_DialOverlayPixmap); QPainter overPainter(&m_DialOverlayPixmap);
overPainter.initFrom(this); overPainter.initFrom(this);
@ -465,22 +465,26 @@ void CPlotter::DrawOverlay() //DrawOverlay()
overPainter.fillRect(0, 0, m_Size.width(), m_h, Qt::transparent); overPainter.fillRect(0, 0, m_Size.width(), m_h, Qt::transparent);
QPen thinRed(Qt::red, 1); QPen thinRed(Qt::red, 1);
overPainter.setPen(thinRed); overPainter.setPen(thinRed);
overPainter.drawLine(0, 30, 0, m_h); overPainter.drawLine(0, 30, 0, m_h); // first slot, left line
overPainter.drawLine(fwidth+1, 30, fwidth+1, m_h); overPainter.drawLine(fwidth + 1, 30, fwidth + 1, m_h); // first slot, right line
#if TEST_FOX_WAVE_GEN #if TEST_FOX_WAVE_GEN
if(m_turbo){ if(m_turbo){
overPainter.drawLine(offset+fwidth+1, 30, offset+fwidth+1, m_h); for(int i = 1; i < TEST_FOX_WAVE_GEN_SLOTS; i++){
overPainter.drawLine(offset+2*fwidth+1, 30, offset+2*fwidth+1, m_h); overPainter.drawLine(i*(fwidth + offset), 30, i*(fwidth + offset), m_h); // n slot, left line
overPainter.drawLine(i*(fwidth + offset) + fwidth + 2, 30, i*(fwidth + offset) + fwidth + 2, m_h); // n slot, right line
}
} }
#endif #endif
overPainter.setPen(penRed); overPainter.setPen(penRed);
overPainter.drawLine(0, 26, fwidth, 26); overPainter.drawLine(0, 26, fwidth, 26); // first slot, top bar
overPainter.drawLine(0, 28, fwidth, 28); overPainter.drawLine(0, 28, fwidth, 28); // first slot, top bar 2
#if TEST_FOX_WAVE_GEN #if TEST_FOX_WAVE_GEN
if(m_turbo){ if(m_turbo){
overPainter.drawLine(offset+fwidth, 26, offset+2*fwidth, 26); for(int i = 1; i < TEST_FOX_WAVE_GEN_SLOTS; i++){
overPainter.drawLine(offset+fwidth, 28, offset+2*fwidth, 28); overPainter.drawLine(i*(fwidth + offset) + 1, 26, i*(fwidth + offset) + fwidth + 1, 26); // n slot, top bar
overPainter.drawLine(i*(fwidth + offset) + 1, 28, i*(fwidth + offset) + fwidth + 1, 28); // n slot, top bar 2
}
} }
#endif #endif
@ -489,12 +493,14 @@ void CPlotter::DrawOverlay() //DrawOverlay()
hoverPainter.setCompositionMode(QPainter::CompositionMode_Source); hoverPainter.setCompositionMode(QPainter::CompositionMode_Source);
hoverPainter.fillRect(0, 0, m_Size.width(), m_h, Qt::transparent); hoverPainter.fillRect(0, 0, m_Size.width(), m_h, Qt::transparent);
hoverPainter.setPen(QPen(Qt::white)); hoverPainter.setPen(QPen(Qt::white));
hoverPainter.drawLine(0, 30, 0, m_h); hoverPainter.drawLine(0, 30, 0, m_h); // first slot, left line hover
hoverPainter.drawLine(fwidth+1, 30, fwidth+1, m_h); hoverPainter.drawLine(fwidth, 30, fwidth, m_h); // first slot, right line hover
#if TEST_FOX_WAVE_GEN #if TEST_FOX_WAVE_GEN
if(m_turbo){ if(m_turbo){
hoverPainter.drawLine(offset+fwidth+1, 30, offset+fwidth+1, m_h); for(int i = 1; i < TEST_FOX_WAVE_GEN_SLOTS; i++){
hoverPainter.drawLine(offset+2*fwidth+1, 30, offset+2*fwidth+1, m_h); hoverPainter.drawLine(i*(fwidth + offset), 30, i*(fwidth + offset), m_h); // n slot, left line
hoverPainter.drawLine(i*(fwidth + offset) + fwidth + 2, 30, i*(fwidth + offset) + fwidth + 2, m_h); // n slot, right line
}
} }
#endif #endif