kopia lustrzana https://github.com/jamescoxon/dl-fldigi
Macros
* Added @WAIT macro * Added disable macro timer when changing modemspull/4/head
rodzic
30ad2a95c8
commit
7b42e019e9
|
@ -1247,6 +1247,7 @@ void update_scope()
|
|||
void init_modem(trx_mode mode, int freq)
|
||||
{
|
||||
ENSURE_THREAD(FLMAIN_TID);
|
||||
stopMacroTimer();
|
||||
|
||||
if (data_io_enabled == KISS_IO) {
|
||||
if(!bcast_rsid_kiss_frame(freq, mode, (int) active_modem->get_txfreq(), active_modem->get_mode(),
|
||||
|
|
|
@ -164,7 +164,7 @@ void loadBrowser(Fl_Widget *widget) {
|
|||
w->add(_("<IDLE:NN.nn>\tidle signal for NN.nn sec"));
|
||||
w->add(_("<TIMER:NN>\trepeat every NN sec"));
|
||||
w->add(_("<TUNE:NN>\ttune signal for NN sec"));
|
||||
w->add(_("<WAIT:NN>\tdelay xmt for NN sec"));
|
||||
w->add(_("<WAIT:NN.n>\tdelay xmt for NN.n sec"));
|
||||
w->add(_("<REPEAT>\trepeat macro continuously"));
|
||||
w->add(_("<SKED:hhmm[ss][:YYYYMMDD]>\tschedule execution"));
|
||||
|
||||
|
@ -216,6 +216,7 @@ void loadBrowser(Fl_Widget *widget) {
|
|||
|
||||
w->add(LINE_SEP);
|
||||
w->add(_("<CSV:on|off|t>\tAnalysis CSV on,off,toggle"));
|
||||
|
||||
w->add(LINE_SEP);
|
||||
assert(MODE_CONTESTIA < MODE_OLIVIA);
|
||||
char s[256];
|
||||
|
|
|
@ -106,6 +106,7 @@ std::string text2repeat = "";
|
|||
size_t repeatchar = 0;
|
||||
|
||||
bool macro_idle_on = false;
|
||||
bool macro_rx_wait = false;
|
||||
|
||||
static float idleTime = 0;
|
||||
static bool TransmitON = false;
|
||||
|
@ -122,6 +123,8 @@ static bool GET = false;
|
|||
static bool timed_exec = false;
|
||||
static bool within_exec = false;
|
||||
|
||||
void rx_que_continue(void *);
|
||||
|
||||
static void postQueue(std::string s)
|
||||
{
|
||||
ReceiveText->addstr(s, FTextBase::CTRL);
|
||||
|
@ -986,7 +989,7 @@ static void pTxQueIDLE(std::string &s, size_t &i, size_t endbracket)
|
|||
}
|
||||
|
||||
static bool useTune = false;
|
||||
static int tuneTime = 0;
|
||||
static float tuneTime = 0;
|
||||
|
||||
static void pTUNE(std::string &s, size_t &i, size_t endbracket)
|
||||
{
|
||||
|
@ -1042,7 +1045,7 @@ static void pNRSID(std::string &s, size_t &i, size_t endbracket)
|
|||
}
|
||||
|
||||
static bool useWait = false;
|
||||
static int waitTime = 0;
|
||||
static float waitTime = 0;
|
||||
|
||||
static void pWAIT(std::string &s, size_t &i, size_t endbracket)
|
||||
{
|
||||
|
@ -1050,10 +1053,10 @@ static void pWAIT(std::string &s, size_t &i, size_t endbracket)
|
|||
s.replace(i, endbracket - i + 1, "");
|
||||
return;
|
||||
}
|
||||
int number;
|
||||
float number;
|
||||
std::string sTime = s.substr(i+6, endbracket - i - 6);
|
||||
if (sTime.length() > 0) {
|
||||
sscanf(sTime.c_str(), "%d", &number);
|
||||
sscanf(sTime.c_str(), "%f", &number);
|
||||
useWait = true;
|
||||
waitTime = number;
|
||||
}
|
||||
|
@ -1069,12 +1072,12 @@ static void doneWAIT(void *)
|
|||
|
||||
static void doWAIT(std::string s)
|
||||
{
|
||||
int number;
|
||||
float number;
|
||||
std::string sTime = s.substr(7, s.length() - 8);
|
||||
if (sTime.length() > 0) {
|
||||
sscanf(sTime.c_str(), "%d", &number);
|
||||
sscanf(sTime.c_str(), "%f", &number);
|
||||
Qwait_time = number;
|
||||
Fl::add_timeout (number * 1.0, doneWAIT);
|
||||
Fl::add_timeout (number, doneWAIT);
|
||||
} else
|
||||
Qwait_time = 0;
|
||||
}
|
||||
|
@ -1090,6 +1093,27 @@ static void pTxQueWAIT(std::string &s, size_t &i, size_t endbracket)
|
|||
s.replace(i, endbracket - i + 1, "^!");
|
||||
}
|
||||
|
||||
static void doRxWAIT(std::string s)
|
||||
{
|
||||
float number = 0;
|
||||
std::string sTime = s.substr(7, s.length() - 8);
|
||||
if (sTime.length() > 0) {
|
||||
sscanf(sTime.c_str(), "%f", &number);
|
||||
macro_rx_wait = true;
|
||||
Fl::add_timeout(number, rx_que_continue);
|
||||
}
|
||||
}
|
||||
|
||||
static void pRxQueWAIT(std::string &s, size_t &i, size_t endbracket)
|
||||
{
|
||||
if (within_exec) {
|
||||
s.replace(i, endbracket - i + 1, "");
|
||||
return;
|
||||
}
|
||||
struct CMDS cmd = { s.substr(i, endbracket - i + 1), doRxWAIT };
|
||||
push_rxcmd(cmd);
|
||||
s.replace(i, endbracket - i + 1, "");
|
||||
}
|
||||
|
||||
static void pINFO1(std::string &s, size_t &i, size_t endbracket)
|
||||
{
|
||||
|
@ -2303,6 +2327,7 @@ static void doGOFREQ(std::string s)
|
|||
if (number > progdefaults.HighFreqCutoff)
|
||||
number = progdefaults.HighFreqCutoff;
|
||||
active_modem->set_freq(number);
|
||||
wf->redraw();
|
||||
}
|
||||
que_ok = true;
|
||||
}
|
||||
|
@ -3006,10 +3031,17 @@ void Rx_queue_execute()
|
|||
cmd.cmd.erase(0,2);
|
||||
cmd.cmd.insert(0,"<!");
|
||||
cmd.fp(cmd.cmd);
|
||||
if (macro_rx_wait) return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
void rx_que_continue(void *)
|
||||
{
|
||||
macro_rx_wait = false;
|
||||
Rx_queue_execute();
|
||||
}
|
||||
|
||||
struct MTAGS { const char *mTAG; void (*fp)(std::string &, size_t&, size_t );};
|
||||
|
||||
static const MTAGS mtags[] = {
|
||||
|
@ -3124,6 +3156,7 @@ static const MTAGS mtags[] = {
|
|||
{"<WX>", pWX},
|
||||
{"<WX:", pWX2},
|
||||
{"<IMAGE:", pTxQueIMAGE},
|
||||
// Tx Delayed action
|
||||
{"<!WPM:", pTxQueWPM},
|
||||
{"<!RISE:", pTxQueRISETIME},
|
||||
{"<!PRE:", pTxQuePRE},
|
||||
|
@ -3138,7 +3171,7 @@ static const MTAGS mtags[] = {
|
|||
{"<!FILWID:", pTxQueFILWID},
|
||||
{"<!TXATTEN:", pTxQueTXATTEN},
|
||||
{"<!RIGCAT:", pTxQueRIGCAT},
|
||||
|
||||
// Rx After action
|
||||
{"<@MODEM:", pRxQueMODEM},
|
||||
{"<@RIGCAT:", pRxQueRIGCAT},
|
||||
{"<@GOFREQ:", pRxQueGOFREQ},
|
||||
|
@ -3146,6 +3179,7 @@ static const MTAGS mtags[] = {
|
|||
{"<@RIGMODE:", pRxQueRIGMODE},
|
||||
{"<@FILWID:", pRxQueFILWID},
|
||||
{"<@TXRSID:", pRxQueTXRSID},
|
||||
{"<@WAIT:", pRxQueWAIT},
|
||||
|
||||
{0, 0}
|
||||
};
|
||||
|
@ -3404,7 +3438,10 @@ std::string MACROTEXT::expandMacro(std::string &s, bool recurse = false)
|
|||
expanded.erase(idx, 2);
|
||||
expanded.append("^r");
|
||||
}
|
||||
|
||||
|
||||
if (!TransmitON && !Rx_cmds.empty())
|
||||
Fl::add_timeout(0, rx_que_continue);
|
||||
|
||||
return expanded;
|
||||
}
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue