Hamlib  4.4
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 TRACE rig_debug(RIG_DEBUG_TRACE,"%s(%d) trace\n", __FILE__, __LINE__)
28 #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
29 
30 #include <stdio.h>
31 #include <stdarg.h>
32 #include <string.h>
33 #include <inttypes.h>
34 #include <time.h>
35 #include <sys/time.h>
36 
37 /* Rig list is in a separate file so as not to mess up w/ this one */
38 #include <hamlib/riglist.h>
39 
53 /* __BEGIN_DECLS should be used at the beginning of your declarations,
54  * so that C++ compilers don't mangle their names. Use __END_DECLS at
55  * the end of C declarations. */
57 #undef __BEGIN_DECLS
58 #undef __END_DECLS
59 #ifdef __cplusplus
60 # define __BEGIN_DECLS extern "C" {
61 # define __END_DECLS }
62 #else
63 # define __BEGIN_DECLS /* empty */
64 # define __END_DECLS /* empty */
65 #endif
66 
68 /* HAMLIB_PARAMS is a macro used to wrap function prototypes, so that compilers
69  * that don't understand ANSI C prototypes still work, and ANSI C
70  * compilers can issue warnings about type mismatches. */
72 #undef HAMLIB_PARAMS
73 #if defined (__STDC__) \
74  || defined (_AIX) \
75  || (defined (__mips) && defined (_SYSTYPE_SVR4)) \
76  || defined(__CYGWIN__) \
77  || defined(_WIN32) \
78  || defined(__cplusplus)
79 # define HAMLIB_PARAMS(protos) protos
80 # define rig_ptr_t void *
81 # define amp_ptr_t void *
82 #else
83 # define HAMLIB_PARAMS(protos) ()
84 # define rig_ptr_t char *
85 # define amp_ptr_t char *
86 #endif
87 
89 #include <hamlib/rig_dll.h>
90 
91 #ifndef SWIGLUA
92 #define CONSTANT_64BIT_FLAG(BIT) (1ull << (BIT))
94 #else
96 /* SWIG's older Lua generator doesn't grok ull due to Lua using a
97  double-precision floating point type internally for number
98  representations (max 53 bits of precision) so makes a string
99  constant from a constant number literal using ull */
100 // #define CONSTANT_64BIT_FLAG(BIT) (1 << (BIT))
101 // #define SWIGLUAHIDE
102 /* But this appears to have been fixed so we'll use the correct one now
103  If you have the older version of SWIG comment out this line and use
104  the two above */
105 // This 1ul definition works on swig 4.0.1 and lua 5.3.5
106 #define CONSTANT_64BIT_FLAG(BIT) (1ul << (BIT))
107 #endif
108 
109 __BEGIN_DECLS
110 
115 // cookie is 26-char time code plus 10-char (2^31-1) random number
116 #define HAMLIB_COOKIE_SIZE 37
117 extern int cookie_use; // this is global as once one client requests it everybody needs to honor it
118 
120 extern HAMLIB_EXPORT_VAR(const char) hamlib_version[];
121 extern HAMLIB_EXPORT_VAR(const char) hamlib_copyright[];
122 extern HAMLIB_EXPORT_VAR(const char *) hamlib_version2;
123 extern HAMLIB_EXPORT_VAR(const char *) hamlib_copyright2;
125 
133  RIG_OK = 0,
151 };
152 
158 #define RIG_IS_SOFT_ERRCODE(errcode) (errcode == RIG_EINVAL || errcode == RIG_ENIMPL || errcode == RIG_ERJCTED \
159  || errcode == RIG_ETRUNC || errcode == RIG_ENAVAIL || errcode == RIG_ENTARGET \
160  || errcode == RIG_EVFO || errcode == RIG_EDOM)
161 
165 #define NETRIGCTL_RET "RPRT "
166 
167 
183 };
184 
185 
186 /* --------------- Rig capabilities -----------------*/
187 
188 /* Forward struct references */
189 
190 struct rig;
191 struct rig_state;
192 
196 typedef struct s_rig RIG;
197 
199 #define HAMLIB_RIGNAMSIZ 30
200 #define HAMLIB_RIGVERSIZ 8
201 #define HAMLIB_FILPATHLEN 512
202 #define HAMLIB_FRQRANGESIZ 30
203 #define HAMLIB_MAXCHANDESC 30 /* describe channel eg: "WWV 5Mhz" */
204 #define HAMLIB_TSLSTSIZ 20 /* max tuning step list size, zero ended */
205 #define HAMLIB_FLTLSTSIZ 60 /* max mode/filter list size, zero ended */
206 #define HAMLIB_MAXDBLSTSIZ 8 /* max preamp/att levels supported, zero ended */
207 #define HAMLIB_CHANLSTSIZ 16 /* max mem_list size, zero ended */
208 #define HAMLIB_MAX_AGC_LEVELS 8 /* max AGC levels supported */
209 #define HAMLIB_MAX_SPECTRUM_SCOPES 4 /* max number of spectrum scopes supported */
210 #define HAMLIB_MAX_SPECTRUM_MODES 5 /* max number of spectrum modes supported */
211 #define HAMLIB_MAX_SPECTRUM_AVG_MODES 12 /* max number of spectrum averaging modes supported */
212 #define HAMLIB_MAX_SPECTRUM_SPANS 20 /* max number of spectrum modes supported */
213 #define HAMLIB_MAX_CAL_LENGTH 32 /* max calibration plots in cal_table_t */
214 #define HAMLIB_MAX_MODES 63
215 #define HAMLIB_MAX_VFOS 31
216 #define HAMLIB_MAX_ROTORS 63
217 #define HAMLIB_MAX_VFO_OPS 31
218 #define HAMLIB_MAX_RSCANS 31
219 
221 
232 #define CTCSS_LIST_SIZE 60
233 #define DCS_LIST_SIZE 128
234 typedef unsigned int tone_t;
235 
236 
240 typedef enum rig_port_e {
255 } rig_port_t;
256 
257 
267 };
268 
269 
277 };
278 
279 
287 };
288 
289 
293 typedef enum {
294  RIG_FLAG_RECEIVER = (1 << 1),
295  RIG_FLAG_TRANSMITTER = (1 << 2),
296  RIG_FLAG_SCANNER = (1 << 3),
297  RIG_FLAG_MOBILE = (1 << 4),
298  RIG_FLAG_HANDHELD = (1 << 5),
299  RIG_FLAG_COMPUTER = (1 << 6),
300  RIG_FLAG_TRUNKING = (1 << 7),
301  RIG_FLAG_APRS = (1 << 8),
302  RIG_FLAG_TNC = (1 << 9),
303  RIG_FLAG_DXCLUSTER = (1 << 10),
304  RIG_FLAG_TUNER = (1 << 11)
305 } rig_type_t;
306 
308 #define RIG_FLAG_TRANSCEIVER (RIG_FLAG_RECEIVER|RIG_FLAG_TRANSMITTER)
309 #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)
310 
311 #define RIG_TYPE_OTHER 0
312 #define RIG_TYPE_TRANSCEIVER RIG_FLAG_TRANSCEIVER
313 #define RIG_TYPE_HANDHELD (RIG_FLAG_TRANSCEIVER|RIG_FLAG_HANDHELD)
314 #define RIG_TYPE_MOBILE (RIG_FLAG_TRANSCEIVER|RIG_FLAG_MOBILE)
315 #define RIG_TYPE_RECEIVER RIG_FLAG_RECEIVER
316 #define RIG_TYPE_PCRECEIVER (RIG_FLAG_COMPUTER|RIG_FLAG_RECEIVER)
317 #define RIG_TYPE_SCANNER (RIG_FLAG_SCANNER|RIG_FLAG_RECEIVER)
318 #define RIG_TYPE_TRUNKSCANNER (RIG_TYPE_SCANNER|RIG_FLAG_TRUNKING)
319 #define RIG_TYPE_COMPUTER (RIG_FLAG_TRANSCEIVER|RIG_FLAG_COMPUTER)
320 #define RIG_TYPE_TUNER RIG_FLAG_TUNER
321 
323 
333  /* RIG_STATUS_NEW * *!< Initial release of code
334  * !! Use of RIG_STATUS_NEW is deprecated. Do not use it anymore */
335 };
336 
341 #define RIG_STATUS_NEW RIG_STATUS_UNTESTED
342 
343 
347 typedef enum {
351 } rptr_shift_t;
352 
353 
357 typedef enum {
360 } split_t;
361 
362 
368 typedef double freq_t;
369 
373 #define PRIfreq ".0f"
374 
378 #define SCNfreq "lf"
379 
382 #define FREQFMT SCNfreq
383 
384 
390 typedef signed long shortfreq_t;
391 
393 #define Hz(f) ((freq_t)(f))
394 
395 #define kHz(f) ((freq_t)((f)*(freq_t)1000))
396 
397 #define MHz(f) ((freq_t)((f)*(freq_t)1000000))
398 
399 #define GHz(f) ((freq_t)((f)*(freq_t)1000000000))
400 
402 #define s_Hz(f) ((shortfreq_t)(f))
403 
404 #define s_kHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000))
405 
406 #define s_MHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000))
407 
408 #define s_GHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000000))
409 
411 #define RIG_FREQ_NONE Hz(0)
412 
413 
428 typedef unsigned int vfo_t;
429 
432 #define RIG_VFO_N(n) (1u<<(n))
433 
435 #define RIG_VFO_NONE 0
436 
438 #define RIG_VFO_A RIG_VFO_N(0)
439 
441 #define RIG_VFO_B RIG_VFO_N(1)
442 
444 #define RIG_VFO_C RIG_VFO_N(2)
445 
446 // Any addition VFOS need to go from 3-20
447 // To maintain backward compatibility these values cannot change
448 
450 #define RIG_VFO_SUB_A RIG_VFO_N(21)
451 
453 #define RIG_VFO_SUB_B RIG_VFO_N(22)
454 
456 #define RIG_VFO_SUB_C RIG_VFO_N(3)
457 
459 #define RIG_VFO_MAIN_A RIG_VFO_N(23)
460 
462 #define RIG_VFO_MAIN_B RIG_VFO_N(24)
463 
465 #define RIG_VFO_MAIN_C RIG_VFO_N(4)
466 
468 #define RIG_VFO_OTHER RIG_VFO_N(5)
469 
471 #define RIG_VFO_SUB RIG_VFO_N(25)
472 
474 #define RIG_VFO_MAIN RIG_VFO_N(26)
475 
477 #define RIG_VFO_VFO RIG_VFO_N(27)
478 
480 #define RIG_VFO_MEM RIG_VFO_N(28)
481 
483 #define RIG_VFO_CURR RIG_VFO_N(29)
484 
486 #define RIG_VFO_TX_FLAG RIG_VFO_N(30)
487 
489 #define RIG_VFO_ALL RIG_VFO_N(31)
490 
491 // we can also use RIG_VFO_N(31) if needed
492 
493 // Misc VFO Macros
494 
496 #define RIG_VFO_TX_VFO(v) ((v)|RIG_VFO_TX_FLAG)
497 
499 #define RIG_VFO_TX RIG_VFO_TX_VFO(RIG_VFO_CURR)
500 
502 #define RIG_VFO_RX RIG_VFO_CURR
503 
504 
505 /*
506  * targetable bitfields, for internal use.
507  * In rig.c lack of a flag will case a VFO change if needed
508  * So setting this flag will mean the backend handles any VFO needs
509  * For many rigs RITXIT, PTT, MEM, and BANK are non-VFO commands so need these flags to avoid unnecessary VFO swapping
510  */
512 #define RIG_TARGETABLE_NONE 0
513 #define RIG_TARGETABLE_FREQ (1<<0)
514 #define RIG_TARGETABLE_MODE (1<<1) // mode by vfo or same mode on both vfos
515 #define RIG_TARGETABLE_PURE (1<<2) // deprecated -- not used -- reuse it
516 #define RIG_TARGETABLE_TONE (1<<3)
517 #define RIG_TARGETABLE_FUNC (1<<4)
518 #define RIG_TARGETABLE_LEVEL (1<<5)
519 #define RIG_TARGETABLE_RITXIT (1<<6)
520 #define RIG_TARGETABLE_PTT (1<<7)
521 #define RIG_TARGETABLE_MEM (1<<8)
522 #define RIG_TARGETABLE_BANK (1<<9)
523 #define RIG_TARGETABLE_ANT (1<<10)
524 #define RIG_TARGETABLE_ROOFING (1<<11) // roofing filter targetable by VFO
525 #define RIG_TARGETABLE_SPECTRUM (1<<12) // spectrum scope targetable by VFO
526 #define RIG_TARGETABLE_COMMON (RIG_TARGETABLE_RITXIT | RIG_TARGETABLE_PTT | RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK)
527 #define RIG_TARGETABLE_ALL 0x7fffffff
528 //
530 //
531 // Newer Icoms like the 9700 and 910 have VFOA/B on both Main & Sub
532 // Compared to older rigs which have one or the other
533 // So we need to distinguish between them
535 #define VFO_HAS_A_B ((rig->state.vfo_list & (RIG_VFO_A|RIG_VFO_B)) == (RIG_VFO_A|RIG_VFO_B))
536 #define VFO_HAS_MAIN_SUB ((rig->state.vfo_list & (RIG_VFO_MAIN|RIG_VFO_SUB)) == (RIG_VFO_MAIN|RIG_VFO_SUB))
537 #define VFO_HAS_MAIN_SUB_ONLY ((!VFO_HAS_A_B) & VFO_HAS_MAIN_SUB)
538 #define VFO_HAS_MAIN_SUB_A_B_ONLY (VFO_HAS_A_B & VFO_HAS_MAIN_SUB)
539 #define VFO_HAS_A_B_ONLY (VFO_HAS_A_B & (!VFO_HAS_MAIN_SUB))
540 #define VFO_DUAL (RIG_VFO_MAIN_A|RIG_VFO_MAIN_B|RIG_VFO_SUB_A|RIG_VFO_SUB_B)
541 #define VFO_HAS_DUAL ((rig->state.vfo_list & VFO_DUAL) == VFO_DUAL)
542 
548 #define RIG_PASSBAND_NORMAL s_Hz(0)
549 
553 #define RIG_PASSBAND_NOCHANGE s_Hz(-1)
554 
560 
561 
565 typedef enum dcd_e {
568 } dcd_t;
569 
570 
576 typedef enum {
586 } dcd_type_t;
587 
588 
592 typedef enum {
597 } ptt_t;
598 
599 
605 typedef enum {
615 } ptt_type_t;
616 
617 
621 typedef enum {
623  RIG_POWER_ON = (1 << 0),
624  RIG_POWER_STANDBY = (1 << 1),
625  RIG_POWER_OPERATE = (1 << 2),
626  RIG_POWER_UNKNOWN = (1 << 3)
627 } powerstat_t;
628 
629 
633 typedef enum {
635  RIG_RESET_SOFT = (1 << 0),
636  RIG_RESET_VFO = (1 << 1),
637  RIG_RESET_MCALL = (1 << 2),
638  RIG_RESET_MASTER = (1 << 3)
639 } reset_t;
640 
641 
657 typedef enum {
659  RIG_OP_CPY = (1 << 0),
660  RIG_OP_XCHG = (1 << 1),
661  RIG_OP_FROM_VFO = (1 << 2),
662  RIG_OP_TO_VFO = (1 << 3),
663  RIG_OP_MCL = (1 << 4),
664  RIG_OP_UP = (1 << 5),
665  RIG_OP_DOWN = (1 << 6),
666  RIG_OP_BAND_UP = (1 << 7),
667  RIG_OP_BAND_DOWN = (1 << 8),
668  RIG_OP_LEFT = (1 << 9),
669  RIG_OP_RIGHT = (1 << 10),
670  RIG_OP_TUNE = (1 << 11),
671  RIG_OP_TOGGLE = (1 << 12)
672 } vfo_op_t;
673 
674 
683 typedef enum {
685  RIG_SCAN_MEM = (1 << 0),
686  RIG_SCAN_SLCT = (1 << 1),
687  RIG_SCAN_PRIO = (1 << 2),
688  RIG_SCAN_PROG = (1 << 3),
689  RIG_SCAN_DELTA = (1 << 4),
690  RIG_SCAN_VFO = (1 << 5),
691  RIG_SCAN_PLT = (1 << 6),
692  RIG_SCAN_STOP = (1 << 7)
693 } scan_t;
694 
695 
699 typedef long token_t;
700 
701 
703 #define RIG_CONF_END 0
704 
706 
720 /* strongly inspired from soundmodem. Thanks Thomas! */
728 };
729 
731 #define RIG_COMBO_MAX 16
732 #define RIG_BIN_MAX 80
733 
738 struct confparams {
740  const char *name;
741  const char *label;
742  const char *tooltip;
743  const char *dflt;
745  union {
746  struct {
747  float min;
748  float max;
749  float step;
750  } n;
751  struct {
752  const char *combostr[RIG_COMBO_MAX];
753  } c;
754  } u;
755 };
756 
757 
763 typedef enum {
766  RIG_ANN_FREQ = (1 << 0),
767  RIG_ANN_RXMODE = (1 << 1),
768  RIG_ANN_CW = (1 << 2),
769  RIG_ANN_ENG = (1 << 3),
770  RIG_ANN_JAP = (1 << 4)
771 } ann_t;
772 
773 
820 typedef unsigned int ant_t;
821 
822 #define RIG_ANT_NONE 0
823 #define RIG_ANT_N(n) ((ant_t)1<<(n))
824 #define RIG_ANT_1 RIG_ANT_N(0)
825 #define RIG_ANT_2 RIG_ANT_N(1)
826 #define RIG_ANT_3 RIG_ANT_N(2)
827 #define RIG_ANT_4 RIG_ANT_N(3)
828 #define RIG_ANT_5 RIG_ANT_N(4)
829 
830 #define RIG_ANT_UNKNOWN RIG_ANT_N(30)
831 #define RIG_ANT_CURR RIG_ANT_N(31)
832 
833 #define RIG_ANT_MAX 32
834 
835 
839 /* TODO: kill me, and replace by real AGC delay */
841  RIG_AGC_OFF = 0,
842  RIG_AGC_SUPERFAST,
843  RIG_AGC_FAST,
844  RIG_AGC_SLOW,
846  RIG_AGC_MEDIUM,
847  RIG_AGC_AUTO
848 };
849 
851 #define RIG_AGC_LAST RIG_AGC_AUTO
852 
858  RIG_METER_NONE = 0, /*< No display meter */
859  RIG_METER_SWR = (1 << 0), /*< Stationary Wave Ratio */
860  RIG_METER_COMP = (1 << 1), /*< Compression level */
861  RIG_METER_ALC = (1 << 2), /*< ALC */
862  RIG_METER_IC = (1 << 3), /*< IC */
863  RIG_METER_DB = (1 << 4), /*< DB */
864  RIG_METER_PO = (1 << 5), /*< Power Out */
865  RIG_METER_VDD = (1 << 6), /*< Final Amp Voltage */
866  RIG_METER_TEMP = (1 << 7) /*< Final Amp Voltage */
867 };
868 
869 
875 typedef union {
876  signed int i;
877  float f;
878  char *s;
879  const char *cs;
880  struct {
882  int l;
883  unsigned char *d; /* Pointer to data buffer */
884  } b;
886 } value_t;
887 
888 
897 typedef uint64_t rig_level_e;
898 #define RIG_LEVEL_NONE 0
899 #define RIG_LEVEL_PREAMP CONSTANT_64BIT_FLAG(0)
900 #define RIG_LEVEL_ATT CONSTANT_64BIT_FLAG(1)
901 #define RIG_LEVEL_VOXDELAY CONSTANT_64BIT_FLAG(2)
902 #define RIG_LEVEL_AF CONSTANT_64BIT_FLAG(3)
903 #define RIG_LEVEL_RF CONSTANT_64BIT_FLAG(4)
904 #define RIG_LEVEL_SQL CONSTANT_64BIT_FLAG(5)
905 #define RIG_LEVEL_IF CONSTANT_64BIT_FLAG(6)
906 #define RIG_LEVEL_APF CONSTANT_64BIT_FLAG(7)
907 #define RIG_LEVEL_NR CONSTANT_64BIT_FLAG(8)
908 #define RIG_LEVEL_PBT_IN CONSTANT_64BIT_FLAG(9)
909 #define RIG_LEVEL_PBT_OUT CONSTANT_64BIT_FLAG(10)
910 #define RIG_LEVEL_CWPITCH CONSTANT_64BIT_FLAG(11)
911 #define RIG_LEVEL_RFPOWER CONSTANT_64BIT_FLAG(12)
912 #define RIG_LEVEL_MICGAIN CONSTANT_64BIT_FLAG(13)
913 #define RIG_LEVEL_KEYSPD CONSTANT_64BIT_FLAG(14)
914 #define RIG_LEVEL_NOTCHF CONSTANT_64BIT_FLAG(15)
915 #define RIG_LEVEL_COMP CONSTANT_64BIT_FLAG(16)
916 #define RIG_LEVEL_AGC CONSTANT_64BIT_FLAG(17)
917 #define RIG_LEVEL_BKINDL CONSTANT_64BIT_FLAG(18)
918 #define RIG_LEVEL_BALANCE CONSTANT_64BIT_FLAG(19)
919 #define RIG_LEVEL_METER CONSTANT_64BIT_FLAG(20)
920 #define RIG_LEVEL_VOXGAIN CONSTANT_64BIT_FLAG(21)
921 #define RIG_LEVEL_ANTIVOX CONSTANT_64BIT_FLAG(22)
922 #define RIG_LEVEL_SLOPE_LOW CONSTANT_64BIT_FLAG(23)
923 #define RIG_LEVEL_SLOPE_HIGH CONSTANT_64BIT_FLAG(24)
924 #define RIG_LEVEL_BKIN_DLYMS CONSTANT_64BIT_FLAG(25)
927 #define RIG_LEVEL_RAWSTR CONSTANT_64BIT_FLAG(26)
928 //#define RIG_LEVEL_SQLSTAT CONSTANT_64BIT_FLAG(27)
929 #define RIG_LEVEL_SWR CONSTANT_64BIT_FLAG(28)
930 #define RIG_LEVEL_ALC CONSTANT_64BIT_FLAG(29)
931 #define RIG_LEVEL_STRENGTH CONSTANT_64BIT_FLAG(30)
932  /* RIG_LEVEL_BWC (1<<31) */
933 #define RIG_LEVEL_RFPOWER_METER CONSTANT_64BIT_FLAG(32)
934 #define RIG_LEVEL_COMP_METER CONSTANT_64BIT_FLAG(33)
935 #define RIG_LEVEL_VD_METER CONSTANT_64BIT_FLAG(34)
936 #define RIG_LEVEL_ID_METER CONSTANT_64BIT_FLAG(35)
938 #define RIG_LEVEL_NOTCHF_RAW CONSTANT_64BIT_FLAG(36)
939 #define RIG_LEVEL_MONITOR_GAIN CONSTANT_64BIT_FLAG(37)
940 #define RIG_LEVEL_NB CONSTANT_64BIT_FLAG(38)
941 #define RIG_LEVEL_RFPOWER_METER_WATTS CONSTANT_64BIT_FLAG(39)
942 #define RIG_LEVEL_SPECTRUM_MODE CONSTANT_64BIT_FLAG(40)
943 #define RIG_LEVEL_SPECTRUM_SPAN CONSTANT_64BIT_FLAG(41)
944 #define RIG_LEVEL_SPECTRUM_EDGE_LOW CONSTANT_64BIT_FLAG(42)
945 #define RIG_LEVEL_SPECTRUM_EDGE_HIGH CONSTANT_64BIT_FLAG(43)
946 #define RIG_LEVEL_SPECTRUM_SPEED CONSTANT_64BIT_FLAG(44)
947 #define RIG_LEVEL_SPECTRUM_REF CONSTANT_64BIT_FLAG(45)
948 #define RIG_LEVEL_SPECTRUM_AVG CONSTANT_64BIT_FLAG(46)
949 #define RIG_LEVEL_SPECTRUM_ATT CONSTANT_64BIT_FLAG(47)
950 #define RIG_LEVEL_TEMP_METER CONSTANT_64BIT_FLAG(48)
951 #define RIG_LEVEL_48 CONSTANT_64BIT_FLAG(48)
952 #define RIG_LEVEL_49 CONSTANT_64BIT_FLAG(49)
953 #define RIG_LEVEL_50 CONSTANT_64BIT_FLAG(50)
954 #define RIG_LEVEL_51 CONSTANT_64BIT_FLAG(51)
955 #define RIG_LEVEL_52 CONSTANT_64BIT_FLAG(52)
956 #define RIG_LEVEL_53 CONSTANT_64BIT_FLAG(53)
957 #define RIG_LEVEL_54 CONSTANT_64BIT_FLAG(54)
958 #define RIG_LEVEL_55 CONSTANT_64BIT_FLAG(55)
959 #define RIG_LEVEL_56 CONSTANT_64BIT_FLAG(56)
960 #define RIG_LEVEL_57 CONSTANT_64BIT_FLAG(57)
961 #define RIG_LEVEL_58 CONSTANT_64BIT_FLAG(58)
962 #define RIG_LEVEL_59 CONSTANT_64BIT_FLAG(59)
963 #define RIG_LEVEL_60 CONSTANT_64BIT_FLAG(60)
964 #define RIG_LEVEL_61 CONSTANT_64BIT_FLAG(61)
965 #define RIG_LEVEL_62 CONSTANT_64BIT_FLAG(62)
966 #define RIG_LEVEL_63 CONSTANT_64BIT_FLAG(63)
968 #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|RIG_LEVEL_SPECTRUM_REF)
970 
971 #define RIG_LEVEL_READONLY_LIST (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)
972 
973 #define RIG_LEVEL_IS_FLOAT(l) ((l)&RIG_LEVEL_FLOAT_LIST)
974 #define RIG_LEVEL_SET(l) ((l)&~RIG_LEVEL_READONLY_LIST)
975 
977 
988  RIG_PARM_ANN = (1 << 0),
989  RIG_PARM_APO = (1 << 1),
990  RIG_PARM_BACKLIGHT = (1 << 2),
991  RIG_PARM_BEEP = (1 << 4),
992  RIG_PARM_TIME = (1 << 5),
993  RIG_PARM_BAT = (1 << 6),
994  RIG_PARM_KEYLIGHT = (1 << 7),
996 };
997 
1006 enum cookie_e {
1010 };
1011 
1017  RIG_MULTICAST_POLL, // hamlib will be polling the rig for all rig items
1018  RIG_MULTICAST_TRANSCEIVE, // transceive will be turned on and processed
1019  RIG_MULTICAST_SPECTRUM // spectrum data will be included
1020 };
1021 
1023 #define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT|RIG_PARM_KEYLIGHT)
1024 #define RIG_PARM_READONLY_LIST (RIG_PARM_BAT)
1025 
1026 #define RIG_PARM_IS_FLOAT(l) ((l)&RIG_PARM_FLOAT_LIST)
1027 #define RIG_PARM_SET(l) ((l)&~RIG_PARM_READONLY_LIST)
1028 
1036 typedef uint64_t setting_t;
1037 
1042 #define RIG_SETTING_MAX 64
1043 
1057 #define RIG_TRN_OFF 0
1058 #define RIG_TRN_RIG 1
1059 #define RIG_TRN_POLL 2
1060 
1061 
1070 /*
1071  * The C standard dictates that an enum constant is a 32 bit signed integer.
1072  * Setting a constant's bit 31 created a negative value that on amd64 had the
1073  * upper 32 bits set as well when assigned to the misc.c:rig_func_str structure.
1074  * This caused misc.c:rig_strfunc() to fail its comparison for RIG_FUNC_XIT
1075  * on amd64 (x86_64). To use bit 31 as an unsigned long, preprocessor macros
1076  * have been used instead as a 'const unsigned long' which cannot be used to
1077  * initialize the rig_func_str.func members. TNX KA6MAL, AC6SL. - N0NB
1078  */
1079 #define RIG_FUNC_NONE 0
1080 #define RIG_FUNC_FAGC CONSTANT_64BIT_FLAG (0)
1081 #define RIG_FUNC_NB CONSTANT_64BIT_FLAG (1)
1082 #define RIG_FUNC_COMP CONSTANT_64BIT_FLAG (2)
1083 #define RIG_FUNC_VOX CONSTANT_64BIT_FLAG (3)
1084 #define RIG_FUNC_TONE CONSTANT_64BIT_FLAG (4)
1085 #define RIG_FUNC_TSQL CONSTANT_64BIT_FLAG (5)
1086 #define RIG_FUNC_SBKIN CONSTANT_64BIT_FLAG (6)
1087 #define RIG_FUNC_FBKIN CONSTANT_64BIT_FLAG (7)
1088 #define RIG_FUNC_ANF CONSTANT_64BIT_FLAG (8)
1089 #define RIG_FUNC_NR CONSTANT_64BIT_FLAG (9)
1090 #define RIG_FUNC_AIP CONSTANT_64BIT_FLAG (10)
1091 #define RIG_FUNC_APF CONSTANT_64BIT_FLAG (11)
1092 #define RIG_FUNC_MON CONSTANT_64BIT_FLAG (12)
1093 #define RIG_FUNC_MN CONSTANT_64BIT_FLAG (13)
1094 #define RIG_FUNC_RF CONSTANT_64BIT_FLAG (14)
1095 #define RIG_FUNC_ARO CONSTANT_64BIT_FLAG (15)
1096 #define RIG_FUNC_LOCK CONSTANT_64BIT_FLAG (16)
1097 #define RIG_FUNC_MUTE CONSTANT_64BIT_FLAG (17)
1098 #define RIG_FUNC_VSC CONSTANT_64BIT_FLAG (18)
1099 #define RIG_FUNC_REV CONSTANT_64BIT_FLAG (19)
1100 #define RIG_FUNC_SQL CONSTANT_64BIT_FLAG (20)
1101 #define RIG_FUNC_ABM CONSTANT_64BIT_FLAG (21)
1102 #define RIG_FUNC_BC CONSTANT_64BIT_FLAG (22)
1103 #define RIG_FUNC_MBC CONSTANT_64BIT_FLAG (23)
1104 #define RIG_FUNC_RIT CONSTANT_64BIT_FLAG (24)
1105 #define RIG_FUNC_AFC CONSTANT_64BIT_FLAG (25)
1106 #define RIG_FUNC_SATMODE CONSTANT_64BIT_FLAG (26)
1107 #define RIG_FUNC_SCOPE CONSTANT_64BIT_FLAG (27)
1108 #define RIG_FUNC_RESUME CONSTANT_64BIT_FLAG (28)
1109 #define RIG_FUNC_TBURST CONSTANT_64BIT_FLAG (29)
1110 #define RIG_FUNC_TUNER CONSTANT_64BIT_FLAG (30)
1111 #define RIG_FUNC_XIT CONSTANT_64BIT_FLAG (31)
1112 #ifndef SWIGLUAHIDE
1113 /* Hide the top 32 bits from the old Lua binding as they can't be represented */
1114 #define RIG_FUNC_NB2 CONSTANT_64BIT_FLAG (32)
1115 #define RIG_FUNC_CSQL CONSTANT_64BIT_FLAG (33)
1116 #define RIG_FUNC_AFLT CONSTANT_64BIT_FLAG (34)
1117 #define RIG_FUNC_ANL CONSTANT_64BIT_FLAG (35)
1118 #define RIG_FUNC_BC2 CONSTANT_64BIT_FLAG (36)
1119 #define RIG_FUNC_DUAL_WATCH CONSTANT_64BIT_FLAG (37)
1120 #define RIG_FUNC_DIVERSITY CONSTANT_64BIT_FLAG (38)
1121 #define RIG_FUNC_DSQL CONSTANT_64BIT_FLAG (39)
1122 #define RIG_FUNC_SCEN CONSTANT_64BIT_FLAG (40)
1123 #define RIG_FUNC_SLICE CONSTANT_64BIT_FLAG (41)
1124 #define RIG_FUNC_TRANSCEIVE CONSTANT_64BIT_FLAG (42)
1125 #define RIG_FUNC_SPECTRUM CONSTANT_64BIT_FLAG (43)
1126 #define RIG_FUNC_SPECTRUM_HOLD CONSTANT_64BIT_FLAG (44)
1127 #define RIG_FUNC_BIT45 CONSTANT_64BIT_FLAG (45)
1128 #define RIG_FUNC_BIT46 CONSTANT_64BIT_FLAG (46)
1129 #define RIG_FUNC_BIT47 CONSTANT_64BIT_FLAG (47)
1130 #define RIG_FUNC_BIT48 CONSTANT_64BIT_FLAG (48)
1131 #define RIG_FUNC_BIT49 CONSTANT_64BIT_FLAG (49)
1132 #define RIG_FUNC_BIT50 CONSTANT_64BIT_FLAG (50)
1133 #define RIG_FUNC_BIT51 CONSTANT_64BIT_FLAG (51)
1134 #define RIG_FUNC_BIT52 CONSTANT_64BIT_FLAG (52)
1135 #define RIG_FUNC_BIT53 CONSTANT_64BIT_FLAG (53)
1136 #define RIG_FUNC_BIT54 CONSTANT_64BIT_FLAG (54)
1137 #define RIG_FUNC_BIT55 CONSTANT_64BIT_FLAG (55)
1138 #define RIG_FUNC_BIT56 CONSTANT_64BIT_FLAG (56)
1139 #define RIG_FUNC_BIT57 CONSTANT_64BIT_FLAG (57)
1140 #define RIG_FUNC_BIT58 CONSTANT_64BIT_FLAG (58)
1141 #define RIG_FUNC_BIT59 CONSTANT_64BIT_FLAG (59)
1142 #define RIG_FUNC_BIT60 CONSTANT_64BIT_FLAG (60)
1143 #define RIG_FUNC_BIT61 CONSTANT_64BIT_FLAG (61)
1144 #define RIG_FUNC_BIT62 CONSTANT_64BIT_FLAG (62)
1145 #define RIG_FUNC_BIT63 CONSTANT_64BIT_FLAG (63)
1146 /* 63 is this highest bit number that can be used */
1147 #endif
1148 
1155 #define mW(p) ((int)(p))
1156 
1163 #define Watts(p) ((int)((p)*1000))
1164 
1170 #define W(p) Watts(p)
1171 #if 0 // deprecating kW macro as this doesn't make sense
1172 
1178 #define kW(p) ((int)((p)*1000000L))
1179 #endif
1180 
1181 
1191 typedef uint64_t rmode_t;
1192 
1193 #define RIG_MODE_NONE 0
1194 #define RIG_MODE_AM CONSTANT_64BIT_FLAG (0)
1195 #define RIG_MODE_CW CONSTANT_64BIT_FLAG (1)
1196 #define RIG_MODE_USB CONSTANT_64BIT_FLAG (2)
1197 #define RIG_MODE_LSB CONSTANT_64BIT_FLAG (3)
1198 #define RIG_MODE_RTTY CONSTANT_64BIT_FLAG (4)
1199 #define RIG_MODE_FM CONSTANT_64BIT_FLAG (5)
1200 #define RIG_MODE_WFM CONSTANT_64BIT_FLAG (6)
1201 #define RIG_MODE_CWR CONSTANT_64BIT_FLAG (7)
1202 #define RIG_MODE_RTTYR CONSTANT_64BIT_FLAG (8)
1203 #define RIG_MODE_AMS CONSTANT_64BIT_FLAG (9)
1204 #define RIG_MODE_PKTLSB CONSTANT_64BIT_FLAG (10)
1205 #define RIG_MODE_PKTUSB CONSTANT_64BIT_FLAG (11)
1206 #define RIG_MODE_PKTFM CONSTANT_64BIT_FLAG (12)
1207 #define RIG_MODE_ECSSUSB CONSTANT_64BIT_FLAG (13)
1208 #define RIG_MODE_ECSSLSB CONSTANT_64BIT_FLAG (14)
1209 #define RIG_MODE_FAX CONSTANT_64BIT_FLAG (15)
1210 #define RIG_MODE_SAM CONSTANT_64BIT_FLAG (16)
1211 #define RIG_MODE_SAL CONSTANT_64BIT_FLAG (17)
1212 #define RIG_MODE_SAH CONSTANT_64BIT_FLAG (18)
1213 #define RIG_MODE_DSB CONSTANT_64BIT_FLAG (19)
1214 #define RIG_MODE_FMN CONSTANT_64BIT_FLAG (21)
1215 #define RIG_MODE_PKTAM CONSTANT_64BIT_FLAG (22)
1216 #define RIG_MODE_P25 CONSTANT_64BIT_FLAG (23)
1217 #define RIG_MODE_DSTAR CONSTANT_64BIT_FLAG (24)
1218 #define RIG_MODE_DPMR CONSTANT_64BIT_FLAG (25)
1219 #define RIG_MODE_NXDNVN CONSTANT_64BIT_FLAG (26)
1220 #define RIG_MODE_NXDN_N CONSTANT_64BIT_FLAG (27)
1221 #define RIG_MODE_DCR CONSTANT_64BIT_FLAG (28)
1222 #define RIG_MODE_AMN CONSTANT_64BIT_FLAG (29)
1223 #define RIG_MODE_PSK CONSTANT_64BIT_FLAG (30)
1224 #define RIG_MODE_PSKR CONSTANT_64BIT_FLAG (31)
1225 #ifndef SWIGLUAHIDE
1226 /* hide the top 32 bits from the Lua binding as they will not work */
1227 #define RIG_MODE_DD CONSTANT_64BIT_FLAG (32)
1228 #define RIG_MODE_C4FM CONSTANT_64BIT_FLAG (33)
1229 #define RIG_MODE_PKTFMN CONSTANT_64BIT_FLAG (34)
1230 #define RIG_MODE_SPEC CONSTANT_64BIT_FLAG (35)
1231 #define RIG_MODE_CWN CONSTANT_64BIT_FLAG (36)
1232 #define RIG_MODE_IQ CONSTANT_64BIT_FLAG (37)
1233 #define RIG_MODE_BIT38 CONSTANT_64BIT_FLAG (38)
1234 #define RIG_MODE_BIT39 CONSTANT_64BIT_FLAG (39)
1235 #define RIG_MODE_BIT40 CONSTANT_64BIT_FLAG (40)
1236 #define RIG_MODE_BIT41 CONSTANT_64BIT_FLAG (41)
1237 #define RIG_MODE_BIT42 CONSTANT_64BIT_FLAG (42)
1238 #define RIG_MODE_BIT43 CONSTANT_64BIT_FLAG (43)
1239 #define RIG_MODE_BIT44 CONSTANT_64BIT_FLAG (44)
1240 #define RIG_MODE_BIT45 CONSTANT_64BIT_FLAG (45)
1241 #define RIG_MODE_BIT46 CONSTANT_64BIT_FLAG (46)
1242 #define RIG_MODE_BIT47 CONSTANT_64BIT_FLAG (47)
1243 #define RIG_MODE_BIT48 CONSTANT_64BIT_FLAG (48)
1244 #define RIG_MODE_BIT49 CONSTANT_64BIT_FLAG (49)
1245 #define RIG_MODE_BIT50 CONSTANT_64BIT_FLAG (50)
1246 #define RIG_MODE_BIT51 CONSTANT_64BIT_FLAG (51)
1247 #define RIG_MODE_BIT52 CONSTANT_64BIT_FLAG (52)
1248 #define RIG_MODE_BIT53 CONSTANT_64BIT_FLAG (53)
1249 #define RIG_MODE_BIT54 CONSTANT_64BIT_FLAG (54)
1250 #define RIG_MODE_BIT55 CONSTANT_64BIT_FLAG (55)
1251 #define RIG_MODE_BIT56 CONSTANT_64BIT_FLAG (56)
1252 #define RIG_MODE_BIT57 CONSTANT_64BIT_FLAG (57)
1253 #define RIG_MODE_BIT58 CONSTANT_64BIT_FLAG (58)
1254 #define RIG_MODE_BIT59 CONSTANT_64BIT_FLAG (59)
1255 #define RIG_MODE_BIT60 CONSTANT_64BIT_FLAG (60)
1256 #define RIG_MODE_BIT61 CONSTANT_64BIT_FLAG (61)
1257 #define RIG_MODE_BIT62 CONSTANT_64BIT_FLAG (62)
1258 #define RIG_MODE_TESTS_MAX CONSTANT_64BIT_FLAG (63)
1259 #endif
1260 
1264 #define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB)
1265 
1269 #define RIG_MODE_ECSS (RIG_MODE_ECSSUSB|RIG_MODE_ECSSLSB)
1270 
1272 #define RIG_DBLST_END 0 /* end marker in a preamp/att level list */
1273 #define RIG_IS_DBLST_END(d) ((d)==0)
1274 
1276 
1283 typedef struct freq_range_list {
1291  char *label;
1292 } freq_range_t;
1293 
1295 #define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE}
1296 #define RIG_IS_FRNG_END(r) ((r).startf == Hz(0) && (r).endf == Hz(0))
1297 
1318 };
1319 
1321 #define RIG_TS_ANY 0
1322 #define RIG_TS_END {RIG_MODE_NONE, 0}
1323 #define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0)
1324 
1326 
1350 struct filter_list {
1353 };
1355 #define RIG_FLT_ANY 0
1356 #define RIG_FLT_END {RIG_MODE_NONE, 0}
1357 #define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE)
1358 
1360 
1364 #define RIG_CHFLAG_NONE 0
1365 
1368 #define RIG_CHFLAG_SKIP (1<<0)
1369 
1372 #define RIG_CHFLAG_DATA (1<<1)
1373 
1376 #define RIG_CHFLAG_PSKIP (1<<2)
1377 
1382 struct ext_list {
1385 };
1386 
1388 #define RIG_EXT_END {0, {.i=0}}
1389 #define RIG_IS_EXT_END(x) ((x).token == 0)
1390 
1399 struct channel {
1401  int bank_num;
1422  tone_t ctcss_tone;
1423  tone_t ctcss_sql;
1424  tone_t dcs_code;
1425  tone_t dcs_sql;
1427  unsigned int flags;
1428  char channel_desc[HAMLIB_MAXCHANDESC];
1429  struct ext_list
1430  *ext_levels;
1431 };
1432 
1436 typedef struct channel channel_t;
1437 
1443 struct channel_cap {
1444  unsigned bank_num: 1;
1445  unsigned vfo: 1;
1446  unsigned ant: 1;
1447  unsigned freq: 1;
1448  unsigned mode: 1;
1449  unsigned width: 1;
1451  unsigned tx_freq: 1;
1452  unsigned tx_mode: 1;
1453  unsigned tx_width: 1;
1455  unsigned split: 1;
1456  unsigned tx_vfo: 1;
1457  unsigned rptr_shift: 1;
1458  unsigned rptr_offs: 1;
1459  unsigned tuning_step: 1;
1460  unsigned rit: 1;
1461  unsigned xit: 1;
1464  unsigned ctcss_tone: 1;
1465  unsigned ctcss_sql: 1;
1466  unsigned dcs_code: 1;
1467  unsigned dcs_sql: 1;
1468  unsigned scan_group: 1;
1469  unsigned flags: 1;
1470  unsigned channel_desc: 1;
1471  unsigned ext_levels: 1;
1472 };
1473 
1478 
1479 
1490 typedef enum {
1499 } chan_type_t;
1500 
1501 
1515 struct chan_list {
1516  int startc;
1517  int endc;
1521 };
1522 
1524 #define RIG_CHAN_END {0,0,RIG_MTYPE_NONE}
1525 #define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE)
1526 
1531 #define RIG_MEM_CAPS_ALL -1
1532 
1536 typedef struct chan_list chan_t;
1537 
1538 
1550 struct gran {
1554 };
1555 
1559 typedef struct gran gran_t;
1560 
1561 
1565 struct cal_table {
1566  int size;
1567  struct {
1568  int raw;
1569  int val;
1570  } table[HAMLIB_MAX_CAL_LENGTH];
1571 };
1572 
1585 typedef struct cal_table cal_table_t;
1586 
1588 #define EMPTY_STR_CAL { 0, { { 0, 0 }, } }
1589 
1591 
1596  int size;
1597  struct {
1598  int raw;
1599  float val;
1600  } table[HAMLIB_MAX_CAL_LENGTH];
1601 };
1602 
1616 
1618 #define EMPTY_FLOAT_CAL { 0, { { 0, 0f }, } }
1619 
1620 typedef int (* chan_cb_t)(RIG *, channel_t **, int, const chan_t *, rig_ptr_t);
1621 typedef int (* confval_cb_t)(RIG *,
1622  const struct confparams *,
1623  value_t *,
1624  rig_ptr_t);
1626 
1631 {
1632  int id;
1633  char *name;
1634 };
1635 
1640  RIG_SPECTRUM_MODE_NONE = 0,
1645 };
1646 
1651 {
1652  int id;
1653  char *name;
1654 };
1655 
1668 {
1669  int id;
1685  unsigned char *spectrum_data;
1686 };
1687 
1707 #define RIG_MODEL(arg) .rig_model=arg,.macro_name=#arg
1709 struct rig_caps {
1710  rig_model_t rig_model;
1711  const char *model_name;
1712  const char *mfg_name;
1713  const char *version;
1714  const char *copyright;
1715  enum rig_status_e status;
1717  int rig_type;
1718  ptt_type_t ptt_type;
1719  dcd_type_t dcd_type;
1720  rig_port_t port_type;
1722  int serial_rate_min;
1723  int serial_rate_max;
1724  int serial_data_bits;
1725  int serial_stop_bits;
1726  enum serial_parity_e serial_parity;
1727  enum serial_handshake_e serial_handshake;
1729  int write_delay;
1730  int post_write_delay;
1731  int timeout;
1732  int retry;
1734  setting_t has_get_func;
1735  setting_t has_set_func;
1736  setting_t has_get_level;
1737  setting_t has_set_level;
1738  setting_t has_get_parm;
1739  setting_t has_set_parm;
1741  gran_t level_gran[RIG_SETTING_MAX];
1742  gran_t parm_gran[RIG_SETTING_MAX];
1744  const struct confparams *extparms;
1745  const struct confparams *extlevels;
1746  const struct confparams *extfuncs;
1747  int *ext_tokens;
1749  tone_t *ctcss_list;
1750  tone_t *dcs_list;
1752  int preamp[HAMLIB_MAXDBLSTSIZ];
1753  int attenuator[HAMLIB_MAXDBLSTSIZ];
1754  shortfreq_t max_rit;
1755  shortfreq_t max_xit;
1756  shortfreq_t max_ifshift;
1758  int agc_level_count;
1759  enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS];
1761  ann_t announces;
1763  vfo_op_t vfo_ops;
1764  scan_t scan_ops;
1765  int targetable_vfo;
1766  int transceive;
1768  int bank_qty;
1769  int chan_desc_sz;
1771  chan_t chan_list[HAMLIB_CHANLSTSIZ];
1773  // As of 2020-02-12 we know of 5 models from Icom USA, EUR, ITR, TPE, KOR for the IC-9700
1774  // So we currently have 5 ranges we need to deal with
1775  // The backend for the model should fill in the label field to explain what model it is
1776  // The the IC-9700 in ic7300.c for an example
1777  freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ];
1778  freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ];
1779  freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ];
1780  freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ];
1781  freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ];
1782  freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ];
1783  freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ];
1784  freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ];
1785  freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ];
1786  freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ];
1788  struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
1789  struct filter_list filters[HAMLIB_FLTLSTSIZ];
1791  cal_table_t str_cal;
1792  cal_table_float_t swr_cal;
1793  cal_table_float_t alc_cal;
1794  cal_table_float_t rfpower_meter_cal;
1795  cal_table_float_t comp_meter_cal;
1796  cal_table_float_t vd_meter_cal;
1797  cal_table_float_t id_meter_cal;
1799  struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES];
1800  enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES];
1801  freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS];
1802  struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES];
1803  int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ];
1805  const struct confparams *cfgparams;
1806  const rig_ptr_t priv;
1808  /*
1809  * Rig API
1810  *
1811  */
1812 
1813  int (*rig_init)(RIG *rig);
1814  int (*rig_cleanup)(RIG *rig);
1815  int (*rig_open)(RIG *rig);
1816  int (*rig_close)(RIG *rig);
1817 
1818  /*
1819  * General API commands, from most primitive to least.. :()
1820  * List Set/Get functions pairs
1821  */
1822 
1823  int (*set_freq)(RIG *rig, vfo_t vfo, freq_t freq);
1824  int (*get_freq)(RIG *rig, vfo_t vfo, freq_t *freq);
1825 
1826  int (*set_mode)(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
1827  int (*get_mode)(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width);
1828 
1829  int (*set_vfo)(RIG *rig, vfo_t vfo);
1830  int (*get_vfo)(RIG *rig, vfo_t *vfo);
1831 
1832  int (*set_ptt)(RIG *rig, vfo_t vfo, ptt_t ptt);
1833  int (*get_ptt)(RIG *rig, vfo_t vfo, ptt_t *ptt);
1834 
1835  int (*get_dcd)(RIG *rig, vfo_t vfo, dcd_t *dcd);
1836 
1837  int (*set_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift);
1838  int (*get_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift);
1839 
1840  int (*set_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t offs);
1841  int (*get_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t *offs);
1842 
1843  int (*set_split_freq)(RIG *rig, vfo_t vfo, freq_t tx_freq);
1844  int (*get_split_freq)(RIG *rig, vfo_t vfo, freq_t *tx_freq);
1845 
1846  int (*set_split_mode)(RIG *rig,
1847  vfo_t vfo,
1848  rmode_t tx_mode,
1849  pbwidth_t tx_width);
1850  int (*get_split_mode)(RIG *rig,
1851  vfo_t vfo,
1852  rmode_t *tx_mode,
1853  pbwidth_t *tx_width);
1854 
1855  int (*set_split_freq_mode)(RIG *rig,
1856  vfo_t vfo,
1857  freq_t tx_freq,
1858  rmode_t tx_mode,
1859  pbwidth_t tx_width);
1860  int (*get_split_freq_mode)(RIG *rig,
1861  vfo_t vfo,
1862  freq_t *tx_freq,
1863  rmode_t *tx_mode,
1864  pbwidth_t *tx_width);
1865 
1866  int (*set_split_vfo)(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo);
1867  int (*get_split_vfo)(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo);
1868 
1869  int (*set_rit)(RIG *rig, vfo_t vfo, shortfreq_t rit);
1870  int (*get_rit)(RIG *rig, vfo_t vfo, shortfreq_t *rit);
1871 
1872  int (*set_xit)(RIG *rig, vfo_t vfo, shortfreq_t xit);
1873  int (*get_xit)(RIG *rig, vfo_t vfo, shortfreq_t *xit);
1874 
1875  int (*set_ts)(RIG *rig, vfo_t vfo, shortfreq_t ts);
1876  int (*get_ts)(RIG *rig, vfo_t vfo, shortfreq_t *ts);
1877 
1878  int (*set_dcs_code)(RIG *rig, vfo_t vfo, tone_t code);
1879  int (*get_dcs_code)(RIG *rig, vfo_t vfo, tone_t *code);
1880 
1881  int (*set_tone)(RIG *rig, vfo_t vfo, tone_t tone);
1882  int (*get_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
1883 
1884  int (*set_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t tone);
1885  int (*get_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
1886 
1887  int (*set_dcs_sql)(RIG *rig, vfo_t vfo, tone_t code);
1888  int (*get_dcs_sql)(RIG *rig, vfo_t vfo, tone_t *code);
1889 
1890  int (*set_tone_sql)(RIG *rig, vfo_t vfo, tone_t tone);
1891  int (*get_tone_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
1892 
1893  int (*set_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t tone);
1894  int (*get_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
1895 
1896  int (*power2mW)(RIG *rig,
1897  unsigned int *mwpower,
1898  float power,
1899  freq_t freq,
1900  rmode_t mode);
1901  int (*mW2power)(RIG *rig,
1902  float *power,
1903  unsigned int mwpower,
1904  freq_t freq,
1905  rmode_t mode);
1906 
1907  int (*set_powerstat)(RIG *rig, powerstat_t status);
1908  int (*get_powerstat)(RIG *rig, powerstat_t *status);
1909 
1910  int (*reset)(RIG *rig, reset_t reset);
1911 
1912  int (*set_ant)(RIG *rig, vfo_t vfo, ant_t ant, value_t option);
1913  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);
1914 
1915  int (*set_level)(RIG *rig, vfo_t vfo, setting_t level, value_t val);
1916  int (*get_level)(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
1917 
1918  int (*set_func)(RIG *rig, vfo_t vfo, setting_t func, int status);
1919  int (*get_func)(RIG *rig, vfo_t vfo, setting_t func, int *status);
1920 
1921  int (*set_parm)(RIG *rig, setting_t parm, value_t val);
1922  int (*get_parm)(RIG *rig, setting_t parm, value_t *val);
1923 
1924  int (*set_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t val);
1925  int (*get_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t *val);
1926 
1927  int (*set_ext_func)(RIG *rig, vfo_t vfo, token_t token, int status);
1928  int (*get_ext_func)(RIG *rig, vfo_t vfo, token_t token, int *status);
1929 
1930  int (*set_ext_parm)(RIG *rig, token_t token, value_t val);
1931  int (*get_ext_parm)(RIG *rig, token_t token, value_t *val);
1932 
1933  int (*set_conf)(RIG *rig, token_t token, const char *val);
1934  int (*get_conf)(RIG *rig, token_t token, char *val);
1935 
1936  int (*send_dtmf)(RIG *rig, vfo_t vfo, const char *digits);
1937  int (*recv_dtmf)(RIG *rig, vfo_t vfo, char *digits, int *length);
1938 
1939  int (*send_morse)(RIG *rig, vfo_t vfo, const char *msg);
1940  int (*stop_morse)(RIG *rig, vfo_t vfo);
1941  int (*wait_morse)(RIG *rig, vfo_t vfo);
1942 
1943  int (*send_voice_mem)(RIG *rig, vfo_t vfo, int ch);
1944 
1945  int (*set_bank)(RIG *rig, vfo_t vfo, int bank);
1946 
1947  int (*set_mem)(RIG *rig, vfo_t vfo, int ch);
1948  int (*get_mem)(RIG *rig, vfo_t vfo, int *ch);
1949 
1950  int (*vfo_op)(RIG *rig, vfo_t vfo, vfo_op_t op);
1951 
1952  int (*scan)(RIG *rig, vfo_t vfo, scan_t scan, int ch);
1953 
1954  int (*set_trn)(RIG *rig, int trn);
1955  int (*get_trn)(RIG *rig, int *trn);
1956 
1957  int (*decode_event)(RIG *rig);
1958 
1959  int (*set_channel)(RIG *rig, vfo_t vfo, const channel_t *chan);
1960  int (*get_channel)(RIG *rig, vfo_t vfo, channel_t *chan, int read_only);
1961 
1962  const char * (*get_info)(RIG *rig);
1963 
1964  int (*set_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
1965  int (*get_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
1966 
1967  int (*set_mem_all_cb)(RIG *rig,
1968  chan_cb_t chan_cb,
1969  confval_cb_t parm_cb,
1970  rig_ptr_t);
1971  int (*get_mem_all_cb)(RIG *rig,
1972  chan_cb_t chan_cb,
1973  confval_cb_t parm_cb,
1974  rig_ptr_t);
1975 
1976  int (*set_vfo_opt)(RIG *rig, int status); // only for Net Rigctl device
1977  int (*rig_get_vfo_info) (RIG *rig,
1978  vfo_t vfo,
1979  freq_t *freq,
1980  rmode_t *mode,
1981  pbwidth_t *width,
1982  split_t *split);
1983  int(*set_clock) (RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset);
1984  int(*get_clock) (RIG *rig, int *year, int *month, int *day, int *hour, int *min, int *sec, double *msec, int *utc_offset);
1985 
1986  const char *clone_combo_set;
1987  const char *clone_combo_get;
1988  const char *macro_name;
1989 };
1991 
1996 // all functions enumerated for rig_get_function_ptr
1998 enum rig_function_e {
1999  RIG_FUNCTION_INIT,
2000  RIG_FUNCTION_CLEANUP,
2001  RIG_FUNCTION_OPEN,
2002  RIG_FUNCTION_CLOSE,
2003  RIG_FUNCTION_SET_FREQ,
2004  RIG_FUNCTION_GET_FREQ,
2005  RIG_FUNCTION_SET_MODE,
2006  RIG_FUNCTION_GET_MODE,
2007  RIG_FUNCTION_SET_VFO,
2008  RIG_FUNCTION_GET_VFO,
2009  RIG_FUNCTION_SET_PTT,
2010  RIG_FUNCTION_GET_PTT,
2011  RIG_FUNCTION_GET_DCD,
2012  RIG_FUNCTION_SET_RPTR_SHIFT,
2013  RIG_FUNCTION_GET_RPTR_SHIFT,
2014  RIG_FUNCTION_SET_RPTR_OFFS,
2015  RIG_FUNCTION_GET_RPTR_OFFS,
2016  RIG_FUNCTION_SET_SPLIT_FREQ,
2017  RIG_FUNCTION_GET_SPLIT_FREQ,
2018  RIG_FUNCTION_SET_SPLIT_MODE,
2019  RIG_FUNCTION_SET_SPLIT_FREQ_MODE,
2020  RIG_FUNCTION_GET_SPLIT_FREQ_MODE,
2021  RIG_FUNCTION_SET_SPLIT_VFO,
2022  RIG_FUNCTION_GET_SPLIT_VFO,
2023  RIG_FUNCTION_SET_RIT,
2024  RIG_FUNCTION_GET_RIT,
2025  RIG_FUNCTION_SET_XIT,
2026  RIG_FUNCTION_GET_XIT,
2027  RIG_FUNCTION_SET_TS,
2028  RIG_FUNCTION_GET_TS,
2029  RIG_FUNCTION_SET_DCS_CODE,
2030  RIG_FUNCTION_GET_DCS_CODE,
2031  RIG_FUNCTION_SET_TONE,
2032  RIG_FUNCTION_GET_TONE,
2033  RIG_FUNCTION_SET_CTCSS_TONE,
2034  RIG_FUNCTION_GET_CTCSS_TONE,
2035  RIG_FUNCTION_SET_DCS_SQL,
2036  RIG_FUNCTION_GET_DCS_SQL,
2037  RIG_FUNCTION_SET_TONE_SQL,
2038  RIG_FUNCTION_GET_TONE_SQL,
2039  RIG_FUNCTION_SET_CTCSS_SQL,
2040  RIG_FUNCTION_GET_CTCSS_SQL,
2041  RIG_FUNCTION_POWER2MW,
2042  RIG_FUNCTION_MW2POWER,
2043  RIG_FUNCTION_SET_POWERSTAT,
2044  RIG_FUNCTION_GET_POWERSTAT,
2045  RIG_FUNCTION_RESET,
2046  RIG_FUNCTION_SET_ANT,
2047  RIG_FUNCTION_GET_ANT,
2048  RIG_FUNCTION_SET_LEVEL,
2049  RIG_FUNCTION_GET_LEVEL,
2050  RIG_FUNCTION_SET_FUNC,
2051  RIG_FUNCTION_GET_FUNC,
2052  RIG_FUNCTION_SET_PARM,
2053  RIG_FUNCTION_GET_PARM,
2054  RIG_FUNCTION_SET_EXT_LEVEL,
2055  RIG_FUNCTION_GET_EXT_LEVEL,
2056  RIG_FUNCTION_SET_EXT_FUNC,
2057  RIG_FUNCTION_GET_EXT_FUNC,
2058  RIG_FUNCTION_SET_EXT_PARM,
2059  RIG_FUNCTION_GET_EXT_PARM,
2060  RIG_FUNCTION_SET_CONF,
2061  RIG_FUNCTION_GET_CONF,
2062  RIG_FUNCTION_SEND_DTMF,
2063  RIG_FUNCTION_SEND_MORSE,
2064  RIG_FUNCTION_STOP_MORSE,
2065  RIG_FUNCTION_WAIT_MORSE,
2066  RIG_FUNCTION_SET_BANK,
2067  RIG_FUNCTION_SET_MEM,
2068  RIG_FUNCTION_GET_MEM,
2069  RIG_FUNCTION_VFO_OP,
2070  RIG_FUNCTION_SCAN,
2071  RIG_FUNCTION_SET_TRN,
2072  RIG_FUNCTION_GET_TRN,
2073  RIG_FUNCTION_DECODE_EVENT,
2074  RIG_FUNCTION_SET_CHANNEL,
2075  RIG_FUNCTION_GET_CHANNEL,
2076  RIG_FUNCTION_GET_INFO,
2077  RIG_FUNCTION_SET_CHAN_ALL_CB,
2078  RIG_FUNCTION_GET_CHAN_ALL_CB,
2079  RIG_FUNCTION_SET_MEM_ALL_CB,
2080  RIG_FUNCTION_GET_MEM_ALL_CB,
2081  RIG_FUNCTION_SET_VFO_OPT,
2082 };
2083 
2088 extern HAMLIB_EXPORT (void *) rig_get_function_ptr(rig_model_t rig_model, enum rig_function_e rig_function);
2090 
2095 // values enumerated for rig->caps values
2097 enum rig_caps_int_e {
2098  RIG_CAPS_TARGETABLE_VFO,
2099  RIG_CAPS_RIG_MODEL,
2100  RIG_CAPS_PORT_TYPE,
2101  RIG_CAPS_PTT_TYPE,
2102  RIG_CAPS_HAS_GET_LEVEL
2103 };
2104 
2105 enum rig_caps_cptr_e {
2106  RIG_CAPS_VERSION_CPTR,
2107  RIG_CAPS_MFG_NAME_CPTR,
2108  RIG_CAPS_MODEL_NAME_CPTR,
2109  RIG_CAPS_STATUS_CPTR
2110 };
2111 
2116 extern HAMLIB_EXPORT (long long) rig_get_caps_int(rig_model_t rig_model, enum rig_caps_int_e rig_caps);
2118 
2123 extern HAMLIB_EXPORT (const char *) rig_get_caps_cptr(rig_model_t rig_model, enum rig_caps_cptr_e rig_caps);
2125 
2131 typedef struct hamlib_port {
2133  union {
2134  rig_port_t rig;
2135  ptt_type_t ptt;
2136  dcd_type_t dcd;
2137  } type;
2138 
2139  int fd;
2140  void *handle;
2142  int write_delay;
2143  int post_write_delay;
2145  struct {
2146  int tv_sec, tv_usec;
2147  } post_write_date;
2149  int timeout;
2150  short retry;
2151  short flushx;
2153  char pathname[HAMLIB_FILPATHLEN];
2155  union {
2156  struct {
2157  int rate;
2158  int data_bits;
2159  int stop_bits;
2160  enum serial_parity_e parity;
2161  enum serial_handshake_e handshake;
2162  enum serial_control_state_e rts_state;
2163  enum serial_control_state_e dtr_state;
2164  } serial;
2166  struct {
2167  int pin;
2168  } parallel;
2170  struct {
2171  int ptt_bitnum;
2172  } cm108;
2174  struct {
2175  int vid;
2176  int pid;
2177  int conf;
2178  int iface;
2179  int alt;
2180  char *vendor_name;
2181  char *product;
2182  } usb;
2184  struct {
2185  int on_value;
2186  int value;
2187  } gpio;
2188  } parm;
2189  int client_port;
2190  RIG *rig;
2191 } hamlib_port_t;
2193 
2194 #if !defined(__APPLE__) || !defined(__cplusplus)
2195 typedef hamlib_port_t port_t;
2196 #endif
2197 
2198 #define HAMLIB_ELAPSED_GET 0
2199 #define HAMLIB_ELAPSED_SET 1
2200 #define HAMLIB_ELAPSED_INVALIDATE 2
2201 
2202 #define HAMLIB_CACHE_ALWAYS -1 /*< value to set cache timeout to always use cache */
2203 
2204 typedef enum {
2205  HAMLIB_CACHE_ALL, // to set all cache timeouts at once
2206  HAMLIB_CACHE_VFO,
2207  HAMLIB_CACHE_FREQ,
2208  HAMLIB_CACHE_MODE,
2209  HAMLIB_CACHE_PTT,
2210  HAMLIB_CACHE_SPLIT,
2211  HAMLIB_CACHE_WIDTH
2212 } hamlib_cache_t;
2213 
2214 typedef enum {
2215  TWIDDLE_OFF,
2216  TWIDDLE_ON
2217 } twiddle_state_t;
2218 
2224 struct rig_cache {
2225  int timeout_ms; // the cache timeout for invalidating itself
2226  vfo_t vfo;
2227  //freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1
2228  // other abstraction here is based on dual vfo rigs and mapped to all others
2229  // So we have four possible states of rig
2230  // MainA, MainB, SubA, SubB
2231  // Main is the Main VFO and Sub is for the 2nd VFO
2232  // Most rigs have MainA and MainB
2233  // Dual VFO rigs can have SubA and SubB too
2234  // For dual VFO rigs simplex operations are all done on MainA/MainB -- ergo this abstraction
2235  freq_t freqCurr; // Other VFO
2236  freq_t freqOther; // Other VFO
2237  freq_t freqMainA; // VFO_A, VFO_MAIN, and VFO_MAINA
2238  freq_t freqMainB; // VFO_B, VFO_SUB, and VFO_MAINB
2239  freq_t freqMainC; // VFO_C, VFO_MAINC
2240  freq_t freqSubA; // VFO_SUBA -- only for rigs with dual Sub VFOs
2241  freq_t freqSubB; // VFO_SUBB -- only for rigs with dual Sub VFOs
2242  freq_t freqSubC; // VFO_SUBC -- only for rigs with 3 Sub VFOs
2243  freq_t freqMem; // VFO_MEM -- last MEM channel
2244  rmode_t modeCurr;
2245  rmode_t modeOther;
2246  rmode_t modeMainA;
2247  rmode_t modeMainB;
2248  rmode_t modeMainC;
2249  rmode_t modeSubA;
2250  rmode_t modeSubB;
2251  rmode_t modeSubC;
2252  rmode_t modeMem;
2253  pbwidth_t widthCurr; // if non-zero then rig has separate width for MainA
2254  pbwidth_t widthOther; // if non-zero then rig has separate width for MainA
2255  pbwidth_t widthMainA; // if non-zero then rig has separate width for MainA
2256  pbwidth_t widthMainB; // if non-zero then rig has separate width for MainB
2257  pbwidth_t widthMainC; // if non-zero then rig has separate width for MainC
2258  pbwidth_t widthSubA; // if non-zero then rig has separate width for SubA
2259  pbwidth_t widthSubB; // if non-zero then rig has separate width for SubB
2260  pbwidth_t widthSubC; // if non-zero then rig has separate width for SubC
2261  pbwidth_t widthMem; // if non-zero then rig has separate width for Mem
2262  ptt_t ptt;
2263  split_t split;
2264  vfo_t split_vfo; // split caches two values
2265  struct timespec time_freqCurr;
2266  struct timespec time_freqOther;
2267  struct timespec time_freqMainA;
2268  struct timespec time_freqMainB;
2269  struct timespec time_freqMainC;
2270  struct timespec time_freqSubA;
2271  struct timespec time_freqSubB;
2272  struct timespec time_freqSubC;
2273  struct timespec time_freqMem;
2274  struct timespec time_vfo;
2275  struct timespec time_modeCurr;
2276  struct timespec time_modeOther;
2277  struct timespec time_modeMainA;
2278  struct timespec time_modeMainB;
2279  struct timespec time_modeMainC;
2280  struct timespec time_modeSubA;
2281  struct timespec time_modeSubB;
2282  struct timespec time_modeSubC;
2283  struct timespec time_modeMem;
2284  struct timespec time_widthCurr;
2285  struct timespec time_widthOther;
2286  struct timespec time_widthMainA;
2287  struct timespec time_widthMainB;
2288  struct timespec time_widthMainC;
2289  struct timespec time_widthSubA;
2290  struct timespec time_widthSubB;
2291  struct timespec time_widthSubC;
2292  struct timespec time_widthMem;
2293  struct timespec time_ptt;
2294  struct timespec time_split;
2295  int satmode; // if rig is in satellite mode
2296 };
2297 
2298 
2309 struct rig_state {
2310  /*
2311  * overridable fields
2312  */
2313  hamlib_port_t rigport;
2314  hamlib_port_t pttport;
2315  hamlib_port_t dcdport;
2317  double vfo_comp;
2320  freq_range_t rx_range_list[HAMLIB_FRQRANGESIZ];
2321  freq_range_t tx_range_list[HAMLIB_FRQRANGESIZ];
2323  struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
2325  struct filter_list filters[HAMLIB_FLTLSTSIZ];
2329  chan_t chan_list[HAMLIB_CHANLSTSIZ];
2337  int preamp[HAMLIB_MAXDBLSTSIZ];
2338  int attenuator[HAMLIB_MAXDBLSTSIZ];
2351  /*
2352  * non overridable fields, internal use
2353  */
2354 
2357  int vfo_list;
2359  rig_ptr_t priv;
2360  rig_ptr_t obj;
2366  //rmode_t current_modeB; /*!< Mode currently set VFOB */
2370  // mode_list is used by some
2371  // so anything added to this structure must be below here
2372  int transmit;
2376  time_t twiddle_time;
2378  // uplink allows gpredict to behave better by no reading the uplink VFO
2379  int uplink;
2380  struct rig_cache cache;
2381  int vfo_opt;
2397 };
2398 
2400 typedef int (*vprintf_cb_t)(enum rig_debug_level_e,
2401  rig_ptr_t,
2402  const char *,
2403  va_list);
2404 
2405 typedef int (*freq_cb_t)(RIG *, vfo_t, freq_t, rig_ptr_t);
2406 typedef int (*mode_cb_t)(RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t);
2407 typedef int (*vfo_cb_t)(RIG *, vfo_t, rig_ptr_t);
2408 typedef int (*ptt_cb_t)(RIG *, vfo_t, ptt_t, rig_ptr_t);
2409 typedef int (*dcd_cb_t)(RIG *, vfo_t, dcd_t, rig_ptr_t);
2410 typedef int (*pltune_cb_t)(RIG *,
2411  vfo_t, freq_t *,
2412  rmode_t *,
2413  pbwidth_t *,
2414  rig_ptr_t);
2415 typedef int (*spectrum_cb_t)(RIG *,
2416  struct rig_spectrum_line *,
2417  rig_ptr_t);
2418 
2420 
2439  freq_cb_t freq_event;
2440  rig_ptr_t freq_arg;
2441  mode_cb_t mode_event;
2442  rig_ptr_t mode_arg;
2443  vfo_cb_t vfo_event;
2444  rig_ptr_t vfo_arg;
2445  ptt_cb_t ptt_event;
2446  rig_ptr_t ptt_arg;
2447  dcd_cb_t dcd_event;
2448  rig_ptr_t dcd_arg;
2449  pltune_cb_t pltune;
2450  rig_ptr_t pltune_arg;
2451  spectrum_cb_t spectrum_event;
2452  rig_ptr_t spectrum_arg;
2453  /* etc.. */
2454 };
2455 
2456 
2466 struct s_rig {
2467  struct rig_caps *caps;
2468  struct rig_state state;
2470 };
2471 
2472 
2473 
2474 /* --------------- API function prototypes -----------------*/
2475 
2477 
2478 extern HAMLIB_EXPORT(RIG *) rig_init HAMLIB_PARAMS((rig_model_t rig_model));
2479 extern HAMLIB_EXPORT(int) rig_open HAMLIB_PARAMS((RIG *rig));
2480 
2481 /*
2482  * General API commands, from most primitive to least.. :()
2483  * List Set/Get functions pairs
2484  */
2485 
2486 extern HAMLIB_EXPORT(int)
2487 rig_flush(hamlib_port_t *port);
2488 
2489 extern HAMLIB_EXPORT(int)
2490 rig_set_freq HAMLIB_PARAMS((RIG *rig,
2491  vfo_t vfo,
2492  freq_t freq));
2493 extern HAMLIB_EXPORT(int)
2494 rig_get_freq HAMLIB_PARAMS((RIG *rig,
2495  vfo_t vfo,
2496  freq_t *freq));
2497 
2498 extern HAMLIB_EXPORT(int)
2499 rig_set_mode HAMLIB_PARAMS((RIG *rig,
2500  vfo_t vfo,
2501  rmode_t mode,
2502  pbwidth_t width));
2503 extern HAMLIB_EXPORT(int)
2504 rig_get_mode HAMLIB_PARAMS((RIG *rig,
2505  vfo_t vfo,
2506  rmode_t *mode,
2507  pbwidth_t *width));
2508 
2509 #if 0
2510 #define rig_set_vfo(r,v) rig_set_vfo(r,v,__builtin_FUNCTION())
2511 extern HAMLIB_EXPORT(int)
2512 rig_set_vfo HAMLIB_PARAMS((RIG *rig,
2513  vfo_t vfo, const char *func));
2514 #else
2515 extern HAMLIB_EXPORT(int)
2516 rig_set_vfo HAMLIB_PARAMS((RIG *rig,
2517  vfo_t vfo));
2518 #endif
2519 extern HAMLIB_EXPORT(int)
2520 rig_get_vfo HAMLIB_PARAMS((RIG *rig,
2521  vfo_t *vfo));
2522 
2523 extern HAMLIB_EXPORT(int)
2524 rig_get_vfo_info HAMLIB_PARAMS((RIG *rig,
2525  vfo_t vfo,
2526  freq_t *freq,
2527  rmode_t *mode,
2528  pbwidth_t *width,
2529  split_t *split,
2530  int *satmode));
2531 
2532 extern HAMLIB_EXPORT(int)
2533 rig_get_vfo_list HAMLIB_PARAMS((RIG *rig, char *buf, int buflen));
2534 
2535 extern HAMLIB_EXPORT(int)
2536 netrigctl_get_vfo_mode HAMLIB_PARAMS((RIG *rig));
2537 
2538 extern HAMLIB_EXPORT(int)
2539 rig_set_ptt HAMLIB_PARAMS((RIG *rig,
2540  vfo_t vfo,
2541  ptt_t ptt));
2542 extern HAMLIB_EXPORT(int)
2543 rig_get_ptt HAMLIB_PARAMS((RIG *rig,
2544  vfo_t vfo,
2545  ptt_t *ptt));
2546 
2547 extern HAMLIB_EXPORT(int)
2548 rig_get_dcd HAMLIB_PARAMS((RIG *rig,
2549  vfo_t vfo,
2550  dcd_t *dcd));
2551 
2552 extern HAMLIB_EXPORT(int)
2553 rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig,
2554  vfo_t vfo,
2555  rptr_shift_t rptr_shift));
2556 extern HAMLIB_EXPORT(int)
2557 rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig,
2558  vfo_t vfo,
2559  rptr_shift_t *rptr_shift));
2560 
2561 extern HAMLIB_EXPORT(int)
2562 rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig,
2563  vfo_t vfo,
2564  shortfreq_t rptr_offs));
2565 extern HAMLIB_EXPORT(int)
2566 rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig,
2567  vfo_t vfo,
2568  shortfreq_t *rptr_offs));
2569 
2570 extern HAMLIB_EXPORT(int)
2571 rig_set_ctcss_tone HAMLIB_PARAMS((RIG *rig,
2572  vfo_t vfo,
2573  tone_t tone));
2574 extern HAMLIB_EXPORT(int)
2575 rig_get_ctcss_tone HAMLIB_PARAMS((RIG *rig,
2576  vfo_t vfo,
2577  tone_t *tone));
2578 
2579 extern HAMLIB_EXPORT(int)
2580 rig_set_dcs_code HAMLIB_PARAMS((RIG *rig,
2581  vfo_t vfo,
2582  tone_t code));
2583 extern HAMLIB_EXPORT(int)
2584 rig_get_dcs_code HAMLIB_PARAMS((RIG *rig,
2585  vfo_t vfo,
2586  tone_t *code));
2587 
2588 extern HAMLIB_EXPORT(int)
2589 rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig,
2590  vfo_t vfo,
2591  tone_t tone));
2592 extern HAMLIB_EXPORT(int)
2593 rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig,
2594  vfo_t vfo,
2595  tone_t *tone));
2596 
2597 extern HAMLIB_EXPORT(int)
2598 rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig,
2599  vfo_t vfo,
2600  tone_t code));
2601 extern HAMLIB_EXPORT(int)
2602 rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig,
2603  vfo_t vfo,
2604  tone_t *code));
2605 
2606 extern HAMLIB_EXPORT(int)
2607 rig_set_split_freq HAMLIB_PARAMS((RIG *rig,
2608  vfo_t vfo,
2609  freq_t tx_freq));
2610 extern HAMLIB_EXPORT(int)
2611 rig_get_split_freq HAMLIB_PARAMS((RIG *rig,
2612  vfo_t vfo,
2613  freq_t *tx_freq));
2614 
2615 extern HAMLIB_EXPORT(int)
2616 rig_set_split_mode HAMLIB_PARAMS((RIG *rig,
2617  vfo_t vfo,
2618  rmode_t tx_mode,
2619  pbwidth_t tx_width));
2620 extern HAMLIB_EXPORT(int)
2621 rig_get_split_mode HAMLIB_PARAMS((RIG *rig,
2622  vfo_t vfo,
2623  rmode_t *tx_mode,
2624  pbwidth_t *tx_width));
2625 
2626 extern HAMLIB_EXPORT(int)
2627 rig_set_split_freq_mode HAMLIB_PARAMS((RIG *rig,
2628  vfo_t vfo,
2629  freq_t tx_freq,
2630  rmode_t tx_mode,
2631  pbwidth_t tx_width));
2632 extern HAMLIB_EXPORT(int)
2633 rig_get_split_freq_mode HAMLIB_PARAMS((RIG *rig,
2634  vfo_t vfo,
2635  freq_t *tx_freq,
2636  rmode_t *tx_mode,
2637  pbwidth_t *tx_width));
2638 
2639 extern HAMLIB_EXPORT(int)
2640 rig_set_split_vfo HAMLIB_PARAMS((RIG *,
2641  vfo_t rx_vfo,
2642  split_t split,
2643  vfo_t tx_vfo));
2644 extern HAMLIB_EXPORT(int)
2645 rig_get_split_vfo HAMLIB_PARAMS((RIG *,
2646  vfo_t rx_vfo,
2647  split_t *split,
2648  vfo_t *tx_vfo));
2649 
2650 #define rig_set_split(r,v,s) rig_set_split_vfo((r),(v),(s),RIG_VFO_CURR)
2651 #define rig_get_split(r,v,s) ({ vfo_t _tx_vfo; rig_get_split_vfo((r),(v),(s),&_tx_vfo); })
2652 
2653 extern HAMLIB_EXPORT(int)
2654 rig_set_rit HAMLIB_PARAMS((RIG *rig,
2655  vfo_t vfo,
2656  shortfreq_t rit));
2657 extern HAMLIB_EXPORT(int)
2658 rig_get_rit HAMLIB_PARAMS((RIG *rig,
2659  vfo_t vfo,
2660  shortfreq_t *rit));
2661 
2662 extern HAMLIB_EXPORT(int)
2663 rig_set_xit HAMLIB_PARAMS((RIG *rig,
2664  vfo_t vfo,
2665  shortfreq_t xit));
2666 extern HAMLIB_EXPORT(int)
2667 rig_get_xit HAMLIB_PARAMS((RIG *rig,
2668  vfo_t vfo,
2669  shortfreq_t *xit));
2670 
2671 extern HAMLIB_EXPORT(int)
2672 rig_set_ts HAMLIB_PARAMS((RIG *rig,
2673  vfo_t vfo,
2674  shortfreq_t ts));
2675 extern HAMLIB_EXPORT(int)
2676 rig_get_ts HAMLIB_PARAMS((RIG *rig,
2677  vfo_t vfo,
2678  shortfreq_t *ts));
2679 
2680 extern HAMLIB_EXPORT(int)
2681 rig_power2mW HAMLIB_PARAMS((RIG *rig,
2682  unsigned int *mwpower,
2683  float power,
2684  freq_t freq,
2685  rmode_t mode));
2686 extern HAMLIB_EXPORT(int)
2687 rig_mW2power HAMLIB_PARAMS((RIG *rig,
2688  float *power,
2689  unsigned int mwpower,
2690  freq_t freq,
2691  rmode_t mode));
2692 
2693 extern HAMLIB_EXPORT(shortfreq_t)
2694 rig_get_resolution HAMLIB_PARAMS((RIG *rig,
2695  rmode_t mode));
2696 
2697 extern HAMLIB_EXPORT(int)
2698 rig_set_level HAMLIB_PARAMS((RIG *rig,
2699  vfo_t vfo,
2700  setting_t level,
2701  value_t val));
2702 extern HAMLIB_EXPORT(int)
2703 rig_get_level HAMLIB_PARAMS((RIG *rig,
2704  vfo_t vfo,
2705  setting_t level,
2706  value_t *val));
2707 
2708 #define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s))
2709 
2710 extern HAMLIB_EXPORT(int)
2711 rig_set_parm HAMLIB_PARAMS((RIG *rig,
2712  setting_t parm,
2713  value_t val));
2714 extern HAMLIB_EXPORT(int)
2715 rig_get_parm HAMLIB_PARAMS((RIG *rig,
2716  setting_t parm,
2717  value_t *val));
2718 
2719 extern HAMLIB_EXPORT(int)
2720 rig_set_conf HAMLIB_PARAMS((RIG *rig,
2721  token_t token,
2722  const char *val));
2723 extern HAMLIB_EXPORT(int)
2724 rig_get_conf HAMLIB_PARAMS((RIG *rig,
2725  token_t token,
2726  char *val));
2727 
2728 extern HAMLIB_EXPORT(int)
2729 rig_set_powerstat HAMLIB_PARAMS((RIG *rig,
2730  powerstat_t status));
2731 extern HAMLIB_EXPORT(int)
2732 rig_get_powerstat HAMLIB_PARAMS((RIG *rig,
2733  powerstat_t *status));
2734 
2735 extern HAMLIB_EXPORT(int)
2736 rig_reset HAMLIB_PARAMS((RIG *rig,
2737  reset_t reset)); /* dangerous! */
2738 
2739 extern HAMLIB_EXPORT(int)
2740 rig_set_ext_level HAMLIB_PARAMS((RIG *rig,
2741  vfo_t vfo,
2742  token_t token,
2743  value_t val));
2744 extern HAMLIB_EXPORT(int)
2745 rig_get_ext_level HAMLIB_PARAMS((RIG *rig,
2746  vfo_t vfo,
2747  token_t token,
2748  value_t *val));
2749 
2750 extern HAMLIB_EXPORT(int)
2751 rig_set_ext_func HAMLIB_PARAMS((RIG *rig,
2752  vfo_t vfo,
2753  token_t token,
2754  int status));
2755 extern HAMLIB_EXPORT(int)
2756 rig_get_ext_func HAMLIB_PARAMS((RIG *rig,
2757  vfo_t vfo,
2758  token_t token,
2759  int *status));
2760 
2761 extern HAMLIB_EXPORT(int)
2762 rig_set_ext_parm HAMLIB_PARAMS((RIG *rig,
2763  token_t token,
2764  value_t val));
2765 extern HAMLIB_EXPORT(int)
2766 rig_get_ext_parm HAMLIB_PARAMS((RIG *rig,
2767  token_t token,
2768  value_t *val));
2769 
2770 extern HAMLIB_EXPORT(int)
2771 rig_ext_func_foreach HAMLIB_PARAMS((RIG *rig,
2772  int (*cfunc)(RIG *,
2773  const struct confparams *,
2774  rig_ptr_t),
2775  rig_ptr_t data));
2776 extern HAMLIB_EXPORT(int)
2777 rig_ext_level_foreach HAMLIB_PARAMS((RIG *rig,
2778  int (*cfunc)(RIG *,
2779  const struct confparams *,
2780  rig_ptr_t),
2781  rig_ptr_t data));
2782 extern HAMLIB_EXPORT(int)
2783 rig_ext_parm_foreach HAMLIB_PARAMS((RIG *rig,
2784  int (*cfunc)(RIG *,
2785  const struct confparams *,
2786  rig_ptr_t),
2787  rig_ptr_t data));
2788 
2789 extern HAMLIB_EXPORT(const struct confparams *)
2790 rig_ext_lookup HAMLIB_PARAMS((RIG *rig,
2791  const char *name));
2792 
2793 extern HAMLIB_EXPORT(const struct confparams *)
2794 rig_ext_lookup_tok HAMLIB_PARAMS((RIG *rig,
2795  token_t token));
2796 extern HAMLIB_EXPORT(token_t)
2797 rig_ext_token_lookup HAMLIB_PARAMS((RIG *rig,
2798  const char *name));
2799 
2800 
2801 extern HAMLIB_EXPORT(int)
2802 rig_token_foreach HAMLIB_PARAMS((RIG *rig,
2803  int (*cfunc)(const struct confparams *,
2804  rig_ptr_t),
2805  rig_ptr_t data));
2806 
2807 extern HAMLIB_EXPORT(const struct confparams *)
2808 rig_confparam_lookup HAMLIB_PARAMS((RIG *rig,
2809  const char *name));
2810 extern HAMLIB_EXPORT(token_t)
2811 rig_token_lookup HAMLIB_PARAMS((RIG *rig,
2812  const char *name));
2813 
2814 extern HAMLIB_EXPORT(int)
2815 rig_close HAMLIB_PARAMS((RIG *rig));
2816 
2817 extern HAMLIB_EXPORT(int)
2818 rig_cleanup HAMLIB_PARAMS((RIG *rig));
2819 
2820 extern HAMLIB_EXPORT(int)
2821 rig_set_ant HAMLIB_PARAMS((RIG *rig,
2822  vfo_t vfo,
2823  ant_t ant, /* antenna */
2824  value_t option)); /* optional ant info */
2825 extern HAMLIB_EXPORT(int)
2826 rig_get_ant HAMLIB_PARAMS((RIG *rig,
2827  vfo_t vfo,
2828  ant_t ant,
2829  value_t *option,
2830  ant_t *ant_curr,
2831  ant_t *ant_tx,
2832  ant_t *ant_rx));
2833 
2834 extern HAMLIB_EXPORT(setting_t)
2835 rig_has_get_level HAMLIB_PARAMS((RIG *rig,
2836  setting_t level));
2837 extern HAMLIB_EXPORT(setting_t)
2838 rig_has_set_level HAMLIB_PARAMS((RIG *rig,
2839  setting_t level));
2840 
2841 extern HAMLIB_EXPORT(setting_t)
2842 rig_has_get_parm HAMLIB_PARAMS((RIG *rig,
2843  setting_t parm));
2844 extern HAMLIB_EXPORT(setting_t)
2845 rig_has_set_parm HAMLIB_PARAMS((RIG *rig,
2846  setting_t parm));
2847 
2848 extern HAMLIB_EXPORT(setting_t)
2849 rig_has_get_func HAMLIB_PARAMS((RIG *rig,
2850  setting_t func));
2851 extern HAMLIB_EXPORT(setting_t)
2852 rig_has_set_func HAMLIB_PARAMS((RIG *rig,
2853  setting_t func));
2854 
2855 extern HAMLIB_EXPORT(int)
2856 rig_set_func HAMLIB_PARAMS((RIG *rig,
2857  vfo_t vfo,
2858  setting_t func,
2859  int status));
2860 extern HAMLIB_EXPORT(int)
2861 rig_get_func HAMLIB_PARAMS((RIG *rig,
2862  vfo_t vfo,
2863  setting_t func,
2864  int *status));
2865 
2866 extern HAMLIB_EXPORT(int)
2867 rig_send_dtmf HAMLIB_PARAMS((RIG *rig,
2868  vfo_t vfo,
2869  const char *digits));
2870 extern HAMLIB_EXPORT(int)
2871 rig_recv_dtmf HAMLIB_PARAMS((RIG *rig,
2872  vfo_t vfo,
2873  char *digits,
2874  int *length));
2875 
2876 extern HAMLIB_EXPORT(int)
2877 rig_send_morse HAMLIB_PARAMS((RIG *rig,
2878  vfo_t vfo,
2879  const char *msg));
2880 
2881 extern HAMLIB_EXPORT(int)
2882 rig_stop_morse HAMLIB_PARAMS((RIG *rig,
2883  vfo_t vfo));
2884 
2885 extern HAMLIB_EXPORT(int)
2886 rig_wait_morse HAMLIB_PARAMS((RIG *rig,
2887  vfo_t vfo));
2888 
2889 extern HAMLIB_EXPORT(int)
2890 rig_send_voice_mem HAMLIB_PARAMS((RIG *rig,
2891  vfo_t vfo,
2892  int ch));
2893 
2894 extern HAMLIB_EXPORT(int)
2895 rig_set_bank HAMLIB_PARAMS((RIG *rig,
2896  vfo_t vfo,
2897  int bank));
2898 
2899 extern HAMLIB_EXPORT(int)
2900 rig_set_mem HAMLIB_PARAMS((RIG *rig,
2901  vfo_t vfo,
2902  int ch));
2903 extern HAMLIB_EXPORT(int)
2904 rig_get_mem HAMLIB_PARAMS((RIG *rig,
2905  vfo_t vfo,
2906  int *ch));
2907 
2908 extern HAMLIB_EXPORT(int)
2909 rig_vfo_op HAMLIB_PARAMS((RIG *rig,
2910  vfo_t vfo,
2911  vfo_op_t op));
2912 
2913 extern HAMLIB_EXPORT(vfo_op_t)
2914 rig_has_vfo_op HAMLIB_PARAMS((RIG *rig,
2915  vfo_op_t op));
2916 
2917 extern HAMLIB_EXPORT(int)
2918 rig_scan HAMLIB_PARAMS((RIG *rig,
2919  vfo_t vfo,
2920  scan_t scan,
2921  int ch));
2922 
2923 extern HAMLIB_EXPORT(scan_t)
2924 rig_has_scan HAMLIB_PARAMS((RIG *rig,
2925  scan_t scan));
2926 
2927 extern HAMLIB_EXPORT(int)
2928 rig_set_channel HAMLIB_PARAMS((RIG *rig,
2929  vfo_t vfo,
2930  const channel_t *chan)); /* mem */
2931 extern HAMLIB_EXPORT(int)
2932 rig_get_channel HAMLIB_PARAMS((RIG *rig,
2933  vfo_t vfo,
2934  channel_t *chan, int read_only));
2935 
2936 extern HAMLIB_EXPORT(int)
2937 rig_set_chan_all HAMLIB_PARAMS((RIG *rig,
2938  vfo_t vfo,
2939  const channel_t chans[]));
2940 extern HAMLIB_EXPORT(int)
2941 rig_get_chan_all HAMLIB_PARAMS((RIG *rig,
2942  vfo_t vfo,
2943  channel_t chans[]));
2944 
2945 extern HAMLIB_EXPORT(int)
2946 rig_set_chan_all_cb HAMLIB_PARAMS((RIG *rig,
2947  vfo_t vfo,
2948  chan_cb_t chan_cb,
2949  rig_ptr_t));
2950 extern HAMLIB_EXPORT(int)
2951 rig_get_chan_all_cb HAMLIB_PARAMS((RIG *rig,
2952  vfo_t vfo,
2953  chan_cb_t chan_cb,
2954  rig_ptr_t));
2955 
2956 extern HAMLIB_EXPORT(int)
2957 rig_set_mem_all_cb HAMLIB_PARAMS((RIG *rig,
2958  vfo_t vfo,
2959  chan_cb_t chan_cb,
2960  confval_cb_t parm_cb,
2961  rig_ptr_t));
2962 extern HAMLIB_EXPORT(int)
2963 rig_get_mem_all_cb HAMLIB_PARAMS((RIG *rig,
2964  vfo_t vfo,
2965  chan_cb_t chan_cb,
2966  confval_cb_t parm_cb,
2967  rig_ptr_t));
2968 
2969 extern HAMLIB_EXPORT(int)
2970 rig_set_mem_all HAMLIB_PARAMS((RIG *rig,
2971  vfo_t vfo,
2972  const channel_t *chan,
2973  const struct confparams *,
2974  const value_t *));
2975 extern HAMLIB_EXPORT(int)
2976 rig_get_mem_all HAMLIB_PARAMS((RIG *rig,
2977  vfo_t vfo,
2978  channel_t *chan,
2979  const struct confparams *,
2980  value_t *));
2981 
2982 extern HAMLIB_EXPORT(const chan_t *)
2983 rig_lookup_mem_caps HAMLIB_PARAMS((RIG *rig,
2984  int ch));
2985 
2986 extern HAMLIB_EXPORT(int)
2987 rig_mem_count HAMLIB_PARAMS((RIG *rig));
2988 
2989 extern HAMLIB_EXPORT(int)
2990 rig_set_trn HAMLIB_PARAMS((RIG *rig,
2991  int trn));
2992 extern HAMLIB_EXPORT(int)
2993 rig_get_trn HAMLIB_PARAMS((RIG *rig,
2994  int *trn));
2995 
2996 extern HAMLIB_EXPORT(int)
2997 rig_set_freq_callback HAMLIB_PARAMS((RIG *,
2998  freq_cb_t,
2999  rig_ptr_t));
3000 
3001 extern HAMLIB_EXPORT(int)
3002 rig_set_mode_callback HAMLIB_PARAMS((RIG *,
3003  mode_cb_t,
3004  rig_ptr_t));
3005 extern HAMLIB_EXPORT(int)
3006 rig_set_vfo_callback HAMLIB_PARAMS((RIG *,
3007  vfo_cb_t,
3008  rig_ptr_t));
3009 
3010 extern HAMLIB_EXPORT(int)
3011 rig_set_ptt_callback HAMLIB_PARAMS((RIG *,
3012  ptt_cb_t,
3013  rig_ptr_t));
3014 
3015 extern HAMLIB_EXPORT(int)
3016 rig_set_dcd_callback HAMLIB_PARAMS((RIG *,
3017  dcd_cb_t,
3018  rig_ptr_t));
3019 
3020 extern HAMLIB_EXPORT(int)
3021 rig_set_pltune_callback HAMLIB_PARAMS((RIG *,
3022  pltune_cb_t,
3023  rig_ptr_t));
3024 
3025 extern HAMLIB_EXPORT(int)
3026 rig_set_spectrum_callback HAMLIB_PARAMS((RIG *,
3027  spectrum_cb_t,
3028  rig_ptr_t));
3029 
3030 extern HAMLIB_EXPORT(int)
3031 rig_set_twiddle HAMLIB_PARAMS((RIG *rig,
3032  int seconds));
3033 
3034 extern HAMLIB_EXPORT(int)
3035 rig_get_twiddle HAMLIB_PARAMS((RIG *rig,
3036  int *seconds));
3037 
3038 extern HAMLIB_EXPORT(int)
3039 rig_set_uplink HAMLIB_PARAMS((RIG *rig,
3040  int val));
3041 
3042 extern HAMLIB_EXPORT(const char *)
3043 rig_get_info HAMLIB_PARAMS((RIG *rig));
3044 
3045 extern HAMLIB_EXPORT(const struct rig_caps *)
3046 rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model));
3047 
3048 extern HAMLIB_EXPORT(const freq_range_t *)
3049 rig_get_range HAMLIB_PARAMS((const freq_range_t *range_list,
3050  freq_t freq,
3051  rmode_t mode));
3052 
3053 extern HAMLIB_EXPORT(pbwidth_t)
3054 rig_passband_normal HAMLIB_PARAMS((RIG *rig,
3055  rmode_t mode));
3056 extern HAMLIB_EXPORT(pbwidth_t)
3057 rig_passband_narrow HAMLIB_PARAMS((RIG *rig,
3058  rmode_t mode));
3059 extern HAMLIB_EXPORT(pbwidth_t)
3060 rig_passband_wide HAMLIB_PARAMS((RIG *rig,
3061  rmode_t mode));
3062 
3063 extern HAMLIB_EXPORT(const char *)
3064 rigerror HAMLIB_PARAMS((int errnum));
3065 
3066 extern HAMLIB_EXPORT(int)
3067 rig_setting2idx HAMLIB_PARAMS((setting_t s));
3068 
3069 extern HAMLIB_EXPORT(setting_t)
3070 rig_idx2setting(int i);
3071 /*
3072  * Even if these functions are prefixed with "rig_", they are not rig specific
3073  * Maybe "hamlib_" would have been better. Let me know. --SF
3074  */
3075 extern HAMLIB_EXPORT(void)
3076 rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
3077 
3078 extern HAMLIB_EXPORT(void)
3079 rig_set_debug_time_stamp HAMLIB_PARAMS((int flag));
3080 
3081 #define rig_set_debug_level(level) rig_set_debug(level)
3082 
3083 extern HAMLIB_EXPORT(int)
3084 rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
3085 
3086 
3087 // this need to be fairly big to avoid compiler warnings
3088 #define DEBUGMSGSAVE_SIZE 24000
3089 extern HAMLIB_EXPORT_VAR(char) debugmsgsave[DEBUGMSGSAVE_SIZE]; // last debug msg
3090 extern HAMLIB_EXPORT_VAR(char) debugmsgsave2[DEBUGMSGSAVE_SIZE]; // last-1 debug msg
3091 extern HAMLIB_EXPORT_VAR(char) debugmsgsave3[DEBUGMSGSAVE_SIZE]; // last-2 debug msg
3092 #ifndef __cplusplus
3093 #ifdef __GNUC__
3094 // doing the debug macro with a dummy sprintf allows gcc to check the format string
3095 #define rig_debug(debug_level,fmt,...) do { strncpy(debugmsgsave3, debugmsgsave2,sizeof(debugmsgsave3));strncpy(debugmsgsave2, debugmsgsave, sizeof(debugmsgsave2));snprintf(debugmsgsave,sizeof(debugmsgsave),fmt,__VA_ARGS__);rig_debug(debug_level,fmt,##__VA_ARGS__); } while(0);
3096 #endif
3097 #endif
3098 extern HAMLIB_EXPORT(void)
3099 rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level,
3100  const char *fmt, ...));
3101 
3102 extern HAMLIB_EXPORT(vprintf_cb_t)
3103 rig_set_debug_callback HAMLIB_PARAMS((vprintf_cb_t cb,
3104  rig_ptr_t arg));
3105 
3106 extern HAMLIB_EXPORT(FILE *)
3107 rig_set_debug_file HAMLIB_PARAMS((FILE *stream));
3108 
3109 extern HAMLIB_EXPORT(int)
3110 rig_register HAMLIB_PARAMS((const struct rig_caps *caps));
3111 
3112 extern HAMLIB_EXPORT(int)
3113 rig_unregister HAMLIB_PARAMS((rig_model_t rig_model));
3114 
3115 extern HAMLIB_EXPORT(int)
3116 rig_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rig_caps *, rig_ptr_t),
3117  rig_ptr_t data));
3118 
3119 extern HAMLIB_EXPORT(int)
3120 rig_list_foreach_model HAMLIB_PARAMS((int (*cfunc)(const rig_model_t rig_model, rig_ptr_t),
3121  rig_ptr_t data));
3122 
3123 extern HAMLIB_EXPORT(int)
3124 rig_load_backend HAMLIB_PARAMS((const char *be_name));
3125 
3126 extern HAMLIB_EXPORT(int)
3127 rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model));
3128 
3129 extern HAMLIB_EXPORT(int)
3130 rig_load_all_backends HAMLIB_PARAMS((void));
3131 
3132 typedef int (*rig_probe_func_t)(const hamlib_port_t *, rig_model_t, rig_ptr_t);
3133 
3134 extern HAMLIB_EXPORT(int)
3135 rig_probe_all HAMLIB_PARAMS((hamlib_port_t *p,
3136  rig_probe_func_t,
3137  rig_ptr_t));
3138 
3139 extern HAMLIB_EXPORT(rig_model_t)
3140 rig_probe HAMLIB_PARAMS((hamlib_port_t *p));
3141 
3142 
3143 /* Misc calls */
3144 extern HAMLIB_EXPORT(const char *) rig_strrmode(rmode_t mode);
3145 extern HAMLIB_EXPORT(int) rig_strrmodes(rmode_t modes, char *buf, int buflen);
3146 extern HAMLIB_EXPORT(const char *) rig_strvfo(vfo_t vfo);
3147 extern HAMLIB_EXPORT(const char *) rig_strfunc(setting_t);
3148 extern HAMLIB_EXPORT(const char *) rig_strlevel(setting_t);
3149 extern HAMLIB_EXPORT(const char *) rig_strparm(setting_t);
3150 extern HAMLIB_EXPORT(const char *) rig_stragclevel(enum agc_level_e level);
3151 extern HAMLIB_EXPORT(const char *) rig_strptrshift(rptr_shift_t);
3152 extern HAMLIB_EXPORT(const char *) rig_strvfop(vfo_op_t op);
3153 extern HAMLIB_EXPORT(const char *) rig_strscan(scan_t scan);
3154 extern HAMLIB_EXPORT(const char *) rig_strstatus(enum rig_status_e status);
3155 extern HAMLIB_EXPORT(const char *) rig_strmtype(chan_type_t mtype);
3156 extern HAMLIB_EXPORT(const char *) rig_strspectrummode(enum rig_spectrum_mode_e mode);
3157 
3158 extern HAMLIB_EXPORT(rmode_t) rig_parse_mode(const char *s);
3159 extern HAMLIB_EXPORT(vfo_t) rig_parse_vfo(const char *s);
3160 extern HAMLIB_EXPORT(setting_t) rig_parse_func(const char *s);
3161 extern HAMLIB_EXPORT(setting_t) rig_parse_level(const char *s);
3162 extern HAMLIB_EXPORT(setting_t) rig_parse_parm(const char *s);
3163 extern HAMLIB_EXPORT(vfo_op_t) rig_parse_vfo_op(const char *s);
3164 extern HAMLIB_EXPORT(scan_t) rig_parse_scan(const char *s);
3165 extern HAMLIB_EXPORT(rptr_shift_t) rig_parse_rptr_shift(const char *s);
3166 extern HAMLIB_EXPORT(chan_type_t) rig_parse_mtype(const char *s);
3167 
3168 extern HAMLIB_EXPORT(const char *) rig_license HAMLIB_PARAMS(());
3169 extern HAMLIB_EXPORT(const char *) rig_version HAMLIB_PARAMS(());
3170 extern HAMLIB_EXPORT(const char *) rig_copyright HAMLIB_PARAMS(());
3171 
3172 extern HAMLIB_EXPORT(void) rig_no_restore_ai();
3173 
3174 extern HAMLIB_EXPORT(int) rig_get_cache_timeout_ms(RIG *rig, hamlib_cache_t selection);
3175 extern HAMLIB_EXPORT(int) rig_set_cache_timeout_ms(RIG *rig, hamlib_cache_t selection, int ms);
3176 
3177 extern HAMLIB_EXPORT(int) rig_set_vfo_opt(RIG *rig, int status);
3178 extern HAMLIB_EXPORT(int) rig_get_vfo_info(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode, pbwidth_t *width, split_t *split, int *satmode);
3179 extern HAMLIB_EXPORT(int) rig_get_rig_info(RIG *rig, char *response, int max_response_len);
3180 extern HAMLIB_EXPORT(int) rig_get_cache(RIG *rig, vfo_t vfo, freq_t *freq, int * cache_ms_freq, rmode_t *mode, int *cache_ms_mode, pbwidth_t *width, int *cache_ms_width);
3181 
3182 extern HAMLIB_EXPORT(int) rig_set_clock(RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset);
3183 extern HAMLIB_EXPORT(int) rig_get_clock(RIG *rig, int *year, int *month, int *day, int *hour, int *min, int *sec, double *msec, int *utc_offset);
3184 
3185 typedef unsigned long rig_useconds_t;
3186 extern HAMLIB_EXPORT(int) hl_usleep(rig_useconds_t msec);
3187 
3188 extern HAMLIB_EXPORT(int) rig_cookie(RIG *rig, enum cookie_e cookie_cmd, char *cookie, int cookie_len);
3189 
3191 
3192 __END_DECLS
3193 
3194 #endif /* _RIG_H */
3195 
Definition: rig.h:634
const char * rig_strstatus(enum rig_status_e status)
Convert enum RIG_STATUS_... to printable string.
Definition: misc.c:392
int rig_get_conf(RIG *rig, token_t token, char *val)
get the value of a configuration parameter
Definition: conf.c:1228
scan_t rig_has_scan(RIG *rig, scan_t scan)
check availability of scanning functions
Definition: rig.c:6129
setting_t funcs
Definition: rig.h:1462
Definition: rig.h:624
int rig_get_mem(RIG *rig, vfo_t vfo, int *ch)
get the current memory channel number
Definition: mem.c:135
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
vfo_cb_t vfo_event
Definition: rig.h:2443
int auto_power_on
Definition: rig.h:2382
rig_debug_level_e
Hamlib debug levels.
Definition: rig.h:175
struct rig_callbacks callbacks
Definition: rig.h:2469
value_t step
Definition: rig.h:1553
unsigned tuning_step
Definition: rig.h:1459
const char * rig_strspectrummode(enum rig_spectrum_mode_e mode)
Convert enum RIG_SPECTRUM_MODE_... to alpha string.
Definition: misc.c:1557
Definition: rig.h:994
unsigned channel_desc
Definition: rig.h:1470
Definition: rig.h:1007
Definition: rig.h:578
unsigned tx_vfo
Definition: rig.h:1456
token_t rig_ext_token_lookup(RIG *rig, const char *name)
Simple lookup returning token id associated with name.
Definition: ext.c:327
int rig_set_uplink(RIG *rig, int val)
For GPredict to avoid reading frequency on uplink VFO.
Definition: rig.c:1376
setting_t rig_has_get_level(RIG *rig, setting_t level)
check retrieval ability of level settings
Definition: settings.c:296
Definition: rig.h:358
setting_t has_set_func
Definition: rig.h:2341
struct ext_list * ext_levels
Definition: rig.h:1429
int raw
Definition: rig.h:1568
int rig_set_dcd_callback(RIG *rig, dcd_cb_t cb, rig_ptr_t arg)
set the callback for dcd events
Definition: event.c:667
double freq_t
Frequency type,.
Definition: rig.h:368
Definition: rig.h:177
int rig_get_cache(RIG *rig, vfo_t vfo, freq_t *freq, int *cache_ms_freq, rmode_t *mode, int *cache_ms_mode, pbwidth_t *width, int *cache_ms_width)
get cached values for a VFO
Definition: rig.c:1614
int rig_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd)
get the status of the DCD
Definition: rig.c:3551
const char * rigerror(int errnum)
get string describing the error code
Definition: rig.c:308
value_t min
Definition: rig.h:1551
rig_ptr_t spectrum_arg
Definition: rig.h:2452
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
unsigned bank_num
Definition: rig.h:1444
Definition: rig.h:581
int rig_set_dcs_code(RIG *rig, vfo_t vfo, tone_t code)
set the current encoding DCS code
Definition: tones.c:230
Filter definition.
Definition: rig.h:1350
vfo_t tx_vfo
Definition: rig.h:2368
float f
Definition: rig.h:877
int rig_set_channel(RIG *rig, vfo_t vfo, const channel_t *chan)
set channel data
Definition: mem.c:688
int rig_set_vfo(RIG *rig, vfo_t vfo)
set the current VFO
Definition: rig.c:2757
long token_t
configuration token
Definition: rig.h:699
scan_t
Rig Scan operation.
Definition: rig.h:683
Definition: rig.h:584
float step
Definition: rig.h:749
int rig_get_rig_info(RIG *rig, char *response, int max_response_len)
get freq/mode/width for requested VFO
Definition: rig.c:6830
shortfreq_t xit
Definition: rig.h:1419
void rig_debug(enum rig_debug_level_e debug_level, const char *fmt,...)
Print debugging messages through stderr by default.
Definition: debug.c:202
Definition: rig.h:1493
Definition: rig.h:296
unsigned tx_width
Definition: rig.h:1453
pbwidth_t tx_width
Definition: rig.h:1410
Definition: rig.h:658
Definition: rig.h:607
Definition: rig.h:249
int low_power
Definition: rig.h:1287
Definition: rig.h:991
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:1329
FILE * rig_set_debug_file(FILE *stream)
Change the output stream from stderr a different stream.
Definition: debug.c:328
const char * dflt
Definition: rig.h:743
int rig_send_morse(RIG *rig, vfo_t vfo, const char *msg)
send morse code
Definition: rig.c:6383
const char * cs
Definition: rig.h:879
rig_ptr_t pltune_arg
Definition: rig.h:2450
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_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:5746
freq_t endf
Definition: rig.h:1285
shortfreq_t max_ifshift
Definition: rig.h:2333
Definition: rig.h:136
pbwidth_t rig_passband_wide(RIG *rig, rmode_t mode)
get the wide passband of a mode
Definition: rig.c:2700
int uplink
Definition: rig.h:2379
gran_t level_gran[64]
Definition: rig.h:2347
vfo_t vfo
Definition: rig.h:1402
Definition: rig.h:265
Definition: rig.h:332
unsigned rptr_offs
Definition: rig.h:1458
const char * rig_strlevel(setting_t level)
Convert enum RIG_LEVEL_... to alpha string.
Definition: misc.c:1008
Definition: rig.h:143
int rig_set_bank(RIG *rig, vfo_t vfo, int bank)
set the current memory bank
Definition: mem.c:198
int rig_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch)
perform Memory/VFO operations
Definition: rig.c:6161
Definition: rig.h:330
Definition: rig.h:593
int rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
get the frequency of the target VFO
Definition: rig.c:2092
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:5690
rig_parm_e
Rig Parameters.
Definition: rig.h:986
struct cal_table::@3 table[HAMLIB_MAX_CAL_LENGTH]
Tuning step definition.
Definition: rig.h:1315
Definition: rig.h:329
int rig_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit)
get the current XIT offset
Definition: rig.c:5290
setting_t rig_has_set_level(RIG *rig, setting_t level)
check settable ability of level settings
Definition: settings.c:326
vfo_op_t rig_has_vfo_op(RIG *rig, vfo_op_t op)
check retrieval ability of VFO operations
Definition: rig.c:6026
int rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
set PTT on/off
Definition: rig.c:2980
Definition: rig.h:722
int rig_set_trn(RIG *rig, int trn)
control the transceive mode
Definition: event.c:759
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
Frequency range.
Definition: rig.h:1283
ann_t announces
Definition: rig.h:2335
Calibration table struct for float values.
Definition: rig.h:1595
Definition: rig.h:148
double signal_strength_min
Definition: rig.h:1673
Definition: rig.h:134
const char * rig_strparm(setting_t parm)
Convert enum RIG_PARM_... to alpha string.
Definition: misc.c:1176
Definition: rig.h:246
int rig_set_conf(RIG *rig, token_t token, const char *val)
set a radio configuration parameter
Definition: conf.c:1175
powerstat_t
Radio power state.
Definition: rig.h:621
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
Definition: rig.h:727
Definition: rig.h:137
int startc
Definition: rig.h:1516
Definition: rig.h:252
value_t levels[64]
Definition: rig.h:1421
int vfo_list
Definition: rig.h:2357
double signal_strength_max
Definition: rig.h:1674
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:699
signed long shortfreq_t
Short frequency type.
Definition: rig.h:390
chan_type_t rig_parse_mtype(const char *s)
Convert alpha string to enum RIG_MTYPE_...
Definition: misc.c:1492
struct filter_list filters[HAMLIB_FLTLSTSIZ]
Definition: rig.h:2325
unsigned flags
Definition: rig.h:1469
setting_t has_get_func
Definition: rig.h:2340
signed int i
Definition: rig.h:876
Definition: rig.h:1644
pbwidth_t current_width
Definition: rig.h:2367
setting_t has_get_parm
Definition: rig.h:2344
Definition: rig.h:300
Definition: rig.h:251
Definition: rig.h:993
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
const chan_t * rig_lookup_mem_caps(RIG *rig, int ch)
lookup the memory type and capabilities
Definition: mem.c:1590
freq_t freq
Definition: rig.h:1404
setting_t rig_has_set_func(RIG *rig, setting_t func)
check ability of radio functions
Definition: settings.c:444
void rig_set_debug(enum rig_debug_level_e debug_level)
Change the current debug level.
Definition: debug.c:154
freq_range_t tx_range_list[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2321
hamlib_port_t port_t
Rig data structure.
Definition: rig.h:2195
Definition: rig.h:331
rig_ptr_t ptt_arg
Definition: rig.h:2446
uint64_t rig_idx2setting(int i)
Definition: misc.c:717
freq_t center_freq
Definition: rig.h:1678
int power_max
Definition: rig.h:2392
int rig_set_vfo_callback(RIG *rig, vfo_cb_t cb, rig_ptr_t arg)
set the callback for vfo events
Definition: event.c:607
setting_t rig_parse_func(const char *s)
Convert alpha string to enum RIG_FUNC_...
Definition: misc.c:729
pbwidth_t width
Definition: rig.h:1406
rmode_t mode
Definition: rig.h:1405
Definition: rig.h:692
shortfreq_t tuning_step
Definition: rig.h:1417
freq_t current_freq
Definition: rig.h:2364
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:5598
int rig_probe_all(hamlib_port_t *port, rig_probe_func_t cfunc, rig_ptr_t data)
try to guess rigs
Definition: rig.c:5995
float val
Definition: rig.h:1599
Definition: rig.h:359
freq_t startf
Definition: rig.h:1284
Definition: rig.h:596
int rig_send_dtmf(RIG *rig, vfo_t vfo, const char *digits)
send DTMF digits
Definition: rig.c:6232
serial_handshake_e
Serial handshake.
Definition: rig.h:273
int high_power
Definition: rig.h:1288
Definition: rig.h:614
Definition: rig.h:770
struct confparams::@0::@2 c
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:4275
Definition: rig.h:274
int rig_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
activate/de-activate functions of radio
Definition: settings.c:475
Definition: rig.h:295
unsigned vfo
Definition: rig.h:1445
Definition: rig.h:611
unsigned mode
Definition: rig.h:1448
const char * rig_strvfo(vfo_t vfo)
Convert enum RIG_VFO_... to alpha string.
Definition: misc.c:629
shortfreq_t pbwidth_t
Definition: rig.h:559
int ptt_share
Definition: rig.h:2389
Definition: rig.h:250
Spectrum scope.
Definition: rig.h:1630
Definition: rig.h:253
Spectrum scope averaging modes.
Definition: rig.h:1650
int rig_set_freq_callback(RIG *rig, freq_cb_t cb, rig_ptr_t arg)
set the callback for freq events
Definition: event.c:547
Channel capability definition.
Definition: rig.h:1443
Definition: rig.h:988
Definition: rig.h:149
int rig_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS squelch
Definition: tones.c:362
Definition: rig.h:594
shortfreq_t rig_get_resolution(RIG *rig, rmode_t mode)
get the best frequency resolution of the rig
Definition: rig.c:5802
Channel structure.
Definition: rig.h:1399
Definition: rig.h:297
Definition: rig.h:626
Definition: rig.h:1496
vfo_op_t
VFO operation.
Definition: rig.h:657
Definition: rig.h:665
rptr_shift_t
Repeater shift type.
Definition: rig.h:347
Definition: rig.h:285
int size
Definition: rig.h:1566
Definition: rig.h:1643
int power_now
Definition: rig.h:2390
const char * rig_license()
get the Hamlib license
Definition: rig.c:7045
Definition: rig.h:685
int rig_wait_morse(RIG *rig, vfo_t vfo)
wait morse code
Definition: rig.c:6559
int rig_setting2idx(setting_t s)
basically convert setting_t expressed 2^n to n
Definition: settings.c:933
rig_spectrum_mode_e
Spectrum scope modes.
Definition: rig.h:1639
const char * rig_strfunc(setting_t func)
Convert enum RIG_FUNC_... to alpha string.
Definition: misc.c:779
int rig_set_vfo_opt(RIG *rig, int status)
set the vfo option for rigctld
Definition: rig.c:6728
Extension attribute definition.
Definition: rig.h:1382
Definition: rig.h:567
const struct confparams * rig_ext_lookup_tok(RIG *rig, token_t token)
lookup ext token, return pointer to confparams struct.
Definition: ext.c:283
int rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit)
set the XIT
Definition: rig.c:5219
setting_t rig_has_get_parm(RIG *rig, setting_t parm)
check retrieval ability of parameter settings
Definition: settings.c:356
Universal approach for passing values.
Definition: rig.h:875
Definition: rig.h:139
Definition: rig.h:723
Definition: rig.h:613
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:4463
const char * rig_strptrshift(rptr_shift_t shift)
convert enum RIG_RPT_SHIFT_... to printable character
Definition: misc.c:1424
int twiddle_rit
Definition: rig.h:2394
vfo_t rig_parse_vfo(const char *s)
Convert alpha string to enum RIG_VFO_...
Definition: misc.c:600
const char * rig_strscan(scan_t rscan)
Convert enum RIG_SCAN_... to alpha string.
Definition: misc.c:1395
setting_t has_set_parm
Definition: rig.h:2345
Definition: rig.h:660
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:6692
int hl_usleep(rig_useconds_t usec)
provide sleep and usleep replacements
Definition: sleep.c:53
unsigned ant
Definition: rig.h:1446
freq_cb_t freq_event
Definition: rig.h:2439
vfo_t current_vfo
Definition: rig.h:2356
rig_ptr_t dcd_arg
Definition: rig.h:2448
int auto_power_off
Definition: rig.h:2384
int rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
get the status of the PTT
Definition: rig.c:3268
hamlib_port_t pttport
Definition: rig.h:2314
The Rig structure.
Definition: rig.h:2466
dcd_type_t
DCD type.
Definition: rig.h:576
int rig_reset(RIG *rig, reset_t reset)
reset the radio
Definition: rig.c:5921
token_t token
Definition: rig.h:1383
rmode_t modes
Definition: rig.h:1286
int rig_set_clock(RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset)
set the rig&#39;s clock
Definition: rig.c:7009
pltune_cb_t pltune
Definition: rig.h:2449
Definition: rig.h:299
tone_t dcs_code
Definition: rig.h:1424
char * s
Definition: rig.h:878
int raw
Definition: rig.h:1598
setting_t rig_has_set_parm(RIG *rig, setting_t parm)
check settable ability of parameter settings
Definition: settings.c:385
struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ]
Definition: rig.h:2323
meter_level_e
Level display meters.
Definition: rig.h:857
chan_type_t
Memory channel type definition.
Definition: rig.h:1490
setting_t has_set_level
Definition: rig.h:2343
Definition: rig.h:176
spectrum_cb_t spectrum_event
Definition: rig.h:2451
Definition: rig.h:583
const char * rig_stragclevel(enum agc_level_e level)
Convert enum RIG_AGC_... to alpha string.
Definition: misc.c:1249
int channel_num
Definition: rig.h:1400
setting_t rig_has_get_func(RIG *rig, setting_t func)
check ability of radio functions
Definition: settings.c:414
Definition: rig.h:294
rig_status_e
Development status of the backend.
Definition: rig.h:327
Definition: rig.h:248
Definition: rig.h:1497
const char * rig_copyright()
get the Hamlib copyright
Definition: rig.c:7065
int rig_set_ext_parm(RIG *rig, token_t token, value_t val)
set a radio parm extra parameter
Definition: settings.c:874
const struct confparams * rig_confparam_lookup(RIG *rig, const char *name)
lookup a confparam struct
Definition: conf.c:1088
Definition: rig.h:348
Definition: rig.h:146
Definition: rig.h:995
Definition: rig.h:145
shortfreq_t max_rit
Definition: rig.h:2331
Definition: rig.h:1495
Definition: rig.h:636
Definition: rig.h:1498
rmode_t modes
Definition: rig.h:1316
scan_t rig_parse_scan(const char *s)
Convert alpha string to enum RIG_SCAN_...
Definition: misc.c:1370
int rig_set_chan_all(RIG *rig, vfo_t vfo, const channel_t chans[])
set all channel data
Definition: mem.c:1170
Definition: rig.h:303
Definition: rig.h:566
int rig_set_mem(RIG *rig, vfo_t vfo, int ch)
set the current memory channel number
Definition: mem.c:72
struct rig_state state
Definition: rig.h:2468
Definition: rig.h:182
int poll_interval
Definition: rig.h:2363
Definition: rig.h:608
Definition: rig.h:845
Definition: rig.h:670
unsigned split
Definition: rig.h:1455
int rig_open(RIG *rig)
open the communication to the rig
Definition: rig.c:679
Definition: rig.h:765
Definition: rig.h:1008
unsigned rit
Definition: rig.h:1460
int rig_get_dcs_sql(RIG *rig, vfo_t vfo, tone_t *code)
get the current DCS code
Definition: tones.c:553
agc_level_e
AGC delay settings.
Definition: rig.h:840
int transmit
Definition: rig.h:2372
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:1463
Definition: rig.h:661
Definition: rig.h:638
void rig_set_debug_time_stamp(int flag)
Enable or disable the time stamp on debugging output.
Definition: debug.c:184
Rig state containing live data and customized fields.
Definition: rig.h:2309
vfo_t rx_vfo
Definition: rig.h:2396
Definition: rig.h:579
int rig_need_debug(enum rig_debug_level_e debug_level)
Test if a given debug level is active.
Definition: debug.c:170
shortfreq_t rit
Definition: rig.h:1418
int hold_decode
Definition: rig.h:2355
Definition: rig.h:663
Definition: rig.h:769
Definition: rig.h:138
int transceive
Definition: rig.h:2362
int rig_set_mode_callback(RIG *rig, mode_cb_t cb, rig_ptr_t arg)
set the callback for mode events
Definition: event.c:577
time_t twiddle_time
Definition: rig.h:2376
Definition: rig.h:637
Definition: rig.h:179
Definition: rig.h:690
struct rig_caps * caps
Definition: rig.h:2467
Definition: rig.h:622
freq_range_t rx_range_list[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2320
Definition: rig.h:1009
ann_t
Announce.
Definition: rig.h:763
int rig_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)
get the current repeater shift
Definition: rig.c:3737
multicast_item_e
Multicast data items 3 different data item can be included in the multicast JSON. ...
Definition: rig.h:1016
int rig_cleanup(RIG *rig)
release a rig handle and free associated memory
Definition: rig.c:1307
RIG * rig_init(rig_model_t rig_model)
allocate a new RIG handle
Definition: rig.c:398
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
Definition: rig.h:725
pbwidth_t rig_passband_normal(RIG *rig, rmode_t mode)
get the normal passband of a mode
Definition: rig.c:2598
Definition: rig.h:147
Definition: rig.h:301
setting_t rig_parse_parm(const char *s)
Convert alpha string to RIG_PARM_...
Definition: misc.c:1126
unsigned xit
Definition: rig.h:1461
int rig_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
set the repeater shift
Definition: rig.c:3666
Definition: rig.h:243
Definition: rig.h:349
#define RIG_SETTING_MAX
Maximum # of rig settings.
Definition: rig.h:1042
unsigned int ant_t
Antenna typedef.
Definition: rig.h:820
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:1397
char * label
Definition: rig.h:1291
setting_t rig_parse_level(const char *s)
Convert alpha string to enum RIG_LEVEL_...
Definition: misc.c:927
int rig_set_twiddle(RIG *rig, int seconds)
timeout (secs) to stop rigctld when VFO is manually changed
Definition: rig.c:1351
const char * name
Definition: rig.h:740
int scan_group
Definition: rig.h:1426
rig_ptr_t mode_arg
Definition: rig.h:2442
int rig_set_parm(RIG *rig, setting_t parm, value_t val)
set a radio parameter
Definition: settings.c:228
Definition: rig.h:247
reset_t
Reset operation.
Definition: rig.h:633
int rig_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs)
get the current repeater offset
Definition: rig.c:3883
int rig_send_voice_mem(RIG *rig, vfo_t vfo, int ch)
send voice memory content
Definition: rig.c:6623
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
Definition: rig.h:150
int rig_get_vfo_info(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode, pbwidth_t *width, split_t *split, int *satmode)
get freq/mode/width for requested VFO
Definition: rig.c:6924
int rig_set_spectrum_callback(RIG *rig, spectrum_cb_t cb, rig_ptr_t arg)
set the callback for spectrum line reception events
Definition: event.c:729
Definition: rig.h:264
uint64_t rig_level_e
Rig Level Settings.
Definition: rig.h:897
rig_errcode_e
Hamlib error codes Error code definition that can be returned by the Hamlib functions. Unless stated otherwise, Hamlib functions return the negative value of rig_errcode_e definitions in case of error, or 0 when successful.
Definition: rig.h:132
Definition: rig.h:987
token_t token
Definition: rig.h:739
Rig cache data.
Definition: rig.h:2224
int rig_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
Definition: rig.c:2456
int rig_get_vfo_list(RIG *rig, char *buf, int buflen)
get list of available vfos
Definition: rig.c:6991
rig_conf_e
parameter types
Definition: rig.h:721
Definition: rig.h:664
rmode_t mode_list
Definition: rig.h:2369
enum rig_port_e rig_port_t
Port type.
setting_t levels
Definition: rig.h:1463
rmode_t tx_mode
Definition: rig.h:1409
int rig_set_ptt_callback(RIG *rig, ptt_cb_t cb, rig_ptr_t arg)
set the callback for ptt events
Definition: event.c:637
int rig_set_dcs_sql(RIG *rig, vfo_t vfo, tone_t code)
set the current DCS code
Definition: tones.c:491
unsigned ctcss_tone
Definition: rig.h:1464
ptt_type_t
PTT type.
Definition: rig.h:605
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:4717
Definition: rig.h:724
setting_t funcs
Definition: rig.h:1420
int rig_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option)
set the antenna
Definition: rig.c:5519
Definition: rig.h:286
int rig_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length)
receive DTMF digits
Definition: rig.c:6308
Calibration table struct.
Definition: rig.h:1565
Definition: rig.h:767
Definition: rig.h:133
serial_parity_e
Serial parity.
Definition: rig.h:261
const char * hamlib_copyright2
Hamlib copyright notice.
Definition: rig.c:103
int vfo_opt
Definition: rig.h:2381
int rig_get_parm(RIG *rig, setting_t parm, value_t *val)
get the value of a parameter
Definition: settings.c:262
freq_t low_edge_freq
Definition: rig.h:1681
int id
Definition: rig.h:1669
Definition: rig.h:659
int size
Definition: rig.h:1596
freq_t high_edge_freq
Definition: rig.h:1682
gran_t parm_gran[64]
Definition: rig.h:2348
tone_t ctcss_tone
Definition: rig.h:1422
value_t val
Definition: rig.h:1384
int rig_get_chan_all(RIG *rig, vfo_t vfo, channel_t chans[])
get all channel data
Definition: mem.c:1213
setting_t has_get_level
Definition: rig.h:2342
Definition: rig.h:142
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:4933
Definition: rig.h:304
int rig_get_ctcss_sql(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS squelch
Definition: tones.c:429
shortfreq_t ts
Definition: rig.h:1317
Definition: rig.h:764
const char * rig_strrmode(rmode_t mode)
Convert enum RIG_MODE to alpha string.
Definition: misc.c:501
hamlib_port_t rigport
Definition: rig.h:2313
int auto_disable_screensaver
Definition: rig.h:2386
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:4599
unsigned tx_mode
Definition: rig.h:1452
int rig_get_powerstat(RIG *rig, powerstat_t *status)
get the on/off status of the radio
Definition: rig.c:5880
pbwidth_t width
Definition: rig.h:1352
freq_t span_freq
Definition: rig.h:1679
int rig_set_split_vfo(RIG *rig, vfo_t rx_vfo, split_t split, vfo_t tx_vfo)
set the split mode
Definition: rig.c:4777
enum rig_spectrum_mode_e spectrum_mode
Definition: rig.h:1676
int rig_get_trn(RIG *rig, int *trn)
get the current transceive mode
Definition: event.c:907
unsigned int flags
Definition: rig.h:1427
freq_t lo_freq
Definition: rig.h:2375
unsigned rptr_shift
Definition: rig.h:1457
int rig_stop_morse(RIG *rig, vfo_t vfo)
stop morse code
Definition: rig.c:6455
int rig_get_twiddle(RIG *rig, int *seconds)
get the twiddle timeout value (secs)
Definition: rig.c:1402
int rig_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS sub-tone frequency
Definition: tones.c:167
ant_t ant
Definition: rig.h:1403
Definition: rig.h:691
const char * rig_strvfop(vfo_op_t op)
Convert enum RIG_OP_... to alpha string.
Definition: misc.c:1325
const char * combostr[RIG_COMBO_MAX]
Definition: rig.h:752
split_t
Split mode.
Definition: rig.h:357
int rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
set the frequency of the target VFO
Definition: rig.c:1878
chan_type_t type
Definition: rig.h:1518
Definition: rig.h:766
int rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq)
get the current split frequencies
Definition: rig.c:4122
Definition: rig.h:144
Callback functions and args for rig event.
Definition: rig.h:2438
const char * tooltip
Definition: rig.h:742
Definition: rig.h:242
Definition: rig.h:666
Definition: rig.h:595
Definition: rig.h:671
int rig_mem_count(RIG *rig)
get memory channel count
Definition: mem.c:1656
Memory channel list definition.
Definition: rig.h:1515
Definition: rig.h:244
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:2344
cookie_e
Rig Cookie enumerations.
Definition: rig.h:1006
unsigned ctcss_sql
Definition: rig.h:1465
Definition: rig.h:992
level/parm granularity definition
Definition: rig.h:1550
Definition: rig.h:262
rig_model_t rig_probe(hamlib_port_t *port)
try to guess a rig
Definition: rig.c:5965
shortfreq_t rptr_offs
Definition: rig.h:1416
unsigned freq
Definition: rig.h:1447
ptt_t
PTT status.
Definition: rig.h:592
int data_level_max
Definition: rig.h:1672
float min
Definition: rig.h:747
char channel_desc[HAMLIB_MAXCHANDESC]
Definition: rig.h:1428
int rig_close(RIG *rig)
close the communication to the rig
Definition: rig.c:1129
struct cal_table_float::@4 table[HAMLIB_MAX_CAL_LENGTH]
int deprecated_itu_region
Definition: rig.h:2319
int bank_num
Definition: rig.h:1401
Definition: rig.h:989
int power_min
Definition: rig.h:2391
Definition: rig.h:990
unsigned tx_freq
Definition: rig.h:1451
rmode_t modes
Definition: rig.h:1351
unsigned dcs_code
Definition: rig.h:1466
struct freq_range_list freq_range_t
Frequency range.
Definition: rig.h:263
Definition: rig.h:180
dcd_e
DCD status.
Definition: rig.h:565
Definition: rig.h:582
rig_type_t
Rig type flags.
Definition: rig.h:293
rmode_t rig_parse_mode(const char *s)
Convert alpha string to enum RIG_MODE.
Definition: misc.c:475
Definition: rig.h:668
unsigned int vfo_t
VFO definition.
Definition: rig.h:428
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
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
token_t rig_token_lookup(RIG *rig, const char *name)
lookup a token id
Definition: conf.c:1144
unsigned width
Definition: rig.h:1449
ptt_cb_t ptt_event
Definition: rig.h:2445
Definition: rig.h:1492
Definition: rig.h:577
rptr_shift_t rig_parse_rptr_shift(const char *s)
Convert alpha char to enum RIG_RPT_SHIFT_...
Definition: misc.c:1449
Definition: rig.h:667
struct confparams::@0::@1 n
Definition: rig.h:612
enum rig_conf_e type
Definition: rig.h:744
Definition: rig.h:178
vfo_t vfo
Definition: rig.h:1289
Definition: rig.h:141
int preamp[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2337
Definition: rig.h:1642
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:1531
int rig_get_dcs_code(RIG *rig, vfo_t vfo, tone_t *code)
get the current encoding DCS code
Definition: tones.c:292
const char * rig_strmtype(chan_type_t mtype)
Convert enum RIG_MTYPE_... to alpha string.
Definition: misc.c:1517
int rig_get_channel(RIG *rig, vfo_t vfox, channel_t *chan, int read_only)
get channel data
Definition: mem.c:832
int data_level_min
Definition: rig.h:1671
freq_t tx_freq
Definition: rig.h:1408
vfo_t tx_vfo
Definition: rig.h:1413
mode_cb_t mode_event
Definition: rig.h:2441
vprintf_cb_t rig_set_debug_callback(vprintf_cb_t cb, rig_ptr_t arg)
Set callback to handle debugging messages.
Definition: debug.c:310
rig_ptr_t freq_arg
Definition: rig.h:2440
Definition: rig.h:669
int endc
Definition: rig.h:1517
Definition: rig.h:276
Definition: rig.h:609
Definition: rig.h:140
tone_t dcs_sql
Definition: rig.h:1425
Definition: rig.h:1494
int rig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
set a radio level setting
Definition: settings.c:71
uint64_t setting_t
Setting.
Definition: rig.h:1036
int twiddle_state
Definition: rig.h:2395
int twiddle_timeout
Definition: rig.h:2377
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
cal_table_t str_cal
Definition: rig.h:2327
dcd_cb_t dcd_event
Definition: rig.h:2447
Definition: rig.h:768
rig_ptr_t vfo_arg
Definition: rig.h:2444
Definition: rig.h:687
Definition: rig.h:688
rig_ptr_t obj
Definition: rig.h:2360
Definition: rig.h:726
unsigned ext_levels
Definition: rig.h:1471
split_t split
Definition: rig.h:1412
Definition: rig.h:328
unsigned char * spectrum_data
Definition: rig.h:1685
int spectrum_data_length
Definition: rig.h:1684
enum dcd_e dcd_t
DCD status.
Definition: rig.h:135
int rig_cookie(RIG *rig, enum cookie_e cookie_cmd, char *cookie, int cookie_len)
get a cookie to grab rig control
Definition: rig.c:7104
serial_control_state_e
Serial control state.
Definition: rig.h:283
int rig_get_clock(RIG *rig, int *year, int *month, int *day, int *hour, int *min, int *sec, double *msec, int *utc_offset)
get the rig&#39;s clock
Definition: rig.c:7025
unsigned char disable_yaesu_bandselect
Definition: rig.h:2393
Definition: rig.h:350
pbwidth_t rig_passband_narrow(RIG *rig, rmode_t mode)
get the narrow passband of a mode
Definition: rig.c:2648
int rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op)
perform Memory/VFO operations
Definition: rig.c:6057
shortfreq_t max_xit
Definition: rig.h:2332
Definition: rig.h:662
Definition: rig.h:284
Definition: rig.h:298
Definition: rig.h:625
value_t max
Definition: rig.h:1552
unsigned scan_group
Definition: rig.h:1468
int rig_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts)
get the current Tuning Step
Definition: rig.c:5438
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:1034
Definition: rig.h:623
Definition: rig.h:635
int rig_set_powerstat(RIG *rig, powerstat_t status)
turn on/off the radio
Definition: rig.c:5843
Definition: rig.h:275
Configuration parameter structure.
Definition: rig.h:738
uint64_t rmode_t
Radio mode.
Definition: rig.h:1191
tone_t ctcss_sql
Definition: rig.h:1423
int rig_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts)
set the Tuning Step
Definition: rig.c:5367
Definition: rig.h:585
Definition: rig.h:241
Definition: rig.h:254
int rig_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs)
set the repeater offset
Definition: rig.c:3813
Definition: rig.h:684
Definition: rig.h:266
const char * label
Definition: rig.h:741
int val
Definition: rig.h:1569
int rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit)
set the RIT
Definition: rig.c:5071
Definition: rig.h:606
union confparams::@0 u
ant_t ant
Definition: rig.h:1290
int rig_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS sub-tone frequency
Definition: tones.c:100
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_port_e
Port type.
Definition: rig.h:240
int rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq)
set the split frequencies
Definition: rig.c:3958
Definition: rig.h:245
Definition: rig.h:181
hamlib_port_t dcdport
Definition: rig.h:2315
channel_cap_t mem_caps
Definition: rig.h:1520
int rig_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit)
get the current RIT offset
Definition: rig.c:5142
Definition: rig.h:580
rig_ptr_t priv
Definition: rig.h:2359
Definition: rig.h:1641
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
int comm_state
Definition: rig.h:2358
const char * rig_get_info(RIG *rig)
get general information from the radio
Definition: rig.c:6761
Definition: rig.h:1491
float max
Definition: rig.h:748
int rig_get_vfo(RIG *rig, vfo_t *vfo)
get the current VFO
Definition: rig.c:2897
Represents a single line of rig spectrum scope FFT data.
Definition: rig.h:1667
vfo_op_t rig_parse_vfo_op(const char *s)
Convert alpha string to enum RIG_OP_...
Definition: misc.c:1300
rmode_t current_mode
Definition: rig.h:2365
unsigned dcs_sql
Definition: rig.h:1467
Definition: rig.h:610
int attenuator[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2338
Definition: rig.h:302
rptr_shift_t rptr_shift
Definition: rig.h:1415
const char * rig_version()
get the Hamlib version
Definition: rig.c:7055
Definition: rig.h:689
double vfo_comp
Definition: rig.h:2317
int rig_strrmodes(rmode_t modes, char *buf, int buflen)
Convert RIG_MODE or&#39;d value to alpha string of all modes.
Definition: misc.c:533
Definition: rig.h:686