kopia lustrzana https://github.com/jamescoxon/dl-fldigi
PSKMAIL
* write s2n / rsid encapsulated within required mutex to correct misalignment of ARQ strings.pull/1/head
rodzic
b03bde83d4
commit
ffcdeb18aa
|
@ -6215,12 +6215,6 @@ static void put_rx_char_flmain(unsigned int data, int style)
|
|||
{
|
||||
ENSURE_THREAD(FLMAIN_TID);
|
||||
|
||||
// save raw data if autoextracting
|
||||
if (progdefaults.autoextract == true)
|
||||
rx_extract_add(data);
|
||||
|
||||
WriteARQ(data);
|
||||
|
||||
// possible destinations for the data
|
||||
enum dest_type {
|
||||
DEST_RECV, // ordinary received text
|
||||
|
@ -6276,6 +6270,9 @@ void put_rx_char(unsigned int data, int style)
|
|||
benchmark.buffer += (char)data;
|
||||
}
|
||||
#else
|
||||
if (progdefaults.autoextract == true)
|
||||
rx_extract_add(data);
|
||||
WriteARQ(data);
|
||||
REQ(put_rx_char_flmain, data, style);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -442,7 +442,7 @@ void mfsk::recvchar(int c)
|
|||
s2n_sum += s2n_metric;
|
||||
s2n_sum2 += (s2n_metric * s2n_metric);
|
||||
s2n_ncount++;
|
||||
if (c == EOT && (mailserver || mailclient))
|
||||
if (c == EOT)
|
||||
s2nreport();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -707,8 +707,7 @@ bool Socket_arqRx()
|
|||
|
||||
pthread_mutex_lock (&arq_rx_mutex);
|
||||
arqtext.assign(txstring);
|
||||
if (mailserver || mailclient)
|
||||
parse_arqtext(arqtext);
|
||||
parse_arqtext(arqtext);
|
||||
txstring.clear();
|
||||
LOG_VERBOSE("arqtext\n%s\n", arqtext.c_str());
|
||||
|
||||
|
@ -754,6 +753,14 @@ void WriteARQ(unsigned char data)
|
|||
return;
|
||||
}
|
||||
|
||||
void WriteARQ(const char *data)
|
||||
{
|
||||
pthread_mutex_lock (&tosend_mutex);
|
||||
tosend.append(data);
|
||||
pthread_mutex_unlock (&tosend_mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
static void *arq_loop(void *args)
|
||||
{
|
||||
SET_THREAD_ID(ARQ_TID);
|
||||
|
@ -880,14 +887,13 @@ void AbortARQ() {
|
|||
void pskmail_notify_rsid(trx_mode mode)
|
||||
{
|
||||
char buf[64];
|
||||
int n = snprintf(buf, sizeof(buf), "%c<Mode:%s>\n", 0x12, mode_info[mode].name);
|
||||
int n = snprintf(buf, sizeof(buf),
|
||||
"\x12<Mode:%s>\n",
|
||||
mode_info[mode].name);
|
||||
if (n > 0 && n < (int)sizeof(buf)) {
|
||||
WriteARQsocket((unsigned char*)buf, n);
|
||||
#if !defined(__WOE32__) && !defined(__APPLE__)
|
||||
for (int ii=0; ii < n; ii++)
|
||||
WriteARQSysV((unsigned char)buf[ii]);
|
||||
#endif
|
||||
ReceiveText->addstr(buf, FTextBase::CTRL);
|
||||
WriteARQ((const char *)buf);
|
||||
REQ(&FTextBase::addstr, ReceiveText, buf, FTextBase::CTRL);
|
||||
LOG_VERBOSE("%s", buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -897,15 +903,13 @@ void pskmail_notify_rsid(trx_mode mode)
|
|||
void pskmail_notify_s2n(double s2n_ncount, double s2n_avg, double s2n_stddev)
|
||||
{
|
||||
char buf[64];
|
||||
int n = snprintf(buf, sizeof(buf), "%c<s2n: %1.0f, %1.1f, %1.1f>",
|
||||
0x12, s2n_ncount, s2n_avg, s2n_stddev);
|
||||
int n = snprintf(buf, sizeof(buf),
|
||||
"\x12<s2n: %1.0f, %1.1f, %1.1f>\n",
|
||||
s2n_ncount, s2n_avg, s2n_stddev);
|
||||
if (n > 0 && n < (int)sizeof(buf)) {
|
||||
WriteARQsocket((unsigned char*)buf, n);
|
||||
#if !defined(__WOE32__) && !defined(__APPLE__)
|
||||
for (int ii=0; ii < n; ii++)
|
||||
WriteARQSysV((unsigned char)buf[ii]);
|
||||
#endif
|
||||
ReceiveText->addstr(buf, FTextBase::CTRL);
|
||||
WriteARQ((const char *)buf);
|
||||
REQ(&FTextBase::addstr, ReceiveText, buf, FTextBase::CTRL);
|
||||
LOG_VERBOSE("%s", buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -731,12 +731,6 @@ void psk::rx_bit(int bit)
|
|||
s2n_sum += s2n_metric;
|
||||
s2n_sum2 += (s2n_metric * s2n_metric);
|
||||
s2n_ncount ++;
|
||||
/* if (c == SOH && noSOHyet) {
|
||||
s2n_sum = s2n_sum2 = 0.0;
|
||||
s2n_ncount = 1.0;
|
||||
noSOHyet = false;
|
||||
}
|
||||
*/
|
||||
if (c == EOT)
|
||||
s2nreport();
|
||||
}
|
||||
|
@ -753,12 +747,6 @@ void psk::rx_bit(int bit)
|
|||
s2n_sum += s2n_metric;
|
||||
s2n_sum2 += (s2n_metric * s2n_metric);
|
||||
s2n_ncount++;
|
||||
/* if (c == SOH && noSOHyet) {
|
||||
s2n_sum = s2n_sum2 = 0.0;
|
||||
s2n_ncount = 1.0;
|
||||
noSOHyet = false;
|
||||
}
|
||||
*/
|
||||
if (c == EOT)
|
||||
s2nreport();
|
||||
}
|
||||
|
@ -787,12 +775,6 @@ void psk::rx_bit2(int bit)
|
|||
s2n_sum += s2n_metric;
|
||||
s2n_sum2 += (s2n_metric * s2n_metric);
|
||||
s2n_ncount++;
|
||||
/* if (c == SOH && noSOHyet) {
|
||||
s2n_sum = s2n_sum2 = 0.0;
|
||||
s2n_ncount = 1.0;
|
||||
noSOHyet = false;
|
||||
}
|
||||
*/
|
||||
if (c == EOT)
|
||||
s2nreport();
|
||||
}
|
||||
|
|
|
@ -370,7 +370,7 @@ void cRsId::apply(int iSymbol, int iBin)
|
|||
LOG_INFO("RSID: %s @ %0.0f Hz", rsid_ids[n].name, freq);
|
||||
|
||||
if (mailclient || mailserver)
|
||||
REQ(pskmail_notify_rsid, mbin);
|
||||
pskmail_notify_rsid(mbin);
|
||||
|
||||
if(progdefaults.rsid_auto_disable)
|
||||
REQ(toggleRSID);
|
||||
|
|
|
@ -408,7 +408,7 @@ void modem::s2nreport(void)
|
|||
double s2n_avg = s2n_sum / s2n_ncount;
|
||||
double s2n_stddev = sqrt((s2n_sum2 / s2n_ncount) - (s2n_avg * s2n_avg));
|
||||
|
||||
REQ(pskmail_notify_s2n, s2n_ncount, s2n_avg, s2n_stddev);
|
||||
pskmail_notify_s2n(s2n_ncount, s2n_avg, s2n_stddev);
|
||||
}
|
||||
|
||||
void modem::ModulateXmtr(double *buffer, int len)
|
||||
|
|
Ładowanie…
Reference in New Issue