mirror of
https://github.com/Hamlib/Hamlib.git
synced 2024-09-22 10:57:21 +00:00
All kenwoods to have 3-char commands for functions and return whatever value the rig returns instead of 0/1
Changes to add more ts890 capabilities, e.g. NB2, BC2
This commit is contained in:
parent
8b695bcc03
commit
0316376b45
@ -2056,7 +2056,12 @@ int kenwood_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
|
||||
return kenwood_transaction(rig, buf, NULL, 0);
|
||||
|
||||
case RIG_FUNC_COMP:
|
||||
if (RIG_MODEL_TS890S == rig->caps->rig_model) {
|
||||
snprintf(buf, sizeof (buf), "PR0%c", (status == 0) ? '0' : '1');
|
||||
}
|
||||
else {
|
||||
snprintf(buf, sizeof (buf), "PR%c", (status == 0) ? '0' : '1');
|
||||
}
|
||||
return kenwood_transaction(rig, buf, NULL, 0);
|
||||
|
||||
case RIG_FUNC_TONE:
|
||||
@ -2076,13 +2081,24 @@ int kenwood_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
|
||||
return kenwood_transaction(rig, buf, NULL, 0);
|
||||
|
||||
case RIG_FUNC_NR:
|
||||
if (RIG_MODEL_TS890S == rig->caps->rig_model) {
|
||||
char c = '1';
|
||||
if (status == 2) c = '2';
|
||||
snprintf(buf, sizeof (buf), "NR%c", (status == 0) ? '0' : c);
|
||||
}
|
||||
else {
|
||||
snprintf(buf, sizeof (buf), "NR%c", (status == 0) ? '0' : '1');
|
||||
}
|
||||
return kenwood_transaction(rig, buf, NULL, 0);
|
||||
|
||||
case RIG_FUNC_BC:
|
||||
snprintf(buf, sizeof (buf), "BC%c", (status == 0) ? '0' : '1');
|
||||
return kenwood_transaction(rig, buf, NULL, 0);
|
||||
|
||||
case RIG_FUNC_BC2:
|
||||
snprintf(buf, sizeof (buf), "BC%c", (status == 0) ? '0' : '2');
|
||||
return kenwood_transaction(rig, buf, NULL, 0);
|
||||
|
||||
case RIG_FUNC_ANF:
|
||||
snprintf(buf, sizeof (buf), "NT%c", (status == 0) ? '0' : '1');
|
||||
return kenwood_transaction(rig, buf, NULL, 0);
|
||||
@ -2112,8 +2128,9 @@ int kenwood_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
|
||||
}
|
||||
|
||||
/*
|
||||
* works for any 'format 1' command
|
||||
* answer is always 4 bytes: two byte command id, status and terminator
|
||||
* works for any 'format 1' command or newer command like the TS890 has
|
||||
* as long as the return is a number 0-9
|
||||
* answer is always 4 bytes or 5 bytes: two or three byte command id, status and terminator
|
||||
*/
|
||||
int get_kenwood_func(RIG *rig, const char *cmd, int *status)
|
||||
{
|
||||
@ -2125,11 +2142,14 @@ int get_kenwood_func(RIG *rig, const char *cmd, int *status)
|
||||
int retval;
|
||||
char buf[10];
|
||||
|
||||
retval = kenwood_safe_transaction(rig, cmd, buf, 10, 3);
|
||||
int offset=2;
|
||||
if (strlen(cmd)==3) offset=3; // some commands are 3 letters
|
||||
|
||||
retval = kenwood_safe_transaction(rig, cmd, buf, sizeof(buf), offset+1);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
*status = buf[2] == '0' ? 0 : 1;
|
||||
*status = buf[offset] - '0'; // just return whatever the rig returns
|
||||
|
||||
return RIG_OK;
|
||||
};
|
||||
@ -2139,6 +2159,7 @@ int get_kenwood_func(RIG *rig, const char *cmd, int *status)
|
||||
*/
|
||||
int kenwood_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
|
||||
{
|
||||
char *cmd;
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||
|
||||
if (!rig || !status)
|
||||
@ -2157,7 +2178,11 @@ int kenwood_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
|
||||
return RIG_OK;
|
||||
|
||||
case RIG_FUNC_NB:
|
||||
return get_kenwood_func(rig, "NB", status);
|
||||
cmd = "NB";
|
||||
if (RIG_MODEL_TS890S == rig->caps->rig_model) {
|
||||
cmd = "NB1";
|
||||
}
|
||||
return get_kenwood_func(rig, cmd, status);
|
||||
|
||||
case RIG_FUNC_NB2:
|
||||
return get_kenwood_func(rig, "NB2", status);
|
||||
@ -2181,8 +2206,20 @@ int kenwood_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
|
||||
return get_kenwood_func(rig, "NR", status);
|
||||
|
||||
/* FIXME on TS2000 */
|
||||
case RIG_FUNC_BC:
|
||||
return get_kenwood_func(rig, "BC", status);
|
||||
// Check for BC #1
|
||||
case RIG_FUNC_BC: // Most will return BC1 or BC0, if BC2 then BC1 is off
|
||||
retval = get_kenwood_func(rig, "BC", status);
|
||||
if (retval == RIG_OK) {
|
||||
*status = *status == '1' ? '1': '0';
|
||||
}
|
||||
return retval;
|
||||
|
||||
case RIG_FUNC_BC2: // TS-890 check Beat Cancel 2 we return boolean true/false
|
||||
retval = get_kenwood_func(rig, "BC", status);
|
||||
if (retval == RIG_OK) {
|
||||
*status = *status == '2' ? '1': '0';
|
||||
}
|
||||
return retval;
|
||||
|
||||
case RIG_FUNC_ANF:
|
||||
return get_kenwood_func(rig, "NT", status);
|
||||
|
402
kenwood/ts480.c
402
kenwood/ts480.c
@ -39,7 +39,8 @@
|
||||
#define TS480_VFO (RIG_VFO_A|RIG_VFO_B)
|
||||
|
||||
#define TS480_LEVEL_ALL (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC)
|
||||
#define TS480_FUNC_ALL (RIG_FUNC_NB|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_NR|RIG_FUNC_NR|RIG_FUNC_BC)
|
||||
#define TS480_FUNC_ALL (RIG_FUNC_NB|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_NR|RIG_FUNC_NR|RIG_FUNC_BC|RIG_FUNC_BC2)
|
||||
#define TS890_FUNC_ALL (RIG_FUNC_NB|RIG_FUNC_NB2|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_NR|RIG_FUNC_NR|RIG_FUNC_BC|RIG_FUNC_BC2)
|
||||
|
||||
|
||||
/*
|
||||
@ -47,30 +48,40 @@
|
||||
* Assumes rig!=NULL
|
||||
*/
|
||||
static const char *
|
||||
kenwood_ts480_get_info (RIG * rig)
|
||||
kenwood_ts480_get_info(RIG *rig)
|
||||
{
|
||||
char firmbuf[50];
|
||||
int retval;
|
||||
|
||||
retval = kenwood_transaction (rig, "TY", firmbuf, sizeof (firmbuf));
|
||||
retval = kenwood_transaction(rig, "TY", firmbuf, sizeof(firmbuf));
|
||||
|
||||
if (retval != RIG_OK)
|
||||
return NULL;
|
||||
size_t firm_len = strlen (firmbuf);
|
||||
if (firm_len != 5)
|
||||
{
|
||||
rig_debug (RIG_DEBUG_ERR, "kenwood_get_info: wrong answer len=%d\n", firm_len);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size_t firm_len = strlen(firmbuf);
|
||||
|
||||
if (firm_len != 5)
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR, "kenwood_get_info: wrong answer len=%d\n", firm_len);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
switch (firmbuf[4])
|
||||
{
|
||||
case '0':
|
||||
return "TS-480HX (200W)";
|
||||
|
||||
case '1':
|
||||
return "TS-480SAT (100W + AT)";
|
||||
|
||||
case '2':
|
||||
return "Japanese 50W type";
|
||||
|
||||
case '3':
|
||||
return "Japanese 20W type";
|
||||
|
||||
default:
|
||||
return "Firmware: unknown";
|
||||
}
|
||||
@ -87,55 +98,127 @@ kenwood_ts480_get_info (RIG * rig)
|
||||
* e.g.: "SQ"=>"SQ0" , "AG"=>"AG0"
|
||||
*/
|
||||
int
|
||||
kenwood_ts480_set_level (RIG * rig, vfo_t vfo, setting_t level, value_t val)
|
||||
kenwood_ts480_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
||||
{
|
||||
char levelbuf[16];
|
||||
int kenwood_val;
|
||||
int rf_max_level = 100; /* 100 for TS-480 and 255 for TS-890S */
|
||||
|
||||
rig_debug(RIG_DEBUG_TRACE, "%s called\n", __func__);
|
||||
|
||||
switch (level)
|
||||
{
|
||||
case RIG_LEVEL_RFPOWER:
|
||||
kenwood_val = val.f * 100; /* level for TS480SAT is from 0.. 100W in SSB */
|
||||
sprintf (levelbuf, "PC%03d", kenwood_val);
|
||||
sprintf(levelbuf, "PC%03d", kenwood_val);
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_AF:
|
||||
kenwood_val = val.f * 255; /* possible values for TS480 are 000.. 255 */
|
||||
sprintf (levelbuf, "AG0%03d", kenwood_val);
|
||||
|
||||
if (rig->caps->rig_model == RIG_MODEL_TS890S)
|
||||
{
|
||||
sprintf(levelbuf, "AG%03d", kenwood_val);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(levelbuf, "AG0%03d", kenwood_val);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_RF:
|
||||
kenwood_val = val.f * 100; /* possible values for TS480 are 000.. 100 */
|
||||
sprintf (levelbuf, "RG%03d", kenwood_val);
|
||||
if (rig->caps->rig_model == RIG_MODEL_TS890S)
|
||||
{
|
||||
rf_max_level = 255;
|
||||
}
|
||||
|
||||
kenwood_val = val.f *
|
||||
rf_max_level; /* possible values for TS480 are 000.. 100 */
|
||||
sprintf(levelbuf, "RG%03d", kenwood_val);
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_SQL:
|
||||
kenwood_val = val.f * 255; /* possible values for TS480 are 000.. 255 */
|
||||
sprintf (levelbuf, "SQ0%03d", kenwood_val);
|
||||
|
||||
if (rig->caps->rig_model == RIG_MODEL_TS890S)
|
||||
{
|
||||
sprintf(levelbuf, "SQ%03d", kenwood_val);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(levelbuf, "SQ0%03d", kenwood_val);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_AGC: /* possible values for TS480 000(=off), 001(=fast), 002(=slow) */
|
||||
case RIG_LEVEL_AGC:
|
||||
/* hamlib argument is int, possible values rig.h:enum agc_level_e */
|
||||
/* possible values for TS480 000(=off), 001(=fast), 002(=slow) */
|
||||
/* possible values for TS890 0(=off), 1(=slow), 2(=mid), 3(=fast), 4(=off/Last) */
|
||||
if (rig->caps->rig_model == RIG_MODEL_TS890S)
|
||||
{
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s TS890S RIG_LEVEL_AGC\n", __func__);
|
||||
|
||||
switch (val.i)
|
||||
{
|
||||
case RIG_AGC_OFF:
|
||||
kenwood_val = 0;
|
||||
break;
|
||||
case RIG_AGC_FAST:
|
||||
|
||||
case RIG_AGC_SLOW:
|
||||
kenwood_val = 1;
|
||||
break;
|
||||
case RIG_AGC_SLOW:
|
||||
|
||||
case RIG_AGC_MEDIUM:
|
||||
kenwood_val = 2;
|
||||
break;
|
||||
default:
|
||||
rig_debug (RIG_DEBUG_ERR, "Unsupported agc value");
|
||||
return -RIG_EINVAL;
|
||||
};
|
||||
sprintf (levelbuf, "GT%03d", kenwood_val);
|
||||
|
||||
case RIG_AGC_FAST:
|
||||
kenwood_val = 3;
|
||||
break;
|
||||
|
||||
case RIG_AGC_AUTO:
|
||||
kenwood_val = 4;
|
||||
break;
|
||||
|
||||
default:
|
||||
rig_debug (RIG_DEBUG_ERR, "Unsupported set_level %d", level);
|
||||
rig_debug(RIG_DEBUG_ERR, "Unsupported agc value");
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
sprintf(levelbuf, "GC%d", kenwood_val);
|
||||
}
|
||||
else
|
||||
{
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s TS480 RIG_LEVEL_AGC\n", __func__);
|
||||
|
||||
switch (val.i)
|
||||
{
|
||||
case RIG_AGC_OFF:
|
||||
kenwood_val = 0;
|
||||
break;
|
||||
|
||||
case RIG_AGC_FAST:
|
||||
kenwood_val = 1;
|
||||
break;
|
||||
|
||||
case RIG_AGC_SLOW:
|
||||
kenwood_val = 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "Unsupported agc value");
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
sprintf(levelbuf, "GT%03d", kenwood_val);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "Unsupported set_level %d", level);
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
@ -148,84 +231,204 @@ kenwood_ts480_set_level (RIG * rig, vfo_t vfo, setting_t level, value_t val)
|
||||
* Assumes rig!=NULL, val!=NULL
|
||||
*/
|
||||
int
|
||||
kenwood_ts480_get_level (RIG * rig, vfo_t vfo, setting_t level, value_t * val)
|
||||
kenwood_ts480_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||
{
|
||||
char ackbuf[50];
|
||||
size_t ack_len;
|
||||
size_t ack_len, ack_len_expected;
|
||||
int levelint;
|
||||
int offset_level=3; // default offset for the level return value
|
||||
int retval;
|
||||
int rf_max_level;
|
||||
|
||||
rig_debug(RIG_DEBUG_TRACE, "%s called\n", __func__);
|
||||
|
||||
if (rig->caps->rig_model == RIG_MODEL_TS890S)
|
||||
{
|
||||
rf_max_level = 255;
|
||||
}
|
||||
else
|
||||
{
|
||||
rf_max_level = 100;
|
||||
}
|
||||
|
||||
switch (level)
|
||||
{
|
||||
case RIG_LEVEL_RFPOWER:
|
||||
retval = kenwood_transaction (rig, "PC", ackbuf, sizeof (ackbuf));
|
||||
retval = kenwood_transaction(rig, "PC", ackbuf, sizeof(ackbuf));
|
||||
|
||||
if (RIG_OK != retval)
|
||||
{
|
||||
return retval;
|
||||
ack_len = strlen (ackbuf);
|
||||
}
|
||||
|
||||
ack_len = strlen(ackbuf);
|
||||
|
||||
if (5 != ack_len)
|
||||
{
|
||||
return -RIG_EPROTO;
|
||||
if (1 != sscanf (&ackbuf[2], "%d", &levelint))
|
||||
}
|
||||
|
||||
if (1 != sscanf(&ackbuf[2], "%d", &levelint))
|
||||
{
|
||||
return -RIG_EPROTO;
|
||||
}
|
||||
|
||||
val->f = (float) levelint / 100.;
|
||||
return RIG_OK;
|
||||
|
||||
case RIG_LEVEL_AF:
|
||||
retval = kenwood_transaction (rig, "AG0", ackbuf, sizeof (ackbuf));
|
||||
if (rig->caps->rig_model == RIG_MODEL_TS890S)
|
||||
{
|
||||
retval = kenwood_transaction(rig, "AG", ackbuf, sizeof(ackbuf));
|
||||
offset_level = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
retval = kenwood_transaction(rig, "AG0", ackbuf, sizeof(ackbuf));
|
||||
offset_level = 3;
|
||||
}
|
||||
|
||||
if (RIG_OK != retval)
|
||||
{
|
||||
return retval;
|
||||
ack_len = strlen (ackbuf);
|
||||
if (6 != ack_len)
|
||||
}
|
||||
|
||||
ack_len = strlen(ackbuf);
|
||||
|
||||
if (offset_level+3 != ack_len)
|
||||
{
|
||||
return -RIG_EPROTO;
|
||||
if (1 != sscanf (&ackbuf[3], "%d", &levelint))
|
||||
}
|
||||
|
||||
if (1 != sscanf(&ackbuf[offset_level], "%d", &levelint))
|
||||
{
|
||||
return -RIG_EPROTO;
|
||||
val->f = (float) levelint / 255.;
|
||||
}
|
||||
|
||||
val->f = levelint / (float) rf_max_level;
|
||||
return RIG_OK;
|
||||
|
||||
case RIG_LEVEL_RF:
|
||||
retval = kenwood_transaction (rig, "RG", ackbuf, sizeof (ackbuf));
|
||||
retval = kenwood_transaction(rig, "RG", ackbuf, sizeof(ackbuf));
|
||||
|
||||
if (RIG_OK != retval)
|
||||
{
|
||||
return retval;
|
||||
ack_len = strlen (ackbuf);
|
||||
}
|
||||
|
||||
ack_len = strlen(ackbuf);
|
||||
|
||||
if (5 != ack_len)
|
||||
{
|
||||
return -RIG_EPROTO;
|
||||
if (1 != sscanf (&ackbuf[2], "%d", &levelint))
|
||||
}
|
||||
|
||||
if (1 != sscanf(&ackbuf[2], "%d", &levelint))
|
||||
{
|
||||
return -RIG_EPROTO;
|
||||
val->f = (float) levelint / 100.;
|
||||
}
|
||||
|
||||
val->f = levelint / (float) rf_max_level;
|
||||
return RIG_OK;
|
||||
|
||||
case RIG_LEVEL_SQL:
|
||||
retval = kenwood_transaction (rig, "SQ0", ackbuf, sizeof (ackbuf));
|
||||
if (rig->caps->rig_model == RIG_MODEL_TS890S)
|
||||
{
|
||||
retval = kenwood_transaction(rig, "SQ", ackbuf, sizeof(ackbuf));
|
||||
ack_len_expected = 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
retval = kenwood_transaction(rig, "SQ0", ackbuf, sizeof(ackbuf));
|
||||
ack_len_expected = 6;
|
||||
}
|
||||
|
||||
if (RIG_OK != retval)
|
||||
{
|
||||
return retval;
|
||||
ack_len = strlen (ackbuf);
|
||||
if (6 != ack_len)
|
||||
}
|
||||
|
||||
ack_len = strlen(ackbuf);
|
||||
|
||||
if (ack_len != ack_len_expected)
|
||||
{
|
||||
return -RIG_EPROTO;
|
||||
if (1 != sscanf (&ackbuf[3], "%d", &levelint))
|
||||
}
|
||||
|
||||
if (1 != sscanf(&ackbuf[ack_len_expected - 3], "%d", &levelint))
|
||||
{
|
||||
return -RIG_EPROTO;
|
||||
}
|
||||
|
||||
val->f = (float) levelint / 255.;
|
||||
return RIG_OK;
|
||||
|
||||
case RIG_LEVEL_AGC:
|
||||
retval = kenwood_transaction (rig, "GT", ackbuf, sizeof (ackbuf));
|
||||
if (rig->caps->rig_model == RIG_MODEL_TS890S)
|
||||
{
|
||||
retval = kenwood_transaction(rig, "GC", ackbuf, sizeof(ackbuf));
|
||||
ack_len_expected = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
retval = kenwood_transaction(rig, "GT", ackbuf, sizeof(ackbuf));
|
||||
ack_len_expected = 5;
|
||||
}
|
||||
|
||||
if (RIG_OK != retval)
|
||||
{
|
||||
return retval;
|
||||
ack_len = strlen (ackbuf);
|
||||
if (5 != ack_len)
|
||||
}
|
||||
|
||||
ack_len = strlen(ackbuf);
|
||||
|
||||
if (ack_len != ack_len_expected)
|
||||
{
|
||||
return -RIG_EPROTO;
|
||||
switch (ackbuf[4])
|
||||
}
|
||||
|
||||
switch (ackbuf[ack_len_expected - 1])
|
||||
{
|
||||
case '0':
|
||||
val->i = RIG_AGC_OFF;
|
||||
break;
|
||||
|
||||
case '1':
|
||||
if (rig->caps->rig_model == RIG_MODEL_TS890S)
|
||||
{
|
||||
val->i = RIG_AGC_SLOW;
|
||||
}
|
||||
else
|
||||
{
|
||||
val->i = RIG_AGC_FAST;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case '2':
|
||||
if (rig->caps->rig_model == RIG_MODEL_TS890S)
|
||||
{
|
||||
val->i = RIG_AGC_MEDIUM;
|
||||
}
|
||||
else
|
||||
{
|
||||
val->i = RIG_AGC_SLOW;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case '3':
|
||||
val->i = RIG_AGC_FAST;
|
||||
break;
|
||||
case '2':
|
||||
val->i = RIG_AGC_SLOW;
|
||||
|
||||
case '4':
|
||||
val->i = RIG_AGC_AUTO;
|
||||
break;
|
||||
|
||||
default:
|
||||
return -RIG_EPROTO;
|
||||
}
|
||||
|
||||
return RIG_OK;
|
||||
|
||||
case RIG_LEVEL_MICGAIN:
|
||||
@ -244,18 +447,20 @@ kenwood_ts480_get_level (RIG * rig, vfo_t vfo, setting_t level, value_t * val)
|
||||
return -RIG_ENIMPL;
|
||||
|
||||
default:
|
||||
rig_debug (RIG_DEBUG_ERR, "Unsupported get_level %d", level);
|
||||
rig_debug(RIG_DEBUG_ERR, "Unsupported get_level %d", level);
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
return RIG_OK; /* never reached */
|
||||
}
|
||||
|
||||
static struct kenwood_priv_caps ts480_priv_caps = {
|
||||
static struct kenwood_priv_caps ts480_priv_caps =
|
||||
{
|
||||
.cmdtrm = EOM_KEN,
|
||||
};
|
||||
|
||||
static struct kenwood_priv_caps ts890s_priv_caps = {
|
||||
static struct kenwood_priv_caps ts890s_priv_caps =
|
||||
{
|
||||
.cmdtrm = EOM_KEN,
|
||||
};
|
||||
|
||||
@ -265,7 +470,8 @@ static struct kenwood_priv_caps ts890s_priv_caps = {
|
||||
* Notice that some rigs share the same functions.
|
||||
* Also this struct is READONLY!
|
||||
*/
|
||||
const struct rig_caps ts480_caps = {
|
||||
const struct rig_caps ts480_caps =
|
||||
{
|
||||
.rig_model = RIG_MODEL_TS480,
|
||||
.model_name = "TS-480",
|
||||
.mfg_name = "Kenwood",
|
||||
@ -288,9 +494,9 @@ const struct rig_caps ts480_caps = {
|
||||
.retry = 10,
|
||||
.preamp = {12, RIG_DBLST_END,},
|
||||
.attenuator = {12, RIG_DBLST_END,},
|
||||
.max_rit = kHz (9.99),
|
||||
.max_xit = kHz (9.99),
|
||||
.max_ifshift = Hz (0),
|
||||
.max_rit = kHz(9.99),
|
||||
.max_xit = kHz(9.99),
|
||||
.max_ifshift = Hz(0),
|
||||
.targetable_vfo = RIG_TARGETABLE_FREQ,
|
||||
.transceive = RIG_TRN_RIG,
|
||||
|
||||
@ -352,20 +558,20 @@ const struct rig_caps ts480_caps = {
|
||||
RIG_FRNG_END,
|
||||
}, /*!< Transmit frequency range list for ITU region 2 */
|
||||
.tuning_steps = {
|
||||
{TS480_ALL_MODES,kHz(1)},
|
||||
{TS480_ALL_MODES,Hz(2500)},
|
||||
{TS480_ALL_MODES,kHz(5)},
|
||||
{TS480_ALL_MODES,Hz(6250)},
|
||||
{TS480_ALL_MODES,kHz(10)},
|
||||
{TS480_ALL_MODES,Hz(12500)},
|
||||
{TS480_ALL_MODES,kHz(15)},
|
||||
{TS480_ALL_MODES,kHz(20)},
|
||||
{TS480_ALL_MODES,kHz(25)},
|
||||
{TS480_ALL_MODES,kHz(30)},
|
||||
{TS480_ALL_MODES,kHz(100)},
|
||||
{TS480_ALL_MODES,kHz(500)},
|
||||
{TS480_ALL_MODES,MHz(1)},
|
||||
{TS480_ALL_MODES,0}, /* any tuning step */
|
||||
{TS480_ALL_MODES, kHz(1)},
|
||||
{TS480_ALL_MODES, Hz(2500)},
|
||||
{TS480_ALL_MODES, kHz(5)},
|
||||
{TS480_ALL_MODES, Hz(6250)},
|
||||
{TS480_ALL_MODES, kHz(10)},
|
||||
{TS480_ALL_MODES, Hz(12500)},
|
||||
{TS480_ALL_MODES, kHz(15)},
|
||||
{TS480_ALL_MODES, kHz(20)},
|
||||
{TS480_ALL_MODES, kHz(25)},
|
||||
{TS480_ALL_MODES, kHz(30)},
|
||||
{TS480_ALL_MODES, kHz(100)},
|
||||
{TS480_ALL_MODES, kHz(500)},
|
||||
{TS480_ALL_MODES, MHz(1)},
|
||||
{TS480_ALL_MODES, 0}, /* any tuning step */
|
||||
RIG_TS_END,
|
||||
},
|
||||
/* mode/filter list, remember: order matters! */
|
||||
@ -377,7 +583,7 @@ const struct rig_caps ts480_caps = {
|
||||
{RIG_MODE_FM, kHz(14)},
|
||||
RIG_FLT_END,
|
||||
},
|
||||
.priv = (void *) &ts480_priv_caps,
|
||||
.priv = (void *)& ts480_priv_caps,
|
||||
.rig_init = kenwood_init,
|
||||
.rig_cleanup = kenwood_cleanup,
|
||||
.set_freq = kenwood_set_freq,
|
||||
@ -419,13 +625,14 @@ const struct rig_caps ts480_caps = {
|
||||
* Notice that some rigs share the same functions.
|
||||
* Also this struct is READONLY!
|
||||
*/
|
||||
const struct rig_caps ts890s_caps = {
|
||||
const struct rig_caps ts890s_caps =
|
||||
{
|
||||
.rig_model = RIG_MODEL_TS890S,
|
||||
.model_name = "TS-890S",
|
||||
.mfg_name = "Kenwood",
|
||||
.version = BACKEND_VER ".2",
|
||||
.version = BACKEND_VER ".3",
|
||||
.copyright = "LGPL",
|
||||
.status = RIG_STATUS_BETA,
|
||||
.status = RIG_STATUS_STABLE,
|
||||
.rig_type = RIG_TYPE_TRANSCEIVER,
|
||||
.ptt_type = RIG_PTT_RIG_MICDATA,
|
||||
.dcd_type = RIG_DCD_RIG,
|
||||
@ -442,9 +649,9 @@ const struct rig_caps ts890s_caps = {
|
||||
.retry = 10,
|
||||
.preamp = {12, RIG_DBLST_END,},
|
||||
.attenuator = {12, RIG_DBLST_END,},
|
||||
.max_rit = kHz (9.99),
|
||||
.max_xit = kHz (9.99),
|
||||
.max_ifshift = Hz (0),
|
||||
.max_rit = kHz(9.99),
|
||||
.max_xit = kHz(9.99),
|
||||
.max_ifshift = Hz(0),
|
||||
.targetable_vfo = RIG_TARGETABLE_FREQ,
|
||||
.transceive = RIG_TRN_RIG,
|
||||
|
||||
@ -506,20 +713,20 @@ const struct rig_caps ts890s_caps = {
|
||||
RIG_FRNG_END,
|
||||
}, /*!< Transmit frequency range list for ITU region 2 */
|
||||
.tuning_steps = {
|
||||
{TS890_ALL_MODES,kHz(1)},
|
||||
{TS890_ALL_MODES,Hz(2500)},
|
||||
{TS890_ALL_MODES,kHz(5)},
|
||||
{TS890_ALL_MODES,Hz(6250)},
|
||||
{TS890_ALL_MODES,kHz(10)},
|
||||
{TS890_ALL_MODES,Hz(12500)},
|
||||
{TS890_ALL_MODES,kHz(15)},
|
||||
{TS890_ALL_MODES,kHz(20)},
|
||||
{TS890_ALL_MODES,kHz(25)},
|
||||
{TS890_ALL_MODES,kHz(30)},
|
||||
{TS890_ALL_MODES,kHz(100)},
|
||||
{TS890_ALL_MODES,kHz(500)},
|
||||
{TS890_ALL_MODES,MHz(1)},
|
||||
{TS890_ALL_MODES,0}, /* any tuning step */
|
||||
{TS890_ALL_MODES, kHz(1)},
|
||||
{TS890_ALL_MODES, Hz(2500)},
|
||||
{TS890_ALL_MODES, kHz(5)},
|
||||
{TS890_ALL_MODES, Hz(6250)},
|
||||
{TS890_ALL_MODES, kHz(10)},
|
||||
{TS890_ALL_MODES, Hz(12500)},
|
||||
{TS890_ALL_MODES, kHz(15)},
|
||||
{TS890_ALL_MODES, kHz(20)},
|
||||
{TS890_ALL_MODES, kHz(25)},
|
||||
{TS890_ALL_MODES, kHz(30)},
|
||||
{TS890_ALL_MODES, kHz(100)},
|
||||
{TS890_ALL_MODES, kHz(500)},
|
||||
{TS890_ALL_MODES, MHz(1)},
|
||||
{TS890_ALL_MODES, 0}, /* any tuning step */
|
||||
RIG_TS_END,
|
||||
},
|
||||
/* mode/filter list, remember: order matters! */
|
||||
@ -531,7 +738,7 @@ const struct rig_caps ts890s_caps = {
|
||||
{RIG_MODE_FM, kHz(14)},
|
||||
RIG_FLT_END,
|
||||
},
|
||||
.priv = (void *) &ts890s_priv_caps,
|
||||
.priv = (void *)& ts890s_priv_caps,
|
||||
.rig_init = kenwood_init,
|
||||
.rig_cleanup = kenwood_cleanup,
|
||||
.set_freq = kenwood_set_freq,
|
||||
@ -560,22 +767,9 @@ const struct rig_caps ts890s_caps = {
|
||||
.has_get_level = TS480_LEVEL_ALL,
|
||||
.set_level = kenwood_ts480_set_level,
|
||||
.get_level = kenwood_ts480_get_level,
|
||||
.has_get_func = TS480_FUNC_ALL,
|
||||
.has_set_func = TS480_FUNC_ALL,
|
||||
.has_get_func = TS890_FUNC_ALL,
|
||||
.has_set_func = TS890_FUNC_ALL,
|
||||
.set_func = kenwood_set_func,
|
||||
.get_func = kenwood_get_func,
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* my notes:
|
||||
* format with: indent --line-length 200 ts480.c
|
||||
*
|
||||
* for the TS480 the function NR and BC have tree state: NR0,1,2 and BC0,1,2
|
||||
* this cannot be send through the on/off logic of set_function!
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Function definitions below
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user