From b71c8da45eb70befe412abeccdec98c5f07d80fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Fillod=2C=20F8CFE?= Date: Tue, 28 Nov 2000 22:33:37 +0000 Subject: [PATCH] * cleanup, removed "not implemented" misleading comments * added added squelch primitives of DCS/CTCSS * added set/get_RIT and rig_get_info wrappers git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@274 7ae35d74-ebe9-4afe-98af-79ac388436b8 --- src/rig.c | 267 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 228 insertions(+), 39 deletions(-) diff --git a/src/rig.c b/src/rig.c index 9e04edc6d..e93d73be9 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.8 2000-10-29 16:30:43 f4cfe Exp $ + $Id: rig.c,v 1.9 2000-11-28 22:33:37 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 @@ -357,7 +357,7 @@ int rig_set_freq(RIG *rig, freq_t freq) freq += (freq_t)(rig->state.vfo_comp * freq); if (rig->caps->set_freq == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_freq(rig, freq); } @@ -384,7 +384,7 @@ int rig_get_freq(RIG *rig, freq_t *freq) return -RIG_EINVAL; if (rig->caps->get_freq == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else { status = rig->caps->get_freq(rig, freq); if (rig->state.vfo_comp != 0.0) @@ -414,7 +414,7 @@ int rig_set_mode(RIG *rig, rmode_t mode) return -RIG_EINVAL; if (rig->caps->set_mode == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_mode(rig, mode); } @@ -439,7 +439,7 @@ int rig_get_mode(RIG *rig, rmode_t *mode) return -RIG_EINVAL; if (rig->caps->get_mode == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_mode(rig, mode); } @@ -455,7 +455,7 @@ int rig_set_passband(RIG *rig, pbwidth_t width) return -RIG_EINVAL; if (rig->caps->set_passband == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_passband(rig, width); } @@ -471,7 +471,7 @@ int rig_get_passband(RIG *rig, pbwidth_t *width) return -RIG_EINVAL; if (rig->caps->get_passband == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_passband(rig, width); } @@ -496,7 +496,7 @@ int rig_set_vfo(RIG *rig, vfo_t vfo) return -RIG_EINVAL; if (rig->caps->set_vfo == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_vfo(rig, vfo); } @@ -521,7 +521,7 @@ int rig_get_vfo(RIG *rig, vfo_t *vfo) return -RIG_EINVAL; if (rig->caps->get_vfo == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_vfo(rig, vfo); } @@ -547,16 +547,18 @@ int rig_set_ptt(RIG *rig, ptt_t ptt) switch (rig->state.ptt_type) { case RIG_PTT_RIG: if (rig->caps->set_ptt == NULL) - return -RIG_ENIMPL; /* not implemented */ + return -RIG_ENIMPL; else return rig->caps->set_ptt(rig, ptt); break; case RIG_PTT_SERIAL: case RIG_PTT_PARALLEL: + return -RIG_ENIMPL; /* not implemented */ + case RIG_PTT_NONE: default: - return -RIG_ENIMPL; /* not implemented */ + return -RIG_ENAVAIL; /* not available */ } } @@ -582,7 +584,7 @@ int rig_get_ptt(RIG *rig, ptt_t *ptt) switch (rig->state.ptt_type) { case RIG_PTT_RIG: if (rig->caps->get_ptt == NULL) - return -RIG_ENIMPL; /* not implemented */ + return -RIG_ENIMPL; else return rig->caps->get_ptt(rig, ptt); break; @@ -617,7 +619,7 @@ int rig_set_rptr_shift(RIG *rig, rptr_shift_t rptr_shift) return -RIG_EINVAL; if (rig->caps->set_rptr_shift == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_rptr_shift(rig, rptr_shift); } @@ -641,7 +643,7 @@ int rig_get_rptr_shift(RIG *rig, rptr_shift_t *rptr_shift) return -RIG_EINVAL; if (rig->caps->get_rptr_shift == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_rptr_shift(rig, rptr_shift); } @@ -666,7 +668,7 @@ int rig_set_rptr_offs(RIG *rig, unsigned long rptr_offs) return -RIG_EINVAL; if (rig->caps->set_rptr_offs == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_rptr_offs(rig, rptr_offs); } @@ -691,7 +693,7 @@ int rig_get_rptr_offs(RIG *rig, unsigned long *rptr_offs) return -RIG_EINVAL; if (rig->caps->get_rptr_offs == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_rptr_offs(rig, rptr_offs); } @@ -718,7 +720,7 @@ int rig_set_split_freq(RIG *rig, freq_t rx_freq, freq_t tx_freq) return -RIG_EINVAL; if (rig->caps->set_split_freq == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_split_freq(rig, rx_freq, tx_freq); } @@ -744,7 +746,7 @@ int rig_get_split_freq(RIG *rig, freq_t *rx_freq, freq_t *tx_freq) return -RIG_EINVAL; if (rig->caps->get_split_freq == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_split_freq(rig, rx_freq, tx_freq); } @@ -770,7 +772,7 @@ int rig_set_split(RIG *rig, split_t split) return -RIG_EINVAL; if (rig->caps->set_split == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_split(rig, split); } @@ -794,11 +796,63 @@ int rig_get_split(RIG *rig, split_t *split) return -RIG_EINVAL; if (rig->caps->get_split == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_split(rig, split); } +/** + * rig_set_rit - set the RIT + * @rig: The rig handle + * @rit: The RIT offset to adjust to + * + * The rig_set_rit() function sets the current RIT offset. + * A value of 0 for @rit disables RIT. + * + * RETURN VALUE: The rig_set_rit() function returns %RIG_OK + * if the operation has been sucessful, or a negative value + * if an error occured (in which case, cause is set appropriately). + * + * SEE ALSO: rig_get_rit() + */ + +int rig_set_rit(RIG *rig, signed long rit) +{ + if (!rig || !rig->caps) + return -RIG_EINVAL; + + if (rig->caps->set_rit == NULL) + return -RIG_ENAVAIL; + else + return rig->caps->set_rit(rig, rit); +} + +/** + * rig_get_rit - get the current RIT offset + * @rig: The rig handle + * @rit: The location where to store the current RIT offset + * + * The rig_get_rit() function retrieves the current RIT offset. + * + * RETURN VALUE: The rig_get_rit() function returns %RIG_OK + * if the operation has been sucessful, or a negative value + * if an error occured (in which case, cause is set appropriately). + * + * SEE ALSO: rig_set_rit() + */ + +int rig_get_rit(RIG *rig, signed long *rit) +{ + if (!rig || !rig->caps || !rit) + return -RIG_EINVAL; + + if (rig->caps->get_rit == NULL) + return -RIG_ENAVAIL; + else + return rig->caps->get_rit(rig, rit); +} + + /** * rig_set_ts - set the Tuning Step @@ -820,7 +874,7 @@ int rig_set_ts(RIG *rig, unsigned long ts) return -RIG_EINVAL; if (rig->caps->set_ts == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_ts(rig, ts); } @@ -845,7 +899,7 @@ int rig_get_ts(RIG *rig, unsigned long *ts) return -RIG_EINVAL; if (rig->caps->get_ts == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_ts(rig, ts); } @@ -961,7 +1015,7 @@ int rig_set_ctcss(RIG *rig, unsigned int tone) return -RIG_EINVAL; if (rig->caps->set_ctcss == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_ctcss(rig, tone); } @@ -995,7 +1049,7 @@ int rig_get_ctcss(RIG *rig, unsigned int *tone) return -RIG_EINVAL; if (rig->caps->get_ctcss == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_ctcss(rig, tone); } @@ -1021,7 +1075,7 @@ int rig_set_dcs(RIG *rig, unsigned int code) return -RIG_EINVAL; if (rig->caps->set_dcs == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_dcs(rig, code); } @@ -1046,11 +1100,122 @@ int rig_get_dcs(RIG *rig, unsigned int *code) return -RIG_EINVAL; if (rig->caps->get_dcs == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_dcs(rig, code); } +/** + * rig_set_ctcss_sql - set CTCSS squelch + * @rig: The rig handle + * @tone: The PL tone to set the squelch to + * + * The rig_set_ctcss_sql() function sets the current Continuous Tone + * Controlled Squelch System (CTCSS) sub-audible squelch tone. + * NB, @tone is NOT in Hz, but in tenth of Hz! This way, + * if you want to set subaudible tone of 88.5 Hz for example, + * then pass 885 to this function. Also, to disable Tone squelch, + * set @tone to 0. + * + * RETURN VALUE: The rig_set_ctcss_sql() function returns %RIG_OK + * if the operation has been sucessful, or a negative value + * if an error occured (in which case, cause is set appropriately). + * + * SEE ALSO: rig_get_ctcss_sql(), rig_set_ctcss() + */ + +int rig_set_ctcss_sql(RIG *rig, unsigned int tone) +{ + if (!rig || !rig->caps) + return -RIG_EINVAL; + + if (rig->caps->set_ctcss_sql == NULL) + return -RIG_ENAVAIL; + else + return rig->caps->set_ctcss_sql(rig, tone); +} + +/** + * rig_get_ctcss_sql - get the current CTCSS squelch + * @rig: The rig handle + * @tone: The location where to store the current tone + * + * The rig_get_ctcss_sql() function retrieves the current Continuous Tone + * Controlled Squelch System (CTCSS) sub-audible squelch tone. + * NB, @tone is NOT in Hz, but in tenth of Hz! This way, + * if the function rig_get_ctcss() returns a subaudible tone of 885 + * for example, then the real tone is 88.5 Hz. + * Also, a value of 0 for @tone means the Tone squelch is disabled. + * + * RETURN VALUE: The rig_get_ctcss_sql() function returns %RIG_OK + * if the operation has been sucessful, or a negative value + * if an error occured (in which case, cause is set appropriately). + * + * SEE ALSO: rig_set_ctcss_sql(), rig_get_ctcss() + */ +int rig_get_ctcss_sql(RIG *rig, unsigned int *tone) +{ + if (!rig || !rig->caps || !tone) + return -RIG_EINVAL; + + if (rig->caps->get_ctcss_sql == NULL) + return -RIG_ENAVAIL; + else + return rig->caps->get_ctcss_sql(rig, tone); +} + +/** + * rig_set_dcs_sql - set the current DCS + * @rig: The rig handle + * @code: The tone to set to + * + * The rig_set_dcs_sql() function sets the current Digitally-Coded Squelch + * code. + * + * RETURN VALUE: The rig_set_dcs_sql() function returns %RIG_OK + * if the operation has been sucessful, or a negative value + * if an error occured (in which case, cause is set appropriately). + * + * SEE ALSO: rig_get_dcs_sql(), rig_set_dcs() + */ + +int rig_set_dcs_sql(RIG *rig, unsigned int code) +{ + if (!rig || !rig->caps) + return -RIG_EINVAL; + + if (rig->caps->set_dcs_sql == NULL) + return -RIG_ENAVAIL; + else + return rig->caps->set_dcs_sql(rig, code); +} + +/** + * rig_get_dcs_sql - get the current DCS + * @rig: The rig handle + * @code: The location where to store the current tone + * + * The rig_get_dcs_sql() function retrieves the current + * Digitally-Coded Squelch. + * + * RETURN VALUE: The rig_get_dcs_sql() function returns %RIG_OK + * if the operation has been sucessful, or a negative value + * if an error occured (in which case, cause is set appropriately). + * + * SEE ALSO: rig_get_dcs_sql(), rig_get_dcs() + */ +int rig_get_dcs_sql(RIG *rig, unsigned int *code) +{ + if (!rig || !rig->caps || !code) + return -RIG_EINVAL; + + if (rig->caps->get_dcs_sql == NULL) + return -RIG_ENAVAIL; + else + return rig->caps->get_dcs_sql(rig, code); +} + + /** * rig_set_poweron - turn on the radio * @rig: The rig handle @@ -1070,7 +1235,7 @@ int rig_set_poweron(RIG *rig) return -RIG_EINVAL; if (rig->caps->set_poweron == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_poweron(rig); } @@ -1094,7 +1259,7 @@ int rig_set_poweroff(RIG *rig) return -RIG_EINVAL; if (rig->caps->set_poweroff == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_poweroff(rig); } @@ -1154,7 +1319,7 @@ int rig_set_level(RIG *rig, setting_t level, value_t val) return -RIG_EINVAL; if (rig->caps->set_level == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_level(rig, level, val); } @@ -1181,7 +1346,7 @@ int rig_get_level(RIG *rig, setting_t level, value_t *val) return -RIG_EINVAL; if (rig->caps->get_level == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_level(rig, level, val); } @@ -1283,7 +1448,7 @@ int rig_set_func(RIG *rig, setting_t func, int status) return -RIG_EINVAL; if (rig->caps->set_func == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_func(rig, func, status); } @@ -1310,7 +1475,7 @@ int rig_get_func(RIG *rig, setting_t *func) return -RIG_EINVAL; if (rig->caps->get_func == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_func(rig, func); } @@ -1337,7 +1502,7 @@ int rig_set_mem(RIG *rig, int ch) return -RIG_EINVAL; if (rig->caps->set_mem == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_mem(rig, ch); } @@ -1363,7 +1528,7 @@ int rig_get_mem(RIG *rig, int *ch) return -RIG_EINVAL; if (rig->caps->get_mem == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_mem(rig, ch); } @@ -1388,7 +1553,7 @@ int rig_mv_ctl(RIG *rig, mv_op_t op) return -RIG_EINVAL; if (rig->caps->mv_ctl == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->mv_ctl(rig, op); } @@ -1415,7 +1580,7 @@ int rig_set_bank(RIG *rig, int bank) return -RIG_EINVAL; if (rig->caps->set_bank == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_bank(rig, bank); } @@ -1442,7 +1607,7 @@ int rig_set_channel(RIG *rig, const channel_t *chan) return -RIG_EINVAL; if (rig->caps->set_channel == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->set_channel(rig, chan); } @@ -1468,7 +1633,7 @@ int rig_get_channel(RIG *rig, channel_t *chan) return -RIG_EINVAL; if (rig->caps->get_channel == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_channel(rig, chan); } @@ -1576,11 +1741,35 @@ int rig_get_trn(RIG *rig, int *trn) return -RIG_EINVAL; if (rig->caps->get_trn == NULL) - return -RIG_ENAVAIL; /* not implemented */ + return -RIG_ENAVAIL; else return rig->caps->get_trn(rig, trn); } +/** + * rig_get_info - get general information from the radio + * @rig: The rig handle + * + * The rig_get_info() function retrieves some general information + * from the radio. This can include firmware revision, exact + * model name, or just nothing. + * + * RETURN VALUE: The rig_get_info() function returns a pointer + * to freshly allocated memory containing the ASCIIZ string + * if the operation has been sucessful, or NULL + * if an error occured. + */ +unsigned char* rig_get_info(RIG *rig) +{ + if (!rig || !rig->caps) + return NULL; + + if (rig->caps->get_info == NULL) + return NULL; + else + return rig->caps->get_info(rig); +} + /* * more rig_* to come -- FS