Add RIT and XIT as rig_set/get_func() members

In response to a long standing request from Tor, N4OGW, and others, RIT
and XIT are added as members for the rig_set/get_func() members.
"RIT"/"XIT" have been added as tokens.  The dummy rig backend and
testrig.c have been updated for these new functions.

Applications should test a backend with the rig_has_set/get_func() and
test for RIG_FUNC_RIT or RIG_FUNC_XIT.  A non-zero result indicates
these functions are implemented by a given rig backend.  It will take
some time for all backends to migrate to this new implementation.  Once
implemented, RIT or XIT should be set to '0' to 'clear' the value
without deactivating the rig's RIT/XIT function.  The dummy/dummy.c file
can be used as a simple guide for backend authors implementing this
behavior.
Hamlib-3.0
Nate Bargmann 2013-01-15 12:47:47 -06:00
rodzic e88d0208bd
commit f82184cbf5
4 zmienionych plików z 169 dodań i 27 usunięć

Wyświetl plik

@ -336,7 +336,11 @@ static int dummy_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
rig_strvfo(vfo), rig_strrmode(mode), buf); rig_strvfo(vfo), rig_strrmode(mode), buf);
curr->mode = mode; curr->mode = mode;
curr->width = width;
if (width == RIG_PASSBAND_NORMAL)
curr->width = rig_passband_normal(rig, mode);
else
curr->width = width;
return RIG_OK; return RIG_OK;
} }
@ -1410,7 +1414,8 @@ static int dummy_mW2power(RIG * rig, float *power, unsigned int mwpower,
* Dummy rig capabilities. * Dummy rig capabilities.
*/ */
#define DUMMY_FUNC (((setting_t)-1)&~(0xc1000000U)) /* has it all */ /* #define DUMMY_FUNC (((setting_t)-1)&~(0x40000000U)) */ /* has it all */
#define DUMMY_FUNC ((setting_t)-1) /* has it all */
#define DUMMY_LEVEL (((setting_t)-1)&~(1<<27)) #define DUMMY_LEVEL (((setting_t)-1)&~(1<<27))
#define DUMMY_PARM ((setting_t)-1) #define DUMMY_PARM ((setting_t)-1)

Wyświetl plik

@ -748,13 +748,14 @@ enum rig_func_e {
RIG_FUNC_ABM = (1<<21),/*!< \c ABM -- Auto Band Mode */ RIG_FUNC_ABM = (1<<21),/*!< \c ABM -- Auto Band Mode */
RIG_FUNC_BC = (1<<22),/*!< \c BC -- Beat Canceller */ RIG_FUNC_BC = (1<<22),/*!< \c BC -- Beat Canceller */
RIG_FUNC_MBC = (1<<23),/*!< \c MBC -- Manual Beat Canceller */ RIG_FUNC_MBC = (1<<23),/*!< \c MBC -- Manual Beat Canceller */
/* (1<<24), used to be RIG_FUNC_LMP, see RIG_PARM_BACKLIGHT instead) */ RIG_FUNC_RIT = (1<<24),/*!< \c RIT -- Receiver Incremental Tuning */
RIG_FUNC_AFC = (1<<25),/*!< \c AFC -- Auto Frequency Control ON/OFF */ RIG_FUNC_AFC = (1<<25),/*!< \c AFC -- Auto Frequency Control ON/OFF */
RIG_FUNC_SATMODE = (1<<26),/*!< \c SATMODE -- Satellite mode ON/OFF */ RIG_FUNC_SATMODE = (1<<26),/*!< \c SATMODE -- Satellite mode ON/OFF */
RIG_FUNC_SCOPE = (1<<27),/*!< \c SCOPE -- Simple bandscope ON/OFF */ RIG_FUNC_SCOPE = (1<<27),/*!< \c SCOPE -- Simple bandscope ON/OFF */
RIG_FUNC_RESUME = (1<<28),/*!< \c RESUME -- Scan auto-resume */ RIG_FUNC_RESUME = (1<<28),/*!< \c RESUME -- Scan auto-resume */
RIG_FUNC_TBURST = (1<<29),/*!< \c TBURST -- 1750 Hz tone burst */ RIG_FUNC_TBURST = (1<<29),/*!< \c TBURST -- 1750 Hz tone burst */
RIG_FUNC_TUNER = (1<<30) /*!< \c TUNER -- Enable automatic tuner */ RIG_FUNC_TUNER = (1<<30),/*!< \c TUNER -- Enable automatic tuner */
RIG_FUNC_XIT = (1<<31),/*!< \c XIT -- Transmitter Incremental Tuning */
}; };
/* /*

Wyświetl plik

@ -408,6 +408,8 @@ static struct {
{ RIG_FUNC_RESUME, "RESUME" }, { RIG_FUNC_RESUME, "RESUME" },
{ RIG_FUNC_TBURST, "TBURST" }, { RIG_FUNC_TBURST, "TBURST" },
{ RIG_FUNC_TUNER, "TUNER" }, { RIG_FUNC_TUNER, "TUNER" },
{ RIG_FUNC_RIT, "RIT" },
{ RIG_FUNC_XIT, "XIT" },
{ RIG_FUNC_NONE, "" }, { RIG_FUNC_NONE, "" },
}; };

Wyświetl plik

@ -18,11 +18,17 @@ int main (int argc, char *argv[])
pbwidth_t width; pbwidth_t width;
vfo_t vfo; /* vfo selection */ vfo_t vfo; /* vfo selection */
int strength; /* S-Meter level */ int strength; /* S-Meter level */
int rit = 0; /* RIT status */
int xit = 0; /* XIT status */
int retcode; /* generic return code from functions */ int retcode; /* generic return code from functions */
rig_model_t myrig_model; rig_model_t myrig_model;
printf("testrig:hello, I am your main() !\n"); printf("testrig: Hello, I am your main() !\n");
/* Turn off backend debugging ouput */
rig_set_debug_level(RIG_DEBUG_NONE);
/* /*
* allocate memory, setup & open port * allocate memory, setup & open port
@ -90,59 +96,166 @@ int main (int argc, char *argv[])
/* 10m FM Narrow */ /* 10m FM Narrow */
retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 28350125); /* 10m */ printf("\nSetting 10m FM Narrow...\n");
retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 29620000); /* 10m */
retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_FM, retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_FM,
rig_passband_narrow(my_rig, RIG_MODE_FM)); rig_passband_narrow(my_rig, RIG_MODE_FM));
sleep(3); /* so you can see it -- FS */
if (retcode != RIG_OK ) {
printf("rig_set_freq: error = %s \n", rigerror(retcode));
}
rig_get_freq(my_rig, RIG_VFO_CURR, &freq);
rig_get_mode(my_rig, RIG_VFO_CURR, &rmode, &width);
printf(" Freq: %.6f MHz, Mode: %s, Passband: %.3f kHz\n\n",
freq / 1000000, rig_strrmode(rmode), width / 1000.0);
sleep(1); /* so you can see it -- FS */
/* 15m USB */ /* 15m USB */
printf("Setting 15m USB...\n");
retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 21235175); /* 15m */ retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 21235175); /* 15m */
retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_USB, RIG_PASSBAND_NORMAL); retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_USB,
sleep(3); rig_passband_normal(my_rig, RIG_MODE_USB));
/* AM Broadcast band */ if (retcode != RIG_OK ) {
printf("rig_set_freq: error = %s \n", rigerror(retcode));
}
retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 770000); /* KAAM */ rig_get_freq(my_rig, RIG_VFO_CURR, &freq);
retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_AM, RIG_PASSBAND_NORMAL); rig_get_mode(my_rig, RIG_VFO_CURR, &rmode, &width);
sleep(3);
printf(" Freq: %.6f MHz, Mode: %s, Passband: %.3f kHz\n\n",
freq / 1000000, rig_strrmode(rmode), width / 1000.0);
sleep(1);
/* 40m LSB */ /* 40m LSB */
printf("Setting 40m LSB...\n");
retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 7250100); /* 40m */ retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 7250100); /* 40m */
retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_LSB, RIG_PASSBAND_NORMAL); retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_LSB, RIG_PASSBAND_NORMAL);
sleep(3);
/* 80m AM NArrow */ if (retcode != RIG_OK ) {
printf("rig_set_freq: error = %s \n", rigerror(retcode));
}
retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 3980000); /* 80m */ rig_get_freq(my_rig, RIG_VFO_CURR, &freq);
rig_get_mode(my_rig, RIG_VFO_CURR, &rmode, &width);
printf(" Freq: %.6f MHz, Mode: %s, Passband: %.3f kHz\n\n",
freq / 1000000, rig_strrmode(rmode), width / 1000.0);
sleep(1);
/* 80m AM Narrow */
printf("Setting 80m AM Narrow...\n");
retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 3885000); /* 80m */
retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_AM, retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_AM,
rig_passband_narrow(my_rig, RIG_MODE_FM)); rig_passband_narrow(my_rig, RIG_MODE_AM));
sleep(3);
if (retcode != RIG_OK ) {
printf("rig_set_freq: error = %s \n", rigerror(retcode));
}
rig_get_freq(my_rig, RIG_VFO_CURR, &freq);
rig_get_mode(my_rig, RIG_VFO_CURR, &rmode, &width);
printf(" Freq: %.6f MHz, Mode: %s, Passband: %.3f kHz\n\n",
freq / 1000000, rig_strrmode(rmode), width / 1000.0);
sleep(1);
/* 160m CW Normal */ /* 160m CW Normal */
printf("Setting 160m CW...\n");
retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 1875000); /* 160m */ retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 1875000); /* 160m */
retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, RIG_PASSBAND_NORMAL); retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, RIG_PASSBAND_NORMAL);
sleep(3);
if (retcode != RIG_OK ) {
printf("rig_set_freq: error = %s \n", rigerror(retcode));
}
rig_get_freq(my_rig, RIG_VFO_CURR, &freq);
rig_get_mode(my_rig, RIG_VFO_CURR, &rmode, &width);
printf(" Freq: %.3f kHz, Mode: %s, Passband: %li Hz\n\n",
freq / 1000, rig_strrmode(rmode), width );
sleep(1);
/* 160m CW Narrow -- The band is noisy tonight -- FS*/ /* 160m CW Narrow -- The band is noisy tonight -- FS*/
printf("Setting 160m CW Narrow...\n");
retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW,
rig_passband_narrow(my_rig, RIG_MODE_FM)); rig_passband_narrow(my_rig, RIG_MODE_CW));
sleep(3);
if (retcode != RIG_OK ) {
printf("rig_set_freq: error = %s \n", rigerror(retcode));
}
rig_get_freq(my_rig, RIG_VFO_CURR, &freq);
rig_get_mode(my_rig, RIG_VFO_CURR, &rmode, &width);
printf(" Freq: %.3f kHz, Mode: %s, Passband: %li Hz\n\n",
freq / 1000, rig_strrmode(rmode), width);
sleep(1);
/* AM Broadcast band */
printf("Setting Medium Wave AM...\n");
retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 770000); /* KAAM */
retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_AM, RIG_PASSBAND_NORMAL);
if (retcode != RIG_OK ) {
printf("rig_set_freq: error = %s \n", rigerror(retcode));
}
rig_get_freq(my_rig, RIG_VFO_CURR, &freq);
rig_get_mode(my_rig, RIG_VFO_CURR, &rmode, &width);
printf(" Freq: %.3f kHz, Mode: %s, Passband: %.3f kHz\n\n",
freq / 1000, rig_strrmode(rmode), width / 1000.0);
sleep(1);
/* 20m USB on VFO_A */ /* 20m USB on VFO_A */
printf("Setting 20m on VFO A with two functions...\n");
retcode = rig_set_vfo(my_rig, RIG_VFO_A); retcode = rig_set_vfo(my_rig, RIG_VFO_A);
retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 14250375); /* cq de vk3fcs */ retcode = rig_set_freq(my_rig, RIG_VFO_CURR, 14250375); /* cq de vk3fcs */
sleep(3);
if (retcode != RIG_OK ) {
printf("rig_set_freq: error = %s \n", rigerror(retcode));
}
rig_get_freq(my_rig, RIG_VFO_CURR, &freq);
rig_get_vfo(my_rig, &vfo);
printf(" Freq: %.6f MHz, VFO: %s\n\n", freq / 1000000, rig_strvfo(vfo));
sleep(1);
/* 20m USB on VFO_A , with only 1 call */ /* 20m USB on VFO_A , with only 1 call */
printf("Setting 20m on VFO A with one function...\n");
retcode = rig_set_freq(my_rig, RIG_VFO_A, 14295125); /* cq de vk3fcs */ retcode = rig_set_freq(my_rig, RIG_VFO_A, 14295125); /* cq de vk3fcs */
sleep(3);
if (retcode != RIG_OK ) {
printf("rig_set_freq: error = %s \n", rigerror(retcode));
}
rig_get_freq(my_rig, RIG_VFO_CURR, &freq);
rig_get_vfo(my_rig, &vfo);
printf(" Freq: %.6f MHz, VFO: %s\n\n", freq / 1000000, rig_strvfo(vfo));
sleep(1);
#if 0 #if 0
@ -152,16 +265,16 @@ int main (int argc, char *argv[])
sleep(2); sleep(2);
#endif #endif
if (retcode != RIG_OK ) { printf("Setting rig Mode to LSB.\n");
printf("rig_set_freq: error = %s \n", rigerror(retcode));
}
retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_LSB, RIG_PASSBAND_NORMAL); retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_LSB, RIG_PASSBAND_NORMAL);
if (retcode != RIG_OK ) { if (retcode != RIG_OK ) {
printf("rig_set_mode: error = %s \n", rigerror(retcode)); printf("rig_set_mode: error = %s \n", rigerror(retcode));
} }
sleep(1);
printf("Setting rig PTT ON.\n");
retcode = rig_set_ptt(my_rig, RIG_VFO_A, RIG_PTT_ON ); /* stand back ! */ retcode = rig_set_ptt(my_rig, RIG_VFO_A, RIG_PTT_ON ); /* stand back ! */
if (retcode != RIG_OK ) { if (retcode != RIG_OK ) {
@ -170,6 +283,7 @@ int main (int argc, char *argv[])
sleep(1); sleep(1);
printf("Setting rig PTT OFF.\n");
retcode = rig_set_ptt(my_rig, RIG_VFO_A, RIG_PTT_OFF ); /* phew ! */ retcode = rig_set_ptt(my_rig, RIG_VFO_A, RIG_PTT_OFF ); /* phew ! */
if (retcode != RIG_OK ) { if (retcode != RIG_OK ) {
@ -183,6 +297,7 @@ int main (int argc, char *argv[])
* *
*/ */
printf("\nGet various raw rig values:\n");
retcode = rig_get_vfo(my_rig, &vfo); /* try to get vfo info */ retcode = rig_get_vfo(my_rig, &vfo); /* try to get vfo info */
if (retcode == RIG_OK ) { if (retcode == RIG_OK ) {
@ -215,6 +330,25 @@ int main (int argc, char *argv[])
printf("rig_get_strength: error = %s \n", rigerror(retcode)); printf("rig_get_strength: error = %s \n", rigerror(retcode));
} }
if (rig_has_set_func(my_rig, RIG_FUNC_RIT)) {
retcode = rig_set_func(my_rig, RIG_VFO_CURR, RIG_FUNC_RIT, 1);
printf("rig_set_func: Setting RIT ON\n");
}
if (rig_has_get_func(my_rig, RIG_FUNC_RIT)) {
retcode = rig_get_func(my_rig, RIG_VFO_CURR, RIG_FUNC_RIT, &rit);
printf("rig_get_func: RIT: %d\n", rit);
}
if (rig_has_set_func(my_rig, RIG_FUNC_XIT)) {
retcode = rig_set_func(my_rig, RIG_VFO_CURR, RIG_FUNC_XIT, 1);
printf("rig_set_func: Setting XIT ON\n");
}
if (rig_has_get_func(my_rig, RIG_FUNC_XIT)) {
retcode = rig_get_func(my_rig, RIG_VFO_CURR, RIG_FUNC_XIT, &xit);
printf("rig_get_func: XIT: %d\n", xit);
}
rig_close(my_rig); /* close port */ rig_close(my_rig); /* close port */
rig_cleanup(my_rig); /* if you care about memory */ rig_cleanup(my_rig); /* if you care about memory */