00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _RIG_H
00026 #define _RIG_H 1
00027
00028 #include <stdio.h>
00029 #include <stdarg.h>
00030
00031 #include <hamlib/riglist.h>
00032
00046
00047
00048
00049 #undef __BEGIN_DECLS
00050 #undef __END_DECLS
00051 #ifdef __cplusplus
00052 # define __BEGIN_DECLS extern "C" {
00053 # define __END_DECLS }
00054 #else
00055 # define __BEGIN_DECLS
00056 # define __END_DECLS
00057 #endif
00058
00059
00060
00061
00062 #undef HAMLIB_PARAMS
00063 #if defined (__STDC__) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(__CYGWIN__) || defined(_WIN32) || defined(__cplusplus)
00064 # define HAMLIB_PARAMS(protos) protos
00065 # define rig_ptr_t void*
00066 #else
00067 # define HAMLIB_PARAMS(protos) ()
00068 # define rig_ptr_t char*
00069 #endif
00070
00071 #include <hamlib/rig_dll.h>
00072
00073
00074 __BEGIN_DECLS
00075
00076 extern HAMLIB_EXPORT_VAR(const char) hamlib_version[];
00077 extern HAMLIB_EXPORT_VAR(const char) hamlib_copyright[];
00078
00085 enum rig_errcode_e {
00086 RIG_OK=0,
00087 RIG_EINVAL,
00088 RIG_ECONF,
00089 RIG_ENOMEM,
00090 RIG_ENIMPL,
00091 RIG_ETIMEOUT,
00092 RIG_EIO,
00093 RIG_EINTERNAL,
00094 RIG_EPROTO,
00095 RIG_ERJCTED,
00096 RIG_ETRUNC,
00097 RIG_ENAVAIL,
00098 RIG_ENTARGET,
00099 RIG_BUSERROR,
00100 RIG_BUSBUSY,
00101 RIG_EARG,
00102 RIG_EVFO,
00103 RIG_EDOM
00104 };
00105
00107 #define NETRIGCTL_RET "RPRT "
00108
00116 enum rig_debug_level_e {
00117 RIG_DEBUG_NONE = 0,
00118 RIG_DEBUG_BUG,
00119 RIG_DEBUG_ERR,
00120 RIG_DEBUG_WARN,
00121 RIG_DEBUG_VERBOSE,
00122 RIG_DEBUG_TRACE
00123 };
00124
00125
00126
00127
00128
00129 struct rig;
00130 struct rig_state;
00131
00135 typedef struct rig RIG;
00136
00137 #define RIGNAMSIZ 30
00138 #define RIGVERSIZ 8
00139 #define FILPATHLEN 100
00140 #define FRQRANGESIZ 30
00141 #define MAXCHANDESC 30
00142 #define TSLSTSIZ 20
00143 #define FLTLSTSIZ 42
00144 #define MAXDBLSTSIZ 8
00145 #define CHANLSTSIZ 16
00146 #define MAX_CAL_LENGTH 32
00147
00148
00159 typedef unsigned int tone_t;
00160
00164 typedef enum rig_port_e {
00165 RIG_PORT_NONE = 0,
00166 RIG_PORT_SERIAL,
00167 RIG_PORT_NETWORK,
00168 RIG_PORT_DEVICE,
00169 RIG_PORT_PACKET,
00170 RIG_PORT_DTMF,
00171 RIG_PORT_ULTRA,
00172 RIG_PORT_RPC,
00173 RIG_PORT_PARALLEL,
00174 RIG_PORT_USB
00175 } rig_port_t;
00176
00180 enum serial_parity_e {
00181 RIG_PARITY_NONE = 0,
00182 RIG_PARITY_ODD,
00183 RIG_PARITY_EVEN
00184 };
00185
00189 enum serial_handshake_e {
00190 RIG_HANDSHAKE_NONE = 0,
00191 RIG_HANDSHAKE_XONXOFF,
00192 RIG_HANDSHAKE_HARDWARE
00193 };
00194
00195
00199 enum serial_control_state_e {
00200 RIG_SIGNAL_UNSET = 0,
00201 RIG_SIGNAL_ON,
00202 RIG_SIGNAL_OFF
00203 };
00204
00206 typedef enum {
00207 RIG_FLAG_RECEIVER = (1<<1),
00208 RIG_FLAG_TRANSMITTER = (1<<2),
00209 RIG_FLAG_SCANNER = (1<<3),
00211 RIG_FLAG_MOBILE = (1<<4),
00212 RIG_FLAG_HANDHELD = (1<<5),
00213 RIG_FLAG_COMPUTER = (1<<6),
00214 RIG_FLAG_TRUNKING = (1<<7),
00215 RIG_FLAG_APRS = (1<<8),
00216 RIG_FLAG_TNC = (1<<9),
00217 RIG_FLAG_DXCLUSTER = (1<<10),
00218 RIG_FLAG_TUNER = (1<<11)
00219 } rig_type_t;
00220
00221 #define RIG_FLAG_TRANSCEIVER (RIG_FLAG_RECEIVER|RIG_FLAG_TRANSMITTER)
00222 #define RIG_TYPE_MASK (RIG_FLAG_TRANSCEIVER|RIG_FLAG_SCANNER|RIG_FLAG_MOBILE|RIG_FLAG_HANDHELD|RIG_FLAG_COMPUTER|RIG_FLAG_TRUNKING|RIG_FLAG_TUNER)
00223
00224 #define RIG_TYPE_OTHER 0
00225 #define RIG_TYPE_TRANSCEIVER RIG_FLAG_TRANSCEIVER
00226 #define RIG_TYPE_HANDHELD (RIG_FLAG_TRANSCEIVER|RIG_FLAG_HANDHELD)
00227 #define RIG_TYPE_MOBILE (RIG_FLAG_TRANSCEIVER|RIG_FLAG_MOBILE)
00228 #define RIG_TYPE_RECEIVER RIG_FLAG_RECEIVER
00229 #define RIG_TYPE_PCRECEIVER (RIG_FLAG_COMPUTER|RIG_FLAG_RECEIVER)
00230 #define RIG_TYPE_SCANNER (RIG_FLAG_SCANNER|RIG_FLAG_RECEIVER)
00231 #define RIG_TYPE_TRUNKSCANNER (RIG_TYPE_SCANNER|RIG_FLAG_TRUNKING)
00232 #define RIG_TYPE_COMPUTER (RIG_FLAG_TRANSCEIVER|RIG_FLAG_COMPUTER)
00233 #define RIG_TYPE_TUNER RIG_FLAG_TUNER
00234
00235
00239 enum rig_status_e {
00240 RIG_STATUS_ALPHA = 0,
00241 RIG_STATUS_UNTESTED,
00242 RIG_STATUS_BETA,
00243 RIG_STATUS_STABLE,
00244 RIG_STATUS_BUGGY
00245
00246
00247 };
00248
00250 #define RIG_STATUS_NEW RIG_STATUS_UNTESTED
00251
00255 typedef enum {
00256 RIG_RPT_SHIFT_NONE = 0,
00257 RIG_RPT_SHIFT_MINUS,
00258 RIG_RPT_SHIFT_PLUS
00259 } rptr_shift_t;
00260
00264 typedef enum {
00265 RIG_SPLIT_OFF = 0,
00266 RIG_SPLIT_ON
00267 } split_t;
00268
00273 typedef double freq_t;
00275 #define PRIfreq "f"
00276
00277 #define SCNfreq "lf"
00278 #define FREQFMT SCNfreq
00279
00284 typedef signed long shortfreq_t;
00285
00286 #define Hz(f) ((freq_t)(f))
00287 #define kHz(f) ((freq_t)((f)*(freq_t)1000))
00288 #define MHz(f) ((freq_t)((f)*(freq_t)1000000))
00289 #define GHz(f) ((freq_t)((f)*(freq_t)1000000000))
00290
00291 #define s_Hz(f) ((shortfreq_t)(f))
00292 #define s_kHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000))
00293 #define s_MHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000))
00294 #define s_GHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000000))
00295
00296 #define RIG_FREQ_NONE Hz(0)
00297
00298
00314 typedef int vfo_t;
00315
00317 #define RIG_VFO_NONE 0
00318
00319 #define RIG_VFO_TX_FLAG (1<<30)
00320
00322 #define RIG_VFO_CURR (1<<29)
00323
00325 #define RIG_VFO_MEM (1<<28)
00326
00328 #define RIG_VFO_VFO (1<<27)
00329
00330 #define RIG_VFO_TX_VFO(v) ((v)|RIG_VFO_TX_FLAG)
00331
00333 #define RIG_VFO_TX RIG_VFO_TX_VFO(RIG_VFO_CURR)
00334
00336 #define RIG_VFO_RX RIG_VFO_CURR
00337
00339 #define RIG_VFO_MAIN (1<<26)
00340
00341 #define RIG_VFO_SUB (1<<25)
00342
00343 #define RIG_VFO_N(n) (1<<(n))
00344
00346 #define RIG_VFO_A RIG_VFO_N(0)
00347
00348 #define RIG_VFO_B RIG_VFO_N(1)
00349
00350 #define RIG_VFO_C RIG_VFO_N(2)
00351
00352
00353
00354
00355
00356
00357 #define RIG_TARGETABLE_NONE 0
00358 #define RIG_TARGETABLE_FREQ (1<<0)
00359 #define RIG_TARGETABLE_MODE (1<<1)
00360 #define RIG_TARGETABLE_PURE (1<<2)
00361 #define RIG_TARGETABLE_ALL 0x7fffffff
00362
00363
00364 #define RIG_PASSBAND_NORMAL s_Hz(0)
00365
00369 typedef shortfreq_t pbwidth_t;
00370
00371
00375 typedef enum dcd_e {
00376 RIG_DCD_OFF = 0,
00377 RIG_DCD_ON
00378 } dcd_t;
00379
00384 typedef enum {
00385 RIG_DCD_NONE = 0,
00386 RIG_DCD_RIG,
00387 RIG_DCD_SERIAL_DSR,
00388 RIG_DCD_SERIAL_CTS,
00389 RIG_DCD_SERIAL_CAR,
00390 RIG_DCD_PARALLEL
00391 } dcd_type_t;
00392
00393
00397 typedef enum {
00398 RIG_PTT_OFF = 0,
00399 RIG_PTT_ON
00400 } ptt_t;
00401
00406 typedef enum {
00407 RIG_PTT_NONE = 0,
00408 RIG_PTT_RIG,
00409 RIG_PTT_SERIAL_DTR,
00410 RIG_PTT_SERIAL_RTS,
00411 RIG_PTT_PARALLEL
00412 } ptt_type_t;
00413
00417 typedef enum {
00418 RIG_POWER_OFF = 0,
00419 RIG_POWER_ON = (1<<0),
00420 RIG_POWER_STANDBY = (1<<1)
00421 } powerstat_t;
00422
00426 typedef enum {
00427 RIG_RESET_NONE = 0,
00428 RIG_RESET_SOFT = (1<<0),
00429 RIG_RESET_VFO = (1<<1),
00430 RIG_RESET_MCALL = (1<<2),
00431 RIG_RESET_MASTER = (1<<3)
00432 } reset_t;
00433
00434
00450 typedef enum {
00451 RIG_OP_NONE = 0,
00452 RIG_OP_CPY = (1<<0),
00453 RIG_OP_XCHG = (1<<1),
00454 RIG_OP_FROM_VFO = (1<<2),
00455 RIG_OP_TO_VFO = (1<<3),
00456 RIG_OP_MCL = (1<<4),
00457 RIG_OP_UP = (1<<5),
00458 RIG_OP_DOWN = (1<<6),
00459 RIG_OP_BAND_UP = (1<<7),
00460 RIG_OP_BAND_DOWN = (1<<8),
00461 RIG_OP_LEFT = (1<<9),
00462 RIG_OP_RIGHT = (1<<10),
00463 RIG_OP_TUNE = (1<<11),
00464 RIG_OP_TOGGLE = (1<<12)
00465 } vfo_op_t;
00466
00467
00476 typedef enum {
00477 RIG_SCAN_NONE = 0,
00478 RIG_SCAN_STOP = RIG_SCAN_NONE,
00479 RIG_SCAN_MEM = (1<<0),
00480 RIG_SCAN_SLCT = (1<<1),
00481 RIG_SCAN_PRIO = (1<<2),
00482 RIG_SCAN_PROG = (1<<3),
00483 RIG_SCAN_DELTA = (1<<4),
00484 RIG_SCAN_VFO = (1<<5),
00485 RIG_SCAN_PLT = (1<<6)
00486 } scan_t;
00487
00491 typedef long token_t;
00492
00493 #define RIG_CONF_END 0
00494
00507
00508
00509 enum rig_conf_e {
00510 RIG_CONF_STRING,
00511 RIG_CONF_COMBO,
00512 RIG_CONF_NUMERIC,
00513 RIG_CONF_CHECKBUTTON,
00514 RIG_CONF_BUTTON
00515 };
00516
00517 #define RIG_COMBO_MAX 8
00518
00522 struct confparams {
00523 token_t token;
00524 const char *name;
00525 const char *label;
00526 const char *tooltip;
00527 const char *dflt;
00528 enum rig_conf_e type;
00529 union {
00530 struct {
00531 float min;
00532 float max;
00533 float step;
00534 } n;
00535 struct {
00536 const char *combostr[RIG_COMBO_MAX];
00537 } c;
00538 } u;
00539 };
00540
00545 typedef enum {
00546 RIG_ANN_NONE = 0,
00547 RIG_ANN_OFF = RIG_ANN_NONE,
00548 RIG_ANN_FREQ = (1<<0),
00549 RIG_ANN_RXMODE = (1<<1),
00550 RIG_ANN_CW = (1<<2),
00551 RIG_ANN_ENG = (1<<3),
00552 RIG_ANN_JAP = (1<<4)
00553 } ann_t;
00554
00555
00559 typedef int ant_t;
00560
00561 #define RIG_ANT_NONE 0
00562 #define RIG_ANT_N(n) ((ant_t)1<<(n))
00563 #define RIG_ANT_1 RIG_ANT_N(0)
00564 #define RIG_ANT_2 RIG_ANT_N(1)
00565 #define RIG_ANT_3 RIG_ANT_N(2)
00566 #define RIG_ANT_4 RIG_ANT_N(3)
00567 #define RIG_ANT_5 RIG_ANT_N(4)
00568
00572
00573 enum agc_level_e {
00574 RIG_AGC_OFF = 0,
00575 RIG_AGC_SUPERFAST,
00576 RIG_AGC_FAST,
00577 RIG_AGC_SLOW,
00578 RIG_AGC_USER,
00579 RIG_AGC_MEDIUM,
00580 RIG_AGC_AUTO
00581 };
00582
00586 enum meter_level_e {
00587 RIG_METER_NONE = 0,
00588 RIG_METER_SWR = (1<<0),
00589 RIG_METER_COMP = (1<<1),
00590 RIG_METER_ALC = (1<<2),
00591 RIG_METER_IC = (1<<3),
00592 RIG_METER_DB = (1<<4),
00593 RIG_METER_PO = (1<<5),
00594 RIG_METER_VDD = (1<<6)
00595 };
00596
00601 typedef union {
00602 signed int i;
00603 float f;
00604 char *s;
00605 const char *cs;
00606 } value_t;
00607
00616 enum rig_level_e {
00617 RIG_LEVEL_NONE = 0,
00618 RIG_LEVEL_PREAMP = (1<<0),
00619 RIG_LEVEL_ATT = (1<<1),
00620 RIG_LEVEL_VOX = (1<<2),
00621 RIG_LEVEL_AF = (1<<3),
00622 RIG_LEVEL_RF = (1<<4),
00623 RIG_LEVEL_SQL = (1<<5),
00624 RIG_LEVEL_IF = (1<<6),
00625 RIG_LEVEL_APF = (1<<7),
00626 RIG_LEVEL_NR = (1<<8),
00627 RIG_LEVEL_PBT_IN = (1<<9),
00628 RIG_LEVEL_PBT_OUT = (1<<10),
00629 RIG_LEVEL_CWPITCH = (1<<11),
00630 RIG_LEVEL_RFPOWER = (1<<12),
00631 RIG_LEVEL_MICGAIN = (1<<13),
00632 RIG_LEVEL_KEYSPD = (1<<14),
00633 RIG_LEVEL_NOTCHF = (1<<15),
00634 RIG_LEVEL_COMP = (1<<16),
00635 RIG_LEVEL_AGC = (1<<17),
00636 RIG_LEVEL_BKINDL = (1<<18),
00637 RIG_LEVEL_BALANCE = (1<<19),
00638 RIG_LEVEL_METER = (1<<20),
00640 RIG_LEVEL_VOXGAIN = (1<<21),
00641 RIG_LEVEL_VOXDELAY = RIG_LEVEL_VOX,
00642 RIG_LEVEL_ANTIVOX = (1<<22),
00643 RIG_LEVEL_SLOPE_LOW = (1<<23),
00644 RIG_LEVEL_SLOPE_HIGH = (1<<24),
00645 RIG_LEVEL_BKIN_DLYMS = (1<<25),
00648 RIG_LEVEL_RAWSTR = (1<<26),
00649 RIG_LEVEL_SQLSTAT = (1<<27),
00650 RIG_LEVEL_SWR = (1<<28),
00651 RIG_LEVEL_ALC = (1<<29),
00652 RIG_LEVEL_STRENGTH =(1<<30)
00653
00654 };
00655
00656 #define RIG_LEVEL_FLOAT_LIST (RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_APF|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_COMP|RIG_LEVEL_BALANCE|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX)
00657
00658 #define RIG_LEVEL_READONLY_LIST (RIG_LEVEL_SQLSTAT|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_STRENGTH|RIG_LEVEL_RAWSTR)
00659
00660 #define RIG_LEVEL_IS_FLOAT(l) ((l)&RIG_LEVEL_FLOAT_LIST)
00661 #define RIG_LEVEL_SET(l) ((l)&~RIG_LEVEL_READONLY_LIST)
00662
00663
00672 enum rig_parm_e {
00673 RIG_PARM_NONE = 0,
00674 RIG_PARM_ANN = (1<<0),
00675 RIG_PARM_APO = (1<<1),
00676 RIG_PARM_BACKLIGHT = (1<<2),
00677 RIG_PARM_BEEP = (1<<4),
00678 RIG_PARM_TIME = (1<<5),
00679 RIG_PARM_BAT = (1<<6),
00680 RIG_PARM_KEYLIGHT = (1<<7)
00681 };
00682
00683 #define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT)
00684 #define RIG_PARM_READONLY_LIST (RIG_PARM_BAT)
00685
00686 #define RIG_PARM_IS_FLOAT(l) ((l)&RIG_PARM_FLOAT_LIST)
00687 #define RIG_PARM_SET(l) ((l)&~RIG_PARM_READONLY_LIST)
00688
00689 #define RIG_SETTING_MAX 32
00690
00696 typedef unsigned long setting_t;
00697
00698
00699
00700
00701
00702 #define RIG_TRN_OFF 0
00703 #define RIG_TRN_RIG 1
00704 #define RIG_TRN_POLL 2
00705
00706
00715 enum rig_func_e {
00716 RIG_FUNC_NONE = 0,
00717 RIG_FUNC_FAGC = (1<<0),
00718 RIG_FUNC_NB = (1<<1),
00719 RIG_FUNC_COMP = (1<<2),
00720 RIG_FUNC_VOX = (1<<3),
00721 RIG_FUNC_TONE = (1<<4),
00722 RIG_FUNC_TSQL = (1<<5),
00723 RIG_FUNC_SBKIN = (1<<6),
00724 RIG_FUNC_FBKIN = (1<<7),
00725 RIG_FUNC_ANF = (1<<8),
00726 RIG_FUNC_NR = (1<<9),
00727 RIG_FUNC_AIP = (1<<10),
00728 RIG_FUNC_APF = (1<<11),
00729 RIG_FUNC_MON = (1<<12),
00730 RIG_FUNC_MN = (1<<13),
00731 RIG_FUNC_RF = (1<<14),
00732 RIG_FUNC_ARO = (1<<15),
00733 RIG_FUNC_LOCK = (1<<16),
00734 RIG_FUNC_MUTE = (1<<17),
00735 RIG_FUNC_VSC = (1<<18),
00736 RIG_FUNC_REV = (1<<19),
00737 RIG_FUNC_SQL = (1<<20),
00738 RIG_FUNC_ABM = (1<<21),
00739 RIG_FUNC_BC = (1<<22),
00740 RIG_FUNC_MBC = (1<<23),
00741
00742 RIG_FUNC_AFC = (1<<25),
00743 RIG_FUNC_SATMODE = (1<<26),
00744 RIG_FUNC_SCOPE = (1<<27),
00745 RIG_FUNC_RESUME = (1<<28),
00746 RIG_FUNC_TBURST = (1<<29),
00747 RIG_FUNC_TUNER = (1<<30)
00748 };
00749
00750
00751
00752
00753
00754 #define mW(p) ((int)(p))
00755 #define Watts(p) ((int)((p)*1000))
00756 #define W(p) Watts(p)
00757 #define kW(p) ((int)((p)*1000000L))
00758
00767 typedef enum {
00768 RIG_MODE_NONE = 0,
00769 RIG_MODE_AM = (1<<0),
00770 RIG_MODE_CW = (1<<1),
00771 RIG_MODE_USB = (1<<2),
00772 RIG_MODE_LSB = (1<<3),
00773 RIG_MODE_RTTY = (1<<4),
00774 RIG_MODE_FM = (1<<5),
00775 RIG_MODE_WFM = (1<<6),
00776 RIG_MODE_CWR = (1<<7),
00777 RIG_MODE_RTTYR = (1<<8),
00778 RIG_MODE_AMS = (1<<9),
00779 RIG_MODE_PKTLSB = (1<<10),
00780 RIG_MODE_PKTUSB = (1<<11),
00781 RIG_MODE_PKTFM = (1<<12),
00782 RIG_MODE_ECSSUSB = (1<<13),
00783 RIG_MODE_ECSSLSB = (1<<14),
00784 RIG_MODE_FAX = (1<<15),
00785 RIG_MODE_SAM = (1<<16),
00786 RIG_MODE_SAL = (1<<17),
00787 RIG_MODE_SAH = (1<<18),
00788 RIG_MODE_DSB = (1<<19),
00789 RIG_MODE_TESTS_MAX
00790 } rmode_t;
00791
00792
00794 #define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB)
00795
00797 #define RIG_MODE_ECSS (RIG_MODE_ECSSUSB|RIG_MODE_ECSSLSB)
00798
00799
00800 #define RIG_DBLST_END 0
00801 #define RIG_IS_DBLST_END(d) ((d)==0)
00802
00809 typedef struct freq_range_list {
00810 freq_t start;
00811 freq_t end;
00812 rmode_t modes;
00813 int low_power;
00814 int high_power;
00815 vfo_t vfo;
00816 ant_t ant;
00817 } freq_range_t;
00818
00819 #define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE}
00820 #define RIG_IS_FRNG_END(r) ((r).start == Hz(0) && (r).end == Hz(0))
00821
00822 #define RIG_ITU_REGION1 1
00823 #define RIG_ITU_REGION2 2
00824 #define RIG_ITU_REGION3 3
00825
00845 struct tuning_step_list {
00846 rmode_t modes;
00847 shortfreq_t ts;
00848 };
00849
00850 #define RIG_TS_ANY 0
00851 #define RIG_TS_END {RIG_MODE_NONE,0}
00852 #define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0)
00853
00880 struct filter_list {
00881 rmode_t modes;
00882 pbwidth_t width;
00883 };
00884
00885 #define RIG_FLT_ANY 0
00886 #define RIG_FLT_END {RIG_MODE_NONE,0}
00887 #define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE)
00888
00889
00891 #define RIG_CHFLAG_NONE 0
00892
00893 #define RIG_CHFLAG_SKIP (1<<0)
00894
00895 #define RIG_CHFLAG_DATA (1<<1)
00896
00901 struct ext_list {
00902 token_t token;
00903 value_t val;
00904 };
00905
00906 #define RIG_EXT_END {0, {.i=0}}
00907 #define RIG_IS_EXT_END(x) ((x).token == 0)
00908
00916 struct channel {
00917 int channel_num;
00918 int bank_num;
00919 vfo_t vfo;
00920 int ant;
00921 freq_t freq;
00922 rmode_t mode;
00923 pbwidth_t width;
00925 freq_t tx_freq;
00926 rmode_t tx_mode;
00927 pbwidth_t tx_width;
00929 split_t split;
00930 vfo_t tx_vfo;
00932 rptr_shift_t rptr_shift;
00933 shortfreq_t rptr_offs;
00934 shortfreq_t tuning_step;
00935 shortfreq_t rit;
00936 shortfreq_t xit;
00937 setting_t funcs;
00938 value_t levels[RIG_SETTING_MAX];
00939 tone_t ctcss_tone;
00940 tone_t ctcss_sql;
00941 tone_t dcs_code;
00942 tone_t dcs_sql;
00943 int scan_group;
00944 int flags;
00945 char channel_desc[MAXCHANDESC];
00946 struct ext_list *ext_levels;
00947 };
00949 typedef struct channel channel_t;
00950
00956 struct channel_cap {
00957 unsigned bank_num:1;
00958 unsigned vfo:1;
00959 unsigned ant:1;
00960 unsigned freq:1;
00961 unsigned mode:1;
00962 unsigned width:1;
00964 unsigned tx_freq:1;
00965 unsigned tx_mode:1;
00966 unsigned tx_width:1;
00968 unsigned split:1;
00969 unsigned tx_vfo:1;
00970 unsigned rptr_shift:1;
00971 unsigned rptr_offs:1;
00972 unsigned tuning_step:1;
00973 unsigned rit:1;
00974 unsigned xit:1;
00975 setting_t funcs;
00976 setting_t levels;
00977 unsigned ctcss_tone:1;
00978 unsigned ctcss_sql:1;
00979 unsigned dcs_code:1;
00980 unsigned dcs_sql:1;
00981 unsigned scan_group:1;
00982 unsigned flags:1;
00983 unsigned channel_desc:1;
00984 unsigned ext_levels:1;
00985 };
00986
00988 typedef struct channel_cap channel_cap_t;
00989
00990
01001 typedef enum {
01002 RIG_MTYPE_NONE=0,
01003 RIG_MTYPE_MEM,
01004 RIG_MTYPE_EDGE,
01005 RIG_MTYPE_CALL,
01006 RIG_MTYPE_MEMOPAD,
01007 RIG_MTYPE_SAT,
01008 RIG_MTYPE_BAND,
01009 RIG_MTYPE_PRIO
01010 } chan_type_t;
01011
01025 struct chan_list {
01026 int start;
01027 int end;
01028 chan_type_t type;
01029 channel_cap_t mem_caps;
01030 };
01031
01032 #define RIG_CHAN_END {0,0,RIG_MTYPE_NONE}
01033 #define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE)
01034
01035 #define RIG_MEM_CAPS_ALL -1
01036
01038 typedef struct chan_list chan_t;
01039
01051 struct gran {
01052 value_t min;
01053 value_t max;
01054 value_t step;
01055 };
01056
01058 typedef struct gran gran_t;
01059
01060
01062 struct cal_table {
01063 int size;
01064 struct {
01065 int raw;
01066 int val;
01067 } table[MAX_CAL_LENGTH];
01068 };
01069
01082 typedef struct cal_table cal_table_t;
01083
01084 #define EMPTY_STR_CAL { 0, { { 0, 0 }, } }
01085
01086
01087 typedef int (*chan_cb_t) (RIG *, channel_t**, int, const chan_t*, rig_ptr_t);
01088 typedef int (*confval_cb_t) (RIG *, const struct confparams *, value_t *, rig_ptr_t);
01089
01108 struct rig_caps {
01109 rig_model_t rig_model;
01110 const char *model_name;
01111 const char *mfg_name;
01112 const char *version;
01113 const char *copyright;
01114 enum rig_status_e status;
01116 int rig_type;
01117 ptt_type_t ptt_type;
01118 dcd_type_t dcd_type;
01119 rig_port_t port_type;
01121 int serial_rate_min;
01122 int serial_rate_max;
01123 int serial_data_bits;
01124 int serial_stop_bits;
01125 enum serial_parity_e serial_parity;
01126 enum serial_handshake_e serial_handshake;
01128 int write_delay;
01129 int post_write_delay;
01130 int timeout;
01131 int retry;
01133 setting_t has_get_func;
01134 setting_t has_set_func;
01135 setting_t has_get_level;
01136 setting_t has_set_level;
01137 setting_t has_get_parm;
01138 setting_t has_set_parm;
01140 gran_t level_gran[RIG_SETTING_MAX];
01141 gran_t parm_gran[RIG_SETTING_MAX];
01143 const struct confparams *extparms;
01144 const struct confparams *extlevels;
01146 const tone_t *ctcss_list;
01147 const tone_t *dcs_list;
01149 int preamp[MAXDBLSTSIZ];
01150 int attenuator[MAXDBLSTSIZ];
01151 shortfreq_t max_rit;
01152 shortfreq_t max_xit;
01153 shortfreq_t max_ifshift;
01155 ann_t announces;
01157 vfo_op_t vfo_ops;
01158 scan_t scan_ops;
01159 int targetable_vfo;
01160 int transceive;
01162 int bank_qty;
01163 int chan_desc_sz;
01165 chan_t chan_list[CHANLSTSIZ];
01167 freq_range_t rx_range_list1[FRQRANGESIZ];
01168 freq_range_t tx_range_list1[FRQRANGESIZ];
01169 freq_range_t rx_range_list2[FRQRANGESIZ];
01170 freq_range_t tx_range_list2[FRQRANGESIZ];
01172 struct tuning_step_list tuning_steps[TSLSTSIZ];
01173 struct filter_list filters[FLTLSTSIZ];
01175 cal_table_t str_cal;
01177 const struct confparams *cfgparams;
01178 const rig_ptr_t priv;
01180
01181
01182
01183
01184
01185 int (*rig_init) (RIG * rig);
01186 int (*rig_cleanup) (RIG * rig);
01187 int (*rig_open) (RIG * rig);
01188 int (*rig_close) (RIG * rig);
01189
01190
01191
01192
01193
01194
01195 int (*set_freq) (RIG * rig, vfo_t vfo, freq_t freq);
01196 int (*get_freq) (RIG * rig, vfo_t vfo, freq_t * freq);
01197
01198 int (*set_mode) (RIG * rig, vfo_t vfo, rmode_t mode,
01199 pbwidth_t width);
01200 int (*get_mode) (RIG * rig, vfo_t vfo, rmode_t * mode,
01201 pbwidth_t * width);
01202
01203 int (*set_vfo) (RIG * rig, vfo_t vfo);
01204 int (*get_vfo) (RIG * rig, vfo_t * vfo);
01205
01206 int (*set_ptt) (RIG * rig, vfo_t vfo, ptt_t ptt);
01207 int (*get_ptt) (RIG * rig, vfo_t vfo, ptt_t * ptt);
01208 int (*get_dcd) (RIG * rig, vfo_t vfo, dcd_t * dcd);
01209
01210 int (*set_rptr_shift) (RIG * rig, vfo_t vfo,
01211 rptr_shift_t rptr_shift);
01212 int (*get_rptr_shift) (RIG * rig, vfo_t vfo,
01213 rptr_shift_t * rptr_shift);
01214
01215 int (*set_rptr_offs) (RIG * rig, vfo_t vfo, shortfreq_t offs);
01216 int (*get_rptr_offs) (RIG * rig, vfo_t vfo, shortfreq_t * offs);
01217
01218 int (*set_split_freq) (RIG * rig, vfo_t vfo, freq_t tx_freq);
01219 int (*get_split_freq) (RIG * rig, vfo_t vfo, freq_t * tx_freq);
01220 int (*set_split_mode) (RIG * rig, vfo_t vfo, rmode_t tx_mode,
01221 pbwidth_t tx_width);
01222 int (*get_split_mode) (RIG * rig, vfo_t vfo, rmode_t * tx_mode,
01223 pbwidth_t * tx_width);
01224
01225 int (*set_split_vfo) (RIG * rig, vfo_t vfo, split_t split, vfo_t tx_vfo);
01226 int (*get_split_vfo) (RIG * rig, vfo_t vfo, split_t * split, vfo_t *tx_vfo);
01227
01228 int (*set_rit) (RIG * rig, vfo_t vfo, shortfreq_t rit);
01229 int (*get_rit) (RIG * rig, vfo_t vfo, shortfreq_t * rit);
01230 int (*set_xit) (RIG * rig, vfo_t vfo, shortfreq_t xit);
01231 int (*get_xit) (RIG * rig, vfo_t vfo, shortfreq_t * xit);
01232
01233 int (*set_ts) (RIG * rig, vfo_t vfo, shortfreq_t ts);
01234 int (*get_ts) (RIG * rig, vfo_t vfo, shortfreq_t * ts);
01235
01236 int (*set_dcs_code) (RIG * rig, vfo_t vfo, tone_t code);
01237 int (*get_dcs_code) (RIG * rig, vfo_t vfo, tone_t * code);
01238 int (*set_tone) (RIG * rig, vfo_t vfo, tone_t tone);
01239 int (*get_tone) (RIG * rig, vfo_t vfo, tone_t * tone);
01240 int (*set_ctcss_tone) (RIG * rig, vfo_t vfo, tone_t tone);
01241 int (*get_ctcss_tone) (RIG * rig, vfo_t vfo, tone_t * tone);
01242
01243 int (*set_dcs_sql) (RIG * rig, vfo_t vfo, tone_t code);
01244 int (*get_dcs_sql) (RIG * rig, vfo_t vfo, tone_t * code);
01245 int (*set_tone_sql) (RIG * rig, vfo_t vfo, tone_t tone);
01246 int (*get_tone_sql) (RIG * rig, vfo_t vfo, tone_t * tone);
01247 int (*set_ctcss_sql) (RIG * rig, vfo_t vfo, tone_t tone);
01248 int (*get_ctcss_sql) (RIG * rig, vfo_t vfo, tone_t * tone);
01249
01250 int (*power2mW) (RIG * rig, unsigned int *mwpower, float power,
01251 freq_t freq, rmode_t mode);
01252 int (*mW2power) (RIG * rig, float *power, unsigned int mwpower,
01253 freq_t freq, rmode_t mode);
01254
01255 int (*set_powerstat) (RIG * rig, powerstat_t status);
01256 int (*get_powerstat) (RIG * rig, powerstat_t * status);
01257 int (*reset) (RIG * rig, reset_t reset);
01258
01259 int (*set_ant) (RIG * rig, vfo_t vfo, ant_t ant);
01260 int (*get_ant) (RIG * rig, vfo_t vfo, ant_t * ant);
01261
01262 int (*set_level) (RIG * rig, vfo_t vfo, setting_t level,
01263 value_t val);
01264 int (*get_level) (RIG * rig, vfo_t vfo, setting_t level,
01265 value_t * val);
01266
01267 int (*set_func) (RIG * rig, vfo_t vfo, setting_t func, int status);
01268 int (*get_func) (RIG * rig, vfo_t vfo, setting_t func,
01269 int *status);
01270
01271 int (*set_parm) (RIG * rig, setting_t parm, value_t val);
01272 int (*get_parm) (RIG * rig, setting_t parm, value_t * val);
01273
01274 int (*set_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t val);
01275 int (*get_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t *val);
01276
01277 int (*set_ext_parm)(RIG *rig, token_t token, value_t val);
01278 int (*get_ext_parm)(RIG *rig, token_t token, value_t *val);
01279
01280 int (*set_conf) (RIG * rig, token_t token, const char *val);
01281 int (*get_conf) (RIG * rig, token_t token, char *val);
01282
01283 int (*send_dtmf) (RIG * rig, vfo_t vfo, const char *digits);
01284 int (*recv_dtmf) (RIG * rig, vfo_t vfo, char *digits, int *length);
01285 int (*send_morse) (RIG * rig, vfo_t vfo, const char *msg);
01286
01287 int (*set_bank) (RIG * rig, vfo_t vfo, int bank);
01288 int (*set_mem) (RIG * rig, vfo_t vfo, int ch);
01289 int (*get_mem) (RIG * rig, vfo_t vfo, int *ch);
01290 int (*vfo_op) (RIG * rig, vfo_t vfo, vfo_op_t op);
01291 int (*scan) (RIG * rig, vfo_t vfo, scan_t scan, int ch);
01292
01293 int (*set_trn) (RIG * rig, int trn);
01294 int (*get_trn) (RIG * rig, int *trn);
01295
01296 int (*decode_event) (RIG * rig);
01297
01298 int (*set_channel) (RIG * rig, const channel_t * chan);
01299 int (*get_channel) (RIG * rig, channel_t * chan);
01300
01301 const char *(*get_info) (RIG * rig);
01302
01303 int (*set_chan_all_cb) (RIG * rig, chan_cb_t chan_cb, rig_ptr_t);
01304 int (*get_chan_all_cb) (RIG * rig, chan_cb_t chan_cb, rig_ptr_t);
01305
01306 int (*set_mem_all_cb) (RIG * rig, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t);
01307 int (*get_mem_all_cb) (RIG * rig, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t);
01308
01309 const char *clone_combo_set;
01310 const char *clone_combo_get;
01311 };
01312
01318 typedef struct {
01319 union {
01320 rig_port_t rig;
01321 ptt_type_t ptt;
01322 dcd_type_t dcd;
01323 } type;
01324 int fd;
01325 void* handle;
01327 int write_delay;
01328 int post_write_delay;
01329 struct { int tv_sec,tv_usec; } post_write_date;
01330 int timeout;
01331 int retry;
01333 char pathname[FILPATHLEN];
01334 union {
01335 struct {
01336 int rate;
01337 int data_bits;
01338 int stop_bits;
01339 enum serial_parity_e parity;
01340 enum serial_handshake_e handshake;
01341 enum serial_control_state_e rts_state;
01342 enum serial_control_state_e dtr_state;
01343 } serial;
01344 struct {
01345 int pin;
01346 } parallel;
01347 struct {
01348 int vid;
01349 int pid;
01350 int conf;
01351 int iface;
01352 int alt;
01353 } usb;
01354 } parm;
01355 } hamlib_port_t;
01356
01357 #if !defined(__APPLE__) || !defined(__cplusplus)
01358 typedef hamlib_port_t port_t;
01359 #endif
01360
01361
01371 struct rig_state {
01372
01373
01374
01375 hamlib_port_t rigport;
01376 hamlib_port_t pttport;
01377 hamlib_port_t dcdport;
01379 double vfo_comp;
01381 int itu_region;
01382 freq_range_t rx_range_list[FRQRANGESIZ];
01383 freq_range_t tx_range_list[FRQRANGESIZ];
01385 struct tuning_step_list tuning_steps[TSLSTSIZ];
01387 struct filter_list filters[FLTLSTSIZ];
01389 cal_table_t str_cal;
01391 chan_t chan_list[CHANLSTSIZ];
01393 shortfreq_t max_rit;
01394 shortfreq_t max_xit;
01395 shortfreq_t max_ifshift;
01397 ann_t announces;
01399 int preamp[MAXDBLSTSIZ];
01400 int attenuator[MAXDBLSTSIZ];
01402 setting_t has_get_func;
01403 setting_t has_set_func;
01404 setting_t has_get_level;
01405 setting_t has_set_level;
01406 setting_t has_get_parm;
01407 setting_t has_set_parm;
01409 gran_t level_gran[RIG_SETTING_MAX];
01410 gran_t parm_gran[RIG_SETTING_MAX];
01413
01414
01415
01416
01417 int hold_decode;
01418 vfo_t current_vfo;
01419 int vfo_list;
01420 int comm_state;
01421 rig_ptr_t priv;
01422 rig_ptr_t obj;
01424 int transceive;
01425 int poll_interval;
01426 freq_t current_freq;
01427 rmode_t current_mode;
01428 pbwidth_t current_width;
01429 vfo_t tx_vfo;
01431 };
01432
01433
01434 typedef int (*vprintf_cb_t) (enum rig_debug_level_e, rig_ptr_t, const char *, va_list);
01435
01436 typedef int (*freq_cb_t) (RIG *, vfo_t, freq_t, rig_ptr_t);
01437 typedef int (*mode_cb_t) (RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t);
01438 typedef int (*vfo_cb_t) (RIG *, vfo_t, rig_ptr_t);
01439 typedef int (*ptt_cb_t) (RIG *, vfo_t, ptt_t, rig_ptr_t);
01440 typedef int (*dcd_cb_t) (RIG *, vfo_t, dcd_t, rig_ptr_t);
01441 typedef int (*pltune_cb_t) (RIG *, vfo_t, freq_t *, rmode_t *, pbwidth_t *, rig_ptr_t);
01442
01460 struct rig_callbacks {
01461 freq_cb_t freq_event;
01462 rig_ptr_t freq_arg;
01463 mode_cb_t mode_event;
01464 rig_ptr_t mode_arg;
01465 vfo_cb_t vfo_event;
01466 rig_ptr_t vfo_arg;
01467 ptt_cb_t ptt_event;
01468 rig_ptr_t ptt_arg;
01469 dcd_cb_t dcd_event;
01470 rig_ptr_t dcd_arg;
01471 pltune_cb_t pltune;
01472 rig_ptr_t pltune_arg;
01473
01474 };
01475
01485 struct rig {
01486 struct rig_caps *caps;
01487 struct rig_state state;
01488 struct rig_callbacks callbacks;
01489 };
01490
01491
01492
01493
01494
01495 extern HAMLIB_EXPORT(RIG *) rig_init HAMLIB_PARAMS((rig_model_t rig_model));
01496 extern HAMLIB_EXPORT(int) rig_open HAMLIB_PARAMS((RIG *rig));
01497
01498
01499
01500
01501
01502
01503 extern HAMLIB_EXPORT(int) rig_set_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t freq));
01504 extern HAMLIB_EXPORT(int) rig_get_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t *freq));
01505
01506 extern HAMLIB_EXPORT(int) rig_set_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width));
01507 extern HAMLIB_EXPORT(int) rig_get_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width));
01508
01509 extern HAMLIB_EXPORT(int) rig_set_vfo HAMLIB_PARAMS((RIG *rig, vfo_t vfo));
01510 extern HAMLIB_EXPORT(int) rig_get_vfo HAMLIB_PARAMS((RIG *rig, vfo_t *vfo));
01511
01512 extern HAMLIB_EXPORT(int) rig_set_ptt HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ptt_t ptt));
01513 extern HAMLIB_EXPORT(int) rig_get_ptt HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ptt_t *ptt));
01514
01515 extern HAMLIB_EXPORT(int) rig_get_dcd HAMLIB_PARAMS((RIG *rig, vfo_t vfo, dcd_t *dcd));
01516
01517 extern HAMLIB_EXPORT(int) rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift));
01518 extern HAMLIB_EXPORT(int) rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift));
01519 extern HAMLIB_EXPORT(int) rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t rptr_offs));
01520 extern HAMLIB_EXPORT(int) rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs));
01521
01522 extern HAMLIB_EXPORT(int) rig_set_ctcss_tone HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t tone));
01523 extern HAMLIB_EXPORT(int) rig_get_ctcss_tone HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *tone));
01524 extern HAMLIB_EXPORT(int) rig_set_dcs_code HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t code));
01525 extern HAMLIB_EXPORT(int) rig_get_dcs_code HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *code));
01526
01527 extern HAMLIB_EXPORT(int) rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t tone));
01528 extern HAMLIB_EXPORT(int) rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *tone));
01529 extern HAMLIB_EXPORT(int) rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t code));
01530 extern HAMLIB_EXPORT(int) rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *code));
01531
01532 extern HAMLIB_EXPORT(int) rig_set_split_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t tx_freq));
01533 extern HAMLIB_EXPORT(int) rig_get_split_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t *tx_freq));
01534 extern HAMLIB_EXPORT(int) rig_set_split_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t tx_mode, pbwidth_t tx_width));
01535 extern HAMLIB_EXPORT(int) rig_get_split_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t *tx_mode, pbwidth_t *tx_width));
01536 extern HAMLIB_EXPORT(int) rig_set_split_vfo HAMLIB_PARAMS((RIG*, vfo_t rx_vfo, split_t split, vfo_t tx_vfo));
01537 extern HAMLIB_EXPORT(int) rig_get_split_vfo HAMLIB_PARAMS((RIG*, vfo_t rx_vfo, split_t *split, vfo_t *tx_vfo));
01538 #define rig_set_split(r,v,s) rig_set_split_vfo((r),(v),(s),RIG_VFO_CURR)
01539 #define rig_get_split(r,v,s) ({ vfo_t _tx_vfo; rig_get_split_vfo((r),(v),(s),&_tx_vfo); })
01540
01541 extern HAMLIB_EXPORT(int) rig_set_rit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t rit));
01542 extern HAMLIB_EXPORT(int) rig_get_rit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *rit));
01543 extern HAMLIB_EXPORT(int) rig_set_xit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t xit));
01544 extern HAMLIB_EXPORT(int) rig_get_xit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *xit));
01545
01546 extern HAMLIB_EXPORT(int) rig_set_ts HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t ts));
01547 extern HAMLIB_EXPORT(int) rig_get_ts HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *ts));
01548
01549 extern HAMLIB_EXPORT(int) rig_power2mW HAMLIB_PARAMS((RIG *rig, unsigned int *mwpower, float power, freq_t freq, rmode_t mode));
01550 extern HAMLIB_EXPORT(int) rig_mW2power HAMLIB_PARAMS((RIG *rig, float *power, unsigned int mwpower, freq_t freq, rmode_t mode));
01551
01552 extern HAMLIB_EXPORT(shortfreq_t) rig_get_resolution HAMLIB_PARAMS((RIG *rig, rmode_t mode));
01553
01554 extern HAMLIB_EXPORT(int) rig_set_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t level, value_t val));
01555 extern HAMLIB_EXPORT(int) rig_get_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t level, value_t *val));
01556
01557 #define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s))
01558
01559 extern HAMLIB_EXPORT(int) rig_set_parm HAMLIB_PARAMS((RIG *rig, setting_t parm, value_t val));
01560 extern HAMLIB_EXPORT(int) rig_get_parm HAMLIB_PARAMS((RIG *rig, setting_t parm, value_t *val));
01561
01562 extern HAMLIB_EXPORT(int) rig_set_conf HAMLIB_PARAMS((RIG *rig, token_t token, const char *val));
01563 extern HAMLIB_EXPORT(int) rig_get_conf HAMLIB_PARAMS((RIG *rig, token_t token, char *val));
01564
01565 extern HAMLIB_EXPORT(int) rig_set_powerstat HAMLIB_PARAMS((RIG *rig, powerstat_t status));
01566 extern HAMLIB_EXPORT(int) rig_get_powerstat HAMLIB_PARAMS((RIG *rig, powerstat_t *status));
01567
01568 extern HAMLIB_EXPORT(int) rig_reset HAMLIB_PARAMS((RIG *rig, reset_t reset));
01569
01570 extern HAMLIB_EXPORT(int) rig_set_ext_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo,
01571 token_t token, value_t val));
01572 extern HAMLIB_EXPORT(int) rig_get_ext_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo,
01573 token_t token, value_t *val));
01574
01575 extern HAMLIB_EXPORT(int) rig_set_ext_parm HAMLIB_PARAMS((RIG *rig, token_t token, value_t val));
01576 extern HAMLIB_EXPORT(int) rig_get_ext_parm HAMLIB_PARAMS((RIG *rig, token_t token, value_t *val));
01577
01578 extern HAMLIB_EXPORT(int) rig_ext_level_foreach HAMLIB_PARAMS((RIG *rig, int (*cfunc)(RIG*, const struct confparams *, rig_ptr_t), rig_ptr_t data));
01579 extern HAMLIB_EXPORT(int) rig_ext_parm_foreach HAMLIB_PARAMS((RIG *rig, int (*cfunc)(RIG*, const struct confparams *, rig_ptr_t), rig_ptr_t data));
01580 extern HAMLIB_EXPORT(const struct confparams*) rig_ext_lookup HAMLIB_PARAMS((RIG *rig, const char *name));
01581 extern HAMLIB_EXPORT(const struct confparams *) rig_ext_lookup_tok HAMLIB_PARAMS((RIG *rig, token_t token));
01582 extern HAMLIB_EXPORT(token_t) rig_ext_token_lookup HAMLIB_PARAMS((RIG *rig, const char *name));
01583
01584
01585 extern HAMLIB_EXPORT(int) rig_token_foreach HAMLIB_PARAMS((RIG *rig, int (*cfunc)(const struct confparams *, rig_ptr_t), rig_ptr_t data));
01586 extern HAMLIB_EXPORT(const struct confparams*) rig_confparam_lookup HAMLIB_PARAMS((RIG *rig, const char *name));
01587 extern HAMLIB_EXPORT(token_t) rig_token_lookup HAMLIB_PARAMS((RIG *rig, const char *name));
01588
01589 extern HAMLIB_EXPORT(int) rig_close HAMLIB_PARAMS((RIG *rig));
01590 extern HAMLIB_EXPORT(int) rig_cleanup HAMLIB_PARAMS((RIG *rig));
01591
01592 extern HAMLIB_EXPORT(int) rig_set_ant HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ant_t ant));
01593 extern HAMLIB_EXPORT(int) rig_get_ant HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ant_t *ant));
01594
01595 extern HAMLIB_EXPORT(setting_t) rig_has_get_level HAMLIB_PARAMS((RIG *rig, setting_t level));
01596 extern HAMLIB_EXPORT(setting_t) rig_has_set_level HAMLIB_PARAMS((RIG *rig, setting_t level));
01597
01598 extern HAMLIB_EXPORT(setting_t) rig_has_get_parm HAMLIB_PARAMS((RIG *rig, setting_t parm));
01599 extern HAMLIB_EXPORT(setting_t) rig_has_set_parm HAMLIB_PARAMS((RIG *rig, setting_t parm));
01600
01601 extern HAMLIB_EXPORT(setting_t) rig_has_get_func HAMLIB_PARAMS((RIG *rig, setting_t func));
01602 extern HAMLIB_EXPORT(setting_t) rig_has_set_func HAMLIB_PARAMS((RIG *rig, setting_t func));
01603
01604 extern HAMLIB_EXPORT(int) rig_set_func HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t func, int status));
01605 extern HAMLIB_EXPORT(int) rig_get_func HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t func, int *status));
01606
01607 extern HAMLIB_EXPORT(int) rig_send_dtmf HAMLIB_PARAMS((RIG *rig, vfo_t vfo, const char *digits));
01608 extern HAMLIB_EXPORT(int) rig_recv_dtmf HAMLIB_PARAMS((RIG *rig, vfo_t vfo, char *digits, int *length));
01609 extern HAMLIB_EXPORT(int) rig_send_morse HAMLIB_PARAMS((RIG *rig, vfo_t vfo, const char *msg));
01610
01611 extern HAMLIB_EXPORT(int) rig_set_bank HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int bank));
01612 extern HAMLIB_EXPORT(int) rig_set_mem HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int ch));
01613 extern HAMLIB_EXPORT(int) rig_get_mem HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int *ch));
01614 extern HAMLIB_EXPORT(int) rig_vfo_op HAMLIB_PARAMS((RIG *rig, vfo_t vfo, vfo_op_t op));
01615 extern HAMLIB_EXPORT(vfo_op_t) rig_has_vfo_op HAMLIB_PARAMS((RIG *rig, vfo_op_t op));
01616 extern HAMLIB_EXPORT(int) rig_scan HAMLIB_PARAMS((RIG *rig, vfo_t vfo, scan_t scan, int ch));
01617 extern HAMLIB_EXPORT(scan_t) rig_has_scan HAMLIB_PARAMS((RIG *rig, scan_t scan));
01618
01619 extern HAMLIB_EXPORT(int) rig_set_channel HAMLIB_PARAMS((RIG *rig, const channel_t *chan));
01620 extern HAMLIB_EXPORT(int) rig_get_channel HAMLIB_PARAMS((RIG *rig, channel_t *chan));
01621
01622 extern HAMLIB_EXPORT(int) rig_set_chan_all HAMLIB_PARAMS((RIG *rig, const channel_t chans[]));
01623 extern HAMLIB_EXPORT(int) rig_get_chan_all HAMLIB_PARAMS((RIG *rig, channel_t chans[]));
01624 extern HAMLIB_EXPORT(int) rig_set_chan_all_cb HAMLIB_PARAMS((RIG *rig, chan_cb_t chan_cb, rig_ptr_t));
01625 extern HAMLIB_EXPORT(int) rig_get_chan_all_cb HAMLIB_PARAMS((RIG *rig, chan_cb_t chan_cb, rig_ptr_t));
01626
01627 extern HAMLIB_EXPORT(int) rig_set_mem_all_cb HAMLIB_PARAMS((RIG *rig, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t));
01628 extern HAMLIB_EXPORT(int) rig_get_mem_all_cb HAMLIB_PARAMS((RIG *rig, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t));
01629 extern HAMLIB_EXPORT(int) rig_set_mem_all HAMLIB_PARAMS((RIG *rig, const channel_t *chan, const struct confparams *, const value_t *));
01630 extern HAMLIB_EXPORT(int) rig_get_mem_all HAMLIB_PARAMS((RIG *rig, channel_t *chan, const struct confparams *, value_t *));
01631 extern HAMLIB_EXPORT(const chan_t *) rig_lookup_mem_caps HAMLIB_PARAMS((RIG *rig, int ch));
01632 extern HAMLIB_EXPORT(int) rig_mem_count HAMLIB_PARAMS((RIG *rig));
01633
01634
01635 extern HAMLIB_EXPORT(int) rig_set_trn HAMLIB_PARAMS((RIG *rig, int trn));
01636 extern HAMLIB_EXPORT(int) rig_get_trn HAMLIB_PARAMS((RIG *rig, int *trn));
01637 extern HAMLIB_EXPORT(int) rig_set_freq_callback HAMLIB_PARAMS((RIG *, freq_cb_t, rig_ptr_t));
01638 extern HAMLIB_EXPORT(int) rig_set_mode_callback HAMLIB_PARAMS((RIG *, mode_cb_t, rig_ptr_t));
01639 extern HAMLIB_EXPORT(int) rig_set_vfo_callback HAMLIB_PARAMS((RIG *, vfo_cb_t, rig_ptr_t));
01640 extern HAMLIB_EXPORT(int) rig_set_ptt_callback HAMLIB_PARAMS((RIG *, ptt_cb_t, rig_ptr_t));
01641 extern HAMLIB_EXPORT(int) rig_set_dcd_callback HAMLIB_PARAMS((RIG *, dcd_cb_t, rig_ptr_t));
01642 extern HAMLIB_EXPORT(int) rig_set_pltune_callback HAMLIB_PARAMS((RIG *, pltune_cb_t, rig_ptr_t));
01643
01644 extern HAMLIB_EXPORT(const char *) rig_get_info HAMLIB_PARAMS((RIG *rig));
01645
01646 extern HAMLIB_EXPORT(const struct rig_caps *) rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model));
01647 extern HAMLIB_EXPORT(const freq_range_t *) rig_get_range HAMLIB_PARAMS((const freq_range_t range_list[], freq_t freq, rmode_t mode));
01648
01649 extern HAMLIB_EXPORT(pbwidth_t) rig_passband_normal HAMLIB_PARAMS((RIG *rig, rmode_t mode));
01650 extern HAMLIB_EXPORT(pbwidth_t) rig_passband_narrow HAMLIB_PARAMS((RIG *rig, rmode_t mode));
01651 extern HAMLIB_EXPORT(pbwidth_t) rig_passband_wide HAMLIB_PARAMS((RIG *rig, rmode_t mode));
01652
01653 extern HAMLIB_EXPORT(const char *) rigerror HAMLIB_PARAMS((int errnum));
01654
01655 extern HAMLIB_EXPORT(int) rig_setting2idx HAMLIB_PARAMS((setting_t s));
01656 #define rig_idx2setting(i) (1UL<<(i))
01657
01658
01659
01660
01661
01662 extern HAMLIB_EXPORT(void) rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
01663 #define rig_set_debug_level(level) rig_set_debug(level)
01664 extern HAMLIB_EXPORT(int) rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
01665 extern HAMLIB_EXPORT(void) rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level, const char *fmt, ...));
01666 extern HAMLIB_EXPORT(vprintf_cb_t) rig_set_debug_callback HAMLIB_PARAMS((vprintf_cb_t cb, rig_ptr_t arg));
01667 extern HAMLIB_EXPORT(FILE*) rig_set_debug_file HAMLIB_PARAMS((FILE *stream));
01668
01669 extern HAMLIB_EXPORT(int) rig_register HAMLIB_PARAMS((const struct rig_caps *caps));
01670 extern HAMLIB_EXPORT(int) rig_unregister HAMLIB_PARAMS((rig_model_t rig_model));
01671 extern HAMLIB_EXPORT(int) rig_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rig_caps*, rig_ptr_t), rig_ptr_t data));
01672 extern HAMLIB_EXPORT(int) rig_load_backend HAMLIB_PARAMS((const char *be_name));
01673 extern HAMLIB_EXPORT(int) rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model));
01674 extern HAMLIB_EXPORT(int) rig_load_all_backends HAMLIB_PARAMS((void));
01675
01676 typedef int (*rig_probe_func_t)(const hamlib_port_t *, rig_model_t, rig_ptr_t);
01677 extern HAMLIB_EXPORT(int) rig_probe_all HAMLIB_PARAMS((hamlib_port_t *p, rig_probe_func_t, rig_ptr_t));
01678 extern HAMLIB_EXPORT(rig_model_t) rig_probe HAMLIB_PARAMS((hamlib_port_t *p));
01679
01680
01681
01682 extern HAMLIB_EXPORT(const char *) rig_strrmode(rmode_t mode);
01683 extern HAMLIB_EXPORT(const char *) rig_strvfo(vfo_t vfo);
01684 extern HAMLIB_EXPORT(const char *) rig_strfunc(setting_t);
01685 extern HAMLIB_EXPORT(const char *) rig_strlevel(setting_t);
01686 extern HAMLIB_EXPORT(const char *) rig_strparm(setting_t);
01687 extern HAMLIB_EXPORT(const char *) rig_strptrshift(rptr_shift_t);
01688 extern HAMLIB_EXPORT(const char *) rig_strvfop(vfo_op_t op);
01689 extern HAMLIB_EXPORT(const char *) rig_strscan(scan_t scan);
01690 extern HAMLIB_EXPORT(const char *) rig_strstatus(enum rig_status_e status);
01691 extern HAMLIB_EXPORT(const char *) rig_strmtype(chan_type_t mtype);
01692
01693 extern HAMLIB_EXPORT(rmode_t) rig_parse_mode(const char *s);
01694 extern HAMLIB_EXPORT(vfo_t) rig_parse_vfo(const char *s);
01695 extern HAMLIB_EXPORT(setting_t) rig_parse_func(const char *s);
01696 extern HAMLIB_EXPORT(setting_t) rig_parse_level(const char *s);
01697 extern HAMLIB_EXPORT(setting_t) rig_parse_parm(const char *s);
01698 extern HAMLIB_EXPORT(vfo_op_t) rig_parse_vfo_op(const char *s);
01699 extern HAMLIB_EXPORT(scan_t) rig_parse_scan(const char *s);
01700 extern HAMLIB_EXPORT(rptr_shift_t) rig_parse_rptr_shift(const char *s);
01701 extern HAMLIB_EXPORT(chan_type_t) rig_parse_mtype(const char *s);
01702
01703
01704 __END_DECLS
01705
01706 #endif
01707