diff --git a/dummy/dummy.c b/dummy/dummy.c index 1f02ab1d7..2372e4eb2 100644 --- a/dummy/dummy.c +++ b/dummy/dummy.c @@ -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); 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; } @@ -1410,7 +1414,8 @@ static int dummy_mW2power(RIG * rig, float *power, unsigned int mwpower, * 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_PARM ((setting_t)-1) diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 585eb1e76..e4962426b 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -748,13 +748,14 @@ enum rig_func_e { RIG_FUNC_ABM = (1<<21),/*!< \c ABM -- Auto Band Mode */ RIG_FUNC_BC = (1<<22),/*!< \c BC -- 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_SATMODE = (1<<26),/*!< \c SATMODE -- Satellite mode 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_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 */ }; /* diff --git a/src/misc.c b/src/misc.c index b5c820802..19053d2b6 100644 --- a/src/misc.c +++ b/src/misc.c @@ -408,6 +408,8 @@ static struct { { RIG_FUNC_RESUME, "RESUME" }, { RIG_FUNC_TBURST, "TBURST" }, { RIG_FUNC_TUNER, "TUNER" }, + { RIG_FUNC_RIT, "RIT" }, + { RIG_FUNC_XIT, "XIT" }, { RIG_FUNC_NONE, "" }, }; diff --git a/tests/testrig.c b/tests/testrig.c index 735b5a6ef..4d8ba6bd1 100644 --- a/tests/testrig.c +++ b/tests/testrig.c @@ -18,11 +18,17 @@ int main (int argc, char *argv[]) pbwidth_t width; vfo_t vfo; /* vfo selection */ int strength; /* S-Meter level */ + int rit = 0; /* RIT status */ + int xit = 0; /* XIT status */ int retcode; /* generic return code from functions */ + 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 @@ -90,59 +96,166 @@ int main (int argc, char *argv[]) /* 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, 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 */ + printf("Setting 15m USB...\n"); + 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); - sleep(3); + retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_USB, + 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 */ - retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_AM, RIG_PASSBAND_NORMAL); - sleep(3); + 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); /* 40m LSB */ + printf("Setting 40m LSB...\n"); + 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); - 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, - rig_passband_narrow(my_rig, RIG_MODE_FM)); - sleep(3); + rig_passband_narrow(my_rig, RIG_MODE_AM)); + + 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 */ + printf("Setting 160m CW...\n"); + 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); - 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*/ + printf("Setting 160m CW Narrow...\n"); + retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, - rig_passband_narrow(my_rig, RIG_MODE_FM)); - sleep(3); + rig_passband_narrow(my_rig, RIG_MODE_CW)); + + 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 */ + printf("Setting 20m on VFO A with two functions...\n"); + retcode = rig_set_vfo(my_rig, RIG_VFO_A); 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 */ + printf("Setting 20m on VFO A with one function...\n"); 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 @@ -152,16 +265,16 @@ int main (int argc, char *argv[]) sleep(2); #endif - if (retcode != RIG_OK ) { - printf("rig_set_freq: error = %s \n", rigerror(retcode)); - } - + printf("Setting rig Mode to LSB.\n"); retcode = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_LSB, RIG_PASSBAND_NORMAL); if (retcode != RIG_OK ) { 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 ! */ if (retcode != RIG_OK ) { @@ -170,6 +283,7 @@ int main (int argc, char *argv[]) sleep(1); + printf("Setting rig PTT OFF.\n"); retcode = rig_set_ptt(my_rig, RIG_VFO_A, RIG_PTT_OFF ); /* phew ! */ 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 */ if (retcode == RIG_OK ) { @@ -215,6 +330,25 @@ int main (int argc, char *argv[]) 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_cleanup(my_rig); /* if you care about memory */