kopia lustrzana https://github.com/jamescoxon/dl-fldigi
WRAP binary files
* Add character handling in Rx for both received and transmit echo
characters when sending binary data.
pull/1/head
rodzic
8fdb2ca89e
commit
de95906f1d
|
|
@ -164,6 +164,7 @@
|
|||
|
||||
#include "notifydialog.h"
|
||||
#include "macroedit.h"
|
||||
#include "rx_extract.h"
|
||||
#include "wefax-pic.h"
|
||||
|
||||
#define LOG_TO_FILE_MLABEL _("Log all RX/TX text")
|
||||
|
|
@ -5863,7 +5864,9 @@ char *get_rxtx_data()
|
|||
|
||||
void add_rxtx_char(int data)
|
||||
{
|
||||
if (rxtx_raw_len == RAW_BUFF_LEN) {
|
||||
ENSURE_THREAD(FLMAIN_TID);
|
||||
if (rxtx_raw_len == RAW_BUFF_LEN ||
|
||||
((rxtx_raw_len == RAW_BUFF_LEN -1) && (data & 0xFF00))) {
|
||||
memset(rxtx_raw_buff, 0, RAW_BUFF_LEN+1);
|
||||
rxtx_raw_len = 0;
|
||||
}
|
||||
|
|
@ -5889,8 +5892,10 @@ char *get_rx_data()
|
|||
|
||||
void add_rx_char(int data)
|
||||
{
|
||||
ENSURE_THREAD(FLMAIN_TID);
|
||||
add_rxtx_char(data);
|
||||
if (rx_raw_len == RAW_BUFF_LEN) {
|
||||
if (rx_raw_len == RAW_BUFF_LEN ||
|
||||
((rx_raw_len == RAW_BUFF_LEN -1) && (data & 0xFF00))) {
|
||||
memset(rx_raw_buff, 0, RAW_BUFF_LEN+1);
|
||||
rx_raw_len = 0;
|
||||
}
|
||||
|
|
@ -5916,11 +5921,15 @@ char *get_tx_data()
|
|||
|
||||
void add_tx_char(int data)
|
||||
{
|
||||
ENSURE_THREAD(FLMAIN_TID);
|
||||
add_rxtx_char(data);
|
||||
if (tx_raw_len == RAW_BUFF_LEN) {
|
||||
if (tx_raw_len == RAW_BUFF_LEN ||
|
||||
((tx_raw_len == RAW_BUFF_LEN -1) && (data & 0xFF00))) {
|
||||
memset(tx_raw_buff, 0, RAW_BUFF_LEN+1);
|
||||
tx_raw_len = 0;
|
||||
}
|
||||
if (data & 0xFF00) // UTF-8 character
|
||||
tx_raw_buff[tx_raw_len++] = (data >> 8) & 0xFF;
|
||||
tx_raw_buff[tx_raw_len++] = (unsigned char)data;
|
||||
}
|
||||
|
||||
|
|
@ -5935,10 +5944,15 @@ static void put_rx_char_flmain(unsigned int data, int style)
|
|||
const char **asc = ascii3;
|
||||
trx_mode mode = active_modem->get_mode();
|
||||
|
||||
if (mailclient || mailserver || arqmode)
|
||||
if (mailclient || mailserver)
|
||||
asc = ascii2;
|
||||
if (arqmode || extracting)
|
||||
asc = ascii3;
|
||||
if (mode == MODE_RTTY || mode == MODE_CW)
|
||||
asc = ascii;
|
||||
if (extracting) {
|
||||
style = FTextBase::RECV;
|
||||
}
|
||||
|
||||
if (asc == ascii2 && (data < ' ') && iscntrl(data))
|
||||
style = FTextBase::CTRL;
|
||||
|
|
@ -5949,7 +5963,10 @@ static void put_rx_char_flmain(unsigned int data, int style)
|
|||
|
||||
speak(data);
|
||||
|
||||
if ((data & 0x80) == 0x80) {
|
||||
if (extracting) {
|
||||
add_rx_char(data);
|
||||
ReceiveText->add(asc[data & 0xFF], style);
|
||||
} else if ((data & 0x80) == 0x80) {
|
||||
if (firstUTF8 == 0)
|
||||
firstUTF8 = data;
|
||||
else {
|
||||
|
|
@ -5967,7 +5984,7 @@ static void put_rx_char_flmain(unsigned int data, int style)
|
|||
ReceiveText->add('\n', style);
|
||||
} else {
|
||||
add_rx_char(data);
|
||||
ReceiveText->add(asc[data & 0xFF], style);
|
||||
ReceiveText->add(data & 0xFF, style);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -6313,22 +6330,27 @@ int get_tx_char(void)
|
|||
return c;
|
||||
}
|
||||
|
||||
static string sch;
|
||||
|
||||
void put_echo_char(unsigned int data, int style)
|
||||
{
|
||||
|
||||
if (!data) return;
|
||||
|
||||
if (progdefaults.QSKadjust && (active_modem->get_mode() == MODE_CW))
|
||||
return;
|
||||
|
||||
static unsigned int last = 0;
|
||||
const char **asc = ascii3;
|
||||
const char **asc = NULL;
|
||||
|
||||
add_tx_char(data);
|
||||
|
||||
if (mailclient || mailserver)
|
||||
asc = ascii2;
|
||||
if (active_modem->get_mode() == MODE_RTTY ||
|
||||
active_modem->get_mode() == MODE_CW)
|
||||
else if (arq_text_available)
|
||||
asc = ascii3;
|
||||
else if ( active_modem->get_mode() == MODE_RTTY ||
|
||||
active_modem->get_mode() == MODE_CW)
|
||||
asc = ascii;
|
||||
|
||||
if (data == '\r' && last == '\r') // reject multiple CRs
|
||||
|
|
@ -6340,13 +6362,17 @@ void put_echo_char(unsigned int data, int style)
|
|||
style = FTextBase::CTRL;
|
||||
|
||||
#if FLDIGI_FLTK_API_MAJOR == 1 && FLDIGI_FLTK_API_MINOR == 3
|
||||
string sch;
|
||||
sch.clear();
|
||||
if (data & 0xFF00) {
|
||||
sch += (data >> 8) & 0xFF;
|
||||
sch += (data & 0xFF);
|
||||
} else
|
||||
sch = asc[data & 0xFF];
|
||||
if (asc != NULL) { // MAIL / ARQ / RTTY / CW
|
||||
sch.assign(asc[data & 0xFF]);
|
||||
} else if ((data & 0xFF00) == 0x8000) { //UTF-8 extended character
|
||||
sch.assign(" ");
|
||||
sch[0] = 0x80;
|
||||
sch[1] = (data & 0xFF);
|
||||
} else { // keyboard character including MSB set chars
|
||||
sch.assign(" ");
|
||||
sch[0] = data;
|
||||
}
|
||||
REQ(&FTextRX::addstr, ReceiveText, sch, style);
|
||||
#else
|
||||
REQ(&FTextBase::addchr, ReceiveText, data, style);
|
||||
|
|
|
|||
|
|
@ -26,4 +26,6 @@ extern const char *txtWrapInfo;
|
|||
extern void rx_extract_add(int c);
|
||||
extern void select_flmsg_pathname();
|
||||
|
||||
extern bool extracting;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -62,6 +62,14 @@ const char *ascii[256] = {
|
|||
"t", "u", "v", "w",
|
||||
"x", "y", "z", "{",
|
||||
"|", "}", "~", ""
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"
|
||||
};
|
||||
|
||||
const char *ascii2[256] = {
|
||||
|
|
@ -97,17 +105,25 @@ const char *ascii2[256] = {
|
|||
"t", "u", "v", "w",
|
||||
"x", "y", "z", "{",
|
||||
"|", "}", "~", "<DEL>"
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"
|
||||
};
|
||||
|
||||
const char *ascii3[256] = {
|
||||
".", ".", ".", ".",
|
||||
".", ".", ".", ".",
|
||||
"\b", ".", "\n", ".",
|
||||
".", "\r", ".", ".",
|
||||
".", ".", ".", ".",
|
||||
".", ".", ".", ".",
|
||||
".", ".", ".", ".",
|
||||
".", ".", ".", ".",
|
||||
"=", "=", "=", "=",
|
||||
"=", "=", "=", "=",
|
||||
"=", "=", "\n", "=",
|
||||
"=", "=", "=", "=",
|
||||
"=", "=", "=", "=",
|
||||
"=", "=", "=", "=",
|
||||
"=", "=", "=", "=",
|
||||
"=", "=", "=", "=",
|
||||
" ", "!", "\"", "#",
|
||||
"$", "%", "&", "\'",
|
||||
"(", ")", "*", "+",
|
||||
|
|
@ -132,5 +148,13 @@ const char *ascii3[256] = {
|
|||
"t", "u", "v", "w",
|
||||
"x", "y", "z", "{",
|
||||
"|", "}", "~", "."
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-",
|
||||
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"
|
||||
};
|
||||
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue