diff --git a/aor/aor.c b/aor/aor.c index aec1c0d34..d1bc788d0 100644 --- a/aor/aor.c +++ b/aor/aor.c @@ -6,7 +6,7 @@ * via serial interface to an AOR scanner. * * - * $Id: aor.c,v 1.1 2000-11-01 23:23:56 f4cfe Exp $ + * $Id: aor.c,v 1.2 2000-12-04 23:39:17 f4cfe Exp $ * * * @@ -159,17 +159,39 @@ int aor_get_freq(RIG *rig, freq_t *freq) * aor_set_mode * Assumes rig!=NULL */ -int aor_set_mode(RIG *rig, rmode_t mode) +int aor_set_mode(RIG *rig, rmode_t mode, pbwidth_t width) { unsigned char mdbuf[16],ackbuf[16]; int mdbuf_len,ack_len,aormode; switch (mode) { - case RIG_MODE_AM: aormode = MD_AM; break; + case RIG_MODE_AM: + switch(width) { + case RIG_PASSBAND_NORMAL: aormode = MD_AM; break; + case RIG_PASSBAND_WIDE: aormode = MD_WAM; break; + case RIG_PASSBAND_NARROW: aormode = MD_NAM; break; + default: + rig_debug(RIG_DEBUG_ERR, + "aor_set_mode: unsupported passband %d %d\n", + mode, width); + return -RIG_EINVAL; + } + break; case RIG_MODE_CW: aormode = MD_CW; break; case RIG_MODE_USB: aormode = MD_USB; break; case RIG_MODE_LSB: aormode = MD_LSB; break; - case RIG_MODE_FM: aormode = MD_NFM; break; + case RIG_MODE_FM: + switch(width) { + case RIG_PASSBAND_NORMAL: aormode = MD_NFM; break; + case RIG_PASSBAND_WIDE: aormode = MD_WFM; break; + case RIG_PASSBAND_NARROW: aormode = MD_SFM; break; + default: + rig_debug(RIG_DEBUG_ERR, + "aor_set_mode: unsupported passband %d %d\n", + mode, width); + return -RIG_EINVAL; + } + break; case RIG_MODE_RTTY: default: rig_debug(RIG_DEBUG_ERR,"aor_set_mode: unsupported mode %d\n", @@ -193,7 +215,7 @@ int aor_set_mode(RIG *rig, rmode_t mode) * aor_get_mode * Assumes rig!=NULL, mode!=NULL */ -int aor_get_mode(RIG *rig, rmode_t *mode) +int aor_get_mode(RIG *rig, rmode_t *mode, pbwidth_t *width) { unsigned char ackbuf[16]; int ack_len; @@ -207,12 +229,28 @@ int aor_get_mode(RIG *rig, rmode_t *mode) return -RIG_ERJCTED; } + *width = RIG_PASSBAND_NORMAL; switch (ackbuf[0]) { case MD_AM: *mode = RIG_MODE_AM; break; + case MD_NAM: + *mode = RIG_MODE_AM; + *width = RIG_PASSBAND_NARROW; + break; + case MD_WAM: + *mode = RIG_MODE_AM; + *width = RIG_PASSBAND_WIDE; + break; case MD_CW: *mode = RIG_MODE_CW; break; case MD_USB: *mode = RIG_MODE_USB; break; case MD_LSB: *mode = RIG_MODE_LSB; break; case MD_NFM: *mode = RIG_MODE_FM; break; + case MD_SFM: + *mode = RIG_MODE_FM; + *width = RIG_PASSBAND_NARROW; + break; + case MD_WFM: *mode = RIG_MODE_FM; + *width = RIG_PASSBAND_WIDE; + break; default: rig_debug(RIG_DEBUG_ERR,"aor_get_mode: unsupported mode %d\n", ackbuf[0]); diff --git a/aor/aor.h b/aor/aor.h index 814c9df1b..06134a8bd 100644 --- a/aor/aor.h +++ b/aor/aor.h @@ -6,7 +6,7 @@ * via serial interface to an AOR scanner. * * - * $Id: aor.h,v 1.1 2000-11-01 23:23:56 f4cfe Exp $ + * $Id: aor.h,v 1.2 2000-12-04 23:39:17 f4cfe Exp $ * * * This program is free software; you can redistribute it and/or @@ -33,8 +33,8 @@ int aor_close(RIG *rig); int aor_set_freq(RIG *rig, freq_t freq); int aor_get_freq(RIG *rig, freq_t *freq); -int aor_set_mode(RIG *rig, rmode_t mode); -int aor_get_mode(RIG *rig, rmode_t *mode); +int aor_set_mode(RIG *rig, rmode_t mode, pbwidth_t width); +int aor_get_mode(RIG *rig, rmode_t *mode, pbwidth_t *width); int aor_set_ts(RIG *rig, unsigned long ts); int aor_set_poweroff(RIG *rig); diff --git a/icom/frame.c b/icom/frame.c index f4b6aafbe..5dc0f324a 100644 --- a/icom/frame.c +++ b/icom/frame.c @@ -6,7 +6,7 @@ * CI-V interface, used in serial communication to ICOM radios. * * - * $Id: frame.c,v 1.5 2000-11-01 23:21:47 f4cfe Exp $ + * $Id: frame.c,v 1.6 2000-12-04 23:39:17 f4cfe Exp $ * * * @@ -194,7 +194,10 @@ int read_icom_frame(FILE *stream, unsigned char rxbuffer[], int timeout) } -unsigned short hamlib2icom_mode(rmode_t mode) +/* + * TODO: be more exhaustive + */ +unsigned short hamlib2icom_mode(rmode_t mode, pbwidth_t width) { int icmode, icmode_ext; @@ -206,24 +209,10 @@ unsigned short hamlib2icom_mode(rmode_t mode) case RIG_MODE_USB: icmode = S_USB; break; case RIG_MODE_LSB: icmode = S_LSB; break; case RIG_MODE_RTTY: icmode = S_RTTY; break; - case RIG_MODE_FM: icmode = S_FM; break; -#if 0 - case RIG_MODE_WFM: icmode = S_WFM; break; - - case RIG_MODE_NFM: icmode = S_FM; icmode_ext = 0x01; break; - case RIG_MODE_NAM: icmode = S_AM; break; - case RIG_MODE_WAM: icmode = S_AM; break; - case RIG_MODE_NCW: icmode = S_CW; break; - case RIG_MODE_WCW: icmode = S_CW; break; - case RIG_MODE_CWR: icmode = S_CW; break; - case RIG_MODE_NUSB: icmode = S_USB; break; - case RIG_MODE_WUSB: icmode = S_USB; break; - case RIG_MODE_NLSB: icmode = S_LSB; break; - case RIG_MODE_WLSB: icmode = S_LSB; break; - case RIG_MODE_NRTTY: icmode = S_RTTY; break; - case RIG_MODE_WRTTY: icmode = S_RTTY; break; -#endif - + case RIG_MODE_FM: + icmode = width==RIG_PASSBAND_WIDE?S_WFM:S_FM; + icmode_ext = width==RIG_PASSBAND_NARROW?0x01:0x00; + break; default: rig_debug(RIG_DEBUG_ERR,"icom: Unsupported Hamlib mode %d\n",mode); icmode = 0xff; @@ -231,25 +220,27 @@ unsigned short hamlib2icom_mode(rmode_t mode) return (icmode_ext<<8 | icmode); } -rmode_t icom2hamlib_mode(unsigned short icmode) +void icom2hamlib_mode(unsigned short icmode, rmode_t *mode, pbwidth_t *width) { - rmode_t mode; + *width = RIG_PASSBAND_NORMAL; switch (icmode & 0xff) { - case S_AM: mode = RIG_MODE_AM; break; - case S_CW: mode = RIG_MODE_CW; break; - case S_FM: mode = RIG_MODE_FM; break; - case S_WFM: mode = RIG_MODE_FM; break; /* and set width to wide.. */ - case S_USB: mode = RIG_MODE_USB; break; - case S_LSB: mode = RIG_MODE_LSB; break; - case S_RTTY: mode = RIG_MODE_RTTY; break; + case S_AM: *mode = RIG_MODE_AM; break; + case S_CW: *mode = RIG_MODE_CW; break; + case S_FM: *mode = RIG_MODE_FM; break; + case S_WFM: + *mode = RIG_MODE_FM; + *width = RIG_PASSBAND_WIDE; + break; + case S_USB: *mode = RIG_MODE_USB; break; + case S_LSB: *mode = RIG_MODE_LSB; break; + case S_RTTY: *mode = RIG_MODE_RTTY; break; case 0xff: mode = 0; break; /* blank mem channel */ default: rig_debug(RIG_DEBUG_ERR,"icom: Unsupported Icom mode %#.2x\n", icmode); - mode = 0; + *mode = 0; } - return mode; } diff --git a/icom/frame.h b/icom/frame.h index 8e3850af8..0a68dfc4d 100644 --- a/icom/frame.h +++ b/icom/frame.h @@ -6,7 +6,7 @@ * via serial interface to an ICOM using the "CI-V" interface. * * - * $Id: frame.h,v 1.3 2000-11-01 23:21:47 f4cfe Exp $ + * $Id: frame.h,v 1.4 2000-12-04 23:39:17 f4cfe Exp $ * * * This program is free software; you can redistribute it and/or @@ -38,8 +38,8 @@ int make_cmd_frame(char frame[], char re_id, char cmd, int subcmd, const char *d int icom_transaction (RIG *rig, int cmd, int subcmd, const char *payload, int payload_len, char *data, int *data_len); int read_icom_frame(FILE *stream, unsigned char rxbuffer[], int timeout); -unsigned short hamlib2icom_mode(rmode_t mode); -rmode_t icom2hamlib_mode(unsigned short icmode); +unsigned short hamlib2icom_mode(rmode_t mode, pbwidth_t width); +void icom2hamlib_mode(unsigned short icmode, rmode_t *mode, pbwidth_t *width); #endif /* _FRAME_H */ diff --git a/icom/icom.c b/icom/icom.c index deed88ba0..3217d5add 100644 --- a/icom/icom.c +++ b/icom/icom.c @@ -6,7 +6,7 @@ * via serial interface to an ICOM using the "CI-V" interface. * * - * $Id: icom.c,v 1.9 2000-10-29 16:25:56 f4cfe Exp $ + * $Id: icom.c,v 1.10 2000-12-04 23:39:17 f4cfe Exp $ * * * @@ -354,7 +354,7 @@ int icom_get_freq(RIG *rig, freq_t *freq) * icom_set_mode * Assumes rig!=NULL, rig->state.priv!=NULL */ -int icom_set_mode(RIG *rig, rmode_t mode) +int icom_set_mode(RIG *rig, rmode_t mode, pbwidth_t width) { struct icom_priv_data *priv; struct rig_state *rig_s; @@ -364,7 +364,7 @@ int icom_set_mode(RIG *rig, rmode_t mode) rig_s = &rig->state; priv = (struct icom_priv_data*)rig_s->priv; - icmode = hamlib2icom_mode(mode); + icmode = hamlib2icom_mode(mode,width); icom_transaction (rig, C_SET_MODE, icmode, NULL, 0, ackbuf, &ack_len); @@ -379,9 +379,9 @@ int icom_set_mode(RIG *rig, rmode_t mode) /* * icom_get_mode - * Assumes rig!=NULL, rig->state.priv!=NULL, mode!=NULL + * Assumes rig!=NULL, rig->state.priv!=NULL, mode!=NULL, width!=NULL */ -int icom_get_mode(RIG *rig, rmode_t *mode) +int icom_get_mode(RIG *rig, rmode_t *mode, pbwidth_t *width) { struct icom_priv_data *priv; struct rig_state *rig_s; @@ -403,7 +403,7 @@ int icom_get_mode(RIG *rig, rmode_t *mode) return -RIG_ERJCTED; } - *mode = icom2hamlib_mode(modebuf[1]| modebuf[2]<<8); + icom2hamlib_mode(modebuf[1]| modebuf[2]<<8, mode, width); return RIG_OK; } @@ -1030,7 +1030,7 @@ int icom_set_channel(RIG *rig, const channel_t *chan) chan_len = 3+freq_len+1; - icmode = hamlib2icom_mode(chan->mode); + icmode = hamlib2icom_mode(chan->mode, RIG_PASSBAND_NORMAL); /* FIXME */ chanbuf[chan_len++] = icmode&0xff; chanbuf[chan_len++] = icmode>>8; to_bcd_be(chanbuf+chan_len++,chan->att,2); @@ -1061,6 +1061,7 @@ int icom_get_channel(RIG *rig, channel_t *chan) struct rig_state *rig_s; unsigned char chanbuf[24]; int chan_len,freq_len; + pbwidth_t width; /* FIXME */ rig_s = &rig->state; priv = (struct icom_priv_data*)rig_s->priv; @@ -1089,7 +1090,8 @@ int icom_get_channel(RIG *rig, channel_t *chan) chan_len = 4+freq_len+1; - chan->mode = icom2hamlib_mode(chanbuf[chan_len] | chanbuf[chan_len+1]); + icom2hamlib_mode(chanbuf[chan_len] | chanbuf[chan_len+1], + &chan->mode, &width); chan_len += 2; chan->att = from_bcd_be(chanbuf+chan_len++,2); chan->preamp = from_bcd_be(chanbuf+chan_len++,2); @@ -1279,6 +1281,7 @@ int icom_decode_event(RIG *rig) int frm_len; freq_t freq; rmode_t mode; + pbwidth_t width; rig_debug(RIG_DEBUG_VERBOSE, "icom: icom_decode called\n"); @@ -1305,8 +1308,8 @@ int icom_decode_event(RIG *rig) break; case C_SND_MODE: if (rig->callbacks.mode_event) { - mode = icom2hamlib_mode(buf[5]| buf[6]<<8); - return rig->callbacks.mode_event(rig,mode); + icom2hamlib_mode(buf[5]| buf[6]<<8, &mode, &width); + return rig->callbacks.mode_event(rig,mode,width); } else return -RIG_ENAVAIL; break; diff --git a/icom/icom.h b/icom/icom.h index 2c8d185d1..35ec564e3 100644 --- a/icom/icom.h +++ b/icom/icom.h @@ -6,7 +6,7 @@ * via serial interface to an ICOM using the "CI-V" interface. * * - * $Id: icom.h,v 1.8 2000-10-29 16:26:23 f4cfe Exp $ + * $Id: icom.h,v 1.9 2000-12-04 23:39:17 f4cfe Exp $ * * * This program is free software; you can redistribute it and/or @@ -44,8 +44,8 @@ int icom_init(RIG *rig); int icom_cleanup(RIG *rig); int icom_set_freq(RIG *rig, freq_t freq); int icom_get_freq(RIG *rig, freq_t *freq); -int icom_set_mode(RIG *rig, rmode_t mode); -int icom_get_mode(RIG *rig, rmode_t *mode); +int icom_set_mode(RIG *rig, rmode_t mode, pbwidth_t width); +int icom_get_mode(RIG *rig, rmode_t *mode, pbwidth_t *width); int icom_set_vfo(RIG *rig, vfo_t vfo); int icom_set_rptr_shift(RIG *rig, rptr_shift_t rptr_shift); int icom_get_rptr_shift(RIG *rig, rptr_shift_t *rptr_shift); diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index fa6050b8b..f9290bf9a 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -5,7 +5,7 @@ * will be used for obtaining rig capabilities. * * - * $Id: rig.h,v 1.9 2000-11-28 22:31:40 f4cfe Exp $ * + * $Id: rig.h,v 1.10 2000-12-04 23:39:17 f4cfe Exp $ * * * * This program is free software; you can redistribute it and/or @@ -238,7 +238,7 @@ typedef union value_u value_t; #define RIG_LEVEL_SQLSTAT (1<<30) /* SQL status, arg int (open=1/closed=0) */ #define RIG_LEVEL_STRENGTH (1<<31) /* Signal strength, arg int (db) */ -typedef unsigned long setting_t; /* at least 32 bits */ +typedef unsigned long setting_t; /* 32 bits might not be enough.. */ /* * tranceive mode, ie. the rig notify the host of any event, @@ -284,7 +284,11 @@ typedef long long freq_t; typedef unsigned int rmode_t; /* radio mode */ -/* Do not use an enum since this will be used w/ rig_mode_t bit fields */ +/* + * Do not use an enum since this will be used w/ rig_mode_t bit fields. + * Also, how should CW reverse sideband and RTTY reverse + * sideband be handled? + * */ #define RIG_MODE_NONE 0 #define RIG_MODE_AM (1<<0) #define RIG_MODE_CW (1<<1) @@ -293,25 +297,6 @@ typedef unsigned int rmode_t; /* radio mode */ #define RIG_MODE_RTTY (1<<4) #define RIG_MODE_FM (1<<5) -/* The following are deprecated */ -/* use the get/set_filter to manipulate these bits */ -#if 0 -#define RIG_MODE_WFM (1<<6) -#define RIG_MODE_CWR (1<<7) /* CW reverse sideband*/ -#define RIG_MODE_RTTYR (1<<8) /* RTTY reverse sideband */ - -#define RIG_MODE_NFM (1<<19) /* should we distinguish modes w/ filers? */ -#define RIG_MODE_NAM (1<<20) /* Narrow AM */ -#define RIG_MODE_WAM (1<<9) /* Wide AM */ -#define RIG_MODE_NCW (1<<10) -#define RIG_MODE_WCW (1<<11) -#define RIG_MODE_NUSB (1<<13) -#define RIG_MODE_WUSB (1<<14) -#define RIG_MODE_NLSB (1<<15) -#define RIG_MODE_WLSB (1<<16) -#define RIG_MODE_NRTTY (1<<17) -#define RIG_MODE_WRTTY (1<<18) -#endif #define RIGNAMSIZ 30 @@ -431,8 +416,8 @@ struct rig_caps { int (*set_freq)(RIG *rig, freq_t freq); /* select freq */ int (*get_freq)(RIG *rig, freq_t *freq); /* get freq */ - int (*set_mode)(RIG *rig, rmode_t mode); /* select mode */ - int (*get_mode)(RIG *rig, rmode_t *mode); /* get mode */ + int (*set_mode)(RIG *rig, rmode_t mode, pbwidth_t width); /* select mode */ + int (*get_mode)(RIG *rig, rmode_t *mode, pbwidth_t *width); /* get mode */ int (*set_vfo)(RIG *rig, vfo_t vfo); /* select vfo (A,B, etc.) */ int (*get_vfo)(RIG *rig, vfo_t *vfo); /* get vfo */ @@ -440,9 +425,6 @@ struct rig_caps { int (*set_ptt)(RIG *rig, ptt_t ptt); /* ptt on/off */ int (*get_ptt)(RIG *rig, ptt_t *ptt); /* get ptt status */ - int (*set_passband)(RIG *rig, pbwidth_t width); /* select width */ - int (*get_passband)(RIG *rig, pbwidth_t *width); /* get width */ - int (*set_rptr_shift)(RIG *rig, rptr_shift_t rptr_shift); /* set repeater shift */ int (*get_rptr_shift)(RIG *rig, rptr_shift_t *rptr_shift); /* get repeater shift */ @@ -564,7 +546,7 @@ struct rig_state { */ struct rig_callbacks { int (*freq_event)(RIG *rig, freq_t freq); - int (*mode_event)(RIG *rig, rmode_t mode); + int (*mode_event)(RIG *rig, rmode_t mode, pbwidth_t width); int (*vfo_event)(RIG *rig, vfo_t vfo); int (*ptt_event)(RIG *rig, ptt_t mode); /* etc.. */ @@ -595,11 +577,8 @@ extern int rig_open(RIG *rig); extern int rig_set_freq(RIG *rig, freq_t freq); /* select freq */ extern int rig_get_freq(RIG *rig, freq_t *freq); /* get freq */ -extern int rig_set_mode(RIG *rig, rmode_t mode); /* select mode */ -extern int rig_get_mode(RIG *rig, rmode_t *mode); /* get mode */ - -extern int rig_set_passband(RIG *rig, pbwidth_t width); /* select width */ -extern int rig_get_passband(RIG *rig, pbwidth_t *width); /* get width */ +extern int rig_set_mode(RIG *rig, rmode_t mode, pbwidth_t width); /* select mode */ +extern int rig_get_mode(RIG *rig, rmode_t *mode, pbwidth_t *width); /* get mode */ extern int rig_set_vfo(RIG *rig, vfo_t vfo); /* select vfo */ extern int rig_get_vfo(RIG *rig, vfo_t *vfo); /* get vfo */ diff --git a/src/rig.c b/src/rig.c index e93d73be9..d61080e4f 100644 --- a/src/rig.c +++ b/src/rig.c @@ -2,7 +2,7 @@ Copyright (C) 2000 Stephane Fillod and Frank Singleton This file is part of the hamlib package. - $Id: rig.c,v 1.9 2000-11-28 22:33:37 f4cfe Exp $ + $Id: rig.c,v 1.10 2000-12-04 23:39:18 f4cfe Exp $ Hamlib is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -398,8 +398,11 @@ int rig_get_freq(RIG *rig, freq_t *freq) * rig_set_mode - set the mode of the current VFO * @rig: The rig handle * @mode: The mode to set to + * @width: The passband width to set to * * The rig_set_mode() function sets the mode of the current VFO. + * As a begining, the backend is free to ignore the @width argument, + * however, it would be nice to at least honor the WFM case. * * RETURN VALUE: The rig_set_mode() function returns %RIG_OK * if the operation has been sucessful, or a negative value @@ -408,7 +411,7 @@ int rig_get_freq(RIG *rig, freq_t *freq) * SEE ALSO: rig_get_mode() */ -int rig_set_mode(RIG *rig, rmode_t mode) +int rig_set_mode(RIG *rig, rmode_t mode, pbwidth_t width) { if (!rig || !rig->caps) return -RIG_EINVAL; @@ -416,15 +419,18 @@ int rig_set_mode(RIG *rig, rmode_t mode) if (rig->caps->set_mode == NULL) return -RIG_ENAVAIL; else - return rig->caps->set_mode(rig, mode); + return rig->caps->set_mode(rig, mode, width); } /** * rig_get_mode - get the mode of the current VFO * @rig: The rig handle * @mode: The location where to store the current mode + * @width: The location where to store the current passband width * * The rig_set_mode() function retrieves the mode of the current VFO. + * If the backend is unable to determine the width, it must + * return %RIG_PASSBAND_NORMAL as a default. * * RETURN VALUE: The rig_get_mode() function returns %RIG_OK * if the operation has been sucessful, or a negative value @@ -433,47 +439,15 @@ int rig_set_mode(RIG *rig, rmode_t mode) * SEE ALSO: rig_set_mode() */ -int rig_get_mode(RIG *rig, rmode_t *mode) +int rig_get_mode(RIG *rig, rmode_t *mode, pbwidth_t *width) { - if (!rig || !rig->caps || !mode) + if (!rig || !rig->caps || !mode || !width) return -RIG_EINVAL; if (rig->caps->get_mode == NULL) return -RIG_ENAVAIL; else - return rig->caps->get_mode(rig, mode); -} - -/* - * rig_set_passband - * - */ - -int rig_set_passband(RIG *rig, pbwidth_t width) -{ - if (!rig || !rig->caps) - return -RIG_EINVAL; - - if (rig->caps->set_passband == NULL) - return -RIG_ENAVAIL; - else - return rig->caps->set_passband(rig, width); -} - -/* - * rig_get_passband - * - */ - -int rig_get_passband(RIG *rig, pbwidth_t *width) -{ - if (!rig || !rig->caps || !width) - return -RIG_EINVAL; - - if (rig->caps->get_passband == NULL) - return -RIG_ENAVAIL; - else - return rig->caps->get_passband(rig, width); + return rig->caps->get_mode(rig, mode, width); } /** diff --git a/tests/rigctl.c b/tests/rigctl.c index 584b696af..4db316772 100644 --- a/tests/rigctl.c +++ b/tests/rigctl.c @@ -7,7 +7,7 @@ * TODO: be more generic and add command line option to run * in non-interactive mode * - * $Id: rigctl.c,v 1.2 2000-11-28 22:34:37 f4cfe Exp $ + * $Id: rigctl.c,v 1.3 2000-12-04 23:39:18 f4cfe Exp $ * * * This program is free software; you can redistribute it and/or @@ -46,8 +46,6 @@ static int set_freq(RIG *rig); static int get_freq(RIG *rig); static int set_mode(RIG *rig); static int get_mode(RIG *rig); -static int set_passband(RIG *rig); -static int get_passband(RIG *rig); static int set_vfo(RIG *rig); static int get_vfo(RIG *rig); static int set_ptt(RIG *rig); @@ -85,8 +83,6 @@ struct test_table test_list[] = { { 'f', "rig_get_freq", get_freq }, { 'M', "rig_set_mode", set_mode }, { 'm', "rig_get_mode", get_mode }, - { 'P', "rig_set_passband", set_passband }, - { 'p', "rig_get_passband", get_passband }, { 'V', "rig_set_vfo", set_vfo }, { 'v', "rig_get_vfo", get_vfo }, { 'T', "rig_set_ptt", set_ptt }, @@ -225,10 +221,13 @@ static int get_freq(RIG *rig) static int set_mode(RIG *rig) { rmode_t mode; + pbwidth_t width; printf("Mode: "); scanf("%d", &mode); - return rig_set_mode(rig, mode); + printf("Passband: "); + scanf("%d", (int*)&width); + return rig_set_mode(rig, mode, width); } @@ -236,30 +235,10 @@ static int get_mode(RIG *rig) { int status; rmode_t mode; - - status = rig_get_mode(rig, &mode); - printf("Mode: %d\n", mode); - return status; -} - - -static int set_passband(RIG *rig) -{ pbwidth_t width; - printf("Passband: "); - scanf("%d", (int*)&width); - return rig_set_passband(rig, width); -} - - -static int get_passband(RIG *rig) -{ - int status; - pbwidth_t width; - - status = rig_get_passband(rig, &width); - printf("Passband: %d\n", width); + status = rig_get_mode(rig, &mode, &width); + printf("Mode: %d\nPassband: %d\n", mode, width); return status; }