diff --git a/c++/rigclass.cc b/c++/rigclass.cc index b7d846786..c6ed6f217 100644 --- a/c++/rigclass.cc +++ b/c++/rigclass.cc @@ -11,7 +11,7 @@ * Hamlib C++ bindings - main file * Copyright (c) 2001 by Stephane Fillod * - * $Id: rigclass.cc,v 1.6 2001-12-20 07:46:12 fillods Exp $ + * $Id: rigclass.cc,v 1.7 2001-12-27 21:50:14 fillods Exp $ * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as @@ -79,6 +79,30 @@ void Rig::close(void) { CHECK_RIG( rig_close(theRig) ); } +void Rig::setConf(token_t token, const char *val) +{ + CHECK_RIG( rig_set_conf(theRig, token, val) ); +} +void Rig::setConf(const char *name, const char *val) +{ + CHECK_RIG( rig_set_conf(theRig, tokenLookup(name), val) ); +} + +void Rig::getConf(token_t token, char *val) +{ + CHECK_RIG( rig_get_conf(theRig, token, val) ); +} +void Rig::getConf(const char *name, char *val) +{ + CHECK_RIG( rig_get_conf(theRig, tokenLookup(name), val) ); +} + +token_t Rig::tokenLookup(const char *name) +{ + return rig_token_lookup(theRig, name); +} + + void Rig::setFreq(freq_t freq, vfo_t vfo) { CHECK_RIG( rig_set_freq(theRig, vfo, freq) ); } @@ -202,6 +226,67 @@ float Rig::getLevelF(setting_t level, vfo_t vfo) 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) ); } @@ -239,13 +324,22 @@ split_t Rig::getSplit(vfo_t vfo) { return split; } -setting_t Rig::hasGetLevel (setting_t level) +bool Rig::hasGetLevel (setting_t level) { - return rig_has_get_level(theRig, level); + return rig_has_get_level(theRig, level) == level; } -setting_t Rig::hasSetLevel (setting_t level) +bool Rig::hasSetLevel (setting_t level) { - return rig_has_set_level(theRig, 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) @@ -310,6 +404,63 @@ shortfreq_t Rig::getTs (vfo_t vfo = RIG_VFO_CURR) return ts; } +void Rig::setCTCSS (tone_t tone, vfo_t vfo = RIG_VFO_CURR) +{ + CHECK_RIG( rig_set_ctcss_tone(theRig, vfo, tone) ); +} + +tone_t Rig::getCTCSS (vfo_t vfo = RIG_VFO_CURR) +{ + tone_t tone; + + CHECK_RIG( rig_get_ctcss_tone(theRig, vfo, &tone) ); + + return tone; +} + +void Rig::setDCS (tone_t code, vfo_t vfo = RIG_VFO_CURR) +{ + CHECK_RIG( rig_set_dcs_code(theRig, vfo, code) ); +} + +tone_t Rig::getDCS (vfo_t vfo = RIG_VFO_CURR) +{ + tone_t code; + + CHECK_RIG( rig_get_dcs_code(theRig, vfo, &code) ); + + return code; +} + +void Rig::setCTCSSsql (tone_t tone, vfo_t vfo = RIG_VFO_CURR) +{ + CHECK_RIG( rig_set_ctcss_sql(theRig, vfo, tone) ); +} + +tone_t Rig::getCTCSSsql (vfo_t vfo = RIG_VFO_CURR) +{ + tone_t tone; + + CHECK_RIG( rig_get_ctcss_sql(theRig, vfo, &tone) ); + + return tone; +} + +void Rig::setDCSsql (tone_t code, vfo_t vfo = RIG_VFO_CURR) +{ + CHECK_RIG( rig_set_dcs_sql(theRig, vfo, code) ); +} + +tone_t Rig::getDCSsql (vfo_t vfo = RIG_VFO_CURR) +{ + 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 = RIG_VFO_CURR) { CHECK_RIG( rig_set_func(theRig, vfo, func, status? 1:0) ); @@ -324,6 +475,87 @@ bool Rig::getFunc (setting_t func, vfo_t vfo = RIG_VFO_CURR) 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) @@ -402,6 +634,26 @@ int Rig::getMem (vfo_t vfo = RIG_VFO_CURR) return mem; } +void Rig::saveChannel (channel_t *chan) +{ + CHECK_RIG( rig_save_channel(theRig, chan) ); +} + +void Rig::restoreChannel (const channel_t *chan) +{ + CHECK_RIG( rig_restore_channel(theRig, chan) ); +} + +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) { diff --git a/include/hamlib/rigclass.h b/include/hamlib/rigclass.h index c5eb2cae3..05f003b93 100644 --- a/include/hamlib/rigclass.h +++ b/include/hamlib/rigclass.h @@ -2,7 +2,7 @@ * Hamlib C++ bindings - API header * Copyright (c) 2001 by Stephane Fillod * - * $Id: rigclass.h,v 1.7 2001-12-20 07:46:12 fillods Exp $ + * $Id: rigclass.h,v 1.8 2001-12-27 21:50:14 fillods Exp $ * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as @@ -45,6 +45,12 @@ public: // This method close the communication port to the rig void close(void); + void setConf(token_t token, const char *val); + void setConf(const char *name, const char *val); + void getConf(token_t token, char *val); + void getConf(const char *name, char *val); + token_t tokenLookup(const char *name); + void setFreq(freq_t freq, vfo_t vfo = RIG_VFO_CURR); freq_t getFreq(vfo_t vfo = RIG_VFO_CURR); void setMode(rmode_t, pbwidth_t width = RIG_PASSBAND_NORMAL, vfo_t vfo = RIG_VFO_CURR); @@ -62,8 +68,28 @@ public: 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); - setting_t hasGetLevel (setting_t level); - setting_t hasSetLevel (setting_t level); + 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); @@ -76,8 +102,17 @@ public: 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 setFunc (setting_t func, bool status, vfo_t vfo = RIG_VFO_CURR); - bool getFunc (setting_t func, 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); @@ -86,6 +121,12 @@ public: 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 restoreChannel (const channel_t *chan); + void saveChannel (channel_t *chan); + 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); @@ -98,11 +139,21 @@ public: void setSplit(split_t split, vfo_t vfo = RIG_VFO_CURR); split_t getSplit(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); - bool hasGetFunc (setting_t func); - bool hasSetFunc (setting_t func); // callbacks available in your derived object virtual int FreqEvent(vfo_t, freq_t) const { @@ -126,55 +177,6 @@ public: - -#if 0 -extern HAMLIB_EXPORT(int) rig_set_ctcss HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t tone)); -extern HAMLIB_EXPORT(int) rig_get_ctcss HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *tone)); -extern HAMLIB_EXPORT(int) rig_set_dcs HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t code)); -extern HAMLIB_EXPORT(int) rig_get_dcs HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *code)); - -extern HAMLIB_EXPORT(int) rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t tone)); -extern HAMLIB_EXPORT(int) rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *tone)); -extern HAMLIB_EXPORT(int) rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t code)); -extern HAMLIB_EXPORT(int) rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *code)); - - -extern HAMLIB_EXPORT(int) rig_set_rit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t rit)); -extern HAMLIB_EXPORT(int) rig_get_rit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *rit)); -extern HAMLIB_EXPORT(int) rig_set_xit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t xit)); -extern HAMLIB_EXPORT(int) rig_get_xit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *xit)); - - - - -#define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s)) - -extern HAMLIB_EXPORT(int) rig_set_parm HAMLIB_PARAMS((RIG *rig, setting_t parm, value_t val)); -extern HAMLIB_EXPORT(int) rig_get_parm HAMLIB_PARAMS((RIG *rig, setting_t parm, value_t *val)); - -extern HAMLIB_EXPORT(int) rig_set_ant HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ant_t ant)); /* antenna */ -extern HAMLIB_EXPORT(int) rig_get_ant HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ant_t *ant)); - - -extern HAMLIB_EXPORT(setting_t) rig_has_get_parm HAMLIB_PARAMS((RIG *rig, setting_t parm)); -extern HAMLIB_EXPORT(setting_t) rig_has_set_parm HAMLIB_PARAMS((RIG *rig, setting_t parm)); - -extern HAMLIB_EXPORT(int) rig_send_dtmf HAMLIB_PARAMS((RIG *rig, vfo_t vfo, const char *digits)); -extern HAMLIB_EXPORT(int) rig_recv_dtmf HAMLIB_PARAMS((RIG *rig, vfo_t vfo, char *digits, int *length)); -extern HAMLIB_EXPORT(int) rig_send_morse HAMLIB_PARAMS((RIG *rig, vfo_t vfo, const char *msg)); - -extern HAMLIB_EXPORT(int) rig_vfo_op HAMLIB_PARAMS((RIG *rig, vfo_t vfo, vfo_op_t op)); -extern HAMLIB_EXPORT(vfo_op_t) rig_has_vfo_op HAMLIB_PARAMS((RIG *rig, vfo_op_t op)); - -extern HAMLIB_EXPORT(int) rig_restore_channel HAMLIB_PARAMS((RIG *rig, const channel_t *chan)); /* curr VFO */ -extern HAMLIB_EXPORT(int) rig_save_channel HAMLIB_PARAMS((RIG *rig, channel_t *chan)); -extern HAMLIB_EXPORT(int) rig_set_channel HAMLIB_PARAMS((RIG *rig, const channel_t *chan)); /* mem */ -extern HAMLIB_EXPORT(int) rig_get_channel HAMLIB_PARAMS((RIG *rig, channel_t *chan)); - - -#endif - - #ifdef __GNUG__ # if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8)) # if HAVE_TYPEINFO