From ee9f1b8d22dcdb0ea39d6acf7a4cb47ebbf16fe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Fillod=2C=20F8CFE?= Date: Tue, 12 Feb 2002 22:14:50 +0000 Subject: [PATCH] first working version, with everyday use basic functions git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@957 7ae35d74-ebe9-4afe-98af-79ac388436b8 --- perl/Hamlib/Hamlib.pm | 488 ++++++++++++++++-------------------------- perl/Hamlib/Hamlib.xs | 325 +++++++++++++++++----------- perl/Hamlib/test.pl | 44 +++- perl/Hamlib/typemap | 34 +-- 4 files changed, 455 insertions(+), 436 deletions(-) diff --git a/perl/Hamlib/Hamlib.pm b/perl/Hamlib/Hamlib.pm index df1b0a9c9..be6379b1f 100644 --- a/perl/Hamlib/Hamlib.pm +++ b/perl/Hamlib/Hamlib.pm @@ -1,5 +1,8 @@ package Hamlib; +# Copyright 2002 Stephane Fillod. See accompanying README file for +# usage information + use 5.006; use strict; use warnings; @@ -9,6 +12,8 @@ use Carp; require Exporter; require DynaLoader; use AutoLoader; +#use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $AUTOLOAD); +our $VERSION = '0.02'; our @ISA = qw(Exporter DynaLoader); @@ -19,303 +24,200 @@ our @ISA = qw(Exporter DynaLoader); # This allows declaration use Hamlib ':all'; # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK # will save memory. -our %EXPORT_TAGS = ( 'all' => [ qw( - CHANLSTSIZ - FILPATHLEN - FLTLSTSIZ - FRQRANGESIZ - MAXCHANDESC - MAXDBLSTSIZ - RIGNAMSIZ - RIGVERSIZ - RIG_ANN_ALL - RIG_ANN_FREQ - RIG_ANN_NONE - RIG_ANN_OFF - RIG_ANN_RXMODE - RIG_COMBO_MAX - RIG_CONF_CHECKBUTTON - RIG_CONF_COMBO - RIG_CONF_NUMERIC - RIG_CONF_STRING - RIG_CTRL_MAIN - RIG_CTRL_SUB - RIG_ECONF - RIG_EINTERNAL - RIG_EINVAL - RIG_EIO - RIG_ENAVAIL - RIG_ENIMPL - RIG_ENOMEM - RIG_ENTARGET - RIG_EPROTO - RIG_ERJCTED - RIG_ETIMEOUT - RIG_ETRUNC - RIG_FLAG_APRS - RIG_FLAG_COMPUTER - RIG_FLAG_DXCLUSTER - RIG_FLAG_HANDHELD - RIG_FLAG_MOBILE - RIG_FLAG_RECEIVER - RIG_FLAG_SCANNER - RIG_FLAG_TNC - RIG_FLAG_TRANSCEIVER - RIG_FLAG_TRANSMITTER - RIG_FLAG_TRUNKING - RIG_FREQ_NONE - RIG_FUNC_ABM - RIG_FUNC_AIP - RIG_FUNC_ANF - RIG_FUNC_APF - RIG_FUNC_ARO - RIG_FUNC_BC - RIG_FUNC_COMP - RIG_FUNC_FAGC - RIG_FUNC_FBKIN - RIG_FUNC_LMP - RIG_FUNC_LOCK - RIG_FUNC_MBC - RIG_FUNC_MN - RIG_FUNC_MON - RIG_FUNC_MUTE - RIG_FUNC_NB - RIG_FUNC_NONE - RIG_FUNC_NR - RIG_FUNC_REV - RIG_FUNC_RNF - RIG_FUNC_SBKIN - RIG_FUNC_SQL - RIG_FUNC_TONE - RIG_FUNC_TSQL - RIG_FUNC_VOX - RIG_FUNC_VSC - RIG_ITU_REGION1 - RIG_ITU_REGION2 - RIG_ITU_REGION3 - RIG_LEVEL_AF - RIG_LEVEL_AGC - RIG_LEVEL_ALC - RIG_LEVEL_APF - RIG_LEVEL_ATT - RIG_LEVEL_BALANCE - RIG_LEVEL_BKINDL - RIG_LEVEL_COMP - RIG_LEVEL_CWPITCH - RIG_LEVEL_FLOAT_LIST - RIG_LEVEL_IF - RIG_LEVEL_KEYSPD - RIG_LEVEL_METER - RIG_LEVEL_MICGAIN - RIG_LEVEL_NONE - RIG_LEVEL_NOTCHF - RIG_LEVEL_NR - RIG_LEVEL_PBT_IN - RIG_LEVEL_PBT_OUT - RIG_LEVEL_PREAMP - RIG_LEVEL_READONLY_LIST - RIG_LEVEL_RF - RIG_LEVEL_RFPOWER - RIG_LEVEL_SQL - RIG_LEVEL_SQLSTAT - RIG_LEVEL_STRENGTH - RIG_LEVEL_SWR - RIG_LEVEL_VOX - RIG_MODE_AM - RIG_MODE_CW - RIG_MODE_FM - RIG_MODE_LSB - RIG_MODE_NONE - RIG_MODE_RTTY - RIG_MODE_SSB - RIG_MODE_USB - RIG_MODE_WFM - RIG_OK - RIG_OP_BAND_DOWN - RIG_OP_BAND_UP - RIG_OP_CPY - RIG_OP_DOWN - RIG_OP_FROM_VFO - RIG_OP_LEFT - RIG_OP_MCL - RIG_OP_NONE - RIG_OP_RIGHT - RIG_OP_TO_VFO - RIG_OP_UP - RIG_OP_XCHG - RIG_PARM_ANN - RIG_PARM_APO - RIG_PARM_BACKLIGHT - RIG_PARM_BAT - RIG_PARM_BEEP - RIG_PARM_FLOAT_LIST - RIG_PARM_NONE - RIG_PARM_READONLY_LIST - RIG_PARM_TIME - RIG_PASSBAND_NORMAL - RIG_SCAN_DELTA - RIG_SCAN_MEM - RIG_SCAN_NONE - RIG_SCAN_PRIO - RIG_SCAN_PROG - RIG_SCAN_SLCT - RIG_SCAN_STOP - RIG_SETTING_MAX - RIG_TARGETABLE_ALL - RIG_TARGETABLE_FREQ - RIG_TARGETABLE_MODE - RIG_TARGETABLE_NONE - RIG_TRN_OFF - RIG_TRN_POLL - RIG_TRN_RIG - RIG_TYPE_COMPUTER - RIG_TYPE_HANDHELD - RIG_TYPE_MASK - RIG_TYPE_MOBILE - RIG_TYPE_OTHER - RIG_TYPE_PCRECEIVER - RIG_TYPE_RECEIVER - RIG_TYPE_SCANNER - RIG_TYPE_TRANSCEIVER - RIG_TYPE_TRUNKSCANNER - RIG_VFO1 - RIG_VFO2 - RIG_VFO_A - RIG_VFO_ALL - RIG_VFO_B - RIG_VFO_C - RIG_VFO_CURR - RIG_VFO_MAIN - RIG_VFO_MEM - RIG_VFO_NONE - RIG_VFO_SUB - RIG_VFO_VFO - TSLSTSIZ - __BEGIN_DECLS - __END_DECLS - ptr_t - check_backend - cleanup - close - confparam_lookup - debug - get_ant - get_caps - get_channel - get_conf - get_ctcss_sql - get_ctcss_tone - get_dcd - get_dcs_code - get_dcs_sql - get_freq - get_func - get_info - get_level - get_mem - get_mode - get_parm - get_powerstat - get_ptt - get_range - get_resolution - get_rit - get_rptr_offs - get_rptr_shift - get_split - get_split_freq - get_split_mode - get_trn - get_ts - get_vfo - get_xit - has_get_func - has_get_level - has_get_parm - has_scan - has_set_func - has_set_level - has_set_parm - has_vfo_op - init - list_foreach - load_all_backends - load_backend - mW2power - need_debug - open - passband_narrow - passband_normal - passband_wide - power2mW - probe - probe_all - recv_dtmf - register - reset - restore_channel - rigerror - save_channel - scan - send_dtmf - send_morse - set_ant - set_bank - set_channel - set_conf - set_ctcss_sql - set_ctcss_tone - set_dcs_code - set_dcs_sql - set_debug - set_freq - set_func - set_level - set_mem - set_mode - set_parm - set_powerstat - set_ptt - set_rit - set_rptr_offs - set_rptr_shift - set_split - set_split_freq - set_split_mode - set_trn - set_ts - set_vfo - set_xit - setting2idx - token_foreach - token_lookup - unregister - vfo_op +our %EXPORT_TAGS = ( 'ann' => [ qw( + RIG_ANN_ALL + RIG_ANN_FREQ + RIG_ANN_NONE + RIG_ANN_OFF + RIG_ANN_RXMODE + ) ] , + 'conf' => [ qw( + RIG_CONF_CHECKBUTTON + RIG_CONF_COMBO + RIG_CONF_NUMERIC + RIG_CONF_STRING + ) ] , + 'err_code' => [ qw( + RIG_OK + RIG_ECONF + RIG_EINTERNAL + RIG_EINVAL + RIG_EIO + RIG_ENAVAIL + RIG_ENIMPL + RIG_ENOMEM + RIG_ENTARGET + RIG_EPROTO + RIG_ERJCTED + RIG_ETIMEOUT + RIG_ETRUNC + ) ] , + 'flag' => [ qw( + RIG_FLAG_APRS + RIG_FLAG_COMPUTER + RIG_FLAG_DXCLUSTER + RIG_FLAG_HANDHELD + RIG_FLAG_MOBILE + RIG_FLAG_RECEIVER + RIG_FLAG_SCANNER + RIG_FLAG_TNC + RIG_FLAG_TRANSCEIVER + RIG_FLAG_TRANSMITTER + RIG_FLAG_TRUNKING + ) ] , + 'func' => [ qw( + RIG_FUNC_ABM + RIG_FUNC_AIP + RIG_FUNC_ANF + RIG_FUNC_APF + RIG_FUNC_ARO + RIG_FUNC_BC + RIG_FUNC_COMP + RIG_FUNC_FAGC + RIG_FUNC_FBKIN + RIG_FUNC_LMP + RIG_FUNC_LOCK + RIG_FUNC_MBC + RIG_FUNC_MN + RIG_FUNC_MON + RIG_FUNC_MUTE + RIG_FUNC_NB + RIG_FUNC_NONE + RIG_FUNC_NR + RIG_FUNC_REV + RIG_FUNC_RNF + RIG_FUNC_SBKIN + RIG_FUNC_SQL + RIG_FUNC_TONE + RIG_FUNC_TSQL + RIG_FUNC_VOX + RIG_FUNC_VSC + ) ] , + 'itu_region' => [ qw( + RIG_ITU_REGION1 + RIG_ITU_REGION2 + RIG_ITU_REGION3 + ) ] , + 'level' => [ qw( + RIG_LEVEL_AF + RIG_LEVEL_AGC + RIG_LEVEL_ALC + RIG_LEVEL_APF + RIG_LEVEL_ATT + RIG_LEVEL_BALANCE + RIG_LEVEL_BKINDL + RIG_LEVEL_COMP + RIG_LEVEL_CWPITCH + RIG_LEVEL_FLOAT_LIST + RIG_LEVEL_IF + RIG_LEVEL_KEYSPD + RIG_LEVEL_METER + RIG_LEVEL_MICGAIN + RIG_LEVEL_NONE + RIG_LEVEL_NOTCHF + RIG_LEVEL_NR + RIG_LEVEL_PBT_IN + RIG_LEVEL_PBT_OUT + RIG_LEVEL_PREAMP + RIG_LEVEL_READONLY_LIST + RIG_LEVEL_RF + RIG_LEVEL_RFPOWER + RIG_LEVEL_SQL + RIG_LEVEL_SQLSTAT + RIG_LEVEL_STRENGTH + RIG_LEVEL_SWR + RIG_LEVEL_VOX + ) ] , + 'mode' => [ qw( + RIG_MODE_AM + RIG_MODE_CW + RIG_MODE_FM + RIG_MODE_LSB + RIG_MODE_NONE + RIG_MODE_RTTY + RIG_MODE_SSB + RIG_MODE_USB + RIG_MODE_WFM + ) ] , + 'vfo_op' => [ qw( + RIG_OP_BAND_DOWN + RIG_OP_BAND_UP + RIG_OP_CPY + RIG_OP_DOWN + RIG_OP_FROM_VFO + RIG_OP_LEFT + RIG_OP_MCL + RIG_OP_NONE + RIG_OP_RIGHT + RIG_OP_TO_VFO + RIG_OP_UP + RIG_OP_XCHG + ) ] , + 'parm' => [ qw( + RIG_PARM_ANN + RIG_PARM_APO + RIG_PARM_BACKLIGHT + RIG_PARM_BAT + RIG_PARM_BEEP + RIG_PARM_FLOAT_LIST + RIG_PARM_NONE + RIG_PARM_READONLY_LIST + RIG_PARM_TIME + ) ] , + 'scan' => [ qw( + RIG_SCAN_DELTA + RIG_SCAN_MEM + RIG_SCAN_NONE + RIG_SCAN_PRIO + RIG_SCAN_PROG + RIG_SCAN_SLCT + RIG_SCAN_STOP + ) ] , + 'trn' => [ qw( + RIG_TRN_OFF + RIG_TRN_POLL + RIG_TRN_RIG + ) ] , + 'type' => [ qw( + RIG_TYPE_COMPUTER + RIG_TYPE_HANDHELD + RIG_TYPE_MASK + RIG_TYPE_MOBILE + RIG_TYPE_OTHER + RIG_TYPE_PCRECEIVER + RIG_TYPE_RECEIVER + RIG_TYPE_SCANNER + RIG_TYPE_TRANSCEIVER + RIG_TYPE_TRUNKSCANNER + ) ] , + 'vfo' => [ qw( + RIG_VFO1 + RIG_VFO2 + RIG_VFO_A + RIG_VFO_ALL + RIG_VFO_B + RIG_VFO_C + RIG_VFO_CURR + RIG_VFO_MAIN + RIG_VFO_MEM + RIG_VFO_NONE + RIG_VFO_SUB + RIG_VFO_VFO ) ] ); -our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); +our @EXPORT_OK = ( @{ $EXPORT_TAGS{'vfo'} } ); our @EXPORT = qw( - CHANLSTSIZ - FILPATHLEN - FLTLSTSIZ - FRQRANGESIZ - MAXCHANDESC - MAXDBLSTSIZ - RIGNAMSIZ - RIGVERSIZ RIG_ANN_ALL RIG_ANN_FREQ RIG_ANN_NONE RIG_ANN_OFF RIG_ANN_RXMODE - RIG_COMBO_MAX RIG_CONF_CHECKBUTTON RIG_CONF_COMBO RIG_CONF_NUMERIC RIG_CONF_STRING - RIG_CTRL_MAIN - RIG_CTRL_SUB + RIG_OK RIG_ECONF RIG_EINTERNAL RIG_EINVAL @@ -406,7 +308,6 @@ our @EXPORT = qw( RIG_MODE_SSB RIG_MODE_USB RIG_MODE_WFM - RIG_OK RIG_OP_BAND_DOWN RIG_OP_BAND_UP RIG_OP_CPY @@ -454,24 +355,17 @@ our @EXPORT = qw( RIG_TYPE_SCANNER RIG_TYPE_TRANSCEIVER RIG_TYPE_TRUNKSCANNER - RIG_VFO1 - RIG_VFO2 RIG_VFO_A - RIG_VFO_ALL RIG_VFO_B RIG_VFO_C + RIG_VFO_ALL RIG_VFO_CURR RIG_VFO_MAIN RIG_VFO_MEM RIG_VFO_NONE RIG_VFO_SUB RIG_VFO_VFO - TSLSTSIZ - __BEGIN_DECLS - __END_DECLS - ptr_t ); -our $VERSION = '0.01'; sub AUTOLOAD { # This AUTOLOAD is used to 'autoload' constants from the constant() @@ -509,15 +403,15 @@ bootstrap Hamlib $VERSION; # Preloaded methods go here. + # Autoload methods go after =cut, and are processed by the autosplit program. 1; __END__ -# Below is stub documentation for your module. You better edit it! =head1 NAME -Hamlib - Perl extension for blah blah blah +Hamlib - Perl extension for Hamlib =head1 SYNOPSIS @@ -708,10 +602,6 @@ None by default. RIG_VFO_NONE RIG_VFO_SUB RIG_VFO_VFO - TSLSTSIZ - __BEGIN_DECLS - __END_DECLS - ptr_t =head2 Exportable functions diff --git a/perl/Hamlib/Hamlib.xs b/perl/Hamlib/Hamlib.xs index db4a7e1ba..3c7a9480f 100644 --- a/perl/Hamlib/Hamlib.xs +++ b/perl/Hamlib/Hamlib.xs @@ -4,6 +4,8 @@ #include +typedef RIG* Hamlib__Rig; + static int not_here(char *s) { @@ -2610,40 +2612,174 @@ not_there: return 0; } - -MODULE = Hamlib PACKAGE = Hamlib PREFIX = rig_ - +MODULE = Hamlib PACKAGE = Hamlib double constant(sv,arg) + PROTOTYPE: $$ PREINIT: - STRLEN len; + STRLEN len; INPUT: - SV * sv - char * s = SvPV(sv, len); - int arg + SV * sv + char * s = SvPV(sv, len); + int arg CODE: - RETVAL = constant(s,len,arg); + RETVAL = constant(s,len,arg); OUTPUT: - RETVAL + RETVAL +MODULE = Hamlib PACKAGE = Hamlib::Rig PREFIX = rig_ + +double +constant(sv,arg) + PROTOTYPE: $$ + PREINIT: + STRLEN len; + INPUT: + SV * sv + char * s = SvPV(sv, len); + int arg + CODE: + RETVAL = constant(s,len,arg); + OUTPUT: + RETVAL + +Hamlib::Rig +rig_init(rig_model) + rig_model_t rig_model + PROTOTYPE: $ + CODE: + { + RIG * theRig; + theRig = rig_init(rig_model); + RETVAL = theRig; + } + POST_CALL: + if (RETVAL == NULL) + croak("rig_init error"); + OUTPUT: + RETVAL + +void +rig_DESTROY(rig) + Hamlib::Rig rig + PROTOTYPE: $ + CODE: + { + rig_cleanup(rig); + } int -rig_check_backend(rig_model) - rig_model_t rig_model - -int -rig_cleanup(rig) - RIG * rig +rig_open(rig) + Hamlib::Rig rig + PROTOTYPE: $ + CODE: + { + RETVAL = rig_open(rig); + } + POST_CALL: + if (RETVAL != RIG_OK) + croak("rig_open error: '%s'", rigerror(RETVAL)); + OUTPUT: + RETVAL int rig_close(rig) - RIG * rig + Hamlib::Rig rig + PROTOTYPE: $ + CODE: + { + RETVAL = rig_close(rig); + } + OUTPUT: + RETVAL -const struct confparams * -rig_confparam_lookup(rig, name) - RIG * rig - const char * name +int +rig_cleanup(rig) + Hamlib::Rig rig + +int +rig_set_vfo(rig, vfo) + Hamlib::Rig rig + vfo_t vfo + +int +rig_get_vfo(rig) + Hamlib::Rig rig + CODE: + { + vfo_t vfo; + rig_get_vfo(rig, &vfo); + RETVAL = vfo; + } + OUTPUT: + RETVAL + + +int +rig_set_freq(rig, freq, vfo = RIG_VFO_CURR) + Hamlib::Rig rig + freq_t freq + vfo_t vfo + C_ARGS: + rig, vfo, freq + +freq_t +rig_get_freq(rig, vfo = RIG_VFO_CURR) + Hamlib::Rig rig + vfo_t vfo + CODE: + { + freq_t freq; + rig_get_freq(rig, vfo, &freq); + RETVAL = freq; + } + OUTPUT: + RETVAL + +int +rig_set_mode(rig, mode, width = RIG_PASSBAND_NORMAL, vfo = RIG_VFO_CURR) + Hamlib::Rig rig + rmode_t mode + pbwidth_t width + vfo_t vfo + C_ARGS: + rig, vfo, mode, width + +void +rig_get_mode(rig, vfo = RIG_VFO_CURR) + Hamlib::Rig rig + vfo_t vfo + PPCODE: + { + rmode_t mode; + pbwidth_t width; + rig_get_mode(rig, vfo, &mode, &width); + EXTEND(sp,2); + PUSHs(sv_2mortal(newSVuv(mode))); + PUSHs(sv_2mortal(newSViv(width))); + } + +int +rig_set_split_mode(rig, mode, width = RIG_PASSBAND_NORMAL, vfo = RIG_VFO_CURR) + Hamlib::Rig rig + rmode_t mode + pbwidth_t width + vfo_t vfo + C_ARGS: + rig, vfo, mode, width + +int +rig_get_split_mode(rig, vfo = RIG_VFO_CURR) + Hamlib::Rig rig + vfo_t vfo + CODE: + { + rmode_t mode; + pbwidth_t width; + rig_get_split_mode(rig, vfo, &mode, &width); + RETVAL = mode; + } void rig_debug(debug_level, fmt, ...) @@ -2665,12 +2801,6 @@ rig_get_channel(rig, chan) RIG * rig channel_t * chan -int -rig_get_conf(rig, token, val) - RIG * rig - token_t token - char * val - int rig_get_ctcss_sql(rig, vfo, tone) RIG * rig @@ -2701,12 +2831,6 @@ rig_get_dcs_sql(rig, vfo, code) vfo_t vfo tone_t * code -int -rig_get_freq(rig, vfo, freq) - RIG * rig - vfo_t vfo - freq_t * freq - int rig_get_func(rig, vfo, func, status) RIG * rig @@ -2716,7 +2840,7 @@ rig_get_func(rig, vfo, func, status) const char * rig_get_info(rig) - RIG * rig + Hamlib::Rig rig int rig_get_level(rig, vfo, level, val) @@ -2731,13 +2855,6 @@ rig_get_mem(rig, vfo, ch) vfo_t vfo int * ch -int -rig_get_mode(rig, vfo, mode, width) - RIG * rig - vfo_t vfo - rmode_t * mode - pbwidth_t * width - int rig_get_parm(rig, parm, val) RIG * rig @@ -2791,17 +2908,55 @@ rig_get_split(rig, vfo, split) split_t * split int -rig_get_split_freq(rig, vfo, tx_freq) - RIG * rig - vfo_t vfo - freq_t * tx_freq +rig_set_split_freq(rig, tx_freq, vfo = RIG_VFO_CURR) + Hamlib::Rig rig + freq_t tx_freq + vfo_t vfo + C_ARGS: + rig, vfo, tx_freq + +freq_t +rig_get_split_freq(rig, vfo = RIG_VFO_CURR) + Hamlib::Rig rig + vfo_t vfo + CODE: + { + freq_t tx_freq; + rig_get_freq(rig, vfo, &tx_freq); + RETVAL = tx_freq; + } + OUTPUT: + RETVAL int -rig_get_split_mode(rig, vfo, tx_mode, tx_width) - RIG * rig - vfo_t vfo - rmode_t * tx_mode - pbwidth_t * tx_width +rig_set_conf(rig, name, val) + Hamlib::Rig rig + const char * name + const char * val + CODE: + { + token_t token; + token = rig_token_lookup(rig, name); + RETVAL = rig_set_conf(rig, token, val); + } + OUTPUT: + RETVAL + +SV* +rig_get_conf(rig, name) + Hamlib::Rig rig + const char * name + CODE: + { + token_t token; + char val[256]; + + token = rig_token_lookup(rig, name); + rig_get_conf(rig, token, val); + RETVAL = newSVpv(val, 0); + } + OUTPUT: + RETVAL int rig_get_trn(rig, trn) @@ -2814,11 +2969,6 @@ rig_get_ts(rig, vfo, ts) vfo_t vfo shortfreq_t * ts -int -rig_get_vfo(rig, vfo) - RIG * rig - vfo_t * vfo - int rig_get_xit(rig, vfo, xit) RIG * rig @@ -2865,18 +3015,6 @@ rig_has_vfo_op(rig, op) RIG * rig vfo_op_t op -RIG * -rig_init(rig_model) - rig_model_t rig_model - -#ifdef TO_BE_FIXED_LATER -int -rig_list_foreach(arg0, data) - int ( * cfunc ) ( const struct rig_caps *, void * ) arg0 - void * data - -#endif - int rig_load_all_backends() @@ -2896,10 +3034,6 @@ int rig_need_debug(debug_level) enum rig_debug_level_e debug_level -int -rig_open(rig) - RIG * rig - pbwidth_t rig_passband_narrow(rig, mode) RIG * rig @@ -2993,12 +3127,6 @@ rig_set_channel(rig, chan) RIG * rig const channel_t * chan -int -rig_set_conf(rig, token, val) - RIG * rig - token_t token - const char * val - int rig_set_ctcss_sql(rig, vfo, tone) RIG * rig @@ -3027,12 +3155,6 @@ void rig_set_debug(debug_level) enum rig_debug_level_e debug_level -int -rig_set_freq(rig, vfo, freq) - RIG * rig - vfo_t vfo - freq_t freq - int rig_set_func(rig, vfo, func, status) RIG * rig @@ -3053,13 +3175,6 @@ rig_set_mem(rig, vfo, ch) vfo_t vfo int ch -int -rig_set_mode(rig, vfo, mode, width) - RIG * rig - vfo_t vfo - rmode_t mode - pbwidth_t width - int rig_set_parm(rig, parm, val) RIG * rig @@ -3101,19 +3216,6 @@ rig_set_split(rig, vfo, split) vfo_t vfo split_t split -int -rig_set_split_freq(rig, vfo, tx_freq) - RIG * rig - vfo_t vfo - freq_t tx_freq - -int -rig_set_split_mode(rig, vfo, tx_mode, tx_width) - RIG * rig - vfo_t vfo - rmode_t tx_mode - pbwidth_t tx_width - int rig_set_trn(rig, trn) RIG * rig @@ -3125,11 +3227,6 @@ rig_set_ts(rig, vfo, ts) vfo_t vfo shortfreq_t ts -int -rig_set_vfo(rig, vfo) - RIG * rig - vfo_t vfo - int rig_set_xit(rig, vfo, xit) RIG * rig @@ -3140,20 +3237,6 @@ int rig_setting2idx(s) setting_t s -#ifdef TO_BE_FIXED_LATER -int -rig_token_foreach(rig, arg1, data) - RIG * rig - int ( * cfunc ) ( const struct confparams *, void * ) arg1 - void * data - -#endif - -token_t -rig_token_lookup(rig, name) - RIG * rig - const char * name - int rig_unregister(rig_model) rig_model_t rig_model diff --git a/perl/Hamlib/test.pl b/perl/Hamlib/test.pl index 9c014ec59..d7e3f0cfa 100644 --- a/perl/Hamlib/test.pl +++ b/perl/Hamlib/test.pl @@ -6,7 +6,7 @@ # change 'tests => 1' to 'tests => last_test_to_print'; use Test; -BEGIN { plan tests => 3 }; +BEGIN { plan tests => 12 }; use Hamlib; ok(1); # If we made it this far, we're ok. @@ -15,10 +15,48 @@ ok(1); # If we made it this far, we're ok. # Insert your test code below, the Test module is use()ed here so read # its man page ( perldoc Test ) for help writing this test script. -$my_rig = Hamlib::init(RIG_MODEL_DUMMY); +# 1 => RIG_MODEL_DUMMY + +$rig = Hamlib::Rig::init(1); +ok(defined $rig); + +# set configuration parameter and readback +$rig->set_conf("itu_region", "1"); +ok($rig->get_conf("itu_region") eq "1"); + +# open rig communication +$rig->open(); ok(1); -$my_rig->open(); +# Get some info from the rig, is available +print "Info: " . $rig->get_info() . "\n"; ok(1); +# Here's the plan. Select VFO A, check we got it. +# Then tune to 50.110 MHz, and set USB mode. + +$rig->set_vfo(RIG_VFO_A); +ok(1); + +ok($rig->get_vfo() == RIG_VFO_A); + +$rig->set_freq(50110000); +ok(1); + +ok($rig->get_freq() == 50110000); + +$rig->set_mode(RIG_MODE_USB); +ok(1); + +my ($mode, $width) = $rig->get_mode(); +ok($mode == RIG_MODE_USB); + +# CQ CQ ... + + +# No propagation today on 6. Maybe tomorrow. +$rig->close(); +ok(1); + +# NB: destroy done automatically diff --git a/perl/Hamlib/typemap b/perl/Hamlib/typemap index e8d168e82..aa2a30a73 100644 --- a/perl/Hamlib/typemap +++ b/perl/Hamlib/typemap @@ -1,9 +1,20 @@ +TYPEMAP +Hamlib::Rig T_PTROBJ +freq_t T_HAMLIB_QUAD +const char * T_PV +pbwidth_t T_IV +rig_model_t T_IV +rmode_t T_UV +vfo_t T_IV + +# will vanish one day.. RIG * T_PTROBJ + +# Following to be fixed: ant_t T_IV ant_t * T_PTROBJ channel_t * T_PTROBJ const channel_t * T_PTROBJ -const char * T_PTROBJ const freq_range_t * T_PTROBJ const struct confparams * T_PTROBJ const struct rig_caps * T_PTROBJ @@ -11,29 +22,22 @@ dcd_t * T_PTROBJ enum rig_debug_level_e T_PTROBJ float T_DOUBLE float * T_PTROBJ -freq_t T_PTROBJ -freq_t * T_PTROBJ int ( * cfunc ) ( const struct confparams *, void * ) T_PTROBJ int ( * cfunc ) ( const struct rig_caps *, void * ) T_PTROBJ int * T_PTROBJ -pbwidth_t T_PTROBJ -pbwidth_t * T_PTROBJ port_t * T_PTROBJ powerstat_t T_PTROBJ powerstat_t * T_PTROBJ ptt_t T_PTROBJ ptt_t * T_PTROBJ reset_t T_PTROBJ -rig_model_t T_IV -rmode_t T_UV -rmode_t * T_PTROBJ rptr_shift_t T_PTROBJ rptr_shift_t * T_PTROBJ scan_t T_IV -setting_t T_PTROBJ -shortfreq_t T_PTROBJ +setting_t T_HAMLIB_QUAD +shortfreq_t T_IV shortfreq_t * T_PTROBJ -split_t T_PTROBJ +split_t T_IV split_t * T_PTROBJ token_t T_IV tone_t T_UV @@ -42,8 +46,6 @@ unsigned int * T_PTROBJ value_t T_OPAQUE_STRUCT value_t * T_PTROBJ vfo_op_t T_IV -vfo_t T_IV -vfo_t * T_PTROBJ ############################################################################# INPUT T_OPAQUE_STRUCT @@ -58,7 +60,13 @@ T_OPAQUE_STRUCT } else croak(\"$var is not of type ${ntype}\") + +T_HAMLIB_QUAD + $var = ($type)SvNV($arg) ############################################################################# OUTPUT T_OPAQUE_STRUCT sv_setref_pvn($arg, \"${ntype}\", (char *)&$var, sizeof($var)); + +T_HAMLIB_QUAD + sv_setnv($arg, (NV)$var);