psk reporter mode

Added mode specifier to spot_recv and viewaddchr
  Allows continued correct psk31 reporting from pskviewer when
  a mode such as QPSK or PSKR is being used in the primary
  decoder channel.
pull/2/head
David Freese 2010-04-16 19:01:32 -05:00
rodzic 6c15ddde0e
commit ab092a6f1e
5 zmienionych plików z 13 dodań i 9 usunięć

Wyświetl plik

@ -385,12 +385,12 @@ void viewer_redraw()
brwsViewer->column_widths(cols);
}
void viewaddchr(int ch, int freq, char c)
void viewaddchr(int ch, int freq, char c, int md)
{
if (!dlgViewer) return;
if (progStatus.spot_recv)
spot_recv(c, ch, freq);
spot_recv(c, ch, freq, md);
if (rfc != wf->rfcarrier() || usb != wf->USB()) viewer_redraw();

Wyświetl plik

@ -20,7 +20,7 @@ extern Fl_Double_Window *dlgViewer;
extern Fl_Double_Window* createViewer();
extern void openViewer();
extern void viewaddchr(int ch, int freq, char c);
extern void viewaddchr(int ch, int freq, char c, int md);
extern void initViewer();
extern void viewclearchannel(int ch);
extern void viewer_paste_freq(int freq);

Wyświetl plik

@ -35,7 +35,7 @@ typedef void (*spot_recv_cb_t)(trx_mode mode, int afreq, const char* str, const
typedef void (*spot_log_cb_t)(const char* call, const char* loc, long long freq,
trx_mode mode, time_t rtime, void* data);
void spot_recv(char c, int decoder = -1, int afreq = 0);
void spot_recv(char c, int decoder = -1, int afreq = 0, int md = 0);
void spot_log(const char* callsign, const char* locator = "", long long freq = 0LL,
trx_mode mode = NUM_MODES, time_t rtime = -1L);
void spot_manual(const char* callsign, const char* locator = "",

Wyświetl plik

@ -151,7 +151,7 @@ void viewpsk::rx_bit(int ch, int bit)
shreg[ch] = 0;
if (c == '\n' || c == '\r') c = ' ';
if (isprint(c)) {
REQ(&viewaddchr, ch, (int)frequency[ch], c);
REQ(&viewaddchr, ch, (int)frequency[ch], c, viewmode);
timeout[ch] = now + progdefaults.VIEWERtimeout;
}
}

Wyświetl plik

@ -66,15 +66,19 @@ static tr1::unordered_map<int, string> buffers;
static cblist_t cblist;
static rcblist_t rcblist;
void spot_recv(char c, int decoder, int afreq)
void spot_recv(char c, int decoder, int afreq, int md)
{
static trx_mode last_mode = NUM_MODES + 1;
if (decoder == -1) // mode without multiple decoders
if (decoder == -1) { // mode without multiple decoders
decoder = active_modem->get_mode();
if (last_mode != active_modem->get_mode()) {
if (last_mode != active_modem->get_mode()) {
buffers.clear();
last_mode = active_modem->get_mode();
}
} else if (last_mode != md) {
buffers.clear();
last_mode = active_modem->get_mode();
last_mode = md;
}
if (afreq == 0)
afreq = active_modem->get_freq();