Main Page | Data Structures | File List | Data Fields | Globals | Related Pages | Examples

rig.h

Go to the documentation of this file.
00001 /* 00002 * Hamlib Interface - API header 00003 * Copyright (c) 2000-2003 by Stephane Fillod and Frank Singleton 00004 * 00005 * $Id: rig.h,v 1.92 2004/02/09 22:07:21 fillods Exp $ 00006 * 00007 * This library is free software; you can redistribute it and/or modify 00008 * it under the terms of the GNU Library General Public License as 00009 * published by the Free Software Foundation; either version 2 of 00010 * the License, or (at your option) any later version. 00011 * 00012 * This program is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU Library General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Library General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00020 * 00021 */ 00022 00023 #ifndef _RIG_H 00024 #define _RIG_H 1 00025 00026 #include <hamlib/riglist.h> /* list in another file to not mess up w/ this one */ 00027 #include <sys/time.h> /* required for struct timeval */ 00028 00029 #if defined(__CYGWIN__) || defined(_WIN32) 00030 #include <windows.h> /* HANDLE definition */ 00031 #endif 00032 00042 /* __BEGIN_DECLS should be used at the beginning of your declarations, 00043 * so that C++ compilers don't mangle their names. Use __END_DECLS at 00044 * the end of C declarations. */ 00045 #undef __BEGIN_DECLS 00046 #undef __END_DECLS 00047 #ifdef __cplusplus 00048 # define __BEGIN_DECLS extern "C" { 00049 # define __END_DECLS } 00050 #else 00051 # define __BEGIN_DECLS /* empty */ 00052 # define __END_DECLS /* empty */ 00053 #endif 00054 00055 /* HAMLIB_PARAMS is a macro used to wrap function prototypes, so that compilers 00056 * that don't understand ANSI C prototypes still work, and ANSI C 00057 * compilers can issue warnings about type mismatches. */ 00058 #undef HAMLIB_PARAMS 00059 #if defined (__STDC__) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(__CYGWIN__) || defined(_WIN32) || defined(__cplusplus) 00060 # define HAMLIB_PARAMS(protos) protos 00061 # define rig_ptr_t void* 00062 #else 00063 # define HAMLIB_PARAMS(protos) () 00064 # define rig_ptr_t char* 00065 #endif 00066 00067 #include <hamlib/rig_dll.h> 00068 00069 00070 __BEGIN_DECLS 00071 00072 extern HAMLIB_EXPORT_VAR(const char) hamlib_version[]; 00073 extern HAMLIB_EXPORT_VAR(const char) hamlib_copyright[]; 00074 00079 enum rig_errcode_e { 00080 RIG_OK=0, /*<! No error, operation completed sucessfully */ 00081 RIG_EINVAL, /*<! invalid parameter */ 00082 RIG_ECONF, /*<! invalid configuration (serial,..) */ 00083 RIG_ENOMEM, /*<! memory shortage */ 00084 RIG_ENIMPL, /*<! function not implemented, but will be */ 00085 RIG_ETIMEOUT, /*<! communication timed out */ 00086 RIG_EIO, /*<! IO error, including open failed */ 00087 RIG_EINTERNAL, /*<! Internal Hamlib error, huh! */ 00088 RIG_EPROTO, /*<! Protocol error */ 00089 RIG_ERJCTED, /*<! Command rejected by the rig */ 00090 RIG_ETRUNC, /*<! Command performed, but arg truncated */ 00091 RIG_ENAVAIL, /*<! function not available */ 00092 RIG_ENTARGET, /*<! VFO not targetable */ 00093 RIG_BUSERROR, /*<! Error talking on the bus */ 00094 RIG_BUSBUSY, /*<! Collision on the bus */ 00095 RIG_EARG, /*<! NULL RIG handle or any invalid pointer parameter in get arg */ 00096 RIG_EVFO, /*<! Invalid VFO */ 00097 RIG_EDOM /*<! Argument out of domain of func */ 00098 }; 00099 00107 enum rig_debug_level_e { 00108 RIG_DEBUG_NONE = 0, /*<! no bug reporting */ 00109 RIG_DEBUG_BUG, /*<! serious bug */ 00110 RIG_DEBUG_ERR, /*<! error case (e.g. protocol, memory allocation) */ 00111 RIG_DEBUG_WARN, /*<! warning */ 00112 RIG_DEBUG_VERBOSE, /*<! verbose */ 00113 RIG_DEBUG_TRACE /*<! tracing */ 00114 }; 00115 00116 /* --------------- Rig capabilities -----------------*/ 00117 00118 /* Forward struct references */ 00119 00120 struct rig; 00121 struct rig_state; 00122 00126 typedef struct rig RIG; 00127 00128 #define RIGNAMSIZ 30 00129 #define RIGVERSIZ 8 00130 #define FILPATHLEN 100 00131 #define FRQRANGESIZ 30 00132 #define MAXCHANDESC 30 /* describe channel eg: "WWV 5Mhz" */ 00133 #define TSLSTSIZ 20 /* max tuning step list size, zero ended */ 00134 #define FLTLSTSIZ 42 /* max mode/filter list size, zero ended */ 00135 #define MAXDBLSTSIZ 8 /* max preamp/att levels supported, zero ended */ 00136 #define CHANLSTSIZ 16 /* max mem_list size, zero ended */ 00137 #define MAX_CAL_LENGTH 32 /* max calibration plots in cal_table_t */ 00138 00139 00150 typedef unsigned int tone_t; 00151 00155 typedef enum rig_port_e { 00156 RIG_PORT_NONE = 0, 00157 RIG_PORT_SERIAL, 00158 RIG_PORT_NETWORK, 00159 RIG_PORT_DEVICE, 00160 RIG_PORT_PACKET, 00161 RIG_PORT_DTMF, 00162 RIG_PORT_ULTRA, 00163 RIG_PORT_RPC, 00164 RIG_PORT_PARALLEL 00165 } rig_port_t; 00166 00170 enum serial_parity_e { 00171 RIG_PARITY_NONE = 0, 00172 RIG_PARITY_ODD, 00173 RIG_PARITY_EVEN 00174 }; 00175 00179 enum serial_handshake_e { 00180 RIG_HANDSHAKE_NONE = 0, 00181 RIG_HANDSHAKE_XONXOFF, 00182 RIG_HANDSHAKE_HARDWARE 00183 }; 00184 00185 00189 enum serial_control_state_e { 00190 RIG_SIGNAL_UNSET = 0, 00191 RIG_SIGNAL_ON, 00192 RIG_SIGNAL_OFF 00193 }; 00194 00196 typedef enum { 00197 RIG_FLAG_RECEIVER = (1<<1), 00198 RIG_FLAG_TRANSMITTER = (1<<2), 00199 RIG_FLAG_SCANNER = (1<<3), 00201 RIG_FLAG_MOBILE = (1<<4), 00202 RIG_FLAG_HANDHELD = (1<<5), 00203 RIG_FLAG_COMPUTER = (1<<6), 00204 RIG_FLAG_TRUNKING = (1<<7), 00205 RIG_FLAG_APRS = (1<<8), 00206 RIG_FLAG_TNC = (1<<9), 00207 RIG_FLAG_DXCLUSTER = (1<<10), 00208 RIG_FLAG_TUNER = (1<<11) 00209 } rig_type_t; 00210 00211 #define RIG_FLAG_TRANSCEIVER (RIG_FLAG_RECEIVER|RIG_FLAG_TRANSMITTER) 00212 #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) 00213 00214 #define RIG_TYPE_OTHER 0 00215 #define RIG_TYPE_TRANSCEIVER RIG_FLAG_TRANSCEIVER 00216 #define RIG_TYPE_HANDHELD (RIG_FLAG_TRANSCEIVER|RIG_FLAG_HANDHELD) 00217 #define RIG_TYPE_MOBILE (RIG_FLAG_TRANSCEIVER|RIG_FLAG_MOBILE) 00218 #define RIG_TYPE_RECEIVER RIG_FLAG_RECEIVER 00219 #define RIG_TYPE_PCRECEIVER (RIG_FLAG_COMPUTER|RIG_FLAG_RECEIVER) 00220 #define RIG_TYPE_SCANNER (RIG_FLAG_SCANNER|RIG_FLAG_RECEIVER) 00221 #define RIG_TYPE_TRUNKSCANNER (RIG_TYPE_SCANNER|RIG_FLAG_TRUNKING) 00222 #define RIG_TYPE_COMPUTER (RIG_FLAG_TRANSCEIVER|RIG_FLAG_COMPUTER) 00223 #define RIG_TYPE_TUNER RIG_FLAG_TUNER 00224 00225 00229 enum rig_status_e { 00230 RIG_STATUS_ALPHA = 0, 00231 RIG_STATUS_UNTESTED, 00232 RIG_STATUS_BETA, 00233 RIG_STATUS_STABLE, 00234 RIG_STATUS_BUGGY, 00235 RIG_STATUS_NEW 00236 }; 00237 00241 typedef enum { 00242 RIG_RPT_SHIFT_NONE = 0, 00243 RIG_RPT_SHIFT_MINUS, 00244 RIG_RPT_SHIFT_PLUS 00245 } rptr_shift_t; 00246 00250 typedef enum { 00251 RIG_SPLIT_OFF = 0, 00252 RIG_SPLIT_ON 00253 } split_t; 00254 00259 typedef double freq_t; 00260 #define FREQFMT "lf" 00261 00266 typedef signed long shortfreq_t; 00267 00268 #define Hz(f) ((freq_t)(f)) 00269 #define kHz(f) ((freq_t)((f)*(freq_t)1000)) 00270 #define MHz(f) ((freq_t)((f)*(freq_t)1000000)) 00271 #define GHz(f) ((freq_t)((f)*(freq_t)1000000000)) 00272 00273 #define s_Hz(f) ((shortfreq_t)(f)) 00274 #define s_kHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000)) 00275 #define s_MHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000)) 00276 #define s_GHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000000)) 00277 00278 #define RIG_FREQ_NONE Hz(0) 00279 00280 00295 typedef int vfo_t; 00296 00298 #define RIG_VFO_NONE 0 00299 00300 #define RIG_VFO_TX_FLAG ((vfo_t)(1<<30)) 00301 00303 #define RIG_VFO_CURR ((vfo_t)(1<<29)) 00304 00306 #define RIG_VFO_MEM ((vfo_t)(1<<28)) 00307 00309 #define RIG_VFO_VFO ((vfo_t)(1<<27)) 00310 00311 #define RIG_VFO_TX_VFO(v) ((v)|RIG_VFO_TX_FLAG) 00312 00314 #define RIG_VFO_TX RIG_VFO_TX_VFO(RIG_VFO_CURR) 00315 00317 #define RIG_VFO_RX RIG_VFO_CURR 00318 00320 #define RIG_VFO_MAIN ((vfo_t)(1<<26)) 00321 00322 #define RIG_VFO_SUB ((vfo_t)(1<<25)) 00323 00324 #define RIG_VFO_N(n) ((vfo_t)(1<<(n))) 00325 00327 #define RIG_VFO_A RIG_VFO_N(0) 00328 00329 #define RIG_VFO_B RIG_VFO_N(1) 00330 00331 #define RIG_VFO_C RIG_VFO_N(2) 00332 00333 00334 #define RIG_TARGETABLE_NONE 0x00 00335 #define RIG_TARGETABLE_FREQ 0x01 00336 #define RIG_TARGETABLE_MODE 0x02 00337 #define RIG_TARGETABLE_ALL 0xffffffffU 00338 00339 00340 #define RIG_PASSBAND_NORMAL s_Hz(0) 00341 00345 typedef shortfreq_t pbwidth_t; 00346 00347 00351 typedef enum dcd_e { 00352 RIG_DCD_OFF = 0, 00353 RIG_DCD_ON 00354 } dcd_t; 00355 00360 typedef enum { 00361 RIG_DCD_NONE = 0, 00362 RIG_DCD_RIG, 00363 RIG_DCD_SERIAL_DSR, 00364 RIG_DCD_SERIAL_CTS, 00365 RIG_DCD_SERIAL_CAR, 00366 RIG_DCD_PARALLEL 00367 } dcd_type_t; 00368 00369 00373 typedef enum { 00374 RIG_PTT_OFF = 0, 00375 RIG_PTT_ON 00376 } ptt_t; 00377 00382 typedef enum { 00383 RIG_PTT_NONE = 0, 00384 RIG_PTT_RIG, 00385 RIG_PTT_SERIAL_DTR, 00386 RIG_PTT_SERIAL_RTS, 00387 RIG_PTT_PARALLEL 00388 } ptt_type_t; 00389 00393 typedef enum { 00394 RIG_POWER_OFF = 0, 00395 RIG_POWER_ON = (1<<0), 00396 RIG_POWER_STANDBY = (1<<1) 00397 } powerstat_t; 00398 00402 typedef enum { 00403 RIG_RESET_NONE = 0, 00404 RIG_RESET_SOFT = (1<<0), 00405 RIG_RESET_VFO = (1<<1), 00406 RIG_RESET_MCALL = (1<<2), 00407 RIG_RESET_MASTER = (1<<3) 00408 } reset_t; 00409 00410 00422 typedef enum { 00423 RIG_OP_NONE = 0, 00424 RIG_OP_CPY = (1<<0), 00425 RIG_OP_XCHG = (1<<1), 00426 RIG_OP_FROM_VFO = (1<<2), 00427 RIG_OP_TO_VFO = (1<<3), 00428 RIG_OP_MCL = (1<<4), 00429 RIG_OP_UP = (1<<5), 00430 RIG_OP_DOWN = (1<<6), 00431 RIG_OP_BAND_UP = (1<<7), 00432 RIG_OP_BAND_DOWN = (1<<8), 00433 RIG_OP_LEFT = (1<<9), 00434 RIG_OP_RIGHT = (1<<10), 00435 RIG_OP_TUNE = (1<<11), 00436 RIG_OP_TOGGLE = (1<<12) 00437 } vfo_op_t; 00438 00439 00443 typedef enum { 00444 RIG_SCAN_NONE = 0, 00445 RIG_SCAN_STOP = RIG_SCAN_NONE, 00446 RIG_SCAN_MEM = (1<<0), 00447 RIG_SCAN_SLCT = (1<<1), 00448 RIG_SCAN_PRIO = (1<<2), 00449 RIG_SCAN_PROG = (1<<3), 00450 RIG_SCAN_DELTA = (1<<4), 00451 RIG_SCAN_VFO = (1<<5), 00452 RIG_SCAN_PLT = (1<<6) 00453 } scan_t; 00454 00458 typedef long token_t; 00459 00460 #define RIG_CONF_END 0 00461 00462 /* 00463 * strongly inspired from soundmedem. Thanks Thomas! 00464 */ 00465 enum rig_conf_e { 00466 RIG_CONF_STRING, 00467 RIG_CONF_COMBO, 00468 RIG_CONF_NUMERIC, 00469 RIG_CONF_CHECKBUTTON 00470 }; 00471 00472 #define RIG_COMBO_MAX 8 00473 00477 struct confparams { 00478 token_t token; 00479 const char *name; 00480 const char *label; 00481 const char *tooltip; 00482 const char *dflt; 00483 enum rig_conf_e type; 00484 union { 00485 struct { 00486 float min; 00487 float max; 00488 float step; 00489 } n; 00490 struct { 00491 const char *combostr[RIG_COMBO_MAX]; 00492 } c; 00493 } u; 00494 }; 00495 00499 typedef enum { 00500 RIG_ANN_NONE = 0, 00501 RIG_ANN_OFF = RIG_ANN_NONE, 00502 RIG_ANN_FREQ = (1<<0), 00503 RIG_ANN_RXMODE = (1<<1), 00504 RIG_ANN_CW = (1<<2), 00505 RIG_ANN_ENG = (1<<3), 00506 RIG_ANN_JAP = (1<<4) 00507 } ann_t; 00508 00509 00510 /* Antenna number */ 00511 typedef int ant_t; 00512 00513 #define RIG_ANT_NONE 0 00514 #define RIG_ANT_N(n) ((ant_t)1<<(n)) 00515 #define RIG_ANT_1 RIG_ANT_N(0) 00516 #define RIG_ANT_2 RIG_ANT_N(1) 00517 #define RIG_ANT_3 RIG_ANT_N(2) 00518 00519 00520 /* TODO: kill me, and replace by real AGC delay */ 00521 enum agc_level_e { 00522 RIG_AGC_OFF = 0, 00523 RIG_AGC_SUPERFAST, 00524 RIG_AGC_FAST, 00525 RIG_AGC_SLOW, 00526 RIG_AGC_USER 00527 }; 00528 00532 enum meter_level_e { 00533 RIG_METER_NONE = 0, /*< No display meter */ 00534 RIG_METER_SWR = (1<<0), /*< Stationary Wave Ratio */ 00535 RIG_METER_COMP = (1<<1), /*< Compression level */ 00536 RIG_METER_ALC = (1<<2), /*< ALC */ 00537 RIG_METER_IC = (1<<3), /*< IC */ 00538 RIG_METER_DB = (1<<4) /*< DB */ 00539 }; 00540 00545 typedef union { 00546 signed int i; 00547 float f; 00548 char *s; 00549 const char *cs; 00550 } value_t; 00551 00553 enum rig_level_e { 00554 RIG_LEVEL_NONE = 0, 00555 RIG_LEVEL_PREAMP = (1<<0), 00556 RIG_LEVEL_ATT = (1<<1), 00557 RIG_LEVEL_VOX = (1<<2), 00558 RIG_LEVEL_AF = (1<<3), 00559 RIG_LEVEL_RF = (1<<4), 00560 RIG_LEVEL_SQL = (1<<5), 00561 RIG_LEVEL_IF = (1<<6), 00562 RIG_LEVEL_APF = (1<<7), 00563 RIG_LEVEL_NR = (1<<8), 00564 RIG_LEVEL_PBT_IN = (1<<9), 00565 RIG_LEVEL_PBT_OUT = (1<<10), 00566 RIG_LEVEL_CWPITCH = (1<<11), 00567 RIG_LEVEL_RFPOWER = (1<<12), 00568 RIG_LEVEL_MICGAIN = (1<<13), 00569 RIG_LEVEL_KEYSPD = (1<<14), 00570 RIG_LEVEL_NOTCHF = (1<<15), 00571 RIG_LEVEL_COMP = (1<<16), 00572 RIG_LEVEL_AGC = (1<<17), 00573 RIG_LEVEL_BKINDL = (1<<18), 00574 RIG_LEVEL_BALANCE = (1<<19), 00575 RIG_LEVEL_METER = (1<<20), 00577 RIG_LEVEL_VOXGAIN = (1<<21), 00578 RIG_LEVEL_VOXDELAY = RIG_LEVEL_VOX, 00579 RIG_LEVEL_ANTIVOX = (1<<22), 00580 //RIG_LEVEL_LINEOUT = (1<<23),/*!< Lineout Volume, arg float [0.0 .. 1.0] */ 00581 00583 RIG_LEVEL_RAWSTR = (1<<26), 00584 RIG_LEVEL_SQLSTAT = (1<<27), 00585 RIG_LEVEL_SWR = (1<<28), 00586 RIG_LEVEL_ALC = (1<<29), 00587 RIG_LEVEL_STRENGTH = (1<<30) 00588 }; 00589 00590 #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) 00591 00592 #define RIG_LEVEL_READONLY_LIST (RIG_LEVEL_SQLSTAT|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_STRENGTH|RIG_LEVEL_RAWSTR) 00593 00594 #define RIG_LEVEL_IS_FLOAT(l) ((l)&RIG_LEVEL_FLOAT_LIST) 00595 #define RIG_LEVEL_SET(l) ((l)&~RIG_LEVEL_READONLY_LIST) 00596 00597 00602 enum rig_parm_e { 00603 RIG_PARM_NONE = 0, 00604 RIG_PARM_ANN = (1<<0), 00605 RIG_PARM_APO = (1<<1), 00606 RIG_PARM_BACKLIGHT = (1<<2), 00607 RIG_PARM_BEEP = (1<<4), 00608 RIG_PARM_TIME = (1<<5), 00609 RIG_PARM_BAT = (1<<6), 00610 RIG_PARM_KEYLIGHT = (1<<7) 00611 }; 00612 00613 #define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT) 00614 #define RIG_PARM_READONLY_LIST (RIG_PARM_BAT) 00615 00616 #define RIG_PARM_IS_FLOAT(l) ((l)&RIG_PARM_FLOAT_LIST) 00617 #define RIG_PARM_SET(l) ((l)&~RIG_PARM_READONLY_LIST) 00618 00619 #define RIG_SETTING_MAX 64 00620 00626 typedef unsigned long setting_t; 00627 00628 /* 00629 * tranceive mode, ie. the rig notify the host of any event, 00630 * like freq changed, mode changed, etc. 00631 */ 00632 #define RIG_TRN_OFF 0 00633 #define RIG_TRN_RIG 1 00634 #define RIG_TRN_POLL 2 00635 00636 00640 enum rig_func_e { 00641 RIG_FUNC_NONE = 0, 00642 RIG_FUNC_FAGC = (1<<0), 00643 RIG_FUNC_NB = (1<<1), 00644 RIG_FUNC_COMP = (1<<2), 00645 RIG_FUNC_VOX = (1<<3), 00646 RIG_FUNC_TONE = (1<<4), 00647 RIG_FUNC_TSQL = (1<<5), 00648 RIG_FUNC_SBKIN = (1<<6), 00649 RIG_FUNC_FBKIN = (1<<7), 00650 RIG_FUNC_ANF = (1<<8), 00651 RIG_FUNC_NR = (1<<9), 00652 RIG_FUNC_AIP = (1<<10), 00653 RIG_FUNC_APF = (1<<11), 00654 RIG_FUNC_MON = (1<<12), 00655 RIG_FUNC_MN = (1<<13), 00656 RIG_FUNC_RNF = (1<<14), 00657 RIG_FUNC_ARO = (1<<15), 00658 RIG_FUNC_LOCK = (1<<16), 00659 RIG_FUNC_MUTE = (1<<17), 00660 RIG_FUNC_VSC = (1<<18), 00661 RIG_FUNC_REV = (1<<19), 00662 RIG_FUNC_SQL = (1<<20), 00663 RIG_FUNC_ABM = (1<<21), 00664 RIG_FUNC_BC = (1<<22), 00665 RIG_FUNC_MBC = (1<<23), 00666 /* (1<<24), used to be RIG_FUNC_LMP, see RIG_PARM_BACKLIGHT instead) */ 00667 RIG_FUNC_AFC = (1<<25), 00668 RIG_FUNC_SATMODE = (1<<26), 00669 RIG_FUNC_SCOPE = (1<<27), 00670 RIG_FUNC_RESUME = (1<<28), 00671 RIG_FUNC_TBURST = (1<<29), 00672 RIG_FUNC_TUNER = (1<<30) 00673 }; 00674 00675 /* 00676 * power unit macros, converts to mW 00677 * This is limited to 2MW on 32 bits systems. 00678 */ 00679 #define mW(p) ((int)(p)) 00680 #define Watts(p) ((int)((p)*1000)) 00681 #define W(p) Watts(p) 00682 #define kW(p) ((int)((p)*1000000L)) 00683 00687 typedef enum { 00688 RIG_MODE_NONE = 0, 00689 RIG_MODE_AM = (1<<0), 00690 RIG_MODE_CW = (1<<1), 00691 RIG_MODE_USB = (1<<2), 00692 RIG_MODE_LSB = (1<<3), 00693 RIG_MODE_RTTY = (1<<4), 00694 RIG_MODE_FM = (1<<5), 00695 RIG_MODE_WFM = (1<<6), 00696 RIG_MODE_CWR = (1<<7), 00697 RIG_MODE_RTTYR = (1<<8), 00698 RIG_MODE_AMS = (1<<9), 00699 RIG_MODE_PKTLSB = (1<<10), 00700 RIG_MODE_PKTUSB = (1<<11), 00701 RIG_MODE_PKTFM = (1<<12) 00702 } rmode_t; 00703 00705 #define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB) 00706 00707 00708 #define RIG_DBLST_END 0 /* end marker in a preamp/att level list */ 00709 #define RIG_IS_DBLST_END(d) ((d)==0) 00710 00717 typedef struct freq_range_list { 00718 freq_t start; 00719 freq_t end; 00720 rmode_t modes; 00721 int low_power; 00722 int high_power; 00723 vfo_t vfo; 00724 ant_t ant; 00725 } freq_range_t; 00726 00727 #define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE} 00728 #define RIG_IS_FRNG_END(r) ((r).start == Hz(0) && (r).end == Hz(0)) 00729 00730 #define RIG_ITU_REGION1 1 00731 #define RIG_ITU_REGION2 2 00732 #define RIG_ITU_REGION3 3 00733 00753 struct tuning_step_list { 00754 rmode_t modes; 00755 shortfreq_t ts; 00756 }; 00757 00758 #define RIG_TS_ANY 0 00759 #define RIG_TS_END {RIG_MODE_NONE,0} 00760 #define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0) 00761 00788 struct filter_list { 00789 rmode_t modes; 00790 pbwidth_t width; 00791 }; 00792 00793 #define RIG_FLT_ANY 0 00794 #define RIG_FLT_END {RIG_MODE_NONE,0} 00795 #define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE) 00796 00797 00798 /* 00799 * Used in the channel.flags field 00800 */ 00801 #define RIG_CHFLAG_NONE 0 00802 #define RIG_CHFLAG_SKIP (1<<0) 00803 00808 struct ext_list { 00809 token_t token; 00810 value_t val; 00811 }; 00812 00813 #define RIG_EXT_END {0, {.i=0}} 00814 #define RIG_IS_EXT_END(x) ((x).token == 0) 00815 00823 struct channel { 00824 int channel_num; 00825 int bank_num; 00826 vfo_t vfo; 00827 int ant; 00828 freq_t freq; 00829 rmode_t mode; 00830 pbwidth_t width; 00832 freq_t tx_freq; 00833 rmode_t tx_mode; 00834 pbwidth_t tx_width; 00836 split_t split; 00837 vfo_t tx_vfo; 00839 rptr_shift_t rptr_shift; 00840 shortfreq_t rptr_offs; 00841 shortfreq_t tuning_step; 00842 shortfreq_t rit; 00843 shortfreq_t xit; 00844 setting_t funcs; 00845 value_t levels[RIG_SETTING_MAX]; 00846 tone_t ctcss_tone; 00847 tone_t ctcss_sql; 00848 tone_t dcs_code; 00849 tone_t dcs_sql; 00850 int scan_group; 00851 int flags; 00852 char channel_desc[MAXCHANDESC]; 00853 struct ext_list *ext_levels; 00854 }; 00856 typedef struct channel channel_t; 00857 00863 struct channel_cap { 00864 unsigned bank_num:1; 00865 unsigned vfo:1; 00866 unsigned ant:1; 00867 unsigned freq:1; 00868 unsigned mode:1; 00869 unsigned width:1; 00871 unsigned tx_freq:1; 00872 unsigned tx_mode:1; 00873 unsigned tx_width:1; 00875 unsigned split:1; 00876 unsigned tx_vfo:1; 00877 unsigned rptr_shift:1; 00878 unsigned rptr_offs:1; 00879 unsigned tuning_step:1; 00880 unsigned rit:1; 00881 unsigned xit:1; 00882 setting_t funcs; 00883 setting_t levels; 00884 unsigned ctcss_tone:1; 00885 unsigned ctcss_sql:1; 00886 unsigned dcs_code:1; 00887 unsigned dcs_sql:1; 00888 unsigned scan_group:1; 00889 unsigned flags:1; 00890 unsigned channel_desc:1; 00891 unsigned ext_levels:1; 00892 }; 00893 00895 typedef struct channel_cap channel_cap_t; 00896 00897 00908 typedef enum { 00909 RIG_MTYPE_NONE=0, 00910 RIG_MTYPE_MEM, 00911 RIG_MTYPE_EDGE, 00912 RIG_MTYPE_CALL, 00913 RIG_MTYPE_MEMOPAD, 00914 RIG_MTYPE_SAT 00915 } chan_type_t; 00916 00930 struct chan_list { 00931 int start; 00932 int end; 00933 chan_type_t type; 00934 channel_cap_t mem_caps; 00935 }; 00936 00937 #define RIG_CHAN_END {0,0,RIG_MTYPE_NONE} 00938 #define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE) 00939 00941 typedef struct chan_list chan_t; 00942 00954 struct gran { 00955 value_t min; 00956 value_t max; 00957 value_t step; 00958 }; 00959 00961 typedef struct gran gran_t; 00962 00963 00965 struct cal_table { 00966 int size; 00967 struct { 00968 int raw; 00969 int val; 00970 } table[MAX_CAL_LENGTH]; 00971 }; 00972 00985 typedef struct cal_table cal_table_t; 00986 00987 #define EMPTY_STR_CAL { 0, { { 0, 0 }, } } 00988 00989 01008 struct rig_caps { 01009 rig_model_t rig_model; 01010 const char *model_name; 01011 const char *mfg_name; 01012 const char *version; 01013 const char *copyright; 01014 enum rig_status_e status; 01016 int rig_type; 01017 ptt_type_t ptt_type; 01018 dcd_type_t dcd_type; 01019 rig_port_t port_type; 01021 int serial_rate_min; 01022 int serial_rate_max; 01023 int serial_data_bits; 01024 int serial_stop_bits; 01025 enum serial_parity_e serial_parity; 01026 enum serial_handshake_e serial_handshake; 01028 int write_delay; 01029 int post_write_delay; 01030 int timeout; 01031 int retry; 01033 setting_t has_get_func; 01034 setting_t has_set_func; 01035 setting_t has_get_level; 01036 setting_t has_set_level; 01037 setting_t has_get_parm; 01038 setting_t has_set_parm; 01040 gran_t level_gran[RIG_SETTING_MAX]; 01041 gran_t parm_gran[RIG_SETTING_MAX]; 01043 const struct confparams *extparms; 01044 const struct confparams *extlevels; 01046 const tone_t *ctcss_list; 01047 const tone_t *dcs_list; 01049 int preamp[MAXDBLSTSIZ]; 01050 int attenuator[MAXDBLSTSIZ]; 01051 shortfreq_t max_rit; 01052 shortfreq_t max_xit; 01053 shortfreq_t max_ifshift; 01055 ann_t announces; 01057 vfo_op_t vfo_ops; 01058 scan_t scan_ops; 01059 int targetable_vfo; 01060 int transceive; 01062 int bank_qty; 01063 int chan_desc_sz; 01065 chan_t chan_list[CHANLSTSIZ]; 01067 freq_range_t rx_range_list1[FRQRANGESIZ]; 01068 freq_range_t tx_range_list1[FRQRANGESIZ]; 01069 freq_range_t rx_range_list2[FRQRANGESIZ]; 01070 freq_range_t tx_range_list2[FRQRANGESIZ]; 01072 struct tuning_step_list tuning_steps[TSLSTSIZ]; 01073 struct filter_list filters[FLTLSTSIZ]; 01075 cal_table_t str_cal; 01077 const struct confparams *cfgparams; 01078 const rig_ptr_t priv; 01080 /* 01081 * Rig API 01082 * 01083 */ 01084 01085 int (*rig_init) (RIG * rig); 01086 int (*rig_cleanup) (RIG * rig); 01087 int (*rig_open) (RIG * rig); 01088 int (*rig_close) (RIG * rig); 01089 01090 /* 01091 * General API commands, from most primitive to least.. :() 01092 * List Set/Get functions pairs 01093 */ 01094 01095 int (*set_freq) (RIG * rig, vfo_t vfo, freq_t freq); 01096 int (*get_freq) (RIG * rig, vfo_t vfo, freq_t * freq); 01097 01098 int (*set_mode) (RIG * rig, vfo_t vfo, rmode_t mode, 01099 pbwidth_t width); 01100 int (*get_mode) (RIG * rig, vfo_t vfo, rmode_t * mode, 01101 pbwidth_t * width); 01102 01103 int (*set_vfo) (RIG * rig, vfo_t vfo); 01104 int (*get_vfo) (RIG * rig, vfo_t * vfo); 01105 01106 int (*set_ptt) (RIG * rig, vfo_t vfo, ptt_t ptt); 01107 int (*get_ptt) (RIG * rig, vfo_t vfo, ptt_t * ptt); 01108 int (*get_dcd) (RIG * rig, vfo_t vfo, dcd_t * dcd); 01109 01110 int (*set_rptr_shift) (RIG * rig, vfo_t vfo, 01111 rptr_shift_t rptr_shift); 01112 int (*get_rptr_shift) (RIG * rig, vfo_t vfo, 01113 rptr_shift_t * rptr_shift); 01114 01115 int (*set_rptr_offs) (RIG * rig, vfo_t vfo, shortfreq_t offs); 01116 int (*get_rptr_offs) (RIG * rig, vfo_t vfo, shortfreq_t * offs); 01117 01118 int (*set_split_freq) (RIG * rig, vfo_t vfo, freq_t tx_freq); 01119 int (*get_split_freq) (RIG * rig, vfo_t vfo, freq_t * tx_freq); 01120 int (*set_split_mode) (RIG * rig, vfo_t vfo, rmode_t tx_mode, 01121 pbwidth_t tx_width); 01122 int (*get_split_mode) (RIG * rig, vfo_t vfo, rmode_t * tx_mode, 01123 pbwidth_t * tx_width); 01124 01125 int (*set_split_vfo) (RIG * rig, vfo_t vfo, split_t split, vfo_t tx_vfo); 01126 int (*get_split_vfo) (RIG * rig, vfo_t vfo, split_t * split, vfo_t *tx_vfo); 01127 01128 int (*set_rit) (RIG * rig, vfo_t vfo, shortfreq_t rit); 01129 int (*get_rit) (RIG * rig, vfo_t vfo, shortfreq_t * rit); 01130 int (*set_xit) (RIG * rig, vfo_t vfo, shortfreq_t xit); 01131 int (*get_xit) (RIG * rig, vfo_t vfo, shortfreq_t * xit); 01132 01133 int (*set_ts) (RIG * rig, vfo_t vfo, shortfreq_t ts); 01134 int (*get_ts) (RIG * rig, vfo_t vfo, shortfreq_t * ts); 01135 01136 int (*set_dcs_code) (RIG * rig, vfo_t vfo, tone_t code); 01137 int (*get_dcs_code) (RIG * rig, vfo_t vfo, tone_t * code); 01138 int (*set_tone) (RIG * rig, vfo_t vfo, tone_t tone); 01139 int (*get_tone) (RIG * rig, vfo_t vfo, tone_t * tone); 01140 int (*set_ctcss_tone) (RIG * rig, vfo_t vfo, tone_t tone); 01141 int (*get_ctcss_tone) (RIG * rig, vfo_t vfo, tone_t * tone); 01142 01143 int (*set_dcs_sql) (RIG * rig, vfo_t vfo, tone_t code); 01144 int (*get_dcs_sql) (RIG * rig, vfo_t vfo, tone_t * code); 01145 int (*set_tone_sql) (RIG * rig, vfo_t vfo, tone_t tone); 01146 int (*get_tone_sql) (RIG * rig, vfo_t vfo, tone_t * tone); 01147 int (*set_ctcss_sql) (RIG * rig, vfo_t vfo, tone_t tone); 01148 int (*get_ctcss_sql) (RIG * rig, vfo_t vfo, tone_t * tone); 01149 01150 int (*power2mW) (RIG * rig, unsigned int *mwpower, float power, 01151 freq_t freq, rmode_t mode); 01152 int (*mW2power) (RIG * rig, float *power, unsigned int mwpower, 01153 freq_t freq, rmode_t mode); 01154 01155 int (*set_powerstat) (RIG * rig, powerstat_t status); 01156 int (*get_powerstat) (RIG * rig, powerstat_t * status); 01157 int (*reset) (RIG * rig, reset_t reset); 01158 01159 int (*set_ant) (RIG * rig, vfo_t vfo, ant_t ant); 01160 int (*get_ant) (RIG * rig, vfo_t vfo, ant_t * ant); 01161 01162 int (*set_level) (RIG * rig, vfo_t vfo, setting_t level, 01163 value_t val); 01164 int (*get_level) (RIG * rig, vfo_t vfo, setting_t level, 01165 value_t * val); 01166 01167 int (*set_func) (RIG * rig, vfo_t vfo, setting_t func, int status); 01168 int (*get_func) (RIG * rig, vfo_t vfo, setting_t func, 01169 int *status); 01170 01171 int (*set_parm) (RIG * rig, setting_t parm, value_t val); 01172 int (*get_parm) (RIG * rig, setting_t parm, value_t * val); 01173 01174 int (*set_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t val); 01175 int (*get_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t *val); 01176 01177 int (*set_ext_parm)(RIG *rig, token_t token, value_t val); 01178 int (*get_ext_parm)(RIG *rig, token_t token, value_t *val); 01179 01180 int (*set_conf) (RIG * rig, token_t token, const char *val); 01181 int (*get_conf) (RIG * rig, token_t token, char *val); 01182 01183 int (*send_dtmf) (RIG * rig, vfo_t vfo, const char *digits); 01184 int (*recv_dtmf) (RIG * rig, vfo_t vfo, char *digits, int *length); 01185 int (*send_morse) (RIG * rig, vfo_t vfo, const char *msg); 01186 01187 int (*set_bank) (RIG * rig, vfo_t vfo, int bank); 01188 int (*set_mem) (RIG * rig, vfo_t vfo, int ch); 01189 int (*get_mem) (RIG * rig, vfo_t vfo, int *ch); 01190 int (*vfo_op) (RIG * rig, vfo_t vfo, vfo_op_t op); 01191 int (*scan) (RIG * rig, vfo_t vfo, scan_t scan, int ch); 01192 01193 int (*set_trn) (RIG * rig, int trn); 01194 int (*get_trn) (RIG * rig, int *trn); 01195 01196 int (*decode_event) (RIG * rig); 01197 01198 int (*set_channel) (RIG * rig, const channel_t * chan); 01199 int (*get_channel) (RIG * rig, channel_t * chan); 01200 01201 const char *(*get_info) (RIG * rig); 01202 01203 }; 01204 01210 typedef struct { 01211 union { 01212 rig_port_t rig; 01213 ptt_type_t ptt; 01214 dcd_type_t dcd; 01215 } type; 01216 int fd; 01217 #if defined(__CYGWIN__) || defined(_WIN32) 01218 HANDLE handle; 01219 #endif 01220 01221 int write_delay; 01222 int post_write_delay; 01223 struct timeval post_write_date; 01224 int timeout; 01225 int retry; 01227 char pathname[FILPATHLEN]; 01228 union { 01229 struct { 01230 int rate; 01231 int data_bits; 01232 int stop_bits; 01233 enum serial_parity_e parity; 01234 enum serial_handshake_e handshake; 01235 enum serial_control_state_e rts_state; 01236 enum serial_control_state_e dtr_state; 01237 } serial; 01238 struct { 01239 int pin; 01240 } parallel; 01241 struct { 01242 /* place holder */ 01243 } network; 01244 } parm; 01245 } port_t; 01246 01247 01257 struct rig_state { 01258 /* 01259 * overridable fields 01260 */ 01261 port_t rigport; 01262 port_t pttport; 01263 port_t dcdport; 01265 double vfo_comp; 01267 int itu_region; 01268 freq_range_t rx_range_list[FRQRANGESIZ]; 01269 freq_range_t tx_range_list[FRQRANGESIZ]; 01271 struct tuning_step_list tuning_steps[TSLSTSIZ]; 01273 struct filter_list filters[FLTLSTSIZ]; 01275 cal_table_t str_cal; 01277 chan_t chan_list[CHANLSTSIZ]; 01279 shortfreq_t max_rit; 01280 shortfreq_t max_xit; 01281 shortfreq_t max_ifshift; 01283 ann_t announces; 01285 int preamp[MAXDBLSTSIZ]; 01286 int attenuator[MAXDBLSTSIZ]; 01288 setting_t has_get_func; 01289 setting_t has_set_func; 01290 setting_t has_get_level; 01291 setting_t has_set_level; 01292 setting_t has_get_parm; 01293 setting_t has_set_parm; 01295 gran_t level_gran[RIG_SETTING_MAX]; 01296 gran_t parm_gran[RIG_SETTING_MAX]; 01299 /* 01300 * non overridable fields, internal use 01301 */ 01302 01303 int hold_decode; 01304 vfo_t current_vfo; 01305 int vfo_list; 01306 int comm_state; 01307 rig_ptr_t priv; 01308 rig_ptr_t obj; 01310 int transceive; 01311 int poll_interval; 01312 freq_t current_freq; 01313 rmode_t current_mode; 01314 pbwidth_t current_width; 01316 }; 01317 01318 01319 typedef int (*freq_cb_t) (RIG *, vfo_t, freq_t, rig_ptr_t); 01320 typedef int (*mode_cb_t) (RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t); 01321 typedef int (*vfo_cb_t) (RIG *, vfo_t, rig_ptr_t); 01322 typedef int (*ptt_cb_t) (RIG *, vfo_t, ptt_t, rig_ptr_t); 01323 typedef int (*dcd_cb_t) (RIG *, vfo_t, dcd_t, rig_ptr_t); 01324 typedef int (*pltune_cb_t) (RIG *, vfo_t, freq_t *, rmode_t *, pbwidth_t *, rig_ptr_t); 01325 01343 struct rig_callbacks { 01344 freq_cb_t freq_event; 01345 rig_ptr_t freq_arg; 01346 mode_cb_t mode_event; 01347 rig_ptr_t mode_arg; 01348 vfo_cb_t vfo_event; 01349 rig_ptr_t vfo_arg; 01350 ptt_cb_t ptt_event; 01351 rig_ptr_t ptt_arg; 01352 dcd_cb_t dcd_event; 01353 rig_ptr_t dcd_arg; 01354 pltune_cb_t pltune; 01355 rig_ptr_t pltune_arg; 01356 /* etc.. */ 01357 }; 01358 01368 struct rig { 01369 struct rig_caps *caps; 01370 struct rig_state state; 01371 struct rig_callbacks callbacks; 01372 }; 01373 01374 01375 01376 /* --------------- API function prototypes -----------------*/ 01377 01378 extern HAMLIB_EXPORT(RIG *) rig_init HAMLIB_PARAMS((rig_model_t rig_model)); 01379 extern HAMLIB_EXPORT(int) rig_open HAMLIB_PARAMS((RIG *rig)); 01380 01381 /* 01382 * General API commands, from most primitive to least.. :() 01383 * List Set/Get functions pairs 01384 */ 01385 01386 extern HAMLIB_EXPORT(int) rig_set_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t freq)); 01387 extern HAMLIB_EXPORT(int) rig_get_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t *freq)); 01388 01389 extern HAMLIB_EXPORT(int) rig_set_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)); 01390 extern HAMLIB_EXPORT(int) rig_get_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)); 01391 01392 extern HAMLIB_EXPORT(int) rig_set_vfo HAMLIB_PARAMS((RIG *rig, vfo_t vfo)); 01393 extern HAMLIB_EXPORT(int) rig_get_vfo HAMLIB_PARAMS((RIG *rig, vfo_t *vfo)); 01394 01395 extern HAMLIB_EXPORT(int) rig_set_ptt HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ptt_t ptt)); 01396 extern HAMLIB_EXPORT(int) rig_get_ptt HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ptt_t *ptt)); 01397 01398 extern HAMLIB_EXPORT(int) rig_get_dcd HAMLIB_PARAMS((RIG *rig, vfo_t vfo, dcd_t *dcd)); 01399 01400 extern HAMLIB_EXPORT(int) rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)); 01401 extern HAMLIB_EXPORT(int) rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)); 01402 extern HAMLIB_EXPORT(int) rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t rptr_offs)); 01403 extern HAMLIB_EXPORT(int) rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs)); 01404 01405 extern HAMLIB_EXPORT(int) rig_set_ctcss_tone HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t tone)); 01406 extern HAMLIB_EXPORT(int) rig_get_ctcss_tone HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *tone)); 01407 extern HAMLIB_EXPORT(int) rig_set_dcs_code HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t code)); 01408 extern HAMLIB_EXPORT(int) rig_get_dcs_code HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *code)); 01409 01410 extern HAMLIB_EXPORT(int) rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t tone)); 01411 extern HAMLIB_EXPORT(int) rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *tone)); 01412 extern HAMLIB_EXPORT(int) rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t code)); 01413 extern HAMLIB_EXPORT(int) rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *code)); 01414 01415 extern HAMLIB_EXPORT(int) rig_set_split_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t tx_freq)); 01416 extern HAMLIB_EXPORT(int) rig_get_split_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t *tx_freq)); 01417 extern HAMLIB_EXPORT(int) rig_set_split_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t tx_mode, pbwidth_t tx_width)); 01418 extern HAMLIB_EXPORT(int) rig_get_split_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t *tx_mode, pbwidth_t *tx_width)); 01419 extern HAMLIB_EXPORT(int) rig_set_split_vfo HAMLIB_PARAMS((RIG*, vfo_t rx_vfo, split_t split, vfo_t tx_vfo)); 01420 extern HAMLIB_EXPORT(int) rig_get_split_vfo HAMLIB_PARAMS((RIG*, vfo_t rx_vfo, split_t *split, vfo_t *tx_vfo)); 01421 #define rig_set_split(r,v,s) rig_set_split_vfo((r),(v),(s),RIG_VFO_CURR) 01422 #define rig_get_split(r,v,s) ({ vfo_t _tx_vfo; rig_get_split_vfo((r),(v),(s),&_tx_vfo); }) 01423 01424 extern HAMLIB_EXPORT(int) rig_set_rit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t rit)); 01425 extern HAMLIB_EXPORT(int) rig_get_rit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *rit)); 01426 extern HAMLIB_EXPORT(int) rig_set_xit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t xit)); 01427 extern HAMLIB_EXPORT(int) rig_get_xit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *xit)); 01428 01429 extern HAMLIB_EXPORT(int) rig_set_ts HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t ts)); 01430 extern HAMLIB_EXPORT(int) rig_get_ts HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *ts)); 01431 01432 extern HAMLIB_EXPORT(int) rig_power2mW HAMLIB_PARAMS((RIG *rig, unsigned int *mwpower, float power, freq_t freq, rmode_t mode)); 01433 extern HAMLIB_EXPORT(int) rig_mW2power HAMLIB_PARAMS((RIG *rig, float *power, unsigned int mwpower, freq_t freq, rmode_t mode)); 01434 01435 extern HAMLIB_EXPORT(shortfreq_t) rig_get_resolution HAMLIB_PARAMS((RIG *rig, rmode_t mode)); 01436 01437 extern HAMLIB_EXPORT(int) rig_set_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t level, value_t val)); 01438 extern HAMLIB_EXPORT(int) rig_get_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t level, value_t *val)); 01439 01440 #define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s)) 01441 01442 extern HAMLIB_EXPORT(int) rig_set_parm HAMLIB_PARAMS((RIG *rig, setting_t parm, value_t val)); 01443 extern HAMLIB_EXPORT(int) rig_get_parm HAMLIB_PARAMS((RIG *rig, setting_t parm, value_t *val)); 01444 01445 extern HAMLIB_EXPORT(int) rig_set_conf HAMLIB_PARAMS((RIG *rig, token_t token, const char *val)); 01446 extern HAMLIB_EXPORT(int) rig_get_conf HAMLIB_PARAMS((RIG *rig, token_t token, char *val)); 01447 01448 extern HAMLIB_EXPORT(int) rig_set_powerstat HAMLIB_PARAMS((RIG *rig, powerstat_t status)); 01449 extern HAMLIB_EXPORT(int) rig_get_powerstat HAMLIB_PARAMS((RIG *rig, powerstat_t *status)); 01450 01451 extern HAMLIB_EXPORT(int) rig_reset HAMLIB_PARAMS((RIG *rig, reset_t reset)); /* dangerous! */ 01452 01453 extern HAMLIB_EXPORT(int) rig_set_ext_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo, 01454 token_t token, value_t val)); 01455 extern HAMLIB_EXPORT(int) rig_get_ext_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo, 01456 token_t token, value_t *val)); 01457 01458 extern HAMLIB_EXPORT(int) rig_set_ext_parm HAMLIB_PARAMS((RIG *rig, token_t token, value_t val)); 01459 extern HAMLIB_EXPORT(int) rig_get_ext_parm HAMLIB_PARAMS((RIG *rig, token_t token, value_t *val)); 01460 01461 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)); 01462 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)); 01463 extern HAMLIB_EXPORT(const struct confparams*) rig_ext_lookup HAMLIB_PARAMS((RIG *rig, const char *name)); 01464 extern HAMLIB_EXPORT(token_t) rig_ext_token_lookup HAMLIB_PARAMS((RIG *rig, const char *name)); 01465 01466 01467 extern HAMLIB_EXPORT(int) rig_token_foreach HAMLIB_PARAMS((RIG *rig, int (*cfunc)(const struct confparams *, rig_ptr_t), rig_ptr_t data)); 01468 extern HAMLIB_EXPORT(const struct confparams*) rig_confparam_lookup HAMLIB_PARAMS((RIG *rig, const char *name)); 01469 extern HAMLIB_EXPORT(token_t) rig_token_lookup HAMLIB_PARAMS((RIG *rig, const char *name)); 01470 01471 extern HAMLIB_EXPORT(int) rig_close HAMLIB_PARAMS((RIG *rig)); 01472 extern HAMLIB_EXPORT(int) rig_cleanup HAMLIB_PARAMS((RIG *rig)); 01473 01474 extern HAMLIB_EXPORT(int) rig_set_ant HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ant_t ant)); /* antenna */ 01475 extern HAMLIB_EXPORT(int) rig_get_ant HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ant_t *ant)); 01476 01477 extern HAMLIB_EXPORT(setting_t) rig_has_get_level HAMLIB_PARAMS((RIG *rig, setting_t level)); 01478 extern HAMLIB_EXPORT(setting_t) rig_has_set_level HAMLIB_PARAMS((RIG *rig, setting_t level)); 01479 01480 extern HAMLIB_EXPORT(setting_t) rig_has_get_parm HAMLIB_PARAMS((RIG *rig, setting_t parm)); 01481 extern HAMLIB_EXPORT(setting_t) rig_has_set_parm HAMLIB_PARAMS((RIG *rig, setting_t parm)); 01482 01483 extern HAMLIB_EXPORT(setting_t) rig_has_get_func HAMLIB_PARAMS((RIG *rig, setting_t func)); 01484 extern HAMLIB_EXPORT(setting_t) rig_has_set_func HAMLIB_PARAMS((RIG *rig, setting_t func)); 01485 01486 extern HAMLIB_EXPORT(int) rig_set_func HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t func, int status)); 01487 extern HAMLIB_EXPORT(int) rig_get_func HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t func, int *status)); 01488 01489 extern HAMLIB_EXPORT(int) rig_send_dtmf HAMLIB_PARAMS((RIG *rig, vfo_t vfo, const char *digits)); 01490 extern HAMLIB_EXPORT(int) rig_recv_dtmf HAMLIB_PARAMS((RIG *rig, vfo_t vfo, char *digits, int *length)); 01491 extern HAMLIB_EXPORT(int) rig_send_morse HAMLIB_PARAMS((RIG *rig, vfo_t vfo, const char *msg)); 01492 01493 extern HAMLIB_EXPORT(int) rig_set_bank HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int bank)); 01494 extern HAMLIB_EXPORT(int) rig_set_mem HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int ch)); 01495 extern HAMLIB_EXPORT(int) rig_get_mem HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int *ch)); 01496 extern HAMLIB_EXPORT(int) rig_vfo_op HAMLIB_PARAMS((RIG *rig, vfo_t vfo, vfo_op_t op)); 01497 extern HAMLIB_EXPORT(vfo_op_t) rig_has_vfo_op HAMLIB_PARAMS((RIG *rig, vfo_op_t op)); 01498 extern HAMLIB_EXPORT(int) rig_scan HAMLIB_PARAMS((RIG *rig, vfo_t vfo, scan_t scan, int ch)); 01499 extern HAMLIB_EXPORT(scan_t) rig_has_scan HAMLIB_PARAMS((RIG *rig, scan_t scan)); 01500 01501 extern HAMLIB_EXPORT(int) rig_set_channel HAMLIB_PARAMS((RIG *rig, const channel_t *chan)); /* mem */ 01502 extern HAMLIB_EXPORT(int) rig_get_channel HAMLIB_PARAMS((RIG *rig, channel_t *chan)); 01503 01504 extern HAMLIB_EXPORT(int) rig_set_trn HAMLIB_PARAMS((RIG *rig, int trn)); 01505 extern HAMLIB_EXPORT(int) rig_get_trn HAMLIB_PARAMS((RIG *rig, int *trn)); 01506 extern HAMLIB_EXPORT(int) rig_set_freq_callback HAMLIB_PARAMS((RIG *, freq_cb_t, rig_ptr_t)); 01507 extern HAMLIB_EXPORT(int) rig_set_mode_callback HAMLIB_PARAMS((RIG *, mode_cb_t, rig_ptr_t)); 01508 extern HAMLIB_EXPORT(int) rig_set_vfo_callback HAMLIB_PARAMS((RIG *, vfo_cb_t, rig_ptr_t)); 01509 extern HAMLIB_EXPORT(int) rig_set_ptt_callback HAMLIB_PARAMS((RIG *, ptt_cb_t, rig_ptr_t)); 01510 extern HAMLIB_EXPORT(int) rig_set_dcd_callback HAMLIB_PARAMS((RIG *, dcd_cb_t, rig_ptr_t)); 01511 extern HAMLIB_EXPORT(int) rig_set_pltune_callback HAMLIB_PARAMS((RIG *, pltune_cb_t, rig_ptr_t)); 01512 01513 extern HAMLIB_EXPORT(const char *) rig_get_info HAMLIB_PARAMS((RIG *rig)); 01514 01515 extern HAMLIB_EXPORT(const struct rig_caps *) rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model)); 01516 extern HAMLIB_EXPORT(const freq_range_t *) rig_get_range HAMLIB_PARAMS((const freq_range_t range_list[], freq_t freq, rmode_t mode)); 01517 01518 extern HAMLIB_EXPORT(pbwidth_t) rig_passband_normal HAMLIB_PARAMS((RIG *rig, rmode_t mode)); 01519 extern HAMLIB_EXPORT(pbwidth_t) rig_passband_narrow HAMLIB_PARAMS((RIG *rig, rmode_t mode)); 01520 extern HAMLIB_EXPORT(pbwidth_t) rig_passband_wide HAMLIB_PARAMS((RIG *rig, rmode_t mode)); 01521 01522 extern HAMLIB_EXPORT(const char *) rigerror HAMLIB_PARAMS((int errnum)); 01523 01524 extern HAMLIB_EXPORT(int) rig_setting2idx HAMLIB_PARAMS((setting_t s)); 01525 #define rig_idx2setting(i) (1ULL<<(i)) 01526 01527 /* 01528 * Even if these functions are prefixed with "rig_", they are not rig specific 01529 * Maybe "hamlib_" would have been better. Let me know. --SF 01530 */ 01531 extern HAMLIB_EXPORT(void) rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level)); 01532 extern HAMLIB_EXPORT(int) rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level)); 01533 extern HAMLIB_EXPORT(void) rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level, const char *fmt, ...)); 01534 01535 extern HAMLIB_EXPORT(int) rig_register HAMLIB_PARAMS((const struct rig_caps *caps)); 01536 extern HAMLIB_EXPORT(int) rig_unregister HAMLIB_PARAMS((rig_model_t rig_model)); 01537 extern HAMLIB_EXPORT(int) rig_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rig_caps*, rig_ptr_t), rig_ptr_t data)); 01538 extern HAMLIB_EXPORT(int) rig_load_backend HAMLIB_PARAMS((const char *be_name)); 01539 extern HAMLIB_EXPORT(int) rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model)); 01540 extern HAMLIB_EXPORT(int) rig_load_all_backends HAMLIB_PARAMS(()); 01541 01542 typedef int (*rig_probe_func_t)(const port_t *, rig_model_t, rig_ptr_t); 01543 extern HAMLIB_EXPORT(int) rig_probe_all HAMLIB_PARAMS((port_t *p, rig_probe_func_t, rig_ptr_t)); 01544 extern HAMLIB_EXPORT(rig_model_t) rig_probe HAMLIB_PARAMS((port_t *p)); 01545 01546 01547 __END_DECLS 01548 01549 #endif /* _RIG_H */

Generated on Wed Aug 18 05:00:23 2004 for Hamlib - the C library reference by doxygen 1.3.7