Hamlib  4.1
rig.h
Go to the documentation of this file.
1 /*
2  * Hamlib Interface - API header
3  * Copyright (c) 2000-2003 by Frank Singleton
4  * Copyright (c) 2000-2012 by Stephane Fillod
5  *
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  *
21  */
22 
23 
24 #ifndef _RIG_H
25 #define _RIG_H 1
26 
27 #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
28 
29 #include <stdio.h>
30 #include <stdarg.h>
31 #include <inttypes.h>
32 #include <time.h>
33 
34 /* Rig list is in a separate file so as not to mess up w/ this one */
35 #include <hamlib/riglist.h>
36 
50 /* __BEGIN_DECLS should be used at the beginning of your declarations,
51  * so that C++ compilers don't mangle their names. Use __END_DECLS at
52  * the end of C declarations. */
54 #undef __BEGIN_DECLS
55 #undef __END_DECLS
56 #ifdef __cplusplus
57 # define __BEGIN_DECLS extern "C" {
58 # define __END_DECLS }
59 #else
60 # define __BEGIN_DECLS /* empty */
61 # define __END_DECLS /* empty */
62 #endif
64 
65 /* HAMLIB_PARAMS is a macro used to wrap function prototypes, so that compilers
66  * that don't understand ANSI C prototypes still work, and ANSI C
67  * compilers can issue warnings about type mismatches. */
69 #undef HAMLIB_PARAMS
70 #if defined (__STDC__) \
71  || defined (_AIX) \
72  || (defined (__mips) && defined (_SYSTYPE_SVR4)) \
73  || defined(__CYGWIN__) \
74  || defined(_WIN32) \
75  || defined(__cplusplus)
76 # define HAMLIB_PARAMS(protos) protos
77 # define rig_ptr_t void *
78 # define amp_ptr_t void *
79 #else
80 # define HAMLIB_PARAMS(protos) ()
81 # define rig_ptr_t char *
82 # define amp_ptr_t char *
83 #endif
85 
86 #include <hamlib/rig_dll.h>
87 
88 #ifndef SWIGLUA
90 #define CONSTANT_64BIT_FLAG(BIT) (1ull << (BIT))
92 #else
93 /* SWIG's older Lua generator doesn't grok ull due to Lua using a
94  double-precision floating point type internally for number
95  representations (max 53 bits of precision) so makes a string
96  constant from a constant number literal using ull */
97 // #define CONSTANT_64BIT_FLAG(BIT) (1 << (BIT))
98 // #define SWIGLUAHIDE
99 /* But this appears to have been fixed so we'll use the correct one now
100  If you have the older version of SWIG comment out this line and use
101  the two above */
102 // This 1ul definition works on swig 4.0.1 and lua 5.3.5
103 #define CONSTANT_64BIT_FLAG(BIT) (1ul << (BIT))
104 #endif
105 
106 __BEGIN_DECLS
107 
109 extern HAMLIB_EXPORT_VAR(const char) hamlib_version[];
110 extern HAMLIB_EXPORT_VAR(const char) hamlib_copyright[];
111 extern HAMLIB_EXPORT_VAR(const char *) hamlib_version2;
112 extern HAMLIB_EXPORT_VAR(const char *) hamlib_copyright2;
114 
122  RIG_OK = 0,
139  RIG_EDOM
140 };
141 
145 #define NETRIGCTL_RET "RPRT "
146 
147 
162 };
163 
164 
165 /* --------------- Rig capabilities -----------------*/
166 
167 /* Forward struct references */
168 
169 struct rig;
170 struct rig_state;
171 
175 typedef struct s_rig RIG;
176 
178 #define RIGNAMSIZ 30
179 #define RIGVERSIZ 8
180 #define FILPATHLEN 512
181 #define FRQRANGESIZ 30
182 #define MAXCHANDESC 30 /* describe channel eg: "WWV 5Mhz" */
183 #define TSLSTSIZ 20 /* max tuning step list size, zero ended */
184 #define FLTLSTSIZ 60 /* max mode/filter list size, zero ended */
185 #define MAXDBLSTSIZ 8 /* max preamp/att levels supported, zero ended */
186 #define CHANLSTSIZ 16 /* max mem_list size, zero ended */
187 #define MAX_CAL_LENGTH 32 /* max calibration plots in cal_table_t */
189 
190 
201 typedef unsigned int tone_t;
202 
203 
207 typedef enum rig_port_e {
223 
224 
234 };
235 
236 
244 };
245 
246 
254 };
255 
256 
260 typedef enum {
261  RIG_FLAG_RECEIVER = (1 << 1),
262  RIG_FLAG_TRANSMITTER = (1 << 2),
263  RIG_FLAG_SCANNER = (1 << 3),
264  RIG_FLAG_MOBILE = (1 << 4),
265  RIG_FLAG_HANDHELD = (1 << 5),
266  RIG_FLAG_COMPUTER = (1 << 6),
267  RIG_FLAG_TRUNKING = (1 << 7),
268  RIG_FLAG_APRS = (1 << 8),
269  RIG_FLAG_TNC = (1 << 9),
270  RIG_FLAG_DXCLUSTER = (1 << 10),
271  RIG_FLAG_TUNER = (1 << 11)
273 
275 #define RIG_FLAG_TRANSCEIVER (RIG_FLAG_RECEIVER|RIG_FLAG_TRANSMITTER)
276 #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)
277 
278 #define RIG_TYPE_OTHER 0
279 #define RIG_TYPE_TRANSCEIVER RIG_FLAG_TRANSCEIVER
280 #define RIG_TYPE_HANDHELD (RIG_FLAG_TRANSCEIVER|RIG_FLAG_HANDHELD)
281 #define RIG_TYPE_MOBILE (RIG_FLAG_TRANSCEIVER|RIG_FLAG_MOBILE)
282 #define RIG_TYPE_RECEIVER RIG_FLAG_RECEIVER
283 #define RIG_TYPE_PCRECEIVER (RIG_FLAG_COMPUTER|RIG_FLAG_RECEIVER)
284 #define RIG_TYPE_SCANNER (RIG_FLAG_SCANNER|RIG_FLAG_RECEIVER)
285 #define RIG_TYPE_TRUNKSCANNER (RIG_TYPE_SCANNER|RIG_FLAG_TRUNKING)
286 #define RIG_TYPE_COMPUTER (RIG_FLAG_TRANSCEIVER|RIG_FLAG_COMPUTER)
287 #define RIG_TYPE_TUNER RIG_FLAG_TUNER
289 
290 
300  /* RIG_STATUS_NEW * *!< Initial release of code
301  * !! Use of RIG_STATUS_NEW is deprecated. Do not use it anymore */
302 };
303 
308 #define RIG_STATUS_NEW RIG_STATUS_UNTESTED
309 
310 
314 typedef enum {
319 
320 
324 typedef enum {
326  RIG_SPLIT_ON
328 
329 
335 typedef double freq_t;
336 
340 #define PRIfreq "f"
341 
345 #define SCNfreq "lf"
349 #define FREQFMT SCNfreq
350 
351 
357 typedef signed long shortfreq_t;
358 
360 #define Hz(f) ((freq_t)(f))
362 #define kHz(f) ((freq_t)((f)*(freq_t)1000))
364 #define MHz(f) ((freq_t)((f)*(freq_t)1000000))
366 #define GHz(f) ((freq_t)((f)*(freq_t)1000000000))
367 
369 #define s_Hz(f) ((shortfreq_t)(f))
371 #define s_kHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000))
373 #define s_MHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000))
375 #define s_GHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000000))
376 
378 #define RIG_FREQ_NONE Hz(0)
379 
380 
395 typedef unsigned int vfo_t;
396 
399 #define RIG_VFO_N(n) (1u<<(n))
400 
402 #define RIG_VFO_NONE 0
403 
405 #define RIG_VFO_A RIG_VFO_N(0)
406 
408 #define RIG_VFO_B RIG_VFO_N(1)
409 
411 #define RIG_VFO_C RIG_VFO_N(2)
412 
413 // Any addition VFOS need to go from 3-20
414 // To maintain backward compatibility these values cannot change
415 
417 #define RIG_VFO_SUB_A RIG_VFO_N(21)
418 
420 #define RIG_VFO_SUB_B RIG_VFO_N(22)
421 
423 #define RIG_VFO_MAIN_A RIG_VFO_N(23)
424 
426 #define RIG_VFO_MAIN_B RIG_VFO_N(24)
427 
429 #define RIG_VFO_SUB RIG_VFO_N(25)
430 
432 #define RIG_VFO_MAIN RIG_VFO_N(26)
433 
435 #define RIG_VFO_VFO RIG_VFO_N(27)
436 
438 #define RIG_VFO_MEM RIG_VFO_N(28)
439 
441 #define RIG_VFO_CURR RIG_VFO_N(29)
442 
444 #define RIG_VFO_TX_FLAG RIG_VFO_N(30)
445 // we and also use RIG_VFO_N(31) if needed
446 
447 // Misc VFO Macros
448 
450 #define RIG_VFO_TX_VFO(v) ((v)|RIG_VFO_TX_FLAG)
451 
453 #define RIG_VFO_TX RIG_VFO_TX_VFO(RIG_VFO_CURR)
454 
456 #define RIG_VFO_RX RIG_VFO_CURR
457 
458 
459 /*
460  * targetable bitfields, for internal use.
461  * RIG_TARGETABLE_PURE means a pure targetable radio on every command
462  * In rig.c lack of a flag will case a VFO change if needed
463  * So setting this flag will mean the backend handles any VFO needs
464  * For many rigs RITXIT, PTT, MEM, and BANK are non-VFO commands so need these flags to avoid unnecessary VFO swapping
465  */
467 #define RIG_TARGETABLE_NONE 0
468 #define RIG_TARGETABLE_FREQ (1<<0)
469 #define RIG_TARGETABLE_MODE (1<<1)
470 #define RIG_TARGETABLE_PURE (1<<2)
471 #define RIG_TARGETABLE_TONE (1<<3)
472 #define RIG_TARGETABLE_FUNC (1<<4)
473 #define RIG_TARGETABLE_LEVEL (1<<5)
474 #define RIG_TARGETABLE_RITXIT (1<<6)
475 #define RIG_TARGETABLE_PTT (1<<7)
476 #define RIG_TARGETABLE_MEM (1<<8)
477 #define RIG_TARGETABLE_BANK (1<<9)
478 #define RIG_TARGETABLE_ANT (1<<10)
479 #define RIG_TARGETABLE_COMMON (RIG_TARGETABLE_RITXIT | RIG_TARGETABLE_PTT | RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK)
480 #define RIG_TARGETABLE_ALL 0x7fffffff
482 //
483 //
484 // Newer Icoms like the 9700 and 910 have VFOA/B on both Main & Sub
485 // Compared to older rigs which have one or the other
486 // So we need to distinguish between them
488 #define VFO_HAS_A_B ((rig->state.vfo_list & (RIG_VFO_A|RIG_VFO_B)) == (RIG_VFO_A|RIG_VFO_B))
489 #define VFO_HAS_MAIN_SUB ((rig->state.vfo_list & (RIG_VFO_MAIN|RIG_VFO_SUB)) == (RIG_VFO_MAIN|RIG_VFO_SUB))
490 #define VFO_HAS_MAIN_SUB_ONLY ((!VFO_HAS_A_B) & VFO_HAS_MAIN_SUB)
491 #define VFO_HAS_MAIN_SUB_A_B_ONLY (VFO_HAS_A_B & VFO_HAS_MAIN_SUB)
492 #define VFO_HAS_A_B_ONLY (VFO_HAS_A_B & (!VFO_HAS_MAIN_SUB))
493 #define VFO_DUAL (RIG_VFO_MAIN_A|RIG_VFO_MAIN_B|RIG_VFO_SUB_A|RIG_VFO_SUB_B)
494 #define VFO_HAS_DUAL ((rig->state.vfo_list & VFO_DUAL == VFO_DUAL)
496 
501 #define RIG_PASSBAND_NORMAL s_Hz(0)
502 
506 #define RIG_PASSBAND_NOCHANGE s_Hz(-1)
507 
513 
514 
518 typedef enum dcd_e {
520  RIG_DCD_ON
522 
523 
529 typedef enum {
539 } dcd_type_t;
540 
541 
545 typedef enum {
551 
552 
558 typedef enum {
568 } ptt_type_t;
569 
570 
574 typedef enum {
576  RIG_POWER_ON = (1 << 0),
577  RIG_POWER_STANDBY = (1 << 1),
578  RIG_POWER_OPERATE = (1 << 2),
579  RIG_POWER_UNKNOWN = (1 << 3)
581 
582 
586 typedef enum {
588  RIG_RESET_SOFT = (1 << 0),
589  RIG_RESET_VFO = (1 << 1),
590  RIG_RESET_MCALL = (1 << 2),
591  RIG_RESET_MASTER = (1 << 3)
593 
594 
610 typedef enum {
612  RIG_OP_CPY = (1 << 0),
613  RIG_OP_XCHG = (1 << 1),
614  RIG_OP_FROM_VFO = (1 << 2),
615  RIG_OP_TO_VFO = (1 << 3),
616  RIG_OP_MCL = (1 << 4),
617  RIG_OP_UP = (1 << 5),
618  RIG_OP_DOWN = (1 << 6),
619  RIG_OP_BAND_UP = (1 << 7),
620  RIG_OP_BAND_DOWN = (1 << 8),
621  RIG_OP_LEFT = (1 << 9),
622  RIG_OP_RIGHT = (1 << 10),
623  RIG_OP_TUNE = (1 << 11),
624  RIG_OP_TOGGLE = (1 << 12)
626 
627 
636 typedef enum {
638  RIG_SCAN_MEM = (1 << 0),
639  RIG_SCAN_SLCT = (1 << 1),
640  RIG_SCAN_PRIO = (1 << 2),
641  RIG_SCAN_PROG = (1 << 3),
642  RIG_SCAN_DELTA = (1 << 4),
643  RIG_SCAN_VFO = (1 << 5),
644  RIG_SCAN_PLT = (1 << 6),
645  RIG_SCAN_STOP = (1 << 7)
647 
648 
652 typedef long token_t;
653 
654 
656 #define RIG_CONF_END 0
658 
659 
673 /* strongly inspired from soundmodem. Thanks Thomas! */
681 };
682 
684 #define RIG_COMBO_MAX 16
685 #define RIG_BIN_MAX 80
687 
691 struct confparams {
693  const char *name;
694  const char *label;
695  const char *tooltip;
696  const char *dflt;
697  enum rig_conf_e type;
698  union {
699  struct {
700  float min;
701  float max;
702  float step;
703  } n;
704  struct {
705  const char *combostr[RIG_COMBO_MAX];
706  } c;
707  } u;
708 };
709 
710 
716 typedef enum {
719  RIG_ANN_FREQ = (1 << 0),
720  RIG_ANN_RXMODE = (1 << 1),
721  RIG_ANN_CW = (1 << 2),
722  RIG_ANN_ENG = (1 << 3),
723  RIG_ANN_JAP = (1 << 4)
725 
726 
773 typedef unsigned int ant_t;
774 
775 #define RIG_ANT_NONE 0
776 #define RIG_ANT_N(n) ((ant_t)1<<(n))
777 #define RIG_ANT_1 RIG_ANT_N(0)
778 #define RIG_ANT_2 RIG_ANT_N(1)
779 #define RIG_ANT_3 RIG_ANT_N(2)
780 #define RIG_ANT_4 RIG_ANT_N(3)
781 #define RIG_ANT_5 RIG_ANT_N(4)
782 
783 #define RIG_ANT_UNKNOWN RIG_ANT_N(30)
784 #define RIG_ANT_CURR RIG_ANT_N(31)
785 
786 #define RIG_ANT_MAX 32
787 
788 
792 /* TODO: kill me, and replace by real AGC delay */
794  RIG_AGC_OFF = 0,
795  RIG_AGC_SUPERFAST,
796  RIG_AGC_FAST,
797  RIG_AGC_SLOW,
799  RIG_AGC_MEDIUM,
800  RIG_AGC_AUTO
801 };
802 
804 #define RIG_AGC_LAST RIG_AGC_AUTO
806 
811  RIG_METER_NONE = 0, /*< No display meter */
812  RIG_METER_SWR = (1 << 0), /*< Stationary Wave Ratio */
813  RIG_METER_COMP = (1 << 1), /*< Compression level */
814  RIG_METER_ALC = (1 << 2), /*< ALC */
815  RIG_METER_IC = (1 << 3), /*< IC */
816  RIG_METER_DB = (1 << 4), /*< DB */
817  RIG_METER_PO = (1 << 5), /*< Power Out */
818  RIG_METER_VDD = (1 << 6), /*< Final Amp Voltage */
819  RIG_METER_TEMP = (1 << 7) /*< Final Amp Voltage */
820 };
821 
822 
828 typedef union {
829  signed int i;
830  float f;
831  char *s;
832  const char *cs;
834  struct {
835  int l;
836  unsigned char *d; /* Pointer to data buffer */
837  } b;
839 } value_t;
840 
841 
850 typedef uint64_t rig_level_e;
851 #define RIG_LEVEL_NONE 0
852 #define RIG_LEVEL_PREAMP CONSTANT_64BIT_FLAG(0)
853 #define RIG_LEVEL_ATT CONSTANT_64BIT_FLAG(1)
854 #define RIG_LEVEL_VOXDELAY CONSTANT_64BIT_FLAG(2)
855 #define RIG_LEVEL_AF CONSTANT_64BIT_FLAG(3)
856 #define RIG_LEVEL_RF CONSTANT_64BIT_FLAG(4)
857 #define RIG_LEVEL_SQL CONSTANT_64BIT_FLAG(5)
858 #define RIG_LEVEL_IF CONSTANT_64BIT_FLAG(6)
859 #define RIG_LEVEL_APF CONSTANT_64BIT_FLAG(7)
860 #define RIG_LEVEL_NR CONSTANT_64BIT_FLAG(8)
861 #define RIG_LEVEL_PBT_IN CONSTANT_64BIT_FLAG(9)
862 #define RIG_LEVEL_PBT_OUT CONSTANT_64BIT_FLAG(10)
863 #define RIG_LEVEL_CWPITCH CONSTANT_64BIT_FLAG(11)
864 #define RIG_LEVEL_RFPOWER CONSTANT_64BIT_FLAG(12)
865 #define RIG_LEVEL_MICGAIN CONSTANT_64BIT_FLAG(13)
866 #define RIG_LEVEL_KEYSPD CONSTANT_64BIT_FLAG(14)
867 #define RIG_LEVEL_NOTCHF CONSTANT_64BIT_FLAG(15)
868 #define RIG_LEVEL_COMP CONSTANT_64BIT_FLAG(16)
869 #define RIG_LEVEL_AGC CONSTANT_64BIT_FLAG(17)
870 #define RIG_LEVEL_BKINDL CONSTANT_64BIT_FLAG(18)
871 #define RIG_LEVEL_BALANCE CONSTANT_64BIT_FLAG(19)
872 #define RIG_LEVEL_METER CONSTANT_64BIT_FLAG(20)
873 #define RIG_LEVEL_VOXGAIN CONSTANT_64BIT_FLAG(21)
874 #define RIG_LEVEL_ANTIVOX CONSTANT_64BIT_FLAG(22)
875 #define RIG_LEVEL_SLOPE_LOW CONSTANT_64BIT_FLAG(23)
876 #define RIG_LEVEL_SLOPE_HIGH CONSTANT_64BIT_FLAG(24)
877 #define RIG_LEVEL_BKIN_DLYMS CONSTANT_64BIT_FLAG(25)
880 #define RIG_LEVEL_RAWSTR CONSTANT_64BIT_FLAG(26)
881 #define RIG_LEVEL_SQLSTAT CONSTANT_64BIT_FLAG(27)
882 #define RIG_LEVEL_SWR CONSTANT_64BIT_FLAG(28)
883 #define RIG_LEVEL_ALC CONSTANT_64BIT_FLAG(29)
884 #define RIG_LEVEL_STRENGTH CONSTANT_64BIT_FLAG(30)
885  /* RIG_LEVEL_BWC (1<<31) */
886 #define RIG_LEVEL_RFPOWER_METER CONSTANT_64BIT_FLAG(32)
887 #define RIG_LEVEL_COMP_METER CONSTANT_64BIT_FLAG(33)
888 #define RIG_LEVEL_VD_METER CONSTANT_64BIT_FLAG(34)
889 #define RIG_LEVEL_ID_METER CONSTANT_64BIT_FLAG(35)
891 #define RIG_LEVEL_NOTCHF_RAW CONSTANT_64BIT_FLAG(36)
892 #define RIG_LEVEL_MONITOR_GAIN CONSTANT_64BIT_FLAG(37)
893 #define RIG_LEVEL_NB CONSTANT_64BIT_FLAG(38)
894 #define RIG_LEVEL_RFPOWER_METER_WATTS CONSTANT_64BIT_FLAG(39)
895 #define RIG_LEVEL_40 CONSTANT_64BIT_FLAG(40)
896 #define RIG_LEVEL_41 CONSTANT_64BIT_FLAG(41)
897 #define RIG_LEVEL_42 CONSTANT_64BIT_FLAG(42)
898 #define RIG_LEVEL_43 CONSTANT_64BIT_FLAG(43)
899 #define RIG_LEVEL_44 CONSTANT_64BIT_FLAG(44)
900 #define RIG_LEVEL_45 CONSTANT_64BIT_FLAG(45)
901 #define RIG_LEVEL_46 CONSTANT_64BIT_FLAG(46)
902 #define RIG_LEVEL_47 CONSTANT_64BIT_FLAG(47)
903 #define RIG_LEVEL_48 CONSTANT_64BIT_FLAG(48)
904 #define RIG_LEVEL_49 CONSTANT_64BIT_FLAG(49)
905 #define RIG_LEVEL_50 CONSTANT_64BIT_FLAG(50)
906 #define RIG_LEVEL_51 CONSTANT_64BIT_FLAG(51)
907 #define RIG_LEVEL_52 CONSTANT_64BIT_FLAG(52)
908 #define RIG_LEVEL_53 CONSTANT_64BIT_FLAG(53)
909 #define RIG_LEVEL_54 CONSTANT_64BIT_FLAG(54)
910 #define RIG_LEVEL_55 CONSTANT_64BIT_FLAG(55)
911 #define RIG_LEVEL_56 CONSTANT_64BIT_FLAG(56)
912 #define RIG_LEVEL_57 CONSTANT_64BIT_FLAG(57)
913 #define RIG_LEVEL_58 CONSTANT_64BIT_FLAG(58)
914 #define RIG_LEVEL_59 CONSTANT_64BIT_FLAG(59)
915 #define RIG_LEVEL_60 CONSTANT_64BIT_FLAG(60)
916 #define RIG_LEVEL_61 CONSTANT_64BIT_FLAG(61)
917 #define RIG_LEVEL_62 CONSTANT_64BIT_FLAG(62)
918 #define RIG_LEVEL_63 CONSTANT_64BIT_FLAG(63)
921 #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|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB)
922 
923 #define RIG_LEVEL_READONLY_LIST (RIG_LEVEL_SQLSTAT|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_STRENGTH|RIG_LEVEL_RAWSTR|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER)
924 
925 #define RIG_LEVEL_IS_FLOAT(l) ((l)&RIG_LEVEL_FLOAT_LIST)
926 #define RIG_LEVEL_SET(l) ((l)&~RIG_LEVEL_READONLY_LIST)
928 
929 
940  RIG_PARM_ANN = (1 << 0),
941  RIG_PARM_APO = (1 << 1),
942  RIG_PARM_BACKLIGHT = (1 << 2),
943  RIG_PARM_BEEP = (1 << 4),
944  RIG_PARM_TIME = (1 << 5),
945  RIG_PARM_BAT = (1 << 6),
946  RIG_PARM_KEYLIGHT = (1 << 7),
947  RIG_PARM_SCREENSAVER = (1 << 8)
948 };
949 
951 #define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT|RIG_PARM_KEYLIGHT)
952 #define RIG_PARM_READONLY_LIST (RIG_PARM_BAT)
953 
954 #define RIG_PARM_IS_FLOAT(l) ((l)&RIG_PARM_FLOAT_LIST)
955 #define RIG_PARM_SET(l) ((l)&~RIG_PARM_READONLY_LIST)
957 
964 typedef uint64_t setting_t;
965 
970 #define RIG_SETTING_MAX 64
971 
985 #define RIG_TRN_OFF 0
986 #define RIG_TRN_RIG 1
987 #define RIG_TRN_POLL 2
988 
989 
998 /*
999  * The C standard dictates that an enum constant is a 32 bit signed integer.
1000  * Setting a constant's bit 31 created a negative value that on amd64 had the
1001  * upper 32 bits set as well when assigned to the misc.c:rig_func_str structure.
1002  * This caused misc.c:rig_strfunc() to fail its comparison for RIG_FUNC_XIT
1003  * on amd64 (x86_64). To use bit 31 as an unsigned long, preprocessor macros
1004  * have been used instead as a 'const unsigned long' which cannot be used to
1005  * initialize the rig_func_str.func members. TNX KA6MAL, AC6SL. - N0NB
1006  */
1007 #define RIG_FUNC_NONE 0
1008 #define RIG_FUNC_FAGC CONSTANT_64BIT_FLAG (0)
1009 #define RIG_FUNC_NB CONSTANT_64BIT_FLAG (1)
1010 #define RIG_FUNC_COMP CONSTANT_64BIT_FLAG (2)
1011 #define RIG_FUNC_VOX CONSTANT_64BIT_FLAG (3)
1012 #define RIG_FUNC_TONE CONSTANT_64BIT_FLAG (4)
1013 #define RIG_FUNC_TSQL CONSTANT_64BIT_FLAG (5)
1014 #define RIG_FUNC_SBKIN CONSTANT_64BIT_FLAG (6)
1015 #define RIG_FUNC_FBKIN CONSTANT_64BIT_FLAG (7)
1016 #define RIG_FUNC_ANF CONSTANT_64BIT_FLAG (8)
1017 #define RIG_FUNC_NR CONSTANT_64BIT_FLAG (9)
1018 #define RIG_FUNC_AIP CONSTANT_64BIT_FLAG (10)
1019 #define RIG_FUNC_APF CONSTANT_64BIT_FLAG (11)
1020 #define RIG_FUNC_MON CONSTANT_64BIT_FLAG (12)
1021 #define RIG_FUNC_MN CONSTANT_64BIT_FLAG (13)
1022 #define RIG_FUNC_RF CONSTANT_64BIT_FLAG (14)
1023 #define RIG_FUNC_ARO CONSTANT_64BIT_FLAG (15)
1024 #define RIG_FUNC_LOCK CONSTANT_64BIT_FLAG (16)
1025 #define RIG_FUNC_MUTE CONSTANT_64BIT_FLAG (17)
1026 #define RIG_FUNC_VSC CONSTANT_64BIT_FLAG (18)
1027 #define RIG_FUNC_REV CONSTANT_64BIT_FLAG (19)
1028 #define RIG_FUNC_SQL CONSTANT_64BIT_FLAG (20)
1029 #define RIG_FUNC_ABM CONSTANT_64BIT_FLAG (21)
1030 #define RIG_FUNC_BC CONSTANT_64BIT_FLAG (22)
1031 #define RIG_FUNC_MBC CONSTANT_64BIT_FLAG (23)
1032 #define RIG_FUNC_RIT CONSTANT_64BIT_FLAG (24)
1033 #define RIG_FUNC_AFC CONSTANT_64BIT_FLAG (25)
1034 #define RIG_FUNC_SATMODE CONSTANT_64BIT_FLAG (26)
1035 #define RIG_FUNC_SCOPE CONSTANT_64BIT_FLAG (27)
1036 #define RIG_FUNC_RESUME CONSTANT_64BIT_FLAG (28)
1037 #define RIG_FUNC_TBURST CONSTANT_64BIT_FLAG (29)
1038 #define RIG_FUNC_TUNER CONSTANT_64BIT_FLAG (30)
1039 #define RIG_FUNC_XIT CONSTANT_64BIT_FLAG (31)
1040 #ifndef SWIGLUAHIDE
1041 /* Hide the top 32 bits from the old Lua binding as they can't be represented */
1042 #define RIG_FUNC_NB2 CONSTANT_64BIT_FLAG (32)
1043 #define RIG_FUNC_CSQL CONSTANT_64BIT_FLAG (33)
1044 #define RIG_FUNC_AFLT CONSTANT_64BIT_FLAG (34)
1045 #define RIG_FUNC_ANL CONSTANT_64BIT_FLAG (35)
1046 #define RIG_FUNC_BC2 CONSTANT_64BIT_FLAG (36)
1047 #define RIG_FUNC_DUAL_WATCH CONSTANT_64BIT_FLAG (37)
1048 #define RIG_FUNC_DIVERSITY CONSTANT_64BIT_FLAG (38)
1049 #define RIG_FUNC_DSQL CONSTANT_64BIT_FLAG (39)
1050 #define RIG_FUNC_SCEN CONSTANT_64BIT_FLAG (40)
1051 #define RIG_FUNC_BIT41 CONSTANT_64BIT_FLAG (41)
1052 #define RIG_FUNC_BIT42 CONSTANT_64BIT_FLAG (42)
1053 #define RIG_FUNC_BIT43 CONSTANT_64BIT_FLAG (43)
1054 #define RIG_FUNC_BIT44 CONSTANT_64BIT_FLAG (44)
1055 #define RIG_FUNC_BIT45 CONSTANT_64BIT_FLAG (45)
1056 #define RIG_FUNC_BIT46 CONSTANT_64BIT_FLAG (46)
1057 #define RIG_FUNC_BIT47 CONSTANT_64BIT_FLAG (47)
1058 #define RIG_FUNC_BIT48 CONSTANT_64BIT_FLAG (48)
1059 #define RIG_FUNC_BIT49 CONSTANT_64BIT_FLAG (49)
1060 #define RIG_FUNC_BIT50 CONSTANT_64BIT_FLAG (50)
1061 #define RIG_FUNC_BIT51 CONSTANT_64BIT_FLAG (51)
1062 #define RIG_FUNC_BIT52 CONSTANT_64BIT_FLAG (52)
1063 #define RIG_FUNC_BIT53 CONSTANT_64BIT_FLAG (53)
1064 #define RIG_FUNC_BIT54 CONSTANT_64BIT_FLAG (54)
1065 #define RIG_FUNC_BIT55 CONSTANT_64BIT_FLAG (55)
1066 #define RIG_FUNC_BIT56 CONSTANT_64BIT_FLAG (56)
1067 #define RIG_FUNC_BIT57 CONSTANT_64BIT_FLAG (57)
1068 #define RIG_FUNC_BIT58 CONSTANT_64BIT_FLAG (58)
1069 #define RIG_FUNC_BIT59 CONSTANT_64BIT_FLAG (59)
1070 #define RIG_FUNC_BIT60 CONSTANT_64BIT_FLAG (60)
1071 #define RIG_FUNC_BIT61 CONSTANT_64BIT_FLAG (61)
1072 #define RIG_FUNC_BIT62 CONSTANT_64BIT_FLAG (62)
1073 #define RIG_FUNC_BIT63 CONSTANT_64BIT_FLAG (63)
1074 /* 63 is this highest bit number that can be used */
1075 #endif
1076 
1083 #define mW(p) ((int)(p))
1091 #define Watts(p) ((int)((p)*1000))
1098 #define W(p) Watts(p)
1099 #if 0 // deprecating kW macro as this doesn't make sense
1106 #define kW(p) ((int)((p)*1000000L))
1107 #endif
1108 
1109 
1119 typedef uint64_t rmode_t;
1120 
1121 #define RIG_MODE_NONE 0
1122 #define RIG_MODE_AM CONSTANT_64BIT_FLAG (0)
1123 #define RIG_MODE_CW CONSTANT_64BIT_FLAG (1)
1124 #define RIG_MODE_USB CONSTANT_64BIT_FLAG (2)
1125 #define RIG_MODE_LSB CONSTANT_64BIT_FLAG (3)
1126 #define RIG_MODE_RTTY CONSTANT_64BIT_FLAG (4)
1127 #define RIG_MODE_FM CONSTANT_64BIT_FLAG (5)
1128 #define RIG_MODE_WFM CONSTANT_64BIT_FLAG (6)
1129 #define RIG_MODE_CWR CONSTANT_64BIT_FLAG (7)
1130 #define RIG_MODE_RTTYR CONSTANT_64BIT_FLAG (8)
1131 #define RIG_MODE_AMS CONSTANT_64BIT_FLAG (9)
1132 #define RIG_MODE_PKTLSB CONSTANT_64BIT_FLAG (10)
1133 #define RIG_MODE_PKTUSB CONSTANT_64BIT_FLAG (11)
1134 #define RIG_MODE_PKTFM CONSTANT_64BIT_FLAG (12)
1135 #define RIG_MODE_ECSSUSB CONSTANT_64BIT_FLAG (13)
1136 #define RIG_MODE_ECSSLSB CONSTANT_64BIT_FLAG (14)
1137 #define RIG_MODE_FAX CONSTANT_64BIT_FLAG (15)
1138 #define RIG_MODE_SAM CONSTANT_64BIT_FLAG (16)
1139 #define RIG_MODE_SAL CONSTANT_64BIT_FLAG (17)
1140 #define RIG_MODE_SAH CONSTANT_64BIT_FLAG (18)
1141 #define RIG_MODE_DSB CONSTANT_64BIT_FLAG (19)
1142 #define RIG_MODE_FMN CONSTANT_64BIT_FLAG (21)
1143 #define RIG_MODE_PKTAM CONSTANT_64BIT_FLAG (22)
1144 #define RIG_MODE_P25 CONSTANT_64BIT_FLAG (23)
1145 #define RIG_MODE_DSTAR CONSTANT_64BIT_FLAG (24)
1146 #define RIG_MODE_DPMR CONSTANT_64BIT_FLAG (25)
1147 #define RIG_MODE_NXDNVN CONSTANT_64BIT_FLAG (26)
1148 #define RIG_MODE_NXDN_N CONSTANT_64BIT_FLAG (27)
1149 #define RIG_MODE_DCR CONSTANT_64BIT_FLAG (28)
1150 #define RIG_MODE_AMN CONSTANT_64BIT_FLAG (29)
1151 #define RIG_MODE_PSK CONSTANT_64BIT_FLAG (30)
1152 #define RIG_MODE_PSKR CONSTANT_64BIT_FLAG (31)
1153 #ifndef SWIGLUAHIDE
1154 /* hide the top 32 bits from the Lua binding as they will not work */
1155 #define RIG_MODE_DD CONSTANT_64BIT_FLAG (32)
1156 #define RIG_MODE_C4FM CONSTANT_64BIT_FLAG (33)
1157 #define RIG_MODE_PKTFMN CONSTANT_64BIT_FLAG (34)
1158 #define RIG_MODE_SPEC CONSTANT_64BIT_FLAG (35)
1159 #define RIG_MODE_BIT36 CONSTANT_64BIT_FLAG (36)
1160 #define RIG_MODE_BIT37 CONSTANT_64BIT_FLAG (37)
1161 #define RIG_MODE_BIT38 CONSTANT_64BIT_FLAG (38)
1162 #define RIG_MODE_BIT39 CONSTANT_64BIT_FLAG (39)
1163 #define RIG_MODE_BIT40 CONSTANT_64BIT_FLAG (40)
1164 #define RIG_MODE_BIT41 CONSTANT_64BIT_FLAG (41)
1165 #define RIG_MODE_BIT42 CONSTANT_64BIT_FLAG (42)
1166 #define RIG_MODE_BIT43 CONSTANT_64BIT_FLAG (43)
1167 #define RIG_MODE_BIT44 CONSTANT_64BIT_FLAG (44)
1168 #define RIG_MODE_BIT45 CONSTANT_64BIT_FLAG (45)
1169 #define RIG_MODE_BIT46 CONSTANT_64BIT_FLAG (46)
1170 #define RIG_MODE_BIT47 CONSTANT_64BIT_FLAG (47)
1171 #define RIG_MODE_BIT48 CONSTANT_64BIT_FLAG (48)
1172 #define RIG_MODE_BIT49 CONSTANT_64BIT_FLAG (49)
1173 #define RIG_MODE_BIT50 CONSTANT_64BIT_FLAG (50)
1174 #define RIG_MODE_BIT51 CONSTANT_64BIT_FLAG (51)
1175 #define RIG_MODE_BIT52 CONSTANT_64BIT_FLAG (52)
1176 #define RIG_MODE_BIT53 CONSTANT_64BIT_FLAG (53)
1177 #define RIG_MODE_BIT54 CONSTANT_64BIT_FLAG (54)
1178 #define RIG_MODE_BIT55 CONSTANT_64BIT_FLAG (55)
1179 #define RIG_MODE_BIT56 CONSTANT_64BIT_FLAG (56)
1180 #define RIG_MODE_BIT57 CONSTANT_64BIT_FLAG (57)
1181 #define RIG_MODE_BIT58 CONSTANT_64BIT_FLAG (58)
1182 #define RIG_MODE_BIT59 CONSTANT_64BIT_FLAG (59)
1183 #define RIG_MODE_BIT60 CONSTANT_64BIT_FLAG (60)
1184 #define RIG_MODE_BIT61 CONSTANT_64BIT_FLAG (61)
1185 #define RIG_MODE_BIT62 CONSTANT_64BIT_FLAG (62)
1186 #define RIG_MODE_TESTS_MAX CONSTANT_64BIT_FLAG (63)
1187 #endif
1188 
1192 #define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB)
1193 
1197 #define RIG_MODE_ECSS (RIG_MODE_ECSSUSB|RIG_MODE_ECSSLSB)
1198 
1200 #define RIG_DBLST_END 0 /* end marker in a preamp/att level list */
1201 #define RIG_IS_DBLST_END(d) ((d)==0)
1203 
1204 
1211 typedef struct freq_range_list {
1219  char *label;
1221 
1223 #define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE}
1224 #define RIG_IS_FRNG_END(r) ((r).startf == Hz(0) && (r).endf == Hz(0))
1226 
1246 };
1247 
1249 #define RIG_TS_ANY 0
1250 #define RIG_TS_END {RIG_MODE_NONE, 0}
1251 #define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0)
1253 
1254 
1278 struct filter_list {
1281 };
1283 #define RIG_FLT_ANY 0
1284 #define RIG_FLT_END {RIG_MODE_NONE, 0}
1285 #define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE)
1287 
1288 
1292 #define RIG_CHFLAG_NONE 0
1296 #define RIG_CHFLAG_SKIP (1<<0)
1300 #define RIG_CHFLAG_DATA (1<<1)
1304 #define RIG_CHFLAG_PSKIP (1<<2)
1305 
1310 struct ext_list {
1313 };
1314 
1316 #define RIG_EXT_END {0, {.i=0}}
1317 #define RIG_IS_EXT_END(x) ((x).token == 0)
1319 
1327 struct channel {
1329  int bank_num;
1355  unsigned int flags;
1356  char channel_desc[MAXCHANDESC];
1357  struct ext_list
1359 };
1360 
1364 typedef struct channel channel_t;
1365 
1371 struct channel_cap {
1372  unsigned bank_num: 1;
1373  unsigned vfo: 1;
1374  unsigned ant: 1;
1375  unsigned freq: 1;
1376  unsigned mode: 1;
1377  unsigned width: 1;
1379  unsigned tx_freq: 1;
1380  unsigned tx_mode: 1;
1381  unsigned tx_width: 1;
1383  unsigned split: 1;
1384  unsigned tx_vfo: 1;
1385  unsigned rptr_shift: 1;
1386  unsigned rptr_offs: 1;
1387  unsigned tuning_step: 1;
1388  unsigned rit: 1;
1389  unsigned xit: 1;
1392  unsigned ctcss_tone: 1;
1393  unsigned ctcss_sql: 1;
1394  unsigned dcs_code: 1;
1395  unsigned dcs_sql: 1;
1396  unsigned scan_group: 1;
1397  unsigned flags: 1;
1398  unsigned channel_desc: 1;
1399  unsigned ext_levels: 1;
1400 };
1401 
1405 typedef struct channel_cap channel_cap_t;
1406 
1407 
1418 typedef enum {
1428 
1429 
1443 struct chan_list {
1444  int startc;
1445  int endc;
1449 };
1450 
1452 #define RIG_CHAN_END {0,0,RIG_MTYPE_NONE}
1453 #define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE)
1455 
1459 #define RIG_MEM_CAPS_ALL -1
1460 
1464 typedef struct chan_list chan_t;
1465 
1466 
1478 struct gran {
1482 };
1483 
1487 typedef struct gran gran_t;
1488 
1489 
1493 struct cal_table {
1494  int size;
1495  struct {
1496  int raw;
1497  int val;
1498  } table[MAX_CAL_LENGTH];
1499 };
1500 
1513 typedef struct cal_table cal_table_t;
1514 
1516 #define EMPTY_STR_CAL { 0, { { 0, 0 }, } }
1518 
1519 
1524  int size;
1525  struct {
1526  int raw;
1527  float val;
1528  } table[MAX_CAL_LENGTH];
1529 };
1530 
1543 typedef struct cal_table_float cal_table_float_t;
1544 
1546 #define EMPTY_FLOAT_CAL { 0, { { 0, 0f }, } }
1547 
1548 typedef int (* chan_cb_t)(RIG *, channel_t **, int, const chan_t *, rig_ptr_t);
1549 typedef int (* confval_cb_t)(RIG *,
1550  const struct confparams *,
1551  value_t *,
1552  rig_ptr_t);
1554 
1555 
1576 #define RIG_MODEL(arg) .rig_model=arg,.macro_name=#arg
1577 struct rig_caps {
1578  rig_model_t rig_model;
1579  const char *model_name;
1580  const char *mfg_name;
1581  const char *version;
1582  const char *copyright;
1583  enum rig_status_e status;
1585  int rig_type;
1586  ptt_type_t ptt_type;
1587  dcd_type_t dcd_type;
1588  rig_port_t port_type;
1590  int serial_rate_min;
1591  int serial_rate_max;
1592  int serial_data_bits;
1593  int serial_stop_bits;
1594  enum serial_parity_e serial_parity;
1595  enum serial_handshake_e serial_handshake;
1597  int write_delay;
1598  int post_write_delay;
1599  int timeout;
1600  int retry;
1602  setting_t has_get_func;
1603  setting_t has_set_func;
1604  setting_t has_get_level;
1605  setting_t has_set_level;
1606  setting_t has_get_parm;
1607  setting_t has_set_parm;
1609  gran_t level_gran[RIG_SETTING_MAX];
1610  gran_t parm_gran[RIG_SETTING_MAX];
1612  const struct confparams *extparms;
1613  const struct confparams *extlevels;
1614  const struct confparams *extfuncs;
1615  int *ext_tokens;
1617  const tone_t *ctcss_list;
1618  const tone_t *dcs_list;
1620  int preamp[MAXDBLSTSIZ];
1621  int attenuator[MAXDBLSTSIZ];
1622  shortfreq_t max_rit;
1623  shortfreq_t max_xit;
1624  shortfreq_t max_ifshift;
1626  ann_t announces;
1628  vfo_op_t vfo_ops;
1629  scan_t scan_ops;
1630  int targetable_vfo;
1631  int transceive;
1633  int bank_qty;
1634  int chan_desc_sz;
1636  chan_t chan_list[CHANLSTSIZ];
1638  // As of 2020-02-12 we know of 5 models from Icom USA, EUR, ITR, TPE, KOR for the IC-9700
1639  // So we currently have 5 ranges we need to deal with
1640  // The backend for the model should fill in the label field to explain what model it is
1641  // The the IC-9700 in ic7300.c for an example
1642  freq_range_t rx_range_list1[FRQRANGESIZ];
1643  freq_range_t tx_range_list1[FRQRANGESIZ];
1644  freq_range_t rx_range_list2[FRQRANGESIZ];
1645  freq_range_t tx_range_list2[FRQRANGESIZ];
1646  freq_range_t rx_range_list3[FRQRANGESIZ];
1647  freq_range_t tx_range_list3[FRQRANGESIZ];
1648  freq_range_t rx_range_list4[FRQRANGESIZ];
1649  freq_range_t tx_range_list4[FRQRANGESIZ];
1650  freq_range_t rx_range_list5[FRQRANGESIZ];
1651  freq_range_t tx_range_list5[FRQRANGESIZ];
1653  struct tuning_step_list tuning_steps[TSLSTSIZ];
1654  struct filter_list filters[FLTLSTSIZ];
1656  cal_table_t str_cal;
1657  cal_table_float_t swr_cal;
1658  cal_table_float_t alc_cal;
1659  cal_table_float_t rfpower_meter_cal;
1660  cal_table_float_t comp_meter_cal;
1661  cal_table_float_t vd_meter_cal;
1662  cal_table_float_t id_meter_cal;
1664  const struct confparams *cfgparams;
1665  const rig_ptr_t priv;
1667  /*
1668  * Rig API
1669  *
1670  */
1671 
1672  int (*rig_init)(RIG *rig);
1673  int (*rig_cleanup)(RIG *rig);
1674  int (*rig_open)(RIG *rig);
1675  int (*rig_close)(RIG *rig);
1676 
1677  /*
1678  * General API commands, from most primitive to least.. :()
1679  * List Set/Get functions pairs
1680  */
1681 
1682  int (*set_freq)(RIG *rig, vfo_t vfo, freq_t freq);
1683  int (*get_freq)(RIG *rig, vfo_t vfo, freq_t *freq);
1684 
1685  int (*set_mode)(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
1686  int (*get_mode)(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width);
1687 
1688  int (*set_vfo)(RIG *rig, vfo_t vfo);
1689  int (*get_vfo)(RIG *rig, vfo_t *vfo);
1690 
1691  int (*set_ptt)(RIG *rig, vfo_t vfo, ptt_t ptt);
1692  int (*get_ptt)(RIG *rig, vfo_t vfo, ptt_t *ptt);
1693 
1694  int (*get_dcd)(RIG *rig, vfo_t vfo, dcd_t *dcd);
1695 
1696  int (*set_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift);
1697  int (*get_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift);
1698 
1699  int (*set_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t offs);
1700  int (*get_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t *offs);
1701 
1702  int (*set_split_freq)(RIG *rig, vfo_t vfo, freq_t tx_freq);
1703  int (*get_split_freq)(RIG *rig, vfo_t vfo, freq_t *tx_freq);
1704 
1705  int (*set_split_mode)(RIG *rig,
1706  vfo_t vfo,
1707  rmode_t tx_mode,
1708  pbwidth_t tx_width);
1709  int (*get_split_mode)(RIG *rig,
1710  vfo_t vfo,
1711  rmode_t *tx_mode,
1712  pbwidth_t *tx_width);
1713 
1714  int (*set_split_freq_mode)(RIG *rig,
1715  vfo_t vfo,
1716  freq_t tx_freq,
1717  rmode_t tx_mode,
1718  pbwidth_t tx_width);
1719  int (*get_split_freq_mode)(RIG *rig,
1720  vfo_t vfo,
1721  freq_t *tx_freq,
1722  rmode_t *tx_mode,
1723  pbwidth_t *tx_width);
1724 
1725  int (*set_split_vfo)(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo);
1726  int (*get_split_vfo)(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo);
1727 
1728  int (*set_rit)(RIG *rig, vfo_t vfo, shortfreq_t rit);
1729  int (*get_rit)(RIG *rig, vfo_t vfo, shortfreq_t *rit);
1730 
1731  int (*set_xit)(RIG *rig, vfo_t vfo, shortfreq_t xit);
1732  int (*get_xit)(RIG *rig, vfo_t vfo, shortfreq_t *xit);
1733 
1734  int (*set_ts)(RIG *rig, vfo_t vfo, shortfreq_t ts);
1735  int (*get_ts)(RIG *rig, vfo_t vfo, shortfreq_t *ts);
1736 
1737  int (*set_dcs_code)(RIG *rig, vfo_t vfo, tone_t code);
1738  int (*get_dcs_code)(RIG *rig, vfo_t vfo, tone_t *code);
1739 
1740  int (*set_tone)(RIG *rig, vfo_t vfo, tone_t tone);
1741  int (*get_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
1742 
1743  int (*set_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t tone);
1744  int (*get_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
1745 
1746  int (*set_dcs_sql)(RIG *rig, vfo_t vfo, tone_t code);
1747  int (*get_dcs_sql)(RIG *rig, vfo_t vfo, tone_t *code);
1748 
1749  int (*set_tone_sql)(RIG *rig, vfo_t vfo, tone_t tone);
1750  int (*get_tone_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
1751 
1752  int (*set_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t tone);
1753  int (*get_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
1754 
1755  int (*power2mW)(RIG *rig,
1756  unsigned int *mwpower,
1757  float power,
1758  freq_t freq,
1759  rmode_t mode);
1760  int (*mW2power)(RIG *rig,
1761  float *power,
1762  unsigned int mwpower,
1763  freq_t freq,
1764  rmode_t mode);
1765 
1766  int (*set_powerstat)(RIG *rig, powerstat_t status);
1767  int (*get_powerstat)(RIG *rig, powerstat_t *status);
1768 
1769  int (*reset)(RIG *rig, reset_t reset);
1770 
1771  int (*set_ant)(RIG *rig, vfo_t vfo, ant_t ant, value_t option);
1772  int (*get_ant)(RIG *rig, vfo_t vfo, ant_t ant, value_t *option, ant_t *ant_curr, ant_t *ant_tx, ant_t *ant_rx);
1773 
1774  int (*set_level)(RIG *rig, vfo_t vfo, setting_t level, value_t val);
1775  int (*get_level)(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
1776 
1777  int (*set_func)(RIG *rig, vfo_t vfo, setting_t func, int status);
1778  int (*get_func)(RIG *rig, vfo_t vfo, setting_t func, int *status);
1779 
1780  int (*set_parm)(RIG *rig, setting_t parm, value_t val);
1781  int (*get_parm)(RIG *rig, setting_t parm, value_t *val);
1782 
1783  int (*set_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t val);
1784  int (*get_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t *val);
1785 
1786  int (*set_ext_func)(RIG *rig, vfo_t vfo, token_t token, int status);
1787  int (*get_ext_func)(RIG *rig, vfo_t vfo, token_t token, int *status);
1788 
1789  int (*set_ext_parm)(RIG *rig, token_t token, value_t val);
1790  int (*get_ext_parm)(RIG *rig, token_t token, value_t *val);
1791 
1792  int (*set_conf)(RIG *rig, token_t token, const char *val);
1793  int (*get_conf)(RIG *rig, token_t token, char *val);
1794 
1795  int (*send_dtmf)(RIG *rig, vfo_t vfo, const char *digits);
1796  int (*recv_dtmf)(RIG *rig, vfo_t vfo, char *digits, int *length);
1797 
1798  int (*send_morse)(RIG *rig, vfo_t vfo, const char *msg);
1799  int (*stop_morse)(RIG *rig, vfo_t vfo);
1800  int (*wait_morse)(RIG *rig, vfo_t vfo);
1801 
1802  int (*send_voice_mem)(RIG *rig, vfo_t vfo, int ch);
1803 
1804  int (*set_bank)(RIG *rig, vfo_t vfo, int bank);
1805 
1806  int (*set_mem)(RIG *rig, vfo_t vfo, int ch);
1807  int (*get_mem)(RIG *rig, vfo_t vfo, int *ch);
1808 
1809  int (*vfo_op)(RIG *rig, vfo_t vfo, vfo_op_t op);
1810 
1811  int (*scan)(RIG *rig, vfo_t vfo, scan_t scan, int ch);
1812 
1813  int (*set_trn)(RIG *rig, int trn);
1814  int (*get_trn)(RIG *rig, int *trn);
1815 
1816  int (*decode_event)(RIG *rig);
1817 
1818  int (*set_channel)(RIG *rig, vfo_t vfo, const channel_t *chan);
1819  int (*get_channel)(RIG *rig, vfo_t vfo, channel_t *chan, int read_only);
1820 
1821  const char * (*get_info)(RIG *rig);
1822 
1823  int (*set_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
1824  int (*get_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
1825 
1826  int (*set_mem_all_cb)(RIG *rig,
1827  chan_cb_t chan_cb,
1828  confval_cb_t parm_cb,
1829  rig_ptr_t);
1830  int (*get_mem_all_cb)(RIG *rig,
1831  chan_cb_t chan_cb,
1832  confval_cb_t parm_cb,
1833  rig_ptr_t);
1834 
1835  int (*set_vfo_opt)(RIG *rig, int status); // only for Net Rigctl device
1836 
1837  const char *clone_combo_set;
1838  const char *clone_combo_get;
1839  const char *macro_name;
1840 };
1842 
1848 // all functions enumerated for rig_get_function_ptr
1849 enum rig_function_e {
1850  RIG_FUNCTION_INIT,
1851  RIG_FUNCTION_CLEANUP,
1852  RIG_FUNCTION_OPEN,
1853  RIG_FUNCTION_CLOSE,
1854  RIG_FUNCTION_SET_FREQ,
1855  RIG_FUNCTION_GET_FREQ,
1856  RIG_FUNCTION_SET_MODE,
1857  RIG_FUNCTION_GET_MODE,
1858  RIG_FUNCTION_SET_VFO,
1859  RIG_FUNCTION_GET_VFO,
1860  RIG_FUNCTION_SET_PTT,
1861  RIG_FUNCTION_GET_PTT,
1862  RIG_FUNCTION_GET_DCD,
1863  RIG_FUNCTION_SET_RPTR_SHIFT,
1864  RIG_FUNCTION_GET_RPTR_SHIFT,
1865  RIG_FUNCTION_SET_RPTR_OFFS,
1866  RIG_FUNCTION_GET_RPTR_OFFS,
1867  RIG_FUNCTION_SET_SPLIT_FREQ,
1868  RIG_FUNCTION_GET_SPLIT_FREQ,
1869  RIG_FUNCTION_SET_SPLIT_MODE,
1870  RIG_FUNCTION_SET_SPLIT_FREQ_MODE,
1871  RIG_FUNCTION_GET_SPLIT_FREQ_MODE,
1872  RIG_FUNCTION_SET_SPLIT_VFO,
1873  RIG_FUNCTION_GET_SPLIT_VFO,
1874  RIG_FUNCTION_SET_RIT,
1875  RIG_FUNCTION_GET_RIT,
1876  RIG_FUNCTION_SET_XIT,
1877  RIG_FUNCTION_GET_XIT,
1878  RIG_FUNCTION_SET_TS,
1879  RIG_FUNCTION_GET_TS,
1880  RIG_FUNCTION_SET_DCS_CODE,
1881  RIG_FUNCTION_GET_DCS_CODE,
1882  RIG_FUNCTION_SET_TONE,
1883  RIG_FUNCTION_GET_TONE,
1884  RIG_FUNCTION_SET_CTCSS_TONE,
1885  RIG_FUNCTION_GET_CTCSS_TONE,
1886  RIG_FUNCTION_SET_DCS_SQL,
1887  RIG_FUNCTION_GET_DCS_SQL,
1888  RIG_FUNCTION_SET_TONE_SQL,
1889  RIG_FUNCTION_GET_TONE_SQL,
1890  RIG_FUNCTION_SET_CTCSS_SQL,
1891  RIG_FUNCTION_GET_CTCSS_SQL,
1892  RIG_FUNCTION_POWER2MW,
1893  RIG_FUNCTION_MW2POWER,
1894  RIG_FUNCTION_SET_POWERSTAT,
1895  RIG_FUNCTION_GET_POWERSTAT,
1896  RIG_FUNCTION_RESET,
1897  RIG_FUNCTION_SET_ANT,
1898  RIG_FUNCTION_GET_ANT,
1899  RIG_FUNCTION_SET_LEVEL,
1900  RIG_FUNCTION_GET_LEVEL,
1901  RIG_FUNCTION_SET_FUNC,
1902  RIG_FUNCTION_GET_FUNC,
1903  RIG_FUNCTION_SET_PARM,
1904  RIG_FUNCTION_GET_PARM,
1905  RIG_FUNCTION_SET_EXT_LEVEL,
1906  RIG_FUNCTION_GET_EXT_LEVEL,
1907  RIG_FUNCTION_SET_EXT_FUNC,
1908  RIG_FUNCTION_GET_EXT_FUNC,
1909  RIG_FUNCTION_SET_EXT_PARM,
1910  RIG_FUNCTION_GET_EXT_PARM,
1911  RIG_FUNCTION_SET_CONF,
1912  RIG_FUNCTION_GET_CONF,
1913  RIG_FUNCTION_SEND_DTMF,
1914  RIG_FUNCTION_SEND_MORSE,
1915  RIG_FUNCTION_STOP_MORSE,
1916  RIG_FUNCTION_WAIT_MORSE,
1917  RIG_FUNCTION_SEND_VOICE_MEM,
1918  RIG_FUNCTION_SET_BANK,
1919  RIG_FUNCTION_SET_MEM,
1920  RIG_FUNCTION_GET_MEM,
1921  RIG_FUNCTION_VFO_OP,
1922  RIG_FUNCTION_SCAN,
1923  RIG_FUNCTION_SET_TRN,
1924  RIG_FUNCTION_GET_TRN,
1925  RIG_FUNCTION_DECODE_EVENT,
1926  RIG_FUNCTION_SET_CHANNEL,
1927  RIG_FUNCTION_GET_CHANNEL,
1928  RIG_FUNCTION_GET_INFO,
1929  RIG_FUNCTION_SET_CHAN_ALL_CB,
1930  RIG_FUNCTION_GET_CHAN_ALL_CB,
1931  RIG_FUNCTION_SET_MEM_ALL_CB,
1932  RIG_FUNCTION_GET_MEM_ALL_CB,
1933  RIG_FUNCTION_SET_VFO_OPT
1934 };
1935 
1941 extern void *rig_get_function_ptr(rig_model_t rig_model, enum rig_function_e rig_function);
1942 
1948 // values enumerated for rig->caps values
1949 enum rig_caps_int_e {
1950  RIG_CAPS_TARGETABLE_VFO,
1951  RIG_CAPS_RIG_MODEL,
1952  RIG_CAPS_PORT_TYPE,
1953  RIG_CAPS_PTT_TYPE
1954 };
1955 
1956 enum rig_caps_cptr_e {
1957  RIG_CAPS_VERSION_CPTR,
1958  RIG_CAPS_MFG_NAME_CPTR,
1959  RIG_CAPS_MODEL_NAME_CPTR,
1960  RIG_CAPS_STATUS_CPTR
1961 };
1962 
1968 extern int rig_get_caps_int(rig_model_t rig_model, enum rig_caps_int_e rig_caps);
1969 
1975 extern const char* rig_get_caps_cptr(rig_model_t rig_model, enum rig_caps_cptr_e rig_caps);
1976 
1983 typedef struct hamlib_port {
1984  union {
1985  rig_port_t rig;
1986  ptt_type_t ptt;
1987  dcd_type_t dcd;
1988  } type;
1989 
1990  int fd;
1991  void *handle;
1993  int write_delay;
1994  int post_write_delay;
1996  struct {
1997  int tv_sec, tv_usec;
1998  } post_write_date;
2000  int timeout;
2001  short retry;
2002  short flushx;
2004  char pathname[FILPATHLEN];
2006  union {
2007  struct {
2008  int rate;
2009  int data_bits;
2010  int stop_bits;
2011  enum serial_parity_e parity;
2012  enum serial_handshake_e handshake;
2013  enum serial_control_state_e rts_state;
2014  enum serial_control_state_e dtr_state;
2015  } serial;
2017  struct {
2018  int pin;
2019  } parallel;
2021  struct {
2022  int ptt_bitnum;
2023  } cm108;
2025  struct {
2026  int vid;
2027  int pid;
2028  int conf;
2029  int iface;
2030  int alt;
2031  char *vendor_name;
2032  char *product;
2033  } usb;
2035  struct {
2036  int on_value;
2037  int value;
2038  } gpio;
2039  } parm;
2040 } hamlib_port_t;
2042 
2043 #if !defined(__APPLE__) || !defined(__cplusplus)
2044 typedef hamlib_port_t port_t;
2045 #endif
2046 
2047 #define HAMLIB_ELAPSED_GET 0
2048 #define HAMLIB_ELAPSED_SET 1
2049 #define HAMLIB_ELAPSED_INVALIDATE 2
2050 
2051 typedef enum {
2052  HAMLIB_CACHE_ALL, // to set all cache timeouts at once
2053  HAMLIB_CACHE_VFO,
2054  HAMLIB_CACHE_FREQ,
2055  HAMLIB_CACHE_MODE,
2056  HAMLIB_CACHE_PTT,
2057  HAMLIB_CACHE_SPLIT
2058 } hamlib_cache_t;
2059 
2065 struct rig_cache {
2066  int timeout_ms; // the cache timeout for invalidating itself
2067  vfo_t vfo;
2068  freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1
2069  // other abstraction here is based on dual vfo rigs and mapped to all others
2070  // So we have four possible states of rig
2071  // MainA, MainB, SubA, SubB
2072  // Main is the Main VFO and Sub is for the 2nd VFO
2073  // Most rigs have MainA and MainB
2074  // Dual VFO rigs can have SubA and SubB too
2075  // For dual VFO rigs simplex operations are all done on MainA/MainB -- ergo this abstraction
2076  freq_t freqCurr; // VFO_CURR
2077  freq_t freqMainA; // VFO_A, VFO_MAIN, and VFO_MAINA
2078  freq_t freqMainB; // VFO_B, VFO_SUB, and VFO_MAINB
2079  freq_t freqMainC; // VFO_C, VFO_MAINC
2080  freq_t freqSubA; // VFO_SUBA -- only for rigs with dual Sub VFOs
2081  freq_t freqSubB; // VFO_SUBB -- only for rigs with dual Sub VFOs
2082 #if 0 // future
2083  freq_t freqSubC; // VFO_SUBC -- only for rigs with 3 Sub VFOs
2084 #endif
2085  rmode_t mode;
2086  pbwidth_t width;
2087  ptt_t ptt;
2088  split_t split;
2089  vfo_t split_vfo; // split caches two values
2090  struct timespec time_freq;
2091  struct timespec time_freqCurr;
2092  struct timespec time_freqMainA;
2093  struct timespec time_freqMainB;
2094  struct timespec time_freqMainC;
2095  struct timespec time_freqSubA;
2096  struct timespec time_freqSubB;
2097  struct timespec time_vfo;
2098  struct timespec time_mode;
2099  struct timespec time_ptt;
2100  struct timespec time_split;
2101  vfo_t vfo_freq; // last vfo cached
2102  vfo_t vfo_mode; // last vfo cached
2103  int satmode; // if rig is in satellite mode
2104 };
2105 
2106 
2116 struct rig_state {
2117  /*
2118  * overridable fields
2119  */
2120  hamlib_port_t rigport;
2121  hamlib_port_t pttport;
2122  hamlib_port_t dcdport;
2124  double vfo_comp;
2130  struct tuning_step_list tuning_steps[TSLSTSIZ];
2132  struct filter_list filters[FLTLSTSIZ];
2136  chan_t chan_list[CHANLSTSIZ];
2144  int preamp[MAXDBLSTSIZ];
2145  int attenuator[MAXDBLSTSIZ];
2158  /*
2159  * non overridable fields, internal use
2160  */
2161 
2164  int vfo_list;
2166  rig_ptr_t priv;
2167  rig_ptr_t obj;
2176  int transmit;
2180  time_t twiddle_time;
2182  // uplink allows gpredict to behave better by no reading the uplink VFO
2183  int uplink;
2184  struct rig_cache cache;
2185  int vfo_opt;
2196 };
2197 
2199 typedef int (*vprintf_cb_t)(enum rig_debug_level_e,
2200  rig_ptr_t,
2201  const char *,
2202  va_list);
2203 
2204 typedef int (*freq_cb_t)(RIG *, vfo_t, freq_t, rig_ptr_t);
2205 typedef int (*mode_cb_t)(RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t);
2206 typedef int (*vfo_cb_t)(RIG *, vfo_t, rig_ptr_t);
2207 typedef int (*ptt_cb_t)(RIG *, vfo_t, ptt_t, rig_ptr_t);
2208 typedef int (*dcd_cb_t)(RIG *, vfo_t, dcd_t, rig_ptr_t);
2209 typedef int (*pltune_cb_t)(RIG *,
2210  vfo_t, freq_t *,
2211  rmode_t *,
2212  pbwidth_t *,
2213  rig_ptr_t);
2214 
2216 
2235  freq_cb_t freq_event;
2236  rig_ptr_t freq_arg;
2237  mode_cb_t mode_event;
2238  rig_ptr_t mode_arg;
2239  vfo_cb_t vfo_event;
2240  rig_ptr_t vfo_arg;
2241  ptt_cb_t ptt_event;
2242  rig_ptr_t ptt_arg;
2243  dcd_cb_t dcd_event;
2244  rig_ptr_t dcd_arg;
2245  pltune_cb_t pltune;
2246  rig_ptr_t pltune_arg;
2247  /* etc.. */
2248 };
2249 
2250 
2260 struct s_rig {
2261  struct rig_caps *caps;
2262  struct rig_state state;
2263  struct rig_callbacks callbacks;
2264 };
2265 
2266 
2267 
2268 /* --------------- API function prototypes -----------------*/
2269 
2271 
2272 extern HAMLIB_EXPORT(RIG *) rig_init HAMLIB_PARAMS((rig_model_t rig_model));
2273 extern HAMLIB_EXPORT(int) rig_open HAMLIB_PARAMS((RIG *rig));
2274 
2275 /*
2276  * General API commands, from most primitive to least.. :()
2277  * List Set/Get functions pairs
2278  */
2279 
2280 extern HAMLIB_EXPORT(int)
2281 rig_flush(hamlib_port_t *port);
2282 
2283 extern HAMLIB_EXPORT(int)
2284 rig_set_freq HAMLIB_PARAMS((RIG *rig,
2285  vfo_t vfo,
2286  freq_t freq));
2287 extern HAMLIB_EXPORT(int)
2288 rig_get_freq HAMLIB_PARAMS((RIG *rig,
2289  vfo_t vfo,
2290  freq_t *freq));
2291 
2292 extern HAMLIB_EXPORT(int)
2293 rig_set_mode HAMLIB_PARAMS((RIG *rig,
2294  vfo_t vfo,
2295  rmode_t mode,
2296  pbwidth_t width));
2297 extern HAMLIB_EXPORT(int)
2298 rig_get_mode HAMLIB_PARAMS((RIG *rig,
2299  vfo_t vfo,
2300  rmode_t *mode,
2301  pbwidth_t *width));
2302 
2303 extern HAMLIB_EXPORT(int)
2304 rig_set_vfo HAMLIB_PARAMS((RIG *rig,
2305  vfo_t vfo));
2306 extern HAMLIB_EXPORT(int)
2307 rig_get_vfo HAMLIB_PARAMS((RIG *rig,
2308  vfo_t *vfo));
2309 
2310 extern HAMLIB_EXPORT(int)
2311 netrigctl_get_vfo_mode HAMLIB_PARAMS((RIG *rig));
2312 
2313 extern HAMLIB_EXPORT(int)
2314 rig_set_ptt HAMLIB_PARAMS((RIG *rig,
2315  vfo_t vfo,
2316  ptt_t ptt));
2317 extern HAMLIB_EXPORT(int)
2318 rig_get_ptt HAMLIB_PARAMS((RIG *rig,
2319  vfo_t vfo,
2320  ptt_t *ptt));
2321 
2322 extern HAMLIB_EXPORT(int)
2323 rig_get_dcd HAMLIB_PARAMS((RIG *rig,
2324  vfo_t vfo,
2325  dcd_t *dcd));
2326 
2327 extern HAMLIB_EXPORT(int)
2328 rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig,
2329  vfo_t vfo,
2330  rptr_shift_t rptr_shift));
2331 extern HAMLIB_EXPORT(int)
2332 rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig,
2333  vfo_t vfo,
2334  rptr_shift_t *rptr_shift));
2335 
2336 extern HAMLIB_EXPORT(int)
2337 rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig,
2338  vfo_t vfo,
2339  shortfreq_t rptr_offs));
2340 extern HAMLIB_EXPORT(int)
2341 rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig,
2342  vfo_t vfo,
2343  shortfreq_t *rptr_offs));
2344 
2345 extern HAMLIB_EXPORT(int)
2346 rig_set_ctcss_tone HAMLIB_PARAMS((RIG *rig,
2347  vfo_t vfo,
2348  tone_t tone));
2349 extern HAMLIB_EXPORT(int)
2350 rig_get_ctcss_tone HAMLIB_PARAMS((RIG *rig,
2351  vfo_t vfo,
2352  tone_t *tone));
2353 
2354 extern HAMLIB_EXPORT(int)
2355 rig_set_dcs_code HAMLIB_PARAMS((RIG *rig,
2356  vfo_t vfo,
2357  tone_t code));
2358 extern HAMLIB_EXPORT(int)
2359 rig_get_dcs_code HAMLIB_PARAMS((RIG *rig,
2360  vfo_t vfo,
2361  tone_t *code));
2362 
2363 extern HAMLIB_EXPORT(int)
2364 rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig,
2365  vfo_t vfo,
2366  tone_t tone));
2367 extern HAMLIB_EXPORT(int)
2368 rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig,
2369  vfo_t vfo,
2370  tone_t *tone));
2371 
2372 extern HAMLIB_EXPORT(int)
2373 rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig,
2374  vfo_t vfo,
2375  tone_t code));
2376 extern HAMLIB_EXPORT(int)
2377 rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig,
2378  vfo_t vfo,
2379  tone_t *code));
2380 
2381 extern HAMLIB_EXPORT(int)
2382 rig_set_split_freq HAMLIB_PARAMS((RIG *rig,
2383  vfo_t vfo,
2384  freq_t tx_freq));
2385 extern HAMLIB_EXPORT(int)
2386 rig_get_split_freq HAMLIB_PARAMS((RIG *rig,
2387  vfo_t vfo,
2388  freq_t *tx_freq));
2389 
2390 extern HAMLIB_EXPORT(int)
2391 rig_set_split_mode HAMLIB_PARAMS((RIG *rig,
2392  vfo_t vfo,
2393  rmode_t tx_mode,
2394  pbwidth_t tx_width));
2395 extern HAMLIB_EXPORT(int)
2396 rig_get_split_mode HAMLIB_PARAMS((RIG *rig,
2397  vfo_t vfo,
2398  rmode_t *tx_mode,
2399  pbwidth_t *tx_width));
2400 
2401 extern HAMLIB_EXPORT(int)
2402 rig_set_split_freq_mode HAMLIB_PARAMS((RIG *rig,
2403  vfo_t vfo,
2404  freq_t tx_freq,
2405  rmode_t tx_mode,
2406  pbwidth_t tx_width));
2407 extern HAMLIB_EXPORT(int)
2408 rig_get_split_freq_mode HAMLIB_PARAMS((RIG *rig,
2409  vfo_t vfo,
2410  freq_t *tx_freq,
2411  rmode_t *tx_mode,
2412  pbwidth_t *tx_width));
2413 
2414 extern HAMLIB_EXPORT(int)
2415 rig_set_split_vfo HAMLIB_PARAMS((RIG *,
2416  vfo_t rx_vfo,
2417  split_t split,
2418  vfo_t tx_vfo));
2419 extern HAMLIB_EXPORT(int)
2420 rig_get_split_vfo HAMLIB_PARAMS((RIG *,
2421  vfo_t rx_vfo,
2422  split_t *split,
2423  vfo_t *tx_vfo));
2424 
2425 #define rig_set_split(r,v,s) rig_set_split_vfo((r),(v),(s),RIG_VFO_CURR)
2426 #define rig_get_split(r,v,s) ({ vfo_t _tx_vfo; rig_get_split_vfo((r),(v),(s),&_tx_vfo); })
2427 
2428 extern HAMLIB_EXPORT(int)
2429 rig_set_rit HAMLIB_PARAMS((RIG *rig,
2430  vfo_t vfo,
2431  shortfreq_t rit));
2432 extern HAMLIB_EXPORT(int)
2433 rig_get_rit HAMLIB_PARAMS((RIG *rig,
2434  vfo_t vfo,
2435  shortfreq_t *rit));
2436 
2437 extern HAMLIB_EXPORT(int)
2438 rig_set_xit HAMLIB_PARAMS((RIG *rig,
2439  vfo_t vfo,
2440  shortfreq_t xit));
2441 extern HAMLIB_EXPORT(int)
2442 rig_get_xit HAMLIB_PARAMS((RIG *rig,
2443  vfo_t vfo,
2444  shortfreq_t *xit));
2445 
2446 extern HAMLIB_EXPORT(int)
2447 rig_set_ts HAMLIB_PARAMS((RIG *rig,
2448  vfo_t vfo,
2449  shortfreq_t ts));
2450 extern HAMLIB_EXPORT(int)
2451 rig_get_ts HAMLIB_PARAMS((RIG *rig,
2452  vfo_t vfo,
2453  shortfreq_t *ts));
2454 
2455 extern HAMLIB_EXPORT(int)
2456 rig_power2mW HAMLIB_PARAMS((RIG *rig,
2457  unsigned int *mwpower,
2458  float power,
2459  freq_t freq,
2460  rmode_t mode));
2461 extern HAMLIB_EXPORT(int)
2462 rig_mW2power HAMLIB_PARAMS((RIG *rig,
2463  float *power,
2464  unsigned int mwpower,
2465  freq_t freq,
2466  rmode_t mode));
2467 
2468 extern HAMLIB_EXPORT(shortfreq_t)
2469 rig_get_resolution HAMLIB_PARAMS((RIG *rig,
2470  rmode_t mode));
2471 
2472 extern HAMLIB_EXPORT(int)
2473 rig_set_level HAMLIB_PARAMS((RIG *rig,
2474  vfo_t vfo,
2475  setting_t level,
2476  value_t val));
2477 extern HAMLIB_EXPORT(int)
2478 rig_get_level HAMLIB_PARAMS((RIG *rig,
2479  vfo_t vfo,
2480  setting_t level,
2481  value_t *val));
2482 
2483 #define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s))
2484 
2485 extern HAMLIB_EXPORT(int)
2486 rig_set_parm HAMLIB_PARAMS((RIG *rig,
2487  setting_t parm,
2488  value_t val));
2489 extern HAMLIB_EXPORT(int)
2490 rig_get_parm HAMLIB_PARAMS((RIG *rig,
2491  setting_t parm,
2492  value_t *val));
2493 
2494 extern HAMLIB_EXPORT(int)
2495 rig_set_conf HAMLIB_PARAMS((RIG *rig,
2496  token_t token,
2497  const char *val));
2498 extern HAMLIB_EXPORT(int)
2499 rig_get_conf HAMLIB_PARAMS((RIG *rig,
2500  token_t token,
2501  char *val));
2502 
2503 extern HAMLIB_EXPORT(int)
2504 rig_set_powerstat HAMLIB_PARAMS((RIG *rig,
2505  powerstat_t status));
2506 extern HAMLIB_EXPORT(int)
2507 rig_get_powerstat HAMLIB_PARAMS((RIG *rig,
2508  powerstat_t *status));
2509 
2510 extern HAMLIB_EXPORT(int)
2511 rig_reset HAMLIB_PARAMS((RIG *rig,
2512  reset_t reset)); /* dangerous! */
2513 
2514 extern HAMLIB_EXPORT(int)
2515 rig_set_ext_level HAMLIB_PARAMS((RIG *rig,
2516  vfo_t vfo,
2517  token_t token,
2518  value_t val));
2519 extern HAMLIB_EXPORT(int)
2520 rig_get_ext_level HAMLIB_PARAMS((RIG *rig,
2521  vfo_t vfo,
2522  token_t token,
2523  value_t *val));
2524 
2525 extern HAMLIB_EXPORT(int)
2526 rig_set_ext_func HAMLIB_PARAMS((RIG *rig,
2527  vfo_t vfo,
2528  token_t token,
2529  int status));
2530 extern HAMLIB_EXPORT(int)
2531 rig_get_ext_func HAMLIB_PARAMS((RIG *rig,
2532  vfo_t vfo,
2533  token_t token,
2534  int *status));
2535 
2536 extern HAMLIB_EXPORT(int)
2537 rig_set_ext_parm HAMLIB_PARAMS((RIG *rig,
2538  token_t token,
2539  value_t val));
2540 extern HAMLIB_EXPORT(int)
2541 rig_get_ext_parm HAMLIB_PARAMS((RIG *rig,
2542  token_t token,
2543  value_t *val));
2544 
2545 extern HAMLIB_EXPORT(int)
2546 rig_ext_func_foreach HAMLIB_PARAMS((RIG *rig,
2547  int (*cfunc)(RIG *,
2548  const struct confparams *,
2549  rig_ptr_t),
2550  rig_ptr_t data));
2551 extern HAMLIB_EXPORT(int)
2552 rig_ext_level_foreach HAMLIB_PARAMS((RIG *rig,
2553  int (*cfunc)(RIG *,
2554  const struct confparams *,
2555  rig_ptr_t),
2556  rig_ptr_t data));
2557 extern HAMLIB_EXPORT(int)
2558 rig_ext_parm_foreach HAMLIB_PARAMS((RIG *rig,
2559  int (*cfunc)(RIG *,
2560  const struct confparams *,
2561  rig_ptr_t),
2562  rig_ptr_t data));
2563 
2564 extern HAMLIB_EXPORT(const struct confparams *)
2565 rig_ext_lookup HAMLIB_PARAMS((RIG *rig,
2566  const char *name));
2567 
2568 extern HAMLIB_EXPORT(const struct confparams *)
2569 rig_ext_lookup_tok HAMLIB_PARAMS((RIG *rig,
2570  token_t token));
2571 extern HAMLIB_EXPORT(token_t)
2572 rig_ext_token_lookup HAMLIB_PARAMS((RIG *rig,
2573  const char *name));
2574 
2575 
2576 extern HAMLIB_EXPORT(int)
2577 rig_token_foreach HAMLIB_PARAMS((RIG *rig,
2578  int (*cfunc)(const struct confparams *,
2579  rig_ptr_t),
2580  rig_ptr_t data));
2581 
2582 extern HAMLIB_EXPORT(const struct confparams *)
2583 rig_confparam_lookup HAMLIB_PARAMS((RIG *rig,
2584  const char *name));
2585 extern HAMLIB_EXPORT(token_t)
2586 rig_token_lookup HAMLIB_PARAMS((RIG *rig,
2587  const char *name));
2588 
2589 extern HAMLIB_EXPORT(int)
2590 rig_close HAMLIB_PARAMS((RIG *rig));
2591 
2592 extern HAMLIB_EXPORT(int)
2593 rig_cleanup HAMLIB_PARAMS((RIG *rig));
2594 
2595 extern HAMLIB_EXPORT(int)
2596 rig_set_ant HAMLIB_PARAMS((RIG *rig,
2597  vfo_t vfo,
2598  ant_t ant, /* antenna */
2599  value_t option)); /* optional ant info */
2600 extern HAMLIB_EXPORT(int)
2601 rig_get_ant HAMLIB_PARAMS((RIG *rig,
2602  vfo_t vfo,
2603  ant_t ant,
2604  value_t *option,
2605  ant_t *ant_curr,
2606  ant_t *ant_tx,
2607  ant_t *ant_rx));
2608 
2609 extern HAMLIB_EXPORT(setting_t)
2610 rig_has_get_level HAMLIB_PARAMS((RIG *rig,
2611  setting_t level));
2612 extern HAMLIB_EXPORT(setting_t)
2613 rig_has_set_level HAMLIB_PARAMS((RIG *rig,
2614  setting_t level));
2615 
2616 extern HAMLIB_EXPORT(setting_t)
2617 rig_has_get_parm HAMLIB_PARAMS((RIG *rig,
2618  setting_t parm));
2619 extern HAMLIB_EXPORT(setting_t)
2620 rig_has_set_parm HAMLIB_PARAMS((RIG *rig,
2621  setting_t parm));
2622 
2623 extern HAMLIB_EXPORT(setting_t)
2624 rig_has_get_func HAMLIB_PARAMS((RIG *rig,
2625  setting_t func));
2626 extern HAMLIB_EXPORT(setting_t)
2627 rig_has_set_func HAMLIB_PARAMS((RIG *rig,
2628  setting_t func));
2629 
2630 extern HAMLIB_EXPORT(int)
2631 rig_set_func HAMLIB_PARAMS((RIG *rig,
2632  vfo_t vfo,
2633  setting_t func,
2634  int status));
2635 extern HAMLIB_EXPORT(int)
2636 rig_get_func HAMLIB_PARAMS((RIG *rig,
2637  vfo_t vfo,
2638  setting_t func,
2639  int *status));
2640 
2641 extern HAMLIB_EXPORT(int)
2642 rig_send_dtmf HAMLIB_PARAMS((RIG *rig,
2643  vfo_t vfo,
2644  const char *digits));
2645 extern HAMLIB_EXPORT(int)
2646 rig_recv_dtmf HAMLIB_PARAMS((RIG *rig,
2647  vfo_t vfo,
2648  char *digits,
2649  int *length));
2650 
2651 extern HAMLIB_EXPORT(int)
2652 rig_send_morse HAMLIB_PARAMS((RIG *rig,
2653  vfo_t vfo,
2654  const char *msg));
2655 
2656 extern HAMLIB_EXPORT(int)
2657 rig_stop_morse HAMLIB_PARAMS((RIG *rig,
2658  vfo_t vfo));
2659 
2660 extern HAMLIB_EXPORT(int)
2661 rig_wait_morse HAMLIB_PARAMS((RIG *rig,
2662  vfo_t vfo));
2663 
2664 extern HAMLIB_EXPORT(int)
2665 rig_send_voice_mem HAMLIB_PARAMS((RIG *rig,
2666  vfo_t vfo,
2667  int ch));
2668 
2669 extern HAMLIB_EXPORT(int)
2670 rig_set_bank HAMLIB_PARAMS((RIG *rig,
2671  vfo_t vfo,
2672  int bank));
2673 
2674 extern HAMLIB_EXPORT(int)
2675 rig_set_mem HAMLIB_PARAMS((RIG *rig,
2676  vfo_t vfo,
2677  int ch));
2678 extern HAMLIB_EXPORT(int)
2679 rig_get_mem HAMLIB_PARAMS((RIG *rig,
2680  vfo_t vfo,
2681  int *ch));
2682 
2683 extern HAMLIB_EXPORT(int)
2684 rig_vfo_op HAMLIB_PARAMS((RIG *rig,
2685  vfo_t vfo,
2686  vfo_op_t op));
2687 
2688 extern HAMLIB_EXPORT(vfo_op_t)
2689 rig_has_vfo_op HAMLIB_PARAMS((RIG *rig,
2690  vfo_op_t op));
2691 
2692 extern HAMLIB_EXPORT(int)
2693 rig_scan HAMLIB_PARAMS((RIG *rig,
2694  vfo_t vfo,
2695  scan_t scan,
2696  int ch));
2697 
2698 extern HAMLIB_EXPORT(scan_t)
2699 rig_has_scan HAMLIB_PARAMS((RIG *rig,
2700  scan_t scan));
2701 
2702 extern HAMLIB_EXPORT(int)
2703 rig_set_channel HAMLIB_PARAMS((RIG *rig,
2704  vfo_t vfo,
2705  const channel_t *chan)); /* mem */
2706 extern HAMLIB_EXPORT(int)
2707 rig_get_channel HAMLIB_PARAMS((RIG *rig,
2708  vfo_t vfo,
2709  channel_t *chan, int read_only));
2710 
2711 extern HAMLIB_EXPORT(int)
2712 rig_set_chan_all HAMLIB_PARAMS((RIG *rig,
2713  vfo_t vfo,
2714  const channel_t chans[]));
2715 extern HAMLIB_EXPORT(int)
2716 rig_get_chan_all HAMLIB_PARAMS((RIG *rig,
2717  vfo_t vfo,
2718  channel_t chans[]));
2719 
2720 extern HAMLIB_EXPORT(int)
2721 rig_set_chan_all_cb HAMLIB_PARAMS((RIG *rig,
2722  vfo_t vfo,
2723  chan_cb_t chan_cb,
2724  rig_ptr_t));
2725 extern HAMLIB_EXPORT(int)
2726 rig_get_chan_all_cb HAMLIB_PARAMS((RIG *rig,
2727  vfo_t vfo,
2728  chan_cb_t chan_cb,
2729  rig_ptr_t));
2730 
2731 extern HAMLIB_EXPORT(int)
2732 rig_set_mem_all_cb HAMLIB_PARAMS((RIG *rig,
2733  vfo_t vfo,
2734  chan_cb_t chan_cb,
2735  confval_cb_t parm_cb,
2736  rig_ptr_t));
2737 extern HAMLIB_EXPORT(int)
2738 rig_get_mem_all_cb HAMLIB_PARAMS((RIG *rig,
2739  vfo_t vfo,
2740  chan_cb_t chan_cb,
2741  confval_cb_t parm_cb,
2742  rig_ptr_t));
2743 
2744 extern HAMLIB_EXPORT(int)
2745 rig_set_mem_all HAMLIB_PARAMS((RIG *rig,
2746  vfo_t vfo,
2747  const channel_t *chan,
2748  const struct confparams *,
2749  const value_t *));
2750 extern HAMLIB_EXPORT(int)
2751 rig_get_mem_all HAMLIB_PARAMS((RIG *rig,
2752  vfo_t vfo,
2753  channel_t *chan,
2754  const struct confparams *,
2755  value_t *));
2756 
2757 extern HAMLIB_EXPORT(const chan_t *)
2758 rig_lookup_mem_caps HAMLIB_PARAMS((RIG *rig,
2759  int ch));
2760 
2761 extern HAMLIB_EXPORT(int)
2762 rig_mem_count HAMLIB_PARAMS((RIG *rig));
2763 
2764 extern HAMLIB_EXPORT(int)
2765 rig_set_trn HAMLIB_PARAMS((RIG *rig,
2766  int trn));
2767 extern HAMLIB_EXPORT(int)
2768 rig_get_trn HAMLIB_PARAMS((RIG *rig,
2769  int *trn));
2770 
2771 extern HAMLIB_EXPORT(int)
2772 rig_set_freq_callback HAMLIB_PARAMS((RIG *,
2773  freq_cb_t,
2774  rig_ptr_t));
2775 
2776 extern HAMLIB_EXPORT(int)
2777 rig_set_mode_callback HAMLIB_PARAMS((RIG *,
2778  mode_cb_t,
2779  rig_ptr_t));
2780 extern HAMLIB_EXPORT(int)
2781 rig_set_vfo_callback HAMLIB_PARAMS((RIG *,
2782  vfo_cb_t,
2783  rig_ptr_t));
2784 
2785 extern HAMLIB_EXPORT(int)
2786 rig_set_ptt_callback HAMLIB_PARAMS((RIG *,
2787  ptt_cb_t,
2788  rig_ptr_t));
2789 
2790 extern HAMLIB_EXPORT(int)
2791 rig_set_dcd_callback HAMLIB_PARAMS((RIG *,
2792  dcd_cb_t,
2793  rig_ptr_t));
2794 
2795 extern HAMLIB_EXPORT(int)
2796 rig_set_pltune_callback HAMLIB_PARAMS((RIG *,
2797  pltune_cb_t,
2798  rig_ptr_t));
2799 
2800 extern HAMLIB_EXPORT(int)
2801 rig_set_twiddle HAMLIB_PARAMS((RIG *rig,
2802  int seconds));
2803 
2804 extern HAMLIB_EXPORT(int)
2805 rig_get_twiddle HAMLIB_PARAMS((RIG *rig,
2806  int *seconds));
2807 
2808 extern HAMLIB_EXPORT(int)
2809 rig_set_uplink HAMLIB_PARAMS((RIG *rig,
2810  int val));
2811 
2812 
2813 extern HAMLIB_EXPORT(const char *)
2814 rig_get_info HAMLIB_PARAMS((RIG *rig));
2815 
2816 extern HAMLIB_EXPORT(const struct rig_caps *)
2817 rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model));
2818 
2819 extern HAMLIB_EXPORT(const freq_range_t *)
2820 rig_get_range HAMLIB_PARAMS((const freq_range_t *range_list,
2821  freq_t freq,
2822  rmode_t mode));
2823 
2824 extern HAMLIB_EXPORT(pbwidth_t)
2825 rig_passband_normal HAMLIB_PARAMS((RIG *rig,
2826  rmode_t mode));
2827 extern HAMLIB_EXPORT(pbwidth_t)
2828 rig_passband_narrow HAMLIB_PARAMS((RIG *rig,
2829  rmode_t mode));
2830 extern HAMLIB_EXPORT(pbwidth_t)
2831 rig_passband_wide HAMLIB_PARAMS((RIG *rig,
2832  rmode_t mode));
2833 
2834 extern HAMLIB_EXPORT(const char *)
2835 rigerror HAMLIB_PARAMS((int errnum));
2836 
2837 extern HAMLIB_EXPORT(int)
2838 rig_setting2idx HAMLIB_PARAMS((setting_t s));
2839 
2840 extern HAMLIB_EXPORT(setting_t)
2841 rig_idx2setting(int i);
2842 /*
2843  * Even if these functions are prefixed with "rig_", they are not rig specific
2844  * Maybe "hamlib_" would have been better. Let me know. --SF
2845  */
2846 extern HAMLIB_EXPORT(void)
2847 rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
2848 
2849 extern HAMLIB_EXPORT(void)
2850 rig_set_debug_time_stamp HAMLIB_PARAMS((int flag));
2851 
2852 #define rig_set_debug_level(level) rig_set_debug(level)
2853 
2854 extern HAMLIB_EXPORT(int)
2855 rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
2856 
2857 
2858 // this need to be fairly big to avoid compiler warnings
2859 #define DEBUGMSGSAVE_SIZE 24000
2860 extern HAMLIB_EXPORT_VAR(char) debugmsgsave[DEBUGMSGSAVE_SIZE]; // last debug msg
2861 #ifndef __cplusplus
2862 #ifdef __GNUC__
2863 // doing the debug macro with a dummy sprintf allows gcc to check the format string
2864 //#define rig_debug(debug_level,fmt,...) { char xxxbuf[16384]="";snprintf(xxxbuf,sizeof(xxxbuf),fmt,__VA_ARGS__);rig_debug(debug_level,fmt,##__VA_ARGS__); }
2865 #define rig_debug(debug_level,fmt,...) { snprintf(debugmsgsave,sizeof(debugmsgsave),fmt,__VA_ARGS__);rig_debug(debug_level,fmt,##__VA_ARGS__); }
2866 #endif
2867 #endif
2868 extern HAMLIB_EXPORT(void)
2869 rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level,
2870  const char *fmt, ...));
2871 
2872 extern HAMLIB_EXPORT(vprintf_cb_t)
2873 rig_set_debug_callback HAMLIB_PARAMS((vprintf_cb_t cb,
2874  rig_ptr_t arg));
2875 
2876 extern HAMLIB_EXPORT(FILE *)
2877 rig_set_debug_file HAMLIB_PARAMS((FILE *stream));
2878 
2879 extern HAMLIB_EXPORT(int)
2880 rig_register HAMLIB_PARAMS((const struct rig_caps *caps));
2881 
2882 extern HAMLIB_EXPORT(int)
2883 rig_unregister HAMLIB_PARAMS((rig_model_t rig_model));
2884 
2885 extern HAMLIB_EXPORT(int)
2886 rig_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rig_caps *, rig_ptr_t),
2887  rig_ptr_t data));
2888 
2889 extern HAMLIB_EXPORT(int)
2890 rig_list_foreach_model HAMLIB_PARAMS((int (*cfunc)(const rig_model_t rig_model, rig_ptr_t),
2891  rig_ptr_t data));
2892 
2893 extern HAMLIB_EXPORT(int)
2894 rig_load_backend HAMLIB_PARAMS((const char *be_name));
2895 
2896 extern HAMLIB_EXPORT(int)
2897 rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model));
2898 
2899 extern HAMLIB_EXPORT(int)
2900 rig_load_all_backends HAMLIB_PARAMS((void));
2901 
2902 typedef int (*rig_probe_func_t)(const hamlib_port_t *, rig_model_t, rig_ptr_t);
2903 
2904 extern HAMLIB_EXPORT(int)
2905 rig_probe_all HAMLIB_PARAMS((hamlib_port_t *p,
2906  rig_probe_func_t,
2907  rig_ptr_t));
2908 
2909 extern HAMLIB_EXPORT(rig_model_t)
2910 rig_probe HAMLIB_PARAMS((hamlib_port_t *p));
2911 
2912 
2913 /* Misc calls */
2914 extern HAMLIB_EXPORT(const char *) rig_strrmode(rmode_t mode);
2915 extern HAMLIB_EXPORT(int) rig_strrmodes(rmode_t modes, char *buf, int buflen);
2916 extern HAMLIB_EXPORT(const char *) rig_strvfo(vfo_t vfo);
2917 extern HAMLIB_EXPORT(const char *) rig_strfunc(setting_t);
2918 extern HAMLIB_EXPORT(const char *) rig_strlevel(setting_t);
2919 extern HAMLIB_EXPORT(const char *) rig_strparm(setting_t);
2920 extern HAMLIB_EXPORT(const char *) rig_strptrshift(rptr_shift_t);
2921 extern HAMLIB_EXPORT(const char *) rig_strvfop(vfo_op_t op);
2922 extern HAMLIB_EXPORT(const char *) rig_strscan(scan_t scan);
2923 extern HAMLIB_EXPORT(const char *) rig_strstatus(enum rig_status_e status);
2924 extern HAMLIB_EXPORT(const char *) rig_strmtype(chan_type_t mtype);
2925 
2926 extern HAMLIB_EXPORT(rmode_t) rig_parse_mode(const char *s);
2927 extern HAMLIB_EXPORT(vfo_t) rig_parse_vfo(const char *s);
2928 extern HAMLIB_EXPORT(setting_t) rig_parse_func(const char *s);
2929 extern HAMLIB_EXPORT(setting_t) rig_parse_level(const char *s);
2930 extern HAMLIB_EXPORT(setting_t) rig_parse_parm(const char *s);
2931 extern HAMLIB_EXPORT(vfo_op_t) rig_parse_vfo_op(const char *s);
2932 extern HAMLIB_EXPORT(scan_t) rig_parse_scan(const char *s);
2933 extern HAMLIB_EXPORT(rptr_shift_t) rig_parse_rptr_shift(const char *s);
2934 extern HAMLIB_EXPORT(chan_type_t) rig_parse_mtype(const char *s);
2935 
2936 extern HAMLIB_EXPORT(const char *) rig_license HAMLIB_PARAMS(());
2937 extern HAMLIB_EXPORT(const char *) rig_version HAMLIB_PARAMS(());
2938 extern HAMLIB_EXPORT(const char *) rig_copyright HAMLIB_PARAMS(());
2939 
2940 extern HAMLIB_EXPORT(void) rig_no_restore_ai();
2941 
2942 extern HAMLIB_EXPORT(int) rig_get_cache_timeout_ms(RIG *rig, hamlib_cache_t selection);
2943 extern HAMLIB_EXPORT(int) rig_set_cache_timeout_ms(RIG *rig, hamlib_cache_t selection, int ms);
2944 
2945 extern HAMLIB_EXPORT(int) rig_set_vfo_opt(RIG *rig, int status);
2946 
2947 
2948 typedef unsigned long rig_useconds_t;
2949 extern HAMLIB_EXPORT(int) hl_usleep(rig_useconds_t msec);
2950 
2952 
2953 __END_DECLS
2954 
2955 #endif /* _RIG_H */
2956 
setting_t rig_parse_parm(const char *s)
Convert alpha string to RIG_PARM_...
Definition: misc.c:1095
vfo_t rig_parse_vfo(const char *s)
Convert alpha string to enum RIG_VFO_...
Definition: misc.c:584
const char * rig_strparm(setting_t parm)
Convert enum RIG_PARM_... to alpha string.
Definition: misc.c:1145
const char * rig_strptrshift(rptr_shift_t shift)
convert enum RIG_RPT_SHIFT_... to printable character
Definition: misc.c:1352
int rig_strrmodes(rmode_t modes, char *buf, int buflen)
Convert RIG_MODE or'd value to alpha string of all modes.
Definition: misc.c:520
rptr_shift_t rig_parse_rptr_shift(const char *s)
Convert alpha char to enum RIG_RPT_SHIFT_...
Definition: misc.c:1377
uint64_t rig_idx2setting(int i)
Definition: misc.c:694
const char * rig_strstatus(enum rig_status_e status)
Convert enum RIG_STATUS_... to printable string.
Definition: misc.c:388
void rig_set_debug_time_stamp(int flag)
Enbable/disable time stamp on debug output.
Definition: debug.c:142
chan_type_t rig_parse_mtype(const char *s)
Convert alpha string to enum RIG_MTYPE_...
Definition: misc.c:1420
const char * rig_strmtype(chan_type_t mtype)
Convert enum RIG_MTYPE_... to alpha string.
Definition: misc.c:1445
FILE * rig_set_debug_file(FILE *stream)
change stderr to some different output
Definition: debug.c:295
const char * rig_strrmode(rmode_t mode)
Convert enum RIG_MODE to alpha string.
Definition: misc.c:488
vprintf_cb_t rig_set_debug_callback(vprintf_cb_t cb, rig_ptr_t arg)
set callback to handle debug messages
Definition: debug.c:280
int rig_need_debug(enum rig_debug_level_e debug_level)
Useful for dump_hex, etc.
Definition: debug.c:133
const char * rig_strscan(scan_t rscan)
Convert enum RIG_SCAN_... to alpha string.
Definition: misc.c:1323
setting_t rig_parse_level(const char *s)
Convert alpha string to enum RIG_LEVEL_...
Definition: misc.c:896
scan_t rig_parse_scan(const char *s)
Convert alpha string to enum RIG_SCAN_...
Definition: misc.c:1298
setting_t rig_parse_func(const char *s)
Convert alpha string to enum RIG_FUNC_...
Definition: misc.c:706
const char * rig_strvfo(vfo_t vfo)
Convert enum RIG_VFO_... to alpha string.
Definition: misc.c:609
rmode_t rig_parse_mode(const char *s)
Convert alpha string to enum RIG_MODE.
Definition: misc.c:463
const char * rig_strvfop(vfo_op_t op)
Convert enum RIG_OP_... to alpha string.
Definition: misc.c:1253
void rig_set_debug(enum rig_debug_level_e debug_level)
Change the current debug level.
Definition: debug.c:123
const char * rig_strlevel(setting_t level)
Convert enum RIG_LEVEL_... to alpha string.
Definition: misc.c:977
void rig_debug(enum rig_debug_level_e debug_level, const char *fmt,...)
Default is debugging messages are done through stderr.
Definition: debug.c:171
const char * rig_strfunc(setting_t func)
Convert enum RIG_FUNC_... to alpha string.
Definition: misc.c:756
vfo_op_t rig_parse_vfo_op(const char *s)
Convert alpha string to enum RIG_OP_...
Definition: misc.c:1228
int rig_set_vfo(RIG *rig, vfo_t vfo)
set the current VFO
Definition: rig.c:2201
unsigned int vfo_t
VFO definition.
Definition: rig.h:395
int rig_get_split_freq_mode(RIG *rig, vfo_t vfo, freq_t *tx_freq, rmode_t *tx_mode, pbwidth_t *tx_width)
get the current split frequency and mode
Definition: rig.c:3720
int rig_set_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t val)
set a radio level extra parameter
Definition: settings.c:612
int rig_send_dtmf(RIG *rig, vfo_t vfo, const char *digits)
send DTMF digits
Definition: rig.c:5055
int rig_set_twiddle(RIG *rig, int seconds)
timeout (secs) to stop rigctld when VFO is manually changed
Definition: rig.c:1253
meter_level_e
Level display meters.
Definition: rig.h:810
int rig_get_mem_all(RIG *rig, vfo_t vfo, channel_t chans[], const struct confparams cfgps[], value_t vals[])
get all channel and non-channel data
Definition: mem.c:1529
int rig_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd)
get the status of the DCD
Definition: rig.c:2816
serial_parity_e
Serial parity.
Definition: rig.h:228
int rig_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo)
get the current split mode
Definition: rig.c:3862
int rig_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
get the mode of the target VFO
Definition: rig.c:1940
int rig_set_channel(RIG *rig, vfo_t vfo, const channel_t *chan)
set channel data
Definition: mem.c:688
dcd_e
DCD status.
Definition: rig.h:518
int rig_set_freq_callback(RIG *rig, freq_cb_t cb, rig_ptr_t arg)
set the callback for freq events
Definition: event.c:526
const char * hamlib_copyright2
Hamlib copyright notice.
Definition: rig.c:96
int rig_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs)
get the current repeater offset
Definition: rig.c:3125
int rig_set_powerstat(RIG *rig, powerstat_t status)
turn on/off the radio
Definition: rig.c:4692
int rig_get_powerstat(RIG *rig, powerstat_t *status)
get the on/off status of the radio
Definition: rig.c:4725
int rig_set_dcs_sql(RIG *rig, vfo_t vfo, tone_t code)
set the current DCS code
Definition: tones.c:491
serial_control_state_e
Serial control state.
Definition: rig.h:250
int rig_set_mem(RIG *rig, vfo_t vfo, int ch)
set the current memory channel number
Definition: mem.c:72
int rig_power2mW(RIG *rig, unsigned int *mwpower, float power, freq_t freq, rmode_t mode)
conversion utility from relative range to absolute in mW
Definition: rig.c:4537
setting_t rig_has_set_func(RIG *rig, setting_t func)
check ability of radio functions
Definition: settings.c:444
int rig_get_vfo(RIG *rig, vfo_t *vfo)
get the current VFO
Definition: rig.c:2302
int rig_set_split_freq_mode(RIG *rig, vfo_t vfo, freq_t tx_freq, rmode_t tx_mode, pbwidth_t tx_width)
set the split frequency and mode
Definition: rig.c:3661
uint64_t rmode_t
Radio mode.
Definition: rig.h:1119
int rig_set_vfo_callback(RIG *rig, vfo_cb_t cb, rig_ptr_t arg)
set the callback for vfo events
Definition: event.c:586
shortfreq_t pbwidth_t
Definition: rig.h:512
int rig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
set a radio level setting
Definition: settings.c:71
int rig_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit)
get the current RIT offset
Definition: rig.c:4043
int rig_cleanup(RIG *rig)
release a rig handle and free associated memory
Definition: rig.c:1209
rig_type_t
Rig type flags.
Definition: rig.h:260
int rig_get_mem(RIG *rig, vfo_t vfo, int *ch)
get the current memory channel number
Definition: mem.c:135
int rig_set_mem_all(RIG *rig, vfo_t vfo, const channel_t chans[], const struct confparams cfgps[], const value_t vals[])
set all channel and non-channel data
Definition: mem.c:1461
enum rig_port_e rig_port_t
Port type.
split_t
Split mode.
Definition: rig.h:324
rptr_shift_t
Repeater shift type.
Definition: rig.h:314
int rig_set_mem_all_cb(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t arg)
set all channel and non-channel data by call-back
Definition: mem.c:1327
int rig_get_dcs_sql(RIG *rig, vfo_t vfo, tone_t *code)
get the current DCS code
Definition: tones.c:553
scan_t rig_has_scan(RIG *rig, scan_t scan)
check availability of scanning functions
Definition: rig.c:4957
ptt_type_t
PTT type.
Definition: rig.h:558
int rig_get_mem_all_cb(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t arg)
get all channel and non-channel data by call-back
Definition: mem.c:1395
token_t rig_token_lookup(RIG *rig, const char *name)
lookup a token id
Definition: conf.c:1090
int rig_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS squelch
Definition: tones.c:362
ann_t
Announce.
Definition: rig.h:716
int rig_set_dcs_code(RIG *rig, vfo_t vfo, tone_t code)
set the current encoding DCS code
Definition: tones.c:230
int rig_set_dcd_callback(RIG *rig, dcd_cb_t cb, rig_ptr_t arg)
set the callback for dcd events
Definition: event.c:646
int rig_get_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t *val)
get the value of a level extra parameter
Definition: settings.c:678
int rig_get_channel(RIG *rig, vfo_t vfox, channel_t *chan, int read_only)
get channel data
Definition: mem.c:832
int rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
get the frequency of the target VFO
Definition: rig.c:1651
int rig_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
activate/de-activate functions of radio
Definition: settings.c:475
int rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
get the status of the PTT
Definition: rig.c:2579
int rig_get_chan_all_cb(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t arg)
get all channel data, by callback
Definition: mem.c:1129
int rig_mW2power(RIG *rig, float *power, unsigned int mwpower, freq_t freq, rmode_t mode)
conversion utility from absolute in mW to relative range
Definition: rig.c:4593
int rig_set_bank(RIG *rig, vfo_t vfo, int bank)
set the current memory bank
Definition: mem.c:198
int rig_ext_func_foreach(RIG *rig, int(*cfunc)(RIG *, const struct confparams *, rig_ptr_t), rig_ptr_t data)
Executes cfunc on all the elements stored in the extfuncs table.
Definition: ext.c:86
int rig_get_ctcss_sql(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS squelch
Definition: tones.c:429
int rig_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit)
get the current XIT offset
Definition: rig.c:4179
int rig_get_parm(RIG *rig, setting_t parm, value_t *val)
get the value of a parameter
Definition: settings.c:262
int rig_get_trn(RIG *rig, int *trn)
get the current transceive mode
Definition: event.c:855
int rig_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs)
set the repeater offset
Definition: rig.c:3057
int rig_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS sub-tone frequency
Definition: tones.c:167
int rig_set_ext_func(RIG *rig, vfo_t vfo, token_t token, int status)
set a radio function extra parameter
Definition: settings.c:743
const struct confparams * rig_confparam_lookup(RIG *rig, const char *name)
lookup a confparam struct
Definition: conf.c:1034
setting_t rig_has_set_level(RIG *rig, setting_t level)
check settable ability of level settings
Definition: settings.c:326
rig_parm_e
Rig Parameters.
Definition: rig.h:938
int rig_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option)
set the antenna
Definition: rig.c:4388
int rig_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo)
set the split mode
Definition: rig.c:3769
shortfreq_t rig_get_resolution(RIG *rig, rmode_t mode)
get the best frequency resolution of the rig
Definition: rig.c:4651
pbwidth_t rig_passband_wide(RIG *rig, rmode_t mode)
get the wide passband of a mode
Definition: rig.c:2148
int hl_usleep(rig_useconds_t usec)
provide sleep and usleep replacements
Definition: sleep.c:53
uint64_t setting_t
Setting.
Definition: rig.h:964
powerstat_t
Radio power state.
Definition: rig.h:574
setting_t rig_has_get_func(RIG *rig, setting_t func)
check ability of radio functions
Definition: settings.c:414
int rig_set_uplink(RIG *rig, int val)
For GPredict to avoid reading frequency on uplink VFO.
Definition: rig.c:1278
enum dcd_e dcd_t
DCD status.
int rig_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
get the status of functions of the radio
Definition: settings.c:548
int rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq)
set the split frequencies
Definition: rig.c:3193
int rig_probe_all(hamlib_port_t *port, rig_probe_func_t cfunc, rig_ptr_t data)
try to guess rigs
Definition: rig.c:4828
rig_errcode_e
Hamlib error codes Error code definition that can be returned by the Hamlib functions....
Definition: rig.h:121
int rig_ext_parm_foreach(RIG *rig, int(*cfunc)(RIG *, const struct confparams *, rig_ptr_t), rig_ptr_t data)
Executes cfunc on all the elements stored in the extparms table.
Definition: ext.c:186
rig_conf_e
parameter types
Definition: rig.h:674
scan_t
Rig Scan operation.
Definition: rig.h:636
int rig_send_voice_mem(RIG *rig, vfo_t vfo, int ch)
send voice memory content
Definition: rig.c:5410
int rig_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length)
receive DTMF digits
Definition: rig.c:5124
int rig_set_mode_callback(RIG *rig, mode_cb_t cb, rig_ptr_t arg)
set the callback for mode events
Definition: event.c:556
int rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
set the frequency of the target VFO
Definition: rig.c:1499
int rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
set PTT on/off
Definition: rig.c:2376
int rig_get_conf(RIG *rig, token_t token, char *val)
get the value of a configuration parameter
Definition: conf.c:1174
double freq_t
Frequency type,.
Definition: rig.h:335
int rig_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch)
perform Memory/VFO operations
Definition: rig.c:4986
int rig_send_morse(RIG *rig, vfo_t vfo, const char *msg)
send morse code
Definition: rig.c:5192
int rig_setting2idx(setting_t s)
basically convert setting_t expressed 2^n to n
Definition: settings.c:933
int rig_get_ext_parm(RIG *rig, token_t token, value_t *val)
get the value of a parm extra parameter
Definition: settings.c:906
int rig_mem_count(RIG *rig)
get memory channel count
Definition: mem.c:1654
ptt_t
PTT status.
Definition: rig.h:545
RIG * rig_init(rig_model_t rig_model)
allocate a new RIG handle
Definition: rig.c:354
setting_t rig_has_get_parm(RIG *rig, setting_t parm)
check retrieval ability of parameter settings
Definition: settings.c:356
int rig_ext_level_foreach(RIG *rig, int(*cfunc)(RIG *, const struct confparams *, rig_ptr_t), rig_ptr_t data)
Executes cfunc on all the elements stored in the extlevels table.
Definition: ext.c:136
int rig_set_pltune_callback(RIG *rig, pltune_cb_t cb, rig_ptr_t arg)
set the callback for pipelined tuning module
Definition: event.c:678
struct freq_range_list freq_range_t
Frequency range.
int rig_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS sub-tone frequency
Definition: tones.c:100
int rig_set_ext_parm(RIG *rig, token_t token, value_t val)
set a radio parm extra parameter
Definition: settings.c:874
int rig_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
set the mode of the target VFO
Definition: rig.c:1849
vfo_op_t
VFO operation.
Definition: rig.h:610
int rig_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts)
get the current Tuning Step
Definition: rig.c:4315
signed long shortfreq_t
Short frequency type.
Definition: rig.h:357
token_t rig_ext_token_lookup(RIG *rig, const char *name)
Simple lookup returning token id associated with name.
Definition: ext.c:327
const char * rig_version()
get the Hamlib version
Definition: rig.c:5565
int rig_set_conf(RIG *rig, token_t token, const char *val)
set a radio configuration parameter
Definition: conf.c:1121
rig_port_e
Port type.
Definition: rig.h:207
int rig_wait_morse(RIG *rig, vfo_t vfo)
wait morse code
Definition: rig.c:5353
int rig_close(RIG *rig)
close the communication to the rig
Definition: rig.c:1054
pbwidth_t rig_passband_narrow(RIG *rig, rmode_t mode)
get the narrow passband of a mode
Definition: rig.c:2096
serial_handshake_e
Serial handshake.
Definition: rig.h:240
int rig_get_ext_func(RIG *rig, vfo_t vfo, token_t token, int *status)
get the value of a function extra parameter
Definition: settings.c:809
const chan_t * rig_lookup_mem_caps(RIG *rig, int ch)
lookup the memory type and capabilities
Definition: mem.c:1588
agc_level_e
AGC delay settings.
Definition: rig.h:793
dcd_type_t
DCD type.
Definition: rig.h:529
unsigned int tone_t
CTCSS and DCS type definition.
Definition: rig.h:201
int rig_get_chan_all(RIG *rig, vfo_t vfo, channel_t chans[])
get all channel data
Definition: mem.c:1212
int rig_set_chan_all(RIG *rig, vfo_t vfo, const channel_t chans[])
set all channel data
Definition: mem.c:1170
int rig_set_vfo_opt(RIG *rig, int status)
set the vfo option for rigctld
Definition: rig.c:5510
int rig_set_ptt_callback(RIG *rig, ptt_cb_t cb, rig_ptr_t arg)
set the callback for ptt events
Definition: event.c:616
pbwidth_t rig_passband_normal(RIG *rig, rmode_t mode)
get the normal passband of a mode
Definition: rig.c:2051
rig_debug_level_e
Hamlib debug levels.
Definition: rig.h:155
#define RIG_SETTING_MAX
Maximum # of rig settings.
Definition: rig.h:970
const struct confparams * rig_ext_lookup_tok(RIG *rig, token_t token)
lookup ext token, return pointer to confparams struct.
Definition: ext.c:283
setting_t rig_has_set_parm(RIG *rig, setting_t parm)
check settable ability of parameter settings
Definition: settings.c:385
const char * rig_license()
get the Hamlib license
Definition: rig.c:5555
int rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit)
set the RIT
Definition: rig.c:3975
const char * rig_copyright()
get the Hamlib copyright
Definition: rig.c:5575
int rig_get_twiddle(RIG *rig, int *seconds)
get the twiddle timeout value (secs)
Definition: rig.c:1304
char debugmsgsave[DEBUGMSGSAVE_SIZE]
get string describing the error code
Definition: rig.c:293
int rig_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts)
set the Tuning Step
Definition: rig.c:4247
int rig_get_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t *option, ant_t *ant_curr, ant_t *ant_tx, ant_t *ant_rx)
get the current antenna
Definition: rig.c:4460
int rig_open(RIG *rig)
open the communication to the rig
Definition: rig.c:633
int rig_set_parm(RIG *rig, setting_t parm, value_t val)
set a radio parameter
Definition: settings.c:228
int rig_get_dcs_code(RIG *rig, vfo_t vfo, tone_t *code)
get the current encoding DCS code
Definition: tones.c:292
hamlib_port_t port_t
Rig data structure.
Definition: rig.h:2044
int rig_stop_morse(RIG *rig, vfo_t vfo)
stop morse code
Definition: rig.c:5257
const struct confparams * rig_ext_lookup(RIG *rig, const char *name)
lookup ext token by its name, return pointer to confparams struct.
Definition: ext.c:236
const char * rig_get_info(RIG *rig)
get general information from the radio
Definition: rig.c:5533
setting_t rig_has_get_level(RIG *rig, setting_t level)
check retrieval ability of level settings
Definition: settings.c:296
uint64_t rig_level_e
Rig Level Settings.
Definition: rig.h:850
long token_t
configuration token
Definition: rig.h:652
int rig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
get the value of a level
Definition: settings.c:141
int rig_set_chan_all_cb(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t arg)
set all channel data, by callback
Definition: mem.c:1082
int rig_set_split_mode(RIG *rig, vfo_t vfo, rmode_t tx_mode, pbwidth_t tx_width)
set the split modes
Definition: rig.c:3429
int rig_reset(RIG *rig, reset_t reset)
reset the radio
Definition: rig.c:4757
int rig_token_foreach(RIG *rig, int(*cfunc)(const struct confparams *, rig_ptr_t), rig_ptr_t data)
call a function against each configuration token of a rig
Definition: conf.c:980
int rig_set_trn(RIG *rig, int trn)
control the transceive mode
Definition: event.c:707
vfo_op_t rig_has_vfo_op(RIG *rig, vfo_op_t op)
check retrieval ability of VFO operations
Definition: rig.c:4859
unsigned int ant_t
Antenna typedef.
Definition: rig.h:773
int rig_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)
get the current repeater shift
Definition: rig.c:2989
int rig_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, pbwidth_t *tx_width)
get the current split modes
Definition: rig.c:3541
int rig_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
set the repeater shift
Definition: rig.c:2921
reset_t
Reset operation.
Definition: rig.h:586
int rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq)
get the current split frequencies
Definition: rig.c:3301
int rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op)
perform Memory/VFO operations
Definition: rig.c:4887
rig_status_e
Development status of the backend.
Definition: rig.h:294
int rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit)
set the XIT
Definition: rig.c:4111
rig_model_t rig_probe(hamlib_port_t *port)
try to guess a rig
Definition: rig.c:4798
const freq_range_t * rig_get_range(const freq_range_t *range_list, freq_t freq, rmode_t mode)
find the freq_range of freq/mode
Definition: rig.c:5477
chan_type_t
Memory channel type definition.
Definition: rig.h:1418
@ RIG_PARITY_MARK
Definition: rig.h:232
@ RIG_PARITY_NONE
Definition: rig.h:229
@ RIG_PARITY_EVEN
Definition: rig.h:231
@ RIG_PARITY_SPACE
Definition: rig.h:233
@ RIG_PARITY_ODD
Definition: rig.h:230
@ RIG_DCD_ON
Definition: rig.h:520
@ RIG_DCD_OFF
Definition: rig.h:519
@ RIG_SIGNAL_ON
Definition: rig.h:252
@ RIG_SIGNAL_OFF
Definition: rig.h:253
@ RIG_SIGNAL_UNSET
Definition: rig.h:251
@ RIG_FLAG_COMPUTER
Definition: rig.h:266
@ RIG_FLAG_TUNER
Definition: rig.h:271
@ RIG_FLAG_SCANNER
Definition: rig.h:263
@ RIG_FLAG_TRANSMITTER
Definition: rig.h:262
@ RIG_FLAG_MOBILE
Definition: rig.h:264
@ RIG_FLAG_TRUNKING
Definition: rig.h:267
@ RIG_FLAG_APRS
Definition: rig.h:268
@ RIG_FLAG_TNC
Definition: rig.h:269
@ RIG_FLAG_HANDHELD
Definition: rig.h:265
@ RIG_FLAG_DXCLUSTER
Definition: rig.h:270
@ RIG_FLAG_RECEIVER
Definition: rig.h:261
@ RIG_SPLIT_ON
Definition: rig.h:326
@ RIG_SPLIT_OFF
Definition: rig.h:325
@ RIG_RPT_SHIFT_PLUS
Definition: rig.h:317
@ RIG_RPT_SHIFT_MINUS
Definition: rig.h:316
@ RIG_RPT_SHIFT_NONE
Definition: rig.h:315
@ RIG_PTT_RIG
Definition: rig.h:560
@ RIG_PTT_RIG_MICDATA
Definition: rig.h:564
@ RIG_PTT_SERIAL_DTR
Definition: rig.h:561
@ RIG_PTT_NONE
Definition: rig.h:559
@ RIG_PTT_PARALLEL
Definition: rig.h:563
@ RIG_PTT_GPION
Definition: rig.h:567
@ RIG_PTT_GPIO
Definition: rig.h:566
@ RIG_PTT_CM108
Definition: rig.h:565
@ RIG_PTT_SERIAL_RTS
Definition: rig.h:562
@ RIG_ANN_RXMODE
Definition: rig.h:720
@ RIG_ANN_OFF
Definition: rig.h:718
@ RIG_ANN_ENG
Definition: rig.h:722
@ RIG_ANN_FREQ
Definition: rig.h:719
@ RIG_ANN_NONE
Definition: rig.h:717
@ RIG_ANN_CW
Definition: rig.h:721
@ RIG_ANN_JAP
Definition: rig.h:723
@ RIG_PARM_BEEP
Definition: rig.h:943
@ RIG_PARM_TIME
Definition: rig.h:944
@ RIG_PARM_SCREENSAVER
Definition: rig.h:947
@ RIG_PARM_ANN
Definition: rig.h:940
@ RIG_PARM_NONE
Definition: rig.h:939
@ RIG_PARM_BACKLIGHT
Definition: rig.h:942
@ RIG_PARM_KEYLIGHT
Definition: rig.h:946
@ RIG_PARM_BAT
Definition: rig.h:945
@ RIG_PARM_APO
Definition: rig.h:941
@ RIG_POWER_OPERATE
Definition: rig.h:578
@ RIG_POWER_UNKNOWN
Definition: rig.h:579
@ RIG_POWER_STANDBY
Definition: rig.h:577
@ RIG_POWER_OFF
Definition: rig.h:575
@ RIG_POWER_ON
Definition: rig.h:576
@ RIG_ENIMPL
Definition: rig.h:126
@ RIG_ECONF
Definition: rig.h:124
@ RIG_ENAVAIL
Definition: rig.h:133
@ RIG_OK
Definition: rig.h:122
@ RIG_EPROTO
Definition: rig.h:130
@ RIG_EINTERNAL
Definition: rig.h:129
@ RIG_EDOM
Definition: rig.h:139
@ RIG_EIO
Definition: rig.h:128
@ RIG_EVFO
Definition: rig.h:138
@ RIG_ETIMEOUT
Definition: rig.h:127
@ RIG_ENOMEM
Definition: rig.h:125
@ RIG_EARG
Definition: rig.h:137
@ RIG_ERJCTED
Definition: rig.h:131
@ RIG_BUSERROR
Definition: rig.h:135
@ RIG_BUSBUSY
Definition: rig.h:136
@ RIG_ENTARGET
Definition: rig.h:134
@ RIG_EINVAL
Definition: rig.h:123
@ RIG_ETRUNC
Definition: rig.h:132
@ RIG_CONF_STRING
Definition: rig.h:675
@ RIG_CONF_BUTTON
Definition: rig.h:679
@ RIG_CONF_CHECKBUTTON
Definition: rig.h:678
@ RIG_CONF_BINARY
Definition: rig.h:680
@ RIG_CONF_COMBO
Definition: rig.h:676
@ RIG_CONF_NUMERIC
Definition: rig.h:677
@ RIG_SCAN_DELTA
Definition: rig.h:642
@ RIG_SCAN_PLT
Definition: rig.h:644
@ RIG_SCAN_PROG
Definition: rig.h:641
@ RIG_SCAN_MEM
Definition: rig.h:638
@ RIG_SCAN_NONE
Definition: rig.h:637
@ RIG_SCAN_VFO
Definition: rig.h:643
@ RIG_SCAN_PRIO
Definition: rig.h:640
@ RIG_SCAN_SLCT
Definition: rig.h:639
@ RIG_SCAN_STOP
Definition: rig.h:645
@ RIG_PTT_OFF
Definition: rig.h:546
@ RIG_PTT_ON_DATA
Definition: rig.h:549
@ RIG_PTT_ON_MIC
Definition: rig.h:548
@ RIG_PTT_ON
Definition: rig.h:547
@ RIG_OP_CPY
Definition: rig.h:612
@ RIG_OP_DOWN
Definition: rig.h:618
@ RIG_OP_TO_VFO
Definition: rig.h:615
@ RIG_OP_TUNE
Definition: rig.h:623
@ RIG_OP_FROM_VFO
Definition: rig.h:614
@ RIG_OP_MCL
Definition: rig.h:616
@ RIG_OP_RIGHT
Definition: rig.h:622
@ RIG_OP_UP
Definition: rig.h:617
@ RIG_OP_TOGGLE
Definition: rig.h:624
@ RIG_OP_NONE
Definition: rig.h:611
@ RIG_OP_BAND_UP
Definition: rig.h:619
@ RIG_OP_BAND_DOWN
Definition: rig.h:620
@ RIG_OP_LEFT
Definition: rig.h:621
@ RIG_OP_XCHG
Definition: rig.h:613
@ RIG_PORT_PACKET
Definition: rig.h:212
@ RIG_PORT_UDP_NETWORK
Definition: rig.h:218
@ RIG_PORT_NONE
Definition: rig.h:208
@ RIG_PORT_CM108
Definition: rig.h:219
@ RIG_PORT_GPIO
Definition: rig.h:220
@ RIG_PORT_ULTRA
Definition: rig.h:214
@ RIG_PORT_GPION
Definition: rig.h:221
@ RIG_PORT_SERIAL
Definition: rig.h:209
@ RIG_PORT_PARALLEL
Definition: rig.h:216
@ RIG_PORT_NETWORK
Definition: rig.h:210
@ RIG_PORT_DEVICE
Definition: rig.h:211
@ RIG_PORT_RPC
Definition: rig.h:215
@ RIG_PORT_DTMF
Definition: rig.h:213
@ RIG_PORT_USB
Definition: rig.h:217
@ RIG_HANDSHAKE_HARDWARE
Definition: rig.h:243
@ RIG_HANDSHAKE_NONE
Definition: rig.h:241
@ RIG_HANDSHAKE_XONXOFF
Definition: rig.h:242
@ RIG_AGC_USER
Definition: rig.h:798
@ RIG_DCD_SERIAL_CTS
Definition: rig.h:533
@ RIG_DCD_PARALLEL
Definition: rig.h:535
@ RIG_DCD_CM108
Definition: rig.h:536
@ RIG_DCD_RIG
Definition: rig.h:531
@ RIG_DCD_GPION
Definition: rig.h:538
@ RIG_DCD_NONE
Definition: rig.h:530
@ RIG_DCD_SERIAL_DSR
Definition: rig.h:532
@ RIG_DCD_GPIO
Definition: rig.h:537
@ RIG_DCD_SERIAL_CAR
Definition: rig.h:534
@ RIG_DEBUG_ERR
Definition: rig.h:158
@ RIG_DEBUG_BUG
Definition: rig.h:157
@ RIG_DEBUG_WARN
Definition: rig.h:159
@ RIG_DEBUG_TRACE
Definition: rig.h:161
@ RIG_DEBUG_VERBOSE
Definition: rig.h:160
@ RIG_DEBUG_NONE
Definition: rig.h:156
@ RIG_RESET_MCALL
Definition: rig.h:590
@ RIG_RESET_MASTER
Definition: rig.h:591
@ RIG_RESET_NONE
Definition: rig.h:587
@ RIG_RESET_VFO
Definition: rig.h:589
@ RIG_RESET_SOFT
Definition: rig.h:588
@ RIG_STATUS_STABLE
Definition: rig.h:298
@ RIG_STATUS_BUGGY
Definition: rig.h:299
@ RIG_STATUS_UNTESTED
Definition: rig.h:296
@ RIG_STATUS_BETA
Definition: rig.h:297
@ RIG_STATUS_ALPHA
Definition: rig.h:295
@ RIG_MTYPE_PRIO
Definition: rig.h:1426
@ RIG_MTYPE_EDGE
Definition: rig.h:1421
@ RIG_MTYPE_MEM
Definition: rig.h:1420
@ RIG_MTYPE_CALL
Definition: rig.h:1422
@ RIG_MTYPE_SAT
Definition: rig.h:1424
@ RIG_MTYPE_MEMOPAD
Definition: rig.h:1423
@ RIG_MTYPE_NONE
Definition: rig.h:1419
@ RIG_MTYPE_BAND
Definition: rig.h:1425
Calibration table struct for float values.
Definition: rig.h:1523
float val
Definition: rig.h:1527
int size
Definition: rig.h:1524
struct cal_table_float::@19 table[MAX_CAL_LENGTH]
int raw
Definition: rig.h:1526
Calibration table struct.
Definition: rig.h:1493
int val
Definition: rig.h:1497
struct cal_table::@18 table[MAX_CAL_LENGTH]
int raw
Definition: rig.h:1496
int size
Definition: rig.h:1494
Memory channel list definition.
Definition: rig.h:1443
int startc
Definition: rig.h:1444
chan_type_t type
Definition: rig.h:1446
channel_cap_t mem_caps
Definition: rig.h:1448
int endc
Definition: rig.h:1445
Channel capability definition.
Definition: rig.h:1371
unsigned tx_vfo
Definition: rig.h:1384
unsigned tx_freq
Definition: rig.h:1379
unsigned mode
Definition: rig.h:1376
unsigned dcs_code
Definition: rig.h:1394
unsigned rit
Definition: rig.h:1388
unsigned dcs_sql
Definition: rig.h:1395
unsigned rptr_offs
Definition: rig.h:1386
unsigned bank_num
Definition: rig.h:1372
setting_t levels
Definition: rig.h:1391
unsigned width
Definition: rig.h:1377
unsigned rptr_shift
Definition: rig.h:1385
unsigned tx_width
Definition: rig.h:1381
unsigned ctcss_sql
Definition: rig.h:1393
unsigned tx_mode
Definition: rig.h:1380
unsigned freq
Definition: rig.h:1375
setting_t funcs
Definition: rig.h:1390
unsigned ctcss_tone
Definition: rig.h:1392
unsigned ext_levels
Definition: rig.h:1399
unsigned vfo
Definition: rig.h:1373
unsigned ant
Definition: rig.h:1374
unsigned split
Definition: rig.h:1383
unsigned scan_group
Definition: rig.h:1396
unsigned flags
Definition: rig.h:1397
unsigned tuning_step
Definition: rig.h:1387
unsigned xit
Definition: rig.h:1389
unsigned channel_desc
Definition: rig.h:1398
Channel structure.
Definition: rig.h:1327
shortfreq_t tuning_step
Definition: rig.h:1345
rmode_t mode
Definition: rig.h:1333
tone_t ctcss_tone
Definition: rig.h:1350
pbwidth_t tx_width
Definition: rig.h:1338
vfo_t vfo
Definition: rig.h:1330
value_t levels[64]
Definition: rig.h:1349
shortfreq_t rptr_offs
Definition: rig.h:1344
vfo_t tx_vfo
Definition: rig.h:1341
tone_t dcs_code
Definition: rig.h:1352
setting_t funcs
Definition: rig.h:1348
struct ext_list * ext_levels
Definition: rig.h:1357
char channel_desc[MAXCHANDESC]
Definition: rig.h:1356
tone_t ctcss_sql
Definition: rig.h:1351
shortfreq_t xit
Definition: rig.h:1347
int bank_num
Definition: rig.h:1329
pbwidth_t width
Definition: rig.h:1334
freq_t freq
Definition: rig.h:1332
rptr_shift_t rptr_shift
Definition: rig.h:1343
shortfreq_t rit
Definition: rig.h:1346
rmode_t tx_mode
Definition: rig.h:1337
split_t split
Definition: rig.h:1340
freq_t tx_freq
Definition: rig.h:1336
ant_t ant
Definition: rig.h:1331
unsigned int flags
Definition: rig.h:1355
int scan_group
Definition: rig.h:1354
int channel_num
Definition: rig.h:1328
tone_t dcs_sql
Definition: rig.h:1353
Configuration parameter structure.
Definition: rig.h:691
const char * combostr[RIG_COMBO_MAX]
Definition: rig.h:705
struct confparams::@15::@16 n
const char * tooltip
Definition: rig.h:695
const char * dflt
Definition: rig.h:696
float min
Definition: rig.h:700
token_t token
Definition: rig.h:692
float step
Definition: rig.h:702
struct confparams::@15::@17 c
const char * label
Definition: rig.h:694
float max
Definition: rig.h:701
const char * name
Definition: rig.h:693
enum rig_conf_e type
Definition: rig.h:697
union confparams::@15 u
Extension attribute definition.
Definition: rig.h:1310
token_t token
Definition: rig.h:1311
value_t val
Definition: rig.h:1312
Filter definition.
Definition: rig.h:1278
rmode_t modes
Definition: rig.h:1279
pbwidth_t width
Definition: rig.h:1280
Frequency range.
Definition: rig.h:1211
freq_t startf
Definition: rig.h:1212
freq_t endf
Definition: rig.h:1213
int low_power
Definition: rig.h:1215
char * label
Definition: rig.h:1219
ant_t ant
Definition: rig.h:1218
int high_power
Definition: rig.h:1216
vfo_t vfo
Definition: rig.h:1217
rmode_t modes
Definition: rig.h:1214
level/parm granularity definition
Definition: rig.h:1478
value_t max
Definition: rig.h:1480
value_t step
Definition: rig.h:1481
value_t min
Definition: rig.h:1479
Rig cache data.
Definition: rig.h:2065
Callback functions and args for rig event.
Definition: rig.h:2234
rig_ptr_t mode_arg
Definition: rig.h:2238
ptt_cb_t ptt_event
Definition: rig.h:2241
vfo_cb_t vfo_event
Definition: rig.h:2239
mode_cb_t mode_event
Definition: rig.h:2237
rig_ptr_t freq_arg
Definition: rig.h:2236
rig_ptr_t ptt_arg
Definition: rig.h:2242
rig_ptr_t dcd_arg
Definition: rig.h:2244
dcd_cb_t dcd_event
Definition: rig.h:2243
rig_ptr_t pltune_arg
Definition: rig.h:2246
pltune_cb_t pltune
Definition: rig.h:2245
rig_ptr_t vfo_arg
Definition: rig.h:2240
freq_cb_t freq_event
Definition: rig.h:2235
Rig state containing live data and customized fields.
Definition: rig.h:2116
int auto_power_on
Definition: rig.h:2186
int vfo_opt
Definition: rig.h:2185
setting_t has_set_parm
Definition: rig.h:2152
rmode_t mode_list
Definition: rig.h:2175
shortfreq_t max_rit
Definition: rig.h:2138
freq_t lo_freq
Definition: rig.h:2179
int power_max
Definition: rig.h:2194
gran_t parm_gran[64]
Definition: rig.h:2155
int hold_decode
Definition: rig.h:2162
int transceive
Definition: rig.h:2169
int preamp[MAXDBLSTSIZ]
Definition: rig.h:2144
rmode_t current_mode
Definition: rig.h:2172
setting_t has_set_func
Definition: rig.h:2148
int uplink
Definition: rig.h:2183
rig_ptr_t obj
Definition: rig.h:2167
pbwidth_t current_width
Definition: rig.h:2173
int ptt_share
Definition: rig.h:2191
rig_ptr_t priv
Definition: rig.h:2166
freq_range_t tx_range_list[FRQRANGESIZ]
Definition: rig.h:2128
freq_t current_freq
Definition: rig.h:2171
hamlib_port_t dcdport
Definition: rig.h:2122
time_t twiddle_time
Definition: rig.h:2180
vfo_t tx_vfo
Definition: rig.h:2174
int deprecated_itu_region
Definition: rig.h:2126
int power_min
Definition: rig.h:2193
double vfo_comp
Definition: rig.h:2124
setting_t has_set_level
Definition: rig.h:2150
shortfreq_t max_xit
Definition: rig.h:2139
hamlib_port_t rigport
Definition: rig.h:2120
int power_now
Definition: rig.h:2192
int twiddle_timeout
Definition: rig.h:2181
int poll_interval
Definition: rig.h:2170
unsigned char disable_yaesu_bandselect
Definition: rig.h:2195
int attenuator[MAXDBLSTSIZ]
Definition: rig.h:2145
setting_t has_get_parm
Definition: rig.h:2151
struct filter_list filters[FLTLSTSIZ]
Definition: rig.h:2132
vfo_t current_vfo
Definition: rig.h:2163
int auto_disable_screensaver
Definition: rig.h:2188
freq_range_t rx_range_list[FRQRANGESIZ]
Definition: rig.h:2127
int comm_state
Definition: rig.h:2165
int vfo_list
Definition: rig.h:2164
setting_t has_get_level
Definition: rig.h:2149
setting_t has_get_func
Definition: rig.h:2147
int transmit
Definition: rig.h:2176
ann_t announces
Definition: rig.h:2142
struct tuning_step_list tuning_steps[TSLSTSIZ]
Definition: rig.h:2130
cal_table_t str_cal
Definition: rig.h:2134
shortfreq_t max_ifshift
Definition: rig.h:2140
gran_t level_gran[64]
Definition: rig.h:2154
hamlib_port_t pttport
Definition: rig.h:2121
The Rig structure.
Definition: rig.h:2260
struct rig_callbacks callbacks
Definition: rig.h:2263
struct rig_state state
Definition: rig.h:2262
struct rig_caps * caps
Definition: rig.h:2261
Tuning step definition.
Definition: rig.h:1243
rmode_t modes
Definition: rig.h:1244
shortfreq_t ts
Definition: rig.h:1245
Universal approach for passing values.
Definition: rig.h:828
char * s
Definition: rig.h:831
float f
Definition: rig.h:830
const char * cs
Definition: rig.h:832
signed int i
Definition: rig.h:829

Generated by doxygen 1.9.1

Hamlib documentation for version 4.1 -- Mon Feb 1 2021 08:00:28
Project page: http://www.hamlib.org