kopia lustrzana https://github.com/Hamlib/Hamlib
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
rodzic
e88d0208bd
commit
f82184cbf5
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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 */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -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, "" },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
180
tests/testrig.c
180
tests/testrig.c
|
@ -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 */
|
||||||
|
|
Ładowanie…
Reference in New Issue