more work on C++ bindings

git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@560 7ae35d74-ebe9-4afe-98af-79ac388436b8
Hamlib-1.1.2
Stéphane Fillod, F8CFE 2001-06-18 20:17:20 +00:00
rodzic 27436c6283
commit cfdf0276ae
3 zmienionych plików z 231 dodań i 39 usunięć

Wyświetl plik

@ -5,7 +5,7 @@
* will be used for obtaining rig capabilities. C++ bindings.
*
*
* $Id: rigclass.cc,v 1.1 2001-06-15 06:56:10 f4cfe Exp $
* $Id: rigclass.cc,v 1.2 2001-06-18 20:17:20 f4cfe Exp $
*
*
* This program is free software; you can redistribute it and/or
@ -154,6 +154,9 @@ 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;
}
@ -162,10 +165,37 @@ 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;
}
setting_t Rig::hasGetLevel (setting_t level)
{
@ -176,7 +206,8 @@ setting_t Rig::hasSetLevel (setting_t level)
return rig_has_set_level(theRig, level);
}
const char *Rig::getInfo (void) {
const char *Rig::getInfo (void)
{
return rig_get_info(theRig);
}
@ -195,3 +226,152 @@ pbwidth_t Rig::passbandWide (rmode_t mode)
return rig_passband_wide(theRig, mode);
}
void Rig::setRptrShift (rptr_shift_t rptr_shift, vfo_t vfo = RIG_VFO_CURR)
{
CHECK_RIG( rig_set_rptr_shift(theRig, vfo, rptr_shift) );
}
rptr_shift_t Rig::getRptrShift (vfo_t vfo = RIG_VFO_CURR)
{
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 = RIG_VFO_CURR)
{
CHECK_RIG( rig_set_rptr_offs(theRig, vfo, rptr_offs) );
}
shortfreq_t Rig::getRptrOffs (vfo_t vfo = RIG_VFO_CURR)
{
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 = RIG_VFO_CURR)
{
CHECK_RIG( rig_set_ts(theRig, vfo, ts) );
}
shortfreq_t Rig::getTs (vfo_t vfo = RIG_VFO_CURR)
{
shortfreq_t ts;
CHECK_RIG( rig_get_ts(theRig, vfo, &ts) );
return ts;
}
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) );
}
bool Rig::getFunc (setting_t func, vfo_t vfo = RIG_VFO_CURR)
{
int status;
CHECK_RIG( rig_get_func(theRig, vfo, func, &status) );
return status ? true : false;
}
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, vfo_t vfo = RIG_VFO_CURR)
{
CHECK_RIG( rig_set_trn(theRig, vfo, trn) );
}
int Rig::getTrn (vfo_t vfo = RIG_VFO_CURR)
{
int trn;
CHECK_RIG( rig_get_trn(theRig, vfo, &trn) );
return trn;
}
void Rig::setBank (int bank, vfo_t vfo = RIG_VFO_CURR)
{
CHECK_RIG( rig_set_ts(theRig, vfo, bank) );
}
void Rig::setMem (int ch, vfo_t vfo = RIG_VFO_CURR)
{
CHECK_RIG( rig_set_mem(theRig, vfo, ch) );
}
int Rig::getMem (vfo_t vfo = RIG_VFO_CURR)
{
int mem;
CHECK_RIG( rig_get_mem(theRig, vfo, &mem) );
return mem;
}
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;
}

Wyświetl plik

@ -5,7 +5,7 @@
* will be used for obtaining rig capabilities. C++ version.
*
*
* $Id: rigclass.h,v 1.1 2001-06-15 06:58:12 f4cfe Exp $
* $Id: rigclass.h,v 1.2 2001-06-18 20:17:20 f4cfe Exp $
*
*
* This program is free software; you can redistribute it and/or
@ -65,6 +65,8 @@ public:
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);
setting_t hasGetLevel (setting_t level);
setting_t hasSetLevel (setting_t level);
@ -73,6 +75,31 @@ public:
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 setFunc (setting_t func, bool status, vfo_t vfo = RIG_VFO_CURR);
bool getFunc (setting_t func, 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, vfo_t vfo = RIG_VFO_CURR);
int getTrn (vfo_t vfo = RIG_VFO_CURR);
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 setPowerStat (powerstat_t status);
powerstat_t getPowerStat (void);
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 {
return RIG_OK;
@ -94,13 +121,9 @@ public:
};
#if 0
extern HAMLIB_EXPORT(int) rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift));
extern HAMLIB_EXPORT(int) rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift));
extern HAMLIB_EXPORT(int) rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t rptr_offs));
extern HAMLIB_EXPORT(int) rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs));
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));
@ -123,13 +146,7 @@ extern HAMLIB_EXPORT(int) rig_get_rit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortf
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));
extern HAMLIB_EXPORT(int) rig_set_ts HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t ts));
extern HAMLIB_EXPORT(int) rig_get_ts HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *ts));
extern HAMLIB_EXPORT(int) rig_power2mW HAMLIB_PARAMS((RIG *rig, unsigned int *mwpower, float power, freq_t freq, rmode_t mode));
extern HAMLIB_EXPORT(int) rig_mW2power HAMLIB_PARAMS((RIG *rig, float *power, unsigned int mwpower, freq_t freq, rmode_t mode));
extern HAMLIB_EXPORT(shortfreq_t) rig_get_resolution HAMLIB_PARAMS((RIG *rig, rmode_t mode));
#define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s))
@ -137,11 +154,6 @@ extern HAMLIB_EXPORT(shortfreq_t) rig_get_resolution HAMLIB_PARAMS((RIG *rig, rm
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_powerstat HAMLIB_PARAMS((RIG *rig, powerstat_t status));
extern HAMLIB_EXPORT(int) rig_get_powerstat HAMLIB_PARAMS((RIG *rig, powerstat_t *status));
extern HAMLIB_EXPORT(int) rig_reset HAMLIB_PARAMS((RIG *rig, reset_t reset)); /* dangerous! */
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));
@ -149,19 +161,10 @@ extern HAMLIB_EXPORT(int) rig_get_ant HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ant_t
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(setting_t) rig_has_get_func HAMLIB_PARAMS((RIG *rig, setting_t func));
extern HAMLIB_EXPORT(setting_t) rig_has_set_func HAMLIB_PARAMS((RIG *rig, setting_t func));
extern HAMLIB_EXPORT(int) rig_set_func HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t func, int status));
extern HAMLIB_EXPORT(int) rig_get_func HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t func, int *status));
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_set_bank HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int bank));
extern HAMLIB_EXPORT(int) rig_set_mem HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int ch));
extern HAMLIB_EXPORT(int) rig_get_mem HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int *ch));
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));
@ -170,8 +173,6 @@ extern HAMLIB_EXPORT(int) rig_save_channel HAMLIB_PARAMS((RIG *rig, channel_t *c
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));
extern HAMLIB_EXPORT(int) rig_set_trn HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int trn));
extern HAMLIB_EXPORT(int) rig_get_trn HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int *trn));
#endif
@ -222,6 +223,11 @@ extern "C" {
#include <errno.h>
}
#include <iostream.h>
#if !(defined(__GNUG__)||defined(__SUNPRO_CC))
extern "C" void exit(int);
#endif
// Forward Declarations
class HAMLIB_IMPEXP RigException
@ -242,16 +248,14 @@ public:
: message(msg), errorno (-RIG_EINTERNAL)
{};
void print() const {
cerr << "Rig exception: " << message << endl;
}
virtual const char *classname() const {
return "Rig";
}
};
#if !(defined(__GNUG__)||defined(__SUNPRO_CC))
# include <iostream.h>
extern "C" void exit(int);
#endif
inline void THROW(const RigException *e) {
#if defined(__GNUG__)
# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8))

Wyświetl plik

@ -3,15 +3,23 @@
* Hamlib sample C++ program
*/
#include <iostream.h>
#include <hamlib/rigclass.h>
int main(int argc, char* argv[])
{
Rig myRig = Rig(RIG_MODEL_DUMMY);
myRig.open();
myRig.setFreq(MHz(144));
myRig.close();
try {
myRig.open();
myRig.setFreq(MHz(144));
cout << myRig.getLevelI(RIG_LEVEL_STRENGTH) << "dB" << endl;
myRig.close();
}
catch (const RigException &Ex) {
Ex.print();
return 1;
}
return 0;
}