kopia lustrzana https://github.com/Hamlib/Hamlib
more work on swig bindings, nearly every calls supported, some chan wrapping missing, and also lists
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1200 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.1.4
rodzic
683ba1c248
commit
03160aa72f
|
@ -2,12 +2,14 @@
|
|||
# hamlibtcl, hamlibperl, etc. are temproray modules names
|
||||
# They will be generated in separate subdirs in the future
|
||||
|
||||
# more information on swig at http://www.swig.org
|
||||
|
||||
#lib_LTLIBRARIES = @BINDING_LA@
|
||||
#EXTRA_LTLIBRARIES = hamlibperl.la hamlibtcl.la
|
||||
lib_LTLIBRARIES = hamlibperl.la hamlibtcl.la
|
||||
|
||||
INCLUDES = @INCLUDES@ -Dbool=char -I/usr/lib/perl/5.6.1/CORE -I@TCL_SRC_DIR@/generic
|
||||
|
||||
INCLUDES = @INCLUDES@ -Dbool=char -I@PERL_INC_DIR@ -I@TCL_SRC_DIR@/generic
|
||||
|
||||
# Perl binding
|
||||
#hamlibperl_la_INCLUDES = @INCLUDES@ -Dbool=char -I/usr/lib/perl/5.6.1/CORE
|
||||
|
@ -30,7 +32,6 @@ hamlibtcl_la_LIBADD = ../src/libhamlib.la
|
|||
hamlibtcl_wrap.c: hamlib.swg
|
||||
swig -tcl @INCLUDES@ -o $@ $<
|
||||
|
||||
|
||||
rig.swg: ../include/hamlib/rig.h ../include/hamlib/riglist.h
|
||||
rotator.swg: ../include/hamlib/rotator.h ../include/hamlib/rotlist.h
|
||||
|
||||
|
@ -39,3 +40,4 @@ hamlib.swg: ignore.swg rig.swg rotator.swg
|
|||
EXTRA_DIST = hamlib.swg ignore.swg rig.swg rotator.swg
|
||||
|
||||
CLEANFILES = hamlibperl_wrap.c hamlib.pm hamlibtcl_wrap.c
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Hamlib bindings - swig interface file
|
||||
* Copyright (c) 2001,2002 by Stephane Fillod
|
||||
*
|
||||
* $Id: hamlib.swg,v 1.2 2002-09-16 06:50:13 fillods Exp $
|
||||
* $Id: hamlib.swg,v 1.3 2002-10-07 21:44:51 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
|
||||
|
@ -30,6 +30,9 @@
|
|||
|
||||
#include <hamlib/rig.h>
|
||||
#include <hamlib/rotator.h>
|
||||
#include "misc.h"
|
||||
|
||||
#include <limits.h>
|
||||
%}
|
||||
|
||||
/*
|
||||
|
|
|
@ -46,3 +46,106 @@
|
|||
%ignore RIG_BACKEND_RPC;
|
||||
%ignore RIG_GNURADIO;
|
||||
%ignore RIG_BACKEND_GNURADIO;
|
||||
|
||||
%ignore rig_open;
|
||||
%ignore rig_set_freq;
|
||||
%ignore rig_get_freq;
|
||||
%ignore rig_set_mode;
|
||||
%ignore rig_get_mode;
|
||||
%ignore rig_set_vfo;
|
||||
%ignore rig_get_vfo;
|
||||
%ignore rig_set_ptt;
|
||||
%ignore rig_get_ptt;
|
||||
%ignore rig_get_dcd;
|
||||
%ignore rig_set_rptr_shift;
|
||||
%ignore rig_get_rptr_shift;
|
||||
%ignore rig_set_rptr_offs;
|
||||
%ignore rig_get_rptr_offs;
|
||||
%ignore rig_set_ctcss_tone;
|
||||
%ignore rig_get_ctcss_tone;
|
||||
%ignore rig_set_dcs_code;
|
||||
%ignore rig_get_dcs_code;
|
||||
%ignore rig_set_ctcss_sql;
|
||||
%ignore rig_get_ctcss_sql;
|
||||
%ignore rig_set_dcs_sql;
|
||||
%ignore rig_get_dcs_sql;
|
||||
%ignore rig_set_split_freq;
|
||||
%ignore rig_get_split_freq;
|
||||
%ignore rig_set_split_mode;
|
||||
%ignore rig_get_split_mode;
|
||||
%ignore rig_set_split;
|
||||
%ignore rig_get_split;
|
||||
%ignore rig_set_rit;
|
||||
%ignore rig_get_rit;
|
||||
%ignore rig_set_xit;
|
||||
%ignore rig_get_xit;
|
||||
%ignore rig_set_ts;
|
||||
%ignore rig_get_ts;
|
||||
%ignore rig_power2mW;
|
||||
%ignore rig_mW2power;
|
||||
%ignore rig_get_resolution;
|
||||
%ignore rig_set_level;
|
||||
%ignore rig_get_level;
|
||||
%ignore rig_set_parm;
|
||||
%ignore rig_get_parm;
|
||||
%ignore rig_set_conf;
|
||||
%ignore rig_get_conf;
|
||||
%ignore rig_set_powerstat;
|
||||
%ignore rig_get_powerstat;
|
||||
%ignore rig_reset;
|
||||
%ignore rig_set_ext_level;
|
||||
%ignore rig_get_ext_level;
|
||||
%ignore rig_set_ext_parm;
|
||||
%ignore rig_get_ext_parm;
|
||||
%ignore rig_ext_level_foreach;
|
||||
%ignore rig_ext_parm_foreach;
|
||||
%ignore rig_token_lookup;
|
||||
%ignore rig_close;
|
||||
%ignore rig_cleanup;
|
||||
%ignore rig_probe;
|
||||
%ignore rig_set_ant;
|
||||
%ignore rig_get_ant;
|
||||
%ignore rig_has_get_level;
|
||||
%ignore rig_has_set_level;
|
||||
%ignore rig_has_get_parm;
|
||||
%ignore rig_has_set_parm;
|
||||
%ignore rig_has_get_func;
|
||||
%ignore rig_has_set_func;
|
||||
%ignore rig_set_func;
|
||||
%ignore rig_get_func;
|
||||
%ignore rig_send_dtmf;
|
||||
%ignore rig_recv_dtmf;
|
||||
%ignore rig_send_morse;
|
||||
%ignore rig_set_bank;
|
||||
%ignore rig_set_mem;
|
||||
%ignore rig_get_mem;
|
||||
%ignore rig_vfo_op;
|
||||
%ignore rig_has_vfo_op;
|
||||
%ignore rig_scan;
|
||||
%ignore rig_has_scan;
|
||||
%ignore rig_set_channel;
|
||||
%ignore rig_get_channel;
|
||||
%ignore rig_set_trn;
|
||||
%ignore rig_get_trn;
|
||||
%ignore rig_set_freq_callback;
|
||||
%ignore rig_set_mode_callback;
|
||||
%ignore rig_set_vfo_callback;
|
||||
%ignore rig_set_ptt_callback;
|
||||
%ignore rig_set_dcd_callback;
|
||||
%ignore rig_get_info;
|
||||
%ignore rig_passband_normal;
|
||||
%ignore rig_passband_narrow;
|
||||
%ignore rig_passband_wide;
|
||||
|
||||
%ignore rot_open;
|
||||
%ignore rot_close;
|
||||
%ignore rot_cleanup;
|
||||
%ignore rot_set_conf;
|
||||
%ignore rot_get_conf;
|
||||
%ignore rot_set_position;
|
||||
%ignore rot_get_position;
|
||||
%ignore rot_stop;
|
||||
%ignore rot_park;
|
||||
%ignore rot_reset;
|
||||
%ignore rot_move;
|
||||
%ignore rot_get_info;
|
||||
|
|
|
@ -6,14 +6,60 @@ use hamlib;
|
|||
print "Version: $hamlib::hamlib_version\n";
|
||||
print "FM: $hamlib::RIG_MODE_FM\n";
|
||||
|
||||
hamlib::rig_set_debug(5);
|
||||
hamlib::rig_set_debug($hamlib::RIG_DEBUG_TRACE);
|
||||
|
||||
$rig = new hamlib::Rig($hamlib::RIG_MODEL_DUMMY);
|
||||
$rig->open();
|
||||
|
||||
$rpath = $rig->get_conf("rig_pathname");
|
||||
$region = $rig->get_conf(1073741944);
|
||||
print "get_conf: path=\"$rpath\", ITU region=$region\n";
|
||||
|
||||
|
||||
$rig->set_freq(12000000, $hamlib::RIG_VFO_A);
|
||||
|
||||
$f = $rig->get_freq();
|
||||
print "freq: $f\n";
|
||||
|
||||
($mode, $width) = $rig->get_mode();
|
||||
|
||||
print "mode: $mode, width: $width\n";
|
||||
|
||||
print "ITU region: $rig->{state}->{itu_region}\n";
|
||||
print "Copyright: $rig->{caps}->{copyright}\n";
|
||||
$inf = $rig->get_info();
|
||||
|
||||
print "get_info: $inf\n";
|
||||
|
||||
$rig->set_level("VOX", 1);
|
||||
$lvl = $rig->get_level_i("VOX");
|
||||
print "level: $lvl\n";
|
||||
$rig->set_level($hamlib::RIG_LEVEL_VOX, 5);
|
||||
$lvl = $rig->get_level_i($hamlib::RIG_LEVEL_VOX);
|
||||
print "level: $lvl\n";
|
||||
|
||||
|
||||
|
||||
$chan = new hamlib::Chan($hamlib::RIG_VFO_A);
|
||||
|
||||
$rig->get_channel(\$chan);
|
||||
|
||||
print "VFO: $chan->{fields}->{vfo}, $chan->{fields}->{freq}\n";
|
||||
|
||||
$rig->close();
|
||||
|
||||
($long1, $lat1) = locator2longlat("IN98EC");
|
||||
($long2, $lat2) = locator2longlat("DM33DX");
|
||||
$loc1 = longlat2locator($long1, $lat1);
|
||||
$loc2 = longlat2locator($long2, $lat2);
|
||||
print "Loc1: $loc1\n";
|
||||
print "Loc2: $loc2\n";
|
||||
|
||||
($dist, $az) = qrb($long1, $lat1, $long2, $lat2);
|
||||
$longpath = distance_long_path($dist);
|
||||
print "Distance: $dist km, long path: $longpath\n";
|
||||
($deg, $min, $sec) = dec2dms($az);
|
||||
$az2 = dms2dec($deg, $min, $sec);
|
||||
print "Bearing: $az, $deg° $min' $sec\", recoded: $az2\n"
|
||||
|
||||
|
||||
|
|
336
bindings/rig.swg
336
bindings/rig.swg
|
@ -2,7 +2,7 @@
|
|||
* Hamlib bindings - Rig interface
|
||||
* Copyright (c) 2001,2002 by Stephane Fillod
|
||||
*
|
||||
* $Id: rig.swg,v 1.2 2002-09-16 06:50:13 fillods Exp $
|
||||
* $Id: rig.swg,v 1.3 2002-10-07 21:44:51 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
|
||||
|
@ -32,24 +32,15 @@ typedef struct Rig {
|
|||
|
||||
%}
|
||||
|
||||
#define MAX_STATIC 256
|
||||
|
||||
/*
|
||||
* decalre wrapper method with one argument besides RIG* (no target vfo)
|
||||
* decalre wrapper method with one argument besides RIG* and optional no target vfo
|
||||
*/
|
||||
#define METHOD1(f, t1) void f (t1 _##t1) \
|
||||
{ self->error_status = rig_##f(self->rig, _##t1); }
|
||||
#define METHOD2(f, t1, t2) void f (t1 _##t1##_1, t2 _##t2##_2) \
|
||||
{ self->error_status = rig_##f(self->rig, _##t1##_1, _##t2##_2); }
|
||||
/*
|
||||
* decalre wrapper method with one argument besides RIG* and vfo
|
||||
*/
|
||||
#define METHOD1V(f, t1) void f (t1 _##t1, vfo_t vfo = RIG_VFO_CURR) \
|
||||
{ self->error_status = rig_##f(self->rig, vfo, _##t1); }
|
||||
/*
|
||||
* decalre wrapper method with two arguments besides RIG* and vfo
|
||||
*/
|
||||
#define METHOD2V(f, t1, t2) void f (t1 _##t1##_1, t2 _##t2##_2, vfo_t vfo = RIG_VFO_CURR) \
|
||||
{ self->error_status = rig_##f(self->rig, vfo, _##t1##_1, _##t2##_2); }
|
||||
#define METHOD1(f, t1) void f (t1 _##t1 _VFO_DECL) \
|
||||
{ self->error_status = rig_##f(self->rig _VFO_ARG, _##t1); }
|
||||
#define METHOD2(f, t1, t2) void f (t1 _##t1##_1, t2 _##t2##_2 _VFO_DECL) \
|
||||
{ self->error_status = rig_##f(self->rig _VFO_ARG, _##t1##_1, _##t2##_2); }
|
||||
|
||||
/*
|
||||
* decalre wrapper method with one output argument besides RIG* (no target vfo)
|
||||
|
@ -63,6 +54,142 @@ typedef struct Rig {
|
|||
#define METHOD1VGET(f, t1) t1 f (vfo_t vfo = RIG_VFO_CURR) \
|
||||
{ t1 _##t1; self->error_status = rig_##f(self->rig, vfo, &_##t1); return _##t1; }
|
||||
|
||||
|
||||
#define METHODSIMPLESET(f, t1, fld, chk) void set_##f (setting_t stg, t1 fld _VFO_DECL) \
|
||||
{ value_t val; if (chk (stg)) { \
|
||||
self->error_status = -RIG_EINVAL; /* invalid type */ \
|
||||
return; \
|
||||
} \
|
||||
val.fld = fld; \
|
||||
self->error_status = rig_set_##f(self->rig _VFO_ARG , stg, val); \
|
||||
}
|
||||
|
||||
/*
|
||||
* RIG_CONF_ extparm's type:
|
||||
* NUMERIC: val.f
|
||||
* COMBO: val.i, starting from 0
|
||||
* STRING: val.s
|
||||
* CHECKBUTTON: val.i 0/1
|
||||
*/
|
||||
|
||||
#define METHODSUPERSET(f, t1, fld, chk) void set_##f (const char *name, t1 fld _VFO_DECL) \
|
||||
{ setting_t stg; value_t val; \
|
||||
stg = parse_##f(name); \
|
||||
if (!rig_has_set_##f(self->rig, stg)) { \
|
||||
const struct confparams *cfp; \
|
||||
cfp = rig_ext_lookup(self->rig, name); \
|
||||
if (!cfp) { \
|
||||
self->error_status = -RIG_EINVAL; /* no such parameter */ \
|
||||
return; \
|
||||
} \
|
||||
switch (cfp->type) { \
|
||||
case RIG_CONF_NUMERIC: \
|
||||
val.fld = fld; \
|
||||
break; \
|
||||
case RIG_CONF_CHECKBUTTON: \
|
||||
case RIG_CONF_COMBO: \
|
||||
val.i = (int)fld; \
|
||||
break; \
|
||||
case RIG_CONF_STRING: \
|
||||
self->error_status = -RIG_EINVAL; /* invalid type */ \
|
||||
return; \
|
||||
default: \
|
||||
self->error_status = -RIG_ECONF; \
|
||||
return; \
|
||||
} \
|
||||
self->error_status = rig_set_ext_##f(self->rig _VFO_ARG, cfp->token, val); \
|
||||
return; \
|
||||
} \
|
||||
if (chk (stg)) { \
|
||||
self->error_status = -RIG_EINVAL; /* invalid type */ \
|
||||
return; \
|
||||
} \
|
||||
val.fld = fld; \
|
||||
self->error_status = rig_set_##f(self->rig _VFO_ARG , stg, val); \
|
||||
}
|
||||
|
||||
#define METHODSTRSET(f) void set_##f (const char *name, const char *s _VFO_DECL) \
|
||||
{ value_t val; /* only ext_level/parm's can have string values */ \
|
||||
const struct confparams *cfp; \
|
||||
cfp = rig_ext_lookup(self->rig, name); \
|
||||
if (!cfp) { \
|
||||
self->error_status = -RIG_EINVAL; /* no such parameter */ \
|
||||
return; \
|
||||
} \
|
||||
if (cfp->type != RIG_CONF_STRING) { \
|
||||
self->error_status = -RIG_EINVAL; /* invalid type */ \
|
||||
return; \
|
||||
} \
|
||||
val.cs = s; \
|
||||
self->error_status = rig_set_ext_##f(self->rig _VFO_ARG, cfp->token, val); \
|
||||
}
|
||||
|
||||
#define METHODSIMPLEGET(f, t1, fld, chk) t1 get_##f##_##fld (setting_t stg _VFO_DECL) \
|
||||
{ value_t val; if (chk (stg)) { \
|
||||
self->error_status = -RIG_EINVAL; /* invalid type */ \
|
||||
return val.fld; /* undefined value */ \
|
||||
} \
|
||||
self->error_status = rig_get_##f(self->rig _VFO_ARG , stg, &val); \
|
||||
return val.fld; \
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define METHODSUPERGET(fct, t1, fld, chk) t1 get_##fct##_##fld(const char *name _VFO_DECL) \
|
||||
{ setting_t stg; value_t val; \
|
||||
stg = parse_##fct(name); \
|
||||
if (!rig_has_get_##fct(self->rig, stg)) { \
|
||||
const struct confparams *cfp; \
|
||||
cfp = rig_ext_lookup(self->rig, name); \
|
||||
if (!cfp) { \
|
||||
self->error_status = -RIG_EINVAL; /* no such parameter */ \
|
||||
return val.fld; /* undefined */ \
|
||||
} \
|
||||
if (cfp->type == RIG_CONF_STRING) { \
|
||||
self->error_status = -RIG_EINVAL; \
|
||||
return val.fld; /* undefined */ \
|
||||
} \
|
||||
self->error_status = rig_get_ext_##fct(self->rig _VFO_ARG, cfp->token, &val); \
|
||||
switch (cfp->type) { \
|
||||
case RIG_CONF_NUMERIC: \
|
||||
return (t1)val.f; \
|
||||
case RIG_CONF_CHECKBUTTON: \
|
||||
case RIG_CONF_COMBO: \
|
||||
return (t1)val.i; \
|
||||
default: \
|
||||
self->error_status = -RIG_ECONF; \
|
||||
return val.fld; /* undefined */ \
|
||||
} \
|
||||
} \
|
||||
if (chk (stg)) { \
|
||||
self->error_status = -RIG_EINVAL; /* invalid type */ \
|
||||
return val.fld; /* undefined */ \
|
||||
} \
|
||||
self->error_status = rig_get_##fct(self->rig _VFO_ARG , stg, &val); \
|
||||
return val.fld; \
|
||||
}
|
||||
|
||||
#define METHODSTRGET(f) const char * get_##f (const char *name _VFO_DECL) \
|
||||
{ static char s[MAX_STATIC]=""; value_t val; /* only ext_level/parm's can have string values */ \
|
||||
const struct confparams *cfp; \
|
||||
cfp = rig_ext_lookup(self->rig, name); \
|
||||
if (!cfp) { \
|
||||
self->error_status = -RIG_EINVAL; /* no such parameter */ \
|
||||
return ""; \
|
||||
} \
|
||||
if (cfp->type != RIG_CONF_STRING) { \
|
||||
self->error_status = -RIG_EINVAL; /* invalid type */ \
|
||||
return ""; \
|
||||
} \
|
||||
val.s = s; \
|
||||
self->error_status = rig_get_ext_##f(self->rig _VFO_ARG, cfp->token, &val); \
|
||||
return val.s; \
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Rig class alike
|
||||
*/
|
||||
%extend Rig {
|
||||
Rig(rig_model_t rig_model) {
|
||||
Rig *r;
|
||||
|
@ -103,27 +230,57 @@ typedef struct Rig {
|
|||
void close () {
|
||||
self->error_status = rig_close(self->rig);
|
||||
}
|
||||
/* set methods */
|
||||
METHOD1V(set_freq, freq_t)
|
||||
METHOD2V(set_mode, rmode_t, pbwidth_t)
|
||||
METHOD1(set_vfo, vfo_t)
|
||||
METHOD1V(set_ptt, ptt_t)
|
||||
METHOD1V(set_rptr_shift, rptr_shift_t)
|
||||
METHOD1V(set_rptr_offs, shortfreq_t)
|
||||
METHOD1V(set_ctcss_tone, tone_t)
|
||||
METHOD1V(set_dcs_code, tone_t)
|
||||
METHOD1V(set_ctcss_sql, tone_t)
|
||||
METHOD1V(set_dcs_sql, tone_t)
|
||||
METHOD1V(set_split_freq, freq_t)
|
||||
METHOD2V(set_split_mode, rmode_t, pbwidth_t)
|
||||
METHOD1V(set_split, split_t)
|
||||
METHOD1V(set_rit, shortfreq_t)
|
||||
METHOD1V(set_xit, shortfreq_t)
|
||||
METHOD1V(set_ts, shortfreq_t)
|
||||
METHOD1V(set_ant, ant_t)
|
||||
METHOD2V(set_func, setting_t, int)
|
||||
METHOD1V(set_bank, int)
|
||||
METHOD1V(set_mem, int)
|
||||
|
||||
/*
|
||||
* group all vfo, and non vfo apart
|
||||
*/
|
||||
#define _VFO_ARG ,vfo
|
||||
#define _VFO_DECL ,vfo_t vfo = RIG_VFO_CURR
|
||||
|
||||
METHOD1(set_freq, freq_t)
|
||||
METHOD2(set_mode, rmode_t, pbwidth_t)
|
||||
METHOD1(set_ptt, ptt_t)
|
||||
METHOD1(set_rptr_shift, rptr_shift_t)
|
||||
METHOD1(set_rptr_offs, shortfreq_t)
|
||||
METHOD1(set_ctcss_tone, tone_t)
|
||||
METHOD1(set_dcs_code, tone_t)
|
||||
METHOD1(set_ctcss_sql, tone_t)
|
||||
METHOD1(set_dcs_sql, tone_t)
|
||||
METHOD1(set_split_freq, freq_t)
|
||||
METHOD2(set_split_mode, rmode_t, pbwidth_t)
|
||||
METHOD1(set_split, split_t)
|
||||
METHOD1(set_rit, shortfreq_t)
|
||||
METHOD1(set_xit, shortfreq_t)
|
||||
METHOD1(set_ts, shortfreq_t)
|
||||
METHOD1(set_ant, ant_t)
|
||||
METHOD2(set_func, setting_t, int)
|
||||
METHOD1(set_bank, int)
|
||||
METHOD1(set_mem, int)
|
||||
METHOD1(send_dtmf, const_char_string)
|
||||
METHOD1(send_morse, const_char_string)
|
||||
METHOD1(vfo_op, vfo_op_t)
|
||||
METHOD2(scan, scan_t, int)
|
||||
METHODSIMPLESET(level, int, i, RIG_LEVEL_IS_FLOAT)
|
||||
METHODSIMPLESET(level, float, f, !RIG_LEVEL_IS_FLOAT)
|
||||
METHODSUPERSET(level, int, i, RIG_LEVEL_IS_FLOAT)
|
||||
METHODSUPERSET(level, float, f, !RIG_LEVEL_IS_FLOAT)
|
||||
METHODSTRSET(level)
|
||||
METHOD2(set_ext_level, token_t, value_t)
|
||||
|
||||
METHODSIMPLEGET(level, int, i, RIG_LEVEL_IS_FLOAT)
|
||||
METHODSIMPLEGET(level, float, f, !RIG_LEVEL_IS_FLOAT)
|
||||
METHODSUPERGET(level, int, i, RIG_LEVEL_IS_FLOAT)
|
||||
METHODSUPERGET(level, float, f, !RIG_LEVEL_IS_FLOAT)
|
||||
METHODSTRGET(level)
|
||||
|
||||
/*
|
||||
* these ones do not take a vfo arg
|
||||
*/
|
||||
#undef _VFO_ARG
|
||||
#undef _VFO_DECL
|
||||
#define _VFO_ARG
|
||||
#define _VFO_DECL
|
||||
METHOD1(set_vfo, vfo_t) /* particular case */
|
||||
METHOD1(set_powerstat, powerstat_t)
|
||||
METHOD1(set_channel, const_channel_t_p)
|
||||
METHOD1(set_trn, int)
|
||||
|
@ -131,10 +288,6 @@ typedef struct Rig {
|
|||
METHOD1(has_set_parm, setting_t)
|
||||
METHOD1(has_set_func, setting_t)
|
||||
METHOD1(reset, reset_t)
|
||||
METHOD1V(send_dtmf, const_char_string)
|
||||
METHOD1V(send_morse, const_char_string)
|
||||
METHOD1V(vfo_op, vfo_op_t)
|
||||
METHOD2V(scan, scan_t, int)
|
||||
METHOD1(has_scan, scan_t)
|
||||
METHOD1(has_vfo_op, vfo_op_t)
|
||||
METHOD1(passband_normal, rmode_t)
|
||||
|
@ -144,33 +297,36 @@ typedef struct Rig {
|
|||
METHOD1(ext_token_lookup, const_char_string) /* level & parm */
|
||||
METHOD1(token_lookup, const_char_string) /* conf */
|
||||
|
||||
void set_conf_s(const char *name, const char *val) {
|
||||
token_t tok = rig_token_lookup(self->rig, name);
|
||||
/* FIXME: token not found */
|
||||
self->error_status = rig_set_conf(self->rig, tok, val);
|
||||
}
|
||||
void set_ext_parm_s(const char *name, value_t val) {
|
||||
token_t tok = rig_ext_token_lookup(self->rig, name);
|
||||
/* FIXME: token not found */
|
||||
self->error_status = rig_set_ext_parm(self->rig, tok, val);
|
||||
}
|
||||
void set_ext_level_s(const char *name, value_t val, vfo_t vfo = RIG_VFO_CURR) {
|
||||
token_t tok = rig_ext_token_lookup(self->rig, name);
|
||||
/* FIXME: token not found */
|
||||
self->error_status = rig_set_ext_level(self->rig, vfo, tok, val);
|
||||
}
|
||||
|
||||
METHOD2(set_conf, token_t, const_char_string)
|
||||
METHOD2(set_ext_parm, token_t, value_t)
|
||||
METHOD2V(set_ext_level, token_t, value_t)
|
||||
|
||||
METHODSIMPLESET(parm, int, i, RIG_PARM_IS_FLOAT)
|
||||
METHODSIMPLESET(parm, float, f, !RIG_PARM_IS_FLOAT)
|
||||
METHODSUPERSET(parm, int, i, RIG_PARM_IS_FLOAT)
|
||||
METHODSUPERSET(parm, float, f, !RIG_PARM_IS_FLOAT)
|
||||
METHODSTRSET(parm)
|
||||
|
||||
METHODSIMPLEGET(parm, int, i, RIG_PARM_IS_FLOAT)
|
||||
METHODSIMPLEGET(parm, float, f, !RIG_PARM_IS_FLOAT)
|
||||
METHODSUPERGET(parm, int, i, RIG_PARM_IS_FLOAT)
|
||||
METHODSUPERGET(parm, float, f, !RIG_PARM_IS_FLOAT)
|
||||
METHODSTRGET(parm)
|
||||
|
||||
|
||||
/* TODO: get rid of value_t, use dynamic casting */
|
||||
METHOD2V(set_level, setting_t, value_t)
|
||||
METHOD2(set_parm, setting_t, value_t)
|
||||
void set_conf(const char *name, const char *val) {
|
||||
token_t tok = rig_token_lookup(self->rig, name);
|
||||
if (tok == RIG_CONF_END)
|
||||
self->error_status = -RIG_EINVAL;
|
||||
else
|
||||
self->error_status = rig_set_conf(self->rig, tok, val);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* TODO: get_ext_parm_list, level, conf, .. */
|
||||
|
||||
/* TODO: all the get functions */
|
||||
/* get functions */
|
||||
|
||||
METHOD1VGET(get_freq, freq_t)
|
||||
extern void get_mode(rmode_t *OUTPUT, pbwidth_t *OUTPUT, vfo_t vfo = RIG_VFO_CURR);
|
||||
|
@ -191,14 +347,54 @@ typedef struct Rig {
|
|||
METHOD1VGET(get_ant, ant_t)
|
||||
METHOD1VGET(get_mem, int)
|
||||
METHOD1GET(get_powerstat, powerstat_t)
|
||||
//METHOD2GET(get_parm, setting_t, value_t)
|
||||
//METHOD1GET(get_channel, channel_t) /* special input/output */
|
||||
METHOD1GET(get_trn, int)
|
||||
// METHOD1V(recv_dtmf, char_string, int *length)
|
||||
//METHOD2GET(get_conf, token_t, const_char_string)
|
||||
|
||||
|
||||
//METHOD2GET(get_ext_parm, token_t, value_t)
|
||||
//METHOD2VGET(get_ext_level, token_t, value_t)
|
||||
//METHOD1GET(get_info, const_char_string)
|
||||
|
||||
|
||||
/* get_channel() returns current VFO data
|
||||
* get_channel(10) returns content of memory #10
|
||||
* get_channel(0, RIG_VFO_A) returns VFO A data
|
||||
*/
|
||||
const channel_t *get_channel(int channel_num = INT_MAX, vfo_t vfo = RIG_VFO_MEM) {
|
||||
static channel_t chan;
|
||||
chan.channel_num = channel_num;
|
||||
chan.vfo = channel_num != INT_MAX ? vfo : RIG_VFO_CURR;
|
||||
self->error_status = rig_get_channel(self->rig, &chan);
|
||||
/* TODO: copy ext_level's */
|
||||
return &chan;
|
||||
}
|
||||
|
||||
const char *get_conf(token_t tok) {
|
||||
static char s[MAX_STATIC] = "";
|
||||
self->error_status = rig_get_conf(self->rig, tok, s);
|
||||
return s;
|
||||
}
|
||||
|
||||
const char *get_conf(const char *name) {
|
||||
token_t tok = rig_token_lookup(self->rig, name);
|
||||
static char s[MAX_STATIC] = "";
|
||||
if (tok == RIG_CONF_END)
|
||||
self->error_status = -RIG_EINVAL;
|
||||
else
|
||||
self->error_status = rig_get_conf(self->rig, tok, s);
|
||||
return s;
|
||||
}
|
||||
|
||||
const char *recv_dtmf(vfo_t vfo = RIG_VFO_CURR) {
|
||||
static char s[64];
|
||||
int len = sizeof(s)-1;
|
||||
self->error_status = rig_recv_dtmf(self->rig, vfo, s, &len);
|
||||
s[len] = '\0';
|
||||
return s;
|
||||
}
|
||||
const char * get_info(void) {
|
||||
const char *s;
|
||||
s = rig_get_info(self->rig);
|
||||
self->error_status = s ? RIG_OK : -RIG_EINVAL;
|
||||
return s;
|
||||
}
|
||||
|
||||
int get_func(setting_t func, vfo_t vfo = RIG_VFO_CURR) {
|
||||
int status;
|
||||
|
@ -206,14 +402,15 @@ typedef struct Rig {
|
|||
return status;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifndef SWIGJAVA
|
||||
void get_level(setting_t level, vfo_t vfo = RIG_VFO_CURR)
|
||||
{ value_t val; self->error_status = rig_get_level(self->rig, vfo, level, &val);
|
||||
//if (RIG_LEVEL_IS_FLOAT(level))
|
||||
/* TODO: dynamic casting */
|
||||
}
|
||||
#else
|
||||
/* TODO */
|
||||
/* TODO also: get_parm */
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -234,3 +431,4 @@ void Rig_get_split_mode(Rig *self, rmode_t *mode, pbwidth_t *width, vfo_t vfo)
|
|||
}
|
||||
|
||||
%}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Hamlib bindings - Rotator interface
|
||||
* Copyright (c) 2001,2002 by Stephane Fillod
|
||||
*
|
||||
* $Id: rotator.swg,v 1.2 2002-09-16 06:50:13 fillods Exp $
|
||||
* $Id: rotator.swg,v 1.3 2002-10-07 21:44:51 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
|
||||
|
@ -80,6 +80,7 @@ typedef struct Rot {
|
|||
ROTMETHOD0(close)
|
||||
|
||||
ROTMETHOD2(set_position, azimuth_t, elevation_t)
|
||||
extern void get_position(azimuth_t *OUTPUT, elevation_t *OUTPUT);
|
||||
ROTMETHOD0(stop)
|
||||
ROTMETHOD0(park)
|
||||
ROTMETHOD1(reset, rot_reset_t)
|
||||
|
@ -87,16 +88,51 @@ typedef struct Rot {
|
|||
|
||||
ROTMETHOD1(token_lookup, const_char_string) /* conf */
|
||||
|
||||
void set_conf_s(const char *name, const char *val) {
|
||||
void set_conf(const char *name, const char *val) {
|
||||
token_t tok = rot_token_lookup(self->rot, name);
|
||||
/* FIXME: token not found */
|
||||
self->error_status = rot_set_conf(self->rot, tok, val);
|
||||
if (tok == RIG_CONF_END)
|
||||
self->error_status = -RIG_EINVAL;
|
||||
else
|
||||
self->error_status = rot_set_conf(self->rot, tok, val);
|
||||
}
|
||||
|
||||
ROTMETHOD2(set_conf, token_t, const_char_string)
|
||||
|
||||
/* TODO: get_ext_parm_list, level, conf, .. */
|
||||
const char *get_conf(token_t tok) {
|
||||
static char s[128] = "";
|
||||
self->error_status = rot_get_conf(self->rot, tok, s);
|
||||
return s;
|
||||
}
|
||||
|
||||
/* TODO: all the get functions */
|
||||
const char *get_conf(const char *name) {
|
||||
token_t tok = rot_token_lookup(self->rot, name);
|
||||
static char s[128] = "";
|
||||
if (tok == RIG_CONF_END)
|
||||
self->error_status = -RIG_EINVAL;
|
||||
else
|
||||
self->error_status = rot_get_conf(self->rot, tok, s);
|
||||
return s;
|
||||
}
|
||||
|
||||
const char * get_info(void) {
|
||||
const char *s;
|
||||
s = rot_get_info(self->rot);
|
||||
self->error_status = s ? RIG_OK : -RIG_EINVAL;
|
||||
return s;
|
||||
}
|
||||
|
||||
/* TODO: get_conf_list, .. */
|
||||
};
|
||||
|
||||
%{
|
||||
|
||||
/*
|
||||
* this one returns 2 values, here is a perl example:
|
||||
* ($az, $elevation) = $rig->get_position();
|
||||
*/
|
||||
void Rot_get_position(Rot *self, azimuth_t *azimuth, elevation_t *elevation)
|
||||
{
|
||||
self->error_status = rot_get_position(self->rot, azimuth, elevation);
|
||||
}
|
||||
|
||||
%}
|
||||
|
|
|
@ -6,16 +6,42 @@ load ".libs/hamlibtcl.so" Hamlib
|
|||
|
||||
puts $hamlib_version\n
|
||||
|
||||
rig_set_debug $RIG_DEBUG_TRACE
|
||||
|
||||
# Init RIG_MODEL_DUMMY
|
||||
Rig my_rig $RIG_MODEL_DUMMY
|
||||
|
||||
my_rig open
|
||||
my_rig set_freq 145550000
|
||||
|
||||
# note: get_level may not be implemented yet!
|
||||
puts [my_rig get_level $RIG_LEVEL_STRENGTH]
|
||||
puts status:[my_rig cget -error_status]
|
||||
|
||||
set mode [my_rig get_mode]
|
||||
puts "mode:[lindex $mode 0], bandwidth:[lindex $mode 1]Hz (0=normal)"
|
||||
|
||||
set state [my_rig cget -state]
|
||||
puts ITU_region:[$state cget -itu_region]
|
||||
|
||||
# The following works well also
|
||||
# puts ITU_region:[[my_rig cget -state] cget -itu_region]
|
||||
|
||||
puts getinfo:[my_rig get_info]
|
||||
|
||||
my_rig set_level "VOX" 1
|
||||
puts status:[my_rig cget -error_status]
|
||||
puts level:[my_rig get_level_i "VOX"]
|
||||
puts status:[my_rig cget -error_status]
|
||||
my_rig set_level $RIG_LEVEL_VOX 5
|
||||
puts status:[my_rig cget -error_status]
|
||||
puts level:[my_rig get_level_i $RIG_LEVEL_VOX]
|
||||
puts status:[my_rig cget -error_status]
|
||||
|
||||
puts str:[my_rig get_level_i $RIG_LEVEL_STRENGTH]
|
||||
puts status:[my_rig cget -error_status]
|
||||
puts status(str):[rigerror [my_rig cget -error_status]]
|
||||
|
||||
my_rig close
|
||||
my_rig cleanup
|
||||
#my_rig cleanup
|
||||
|
||||
|
||||
exit 0
|
||||
|
|
Ładowanie…
Reference in New Issue