Fix icom_set_mode_with_data for IC7610 and IC7300

Fix max baud rate for IC7610
Bump IC7610 to BETA status
pull/179/head
Michael Black 2020-01-04 23:28:34 -06:00
rodzic 2098789118
commit 0d02109483
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 6599353EC683404D
2 zmienionych plików z 24 dodań i 11 usunięć

Wyświetl plik

@ -166,15 +166,15 @@ const struct rig_caps ic7610_caps =
.rig_model = RIG_MODEL_IC7610,
.model_name = "IC-7610",
.mfg_name = "Icom",
.version = BACKEND_VER ".0",
.version = BACKEND_VER ".1",
.copyright = "LGPL",
.status = RIG_STATUS_UNTESTED,
.status = RIG_STATUS_BETA,
.rig_type = RIG_TYPE_TRANSCEIVER,
.ptt_type = RIG_PTT_RIG,
.dcd_type = RIG_DCD_RIG,
.port_type = RIG_PORT_SERIAL,
.serial_rate_min = 300,
.serial_rate_max = 19200,
.serial_rate_max = 115200,
.serial_data_bits = 8,
.serial_stop_bits = 1,
.serial_parity = RIG_PARITY_NONE,
@ -289,7 +289,7 @@ const struct rig_caps ic7610_caps =
.priv = (void *)& ic7610_priv_caps,
.rig_init = icom_init,
.rig_cleanup = icom_cleanup,
.rig_open = NULL,
.rig_open = icom_rig_open,
.rig_close = NULL,
.set_freq = icom_set_freq,

Wyświetl plik

@ -588,8 +588,6 @@ icom_rig_open(RIG *rig)
int retval = RIG_OK;
struct rig_state *rs = &rig->state;
struct icom_priv_data *priv = (struct icom_priv_data *) rs->priv;
struct icom_priv_caps *priv_caps =
(struct icom_priv_caps *) rig->caps->priv;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
@ -1148,12 +1146,14 @@ int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode,
pbwidth_t width)
{
int retval;
unsigned char datamode;
unsigned char datamode[2];
unsigned char ackbuf[MAXFRAMELEN];
int ack_len = sizeof(ackbuf);
rmode_t icom_mode;
unsigned char dm_sub_cmd = RIG_MODEL_IC7200 == rig->caps->rig_model ? 0x04 :
S_MEM_DATA_MODE;
int filter_byte = rig->caps->rig_model == RIG_MODEL_IC7300
|| rig->caps->rig_model == RIG_MODEL_IC7610;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
@ -1193,17 +1193,30 @@ int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode,
/* some rigs (e.g. IC-7700 & IC-7800)
have D1/2/3 but we cannot know
which to set so just set D1 */
datamode = 0x01;
datamode[0] = 0x01;
break;
default:
datamode = 0x00;
datamode[0] = 0x00;
break;
}
retval =
icom_transaction(rig, C_CTL_MEM, dm_sub_cmd, &datamode, 1, ackbuf,
if (filter_byte) { // then we need the width byte too
unsigned char md;
signed char pd;
retval = rig2icom_mode(rig, mode, width, &md, &pd);
if (retval == RIG_OK) {
datamode[1] = pd;
retval =
icom_transaction(rig, C_CTL_MEM, dm_sub_cmd, datamode, 2, ackbuf,
&ack_len);
}
}
else {
retval =
icom_transaction(rig, C_CTL_MEM, dm_sub_cmd, datamode, 1, ackbuf,
&ack_len);
}
if (retval != RIG_OK)
{