diff --git a/NEWS b/NEWS index 3fafda795..080df9bce 100644 --- a/NEWS +++ b/NEWS @@ -24,6 +24,8 @@ Version 4.0 * rigctl(d) f command also returns VFO now * caching of vfo, frequency, mode, and ptt speeds up rigctld for all * caching of kenwood/yaesu "IF" speeds up polling from WSJTX/JTDX + * rig_get_channel now has read_only flag but it still needs to be implemented based on rig behavior + * So if you use rig_get_channel you may get a RIG_ENIMPL error to contact us for fixing it Version 3.3 2018-08-12 diff --git a/rigs/aor/aor.c b/rigs/aor/aor.c index a95457401..89d17dc74 100644 --- a/rigs/aor/aor.c +++ b/rigs/aor/aor.c @@ -1330,11 +1330,12 @@ int aor_get_channel(RIG *rig, channel_t *chan, int read_only) retval = parse_chan_line(rig, chan, chanbuf, mem_caps); -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return retval; diff --git a/rigs/aor/ar3030.c b/rigs/aor/ar3030.c index 67f09f5b2..d65963d22 100644 --- a/rigs/aor/ar3030.c +++ b/rigs/aor/ar3030.c @@ -805,11 +805,12 @@ int ar3030_get_channel(RIG *rig, channel_t *chan, int read_only) chan->levels[LVL_AGC].i = infobuf[8] == '0' ? RIG_AGC_SLOW : RIG_AGC_FAST; chan->flags = infobuf[4] == '1' ? RIG_CHFLAG_SKIP : RIG_CHFLAG_NONE; -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/aor/ar7030p.c b/rigs/aor/ar7030p.c index 9c449335d..23fd36785 100644 --- a/rigs/aor/ar7030p.c +++ b/rigs/aor/ar7030p.c @@ -1754,11 +1754,12 @@ static int ar7030p_get_channel(RIG *rig, channel_t *chan, int read_only) rc = lockRx(rig, LOCK_0); } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return (rc); diff --git a/rigs/icom/ic746.c b/rigs/icom/ic746.c index 8fae70865..434578c3e 100644 --- a/rigs/icom/ic746.c +++ b/rigs/icom/ic746.c @@ -1053,11 +1053,12 @@ int ic746pro_get_channel(RIG *rig, channel_t *chan, int read_only) chan->channel_desc); } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/icom/icr75.c b/rigs/icom/icr75.c index 713bc886d..7ace3afeb 100644 --- a/rigs/icom/icr75.c +++ b/rigs/icom/icr75.c @@ -416,11 +416,12 @@ int icr75_get_channel(RIG *rig, channel_t *chan, int read_only) strncpy(chan->channel_desc, (char *)(chanbuf + chan_len), 8); } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/kenwood/ic10.c b/rigs/kenwood/ic10.c index 844942e66..dcaef09b8 100644 --- a/rigs/kenwood/ic10.c +++ b/rigs/kenwood/ic10.c @@ -717,11 +717,12 @@ int ic10_get_channel(RIG *rig, channel_t *chan, int read_only) } } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index dc3c0ff15..d36c0331a 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -3917,11 +3917,12 @@ int kenwood_get_channel(RIG *rig, channel_t *chan, int read_only) chan->split = RIG_SPLIT_ON; } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/kenwood/pihpsdr.c b/rigs/kenwood/pihpsdr.c index eb1e61d75..eefeea76e 100644 --- a/rigs/kenwood/pihpsdr.c +++ b/rigs/kenwood/pihpsdr.c @@ -566,11 +566,12 @@ int pihspdr_get_channel(RIG *rig, channel_t *chan, int read_only) chan->split = RIG_SPLIT_ON; } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/kenwood/th.c b/rigs/kenwood/th.c index 0cdf16d0b..875f6445c 100644 --- a/rigs/kenwood/th.c +++ b/rigs/kenwood/th.c @@ -2226,11 +2226,12 @@ int th_get_channel(RIG *rig, channel_t *chan, int read_only) chan->channel_desc[ack_len] = '\0'; } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/kenwood/thd72.c b/rigs/kenwood/thd72.c index 1bf4c60e6..538f1d93a 100644 --- a/rigs/kenwood/thd72.c +++ b/rigs/kenwood/thd72.c @@ -1407,11 +1407,12 @@ static int thd72_get_channel(RIG *rig, channel_t *chan, int read_only) return thd72_parse_channel(0, buf, chan); } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/kenwood/thd74.c b/rigs/kenwood/thd74.c index 63294bcb3..79bf35673 100644 --- a/rigs/kenwood/thd74.c +++ b/rigs/kenwood/thd74.c @@ -1324,11 +1324,12 @@ static int thd74_get_channel(RIG *rig, channel_t *chan, int read_only) return thd74_parse_channel(0, buf, chan); } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/kenwood/tmd710.c b/rigs/kenwood/tmd710.c index 031cf6140..44d805fcc 100644 --- a/rigs/kenwood/tmd710.c +++ b/rigs/kenwood/tmd710.c @@ -1933,11 +1933,12 @@ int tmd710_get_channel(RIG *rig, channel_t *chan, int read_only) // TODO: chan->levels chan->ext_levels = NULL; -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/kenwood/tmv7.c b/rigs/kenwood/tmv7.c index cd6a51bfc..3de10936a 100644 --- a/rigs/kenwood/tmv7.c +++ b/rigs/kenwood/tmv7.c @@ -649,11 +649,12 @@ int tmv7_get_channel(RIG *rig, channel_t *chan, int read_only) memcpy(chan->channel_desc, &ackbuf[10], 7); } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/kenwood/ts2000.c b/rigs/kenwood/ts2000.c index 915437f7f..d4766df07 100644 --- a/rigs/kenwood/ts2000.c +++ b/rigs/kenwood/ts2000.c @@ -593,11 +593,12 @@ int ts2000_get_channel(RIG *rig, channel_t *chan, int read_only) chan->split = RIG_SPLIT_ON; } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/prm80/prm80.c b/rigs/prm80/prm80.c index fef821aa2..683da29c3 100644 --- a/rigs/prm80/prm80.c +++ b/rigs/prm80/prm80.c @@ -329,11 +329,12 @@ int prm80_get_channel(RIG *rig, channel_t *chan, int read_only) chan->tx_freq = ((hhtoi(statebuf + 16) << 8) + hhtoi(statebuf + 18)) * 12500; chan->rptr_offs = chan->tx_freq - chan->freq; -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/uniden/uniden.c b/rigs/uniden/uniden.c index bacadae64..5a30cadb1 100644 --- a/rigs/uniden/uniden.c +++ b/rigs/uniden/uniden.c @@ -641,11 +641,12 @@ int uniden_get_channel(RIG *rig, channel_t *chan, int read_only) strncpy(chan->channel_desc, membuf + 9, rig->caps->chan_desc_sz); } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/yaesu/ft1000d.c b/rigs/yaesu/ft1000d.c index 0c9e77612..ced2a14ef 100644 --- a/rigs/yaesu/ft1000d.c +++ b/rigs/yaesu/ft1000d.c @@ -3168,11 +3168,12 @@ int ft1000d_get_channel(RIG *rig, channel_t *chan, int read_only) chan->flags |= RIG_CHFLAG_SKIP; } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/yaesu/ft990.c b/rigs/yaesu/ft990.c index 2c6ac2551..0b7968862 100644 --- a/rigs/yaesu/ft990.c +++ b/rigs/yaesu/ft990.c @@ -3115,11 +3115,12 @@ int ft990_get_channel(RIG *rig, channel_t *chan, int read_only) chan->flags |= RIG_CHFLAG_SKIP; } -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 971e26f41..946926e8c 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -4443,11 +4443,12 @@ int newcat_get_channel(RIG *rig, channel_t *chan, int read_only) retval = priv->ret_data + 5; chan->freq = atof(retval); -#warning Need to add setting rig to channel values - if (!read_only) { // Set rig to channel values + rig_debug(RIG_DEBUG_ERR, "%s: please contact hamlib mailing list to implement this\n", __func__); + rig_debug(RIG_DEBUG_ERR, "%s: need to know if rig updates when channel read or not\n", __func__); + return -RIG_ENIMPL; } return RIG_OK; diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 7c340b989..185a2559c 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -283,8 +283,8 @@ static struct test_table test_list[] = { 't', "get_ptt", ACTION(get_ptt), ARG_OUT, "PTT" }, { 'E', "set_mem", ACTION(set_mem), ARG_IN, "Memory#" }, { 'e', "get_mem", ACTION(get_mem), ARG_OUT, "Memory#" }, - { 'H', "set_channel", ACTION(set_channel), ARG_IN | ARG_NOVFO, "Channel" }, - { 'h', "get_channel", ACTION(get_channel), ARG_IN | ARG_NOVFO, "Channel" }, + { 'H', "set_channel", ACTION(set_channel), ARG_IN | ARG_NOVFO, "Channel"}, + { 'h', "get_channel", ACTION(get_channel), ARG_IN | ARG_NOVFO, "Channel", "Read Only" }, { 'B', "set_bank", ACTION(set_bank), ARG_IN, "Bank" }, { '_', "get_info", ACTION(get_info), ARG_OUT | ARG_NOVFO, "Info" }, { 'J', "set_rit", ACTION(set_rit), ARG_IN, "RIT" }, @@ -3607,6 +3607,7 @@ declare_proto_rig(set_channel) declare_proto_rig(get_channel) { int status; + int read_only = 0; channel_t chan; memset(&chan, 0, sizeof(channel_t)); @@ -3622,7 +3623,9 @@ declare_proto_rig(get_channel) chan.channel_num = 0; } - status = rig_get_channel(rig, &chan, 0); + CHKSCN1ARG(sscanf(arg2, "%d", &read_only)); + + status = rig_get_channel(rig, &chan, read_only); if (status != RIG_OK) {