kopia lustrzana https://github.com/Hamlib/Hamlib
Improve Yaesu send_morse
Can now send message 1-5 or up to 50 char msg e.g. rigctl -m 1035 -r /dev/ttyUSB0 b 1 or rigctl -m 1035 -r /dev/ttyUSB0 b "CQ CQ DE W9MDB"pull/1392/head
rodzic
aeb03fda62
commit
2423fb237c
1
NEWS
1
NEWS
|
@ -13,6 +13,7 @@ Version 5.x -- future
|
|||
* Change FT1000MP Mark V model names to align with FT1000MP
|
||||
|
||||
Version 4.6
|
||||
* Yaesu rigs can now use send_morse to send keyer message 1-5 or a CW message up to 50 chars (which will use memory 1)
|
||||
* rig set level METER can now take SWR,COMP,ALC,IC/ID,DB,PO,VDD,TEMP arguments to set which meter to display
|
||||
* reg get level displays meter number=name now
|
||||
* Added parm BANDSELECT for Yaesu rigs
|
||||
|
|
|
@ -725,9 +725,10 @@ Option returned depends on rig..for Icom is likely the RX only flag.
|
|||
.BR b ", " send_morse " \(aq" \fIMorse\fP \(aq
|
||||
Send
|
||||
.RI \(aq Morse \(aq
|
||||
symbols. For Yaesu rigs use memory#.
|
||||
symbols. For Yaesu rigs use memory#1-5 or up to 50 char msg
|
||||
.EX
|
||||
Example from command line: rigctl -m 3073 -r /dev/ttyUSB0 b "CQ CQ DE ME"
|
||||
Yaesu example to send message#1: rigctl -m 1035 -r /dev/ttyUSB0 b 1
|
||||
.
|
||||
.TP
|
||||
.BR 0xbb ", " stop_morse "
|
||||
|
|
|
@ -725,9 +725,10 @@ number (\(oq0\(cq, \(oq1\(cq, \(oq2\(cq, ...).
|
|||
.BR b ", " send_morse " \(aq" \fIMorse\fP \(aq
|
||||
Send
|
||||
.RI \(aq Morse \(aq
|
||||
ymbols. For Yaesu rigs use memory#.
|
||||
symbols. For Yaesu rigs use memory# (1-5 for most rigs) or up to 50 char message (which will use memory#1)
|
||||
.EX
|
||||
Example from rigctld socket: b CQ CQ DE ME
|
||||
Yaesu example to send message#1 frm rigctld socket: b 1
|
||||
.
|
||||
.TP
|
||||
.BR 0xbb ", " stop_morse "
|
||||
|
|
|
@ -6938,34 +6938,69 @@ int newcat_send_morse(RIG *rig, vfo_t vfo, const char *msg)
|
|||
|
||||
ENTERFUNC;
|
||||
|
||||
int chan = 0;
|
||||
if (strlen(msg)==1)
|
||||
char chan = '1';
|
||||
|
||||
if (newcat_is_rig(rig, RIG_MODEL_FT450) && strlen(msg)==1 && msg[0] > '4')
|
||||
{
|
||||
switch(*msg)
|
||||
// 450 manual says 1/2/3 playback needs P1=6/7/8
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: only messages 1-3 accepted\n", __func__);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 5-chan playback 6-A: FT-1200, FT-2000, FT-3000, FTDX-5000, FT-891, FT-9000, FT-950, FT-991, FTDX-101MP/D
|
||||
// 5-chan but 1-5 playback: FT-710
|
||||
if (strlen(msg)==1 && (msg[0] < '1' || msg[0] > '5'))
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
chan = atoi(msg);
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: only messages 1-5 accepted\n", __func__);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
if (!newcat_is_rig(rig, RIG_MODEL_FT710))
|
||||
{
|
||||
chan += 5; // 6,7,8 needed for playback
|
||||
}
|
||||
}
|
||||
char *msg2 = strdup(msg); // copy so we can modify it if needed
|
||||
|
||||
if (strlen(msg2)==1)
|
||||
{
|
||||
switch(*msg2)
|
||||
{
|
||||
// do all Yaeus rigs play back with chan+5?
|
||||
case '1': msg2[0] = '6';break;
|
||||
case '2': msg2[0] = '7';break;
|
||||
case '3': msg2[0] = '8';break;
|
||||
case '4': msg2[0] = '9';break;
|
||||
case '5': msg2[0] = 'A';break;
|
||||
case '6': // we'll let these pass
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
case 'A':
|
||||
case 'a':
|
||||
break;
|
||||
default:
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
if (newcat_is_rig(rig, RIG_MODEL_FT450) && chan < 4)
|
||||
{
|
||||
// 450 manual says 1/2/3 playback needs P1=6/7/8
|
||||
chan += 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "KY%d%c", chan, cat_term);
|
||||
if (strlen(msg2)>50) {
|
||||
msg2[50]=0; // truncate if too long
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: msg length of %d truncated to 50\n", __func__, (int)strlen(msg));
|
||||
}
|
||||
chan = '1';
|
||||
SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "KM1%s;",msg2);
|
||||
rc = newcat_set_cmd(rig);
|
||||
if (rc != RIG_OK)
|
||||
{
|
||||
free(msg2);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
chan = '6'; // the channel we use to key msg 1
|
||||
}
|
||||
free(msg2);
|
||||
SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "KY%c%c", chan, cat_term);
|
||||
|
||||
rc = newcat_set_cmd(rig);
|
||||
RETURNFUNC(rc);
|
||||
|
@ -10983,6 +11018,14 @@ int newcat_set_cmd_validate(RIG *rig)
|
|||
{
|
||||
strcpy(valcmd, ";");
|
||||
}
|
||||
else if (strncmp(priv->cmd_str, "KM", 2) == 0)
|
||||
{
|
||||
strcpy(valcmd, "");
|
||||
}
|
||||
else if (strncmp(priv->cmd_str, "KY", 2) == 0)
|
||||
{
|
||||
strcpy(valcmd, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
rig_debug(RIG_DEBUG_TRACE, "%s: %s not implemented\n", __func__, priv->cmd_str);
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
typedef char ncboolean;
|
||||
|
||||
/* shared function version */
|
||||
#define NEWCAT_VER "20230927"
|
||||
#define NEWCAT_VER "20230930"
|
||||
|
||||
/* Hopefully large enough for future use, 128 chars plus '\0' */
|
||||
#define NEWCAT_DATA_LEN 129
|
||||
|
|
Ładowanie…
Reference in New Issue