diff --git a/rigclass.cpp b/rigclass.cpp index 3e8c0a5ed..87e8cd8e1 100644 --- a/rigclass.cpp +++ b/rigclass.cpp @@ -35,13 +35,7 @@ #include #include "rigclass.h" -#include -#define CHECK_RIG(cmd) { int _retval = cmd; if (_retval != RIG_OK) \ - THROW(new RigException (_retval)); } - -#define CHECK_RIG2(cmd) { int _retval = cmd; if (_retval != RIG_OK) \ - return _retval; } static int hamlibpp_freq_event(RIG *rig, vfo_t vfo, freq_t freq, rig_ptr_t arg); @@ -68,555 +62,69 @@ Rig::Rig(rig_model_t rig_model) { Rig::~Rig() { theRig->state.obj = NULL; - CHECK_RIG( rig_cleanup(theRig) ); + rig_cleanup(theRig); caps = NULL; } int Rig::open(void) { - CHECK_RIG2( rig_open(theRig) ); + return rig_open(theRig); } int Rig::close(void) { - CHECK_RIG2( rig_close(theRig) ); + return rig_close(theRig); } int Rig::setConf(const char *name, const char *val) { - CHECK_RIG2( rig_set_conf(theRig, tokenLookup(name), val) ); -} - -int Rig::setPTT(ptt_t ptt, vfo_t vfo) -{ - CHECK_RIG2( rig_set_ptt(theRig, vfo, ptt) ); + return rig_set_conf(theRig, tokenLookup(name), val); } int Rig::setFreq(freq_t freq, vfo_t vfo) { - CHECK_RIG2( rig_set_freq(theRig, vfo, freq) ); + return rig_set_freq(theRig, vfo, freq); } freq_t Rig::getFreq(vfo_t vfo) { freq_t freq; - CHECK_RIG2( rig_get_freq(theRig, vfo, &freq) ); + rig_get_freq(theRig, vfo, &freq); return freq; } -//-------------------------------------------------------------- -int Rig::setConf(token_t token, const char *val) -{ - CHECK_RIG( rig_set_conf(theRig, token, val) ); +int Rig::setMode(rmode_t mode, pbwidth_t width, vfo_t vfo) { + return rig_set_mode(theRig, vfo, mode, width); } -void Rig::getConf(token_t token, char *val) -{ - CHECK_RIG( rig_get_conf(theRig, token, val) ); +rmode_t Rig::getMode(pbwidth_t& width, vfo_t vfo) { + rmode_t mode; + rig_get_mode(theRig, vfo, &mode, &width); + return mode; } -void Rig::getConf(const char *name, char *val) +int Rig::setVFO(vfo_t vfo) { - CHECK_RIG( rig_get_conf(theRig, tokenLookup(name), val) ); + return rig_set_vfo(theRig, vfo); +} + +vfo_t Rig::getVFO() +{ + vfo_t vfo; + rig_get_vfo(theRig, &vfo); + return vfo; +} + +int Rig::setPTT(ptt_t ptt, vfo_t vfo) +{ + return rig_set_ptt(theRig, vfo, ptt); +} + +ptt_t Rig::getPTT(vfo_t vfo) +{ + ptt_t ptt; + rig_get_ptt(theRig, vfo, &ptt); + return ptt; } token_t Rig::tokenLookup(const char *name) { return rig_token_lookup(theRig, name); } - -void Rig::setMode(rmode_t mode, pbwidth_t width, vfo_t vfo) { - CHECK_RIG(rig_set_mode(theRig, vfo, mode, width)); -} - -rmode_t Rig::getMode(pbwidth_t& width, vfo_t vfo) { - rmode_t mode; - CHECK_RIG( rig_get_mode(theRig, vfo, &mode, &width) ); - return mode; -} - -void Rig::setVFO(vfo_t vfo) -{ - CHECK_RIG( rig_set_vfo(theRig, vfo) ); -} - -vfo_t Rig::getVFO() -{ - vfo_t vfo; - CHECK_RIG( rig_get_vfo(theRig, &vfo) ); - return vfo; -} - - -ptt_t Rig::getPTT(vfo_t vfo) -{ - ptt_t ptt; - CHECK_RIG( rig_get_ptt(theRig, vfo, &ptt) ); - return ptt; -} - -dcd_t Rig::getDCD(vfo_t vfo) -{ - dcd_t dcd; - CHECK_RIG( rig_get_dcd(theRig, vfo, &dcd) ); - return dcd; -} - -void Rig::setLevel(setting_t level, int vali, vfo_t vfo) -{ - value_t val; - val.i = vali; - CHECK_RIG( rig_set_level(theRig, vfo, level, val) ); -} - -void Rig::setLevel(setting_t level, float valf, vfo_t vfo) -{ - value_t val; - val.f = valf; - CHECK_RIG( rig_set_level(theRig, vfo, level, val) ); -} - - -void Rig::getLevel(setting_t level, int& vali, vfo_t vfo) -{ - value_t val; - if (RIG_LEVEL_IS_FLOAT(level)) THROW(new RigException (-RIG_EINVAL)); - CHECK_RIG( rig_get_level(theRig, vfo, level, &val) ); - vali = val.i; -} - -void Rig::getLevel(setting_t level, float& valf, vfo_t vfo) -{ - value_t val; - if (!RIG_LEVEL_IS_FLOAT(level)) THROW(new RigException (-RIG_EINVAL)); - CHECK_RIG( rig_get_level(theRig, vfo, level, &val) ); - valf = val.f; -} - -int Rig::getLevelI(setting_t level, vfo_t vfo) -{ - value_t val; - if (RIG_LEVEL_IS_FLOAT(level)) THROW(new RigException (-RIG_EINVAL)); - CHECK_RIG( rig_get_level(theRig, vfo, level, &val) ); - return val.i; -} - -float Rig::getLevelF(setting_t level, vfo_t vfo) -{ - value_t val; - if (!RIG_LEVEL_IS_FLOAT(level)) THROW(new RigException (-RIG_EINVAL)); - CHECK_RIG( rig_get_level(theRig, vfo, level, &val) ); - return val.f; -} - -void Rig::setParm(setting_t parm, int vali) -{ - value_t val; - val.i = vali; - CHECK_RIG( rig_set_parm(theRig, parm, val) ); -} - -void Rig::setParm(setting_t parm, float valf) -{ - value_t val; - val.f = valf; - CHECK_RIG( rig_set_parm(theRig, parm, val) ); -} - - -void Rig::getParm(setting_t parm, int& vali) -{ - value_t val; - if (RIG_LEVEL_IS_FLOAT(parm)) THROW(new RigException (-RIG_EINVAL)); - CHECK_RIG( rig_get_parm(theRig, parm, &val) ); - vali = val.i; -} - -void Rig::getParm(setting_t parm, float& valf) -{ - value_t val; - if (!RIG_LEVEL_IS_FLOAT(parm)) THROW(new RigException (-RIG_EINVAL)); - CHECK_RIG( rig_get_parm(theRig, parm, &val) ); - valf = val.f; -} - -int Rig::getParmI(setting_t parm) -{ - value_t val; - if (RIG_LEVEL_IS_FLOAT(parm)) - THROW(new RigException (-RIG_EINVAL)); - CHECK_RIG( rig_get_parm(theRig, parm, &val) ); - return val.i; -} - -float Rig::getParmF(setting_t parm) -{ - value_t val; - if (!RIG_LEVEL_IS_FLOAT(parm)) THROW(new RigException (-RIG_EINVAL)); - CHECK_RIG( rig_get_parm(theRig, parm, &val) ); - return val.f; -} - -void Rig::setSplitFreq(freq_t tx_freq, vfo_t vfo) { - CHECK_RIG( rig_set_split_freq(theRig, vfo, tx_freq) ); -} - -freq_t Rig::getSplitFreq(vfo_t vfo) -{ - freq_t freq; - CHECK_RIG( rig_get_split_freq(theRig, vfo, &freq) ); - return freq; -} - -void Rig::setSplitMode(rmode_t mode, pbwidth_t width, vfo_t vfo) { - CHECK_RIG(rig_set_split_mode(theRig, vfo, mode, width)); -} - -rmode_t Rig::getSplitMode(pbwidth_t& width, vfo_t vfo) { - rmode_t mode; - CHECK_RIG( rig_get_split_mode(theRig, vfo, &mode, &width) ); - return mode; -} - -void Rig::setSplitVFO(split_t split, vfo_t vfo, vfo_t tx_vfo) { - CHECK_RIG(rig_set_split_vfo(theRig, vfo, split, tx_vfo)); -} - -split_t Rig::getSplitVFO(vfo_t &tx_vfo, vfo_t vfo) { - split_t split; - CHECK_RIG( rig_get_split_vfo(theRig, vfo, &split, &tx_vfo) ); - return split; -} - -bool Rig::hasGetLevel (setting_t level) -{ - return rig_has_get_level(theRig, level) == level; -} - -bool Rig::hasSetLevel (setting_t level) -{ - return rig_has_set_level(theRig, level) == level; -} - -bool Rig::hasGetParm (setting_t parm) -{ - return rig_has_get_parm(theRig, parm) == parm; -} -bool Rig::hasSetParm (setting_t parm) -{ - return rig_has_set_parm(theRig, parm) == parm; -} - -const char *Rig::getInfo (void) -{ - return rig_get_info(theRig); -} - -pbwidth_t Rig::passbandNormal (rmode_t mode) -{ - return rig_passband_normal(theRig, mode); -} - -pbwidth_t Rig::passbandNarrow (rmode_t mode) -{ - return rig_passband_narrow(theRig, mode); -} - -pbwidth_t Rig::passbandWide (rmode_t mode) -{ - return rig_passband_wide(theRig, mode); -} - -void Rig::setRptrShift (rptr_shift_t rptr_shift, vfo_t vfo) -{ - CHECK_RIG( rig_set_rptr_shift(theRig, vfo, rptr_shift) ); -} - -rptr_shift_t Rig::getRptrShift (vfo_t vfo) -{ - rptr_shift_t rptr_shift; - CHECK_RIG( rig_get_rptr_shift(theRig, vfo, &rptr_shift) ); - return rptr_shift; -} - -void Rig::setRptrOffs (shortfreq_t rptr_offs, vfo_t vfo) -{ - CHECK_RIG( rig_set_rptr_offs(theRig, vfo, rptr_offs) ); -} - -shortfreq_t Rig::getRptrOffs (vfo_t vfo) -{ - shortfreq_t rptr_offs; - CHECK_RIG( rig_get_rptr_offs(theRig, vfo, &rptr_offs) ); - return rptr_offs; -} - -void Rig::setTs (shortfreq_t ts, vfo_t vfo) -{ - CHECK_RIG( rig_set_ts(theRig, vfo, ts) ); -} - -shortfreq_t Rig::getTs (vfo_t vfo) -{ - shortfreq_t ts; - CHECK_RIG( rig_get_ts(theRig, vfo, &ts) ); - return ts; -} - -void Rig::setCTCSS (tone_t tone, vfo_t vfo) -{ - CHECK_RIG( rig_set_ctcss_tone(theRig, vfo, tone) ); -} - -tone_t Rig::getCTCSS (vfo_t vfo) -{ - tone_t tone; - CHECK_RIG( rig_get_ctcss_tone(theRig, vfo, &tone) ); - return tone; -} - -void Rig::setDCS (tone_t code, vfo_t vfo) -{ - CHECK_RIG( rig_set_dcs_code(theRig, vfo, code) ); -} - -tone_t Rig::getDCS (vfo_t vfo) -{ - tone_t code; - CHECK_RIG( rig_get_dcs_code(theRig, vfo, &code) ); - return code; -} - -void Rig::setCTCSSsql (tone_t tone, vfo_t vfo) -{ - CHECK_RIG( rig_set_ctcss_sql(theRig, vfo, tone) ); -} - -tone_t Rig::getCTCSSsql (vfo_t vfo) -{ - tone_t tone; - CHECK_RIG( rig_get_ctcss_sql(theRig, vfo, &tone) ); - return tone; -} - -void Rig::setDCSsql (tone_t code, vfo_t vfo) -{ - CHECK_RIG( rig_set_dcs_sql(theRig, vfo, code) ); -} - -tone_t Rig::getDCSsql (vfo_t vfo) -{ - tone_t code; - CHECK_RIG( rig_get_dcs_sql(theRig, vfo, &code) ); - return code; -} - - -void Rig::setFunc (setting_t func, bool status, vfo_t vfo) -{ - CHECK_RIG( rig_set_func(theRig, vfo, func, status? 1:0) ); -} - -bool Rig::getFunc (setting_t func, vfo_t vfo) -{ - int status; - CHECK_RIG( rig_get_func(theRig, vfo, func, &status) ); - return status ? true : false; -} - -void Rig::VFOop (vfo_op_t op, vfo_t vfo) -{ - CHECK_RIG( rig_vfo_op(theRig, vfo, op) ); -} - -bool Rig::hasVFOop (vfo_op_t op) -{ - return rig_has_vfo_op(theRig, op)==op; -} - -void Rig::scan (scan_t scan, int ch, vfo_t vfo) -{ - CHECK_RIG( rig_scan(theRig, vfo, scan, ch) ); -} - -bool Rig::hasScan (scan_t scan) -{ - return rig_has_scan(theRig, scan)==scan; -} - - -void Rig::setRit(shortfreq_t rit, vfo_t vfo) -{ - CHECK_RIG(rig_set_rit(theRig, vfo, rit)); -} - -shortfreq_t Rig::getRit(vfo_t vfo) -{ - shortfreq_t rit; - CHECK_RIG( rig_get_rit(theRig, vfo, &rit) ); - return rit; -} - -void Rig::setXit(shortfreq_t xit, vfo_t vfo) -{ - CHECK_RIG(rig_set_xit(theRig, vfo, xit)); -} - -shortfreq_t Rig::getXit(vfo_t vfo) -{ - shortfreq_t xit; - CHECK_RIG( rig_get_xit(theRig, vfo, &xit) ); - return xit; -} - -void Rig::setAnt(ant_t ant, vfo_t vfo) -{ - CHECK_RIG(rig_set_ant(theRig, vfo, ant)); -} - -ant_t Rig::getAnt(vfo_t vfo) -{ - ant_t ant; - CHECK_RIG( rig_get_ant(theRig, vfo, &ant) ); - return ant; -} - -void Rig::sendDtmf(const char *digits, vfo_t vfo) -{ - CHECK_RIG(rig_send_dtmf(theRig, vfo, digits)); -} - -int Rig::recvDtmf(char *digits, vfo_t vfo) -{ - int len; - CHECK_RIG( rig_recv_dtmf(theRig, vfo, digits, &len) ); - return len; -} - -void Rig::sendMorse(const char *msg, vfo_t vfo) -{ - CHECK_RIG(rig_send_morse(theRig, vfo, msg)); -} - - -shortfreq_t Rig::getResolution (rmode_t mode) -{ - shortfreq_t res; - res = rig_get_resolution(theRig, mode); - if (res < 0) THROW(new RigException (res)); - return res; -} - -void Rig::reset (reset_t reset) -{ - CHECK_RIG( rig_reset(theRig, reset) ); -} - -bool Rig::hasGetFunc (setting_t func) -{ - return rig_has_get_func(theRig, func)==func; -} - -bool Rig::hasSetFunc (setting_t func) -{ - return rig_has_set_func(theRig, func)==func; -} - -unsigned int Rig::power2mW (float power, freq_t freq, rmode_t mode) -{ - unsigned int mwpower; - CHECK_RIG( rig_power2mW(theRig, &mwpower, power, freq, mode) ); - return mwpower; -} - -float Rig::mW2power (unsigned int mwpower, freq_t freq, rmode_t mode) -{ - float power; - CHECK_RIG( rig_mW2power(theRig, &power, mwpower, freq, mode) ); - return power; -} - -void Rig::setTrn (int trn) -{ - CHECK_RIG( rig_set_trn(theRig, trn) ); -} - -int Rig::getTrn () -{ - int trn; - CHECK_RIG( rig_get_trn(theRig, &trn) ); - return trn; -} - -void Rig::setBank (int bank, vfo_t vfo) -{ - CHECK_RIG( rig_set_ts(theRig, vfo, bank) ); -} - -void Rig::setMem (int ch, vfo_t vfo) -{ - CHECK_RIG( rig_set_mem(theRig, vfo, ch) ); -} - -int Rig::getMem (vfo_t vfo) -{ - int mem; - CHECK_RIG( rig_get_mem(theRig, vfo, &mem) ); - return mem; -} - -void Rig::setChannel (const channel_t *chan) -{ - CHECK_RIG( rig_set_channel(theRig, chan) ); -} - -void Rig::getChannel (channel_t *chan) -{ - CHECK_RIG( rig_get_channel(theRig, chan) ); -} - - -void Rig::setPowerStat (powerstat_t status) -{ - CHECK_RIG( rig_set_powerstat(theRig, status) ); -} - -powerstat_t Rig::getPowerStat (void) -{ - powerstat_t status; - CHECK_RIG( rig_get_powerstat(theRig, &status) ); - return status; -} - -rmode_t Rig::RngRxModes (freq_t freq) -{ - unsigned modes = RIG_MODE_NONE; - freq_range_t *rng; - int i; - - for (i=0; istate.rx_range_list[i]; - if (RIG_IS_FRNG_END(*rng)) { - return (rmode_t)modes; - } - if (freq >= rng->start && freq <= rng->end) - modes |= (unsigned)rng->modes; - } - - return (rmode_t)modes; -} - -rmode_t Rig::RngTxModes (freq_t freq) -{ - unsigned modes = RIG_MODE_NONE; - freq_range_t *rng; - int i; - - for (i=0; istate.tx_range_list[i]; - if (RIG_IS_FRNG_END(*rng)) { - return (rmode_t)modes; - } - if (freq >= rng->start && freq <= rng->end) - modes |= (unsigned)rng->modes; - } - - return (rmode_t)modes; -} diff --git a/rigclass.h b/rigclass.h index fd33c0309..295ae5000 100644 --- a/rigclass.h +++ b/rigclass.h @@ -25,7 +25,6 @@ #include #include -//extern int hamlibError(int retcode); class BACKEND_IMPEXP Rig { private: @@ -46,114 +45,17 @@ public: int close(void); int setConf(const char *name, const char *val); - int setFreq(freq_t freq, vfo_t vfo = RIG_VFO_CURR); - freq_t getFreq(vfo_t vfo = RIG_VFO_CURR); - int setPTT (ptt_t ptt, vfo_t vfo = RIG_VFO_CURR); - - int setConf(token_t token, const char *val); - void getConf(token_t token, char *val); - void getConf(const char *name, char *val); token_t tokenLookup(const char *name); - - void setMode(rmode_t, pbwidth_t width = RIG_PASSBAND_NORMAL, vfo_t vfo = RIG_VFO_CURR); + int setFreq(freq_t freq, vfo_t vfo = RIG_VFO_CURR); + freq_t getFreq(vfo_t vfo = RIG_VFO_CURR); + int setMode(rmode_t, pbwidth_t width = RIG_PASSBAND_NORMAL, vfo_t vfo = RIG_VFO_CURR); rmode_t getMode(pbwidth_t&, vfo_t vfo = RIG_VFO_CURR); - void setVFO(vfo_t); + int setVFO(vfo_t); vfo_t getVFO(); + int setPTT (ptt_t ptt, vfo_t vfo = RIG_VFO_CURR); ptt_t getPTT (vfo_t vfo = RIG_VFO_CURR); - dcd_t getDCD (vfo_t vfo = RIG_VFO_CURR); - - void setLevel(setting_t level, int vali, vfo_t vfo = RIG_VFO_CURR); - void setLevel(setting_t level, float valf, vfo_t vfo = RIG_VFO_CURR); - void getLevel(setting_t level, int& vali, vfo_t vfo = RIG_VFO_CURR); - void getLevel(setting_t level, float& valf, vfo_t vfo = RIG_VFO_CURR); - int getLevelI(setting_t level, vfo_t vfo = RIG_VFO_CURR); - float getLevelF(setting_t level, vfo_t vfo = RIG_VFO_CURR); - bool hasGetLevel (setting_t level); - bool hasSetLevel (setting_t level); - - void setParm(setting_t parm, int vali); - void setParm(setting_t parm, float valf); - void getParm(setting_t parm, int& vali); - void getParm(setting_t parm, float& valf); - int getParmI(setting_t parm); - float getParmF(setting_t parm); - bool hasGetParm (setting_t parm); - bool hasSetParm (setting_t parm); - - void setFunc (setting_t func, bool status, vfo_t vfo = RIG_VFO_CURR); - bool getFunc (setting_t func, vfo_t vfo = RIG_VFO_CURR); - bool hasGetFunc (setting_t func); - bool hasSetFunc (setting_t func); - - void VFOop(vfo_op_t op, vfo_t vfo = RIG_VFO_CURR); - bool hasVFOop (vfo_op_t op); - - void scan(scan_t scan, int ch, vfo_t vfo = RIG_VFO_CURR); - bool hasScan (scan_t scan); - - const char *getInfo (void); - pbwidth_t passbandNormal (rmode_t); - pbwidth_t passbandNarrow (rmode_t); - pbwidth_t passbandWide (rmode_t); - - void setRptrShift (rptr_shift_t rptr_shift, vfo_t vfo = RIG_VFO_CURR); - rptr_shift_t getRptrShift (vfo_t vfo = RIG_VFO_CURR); - void setRptrOffs (shortfreq_t rptr_offs, vfo_t vfo = RIG_VFO_CURR); - shortfreq_t getRptrOffs (vfo_t vfo = RIG_VFO_CURR); - void setTs (shortfreq_t ts, vfo_t vfo = RIG_VFO_CURR); - shortfreq_t getTs (vfo_t vfo = RIG_VFO_CURR); - - void setCTCSS (tone_t tone, vfo_t vfo = RIG_VFO_CURR); - tone_t getCTCSS (vfo_t vfo = RIG_VFO_CURR); - void setDCS (tone_t code, vfo_t vfo = RIG_VFO_CURR); - tone_t getDCS (vfo_t vfo = RIG_VFO_CURR); - - void setCTCSSsql (tone_t tone, vfo_t vfo = RIG_VFO_CURR); - tone_t getCTCSSsql (vfo_t vfo = RIG_VFO_CURR); - void setDCSsql (tone_t tone, vfo_t vfo = RIG_VFO_CURR); - tone_t getDCSsql (vfo_t vfo = RIG_VFO_CURR); - - - unsigned int power2mW (float power, freq_t freq, rmode_t mode); - float mW2power (unsigned int mwpower, freq_t freq, rmode_t mode); - void setTrn (int trn); - int getTrn (void); - void setBank (int bank, vfo_t vfo = RIG_VFO_CURR); - void setMem (int ch, vfo_t vfo = RIG_VFO_CURR); - int getMem (vfo_t vfo = RIG_VFO_CURR); - - void setChannel (const channel_t *chan); - void getChannel (channel_t *chan); - - void setPowerStat (powerstat_t status); - powerstat_t getPowerStat (void); - rmode_t RngRxModes (freq_t freq); - rmode_t RngTxModes (freq_t freq); - - void setSplitFreq (freq_t tx_freq, vfo_t vfo = RIG_VFO_CURR); - freq_t getSplitFreq (vfo_t vfo = RIG_VFO_CURR); - void setSplitMode(rmode_t, pbwidth_t width = RIG_PASSBAND_NORMAL, vfo_t vfo = RIG_VFO_CURR); - rmode_t getSplitMode(pbwidth_t&, vfo_t vfo = RIG_VFO_CURR); - void setSplitVFO(split_t split, vfo_t vfo = RIG_VFO_CURR, vfo_t tx_vfo = RIG_VFO_CURR); - split_t getSplitVFO(vfo_t &tx_vfo, vfo_t vfo = RIG_VFO_CURR); - - void setRit (shortfreq_t rit, vfo_t vfo = RIG_VFO_CURR); - shortfreq_t getRit (vfo_t vfo = RIG_VFO_CURR); - void setXit (shortfreq_t xit, vfo_t vfo = RIG_VFO_CURR); - shortfreq_t getXit (vfo_t vfo = RIG_VFO_CURR); - - void setAnt (ant_t ant, vfo_t vfo = RIG_VFO_CURR); - ant_t getAnt (vfo_t vfo = RIG_VFO_CURR); - - void sendDtmf (const char *digits, vfo_t vfo = RIG_VFO_CURR); - int recvDtmf (char *digits, vfo_t vfo = RIG_VFO_CURR); - void sendMorse (const char *msg, vfo_t vfo = RIG_VFO_CURR); - - - shortfreq_t getResolution (rmode_t mode); - void reset (reset_t reset); // callbacks available in your derived object virtual int FreqEvent(vfo_t, freq_t, rig_ptr_t) const { @@ -276,4 +178,5 @@ inline void THROW(const RigException *e) { #define THROWS(s) + #endif // _RIGCLASS_H