[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. 379caace7cce869ab9199
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: Michael B. <mdb...@us...> - 2020-06-21 22:04:26
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Hamlib -- Ham radio control libraries". The branch, master has been updated via 379caace7cce869ab919919db26e72a4c3e76d83 (commit) via d95bcccc9406d027cacb216e45c3d399ca180136 (commit) via 3cb79b3bca3360abad2f767305dee65938dcbb5b (commit) via 35001b12c07214d6d687850c9e12bd2b04a6c1d6 (commit) via 9dc12e8b63e68e9bb2fa50366aeab170b0523afe (commit) via c2ee1ecb025469879d849ef2930636375066ef9f (commit) via 83521b26948cebce9170a9b624178fc442e48424 (commit) via fe8decf47500828e2a469e6b49ed8712293e19d8 (commit) via e6b62e4f3e277440a6cbe64fe8a1dd3b71cc8e56 (commit) via 63357389d673d031b3a37acc5bba374a93920ed2 (commit) via 8ff077d7a9fb0138f3a1462f985f10c8d5d1ab67 (commit) via abe2697f4e05801bd66c33fbe7338e1385c1a881 (commit) via d61d1c13e108bb4131f8710f4adc163757fafbc5 (commit) via 68e6dd0e21aa872883655c2e677e1fc9193a8b3f (commit) via 9c87990a763455255293b25dc33b72e829e63477 (commit) via d5ff0f24780f3d3e0d43631ade9d474c667f8456 (commit) via bcb6add4d25f22cc24eda7d7842f247c641ae6c5 (commit) via 93992efe42a5d017551df0cc07d22c46d2c3d8c8 (commit) via 0bd366b05b81fcdf14e1095579379f3a3d75253a (commit) via 2ef81310238a9838d342699a389c3e79de1c681c (commit) via 031b1017815b966cd04c7fc2c93568a6482d25a7 (commit) via e5a61a5a1457aace614eb7918d398ec2faf92e78 (commit) via 805b4aa269a530a58f465a63eec356c89451a6e0 (commit) via b2f1b1880af592442ba453a648fc168002f5affa (commit) via 5a28ef9a20207e638aac197e3177a6bf98f6cbf2 (commit) via 3b3c2abb009a8380ee142123f238c1e124bd6a3e (commit) via bbc67d598e6b4dbf4ef50ab272787018eb25e209 (commit) from 9033eb733a5891acfc2c2940bab4f26dcdedc1bd (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 379caace7cce869ab919919db26e72a4c3e76d83 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Jun 21 16:15:00 2020 -0500 update comm_state when port_close is called diff --git a/src/rig.c b/src/rig.c index ceb7586c..67af05e6 100644 --- a/src/rig.c +++ b/src/rig.c @@ -604,6 +604,7 @@ int HAMLIB_API rig_open(RIG *rig) if (rs->comm_state) { port_close(&rs->rigport, rs->rigport.type.rig); + rs->comm_state = 0; return -RIG_EINVAL; } commit d95bcccc9406d027cacb216e45c3d399ca180136 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Jun 21 15:44:01 2020 -0500 Add newer Set 2 RIT command to appropriate kenwood rigs diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 7ba802db..5bcee48d 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -744,6 +744,18 @@ int kenwood_open(RIG *rig) } } + if (RIG_IS_TS2000 + || RIG_IS_TS480 + || RIG_IS_TS590S + || RIG_IS_TS590SG + || RIG_IS_TS890S + || RIG_IS_TS990S) + { + // rig has Set 2 RIT/XIT function + rig_debug(RIG_DEBUG_TRACE, "%s: rig has_rit2\n", __func__); + priv->has_rit2 = 1; + } + if (RIG_IS_TS590S) { /* we need the firmware version for these rigs to deal with f/w defects */ @@ -1652,9 +1664,11 @@ int kenwood_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) int retval, i; shortfreq_t curr_rit; int diff; + struct kenwood_priv_data *priv = rig->state.priv; - rig_debug(RIG_DEBUG_VERBOSE, "%s called: vfo=%s, rit=%ld\n", __func__, - rig_strvfo(vfo), rit); + rig_debug(RIG_DEBUG_VERBOSE, "%s called: vfo=%s, rit=%ld, has_rit2=%d\n", + __func__, + rig_strvfo(vfo), rit, priv->has_rit2); retval = kenwood_get_rit(rig, vfo, &curr_rit); @@ -1663,28 +1677,32 @@ int kenwood_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) return retval; } - rig_debug(RIG_DEBUG_VERBOSE, "%s get_rit=%ld\n", __func__, curr_rit); - - if (rit == 0) + if (priv->has_rit2) // if backend shows it has the Set 2 command { - return kenwood_transaction(rig, "RC", NULL, 0); + char cmd[10]; + snprintf(cmd, sizeof(cmd) - 1, "R%c%05d", rit > 0 ? 'U' : 'D', (int)rit); + retval = kenwood_transaction(rig, cmd, NULL, 0); } + else + { + retval = kenwood_transaction(rig, "RC", NULL, 0); - retval = kenwood_transaction(rig, "RC", NULL, 0); + if (retval != RIG_OK) + { + return retval; + } - if (retval != RIG_OK) - { - return retval; - } + if (rit == 0) { return RIG_OK; } // we're done here - snprintf(buf, sizeof(buf), "R%c", (rit > 0) ? 'U' : 'D'); + snprintf(buf, sizeof(buf), "R%c", (rit > 0) ? 'U' : 'D'); - diff = labs((rit + rit >= 0 ? 5 : -5) / 10); // round to nearest - rig_debug(RIG_DEBUG_TRACE, "%s: rit change loop=%d\n", __func__, diff); + diff = labs((rit + rit >= 0 ? 5 : -5) / 10); // round to nearest + rig_debug(RIG_DEBUG_TRACE, "%s: rit change loop=%d\n", __func__, diff); - for (i = 0; i < diff; i++) - { - retval = kenwood_transaction(rig, buf, NULL, 0); + for (i = 0; i < diff; i++) + { + retval = kenwood_transaction(rig, buf, NULL, 0); + } } return retval; diff --git a/rigs/kenwood/kenwood.h b/rigs/kenwood/kenwood.h index ea6c6603..c96827ca 100644 --- a/rigs/kenwood/kenwood.h +++ b/rigs/kenwood/kenwood.h @@ -84,7 +84,7 @@ extern const struct confparams kenwood_cfg_params[]; #define RIG_IS_TS2000 (rig->caps->rig_model == RIG_MODEL_TS2000) #define RIG_IS_TS50 (rig->caps->rig_model == RIG_MODEL_TS50) #define RIG_IS_TS450S (rig->caps->rig_model == RIG_MODEL_TS450S) -#define RIG_IS_TS450S (rig->caps->rig_model == RIG_MODEL_TS450S) +#define RIG_IS_TS480 (rig->caps->rig_model == RIG_MODEL_TS480) #define RIG_IS_TS590S (rig->caps->rig_model == RIG_MODEL_TS590S) #define RIG_IS_TS590SG (rig->caps->rig_model == RIG_MODEL_TS590SG) #define RIG_IS_TS690S (rig->caps->rig_model == RIG_MODEL_TS690S) @@ -120,13 +120,10 @@ struct kenwood_priv_data int is_emulation; /* flag for TS-2000 emulations */ void *data; /* model specific data */ rmode_t curr_mode; /* used for is_emulation to avoid get_mode on VFOB */ - // Boolean flags true when model is in use - int is_590s; - int is_590sg; - int is_950; struct timespec cache_start; char last_if_response[KENWOOD_MAX_BUF_LEN]; int poweron; /* to avoid powering on more than once */ + int has_rit2; /* rig has set 2 rit command */ }; commit 3cb79b3bca3360abad2f767305dee65938dcbb5b Merge: 35001b12 e6b62e4f Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Jun 21 14:47:52 2020 -0500 Merge branch 'master' of https://github.com/Hamlib/Hamlib commit 35001b12c07214d6d687850c9e12bd2b04a6c1d6 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Jun 21 14:47:38 2020 -0500 astyle icom.c diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index f1e3ead2..c9a2988d 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -754,6 +754,7 @@ icom_rig_open(RIG *rig) return retval; } } + priv->poweron = 1; if (rig->caps->has_get_func & RIG_FUNC_SATMODE) commit 9dc12e8b63e68e9bb2fa50366aeab170b0523afe Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Jun 21 14:47:22 2020 -0500 astyle kenwood.c diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 2868e0c7..7ba802db 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -1679,7 +1679,7 @@ int kenwood_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) snprintf(buf, sizeof(buf), "R%c", (rit > 0) ? 'U' : 'D'); - diff = labs((rit + rit>=0?5:-5) / 10); // round to nearest + diff = labs((rit + rit >= 0 ? 5 : -5) / 10); // round to nearest rig_debug(RIG_DEBUG_TRACE, "%s: rit change loop=%d\n", __func__, diff); for (i = 0; i < diff; i++) commit c2ee1ecb025469879d849ef2930636375066ef9f Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Jun 21 14:46:50 2020 -0500 astyle files diff --git a/rigs/alinco/dx77.c b/rigs/alinco/dx77.c index d057440d..b6f07ce2 100644 --- a/rigs/alinco/dx77.c +++ b/rigs/alinco/dx77.c @@ -289,10 +289,10 @@ const struct rig_caps dx77_caps = * TODO: error case handling */ int dx77_transaction(RIG *rig, - const char *cmd, - int cmd_len, - char *data, - int *data_len) + const char *cmd, + int cmd_len, + char *data, + int *data_len) { int retval; @@ -398,10 +398,10 @@ int dx77_set_vfo(RIG *rig, vfo_t vfo) case RIG_VFO_MEM: return dx77_transaction(rig, - AL CMD_MEMMD "0" EOM, - strlen(AL CMD_MEMMD "0" EOM), - NULL, - NULL); + AL CMD_MEMMD "0" EOM, + strlen(AL CMD_MEMMD "0" EOM), + NULL, + NULL); default: rig_debug(RIG_DEBUG_ERR, @@ -427,10 +427,10 @@ int dx77_get_vfo(RIG *rig, vfo_t *vfo) int vfo_len, retval; retval = dx77_transaction(rig, - AL CMD_RMV EOM, - strlen(AL CMD_RMV EOM), - vfobuf, - &vfo_len); + AL CMD_RMV EOM, + strlen(AL CMD_RMV EOM), + vfobuf, + &vfo_len); if (retval != RIG_OK) { @@ -506,10 +506,10 @@ static int current_data_read(RIG *rig, char *databuf) int data_len, retval; retval = dx77_transaction(rig, - AL CMD_RDATA EOM, - strlen(AL CMD_RDATA EOM), - databuf, - &data_len); + AL CMD_RDATA EOM, + strlen(AL CMD_RDATA EOM), + databuf, + &data_len); if (retval != RIG_OK) { @@ -702,10 +702,10 @@ int dx77_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo) char spltbuf[BUFSZ]; retval = dx77_transaction(rig, - AL CMD_RSPLT EOM, - strlen(AL CMD_RSPLT EOM), - spltbuf, - &splt_len); + AL CMD_RSPLT EOM, + strlen(AL CMD_RSPLT EOM), + spltbuf, + &splt_len); if (retval != RIG_OK) { @@ -805,10 +805,10 @@ int dx77_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit) /* read in Hertz unit */ retval = dx77_transaction(rig, - AL CMD_RIT "0" EOM, - strlen(AL CMD_RIT "0" EOM), - ritbuf, - &rit_len); + AL CMD_RIT "0" EOM, + strlen(AL CMD_RIT "0" EOM), + ritbuf, + &rit_len); if (retval != RIG_OK) { @@ -1113,10 +1113,10 @@ int dx77_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) case RIG_LEVEL_RAWSTR: /* read A/D converted value */ retval = dx77_transaction(rig, - AL CMD_SMETER "1" EOM, - strlen(AL CMD_SMETER "1" EOM), - lvlbuf, - &lvl_len); + AL CMD_SMETER "1" EOM, + strlen(AL CMD_SMETER "1" EOM), + lvlbuf, + &lvl_len); if (retval != RIG_OK) { @@ -1187,10 +1187,10 @@ int dx77_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) case RIG_LEVEL_RFPOWER: retval = dx77_transaction(rig, - AL CMD_RPOWER EOM, - strlen(AL CMD_RPOWER EOM), - lvlbuf, - &lvl_len); + AL CMD_RPOWER EOM, + strlen(AL CMD_RPOWER EOM), + lvlbuf, + &lvl_len); if (retval != RIG_OK) { @@ -1294,10 +1294,10 @@ int dx77_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) int ptt_len, retval; retval = dx77_transaction(rig, - AL CMD_PTT EOM, - strlen(AL CMD_PTT EOM), - pttbuf, - &ptt_len); + AL CMD_PTT EOM, + strlen(AL CMD_PTT EOM), + pttbuf, + &ptt_len); if (retval != RIG_OK) { @@ -1347,10 +1347,10 @@ int dx77_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd) int dcd_len, retval; retval = dx77_transaction(rig, - AL CMD_SQL EOM, - strlen(AL CMD_SQL EOM), - dcdbuf, - &dcd_len); + AL CMD_SQL EOM, + strlen(AL CMD_SQL EOM), + dcdbuf, + &dcd_len); if (retval != RIG_OK) { @@ -1421,10 +1421,10 @@ int dx77_get_mem(RIG *rig, vfo_t vfo, int *ch) int mem_len, retval; retval = dx77_transaction(rig, - AL CMD_RMEM EOM, - strlen(AL CMD_RMEM EOM), - membuf, - &mem_len); + AL CMD_RMEM EOM, + strlen(AL CMD_RMEM EOM), + membuf, + &mem_len); if (retval != RIG_OK) { diff --git a/rigs/alinco/dxsr8.c b/rigs/alinco/dxsr8.c index fa5be083..3ac50134 100644 --- a/rigs/alinco/dxsr8.c +++ b/rigs/alinco/dxsr8.c @@ -74,7 +74,7 @@ int dxsr8_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt); /* * DX-SR8 rig capabilities. * - * thanks to + * thanks to * https://yo5ptd.wordpress.com/2017/02/12/alinco-dx-sr8/ * for a partially documented protocol */ @@ -131,12 +131,12 @@ const struct rig_caps dxsr8_caps = RIG_CHAN_END, }, - .rx_range_list1 = + .rx_range_list1 = { {kHz(135), MHz(30), DXSR8_ALL_MODES, -1, -1, DXSR8_VFO, 0, "DX-SR8T"}, RIG_FRNG_END, }, - .tx_range_list1 = + .tx_range_list1 = { {kHz(1800), MHz(2) - 100, DXSR8_OTHER_TX_MODES, W(10), W(100), DXSR8_VFO, 0, "DX-SR8T"}, {kHz(1800), MHz(2) - 100, DXSR8_AM_TX_MODES, W(4), W(40), DXSR8_VFO, 0, "DX-SR8T"}, @@ -168,7 +168,7 @@ const struct rig_caps dxsr8_caps = {kHz(135), MHz(30), DXSR8_ALL_MODES, -1, -1, DXSR8_VFO, 0, "DX-SR8E"}, RIG_FRNG_END, }, - .tx_range_list2 = + .tx_range_list2 = { {kHz(1800), MHz(2) - 100, DXSR8_OTHER_TX_MODES, W(10), W(100), DXSR8_VFO, 0, "DX-SR8E"}, {kHz(1800), MHz(2) - 100, DXSR8_AM_TX_MODES, W(4), W(40), DXSR8_VFO, 0, "DX-SR8E"}, @@ -231,10 +231,10 @@ const struct rig_caps dxsr8_caps = * TODO: error case handling */ int dxsr8_transaction(RIG *rig, - const char *cmd, - int cmd_len, - char *data, - int *data_len) + const char *cmd, + int cmd_len, + char *data, + int *data_len) { int retval; @@ -265,12 +265,12 @@ int dxsr8_transaction(RIG *rig, * TODO: check whether cmd and echobuf match (optional) */ retval = read_string(&rs->rigport, replybuf, BUFSZ, LF, strlen(LF)); - + if (retval < 0) { return retval; } - + retval = read_string(&rs->rigport, replybuf, BUFSZ, LF, strlen(LF)); @@ -302,7 +302,7 @@ int dxsr8_transaction(RIG *rig, strcpy(data, replybuf); *data_len = reply_len; - + return RIG_OK; } @@ -312,8 +312,8 @@ int dxsr8_transaction(RIG *rig, * Convenience function to read a numeric value from the radio */ int dxsr8_read_num(RIG *rig, - const char *cmd, - int *reply_num) + const char *cmd, + int *reply_num) { int retval; int reply_len; @@ -334,8 +334,9 @@ int dxsr8_read_num(RIG *rig, * dxsr8_set_freq * Assumes rig!=NULL */ -int dxsr8_set_freq(RIG *rig, vfo_t vfo, freq_t freq) { - +int dxsr8_set_freq(RIG *rig, vfo_t vfo, freq_t freq) +{ + char cmd[BUFSZ]; int cmd_len; @@ -353,9 +354,10 @@ int dxsr8_set_freq(RIG *rig, vfo_t vfo, freq_t freq) { * dxsr8_get_freq * Assumes rig!=NULL, freq!=NULL */ -int dxsr8_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) { +int dxsr8_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) +{ int retval, data_len; - + char cmd[] = AL "~RR_RXF" EOM; char freqbuf[BUFSZ]; @@ -376,18 +378,24 @@ int dxsr8_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) { * dxsr8_set_mode * Assumes rig!=NULL */ -int dxsr8_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) { - char mdbuf[BUFSZ]; +int dxsr8_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) +{ + char mdbuf[BUFSZ]; int mdbuf_len, wide_filter, retval; int amode; switch (mode) { case RIG_MODE_CW: amode = MD_CWU; break; + case RIG_MODE_CWR: amode = MD_CWL; break; + case RIG_MODE_USB: amode = MD_USB; break; + case RIG_MODE_LSB: amode = MD_LSB; break; + case RIG_MODE_FM: amode = MD_FM; break; + case RIG_MODE_AM: amode = MD_AM; break; default: @@ -427,14 +435,16 @@ int dxsr8_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) { * dxsr8_get_mode * Assumes rig!=NULL, mode!=NULL */ -int dxsr8_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) { - +int dxsr8_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) +{ + int retval; int amode; int filter; retval = dxsr8_read_num(rig, AL "~RR_RFM" EOM, &amode); - if (retval != RIG_OK) + + if (retval != RIG_OK) { return retval; } @@ -443,9 +453,13 @@ int dxsr8_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) { { case MD_CWL: case MD_CWU: *mode = RIG_MODE_CW; break; + case MD_USB: *mode = RIG_MODE_USB; break; + case MD_LSB: *mode = RIG_MODE_LSB; break; + case MD_AM: *mode = RIG_MODE_AM; break; + case MD_FM: *mode = RIG_MODE_FM; break; default: @@ -458,10 +472,12 @@ int dxsr8_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) { retval = dxsr8_read_num(rig, AL "~RR_NAR" EOM, &filter); - if (filter == 0) + if (filter == 0) { *width = rig_passband_wide(rig, *mode); - } else { + } + else + { *width = rig_passband_normal(rig, *mode); } @@ -472,7 +488,8 @@ int dxsr8_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) { * dxsr8_set_func * Assumes rig!=NULL */ -int dxsr8_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) { +int dxsr8_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) +{ int cmd_len; char cmd[BUFSZ]; @@ -489,7 +506,7 @@ int dxsr8_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) { return dxsr8_transaction(rig, cmd, cmd_len, NULL, NULL); - + default: rig_debug(RIG_DEBUG_ERR, "Unsupported set_func %d\n", (int)func); return -RIG_EINVAL; @@ -502,7 +519,8 @@ int dxsr8_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) { * dxsr8_get_func * Assumes rig!=NULL, status!=NULL */ -int dxsr8_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) { +int dxsr8_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) +{ int retval; int setting; @@ -535,7 +553,7 @@ int dxsr8_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) { *status = setting ? 1 : 0; break; - + default: rig_debug(RIG_DEBUG_ERR, "Unsupported get_func %d\n", (int)func); return -RIG_EINVAL; @@ -549,7 +567,8 @@ int dxsr8_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) { * Assumes rig!=NULL * FIXME: cannot support PREAMP and ATT both at same time (make sense though) */ -int dxsr8_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) { +int dxsr8_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) +{ int cmd_len, lvl; char cmd[BUFSZ]; @@ -559,6 +578,7 @@ int dxsr8_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) { switch (val.i) { case 0: lvl = 0; break; // AL~RW_RFG00 - RF gain 0dB + case 10: lvl = 3; break; // AL~RW_RFG03 - RF gain +10dB default: rig_debug(RIG_DEBUG_ERR, @@ -575,7 +595,9 @@ int dxsr8_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) { switch (val.i) { case 0: lvl = 0; break; // AL~RW_RFG00 - RF gain 0dB + case 10: lvl = 1; break; // AL~RW_RFG01 - RF gain -10dB + case 20: lvl = 2; break; // AL~RW_RFG02 - RF gain -20dB default: rig_debug(RIG_DEBUG_ERR, @@ -590,11 +612,16 @@ int dxsr8_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) { case RIG_LEVEL_RFPOWER: - if (val.f <= 0.01) { + if (val.f <= 0.01) + { lvl = 2; // AL~RW_PWR02 - Sub low power (QRP mode) - } else if (val.f <= 0.1) { + } + else if (val.f <= 0.1) + { lvl = 1; // AL~RW_PWR01 - Low power - } else { + } + else + { lvl = 0; // AL~RW_PWR00 - High power } @@ -614,7 +641,8 @@ int dxsr8_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) { * dxsr8_get_level * Assumes rig!=NULL, val!=NULL */ -int dxsr8_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) { +int dxsr8_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) +{ int retval; int lvl; @@ -630,12 +658,15 @@ int dxsr8_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) { return retval; } - switch (lvl) { + switch (lvl) + { case 0: val->i = 0; break; // RF gain 0dB + case 3: val->i = 10; break; // RF gain +10dB - default: + + default: rig_debug(RIG_DEBUG_ERR, "Unknown RF Gain %02d\n", lvl); } @@ -649,14 +680,18 @@ int dxsr8_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) { return retval; } - switch (lvl) { + switch (lvl) + { case 0: val->i = 0; break; // RF gain 0dB + case 1: val->i = 10; break; // RF gain -10dB + case 2: val->i = 10; break; // RF gain -20dB - default: + + default: rig_debug(RIG_DEBUG_ERR, "Unknown RF Gain %02d\n", lvl); } @@ -684,7 +719,7 @@ int dxsr8_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) { case 3: // 02 - Sub low power (QRP mode) val->f = 0.01; // 1 W break; - + default: rig_debug(RIG_DEBUG_ERR, "Unknown RF Power %02d\n", lvl); break; @@ -705,7 +740,8 @@ int dxsr8_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) { * dxsr8_get_ptt * Assumes rig!=NULL, ptt!=NULL */ -int dxsr8_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) { +int dxsr8_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) +{ int retval; int pttval; @@ -725,7 +761,8 @@ int dxsr8_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) { * dxsr8_set_ptt * Assumes rig!=NULL */ -int dxsr8_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) { +int dxsr8_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) +{ char cmd[BUFSZ]; int cmd_len; diff --git a/rigs/yaesu/ft991.c b/rigs/yaesu/ft991.c index 5921e14f..60d020bf 100644 --- a/rigs/yaesu/ft991.c +++ b/rigs/yaesu/ft991.c @@ -736,6 +736,7 @@ static int ft991_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone) { int i; ncboolean tone_match; + for (i = 0, tone_match = FALSE; rig->caps->ctcss_list[i] != 0; i++) { if (tone == rig->caps->ctcss_list[i]) diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 68da054c..8cc8b187 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -366,7 +366,8 @@ int newcat_open(RIG *rig) __func__, rig_s->rigport.post_write_delay); /* Ensure rig is powered on */ - if (priv->poweron == 0) { + if (priv->poweron == 0) + { priv->poweron = 1; rig_set_powerstat(rig, 1); } commit 83521b26948cebce9170a9b624178fc442e48424 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Jun 21 14:43:33 2020 -0500 Fix kenwood set_rit for negative values diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 1d1aac72..2868e0c7 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -1679,7 +1679,7 @@ int kenwood_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) snprintf(buf, sizeof(buf), "R%c", (rit > 0) ? 'U' : 'D'); - diff = labs((rit + 5) / 10); // round to nearest + diff = labs((rit + rit>=0?5:-5) / 10); // round to nearest rig_debug(RIG_DEBUG_TRACE, "%s: rit change loop=%d\n", __func__, diff); for (i = 0; i < diff; i++) commit fe8decf47500828e2a469e6b49ed8712293e19d8 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Jun 21 14:32:07 2020 -0500 Fix kenwood get_xit to correct status bit diff --git a/rigs/kenwood/kenwood.h b/rigs/kenwood/kenwood.h index fcae7b42..ea6c6603 100644 --- a/rigs/kenwood/kenwood.h +++ b/rigs/kenwood/kenwood.h @@ -27,7 +27,7 @@ #include <string.h> #include "token.h" -#define BACKEND_VER "20200619" +#define BACKEND_VER "20200621" #define EOM_KEN ';' #define EOM_TH '\r' commit e6b62e4f3e277440a6cbe64fe8a1dd3b71cc8e56 Merge: 8ff077d7 63357389 Author: Michael Black <mdb...@ya...> Date: Sun Jun 21 12:59:29 2020 -0500 Merge pull request #324 from hiteki/hiteki_323 get_dcd responds without crashing #323 commit 63357389d673d031b3a37acc5bba374a93920ed2 Author: hiteki <tb...@ya...> Date: Sun Jun 21 19:10:21 2020 +0200 get_dcd responds without crashing #323 diff --git a/rigs/uniden/uniden.c b/rigs/uniden/uniden.c index 2d2f56d0..b19c07ab 100644 --- a/rigs/uniden/uniden.c +++ b/rigs/uniden/uniden.c @@ -229,8 +229,8 @@ transaction_write: #endif /* Special case for SQuelch */ - if (replystr && !memcmp(cmdstr, "SQ", 2) && (replystr[0] == '-' - || replystr[0] == '+')) + if (replystr && !memcmp(cmdstr, "SQ", 2) && (data[0] == '-' + || data[0] == '+')) { retval = RIG_OK; goto transaction_quit; commit 8ff077d7a9fb0138f3a1462f985f10c8d5d1ab67 Merge: d61d1c13 abe2697f Author: Michael Black <mdb...@ya...> Date: Sun Jun 21 11:13:42 2020 -0500 Merge pull request #322 from hiteki/hiteki_321 uniden_get_mode report WFM mode correctly #321 commit abe2697f4e05801bd66c33fbe7338e1385c1a881 Author: hiteki <tb...@ya...> Date: Sun Jun 21 18:09:18 2020 +0200 uniden_get_mode report WFM mode correctly #321 diff --git a/rigs/uniden/uniden.c b/rigs/uniden/uniden.c index b79fac04..2d2f56d0 100644 --- a/rigs/uniden/uniden.c +++ b/rigs/uniden/uniden.c @@ -406,7 +406,7 @@ int uniden_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) } else if (!strcmp(modebuf + 3, "WFM")) { - *mode = RIG_MODE_AM; + *mode = RIG_MODE_WFM; } else if (!strcmp(modebuf + 3, "FM")) { commit d61d1c13e108bb4131f8710f4adc163757fafbc5 Merge: 9c87990a 68e6dd0e Author: Michael Black <mdb...@ya...> Date: Sun Jun 21 09:26:11 2020 -0500 Merge pull request #320 from hiteki/hiteki_319 Correctly compare response strings #319 commit 68e6dd0e21aa872883655c2e677e1fc9193a8b3f Author: hiteki <tb...@ya...> Date: Sun Jun 21 16:09:45 2020 +0200 Correctly compare response strings #319 diff --git a/rigs/uniden/uniden.c b/rigs/uniden/uniden.c index 8117de7a..b79fac04 100644 --- a/rigs/uniden/uniden.c +++ b/rigs/uniden/uniden.c @@ -187,7 +187,7 @@ transaction_write: goto transaction_quit; } - if (strcmp(data, "OK"EOM)) + if (strcmp(data, "OK"EOM) == 0) { /* everything is fine */ retval = RIG_OK; @@ -198,7 +198,7 @@ transaction_write: * in the right mode or using the correct parameters. ERR indicates * an INVALID Command. */ - if (strcmp(data, "NG"EOM) || strcmp(data, "ORER"EOM)) + if (strcmp(data, "NG"EOM) == 0 || strcmp(data, "ORER"EOM) == 0) { /* Invalid command */ rig_debug(RIG_DEBUG_VERBOSE, "%s: NG/Overflow for '%s'\n", __func__, cmdstr); @@ -206,7 +206,7 @@ transaction_write: goto transaction_quit; } - if (strcmp(data, "ERR"EOM)) + if (strcmp(data, "ERR"EOM) == 0) { /* Command format error */ rig_debug(RIG_DEBUG_VERBOSE, "%s: Error for '%s'\n", __func__, cmdstr); commit 9c87990a763455255293b25dc33b72e829e63477 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Jun 21 06:44:40 2020 -0500 Update uniden BACKEND date diff --git a/rigs/uniden/uniden.h b/rigs/uniden/uniden.h index c3631981..4ea114ff 100644 --- a/rigs/uniden/uniden.h +++ b/rigs/uniden/uniden.h @@ -25,7 +25,7 @@ #include <hamlib/rig.h> #include <cal.h> -#define BACKEND_VER "20200114" +#define BACKEND_VER "20200621" /* TODO: Trunk, Delay, Recording * commit d5ff0f24780f3d3e0d43631ade9d474c667f8456 Merge: bcb6add4 93992efe Author: Michael Black <mdb...@ya...> Date: Sun Jun 21 06:41:58 2020 -0500 Merge pull request #318 from hiteki/hiteki_317 Uniden bc780xlt channel ranges is 1..500 #317 commit bcb6add4d25f22cc24eda7d7842f247c641ae6c5 Merge: 2ef81310 0bd366b0 Author: Michael Black <mdb...@ya...> Date: Sun Jun 21 06:41:42 2020 -0500 Merge pull request #316 from hiteki/hiteki_315 uniden_get_channel correctly parses rig's response #315 commit 93992efe42a5d017551df0cc07d22c46d2c3d8c8 Author: hiteki <tb...@ya...> Date: Sun Jun 21 12:27:59 2020 +0200 Uniden bc780xlt channel ranges is 1..500 #317 diff --git a/rigs/uniden/bc780.c b/rigs/uniden/bc780.c index 43753df1..45ee2259 100644 --- a/rigs/uniden/bc780.c +++ b/rigs/uniden/bc780.c @@ -98,7 +98,7 @@ const struct rig_caps bc780_caps = .str_cal = BC780_STR_CAL, .chan_list = { - { 0, 499, RIG_MTYPE_MEM, {BC780_CHANNEL_CAPS} }, + { 1, 500, RIG_MTYPE_MEM, {BC780_CHANNEL_CAPS} }, RIG_CHAN_END, }, commit 0bd366b05b81fcdf14e1095579379f3a3d75253a Author: hiteki <tb...@ya...> Date: Sun Jun 21 12:06:40 2020 +0200 uniden_get_channel correctly parses rig's response #315 diff --git a/rigs/uniden/uniden.c b/rigs/uniden/uniden.c index 249bd0b2..8117de7a 100644 --- a/rigs/uniden/uniden.c +++ b/rigs/uniden/uniden.c @@ -619,12 +619,12 @@ int uniden_get_channel(RIG *rig, channel_t *chan, int read_only) */ if (mem_len < 30 || membuf[5] != 'F' || - membuf[25] != 'T' || - membuf[28] != 'D' || - membuf[31] != 'L' || - membuf[34] != 'A' || - membuf[37] != 'R' || - membuf[40] != 'N') + membuf[15] != 'T' || + membuf[18] != 'D' || + membuf[21] != 'L' || + membuf[24] != 'A' || + membuf[27] != 'R' || + membuf[30] != 'N') { return -RIG_EPROTO; } commit 2ef81310238a9838d342699a389c3e79de1c681c Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Jun 20 17:04:14 2020 -0500 Remove DATA_USB from ft1000mp.c diff --git a/rigs/yaesu/ft1000mp.c b/rigs/yaesu/ft1000mp.c index d30cb004..9b609651 100644 --- a/rigs/yaesu/ft1000mp.c +++ b/rigs/yaesu/ft1000mp.c @@ -877,10 +877,6 @@ int ft1000mp_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) cmd_index = FT1000MP_NATIVE_MODE_SET_DATA_LSB; break; - case RIG_MODE_PKTUSB: - cmd_index = FT1000MP_NATIVE_MODE_SET_DATA_USB; - break; - case RIG_MODE_PKTFM: cmd_index = FT1000MP_NATIVE_MODE_SET_DATA_FM; break; commit 031b1017815b966cd04c7fc2c93568a6482d25a7 Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Jun 20 16:12:48 2020 -0500 Promote bc780.c to stable diff --git a/rigs/uniden/bc780.c b/rigs/uniden/bc780.c index b31f09ec..43753df1 100644 --- a/rigs/uniden/bc780.c +++ b/rigs/uniden/bc780.c @@ -60,7 +60,7 @@ const struct rig_caps bc780_caps = .mfg_name = "Uniden", .version = BACKEND_VER ".0", .copyright = "LGPL", - .status = RIG_STATUS_UNTESTED, + .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRUNKSCANNER, .ptt_type = RIG_PTT_NONE, .dcd_type = RIG_DCD_RIG, commit e5a61a5a1457aace614eb7918d398ec2faf92e78 Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Jun 20 16:03:07 2020 -0500 Change ft1000mp.c back to TARGETABLE_FREQ diff --git a/rigs/yaesu/ft1000mp.c b/rigs/yaesu/ft1000mp.c index 0d10027a..d30cb004 100644 --- a/rigs/yaesu/ft1000mp.c +++ b/rigs/yaesu/ft1000mp.c @@ -215,7 +215,7 @@ const struct rig_caps ft1000mp_caps = RIG_MODEL(RIG_MODEL_FT1000MP), .model_name = "FT-1000MP", .mfg_name = "Yaesu", - .version = "20200619.0", + .version = "20200620.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -246,7 +246,7 @@ const struct rig_caps ft1000mp_caps = .max_rit = Hz(9999), .max_xit = Hz(9999), .max_ifshift = kHz(1.12), - .targetable_vfo = RIG_TARGETABLE_PURE, + .targetable_vfo = RIG_TARGETABLE_FREQ, .transceive = RIG_TRN_OFF, .bank_qty = 0, .chan_desc_sz = 0, @@ -877,6 +877,10 @@ int ft1000mp_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) cmd_index = FT1000MP_NATIVE_MODE_SET_DATA_LSB; break; + case RIG_MODE_PKTUSB: + cmd_index = FT1000MP_NATIVE_MODE_SET_DATA_USB; + break; + case RIG_MODE_PKTFM: cmd_index = FT1000MP_NATIVE_MODE_SET_DATA_FM; break; commit 805b4aa269a530a58f465a63eec356c89451a6e0 Merge: 5a28ef9a b2f1b188 Author: Michael Black <mdb...@ya...> Date: Sat Jun 20 15:51:22 2020 -0500 Merge pull request #314 from hiteki/hiteki_313 uniden_get_freq_2 to use SG<cr> instead of RF<cr> for bc780xlt #313 commit b2f1b1880af592442ba453a648fc168002f5affa Author: tb <tb...@xs...n> Date: Sat Jun 20 20:38:46 2020 +0200 uniden_get_freq_2 to use SG<cr> instead of RF<cr> for bc780xlt #313 - RF<cr> responds NG on bc780xlt - SG<cr> responds with the gain + the current frequency - SG<cr> is valid in manual mode, scan mode and search mode diff --git a/rigs/uniden/bc780.c b/rigs/uniden/bc780.c index e5b41b08..b31f09ec 100644 --- a/rigs/uniden/bc780.c +++ b/rigs/uniden/bc780.c @@ -129,7 +129,7 @@ const struct rig_caps bc780_caps = .priv = NULL, .set_freq = uniden_set_freq, - .get_freq = uniden_get_freq, + .get_freq = uniden_get_freq_2, .set_mode = uniden_set_mode, .get_mode = uniden_get_mode, .set_mem = uniden_set_mem, diff --git a/rigs/uniden/uniden.c b/rigs/uniden/uniden.c index 3e6b6479..249bd0b2 100644 --- a/rigs/uniden/uniden.c +++ b/rigs/uniden/uniden.c @@ -318,6 +318,35 @@ int uniden_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) return RIG_OK; } +/* + * uniden_get_freq + * Assumes rig!=NULL + */ +int uniden_get_freq_2(RIG *rig, vfo_t vfo, freq_t *freq) +{ + char freqbuf[BUFSZ]; + size_t freq_len = BUFSZ; + int ret; + + ret = uniden_transaction(rig, "SG" EOM, 3, "S", freqbuf, &freq_len); + + if (ret != RIG_OK) + { + return ret; + } + + if (freq_len < 10) + { + return -RIG_EPROTO; + } + + sscanf(freqbuf + 6, "%"SCNfreq, freq); + /* returned freq in hundreds of Hz */ + *freq *= 100; + + return RIG_OK; +} + int uniden_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) { const char *modebuf; diff --git a/rigs/uniden/uniden.h b/rigs/uniden/uniden.h index 2212dbc5..c3631981 100644 --- a/rigs/uniden/uniden.h +++ b/rigs/uniden/uniden.h @@ -58,6 +58,7 @@ int uniden_transaction (RIG *rig, const char *cmdstr, int cmd_len, const char *replystr, char *data, size_t *datasize); int uniden_set_freq(RIG *rig, vfo_t vfo, freq_t freq); int uniden_get_freq(RIG *rig, vfo_t vfo, freq_t *freq); +int uniden_get_freq_2(RIG *rig, vfo_t vfo, freq_t *freq); int uniden_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width); int uniden_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width); int uniden_set_mem(RIG *rig, vfo_t vfo, int ch); commit 5a28ef9a20207e638aac197e3177a6bf98f6cbf2 Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Jun 20 06:54:28 2020 -0500 Update ic703 to beta diff --git a/rigs/icom/ic703.c b/rigs/icom/ic703.c index da2a395d..0f368a20 100644 --- a/rigs/icom/ic703.c +++ b/rigs/icom/ic703.c @@ -91,7 +91,7 @@ const struct rig_caps ic703_caps = .mfg_name = "Icom", .version = BACKEND_VER ".0", .copyright = "LGPL", - .status = RIG_STATUS_UNTESTED, + .status = RIG_STATUS_BETA, .rig_type = RIG_TYPE_MOBILE, .ptt_type = RIG_PTT_NONE, .dcd_type = RIG_DCD_RIG, commit 3b3c2abb009a8380ee142123f238c1e124bd6a3e Author: Michael Black W9MDB <mdb...@ya...> Date: Fri Jun 19 23:26:59 2020 -0500 On a 2nd rig_open call it would fail since port was still open. We now force close the port during rig_open. This should prevent the invalid configuration error WSJT-X sees on rig_open diff --git a/src/rig.c b/src/rig.c index e12a35a9..ceb7586c 100644 --- a/src/rig.c +++ b/src/rig.c @@ -570,13 +570,6 @@ int HAMLIB_API rig_open(RIG *rig) caps = rig->caps; rs = &rig->state; - if (rs->comm_state) - { - return -RIG_EINVAL; - } - - rs->rigport.fd = -1; - // determine if we have a network address // is_network |= sscanf(rs->rigport.pathname, "%u.%u.%u.%u:%u", &net1, &net2, @@ -608,6 +601,14 @@ int HAMLIB_API rig_open(RIG *rig) rs->rigport.type.rig = RIG_PORT_NETWORK; } + if (rs->comm_state) + { + port_close(&rs->rigport, rs->rigport.type.rig); + return -RIG_EINVAL; + } + + rs->rigport.fd = -1; + if (rs->rigport.type.rig == RIG_PORT_SERIAL) { if (rs->rigport.parm.serial.rts_state != RIG_SIGNAL_UNSET commit bbc67d598e6b4dbf4ef50ab272787018eb25e209 Author: Michael Black W9MDB <mdb...@ya...> Date: Fri Jun 19 22:40:07 2020 -0500 Change ft1000mp.c to TARGETABLE_PURE to avoid VFO swap on set_split diff --git a/rigs/yaesu/ft1000mp.c b/rigs/yaesu/ft1000mp.c index c7b7fe80..0d10027a 100644 --- a/rigs/yaesu/ft1000mp.c +++ b/rigs/yaesu/ft1000mp.c @@ -246,7 +246,7 @@ const struct rig_caps ft1000mp_caps = .max_rit = Hz(9999), .max_xit = Hz(9999), .max_ifshift = kHz(1.12), - .targetable_vfo = RIG_TARGETABLE_FREQ, + .targetable_vfo = RIG_TARGETABLE_PURE, .transceive = RIG_TRN_OFF, .bank_qty = 0, .chan_desc_sz = 0, ----------------------------------------------------------------------- Summary of changes: rigs/alinco/dx77.c | 88 ++++++++++++++++++------------------- rigs/alinco/dxsr8.c | 117 ++++++++++++++++++++++++++++++++----------------- rigs/icom/ic703.c | 2 +- rigs/icom/icom.c | 1 + rigs/kenwood/kenwood.c | 52 +++++++++++++++------- rigs/kenwood/kenwood.h | 9 ++-- rigs/uniden/bc780.c | 6 +-- rigs/uniden/uniden.c | 53 +++++++++++++++++----- rigs/uniden/uniden.h | 3 +- rigs/yaesu/ft1000mp.c | 2 +- rigs/yaesu/ft991.c | 1 + rigs/yaesu/newcat.c | 3 +- src/rig.c | 16 ++++--- 13 files changed, 220 insertions(+), 133 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |