Hamlib  4.6.5
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 /* SPDX-License-Identifier: LGPL-2.1-or-later */
23 
24 #ifndef _RIG_H
25 #define _RIG_H 1
26 
27 // as of 2023-11-23 rig_caps is no longer constant
28 // this #define allows clients to test which declaration to use for backwards compatibility
29 // As of 2025-01-03 removing this -- fldigi was the only one that got it right
30 // riglist_foreach is now constant again but others are not
31 // #define RIGCAPS_NOT_CONST 1
32 
33 #define BUILTINFUNC 0
34 
35 // Our shared secret password
36 #define HAMLIB_SECRET_LENGTH 32
37 
38 #define HAMLIB_TRACE rig_debug(RIG_DEBUG_TRACE,"%s%s(%d) trace\n",spaces(STATE(rig)->depth), __FILE__, __LINE__)
39 #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
40 
41 #include <stdio.h>
42 #include <stdarg.h>
43 #include <string.h>
44 #include <inttypes.h>
45 #include <time.h>
46 
47 // to stop warnings about including winsock2.h before windows.h
48 #if defined(_WIN32)
49 #include <winsock2.h>
50 #include <windows.h>
51 #include <ws2tcpip.h>
52 #else
53 //#include <sys/socket.h> // doesn't seem we need this
54 #include <netinet/in.h>
55 //#include <arpa/inet.h>
56 #endif
57 
58 // mingw64 still shows __TIMESIZE != 64
59 // need to do more testing
60 #if 0
61 #if __TIMESIZE != 64
62 #warning TIMESIZE != 64 -- Please report your OS system to hamlib-developer@lists.sourceforge.net
63 #endif
64 #endif
65 
66 // For MSVC install the NUGet pthread package
67 #if defined(_MSC_VER)
68 #define HAVE_STRUCT_TIMESPEC
69 #endif
70 #include <pthread.h>
71 
72 /* Rig list is in a separate file so as not to mess up w/ this one */
73 #include <hamlib/riglist.h>
74 //#include <hamlib/config.h>
75 
89 /* __BEGIN_DECLS should be used at the beginning of your declarations,
90  * so that C++ compilers don't mangle their names. Use __END_DECLS at
91  * the end of C declarations. */
93 #undef __BEGIN_DECLS
94 #undef __END_DECLS
95 #ifdef __cplusplus
96 # define __BEGIN_DECLS extern "C" {
97 # define __END_DECLS }
98 #else
99 # define __BEGIN_DECLS /* empty */
100 # define __END_DECLS /* empty */
101 #endif
102 
104 /* HAMLIB_PARAMS is a macro used to wrap function prototypes, so that compilers
105  * that don't understand ANSI C prototypes still work, and ANSI C
106  * compilers can issue warnings about type mismatches. */
108 #undef HAMLIB_PARAMS
109 #if defined (__STDC__) \
110  || defined (_AIX) \
111  || (defined (__mips) && defined (_SYSTYPE_SVR4)) \
112  || defined(__CYGWIN__) \
113  || defined(_WIN32) \
114  || defined(__cplusplus)
115 # define HAMLIB_PARAMS(protos) protos
116 # define rig_ptr_t void *
117 # define amp_ptr_t void *
118 #else
119 # define HAMLIB_PARAMS(protos) ()
120 # define rig_ptr_t char *
121 # define amp_ptr_t char *
122 #endif
123 
125 #include <hamlib/rig_dll.h>
126 
127 #ifndef SWIGLUA
128 #define CONSTANT_64BIT_FLAG(BIT) (1ull << (BIT))
130 #else
132 /* SWIG's older Lua generator doesn't grok ull due to Lua using a
133  double-precision floating point type internally for number
134  representations (max 53 bits of precision) so makes a string
135  constant from a constant number literal using ull */
136 // #define CONSTANT_64BIT_FLAG(BIT) (1 << (BIT))
137 // #define SWIGLUAHIDE
138 /* But this appears to have been fixed so we'll use the correct one now
139  If you have the older version of SWIG comment out this line and use
140  the two above */
141 // This 1ul definition works on swig 4.0.1 and lua 5.3.5
142 #define CONSTANT_64BIT_FLAG(BIT) (1ul << (BIT))
143 #endif
144 
145 __BEGIN_DECLS
146 
147 // FIFO currently used for send_morse queue
148 #define HAMLIB_FIFO_SIZE 1024
149 
150 typedef struct
151 {
152  char data[HAMLIB_FIFO_SIZE];
153  int head;
154  int tail;
155  int flush; // flush flag for stop_morse
156 #ifdef _PTHREAD_H
157  pthread_mutex_t mutex;
158 #else
159  int mutex;
160 #endif
161 } FIFO_RIG;
162 
163 
168 // cookie is 26-char time code plus 10-char (2^31-1) random number
169 #define HAMLIB_COOKIE_SIZE 37
170 extern int cookie_use; // this is global as once one client requests it everybody needs to honor it
171 extern int skip_init; // allow rigctl to skip any radio commands at startup
172 
174 extern HAMLIB_EXPORT_VAR(const char) hamlib_version[];
175 extern HAMLIB_EXPORT_VAR(const char) hamlib_copyright[];
176 extern HAMLIB_EXPORT_VAR(const char *) hamlib_version2;
177 extern HAMLIB_EXPORT_VAR(const char *) hamlib_copyright2;
179 
191  RIG_OK = 0,
214  RIG_EEND // MUST BE LAST ITEM IN LAST
215 };
225 #define RIG_IS_SOFT_ERRCODE(errcode) (errcode == RIG_EINVAL || errcode == RIG_ENIMPL || errcode == RIG_ERJCTED \
226  || errcode == RIG_ETRUNC || errcode == RIG_ENAVAIL || errcode == RIG_ENTARGET \
227  || errcode == RIG_EVFO || errcode == RIG_EDOM || errcode == RIG_EDEPRECATED \
228  || errcode == RIG_ESECURITY || errcode == RIG_EPOWER)
229 
233 #define NETRIGCTL_RET "RPRT "
234 
235 
251 };
252 
253 
254 /* --------------- Rig capabilities -----------------*/
255 
256 /* Forward struct references */
257 
258 struct rig;
259 struct rig_state;
260 
264 typedef struct s_rig RIG;
265 
267 #define HAMLIB_RIGNAMSIZ 30
268 #define HAMLIB_RIGVERSIZ 8
269 #define HAMLIB_FILPATHLEN 512
270 #define HAMLIB_FRQRANGESIZ 30
271 #define HAMLIB_MAXCHANDESC 30 /* describe channel eg: "WWV 5Mhz" */
272 #define HAMLIB_TSLSTSIZ 20 /* max tuning step list size, zero ended */
273 #define HAMLIB_FLTLSTSIZ 60 /* max mode/filter list size, zero ended */
274 #define HAMLIB_MAXDBLSTSIZ 8 /* max preamp/att levels supported, zero ended */
275 #define HAMLIB_CHANLSTSIZ 16 /* max mem_list size, zero ended */
276 #define HAMLIB_MAX_AGC_LEVELS 8 /* max AGC levels supported */
277 #define HAMLIB_MAX_SPECTRUM_SCOPES 4 /* max number of spectrum scopes supported */
278 #define HAMLIB_MAX_SPECTRUM_MODES 5 /* max number of spectrum modes supported */
279 #define HAMLIB_MAX_SPECTRUM_AVG_MODES 12 /* max number of spectrum averaging modes supported */
280 #define HAMLIB_MAX_SPECTRUM_SPANS 20 /* max number of spectrum modes supported */
281 #define HAMLIB_MAX_SPECTRUM_DATA 2048 /* max number of data bytes in a single spectrum line */
282 #define HAMLIB_MAX_CAL_LENGTH 32 /* max calibration plots in cal_table_t */
283 #define HAMLIB_MAX_MODES 63
284 #define HAMLIB_MAX_VFOS 31
285 #define HAMLIB_MAX_ROTORS 63
286 #define HAMLIB_MAX_VFO_OPS 31
287 #define HAMLIB_MAX_RSCANS 31
288 #define HAMLIB_MAX_SNAPSHOT_PACKET_SIZE 16384 /* maximum number of bytes in a UDP snapshot packet */
289 
291 
302 typedef unsigned int tone_t;
303 #define CTCSS_LIST_SIZE 60
304 #define DCS_LIST_SIZE 128
305 
306 
312 typedef enum rig_port_e {
327 } rig_port_t;
328 
329 
339 };
340 
341 
349 };
350 
351 
359 };
360 
361 
365 typedef enum {
366  RIG_FLAG_RECEIVER = (1 << 1),
367  RIG_FLAG_TRANSMITTER = (1 << 2),
368  RIG_FLAG_SCANNER = (1 << 3),
369  RIG_FLAG_MOBILE = (1 << 4),
370  RIG_FLAG_HANDHELD = (1 << 5),
371  RIG_FLAG_COMPUTER = (1 << 6),
372  RIG_FLAG_TRUNKING = (1 << 7),
373  RIG_FLAG_APRS = (1 << 8),
374  RIG_FLAG_TNC = (1 << 9),
375  RIG_FLAG_DXCLUSTER = (1 << 10),
376  RIG_FLAG_TUNER = (1 << 11)
377 } rig_type_t;
378 
382 /* TODO: kill me, and replace by real AGC delay */
384  RIG_AGC_OFF = 0,
385  RIG_AGC_SUPERFAST,
386  RIG_AGC_FAST,
387  RIG_AGC_SLOW,
389  RIG_AGC_MEDIUM,
390  RIG_AGC_AUTO,
391  RIG_AGC_LONG,
394 };
395 
396 
398 #define RIG_FLAG_TRANSCEIVER (RIG_FLAG_RECEIVER|RIG_FLAG_TRANSMITTER)
399 #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)
400 
401 #define RIG_TYPE_OTHER 0
402 #define RIG_TYPE_TRANSCEIVER RIG_FLAG_TRANSCEIVER
403 #define RIG_TYPE_HANDHELD (RIG_FLAG_TRANSCEIVER|RIG_FLAG_HANDHELD)
404 #define RIG_TYPE_MOBILE (RIG_FLAG_TRANSCEIVER|RIG_FLAG_MOBILE)
405 #define RIG_TYPE_RECEIVER RIG_FLAG_RECEIVER
406 #define RIG_TYPE_PCRECEIVER (RIG_FLAG_COMPUTER|RIG_FLAG_RECEIVER)
407 #define RIG_TYPE_SCANNER (RIG_FLAG_SCANNER|RIG_FLAG_RECEIVER)
408 #define RIG_TYPE_TRUNKSCANNER (RIG_TYPE_SCANNER|RIG_FLAG_TRUNKING)
409 #define RIG_TYPE_COMPUTER (RIG_FLAG_TRANSCEIVER|RIG_FLAG_COMPUTER)
410 #define RIG_TYPE_TUNER RIG_FLAG_TUNER
411 
413 
423  /* RIG_STATUS_NEW * *!< Initial release of code
424  * !! Use of RIG_STATUS_NEW is deprecated. Do not use it anymore */
425 };
426 
431 #define RIG_STATUS_NEW RIG_STATUS_UNTESTED
432 
433 
437 typedef enum {
441 } rptr_shift_t;
442 
443 
447 typedef enum {
450 } split_t;
451 
452 
458 typedef double freq_t;
459 
463 #define PRIfreq ".0f"
464 
468 #define SCNfreq "lf"
469 
472 #define FREQFMT SCNfreq
473 
474 
480 typedef signed long shortfreq_t;
481 
483 #define Hz(f) ((freq_t)(f))
484 
485 #define kHz(f) ((freq_t)((f)*(freq_t)1000))
486 
487 #define MHz(f) ((freq_t)((f)*(freq_t)1000000))
488 
489 #define GHz(f) ((freq_t)((f)*(freq_t)1000000000))
490 
492 #define s_Hz(f) ((shortfreq_t)(f))
493 
494 #define s_kHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000))
495 
496 #define s_MHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000))
497 
498 #define s_GHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000000))
499 
501 #define RIG_FREQ_NONE Hz(0)
502 
503 
518 typedef unsigned int vfo_t;
519 
522 #define RIG_VFO_N(n) (1u<<(n))
523 
525 #define RIG_VFO_NONE 0
526 
528 #define RIG_VFO_A RIG_VFO_N(0)
529 
531 #define RIG_VFO_B RIG_VFO_N(1)
532 
534 #define RIG_VFO_C RIG_VFO_N(2)
535 
536 // Any addition VFOS need to go from 3-20
537 // To maintain backward compatibility these values cannot change
538 
540 #define RIG_VFO_SUB_A RIG_VFO_N(21)
541 
543 #define RIG_VFO_SUB_B RIG_VFO_N(22)
544 
546 #define RIG_VFO_SUB_C RIG_VFO_N(3)
547 
549 #define RIG_VFO_MAIN_A RIG_VFO_N(23)
550 
552 #define RIG_VFO_MAIN_B RIG_VFO_N(24)
553 
555 #define RIG_VFO_MAIN_C RIG_VFO_N(4)
556 
558 #define RIG_VFO_OTHER RIG_VFO_N(5)
559 
561 #define RIG_VFO_SUB RIG_VFO_N(25)
562 
564 #define RIG_VFO_MAIN RIG_VFO_N(26)
565 
567 #define RIG_VFO_VFO RIG_VFO_N(27)
568 
570 #define RIG_VFO_MEM RIG_VFO_N(28)
571 
573 #define RIG_VFO_CURR RIG_VFO_N(29)
574 
576 #define RIG_VFO_TX_FLAG RIG_VFO_N(30)
577 
579 #define RIG_VFO_ALL RIG_VFO_N(31)
580 
581 // we can also use RIG_VFO_N(31) if needed
582 
583 // Misc VFO Macros
584 
586 #define RIG_VFO_TX_VFO(v) ((v)|RIG_VFO_TX_FLAG)
587 
589 #define RIG_VFO_TX RIG_VFO_TX_VFO(RIG_VFO_CURR)
590 
592 #define RIG_VFO_RX RIG_VFO_CURR
593 
594 
595 /*
596  * targetable bitfields, for internal use.
597  * In rig.c lack of a flag will case a VFO change if needed
598  * So setting this flag will mean the backend handles any VFO needs
599  * For many rigs RITXIT, PTT, MEM, and BANK are non-VFO commands so need these flags to avoid unnecessary VFO swapping
600  */
602 #define RIG_TARGETABLE_NONE 0
603 #define RIG_TARGETABLE_FREQ (1<<0)
604 #define RIG_TARGETABLE_MODE (1<<1) // mode by vfo or same mode on both vfos
605 #define RIG_TARGETABLE_PURE (1<<2) // deprecated -- not used -- reuse it
606 #define RIG_TARGETABLE_TONE (1<<3)
607 #define RIG_TARGETABLE_FUNC (1<<4)
608 #define RIG_TARGETABLE_LEVEL (1<<5)
609 #define RIG_TARGETABLE_RITXIT (1<<6)
610 #define RIG_TARGETABLE_PTT (1<<7)
611 #define RIG_TARGETABLE_MEM (1<<8)
612 #define RIG_TARGETABLE_BANK (1<<9)
613 #define RIG_TARGETABLE_ANT (1<<10)
614 #define RIG_TARGETABLE_ROOFING (1<<11) // roofing filter targetable by VFO
615 #define RIG_TARGETABLE_SPECTRUM (1<<12) // spectrum scope targetable by VFO
616 #define RIG_TARGETABLE_BAND (1<<13) // Band select -- e.g. Yaesu BS command
617 #define RIG_TARGETABLE_COMMON (RIG_TARGETABLE_RITXIT | RIG_TARGETABLE_PTT | RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK)
618 #define RIG_TARGETABLE_ALL 0x7fffffff
619 //
621 //
622 // Newer Icoms like the 9700 and 910 have VFOA/B on both Main & Sub
623 // Compared to older rigs which have one or the other
624 // So we need to distinguish between them
626 #define VFO_HAS_A_B ((STATE(rig)->vfo_list & (RIG_VFO_A|RIG_VFO_B)) == (RIG_VFO_A|RIG_VFO_B))
627 #define VFO_HAS_MAIN_SUB ((STATE(rig)->vfo_list & (RIG_VFO_MAIN|RIG_VFO_SUB)) == (RIG_VFO_MAIN|RIG_VFO_SUB))
628 #define VFO_HAS_MAIN_SUB_ONLY ((!VFO_HAS_A_B) & VFO_HAS_MAIN_SUB)
629 #define VFO_HAS_MAIN_SUB_A_B_ONLY (VFO_HAS_A_B & VFO_HAS_MAIN_SUB)
630 #define VFO_HAS_A_B_ONLY (VFO_HAS_A_B & (!VFO_HAS_MAIN_SUB))
631 #define VFO_DUAL (RIG_VFO_MAIN_A|RIG_VFO_MAIN_B|RIG_VFO_SUB_A|RIG_VFO_SUB_B)
632 #define VFO_HAS_DUAL ((STATE(rig)->vfo_list & VFO_DUAL) == VFO_DUAL)
633 
639 #define RIG_PASSBAND_NORMAL s_Hz(0)
640 
644 #define RIG_PASSBAND_NOCHANGE s_Hz(-1)
645 
650 typedef shortfreq_t pbwidth_t;
651 
652 typedef float agc_time_t;
653 
654 typedef enum dcd_e {
657 } dcd_t;
658 
659 
665 typedef enum {
675 } dcd_type_t;
676 
677 
681 typedef enum {
686 } ptt_t;
687 
688 
694 typedef enum {
704 } ptt_type_t;
705 
706 
710 typedef enum {
712  RIG_POWER_ON = (1 << 0),
713  RIG_POWER_STANDBY = (1 << 1),
714  RIG_POWER_OPERATE = (1 << 2),
715  RIG_POWER_UNKNOWN = (1 << 3)
716 } powerstat_t;
717 
718 
722 typedef enum {
724  RIG_RESET_SOFT = (1 << 0),
725  RIG_RESET_VFO = (1 << 1),
726  RIG_RESET_MCALL = (1 << 2),
727  RIG_RESET_MASTER = (1 << 3)
728 } reset_t;
729 
730 typedef enum {
731  RIG_CLIENT_UNKNOWN,
732  RIG_CLIENT_WSJTX,
733  RIG_CLIENT_GPREDICT
734 } client_t;
735 
736 
752 typedef enum {
754  RIG_OP_CPY = (1 << 0),
755  RIG_OP_XCHG = (1 << 1),
756  RIG_OP_FROM_VFO = (1 << 2),
757  RIG_OP_TO_VFO = (1 << 3),
758  RIG_OP_MCL = (1 << 4),
759  RIG_OP_UP = (1 << 5),
760  RIG_OP_DOWN = (1 << 6),
761  RIG_OP_BAND_UP = (1 << 7),
762  RIG_OP_BAND_DOWN = (1 << 8),
763  RIG_OP_LEFT = (1 << 9),
764  RIG_OP_RIGHT = (1 << 10),
765  RIG_OP_TUNE = (1 << 11),
766  RIG_OP_TOGGLE = (1 << 12)
767 } vfo_op_t;
768 
776 typedef enum { // numbers here reflect the Yaesu values
787  RIG_BAND_6M = 10,
789  RIG_BAND_MW = 12,
794 } hamlib_band_t;
795 
796 typedef enum { // numbers here reflect generic values -- need to map to rig values
797  RIG_BANDSELECT_UNUSED = CONSTANT_64BIT_FLAG(0),
798  RIG_BANDSELECT_2200M = CONSTANT_64BIT_FLAG(1),
799  RIG_BANDSELECT_600M = CONSTANT_64BIT_FLAG(2),
800  RIG_BANDSELECT_160M = CONSTANT_64BIT_FLAG(3),
801  RIG_BANDSELECT_80M = CONSTANT_64BIT_FLAG(4),
802  RIG_BANDSELECT_60M = CONSTANT_64BIT_FLAG(5),
803  RIG_BANDSELECT_40M = CONSTANT_64BIT_FLAG(6),
804  RIG_BANDSELECT_30M = CONSTANT_64BIT_FLAG(7),
805  RIG_BANDSELECT_20M = CONSTANT_64BIT_FLAG(8),
806  RIG_BANDSELECT_17M = CONSTANT_64BIT_FLAG(9),
807  RIG_BANDSELECT_15M = CONSTANT_64BIT_FLAG(10),
808  RIG_BANDSELECT_12M = CONSTANT_64BIT_FLAG(11),
809  RIG_BANDSELECT_10M = CONSTANT_64BIT_FLAG(12),
810  RIG_BANDSELECT_6M = CONSTANT_64BIT_FLAG(13),
811  RIG_BANDSELECT_WFM = CONSTANT_64BIT_FLAG(14),
812  RIG_BANDSELECT_GEN = CONSTANT_64BIT_FLAG(15),
813  RIG_BANDSELECT_MW = CONSTANT_64BIT_FLAG(16),
814  RIG_BANDSELECT_AIR = CONSTANT_64BIT_FLAG(17),
815  RIG_BANDSELECT_4M = CONSTANT_64BIT_FLAG(18),
816  RIG_BANDSELECT_2M = CONSTANT_64BIT_FLAG(19),
817  RIG_BANDSELECT_1_25M = CONSTANT_64BIT_FLAG(20),
818  RIG_BANDSELECT_70CM = CONSTANT_64BIT_FLAG(21),
819  RIG_BANDSELECT_33CM = CONSTANT_64BIT_FLAG(22),
820  RIG_BANDSELECT_23CM = CONSTANT_64BIT_FLAG(23),
821  RIG_BANDSELECT_13CM = CONSTANT_64BIT_FLAG(24),
822  RIG_BANDSELECT_9CM = CONSTANT_64BIT_FLAG(25),
823  RIG_BANDSELECT_5CM = CONSTANT_64BIT_FLAG(26),
824  RIG_BANDSELECT_3CM = CONSTANT_64BIT_FLAG(27),
826 
827 
828 #define RIG_BANDSELECT_ALL
829 #define RIG_BANDSELECT_LF (RIG_BANDSELECT_2200M | RIG_BANDSELECT_600M)
830 #define RIG_BANDSELECT_HF (RIG_BANDSELECT_160M | RIG_BANDSELECT_80M | RIG_BANDSELECT_60M | RIG_BANDSELECT_40M\
831 | RIG_BANDSELECT_30M | RIG_BANDSELECT_20M | RIG_BANDSELECT_17M | RIG_BANDSELECT_15M | RIG_BANDSELECT_12M\
832 | RIG_BANDSELECT_10M | RIG_BANDSELECT_6M)
833 #define RIG_BANDSELECT_VHF (RIG_BANDSELECT_AIR | RIG_BANDSELECT_2M| RIG_BANDSELECT_1_25M(
834 #define RIG_BANDSELECT_UHF (RIG_BANDSELECT_70CM)
835 
836 
845 typedef enum {
847  RIG_SCAN_MEM = (1 << 0),
848  RIG_SCAN_SLCT = (1 << 1),
849  RIG_SCAN_PRIO = (1 << 2),
850  RIG_SCAN_PROG = (1 << 3),
851  RIG_SCAN_DELTA = (1 << 4),
852  RIG_SCAN_VFO = (1 << 5),
853  RIG_SCAN_PLT = (1 << 6),
854  RIG_SCAN_STOP = (1 << 7)
855 } scan_t;
856 
857 
861 typedef long hamlib_token_t;
862 #define token_t hamlib_token_t
863 
867 #define RIG_CONF_END 0
868 
882 /* strongly inspired from soundmodem. Thanks Thomas! */
891 };
892 
894 #define RIG_COMBO_MAX 16
895 #define RIG_BIN_MAX 80
896 
901 struct confparams {
902  hamlib_token_t token;
903  const char *name;
904  const char *label;
905  const char *tooltip;
906  const char *dflt;
908  union {
909  struct {
910  float min;
911  float max;
912  float step;
913  } n;
914  struct {
915  const char *combostr[RIG_COMBO_MAX];
916  } c;
917  } u;
918 };
919 
920 
926 typedef enum {
929  RIG_ANN_FREQ = (1 << 0),
930  RIG_ANN_RXMODE = (1 << 1),
931  RIG_ANN_CW = (1 << 2),
932  RIG_ANN_ENG = (1 << 3),
933  RIG_ANN_JAP = (1 << 4)
934 } ann_t;
935 
936 
983 typedef unsigned int ant_t;
984 
985 #define RIG_ANT_NONE 0
986 #define RIG_ANT_N(n) ((ant_t)1<<(n))
987 #define RIG_ANT_1 RIG_ANT_N(0)
988 #define RIG_ANT_2 RIG_ANT_N(1)
989 #define RIG_ANT_3 RIG_ANT_N(2)
990 #define RIG_ANT_4 RIG_ANT_N(3)
991 #define RIG_ANT_5 RIG_ANT_N(4)
992 
993 #define RIG_ANT_UNKNOWN RIG_ANT_N(30)
994 #define RIG_ANT_CURR RIG_ANT_N(31)
995 
996 #define RIG_ANT_MAX 32
997 
998 
1000 #define RIG_AGC_LAST 99999
1001 
1003 #if 1 // deprecated
1004 
1008  RIG_METER_NONE = 0, /*< No display meter */
1009  RIG_METER_SWR = (1 << 0), /*< Stationary Wave Ratio */
1010  RIG_METER_COMP = (1 << 1), /*< Compression level */
1011  RIG_METER_ALC = (1 << 2), /*< ALC */
1012  RIG_METER_IC = (1 << 3), /*< IC */
1013  RIG_METER_DB = (1 << 4), /*< DB */
1014  RIG_METER_PO = (1 << 5), /*< Power Out */
1015  RIG_METER_VDD = (1 << 6), /*< Final Amp Voltage */
1016  RIG_METER_TEMP = (1 << 7) /*< Final Amp Temperature */
1017 };
1018 #endif
1019 
1020 
1026 typedef union {
1027  signed int i;
1028  unsigned int u;
1029  float f;
1030  char *s;
1031  const char *cs;
1032  struct {
1034  int l;
1035  unsigned char *d; /* Pointer to data buffer */
1036  } b;
1038 } value_t;
1039 
1040 
1049 typedef uint64_t rig_level_e;
1050 #define RIG_LEVEL_NONE 0
1051 #define RIG_LEVEL_PREAMP CONSTANT_64BIT_FLAG(0)
1052 #define RIG_LEVEL_ATT CONSTANT_64BIT_FLAG(1)
1053 #define RIG_LEVEL_VOXDELAY CONSTANT_64BIT_FLAG(2)
1054 #define RIG_LEVEL_AF CONSTANT_64BIT_FLAG(3)
1055 #define RIG_LEVEL_RF CONSTANT_64BIT_FLAG(4)
1056 #define RIG_LEVEL_SQL CONSTANT_64BIT_FLAG(5)
1057 #define RIG_LEVEL_IF CONSTANT_64BIT_FLAG(6)
1058 #define RIG_LEVEL_APF CONSTANT_64BIT_FLAG(7)
1059 #define RIG_LEVEL_NR CONSTANT_64BIT_FLAG(8)
1060 #define RIG_LEVEL_PBT_IN CONSTANT_64BIT_FLAG(9)
1061 #define RIG_LEVEL_PBT_OUT CONSTANT_64BIT_FLAG(10)
1062 #define RIG_LEVEL_CWPITCH CONSTANT_64BIT_FLAG(11)
1063 #define RIG_LEVEL_RFPOWER CONSTANT_64BIT_FLAG(12)
1064 #define RIG_LEVEL_MICGAIN CONSTANT_64BIT_FLAG(13)
1065 #define RIG_LEVEL_KEYSPD CONSTANT_64BIT_FLAG(14)
1066 #define RIG_LEVEL_NOTCHF CONSTANT_64BIT_FLAG(15)
1067 #define RIG_LEVEL_COMP CONSTANT_64BIT_FLAG(16)
1068 #define RIG_LEVEL_AGC CONSTANT_64BIT_FLAG(17)
1069 #define RIG_LEVEL_BKINDL CONSTANT_64BIT_FLAG(18)
1070 #define RIG_LEVEL_BALANCE CONSTANT_64BIT_FLAG(19)
1071 #define RIG_LEVEL_METER CONSTANT_64BIT_FLAG(20)
1072 #define RIG_LEVEL_VOXGAIN CONSTANT_64BIT_FLAG(21)
1073 #define RIG_LEVEL_ANTIVOX CONSTANT_64BIT_FLAG(22)
1074 #define RIG_LEVEL_SLOPE_LOW CONSTANT_64BIT_FLAG(23)
1075 #define RIG_LEVEL_SLOPE_HIGH CONSTANT_64BIT_FLAG(24)
1076 #define RIG_LEVEL_BKIN_DLYMS CONSTANT_64BIT_FLAG(25)
1079 #define RIG_LEVEL_RAWSTR CONSTANT_64BIT_FLAG(26)
1080 //#define RIG_LEVEL_SQLSTAT CONSTANT_64BIT_FLAG(27)
1081 #define RIG_LEVEL_SWR CONSTANT_64BIT_FLAG(28)
1082 #define RIG_LEVEL_ALC CONSTANT_64BIT_FLAG(29)
1083 #define RIG_LEVEL_STRENGTH CONSTANT_64BIT_FLAG(30)
1084  /* RIG_LEVEL_BWC (1<<31) */
1085 #define RIG_LEVEL_RFPOWER_METER CONSTANT_64BIT_FLAG(32)
1086 #define RIG_LEVEL_COMP_METER CONSTANT_64BIT_FLAG(33)
1087 #define RIG_LEVEL_VD_METER CONSTANT_64BIT_FLAG(34)
1088 #define RIG_LEVEL_ID_METER CONSTANT_64BIT_FLAG(35)
1090 #define RIG_LEVEL_NOTCHF_RAW CONSTANT_64BIT_FLAG(36)
1091 #define RIG_LEVEL_MONITOR_GAIN CONSTANT_64BIT_FLAG(37)
1092 #define RIG_LEVEL_NB CONSTANT_64BIT_FLAG(38)
1093 #define RIG_LEVEL_RFPOWER_METER_WATTS CONSTANT_64BIT_FLAG(39)
1094 #define RIG_LEVEL_SPECTRUM_MODE CONSTANT_64BIT_FLAG(40)
1095 #define RIG_LEVEL_SPECTRUM_SPAN CONSTANT_64BIT_FLAG(41)
1096 #define RIG_LEVEL_SPECTRUM_EDGE_LOW CONSTANT_64BIT_FLAG(42)
1097 #define RIG_LEVEL_SPECTRUM_EDGE_HIGH CONSTANT_64BIT_FLAG(43)
1098 #define RIG_LEVEL_SPECTRUM_SPEED CONSTANT_64BIT_FLAG(44)
1099 #define RIG_LEVEL_SPECTRUM_REF CONSTANT_64BIT_FLAG(45)
1100 #define RIG_LEVEL_SPECTRUM_AVG CONSTANT_64BIT_FLAG(46)
1101 #define RIG_LEVEL_SPECTRUM_ATT CONSTANT_64BIT_FLAG(47)
1102 #define RIG_LEVEL_TEMP_METER CONSTANT_64BIT_FLAG(48)
1103 #define RIG_LEVEL_BAND_SELECT CONSTANT_64BIT_FLAG(49)
1104 #define RIG_LEVEL_USB_AF CONSTANT_64BIT_FLAG(50)
1105 #define RIG_LEVEL_USB_AF_INPUT CONSTANT_64BIT_FLAG(51)
1106 #define RIG_LEVEL_AGC_TIME CONSTANT_64BIT_FLAG(52)
1107 #define RIG_LEVEL_53 CONSTANT_64BIT_FLAG(53)
1108 #define RIG_LEVEL_54 CONSTANT_64BIT_FLAG(54)
1109 #define RIG_LEVEL_55 CONSTANT_64BIT_FLAG(55)
1110 #define RIG_LEVEL_56 CONSTANT_64BIT_FLAG(56)
1111 #define RIG_LEVEL_57 CONSTANT_64BIT_FLAG(57)
1112 #define RIG_LEVEL_58 CONSTANT_64BIT_FLAG(58)
1113 #define RIG_LEVEL_59 CONSTANT_64BIT_FLAG(59)
1114 #define RIG_LEVEL_60 CONSTANT_64BIT_FLAG(60)
1115 #define RIG_LEVEL_61 CONSTANT_64BIT_FLAG(61)
1116 #define RIG_LEVEL_62 CONSTANT_64BIT_FLAG(62)
1117 #define RIG_LEVEL_63 CONSTANT_64BIT_FLAG(63)
1119 #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|RIG_LEVEL_TEMP_METER|RIG_LEVEL_USB_AF|RIG_LEVEL_USB_AF_INPUT|RIG_LEVEL_AGC_TIME)
1121 
1122 #define RIG_LEVEL_READONLY_LIST (RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_STRENGTH|RIG_LEVEL_RAWSTR|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_TEMP_METER|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS)
1123 
1124 #define RIG_LEVEL_IS_FLOAT(l) ((l)&RIG_LEVEL_FLOAT_LIST)
1125 #define RIG_LEVEL_SET(l) ((l)&~RIG_LEVEL_READONLY_LIST)
1126 
1128 
1139  RIG_PARM_ANN = (1 << 0),
1140  RIG_PARM_APO = (1 << 1),
1141  RIG_PARM_BACKLIGHT = (1 << 2),
1142  RIG_PARM_BEEP = (1 << 4),
1143  RIG_PARM_TIME = (1 << 5),
1144  RIG_PARM_BAT = (1 << 6),
1145  RIG_PARM_KEYLIGHT = (1 << 7),
1147  RIG_PARM_AFIF = (1 << 9),
1148  RIG_PARM_BANDSELECT = (1 << 10),
1149  RIG_PARM_KEYERTYPE = (1 << 11),
1150  RIG_PARM_AFIF_LAN = (1 << 12),
1151  RIG_PARM_AFIF_WLAN = (1 << 13),
1152  RIG_PARM_AFIF_ACC = (1 << 14)
1153 };
1154 
1155 enum rig_keyertype_e {
1156  RIG_KEYERTYPE_STRAIGHT = 0,
1157  RIG_KEYERTYPE_BUG = (1 << 0),
1158  RIG_KEYERTYPE_PADDLE = (1 << 1),
1159  RIG_KEYERTYPE_UNKNOWN = (1 << 2)
1160 };
1161 
1170 enum cookie_e {
1174 };
1175 
1181  RIG_MULTICAST_POLL, // hamlib will be polling the rig for all rig items
1182  RIG_MULTICAST_TRANSCEIVE, // transceive will be turned on and processed
1183  RIG_MULTICAST_SPECTRUM // spectrum data will be included
1184 };
1185 
1187 #define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT|RIG_PARM_KEYLIGHT|RIG_PARM_BACKLIGHT)
1188 #define RIG_PARM_STRING_LIST (RIG_PARM_BANDSELECT|RIG_PARM_KEYERTYPE)
1189 #define RIG_PARM_READONLY_LIST (RIG_PARM_BAT)
1190 
1191 #define RIG_PARM_IS_FLOAT(l) ((l)&RIG_PARM_FLOAT_LIST)
1192 #define RIG_PARM_IS_STRING(l) ((l)&RIG_PARM_STRING_LIST)
1193 #define RIG_PARM_SET(l) ((l)&~RIG_PARM_READONLY_LIST)
1194 
1202 typedef uint64_t setting_t;
1203 
1208 #define RIG_SETTING_MAX 64
1209 
1226 #define RIG_TRN_OFF 0
1227 #define RIG_TRN_RIG 1
1228 #define RIG_TRN_POLL 2
1229 
1230 
1239 /*
1240  * The C standard dictates that an enum constant is a 32 bit signed integer.
1241  * Setting a constant's bit 31 created a negative value that on amd64 had the
1242  * upper 32 bits set as well when assigned to the misc.c:rig_func_str structure.
1243  * This caused misc.c:rig_strfunc() to fail its comparison for RIG_FUNC_XIT
1244  * on amd64 (x86_64). To use bit 31 as an unsigned long, preprocessor macros
1245  * have been used instead as a 'const unsigned long' which cannot be used to
1246  * initialize the rig_func_str.func members. TNX KA6MAL, AC6SL. - N0NB
1247  */
1248 #define RIG_FUNC_NONE 0
1249 #define RIG_FUNC_FAGC CONSTANT_64BIT_FLAG (0)
1250 #define RIG_FUNC_NB CONSTANT_64BIT_FLAG (1)
1251 #define RIG_FUNC_COMP CONSTANT_64BIT_FLAG (2)
1252 #define RIG_FUNC_VOX CONSTANT_64BIT_FLAG (3)
1253 #define RIG_FUNC_TONE CONSTANT_64BIT_FLAG (4)
1254 #define RIG_FUNC_TSQL CONSTANT_64BIT_FLAG (5)
1255 #define RIG_FUNC_SBKIN CONSTANT_64BIT_FLAG (6)
1256 #define RIG_FUNC_FBKIN CONSTANT_64BIT_FLAG (7)
1257 #define RIG_FUNC_ANF CONSTANT_64BIT_FLAG (8)
1258 #define RIG_FUNC_NR CONSTANT_64BIT_FLAG (9)
1259 #define RIG_FUNC_AIP CONSTANT_64BIT_FLAG (10)
1260 #define RIG_FUNC_APF CONSTANT_64BIT_FLAG (11)
1261 #define RIG_FUNC_MON CONSTANT_64BIT_FLAG (12)
1262 #define RIG_FUNC_MN CONSTANT_64BIT_FLAG (13)
1263 #define RIG_FUNC_RF CONSTANT_64BIT_FLAG (14)
1264 #define RIG_FUNC_ARO CONSTANT_64BIT_FLAG (15)
1265 #define RIG_FUNC_LOCK CONSTANT_64BIT_FLAG (16)
1266 #define RIG_FUNC_MUTE CONSTANT_64BIT_FLAG (17)
1267 #define RIG_FUNC_VSC CONSTANT_64BIT_FLAG (18)
1268 #define RIG_FUNC_REV CONSTANT_64BIT_FLAG (19)
1269 #define RIG_FUNC_SQL CONSTANT_64BIT_FLAG (20)
1270 #define RIG_FUNC_ABM CONSTANT_64BIT_FLAG (21)
1271 #define RIG_FUNC_BC CONSTANT_64BIT_FLAG (22)
1272 #define RIG_FUNC_MBC CONSTANT_64BIT_FLAG (23)
1273 #define RIG_FUNC_RIT CONSTANT_64BIT_FLAG (24)
1274 #define RIG_FUNC_AFC CONSTANT_64BIT_FLAG (25)
1275 #define RIG_FUNC_SATMODE CONSTANT_64BIT_FLAG (26)
1276 #define RIG_FUNC_SCOPE CONSTANT_64BIT_FLAG (27)
1277 #define RIG_FUNC_RESUME CONSTANT_64BIT_FLAG (28)
1278 #define RIG_FUNC_TBURST CONSTANT_64BIT_FLAG (29)
1279 #define RIG_FUNC_TUNER CONSTANT_64BIT_FLAG (30)
1280 #define RIG_FUNC_XIT CONSTANT_64BIT_FLAG (31)
1281 #ifndef SWIGLUAHIDE
1282 /* Hide the top 32 bits from the old Lua binding as they can't be represented */
1283 #define RIG_FUNC_NB2 CONSTANT_64BIT_FLAG (32)
1284 #define RIG_FUNC_CSQL CONSTANT_64BIT_FLAG (33)
1285 #define RIG_FUNC_AFLT CONSTANT_64BIT_FLAG (34)
1286 #define RIG_FUNC_ANL CONSTANT_64BIT_FLAG (35)
1287 #define RIG_FUNC_BC2 CONSTANT_64BIT_FLAG (36)
1288 #define RIG_FUNC_DUAL_WATCH CONSTANT_64BIT_FLAG (37)
1289 #define RIG_FUNC_DIVERSITY CONSTANT_64BIT_FLAG (38)
1290 #define RIG_FUNC_DSQL CONSTANT_64BIT_FLAG (39)
1291 #define RIG_FUNC_SCEN CONSTANT_64BIT_FLAG (40)
1292 #define RIG_FUNC_SLICE CONSTANT_64BIT_FLAG (41)
1293 #define RIG_FUNC_TRANSCEIVE CONSTANT_64BIT_FLAG (42)
1294 #define RIG_FUNC_SPECTRUM CONSTANT_64BIT_FLAG (43)
1295 #define RIG_FUNC_SPECTRUM_HOLD CONSTANT_64BIT_FLAG (44)
1296 #define RIG_FUNC_SEND_MORSE CONSTANT_64BIT_FLAG (45)
1297 #define RIG_FUNC_SEND_VOICE_MEM CONSTANT_64BIT_FLAG (46)
1298 #define RIG_FUNC_OVF_STATUS CONSTANT_64BIT_FLAG (47)
1299 #define RIG_FUNC_SYNC CONSTANT_64BIT_FLAG (48)
1300 #define RIG_FUNC_BIT49 CONSTANT_64BIT_FLAG (49)
1301 #define RIG_FUNC_BIT50 CONSTANT_64BIT_FLAG (50)
1302 #define RIG_FUNC_BIT51 CONSTANT_64BIT_FLAG (51)
1303 #define RIG_FUNC_BIT52 CONSTANT_64BIT_FLAG (52)
1304 #define RIG_FUNC_BIT53 CONSTANT_64BIT_FLAG (53)
1305 #define RIG_FUNC_BIT54 CONSTANT_64BIT_FLAG (54)
1306 #define RIG_FUNC_BIT55 CONSTANT_64BIT_FLAG (55)
1307 #define RIG_FUNC_BIT56 CONSTANT_64BIT_FLAG (56)
1308 #define RIG_FUNC_BIT57 CONSTANT_64BIT_FLAG (57)
1309 #define RIG_FUNC_BIT58 CONSTANT_64BIT_FLAG (58)
1310 #define RIG_FUNC_BIT59 CONSTANT_64BIT_FLAG (59)
1311 #define RIG_FUNC_BIT60 CONSTANT_64BIT_FLAG (60)
1312 #define RIG_FUNC_BIT61 CONSTANT_64BIT_FLAG (61)
1313 #define RIG_FUNC_BIT62 CONSTANT_64BIT_FLAG (62)
1314 #define RIG_FUNC_BIT63 CONSTANT_64BIT_FLAG (63)
1315 /* 63 is this highest bit number that can be used */
1316 #endif
1317 
1324 #define mW(p) ((int)(p))
1325 
1332 #define Watts(p) ((int)((p)*1000))
1333 
1339 #define W(p) Watts(p)
1340 #if 0 // deprecating kW macro as this doesn't make sense
1341 
1347 #define kW(p) ((int)((p)*1000000L))
1348 #endif
1349 
1350 
1360 typedef uint64_t rmode_t;
1361 
1362 #define RIG_MODE_NONE 0
1363 #define RIG_MODE_AM CONSTANT_64BIT_FLAG (0)
1364 #define RIG_MODE_CW CONSTANT_64BIT_FLAG (1)
1365 #define RIG_MODE_USB CONSTANT_64BIT_FLAG (2)
1366 #define RIG_MODE_LSB CONSTANT_64BIT_FLAG (3)
1367 #define RIG_MODE_RTTY CONSTANT_64BIT_FLAG (4)
1368 #define RIG_MODE_FM CONSTANT_64BIT_FLAG (5)
1369 #define RIG_MODE_WFM CONSTANT_64BIT_FLAG (6)
1370 #define RIG_MODE_CWR CONSTANT_64BIT_FLAG (7)
1371 #define RIG_MODE_RTTYR CONSTANT_64BIT_FLAG (8)
1372 #define RIG_MODE_AMS CONSTANT_64BIT_FLAG (9)
1373 #define RIG_MODE_PKTLSB CONSTANT_64BIT_FLAG (10)
1374 #define RIG_MODE_PKTUSB CONSTANT_64BIT_FLAG (11)
1375 #define RIG_MODE_PKTFM CONSTANT_64BIT_FLAG (12)
1376 #define RIG_MODE_ECSSUSB CONSTANT_64BIT_FLAG (13)
1377 #define RIG_MODE_ECSSLSB CONSTANT_64BIT_FLAG (14)
1378 #define RIG_MODE_FAX CONSTANT_64BIT_FLAG (15)
1379 #define RIG_MODE_SAM CONSTANT_64BIT_FLAG (16)
1380 #define RIG_MODE_SAL CONSTANT_64BIT_FLAG (17)
1381 #define RIG_MODE_SAH CONSTANT_64BIT_FLAG (18)
1382 #define RIG_MODE_DSB CONSTANT_64BIT_FLAG (19)
1383 #define RIG_MODE_FMN CONSTANT_64BIT_FLAG (21)
1384 #define RIG_MODE_PKTAM CONSTANT_64BIT_FLAG (22)
1385 #define RIG_MODE_P25 CONSTANT_64BIT_FLAG (23)
1386 #define RIG_MODE_DSTAR CONSTANT_64BIT_FLAG (24)
1387 #define RIG_MODE_DPMR CONSTANT_64BIT_FLAG (25)
1388 #define RIG_MODE_NXDNVN CONSTANT_64BIT_FLAG (26)
1389 #define RIG_MODE_NXDN_N CONSTANT_64BIT_FLAG (27)
1390 #define RIG_MODE_DCR CONSTANT_64BIT_FLAG (28)
1391 #define RIG_MODE_AMN CONSTANT_64BIT_FLAG (29)
1392 #define RIG_MODE_PSK CONSTANT_64BIT_FLAG (30)
1393 #define RIG_MODE_PSKR CONSTANT_64BIT_FLAG (31)
1394 #ifndef SWIGLUAHIDE
1395 /* hide the top 32 bits from the Lua binding as they will not work */
1396 #define RIG_MODE_DD CONSTANT_64BIT_FLAG (32)
1397 #define RIG_MODE_C4FM CONSTANT_64BIT_FLAG (33)
1398 #define RIG_MODE_PKTFMN CONSTANT_64BIT_FLAG (34)
1399 #define RIG_MODE_SPEC CONSTANT_64BIT_FLAG (35)
1400 #define RIG_MODE_CWN CONSTANT_64BIT_FLAG (36)
1401 #define RIG_MODE_IQ CONSTANT_64BIT_FLAG (37)
1402 #define RIG_MODE_ISBUSB CONSTANT_64BIT_FLAG (38)
1403 #define RIG_MODE_ISBLSB CONSTANT_64BIT_FLAG (39)
1404 #define RIG_MODE_USBD1 CONSTANT_64BIT_FLAG (40)
1405 #define RIG_MODE_USBD2 CONSTANT_64BIT_FLAG (41)
1406 #define RIG_MODE_USBD3 CONSTANT_64BIT_FLAG (42)
1407 #define RIG_MODE_LSBD1 CONSTANT_64BIT_FLAG (43)
1408 #define RIG_MODE_LSBD2 CONSTANT_64BIT_FLAG (44)
1409 #define RIG_MODE_LSBD3 CONSTANT_64BIT_FLAG (45)
1410 #define RIG_MODE_BIT46 CONSTANT_64BIT_FLAG (46)
1411 #define RIG_MODE_BIT47 CONSTANT_64BIT_FLAG (47)
1412 #define RIG_MODE_BIT48 CONSTANT_64BIT_FLAG (48)
1413 #define RIG_MODE_BIT49 CONSTANT_64BIT_FLAG (49)
1414 #define RIG_MODE_BIT50 CONSTANT_64BIT_FLAG (50)
1415 #define RIG_MODE_BIT51 CONSTANT_64BIT_FLAG (51)
1416 #define RIG_MODE_BIT52 CONSTANT_64BIT_FLAG (52)
1417 #define RIG_MODE_BIT53 CONSTANT_64BIT_FLAG (53)
1418 #define RIG_MODE_BIT54 CONSTANT_64BIT_FLAG (54)
1419 #define RIG_MODE_BIT55 CONSTANT_64BIT_FLAG (55)
1420 #define RIG_MODE_BIT56 CONSTANT_64BIT_FLAG (56)
1421 #define RIG_MODE_BIT57 CONSTANT_64BIT_FLAG (57)
1422 #define RIG_MODE_BIT58 CONSTANT_64BIT_FLAG (58)
1423 #define RIG_MODE_BIT59 CONSTANT_64BIT_FLAG (59)
1424 #define RIG_MODE_BIT60 CONSTANT_64BIT_FLAG (60)
1425 #define RIG_MODE_BIT61 CONSTANT_64BIT_FLAG (61)
1426 #define RIG_MODE_BIT62 CONSTANT_64BIT_FLAG (62)
1427 #define RIG_MODE_TESTS_MAX CONSTANT_64BIT_FLAG (63)
1428 #define RIG_MODE_ALL (0xffffffff)
1429 #endif
1430 
1434 #define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB)
1435 
1439 #define RIG_MODE_PKTSSB (RIG_MODE_PKTUSB|RIG_MODE_PKTLSB)
1440 
1444 #define RIG_MODE_ECSS (RIG_MODE_ECSSUSB|RIG_MODE_ECSSLSB)
1445 
1447 #define RIG_DBLST_END 0 /* end marker in a preamp/att level list */
1448 #define RIG_IS_DBLST_END(d) ((d)==0)
1449 
1451 
1458 typedef struct freq_range_list {
1459  freq_t startf;
1460  freq_t endf;
1461  rmode_t modes;
1464  vfo_t vfo;
1465  ant_t ant;
1466  char *label;
1467 } freq_range_t;
1468 
1470 #define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE}
1471 #define RIG_IS_FRNG_END(r) ((r).startf == Hz(0) && (r).endf == Hz(0))
1472 
1491  rmode_t modes;
1492  shortfreq_t ts;
1493 };
1494 
1496 #define RIG_TS_ANY 0
1497 #define RIG_TS_END {RIG_MODE_NONE, 0}
1498 #define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0)
1499 
1501 
1525 struct filter_list {
1526  rmode_t modes;
1527  pbwidth_t width;
1528 };
1530 #define RIG_FLT_ANY 0
1531 #define RIG_FLT_END {RIG_MODE_NONE, 0}
1532 #define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE)
1533 #define DEBUGMSGSAVE_SIZE 24000
1534 
1536 
1540 #define RIG_CHFLAG_NONE 0
1541 
1544 #define RIG_CHFLAG_SKIP (1<<0)
1545 
1548 #define RIG_CHFLAG_DATA (1<<1)
1549 
1552 #define RIG_CHFLAG_PSKIP (1<<2)
1553 
1558 struct ext_list {
1559  hamlib_token_t token;
1561 };
1562 
1564 #define RIG_EXT_END {0, {.i=0}}
1565 #define RIG_IS_EXT_END(x) ((x).token == 0)
1566 
1575 struct channel {
1577  int bank_num;
1578  vfo_t vfo;
1579  ant_t ant;
1580  freq_t freq;
1581  rmode_t mode;
1582  pbwidth_t width;
1584  freq_t tx_freq;
1585  rmode_t tx_mode;
1586  pbwidth_t tx_width;
1589  vfo_t tx_vfo;
1592  shortfreq_t rptr_offs;
1593  shortfreq_t tuning_step;
1594  shortfreq_t rit;
1595  shortfreq_t xit;
1596  setting_t funcs;
1603  unsigned int flags;
1604  char channel_desc[HAMLIB_MAXCHANDESC];
1605  struct ext_list
1606  *ext_levels;
1607  char tag[32];
1608 };
1609 
1613 typedef struct channel channel_t;
1614 
1620 struct channel_cap {
1621  unsigned bank_num: 1;
1622  unsigned vfo: 1;
1623  unsigned ant: 1;
1624  unsigned freq: 1;
1625  unsigned mode: 1;
1626  unsigned width: 1;
1628  unsigned tx_freq: 1;
1629  unsigned tx_mode: 1;
1630  unsigned tx_width: 1;
1632  unsigned split: 1;
1633  unsigned tx_vfo: 1;
1634  unsigned rptr_shift: 1;
1635  unsigned rptr_offs: 1;
1636  unsigned tuning_step: 1;
1637  unsigned rit: 1;
1638  unsigned xit: 1;
1639  setting_t funcs;
1640  setting_t levels;
1641  unsigned ctcss_tone: 1;
1642  unsigned ctcss_sql: 1;
1643  unsigned dcs_code: 1;
1644  unsigned dcs_sql: 1;
1645  unsigned scan_group: 1;
1646  unsigned flags: 1;
1647  unsigned channel_desc: 1;
1648  unsigned ext_levels: 1;
1649  unsigned tag: 1;
1650 };
1651 
1656 
1657 
1668 typedef enum {
1680 } chan_type_t;
1681 
1682 
1696 struct chan_list {
1697  int startc;
1698  int endc;
1701 };
1702 
1704 #define RIG_CHAN_END {0,0,RIG_MTYPE_NONE}
1705 #define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE)
1706 
1711 #define RIG_MEM_CAPS_ALL -1
1712 
1716 typedef struct chan_list chan_t;
1717 
1718 
1730 struct gran {
1734 };
1735 
1739 typedef struct gran gran_t;
1740 
1741 
1745 struct cal_table {
1746  int size;
1747  struct {
1748  int raw;
1749  int val;
1750  } table[HAMLIB_MAX_CAL_LENGTH];
1751 };
1752 
1765 typedef struct cal_table cal_table_t;
1766 
1768 #define EMPTY_STR_CAL { 0, { { 0, 0 }, } }
1769 
1771 
1776  int size;
1777  struct {
1778  int raw;
1779  float val;
1780  } table[HAMLIB_MAX_CAL_LENGTH];
1781 };
1782 
1796 
1798 #define EMPTY_FLOAT_CAL { 0, { { 0, 0f }, } }
1799 
1800 typedef int (* chan_cb_t)(RIG *, vfo_t vfo, channel_t **, int, const chan_t *, rig_ptr_t);
1801 typedef int (* confval_cb_t)(RIG *,
1802  const struct confparams *,
1803  value_t *,
1804  rig_ptr_t);
1806 
1811 {
1812  int id;
1813  char *name;
1814 };
1815 
1820  RIG_SPECTRUM_MODE_NONE = 0,
1825 };
1826 
1831 {
1832  int id;
1833  char *name;
1834 };
1835 
1848 {
1849  int id;
1858  freq_t center_freq;
1859  freq_t span_freq;
1861  freq_t low_edge_freq;
1865  unsigned char *spectrum_data;
1866 };
1867 
1872  struct deferred_config_item *next;
1873  hamlib_token_t token;
1874  char *value; // strdup'ed, must be freed
1875 };
1877 
1879  struct deferred_config_item *first; // NULL if none
1880  struct deferred_config_item *last;
1881 };
1883 
1903 #define RIG_MODEL(arg) .rig_model=arg,.macro_name=#arg
1905 #define HAMLIB_CHECK_RIG_CAPS "HAMLIB_CHECK_RIG_CAPS"
1906 struct rig_caps {
1907  rig_model_t rig_model;
1908  const char *model_name;
1909  const char *mfg_name;
1910  const char *version;
1911  const char *copyright;
1912  enum rig_status_e status;
1914  int rig_type;
1915  ptt_type_t ptt_type;
1916  dcd_type_t dcd_type;
1917  rig_port_t port_type;
1919  int serial_rate_min;
1920  int serial_rate_max;
1921  int serial_data_bits;
1922  int serial_stop_bits;
1923  enum serial_parity_e serial_parity;
1924  enum serial_handshake_e serial_handshake;
1926  int write_delay;
1927  int post_write_delay;
1928  int timeout;
1929  int retry;
1931  setting_t has_get_func;
1932  setting_t has_set_func;
1933  setting_t has_get_level;
1934  setting_t has_set_level;
1935  setting_t has_get_parm;
1936  setting_t has_set_parm;
1938  gran_t level_gran[RIG_SETTING_MAX];
1939  gran_t parm_gran[RIG_SETTING_MAX];
1941  const struct confparams *extparms;
1942  const struct confparams *extlevels;
1943  const struct confparams *extfuncs;
1944  int *ext_tokens;
1946  tone_t *ctcss_list;
1947  tone_t *dcs_list;
1949  int preamp[HAMLIB_MAXDBLSTSIZ];
1950  int attenuator[HAMLIB_MAXDBLSTSIZ];
1951  shortfreq_t max_rit;
1952  shortfreq_t max_xit;
1953  shortfreq_t max_ifshift;
1955  int agc_level_count;
1956  enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS];
1958  ann_t announces;
1960  vfo_op_t vfo_ops;
1961  scan_t scan_ops;
1962  int targetable_vfo;
1963  int transceive;
1965  int bank_qty;
1966  int chan_desc_sz;
1968  chan_t chan_list[HAMLIB_CHANLSTSIZ];
1970  // As of 2020-02-12 we know of 5 models from Icom USA, EUR, ITR, TPE, KOR for the IC-9700
1971  // So we currently have 5 ranges we need to deal with
1972  // The backend for the model should fill in the label field to explain what model it is
1973  // The the IC-9700 in ic7300.c for an example
1974  freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ];
1975  freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ];
1976  freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ];
1977  freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ];
1978  freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ];
1979  freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ];
1980  freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ];
1981  freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ];
1982  freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ];
1983  freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ];
1985  struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
1986  struct filter_list filters[HAMLIB_FLTLSTSIZ];
1988  cal_table_t str_cal;
1989  cal_table_float_t swr_cal;
1990  cal_table_float_t alc_cal;
1991  cal_table_float_t rfpower_meter_cal;
1992  cal_table_float_t comp_meter_cal;
1993  cal_table_float_t vd_meter_cal;
1994  cal_table_float_t id_meter_cal;
1996  struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES];
1997  enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES];
1998  freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS];
1999  struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES];
2000  int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ];
2002  const struct confparams *cfgparams;
2003  const rig_ptr_t priv;
2005  /*
2006  * Rig API
2007  *
2008  */
2009 
2010  int (*rig_init)(RIG *rig);
2011  int (*rig_cleanup)(RIG *rig);
2012  int (*rig_open)(RIG *rig);
2013  int (*rig_close)(RIG *rig);
2014 
2015  /*
2016  * General API commands, from most primitive to least.. :()
2017  * List Set/Get functions pairs
2018  */
2019 
2020  int (*set_freq)(RIG *rig, vfo_t vfo, freq_t freq);
2021  int (*get_freq)(RIG *rig, vfo_t vfo, freq_t *freq);
2022 
2023  int (*set_mode)(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
2024  int (*get_mode)(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width);
2025 
2026  int (*set_vfo)(RIG *rig, vfo_t vfo);
2027  int (*get_vfo)(RIG *rig, vfo_t *vfo);
2028 
2029  int (*set_ptt)(RIG *rig, vfo_t vfo, ptt_t ptt);
2030  int (*get_ptt)(RIG *rig, vfo_t vfo, ptt_t *ptt);
2031 
2032  int (*get_dcd)(RIG *rig, vfo_t vfo, dcd_t *dcd);
2033 
2034  int (*set_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift);
2035  int (*get_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift);
2036 
2037  int (*set_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t offs);
2038  int (*get_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t *offs);
2039 
2040  int (*set_split_freq)(RIG *rig, vfo_t vfo, freq_t tx_freq);
2041  int (*get_split_freq)(RIG *rig, vfo_t vfo, freq_t *tx_freq);
2042 
2043  int (*set_split_mode)(RIG *rig,
2044  vfo_t vfo,
2045  rmode_t tx_mode,
2046  pbwidth_t tx_width);
2047  int (*get_split_mode)(RIG *rig,
2048  vfo_t vfo,
2049  rmode_t *tx_mode,
2050  pbwidth_t *tx_width);
2051 
2052  int (*set_split_freq_mode)(RIG *rig,
2053  vfo_t vfo,
2054  freq_t tx_freq,
2055  rmode_t tx_mode,
2056  pbwidth_t tx_width);
2057  int (*get_split_freq_mode)(RIG *rig,
2058  vfo_t vfo,
2059  freq_t *tx_freq,
2060  rmode_t *tx_mode,
2061  pbwidth_t *tx_width);
2062 
2063  int (*set_split_vfo)(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo);
2064  int (*get_split_vfo)(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo);
2065 
2066  int (*set_rit)(RIG *rig, vfo_t vfo, shortfreq_t rit);
2067  int (*get_rit)(RIG *rig, vfo_t vfo, shortfreq_t *rit);
2068 
2069  int (*set_xit)(RIG *rig, vfo_t vfo, shortfreq_t xit);
2070  int (*get_xit)(RIG *rig, vfo_t vfo, shortfreq_t *xit);
2071 
2072  int (*set_ts)(RIG *rig, vfo_t vfo, shortfreq_t ts);
2073  int (*get_ts)(RIG *rig, vfo_t vfo, shortfreq_t *ts);
2074 
2075  int (*set_dcs_code)(RIG *rig, vfo_t vfo, tone_t code);
2076  int (*get_dcs_code)(RIG *rig, vfo_t vfo, tone_t *code);
2077 
2078  int (*set_tone)(RIG *rig, vfo_t vfo, tone_t tone);
2079  int (*get_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
2080 
2081  int (*set_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t tone);
2082  int (*get_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
2083 
2084  int (*set_dcs_sql)(RIG *rig, vfo_t vfo, tone_t code);
2085  int (*get_dcs_sql)(RIG *rig, vfo_t vfo, tone_t *code);
2086 
2087  int (*set_tone_sql)(RIG *rig, vfo_t vfo, tone_t tone);
2088  int (*get_tone_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
2089 
2090  int (*set_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t tone);
2091  int (*get_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
2092 
2093  int (*power2mW)(RIG *rig,
2094  unsigned int *mwpower,
2095  float power,
2096  freq_t freq,
2097  rmode_t mode);
2098  int (*mW2power)(RIG *rig,
2099  float *power,
2100  unsigned int mwpower,
2101  freq_t freq,
2102  rmode_t mode);
2103 
2104  int (*set_powerstat)(RIG *rig, powerstat_t status);
2105  int (*get_powerstat)(RIG *rig, powerstat_t *status);
2106 
2107  int (*reset)(RIG *rig, reset_t reset);
2108 
2109  int (*set_ant)(RIG *rig, vfo_t vfo, ant_t ant, value_t option);
2110  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);
2111 
2112  int (*set_level)(RIG *rig, vfo_t vfo, setting_t level, value_t val);
2113  int (*get_level)(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
2114 
2115  int (*set_func)(RIG *rig, vfo_t vfo, setting_t func, int status);
2116  int (*get_func)(RIG *rig, vfo_t vfo, setting_t func, int *status);
2117 
2118  int (*set_parm)(RIG *rig, setting_t parm, value_t val);
2119  int (*get_parm)(RIG *rig, setting_t parm, value_t *val);
2120 
2121  int (*set_ext_level)(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t val);
2122  int (*get_ext_level)(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t *val);
2123 
2124  int (*set_ext_func)(RIG *rig, vfo_t vfo, hamlib_token_t token, int status);
2125  int (*get_ext_func)(RIG *rig, vfo_t vfo, hamlib_token_t token, int *status);
2126 
2127  int (*set_ext_parm)(RIG *rig, hamlib_token_t token, value_t val);
2128  int (*get_ext_parm)(RIG *rig, hamlib_token_t token, value_t *val);
2129 
2130  int (*set_conf)(RIG *rig, hamlib_token_t token, const char *val);
2131  int (*get_conf)(RIG *rig, hamlib_token_t token, char *val);
2132 
2133  int (*send_dtmf)(RIG *rig, vfo_t vfo, const char *digits);
2134  int (*recv_dtmf)(RIG *rig, vfo_t vfo, char *digits, int *length);
2135 
2136  int (*send_morse)(RIG *rig, vfo_t vfo, const char *msg);
2137  int (*stop_morse)(RIG *rig, vfo_t vfo);
2138  int (*wait_morse)(RIG *rig, vfo_t vfo);
2139 
2140  int (*send_voice_mem)(RIG *rig, vfo_t vfo, int ch);
2141  int (*stop_voice_mem)(RIG *rig, vfo_t vfo);
2142 
2143  int (*set_bank)(RIG *rig, vfo_t vfo, int bank);
2144 
2145  int (*set_mem)(RIG *rig, vfo_t vfo, int ch);
2146  int (*get_mem)(RIG *rig, vfo_t vfo, int *ch);
2147 
2148  int (*vfo_op)(RIG *rig, vfo_t vfo, vfo_op_t op);
2149 
2150  int (*scan)(RIG *rig, vfo_t vfo, scan_t scan, int ch);
2151 
2152  int (*set_trn)(RIG *rig, int trn);
2153  int (*get_trn)(RIG *rig, int *trn);
2154 
2155  int (*decode_event)(RIG *rig);
2156 
2157  int (*set_channel)(RIG *rig, vfo_t vfo, const channel_t *chan);
2158  int (*get_channel)(RIG *rig, vfo_t vfo, channel_t *chan, int read_only);
2159 
2160  const char * (*get_info)(RIG *rig);
2161 
2162  int (*set_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
2163  int (*get_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
2164 
2165  int (*set_mem_all_cb)(RIG *rig,
2166  vfo_t vfo,
2167  chan_cb_t chan_cb,
2168  confval_cb_t parm_cb,
2169  rig_ptr_t);
2170  int (*get_mem_all_cb)(RIG *rig,
2171  vfo_t vfo,
2172  chan_cb_t chan_cb,
2173  confval_cb_t parm_cb,
2174  rig_ptr_t);
2175 
2176  int (*set_vfo_opt)(RIG *rig, int status); // only for Net Rigctl device
2177  int (*rig_get_vfo_info) (RIG *rig,
2178  vfo_t vfo,
2179  freq_t *freq,
2180  rmode_t *mode,
2181  pbwidth_t *width,
2182  split_t *split);
2183  int(*set_clock) (RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset);
2184  int(*get_clock) (RIG *rig, int *year, int *month, int *day, int *hour, int *min, int *sec, double *msec, int *utc_offset);
2185 
2186  const char *clone_combo_set;
2187  const char *clone_combo_get;
2188  const char *macro_name;
2190  int async_data_supported;
2191  int (*read_frame_direct)(RIG *rig,
2192  size_t buffer_length,
2193  const unsigned char *buffer);
2194  int (*is_async_frame)(RIG *rig,
2195  size_t frame_length,
2196  const unsigned char *frame);
2197  int (*process_async_frame)(RIG *rig,
2198  size_t frame_length,
2199  const unsigned char *frame);
2200 // this will be used to check rigcaps structure is compatible with client
2201  char *hamlib_check_rig_caps; // a constant value we can check for hamlib integrity
2202  int (*get_conf2)(RIG *rig, hamlib_token_t token, char *val, int val_len);
2203  int (*password)(RIG *rig, const char *key1); /*< Send encrypted password if rigctld is secured with -A/--password */
2204  int (*set_lock_mode)(RIG *rig, int mode);
2205  int (*get_lock_mode)(RIG *rig, int *mode);
2206  short timeout_retry;
2207  short morse_qsize; /* max length of morse */
2208 // int (*bandwidth2rig)(RIG *rig, enum bandwidth_t bandwidth);
2209 // enum bandwidth_t (*rig2bandwidth)(RIG *rig, int rigbandwidth);
2210 };
2212 
2217 // all functions enumerated for rig_get_function_ptr
2219  RIG_FUNCTION_INIT,
2220  RIG_FUNCTION_CLEANUP,
2221  RIG_FUNCTION_OPEN,
2222  RIG_FUNCTION_CLOSE,
2223  RIG_FUNCTION_SET_FREQ,
2224  RIG_FUNCTION_GET_FREQ,
2225  RIG_FUNCTION_SET_MODE,
2226  RIG_FUNCTION_GET_MODE,
2227  RIG_FUNCTION_SET_VFO,
2228  RIG_FUNCTION_GET_VFO,
2229  RIG_FUNCTION_SET_PTT,
2230  RIG_FUNCTION_GET_PTT,
2231  RIG_FUNCTION_GET_DCD,
2232  RIG_FUNCTION_SET_RPTR_SHIFT,
2233  RIG_FUNCTION_GET_RPTR_SHIFT,
2234  RIG_FUNCTION_SET_RPTR_OFFS,
2235  RIG_FUNCTION_GET_RPTR_OFFS,
2236  RIG_FUNCTION_SET_SPLIT_FREQ,
2237  RIG_FUNCTION_GET_SPLIT_FREQ,
2238  RIG_FUNCTION_SET_SPLIT_MODE,
2239  RIG_FUNCTION_SET_SPLIT_FREQ_MODE,
2240  RIG_FUNCTION_GET_SPLIT_FREQ_MODE,
2241  RIG_FUNCTION_SET_SPLIT_VFO,
2242  RIG_FUNCTION_GET_SPLIT_VFO,
2243  RIG_FUNCTION_SET_RIT,
2244  RIG_FUNCTION_GET_RIT,
2245  RIG_FUNCTION_SET_XIT,
2246  RIG_FUNCTION_GET_XIT,
2247  RIG_FUNCTION_SET_TS,
2248  RIG_FUNCTION_GET_TS,
2249  RIG_FUNCTION_SET_DCS_CODE,
2250  RIG_FUNCTION_GET_DCS_CODE,
2251  RIG_FUNCTION_SET_TONE,
2252  RIG_FUNCTION_GET_TONE,
2253  RIG_FUNCTION_SET_CTCSS_TONE,
2254  RIG_FUNCTION_GET_CTCSS_TONE,
2255  RIG_FUNCTION_SET_DCS_SQL,
2256  RIG_FUNCTION_GET_DCS_SQL,
2257  RIG_FUNCTION_SET_TONE_SQL,
2258  RIG_FUNCTION_GET_TONE_SQL,
2259  RIG_FUNCTION_SET_CTCSS_SQL,
2260  RIG_FUNCTION_GET_CTCSS_SQL,
2261  RIG_FUNCTION_POWER2MW,
2262  RIG_FUNCTION_MW2POWER,
2263  RIG_FUNCTION_SET_POWERSTAT,
2264  RIG_FUNCTION_GET_POWERSTAT,
2265  RIG_FUNCTION_RESET,
2266  RIG_FUNCTION_SET_ANT,
2267  RIG_FUNCTION_GET_ANT,
2268  RIG_FUNCTION_SET_LEVEL,
2269  RIG_FUNCTION_GET_LEVEL,
2270  RIG_FUNCTION_SET_FUNC,
2271  RIG_FUNCTION_GET_FUNC,
2272  RIG_FUNCTION_SET_PARM,
2273  RIG_FUNCTION_GET_PARM,
2274  RIG_FUNCTION_SET_EXT_LEVEL,
2275  RIG_FUNCTION_GET_EXT_LEVEL,
2276  RIG_FUNCTION_SET_EXT_FUNC,
2277  RIG_FUNCTION_GET_EXT_FUNC,
2278  RIG_FUNCTION_SET_EXT_PARM,
2279  RIG_FUNCTION_GET_EXT_PARM,
2280  RIG_FUNCTION_SET_CONF,
2281  RIG_FUNCTION_GET_CONF,
2282  RIG_FUNCTION_SEND_DTMF,
2283  RIG_FUNCTION_SEND_MORSE,
2284  RIG_FUNCTION_STOP_MORSE,
2285  RIG_FUNCTION_WAIT_MORSE,
2286  RIG_FUNCTION_SEND_VOICE_MEM,
2287  RIG_FUNCTION_SET_BANK,
2288  RIG_FUNCTION_SET_MEM,
2289  RIG_FUNCTION_GET_MEM,
2290  RIG_FUNCTION_VFO_OP,
2291  RIG_FUNCTION_SCAN,
2292  RIG_FUNCTION_SET_TRN,
2293  RIG_FUNCTION_GET_TRN,
2294  RIG_FUNCTION_DECODE_EVENT,
2295  RIG_FUNCTION_SET_CHANNEL,
2296  RIG_FUNCTION_GET_CHANNEL,
2297  RIG_FUNCTION_GET_INFO,
2298  RIG_FUNCTION_SET_CHAN_ALL_CB,
2299  RIG_FUNCTION_GET_CHAN_ALL_CB,
2300  RIG_FUNCTION_SET_MEM_ALL_CB,
2301  RIG_FUNCTION_GET_MEM_ALL_CB,
2302  RIG_FUNCTION_SET_VFO_OPT,
2303  RIG_FUNCTION_READ_FRAME_DIRECT,
2304  RIG_FUNCTION_IS_ASYNC_FRAME,
2305  RIG_FUNCTION_PROCESS_ASYNC_FRAME,
2306  RIG_FUNCTION_GET_CONF2,
2307  RIG_FUNCTION_STOP_VOICE_MEM,
2308 };
2309 
2314 extern HAMLIB_EXPORT (void *) rig_get_function_ptr(rig_model_t rig_model, enum rig_function_e rig_function);
2315 
2320 // values enumerated for rig->caps values
2322  RIG_CAPS_TARGETABLE_VFO,
2323  RIG_CAPS_RIG_MODEL,
2324  RIG_CAPS_PORT_TYPE,
2325  RIG_CAPS_PTT_TYPE,
2326  RIG_CAPS_HAS_GET_LEVEL,
2327  RIG_CAPS_HAS_SET_LEVEL,
2328 };
2329 
2330 enum rig_caps_cptr_e {
2331  RIG_CAPS_VERSION_CPTR,
2332  RIG_CAPS_MFG_NAME_CPTR,
2333  RIG_CAPS_MODEL_NAME_CPTR,
2334  RIG_CAPS_STATUS_CPTR
2335 };
2336 
2341 extern HAMLIB_EXPORT (uint64_t) rig_get_caps_int(rig_model_t rig_model, enum rig_caps_int_e rig_caps);
2342 
2347 extern HAMLIB_EXPORT (const char *) rig_get_caps_cptr(rig_model_t rig_model, enum rig_caps_cptr_e rig_caps);
2348 
2349 struct hamlib_async_pipe;
2350 
2351 typedef struct hamlib_async_pipe hamlib_async_pipe_t;
2352 
2358 // DO NOT CHANGE THIS STRUCTURE ALL UNTIL 5.0
2360 // Right now it is static inside rig structure
2361 // 5.0 will change it to a pointer which can then be added to
2362 // At that point only add to the end of the structure
2363 typedef struct hamlib_port {
2364  union {
2365  rig_port_t rig;
2366  ptt_type_t ptt;
2367  dcd_type_t dcd;
2368  } type;
2369 
2370  int fd;
2371  void *handle;
2373  int write_delay;
2374  int post_write_delay;
2376  struct {
2377  int tv_sec, tv_usec;
2378  } post_write_date;
2380  int timeout;
2381  short retry;
2382  short flushx;
2384  char pathname[HAMLIB_FILPATHLEN];
2386  union {
2387  struct {
2388  int rate;
2389  int data_bits;
2390  int stop_bits;
2391  enum serial_parity_e parity;
2392  enum serial_handshake_e handshake;
2393  enum serial_control_state_e rts_state;
2394  enum serial_control_state_e dtr_state;
2395  } serial;
2397  struct {
2398  int pin;
2399  } parallel;
2401  struct {
2402  int ptt_bitnum;
2403  } cm108;
2405  struct {
2406  int vid;
2407  int pid;
2408  int conf;
2409  int iface;
2410  int alt;
2411  char *vendor_name;
2412  char *product;
2413  } usb;
2415  struct {
2416  int on_value;
2417  int value;
2418  } gpio;
2419  } parm;
2420  int client_port;
2421  RIG *rig;
2422  int asyncio;
2423 #if defined(_WIN32)
2424  hamlib_async_pipe_t *sync_data_pipe;
2425  hamlib_async_pipe_t *sync_data_error_pipe;
2426 #else
2427  int fd_sync_write;
2428  int fd_sync_read;
2429  int fd_sync_error_write;
2430  int fd_sync_error_read;
2431 #endif
2432  short timeout_retry;
2433 // DO NOT ADD ANYTHING HERE UNTIL 5.0!!
2434 } hamlib_port_t;
2435 
2436 
2437 // DO NOT CHANGE THIS STRUCTURE AT ALL
2438 // Will be removed in 5.0
2439 typedef struct hamlib_port_deprecated {
2440  union {
2441  rig_port_t rig;
2442  ptt_type_t ptt;
2443  dcd_type_t dcd;
2444  } type;
2445 
2446  int fd;
2447  void *handle;
2449  int write_delay;
2450  int post_write_delay;
2452  struct {
2453  int tv_sec, tv_usec;
2454  } post_write_date;
2456  int timeout;
2457  short retry;
2458  short flushx;
2460  char pathname[HAMLIB_FILPATHLEN];
2462  union {
2463  struct {
2464  int rate;
2465  int data_bits;
2466  int stop_bits;
2467  enum serial_parity_e parity;
2468  enum serial_handshake_e handshake;
2469  enum serial_control_state_e rts_state;
2470  enum serial_control_state_e dtr_state;
2471  } serial;
2473  struct {
2474  int pin;
2475  } parallel;
2477  struct {
2478  int ptt_bitnum;
2479  } cm108;
2481  struct {
2482  int vid;
2483  int pid;
2484  int conf;
2485  int iface;
2486  int alt;
2487  char *vendor_name;
2488  char *product;
2489  } usb;
2491  struct {
2492  int on_value;
2493  int value;
2494  } gpio;
2495  } parm;
2496  int client_port;
2497  RIG *rig;
2498 } hamlib_port_t_deprecated;
2500 
2501 #if !defined(__APPLE__) || !defined(__cplusplus)
2502 typedef hamlib_port_t_deprecated port_t_deprecated;
2503 typedef hamlib_port_t port_t;
2504 #endif
2505 
2506 /* Macros to access data structures/pointers
2507  * Make it easier to change location in preparation
2508  * for moving them out of rig->state.
2509  * See https://github.com/Hamlib/Hamlib/issues/1445
2510  * https://github.com/Hamlib/Hamlib/issues/1452
2511  * https://github.com/Hamlib/Hamlib/issues/1420
2512  * https://github.com/Hamlib/Hamlib/issues/536
2513  * https://github.com/Hamlib/Hamlib/issues/487
2514  */
2515 // Note: Experimental, and subject to change!!
2516 #if defined(IN_HAMLIB)
2517 /* These are for internal use only */
2518 #define RIGPORT(r) (&r->state.rigport)
2519 #define PTTPORT(r) (&r->state.pttport)
2520 #define DCDPORT(r) (&r->state.dcdport)
2521 #define CACHE(r) (&r->state.cache)
2522 #define AMPPORT(a) (&a->state.ampport)
2523 #define ROTPORT(r) (&r->state.rotport)
2524 #define ROTPORT2(r) (&r->state.rotport2)
2525 #define STATE(r) (&r->state)
2526 #define AMPSTATE(a) (&(a)->state)
2527 #define ROTSTATE(r) (&(r)->state)
2528 /* Then when the rigport address is stored as a pointer somewhere else(say,
2529  * in the rig structure itself), the definition could be changed to
2530  * #define RIGPORT(r) r->somewhereelse
2531  * and every reference is updated.
2532  */
2533 #else
2534 /* Define external unique names */
2535 #define HAMLIB_RIGPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_RIGPORT))
2536 #define HAMLIB_PTTPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_PTTPORT))
2537 #define HAMLIB_DCDPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_DCDPORT))
2538 #define HAMLIB_CACHE(r) ((struct rig_cache *)rig_data_pointer(r, RIG_PTRX_CACHE))
2539 #define HAMLIB_AMPPORT(a) ((hamlib_port_t *)amp_data_pointer(a, RIG_PTRX_AMPPORT))
2540 #define HAMLIB_ROTPORT(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT))
2541 #define HAMLIB_ROTPORT2(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT2))
2542 #define HAMLIB_STATE(r) ((struct rig_state *)rig_data_pointer(r, RIG_PTRX_STATE))
2543 #define HAMLIB_AMPSTATE(a) ((struct amp_state *)amp_data_pointer(a, RIG_PTRX_AMPSTATE))
2544 #define HAMLIB_ROTSTATE(r) ((struct rot_state *)rot_data_pointer(r, RIG_PTRX_ROTSTATE))
2545 #endif
2546 
2547 typedef enum {
2548  RIG_PTRX_NONE=0,
2549  RIG_PTRX_RIGPORT,
2550  RIG_PTRX_PTTPORT,
2551  RIG_PTRX_DCDPORT,
2552  RIG_PTRX_CACHE,
2553  RIG_PTRX_AMPPORT,
2554  RIG_PTRX_ROTPORT,
2555  RIG_PTRX_ROTPORT2,
2556  RIG_PTRX_STATE,
2557  RIG_PTRX_AMPSTATE,
2558  RIG_PTRX_ROTSTATE,
2559 // New entries go directly above this line====================
2560  RIG_PTRX_MAXIMUM
2561 } rig_ptrx_t;
2562 
2563 #define HAMLIB_ELAPSED_GET 0
2564 #define HAMLIB_ELAPSED_SET 1
2565 #define HAMLIB_ELAPSED_INVALIDATE 2
2566 
2567 #define HAMLIB_CACHE_ALWAYS (-1)
2569 typedef enum {
2570  HAMLIB_CACHE_ALL, // to set all cache timeouts at once
2571  HAMLIB_CACHE_VFO,
2572  HAMLIB_CACHE_FREQ,
2573  HAMLIB_CACHE_MODE,
2574  HAMLIB_CACHE_PTT,
2575  HAMLIB_CACHE_SPLIT,
2576  HAMLIB_CACHE_WIDTH
2577 } hamlib_cache_t;
2578 
2579 typedef enum {
2580  TWIDDLE_OFF,
2581  TWIDDLE_ON
2582 } twiddle_state_t;
2583 
2590 struct rig_cache {
2591  int timeout_ms; // the cache timeout for invalidating itself
2592  vfo_t vfo;
2593  //freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1
2594  // other abstraction here is based on dual vfo rigs and mapped to all others
2595  // So we have four possible states of rig
2596  // MainA, MainB, SubA, SubB
2597  // Main is the Main VFO and Sub is for the 2nd VFO
2598  // Most rigs have MainA and MainB
2599  // Dual VFO rigs can have SubA and SubB too
2600  // For dual VFO rigs simplex operations are all done on MainA/MainB -- ergo this abstraction
2601  freq_t freqCurr; // Other VFO
2602  freq_t freqOther; // Other VFO
2603  freq_t freqMainA; // VFO_A, VFO_MAIN, and VFO_MAINA
2604  freq_t freqMainB; // VFO_B, VFO_SUB, and VFO_MAINB
2605  freq_t freqMainC; // VFO_C, VFO_MAINC
2606  freq_t freqSubA; // VFO_SUBA -- only for rigs with dual Sub VFOs
2607  freq_t freqSubB; // VFO_SUBB -- only for rigs with dual Sub VFOs
2608  freq_t freqSubC; // VFO_SUBC -- only for rigs with 3 Sub VFOs
2609  freq_t freqMem; // VFO_MEM -- last MEM channel
2610  rmode_t modeCurr;
2611  rmode_t modeOther;
2612  rmode_t modeMainA;
2613  rmode_t modeMainB;
2614  rmode_t modeMainC;
2615  rmode_t modeSubA;
2616  rmode_t modeSubB;
2617  rmode_t modeSubC;
2618  rmode_t modeMem;
2619  pbwidth_t widthCurr; // if non-zero then rig has separate width for MainA
2620  pbwidth_t widthOther; // if non-zero then rig has separate width for MainA
2621  pbwidth_t widthMainA; // if non-zero then rig has separate width for MainA
2622  pbwidth_t widthMainB; // if non-zero then rig has separate width for MainB
2623  pbwidth_t widthMainC; // if non-zero then rig has separate width for MainC
2624  pbwidth_t widthSubA; // if non-zero then rig has separate width for SubA
2625  pbwidth_t widthSubB; // if non-zero then rig has separate width for SubB
2626  pbwidth_t widthSubC; // if non-zero then rig has separate width for SubC
2627  pbwidth_t widthMem; // if non-zero then rig has separate width for Mem
2628  ptt_t ptt;
2629  split_t split;
2630  vfo_t split_vfo; // split caches two values
2631  struct timespec time_freqCurr;
2632  struct timespec time_freqOther;
2633  struct timespec time_freqMainA;
2634  struct timespec time_freqMainB;
2635  struct timespec time_freqMainC;
2636  struct timespec time_freqSubA;
2637  struct timespec time_freqSubB;
2638  struct timespec time_freqSubC;
2639  struct timespec time_freqMem;
2640  struct timespec time_vfo;
2641  struct timespec time_modeCurr;
2642  struct timespec time_modeOther;
2643  struct timespec time_modeMainA;
2644  struct timespec time_modeMainB;
2645  struct timespec time_modeMainC;
2646  struct timespec time_modeSubA;
2647  struct timespec time_modeSubB;
2648  struct timespec time_modeSubC;
2649  struct timespec time_modeMem;
2650  struct timespec time_widthCurr;
2651  struct timespec time_widthOther;
2652  struct timespec time_widthMainA;
2653  struct timespec time_widthMainB;
2654  struct timespec time_widthMainC;
2655  struct timespec time_widthSubA;
2656  struct timespec time_widthSubB;
2657  struct timespec time_widthSubC;
2658  struct timespec time_widthMem;
2659  struct timespec time_ptt;
2660  struct timespec time_split;
2661  int satmode; // if rig is in satellite mode
2662 };
2663 
2668 #include <hamlib/multicast.h>
2670 {
2671  int multicast_running;
2672  int sock;
2673  int seqnumber;
2674  int runflag; // = 0;
2675  pthread_t threadid;
2676  // this mutex is needed to control serial access
2677  // as of 2023-05-13 we have main thread and multicast thread needing it
2678  // eventually we should be able to use cached info only in the main thread to avoid contention
2679  pthread_mutex_t mutex;
2680  int mutex_initialized;
2681 //#ifdef HAVE_ARPA_INET_H
2682  //struct ip_mreq mreq; // = {0};
2683  struct sockaddr_in dest_addr; // = {0};
2684  int port;
2685 //#endif
2686 };
2687 
2688 typedef unsigned int rig_comm_status_t;
2689 
2690 #define RIG_COMM_STATUS_OK 0x00
2691 #define RIG_COMM_STATUS_CONNECTING 0x01
2692 #define RIG_COMM_STATUS_DISCONNECTED 0x02
2693 #define RIG_COMM_STATUS_TERMINATED 0x03
2694 #define RIG_COMM_STATUS_WARNING 0x04
2695 #define RIG_COMM_STATUS_ERROR 0x05
2696 
2707 struct rig_state {
2708  /********* ENSURE ANY NEW ITEMS ARE ADDED AT BOTTOM OF THIS STRUCTURE *********/
2709  /*
2710  * overridable fields
2711  */
2712  // moving the hamlib_port_t to the end of rig_state and making it a pointer
2713  // this should allow changes to hamlib_port_t without breaking shared libraries
2714  // these will maintain a copy of the new port_t for backwards compatibility
2715  // to these offsets -- note these must stay until a major version update is done like 5.0
2716  hamlib_port_t_deprecated rigport_deprecated;
2717  hamlib_port_t_deprecated pttport_deprecated;
2718  hamlib_port_t_deprecated dcdport_deprecated;
2720  double vfo_comp;
2723  freq_range_t rx_range_list[HAMLIB_FRQRANGESIZ];
2724  freq_range_t tx_range_list[HAMLIB_FRQRANGESIZ];
2726  struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
2728  struct filter_list filters[HAMLIB_FLTLSTSIZ];
2732  chan_t chan_list[HAMLIB_CHANLSTSIZ];
2734  shortfreq_t max_rit;
2735  shortfreq_t max_xit;
2736  shortfreq_t max_ifshift;
2740  int preamp[HAMLIB_MAXDBLSTSIZ];
2741  int attenuator[HAMLIB_MAXDBLSTSIZ];
2754  /*
2755  * non overridable fields, internal use
2756  */
2757 
2759  vfo_t current_vfo;
2760  int vfo_list;
2762  rig_ptr_t priv;
2763  rig_ptr_t obj;
2767  freq_t current_freq;
2769  //rmode_t current_modeB; /*!< Mode currently set VFOB */
2770  pbwidth_t current_width;
2771  vfo_t tx_vfo;
2773  // mode_list is used by some
2774  // so anything added to this structure must be below here
2775  int transmit;
2778  freq_t lo_freq;
2779  time_t twiddle_time;
2781  // uplink allows gpredict to behave better by no reading the uplink VFO
2782  int uplink;
2783  struct rig_cache cache;
2784  int vfo_opt;
2799  vfo_t rx_vfo;
2801  volatile unsigned int snapshot_packet_sequence_number;
2802 
2803  volatile int multicast_publisher_run;
2805  volatile int async_data_handler_thread_run;
2806  void *async_data_handler_priv_data;
2807  volatile int poll_routine_thread_run;
2808  void *poll_routine_priv_data;
2809  pthread_mutex_t mutex_set_transaction;
2810  hamlib_port_t rigport;
2811  hamlib_port_t pttport;
2812  hamlib_port_t dcdport;
2813  /********* DO NOT ADD or CHANGE anything (or than to rename) ABOVE THIS LINE *********/
2814  /********* ENSURE ANY NEW ITEMS ARE ADDED AFTER HERE *********/
2815  /* flags instructing the rig_get routines to use cached values when asyncio is in use */
2819  int depth;
2823  char client_version[32];
2824  freq_t offset_vfoa;
2825  freq_t offset_vfob;
2827  // Adding a number of items so netrigctl can see the real rig information
2828  // Eventually may want to add these so that rigctld can see more of the backend
2829  // But that will come later if requested -- for now they just fill out dumpstate.c
2831  const char *model_name;
2832  const char *mfg_name;
2833  const char *version;
2834  const char *copyright;
2836  int rig_type;
2848  int timeout;
2849  int retry;
2853  enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS];
2859  int bank_qty;
2861  freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ];
2862  freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ];
2863  freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ];
2864  freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ];
2865  freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ];
2866  freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ];
2867  freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ];
2868  freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ];
2869  freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ];
2870  freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ];
2871  struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES];
2872  enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES];
2873  freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS];
2874  struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES];
2875  int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ];
2876  volatile int morse_data_handler_thread_run;
2877  void *morse_data_handler_priv_data;
2878  FIFO_RIG *fifo_morse;
2879  int doppler;
2884  volatile int multicast_receiver_run;
2886  rig_comm_status_t comm_status;
2887  char device_id[HAMLIB_RIGNAMSIZ];
2890  struct timespec freq_event_elapsed;
2892  client_t client;
2893  pthread_mutex_t api_mutex; // Lock for any API entry
2894 // New rig_state items go before this line ============================================
2895 };
2896 
2907  /********* ENSURE YOU DO NOT EVER MODIFY THIS STRUCTURE *********/
2908  /********* It will remain forever to provide DLL backwards compatibility ******/
2909  /*
2910  * overridable fields
2911  */
2912  // moving the hamlib_port_t to the end of rig_state and making it a pointer
2913  // this should allow changes to hamlib_port_t without breaking shared libraries
2914  // these will maintain a copy of the new port_t for backwards compatibility
2915  // to these offsets -- note these must stay until a major version update is done like 5.0
2916  hamlib_port_t_deprecated rigport_deprecated;
2917  hamlib_port_t_deprecated pttport_deprecated;
2918  hamlib_port_t_deprecated dcdport_deprecated;
2920  double vfo_comp;
2923  freq_range_t rx_range_list[HAMLIB_FRQRANGESIZ];
2924  freq_range_t tx_range_list[HAMLIB_FRQRANGESIZ];
2926  struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
2928  struct filter_list filters[HAMLIB_FLTLSTSIZ];
2932  chan_t chan_list[HAMLIB_CHANLSTSIZ];
2934  shortfreq_t max_rit;
2935  shortfreq_t max_xit;
2936  shortfreq_t max_ifshift;
2940  int preamp[HAMLIB_MAXDBLSTSIZ];
2941  int attenuator[HAMLIB_MAXDBLSTSIZ];
2954  /*
2955  * non overridable fields, internal use
2956  */
2957 
2959  vfo_t current_vfo;
2960  int vfo_list;
2962  rig_ptr_t priv;
2963  rig_ptr_t obj;
2967  freq_t current_freq;
2969  //rmode_t current_modeB; /*!< Mode currently set VFOB */
2970  pbwidth_t current_width;
2971  vfo_t tx_vfo;
2973  // mode_list is used by some
2974  // so anything added to this structure must be below here
2975  int transmit;
2978  freq_t lo_freq;
2979  time_t twiddle_time;
2981  // uplink allows gpredict to behave better by no reading the uplink VFO
2982  int uplink;
2983  struct rig_cache cache;
2984  int vfo_opt;
2999  vfo_t rx_vfo;
3001  volatile unsigned int snapshot_packet_sequence_number;
3002 
3003  volatile int multicast_publisher_run;
3005  volatile int async_data_handler_thread_run;
3006  void *async_data_handler_priv_data;
3007  volatile int poll_routine_thread_run;
3008  void *poll_routine_priv_data;
3009  pthread_mutex_t mutex_set_transaction;
3010  hamlib_port_t rigport;
3011  hamlib_port_t pttport;
3012  hamlib_port_t dcdport;
3013  /********* DO NOT ADD or CHANGE anything (or than to rename) ABOVE THIS LINE *********/
3014  /********* ENSURE ANY NEW ITEMS ARE ADDED AFTER HERE *********/
3015  /* flags instructing the rig_get routines to use cached values when asyncio is in use */
3019  int depth;
3023  char client_version[32];
3024  freq_t offset_vfoa;
3025  freq_t offset_vfob;
3027 };
3028 
3030 typedef int (*vprintf_cb_t)(enum rig_debug_level_e,
3031  rig_ptr_t,
3032  const char *,
3033  va_list);
3034 
3035 typedef int (*freq_cb_t)(RIG *, vfo_t, freq_t, rig_ptr_t);
3036 typedef int (*mode_cb_t)(RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t);
3037 typedef int (*vfo_cb_t)(RIG *, vfo_t, rig_ptr_t);
3038 typedef int (*ptt_cb_t)(RIG *, vfo_t, ptt_t, rig_ptr_t);
3039 typedef int (*dcd_cb_t)(RIG *, vfo_t, dcd_t, rig_ptr_t);
3040 typedef int (*pltune_cb_t)(RIG *,
3041  vfo_t, freq_t *,
3042  rmode_t *,
3043  pbwidth_t *,
3044  rig_ptr_t);
3045 typedef int (*spectrum_cb_t)(RIG *,
3046  struct rig_spectrum_line *,
3047  rig_ptr_t);
3048 
3050 
3068 // Do NOT add/remove from this structure -- it will break DLL backwards compatibility
3070  freq_cb_t freq_event;
3071  rig_ptr_t freq_arg;
3072  mode_cb_t mode_event;
3073  rig_ptr_t mode_arg;
3074  vfo_cb_t vfo_event;
3075  rig_ptr_t vfo_arg;
3076  ptt_cb_t ptt_event;
3077  rig_ptr_t ptt_arg;
3078  dcd_cb_t dcd_event;
3079  rig_ptr_t dcd_arg;
3080  pltune_cb_t pltune;
3081  rig_ptr_t pltune_arg;
3082  spectrum_cb_t spectrum_event;
3083  rig_ptr_t spectrum_arg;
3084  /* etc.. */
3085 };
3086 
3087 
3097 struct s_rig {
3098  struct rig_caps *caps;
3099  // Do not remove the deprecated structure -- it will mess up DLL backwards compatibility
3102  // state should really be a pointer but that's a LOT of changes involved
3103  struct rig_state state;
3104 };
3105 
3106 
3107 
3108 /* --------------- API function prototypes -----------------*/
3109 
3111 
3112 extern HAMLIB_EXPORT(RIG *) rig_init HAMLIB_PARAMS((rig_model_t rig_model));
3113 extern HAMLIB_EXPORT(int) rig_open HAMLIB_PARAMS((RIG *rig));
3114 
3115 /*
3116  * General API commands, from most primitive to least.. :()
3117  * List Set/Get functions pairs
3118  */
3119 
3120 extern HAMLIB_EXPORT(int)
3121 rig_flush_force(hamlib_port_t *port, int flush_async_data);
3122 
3123 extern HAMLIB_EXPORT(int)
3124 rig_flush(hamlib_port_t *port);
3125 
3126 extern HAMLIB_EXPORT(void)
3127 rig_lock(RIG *rig, int lock);
3128 
3129 #if BUILTINFUNC
3130 #define rig_set_freq(r,v,f) rig_set_freq(r,v,f,__builtin_FUNCTION())
3131 extern HAMLIB_EXPORT(int)
3132 rig_set_freq HAMLIB_PARAMS((RIG *rig,
3133  vfo_t vfo,
3134  freq_t freq, const char*));
3135 #else
3136 extern HAMLIB_EXPORT(int)
3137 rig_set_freq HAMLIB_PARAMS((RIG *rig,
3138  vfo_t vfo,
3139  freq_t freq));
3140 #endif
3141 #if BUILTINFUNC
3142 #define rig_get_freq(r,v,f) rig_get_freq(r,v,f,__builtin_FUNCTION())
3143 extern HAMLIB_EXPORT(int)
3144 rig_get_freq HAMLIB_PARAMS((RIG *rig,
3145  vfo_t vfo,
3146  freq_t *freq, const char*));
3147 #else
3148 extern HAMLIB_EXPORT(int)
3149 rig_get_freq HAMLIB_PARAMS((RIG *rig,
3150  vfo_t vfo,
3151  freq_t *freq));
3152 #endif
3153 
3154 extern HAMLIB_EXPORT(int)
3155 rig_set_mode HAMLIB_PARAMS((RIG *rig,
3156  vfo_t vfo,
3157  rmode_t mode,
3158  pbwidth_t width));
3159 extern HAMLIB_EXPORT(int)
3160 rig_get_mode HAMLIB_PARAMS((RIG *rig,
3161  vfo_t vfo,
3162  rmode_t *mode,
3163  pbwidth_t *width));
3164 
3165 #if BUILTINFUNC
3166 #define rig_set_vfo(r,v) rig_set_vfo(r,v,__builtin_FUNCTION())
3167 extern HAMLIB_EXPORT(int)
3168 rig_set_vfo HAMLIB_PARAMS((RIG *rig,
3169  vfo_t vfo, const char *func));
3170 #else
3171 extern HAMLIB_EXPORT(int)
3172 rig_set_vfo HAMLIB_PARAMS((RIG *rig,
3173  vfo_t vfo));
3174 #endif
3175 extern HAMLIB_EXPORT(int)
3176 rig_get_vfo HAMLIB_PARAMS((RIG *rig,
3177  vfo_t *vfo));
3178 
3179 extern HAMLIB_EXPORT(int)
3180 rig_get_vfo_info HAMLIB_PARAMS((RIG *rig,
3181  vfo_t vfo,
3182  freq_t *freq,
3183  rmode_t *mode,
3184  pbwidth_t *width,
3185  split_t *split,
3186  int *satmode));
3187 
3188 extern HAMLIB_EXPORT(int)
3189 rig_get_vfo_list HAMLIB_PARAMS((RIG *rig, char *buf, int buflen));
3190 
3191 extern HAMLIB_EXPORT(int)
3192 netrigctl_get_vfo_mode HAMLIB_PARAMS((RIG *rig));
3193 
3194 extern HAMLIB_EXPORT(int)
3195 rig_set_ptt HAMLIB_PARAMS((RIG *rig,
3196  vfo_t vfo,
3197  ptt_t ptt));
3198 extern HAMLIB_EXPORT(int)
3199 rig_get_ptt HAMLIB_PARAMS((RIG *rig,
3200  vfo_t vfo,
3201  ptt_t *ptt));
3202 
3203 extern HAMLIB_EXPORT(int)
3204 rig_get_dcd HAMLIB_PARAMS((RIG *rig,
3205  vfo_t vfo,
3206  dcd_t *dcd));
3207 
3208 extern HAMLIB_EXPORT(int)
3209 rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig,
3210  vfo_t vfo,
3211  rptr_shift_t rptr_shift));
3212 extern HAMLIB_EXPORT(int)
3213 rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig,
3214  vfo_t vfo,
3215  rptr_shift_t *rptr_shift));
3216 
3217 extern HAMLIB_EXPORT(int)
3218 rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig,
3219  vfo_t vfo,
3220  shortfreq_t rptr_offs));
3221 extern HAMLIB_EXPORT(int)
3222 rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig,
3223  vfo_t vfo,
3224  shortfreq_t *rptr_offs));
3225 
3226 extern HAMLIB_EXPORT(int)
3227 rig_set_ctcss_tone HAMLIB_PARAMS((RIG *rig,
3228  vfo_t vfo,
3229  tone_t tone));
3230 extern HAMLIB_EXPORT(int)
3231 rig_get_ctcss_tone HAMLIB_PARAMS((RIG *rig,
3232  vfo_t vfo,
3233  tone_t *tone));
3234 
3235 extern HAMLIB_EXPORT(int)
3236 rig_set_dcs_code HAMLIB_PARAMS((RIG *rig,
3237  vfo_t vfo,
3238  tone_t code));
3239 extern HAMLIB_EXPORT(int)
3240 rig_get_dcs_code HAMLIB_PARAMS((RIG *rig,
3241  vfo_t vfo,
3242  tone_t *code));
3243 
3244 extern HAMLIB_EXPORT(int)
3245 rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig,
3246  vfo_t vfo,
3247  tone_t tone));
3248 extern HAMLIB_EXPORT(int)
3249 rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig,
3250  vfo_t vfo,
3251  tone_t *tone));
3252 
3253 extern HAMLIB_EXPORT(int)
3254 rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig,
3255  vfo_t vfo,
3256  tone_t code));
3257 extern HAMLIB_EXPORT(int)
3258 rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig,
3259  vfo_t vfo,
3260  tone_t *code));
3261 
3262 extern HAMLIB_EXPORT(int)
3263 rig_set_split_freq HAMLIB_PARAMS((RIG *rig,
3264  vfo_t vfo,
3265  freq_t tx_freq));
3266 extern HAMLIB_EXPORT(int)
3267 rig_get_split_freq HAMLIB_PARAMS((RIG *rig,
3268  vfo_t vfo,
3269  freq_t *tx_freq));
3270 
3271 extern HAMLIB_EXPORT(int)
3272 rig_set_split_mode HAMLIB_PARAMS((RIG *rig,
3273  vfo_t vfo,
3274  rmode_t tx_mode,
3275  pbwidth_t tx_width));
3276 extern HAMLIB_EXPORT(int)
3277 rig_get_split_mode HAMLIB_PARAMS((RIG *rig,
3278  vfo_t vfo,
3279  rmode_t *tx_mode,
3280  pbwidth_t *tx_width));
3281 
3282 extern HAMLIB_EXPORT(int)
3283 rig_set_split_freq_mode HAMLIB_PARAMS((RIG *rig,
3284  vfo_t vfo,
3285  freq_t tx_freq,
3286  rmode_t tx_mode,
3287  pbwidth_t tx_width));
3288 extern HAMLIB_EXPORT(int)
3289 rig_get_split_freq_mode HAMLIB_PARAMS((RIG *rig,
3290  vfo_t vfo,
3291  freq_t *tx_freq,
3292  rmode_t *tx_mode,
3293  pbwidth_t *tx_width));
3294 
3295 extern HAMLIB_EXPORT(int)
3296 rig_set_split_vfo HAMLIB_PARAMS((RIG *,
3297  vfo_t rx_vfo,
3298  split_t split,
3299  vfo_t tx_vfo));
3300 extern HAMLIB_EXPORT(int)
3301 rig_get_split_vfo HAMLIB_PARAMS((RIG *,
3302  vfo_t rx_vfo,
3303  split_t *split,
3304  vfo_t *tx_vfo));
3305 
3306 extern HAMLIB_EXPORT(int)
3307 rig_set_rit HAMLIB_PARAMS((RIG *rig,
3308  vfo_t vfo,
3309  shortfreq_t rit));
3310 extern HAMLIB_EXPORT(int)
3311 rig_get_rit HAMLIB_PARAMS((RIG *rig,
3312  vfo_t vfo,
3313  shortfreq_t *rit));
3314 
3315 extern HAMLIB_EXPORT(int)
3316 rig_set_xit HAMLIB_PARAMS((RIG *rig,
3317  vfo_t vfo,
3318  shortfreq_t xit));
3319 extern HAMLIB_EXPORT(int)
3320 rig_get_xit HAMLIB_PARAMS((RIG *rig,
3321  vfo_t vfo,
3322  shortfreq_t *xit));
3323 
3324 extern HAMLIB_EXPORT(int)
3325 rig_set_ts HAMLIB_PARAMS((RIG *rig,
3326  vfo_t vfo,
3327  shortfreq_t ts));
3328 extern HAMLIB_EXPORT(int)
3329 rig_get_ts HAMLIB_PARAMS((RIG *rig,
3330  vfo_t vfo,
3331  shortfreq_t *ts));
3332 
3333 extern HAMLIB_EXPORT(int)
3334 rig_power2mW HAMLIB_PARAMS((RIG *rig,
3335  unsigned int *mwpower,
3336  float power,
3337  freq_t freq,
3338  rmode_t mode));
3339 extern HAMLIB_EXPORT(int)
3340 rig_mW2power HAMLIB_PARAMS((RIG *rig,
3341  float *power,
3342  unsigned int mwpower,
3343  freq_t freq,
3344  rmode_t mode));
3345 
3346 extern HAMLIB_EXPORT(shortfreq_t)
3347 rig_get_resolution HAMLIB_PARAMS((RIG *rig,
3348  rmode_t mode));
3349 
3350 extern HAMLIB_EXPORT(int)
3351 rig_set_level HAMLIB_PARAMS((RIG *rig,
3352  vfo_t vfo,
3353  setting_t level,
3354  value_t val));
3355 extern HAMLIB_EXPORT(int)
3356 rig_get_level HAMLIB_PARAMS((RIG *rig,
3357  vfo_t vfo,
3358  setting_t level,
3359  value_t *val));
3360 
3361 #define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s))
3362 
3363 extern HAMLIB_EXPORT(int)
3364 rig_set_parm HAMLIB_PARAMS((RIG *rig,
3365  setting_t parm,
3366  value_t val));
3367 extern HAMLIB_EXPORT(int)
3368 rig_get_parm HAMLIB_PARAMS((RIG *rig,
3369  setting_t parm,
3370  value_t *val));
3371 
3372 extern HAMLIB_EXPORT(int)
3373 rig_set_conf HAMLIB_PARAMS((RIG *rig,
3374  hamlib_token_t token,
3375  const char *val));
3376 // deprecating rig_get_conf
3377 extern HAMLIB_EXPORT(int)
3378 rig_get_conf HAMLIB_PARAMS((RIG *rig,
3379  hamlib_token_t token,
3380  char *val));
3381 extern HAMLIB_EXPORT(int)
3382 rig_get_conf2 HAMLIB_PARAMS((RIG *rig,
3383  hamlib_token_t token,
3384  char *val,
3385  int val_len));
3386 
3387 extern HAMLIB_EXPORT(int)
3388 rig_set_powerstat HAMLIB_PARAMS((RIG *rig,
3389  powerstat_t status));
3390 extern HAMLIB_EXPORT(int)
3391 rig_get_powerstat HAMLIB_PARAMS((RIG *rig,
3392  powerstat_t *status));
3393 
3394 extern HAMLIB_EXPORT(int)
3395 rig_reset HAMLIB_PARAMS((RIG *rig,
3396  reset_t reset)); /* dangerous! */
3397 
3398 extern HAMLIB_EXPORT(int)
3399 rig_set_ext_level HAMLIB_PARAMS((RIG *rig,
3400  vfo_t vfo,
3401  hamlib_token_t token,
3402  value_t val));
3403 extern HAMLIB_EXPORT(int)
3404 rig_get_ext_level HAMLIB_PARAMS((RIG *rig,
3405  vfo_t vfo,
3406  hamlib_token_t token,
3407  value_t *val));
3408 
3409 extern HAMLIB_EXPORT(int)
3410 rig_set_ext_func HAMLIB_PARAMS((RIG *rig,
3411  vfo_t vfo,
3412  hamlib_token_t token,
3413  int status));
3414 extern HAMLIB_EXPORT(int)
3415 rig_get_ext_func HAMLIB_PARAMS((RIG *rig,
3416  vfo_t vfo,
3417  hamlib_token_t token,
3418  int *status));
3419 
3420 extern HAMLIB_EXPORT(int)
3421 rig_set_ext_parm HAMLIB_PARAMS((RIG *rig,
3422  hamlib_token_t token,
3423  value_t val));
3424 extern HAMLIB_EXPORT(int)
3425 rig_get_ext_parm HAMLIB_PARAMS((RIG *rig,
3426  hamlib_token_t token,
3427  value_t *val));
3428 
3429 extern HAMLIB_EXPORT(int)
3430 rig_ext_func_foreach HAMLIB_PARAMS((RIG *rig,
3431  int (*cfunc)(RIG *,
3432  const struct confparams *,
3433  rig_ptr_t),
3434  rig_ptr_t data));
3435 extern HAMLIB_EXPORT(int)
3436 rig_ext_level_foreach HAMLIB_PARAMS((RIG *rig,
3437  int (*cfunc)(RIG *,
3438  const struct confparams *,
3439  rig_ptr_t),
3440  rig_ptr_t data));
3441 extern HAMLIB_EXPORT(int)
3442 rig_ext_parm_foreach HAMLIB_PARAMS((RIG *rig,
3443  int (*cfunc)(RIG *,
3444  const struct confparams *,
3445  rig_ptr_t),
3446  rig_ptr_t data));
3447 
3448 extern HAMLIB_EXPORT(const struct confparams *)
3449 rig_ext_lookup HAMLIB_PARAMS((RIG *rig,
3450  const char *name));
3451 
3452 extern HAMLIB_EXPORT(const struct confparams *)
3453 rig_ext_lookup_tok HAMLIB_PARAMS((RIG *rig,
3454  hamlib_token_t token));
3455 extern HAMLIB_EXPORT(hamlib_token_t)
3456 rig_ext_token_lookup HAMLIB_PARAMS((RIG *rig,
3457  const char *name));
3458 
3459 
3460 extern HAMLIB_EXPORT(int)
3461 rig_token_foreach HAMLIB_PARAMS((RIG *rig,
3462  int (*cfunc)(const struct confparams *,
3463  rig_ptr_t),
3464  rig_ptr_t data));
3465 
3466 extern HAMLIB_EXPORT(const struct confparams *)
3467 rig_confparam_lookup HAMLIB_PARAMS((RIG *rig,
3468  const char *name));
3469 extern HAMLIB_EXPORT(hamlib_token_t)
3470 rig_token_lookup HAMLIB_PARAMS((RIG *rig,
3471  const char *name));
3472 
3473 extern HAMLIB_EXPORT(int)
3474 rig_close HAMLIB_PARAMS((RIG *rig));
3475 
3476 extern HAMLIB_EXPORT(int)
3477 rig_cleanup HAMLIB_PARAMS((RIG *rig));
3478 
3479 extern HAMLIB_EXPORT(int)
3480 rig_set_ant HAMLIB_PARAMS((RIG *rig,
3481  vfo_t vfo,
3482  ant_t ant, /* antenna */
3483  value_t option)); /* optional ant info */
3484 extern HAMLIB_EXPORT(int)
3485 rig_get_ant HAMLIB_PARAMS((RIG *rig,
3486  vfo_t vfo,
3487  ant_t ant,
3488  value_t *option,
3489  ant_t *ant_curr,
3490  ant_t *ant_tx,
3491  ant_t *ant_rx));
3492 
3493 extern HAMLIB_EXPORT(setting_t)
3494 rig_has_get_level HAMLIB_PARAMS((RIG *rig,
3495  setting_t level));
3496 extern HAMLIB_EXPORT(setting_t)
3497 rig_has_set_level HAMLIB_PARAMS((RIG *rig,
3498  setting_t level));
3499 
3500 extern HAMLIB_EXPORT(setting_t)
3501 rig_has_get_parm HAMLIB_PARAMS((RIG *rig,
3502  setting_t parm));
3503 extern HAMLIB_EXPORT(setting_t)
3504 rig_has_set_parm HAMLIB_PARAMS((RIG *rig,
3505  setting_t parm));
3506 
3507 extern HAMLIB_EXPORT(setting_t)
3508 rig_has_get_func HAMLIB_PARAMS((RIG *rig,
3509  setting_t func));
3510 extern HAMLIB_EXPORT(setting_t)
3511 rig_has_set_func HAMLIB_PARAMS((RIG *rig,
3512  setting_t func));
3513 
3514 extern HAMLIB_EXPORT(int)
3515 rig_set_func HAMLIB_PARAMS((RIG *rig,
3516  vfo_t vfo,
3517  setting_t func,
3518  int status));
3519 extern HAMLIB_EXPORT(int)
3520 rig_get_func HAMLIB_PARAMS((RIG *rig,
3521  vfo_t vfo,
3522  setting_t func,
3523  int *status));
3524 
3525 extern HAMLIB_EXPORT(int)
3526 rig_send_dtmf HAMLIB_PARAMS((RIG *rig,
3527  vfo_t vfo,
3528  const char *digits));
3529 extern HAMLIB_EXPORT(int)
3530 rig_recv_dtmf HAMLIB_PARAMS((RIG *rig,
3531  vfo_t vfo,
3532  char *digits,
3533  int *length));
3534 
3535 extern HAMLIB_EXPORT(int)
3536 rig_send_morse HAMLIB_PARAMS((RIG *rig,
3537  vfo_t vfo,
3538  const char *msg));
3539 
3540 extern HAMLIB_EXPORT(int)
3541 rig_stop_morse HAMLIB_PARAMS((RIG *rig,
3542  vfo_t vfo));
3543 
3544 extern HAMLIB_EXPORT(int)
3545 rig_wait_morse HAMLIB_PARAMS((RIG *rig,
3546  vfo_t vfo));
3547 
3548 extern HAMLIB_EXPORT(int)
3549 rig_send_voice_mem HAMLIB_PARAMS((RIG *rig,
3550  vfo_t vfo,
3551  int ch));
3552 
3553 extern HAMLIB_EXPORT(int)
3554 rig_stop_voice_mem HAMLIB_PARAMS((RIG *rig,
3555  vfo_t vfo));
3556 
3557 extern HAMLIB_EXPORT(int)
3558 rig_set_bank HAMLIB_PARAMS((RIG *rig,
3559  vfo_t vfo,
3560  int bank));
3561 
3562 extern HAMLIB_EXPORT(int)
3563 rig_set_mem HAMLIB_PARAMS((RIG *rig,
3564  vfo_t vfo,
3565  int ch));
3566 extern HAMLIB_EXPORT(int)
3567 rig_get_mem HAMLIB_PARAMS((RIG *rig,
3568  vfo_t vfo,
3569  int *ch));
3570 
3571 extern HAMLIB_EXPORT(int)
3572 rig_vfo_op HAMLIB_PARAMS((RIG *rig,
3573  vfo_t vfo,
3574  vfo_op_t op));
3575 
3576 extern HAMLIB_EXPORT(vfo_op_t)
3577 rig_has_vfo_op HAMLIB_PARAMS((RIG *rig,
3578  vfo_op_t op));
3579 
3580 extern HAMLIB_EXPORT(int)
3581 rig_scan HAMLIB_PARAMS((RIG *rig,
3582  vfo_t vfo,
3583  scan_t scan,
3584  int ch));
3585 
3586 extern HAMLIB_EXPORT(scan_t)
3587 rig_has_scan HAMLIB_PARAMS((RIG *rig,
3588  scan_t scan));
3589 
3590 extern HAMLIB_EXPORT(int)
3591 rig_set_channel HAMLIB_PARAMS((RIG *rig,
3592  vfo_t vfo,
3593  const channel_t *chan)); /* mem */
3594 extern HAMLIB_EXPORT(int)
3595 rig_get_channel HAMLIB_PARAMS((RIG *rig,
3596  vfo_t vfo,
3597  channel_t *chan, int read_only));
3598 
3599 extern HAMLIB_EXPORT(int)
3600 rig_set_chan_all HAMLIB_PARAMS((RIG *rig,
3601  vfo_t vfo,
3602  const channel_t chans[]));
3603 extern HAMLIB_EXPORT(int)
3604 rig_get_chan_all HAMLIB_PARAMS((RIG *rig,
3605  vfo_t vfo,
3606  channel_t chans[]));
3607 
3608 extern HAMLIB_EXPORT(int)
3609 rig_set_chan_all_cb HAMLIB_PARAMS((RIG *rig,
3610  vfo_t vfo,
3611  chan_cb_t chan_cb,
3612  rig_ptr_t));
3613 extern HAMLIB_EXPORT(int)
3614 rig_get_chan_all_cb HAMLIB_PARAMS((RIG *rig,
3615  vfo_t vfo,
3616  chan_cb_t chan_cb,
3617  rig_ptr_t));
3618 
3619 extern HAMLIB_EXPORT(int)
3620 rig_set_mem_all_cb HAMLIB_PARAMS((RIG *rig,
3621  vfo_t vfo,
3622  chan_cb_t chan_cb,
3623  confval_cb_t parm_cb,
3624  rig_ptr_t));
3625 extern HAMLIB_EXPORT(int)
3626 rig_get_mem_all_cb HAMLIB_PARAMS((RIG *rig,
3627  vfo_t vfo,
3628  chan_cb_t chan_cb,
3629  confval_cb_t parm_cb,
3630  rig_ptr_t));
3631 
3632 extern HAMLIB_EXPORT(int)
3633 rig_set_mem_all HAMLIB_PARAMS((RIG *rig,
3634  vfo_t vfo,
3635  const channel_t *chan,
3636  const struct confparams *,
3637  const value_t *));
3638 extern HAMLIB_EXPORT(int)
3639 rig_get_mem_all HAMLIB_PARAMS((RIG *rig,
3640  vfo_t vfo,
3641  channel_t *chan,
3642  const struct confparams *,
3643  value_t *));
3644 
3645 extern HAMLIB_EXPORT(const chan_t *)
3646 rig_lookup_mem_caps HAMLIB_PARAMS((RIG *rig,
3647  int ch));
3648 
3649 extern HAMLIB_EXPORT(int)
3650 rig_mem_count HAMLIB_PARAMS((RIG *rig));
3651 
3652 extern HAMLIB_EXPORT(int)
3653 rig_set_trn HAMLIB_PARAMS((RIG *rig,
3654  int trn));
3655 extern HAMLIB_EXPORT(int)
3656 rig_get_trn HAMLIB_PARAMS((RIG *rig,
3657  int *trn));
3658 
3659 extern HAMLIB_EXPORT(int)
3660 rig_set_freq_callback HAMLIB_PARAMS((RIG *,
3661  freq_cb_t,
3662  rig_ptr_t));
3663 
3664 extern HAMLIB_EXPORT(int)
3665 rig_set_mode_callback HAMLIB_PARAMS((RIG *,
3666  mode_cb_t,
3667  rig_ptr_t));
3668 extern HAMLIB_EXPORT(int)
3669 rig_set_vfo_callback HAMLIB_PARAMS((RIG *,
3670  vfo_cb_t,
3671  rig_ptr_t));
3672 
3673 extern HAMLIB_EXPORT(int)
3674 rig_set_ptt_callback HAMLIB_PARAMS((RIG *,
3675  ptt_cb_t,
3676  rig_ptr_t));
3677 
3678 extern HAMLIB_EXPORT(int)
3679 rig_set_dcd_callback HAMLIB_PARAMS((RIG *,
3680  dcd_cb_t,
3681  rig_ptr_t));
3682 
3683 extern HAMLIB_EXPORT(int)
3684 rig_set_pltune_callback HAMLIB_PARAMS((RIG *,
3685  pltune_cb_t,
3686  rig_ptr_t));
3687 
3688 extern HAMLIB_EXPORT(int)
3689 rig_set_spectrum_callback HAMLIB_PARAMS((RIG *,
3690  spectrum_cb_t,
3691  rig_ptr_t));
3692 
3693 extern HAMLIB_EXPORT(int)
3694 rig_set_twiddle HAMLIB_PARAMS((RIG *rig,
3695  int seconds));
3696 
3697 extern HAMLIB_EXPORT(int)
3698 rig_get_twiddle HAMLIB_PARAMS((RIG *rig,
3699  int *seconds));
3700 
3701 extern HAMLIB_EXPORT(int)
3702 rig_set_uplink HAMLIB_PARAMS((RIG *rig,
3703  int val));
3704 
3705 extern HAMLIB_EXPORT(const char *)
3706 rig_get_info HAMLIB_PARAMS((RIG *rig));
3707 
3708 extern HAMLIB_EXPORT(struct rig_caps *)
3709 rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model));
3710 
3711 extern HAMLIB_EXPORT(const freq_range_t *)
3712 rig_get_range HAMLIB_PARAMS((const freq_range_t *range_list,
3713  freq_t freq,
3714  rmode_t mode));
3715 
3716 extern HAMLIB_EXPORT(pbwidth_t)
3717 rig_passband_normal HAMLIB_PARAMS((RIG *rig,
3718  rmode_t mode));
3719 extern HAMLIB_EXPORT(pbwidth_t)
3720 rig_passband_narrow HAMLIB_PARAMS((RIG *rig,
3721  rmode_t mode));
3722 extern HAMLIB_EXPORT(pbwidth_t)
3723 rig_passband_wide HAMLIB_PARAMS((RIG *rig,
3724  rmode_t mode));
3725 
3726 extern HAMLIB_EXPORT(const char *)
3727 rigerror HAMLIB_PARAMS((int errnum));
3728 extern HAMLIB_EXPORT(const char *)
3729 rigerror2 HAMLIB_PARAMS((int errnum));
3730 
3731 extern HAMLIB_EXPORT(int)
3732 rig_setting2idx HAMLIB_PARAMS((setting_t s));
3733 
3734 #define HAMLIB_SETTINGS_FILE "hamlib_settings"
3735 
3736 extern HAMLIB_EXPORT(setting_t)
3737 rig_idx2setting(int i);
3738 /*
3739  * Even if these functions are prefixed with "rig_", they are not rig specific
3740  * Maybe "hamlib_" would have been better. Let me know. --SF
3741  */
3742 extern HAMLIB_EXPORT(void)
3743 rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
3744 
3745 extern HAMLIB_EXPORT(void)
3746 rig_get_debug HAMLIB_PARAMS((enum rig_debug_level_e *debug_level));
3747 
3748 extern HAMLIB_EXPORT(void)
3749 rig_set_debug_time_stamp HAMLIB_PARAMS((int flag));
3750 
3751 #define rig_set_debug_level(level) rig_set_debug(level)
3752 
3753 extern HAMLIB_EXPORT(int)
3754 rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
3755 
3756 
3757 extern HAMLIB_EXPORT(void)add2debugmsgsave(const char *s);
3758 // this needs to be fairly big to avoid compiler warnings
3759 extern HAMLIB_EXPORT_VAR(char) debugmsgsave[DEBUGMSGSAVE_SIZE]; // last debug msg
3760 extern HAMLIB_EXPORT_VAR(char) debugmsgsave2[DEBUGMSGSAVE_SIZE]; // last-1 debug msg
3761 // debugmsgsave3 is deprecated
3762 extern HAMLIB_EXPORT_VAR(char) debugmsgsave3[DEBUGMSGSAVE_SIZE]; // last-2 debug msg
3763 #define rig_debug_clear() { debugmsgsave[0] = debugmsgsave2[0] = debugmsgsave3[0] = 0; };
3764 #ifndef __cplusplus
3765 #ifdef __GNUC__
3766 // doing the debug macro with a dummy sprintf allows gcc to check the format string
3767 #define rig_debug(debug_level,fmt,...) do { snprintf(debugmsgsave2,sizeof(debugmsgsave2),fmt,__VA_ARGS__);rig_debug(debug_level,fmt,##__VA_ARGS__); add2debugmsgsave(debugmsgsave2); } while(0)
3768 #endif
3769 #endif
3770 
3771 // Measuring elapsed time -- local variable inside function when macro is used
3772 #define ELAPSED1 struct timespec __begin; elapsed_ms(&__begin, HAMLIB_ELAPSED_SET);
3773 #define ELAPSED2 rig_debug(RIG_DEBUG_VERBOSE, "%s%d:%s: elapsed=%.0lfms\n", spaces(STATE(rig)->depth), STATE(rig)->depth, __func__, elapsed_ms(&__begin, HAMLIB_ELAPSED_GET));
3774 
3775 // use this instead of snprintf for automatic detection of buffer limit
3776 #define SNPRINTF(s,n,...) { if (snprintf(s,n,##__VA_ARGS__) >= (n)) fprintf(stderr,"***** %s(%d): message truncated *****\n", __func__, __LINE__); }
3777 
3778 extern HAMLIB_EXPORT(void)
3779 rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level,
3780  const char *fmt, ...));
3781 
3782 extern HAMLIB_EXPORT(vprintf_cb_t)
3783 rig_set_debug_callback HAMLIB_PARAMS((vprintf_cb_t cb,
3784  rig_ptr_t arg));
3785 
3786 extern HAMLIB_EXPORT(FILE *)
3787 rig_set_debug_file HAMLIB_PARAMS((FILE *stream));
3788 
3789 extern HAMLIB_EXPORT(int)
3790 rig_register HAMLIB_PARAMS((struct rig_caps *caps));
3791 
3792 extern HAMLIB_EXPORT(int)
3793 rig_unregister HAMLIB_PARAMS((rig_model_t rig_model));
3794 
3795 extern HAMLIB_EXPORT(int)
3796 rig_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rig_caps *, rig_ptr_t),
3797  rig_ptr_t data));
3798 
3799 extern HAMLIB_EXPORT(int)
3800 rig_list_foreach_model HAMLIB_PARAMS((int (*cfunc)(const rig_model_t rig_model, rig_ptr_t),
3801  rig_ptr_t data));
3802 
3803 extern HAMLIB_EXPORT(int)
3804 rig_load_backend HAMLIB_PARAMS((const char *be_name));
3805 
3806 extern HAMLIB_EXPORT(int)
3807 rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model));
3808 
3809 extern HAMLIB_EXPORT(int)
3810 rig_load_all_backends HAMLIB_PARAMS((void));
3811 
3812 typedef int (*rig_probe_func_t)(const hamlib_port_t *, rig_model_t, rig_ptr_t);
3813 
3814 extern HAMLIB_EXPORT(int)
3815 rig_probe_all HAMLIB_PARAMS((hamlib_port_t *p,
3816  rig_probe_func_t,
3817  rig_ptr_t));
3818 
3819 extern HAMLIB_EXPORT(rig_model_t)
3820 rig_probe HAMLIB_PARAMS((hamlib_port_t *p));
3821 
3822 
3823 /* Misc calls */
3824 extern HAMLIB_EXPORT(const char *) rig_strrmode(rmode_t mode);
3825 extern HAMLIB_EXPORT(int) rig_strrmodes(rmode_t modes, char *buf, int buflen);
3826 extern HAMLIB_EXPORT(const char *) rig_strvfo(vfo_t vfo);
3827 extern HAMLIB_EXPORT(const char *) rig_strfunc(setting_t);
3828 extern HAMLIB_EXPORT(const char *) rig_strlevel(setting_t);
3829 extern HAMLIB_EXPORT(const char *) rig_strparm(setting_t);
3830 extern HAMLIB_EXPORT(const char *) rig_stragclevel(enum agc_level_e level);
3831 extern HAMLIB_EXPORT(enum agc_level_e) rig_levelagcstr (const char *agcString);
3832 extern HAMLIB_EXPORT(enum agc_level_e) rig_levelagcvalue (int agcValue);
3833 extern HAMLIB_EXPORT(value_t) rig_valueagclevel (enum agc_level_e agcLevel);
3834 extern HAMLIB_EXPORT(const char *) rig_strptrshift(rptr_shift_t);
3835 extern HAMLIB_EXPORT(const char *) rig_strvfop(vfo_op_t op);
3836 extern HAMLIB_EXPORT(const char *) rig_strscan(scan_t scan);
3837 extern HAMLIB_EXPORT(const char *) rig_strstatus(enum rig_status_e status);
3838 extern HAMLIB_EXPORT(const char *) rig_strmtype(chan_type_t mtype);
3839 extern HAMLIB_EXPORT(const char *) rig_strspectrummode(enum rig_spectrum_mode_e mode);
3840 extern HAMLIB_EXPORT(const char *) rig_strcommstatus(rig_comm_status_t vfo);
3841 
3842 extern HAMLIB_EXPORT(rmode_t) rig_parse_mode(const char *s);
3843 extern HAMLIB_EXPORT(vfo_t) rig_parse_vfo(const char *s);
3844 extern HAMLIB_EXPORT(setting_t) rig_parse_func(const char *s);
3845 extern HAMLIB_EXPORT(setting_t) rig_parse_level(const char *s);
3846 extern HAMLIB_EXPORT(setting_t) rig_parse_parm(const char *s);
3847 extern HAMLIB_EXPORT(vfo_op_t) rig_parse_vfo_op(const char *s);
3848 extern HAMLIB_EXPORT(scan_t) rig_parse_scan(const char *s);
3849 extern HAMLIB_EXPORT(rptr_shift_t) rig_parse_rptr_shift(const char *s);
3850 extern HAMLIB_EXPORT(chan_type_t) rig_parse_mtype(const char *s);
3851 
3852 extern HAMLIB_EXPORT(const char *) rig_license HAMLIB_PARAMS((void));
3853 extern HAMLIB_EXPORT(const char *) rig_version HAMLIB_PARAMS((void));
3854 extern HAMLIB_EXPORT(const char *) rig_copyright HAMLIB_PARAMS((void));
3855 
3856 extern HAMLIB_EXPORT(void) rig_no_restore_ai(void);
3857 
3858 extern HAMLIB_EXPORT(int) rig_get_cache_timeout_ms(RIG *rig, hamlib_cache_t selection);
3859 extern HAMLIB_EXPORT(int) rig_set_cache_timeout_ms(RIG *rig, hamlib_cache_t selection, int ms);
3860 
3861 extern HAMLIB_EXPORT(int) rig_set_vfo_opt(RIG *rig, int status);
3862 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);
3863 extern HAMLIB_EXPORT(int) rig_get_rig_info(RIG *rig, char *response, int max_response_len);
3864 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);
3865 extern HAMLIB_EXPORT(int) rig_get_cache_freq(RIG *rig, vfo_t vfo, freq_t *freq, int * cache_ms_freq);
3866 
3867 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);
3868 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);
3869 
3870 typedef unsigned long rig_useconds_t;
3871 extern HAMLIB_EXPORT(int) hl_usleep(rig_useconds_t msec);
3872 
3873 extern HAMLIB_EXPORT(int) rig_cookie(RIG *rig, enum cookie_e cookie_cmd, char *cookie, int cookie_len);
3874 
3875 extern HAMLIB_EXPORT(int) rig_password(RIG *rig, const char *key1);
3876 extern HAMLIB_EXPORT(void) rig_password_generate_secret(char *pass,
3877  char result[HAMLIB_SECRET_LENGTH + 1]);
3878 extern HAMLIB_EXPORT(int) rig_send_raw(RIG *rig, const unsigned char* send, int send_len, unsigned char* reply, int reply_len, unsigned char *term);
3879 
3880 extern HAMLIB_EXPORT(int)
3881 longlat2locator HAMLIB_PARAMS((double longitude,
3882  double latitude,
3883  char *locator_res,
3884  int pair_count));
3885 
3886 extern HAMLIB_EXPORT(int)
3887 locator2longlat HAMLIB_PARAMS((double *longitude,
3888  double *latitude,
3889  const char *locator));
3890 
3891 extern HAMLIB_EXPORT(char*) rig_make_md5(char *pass);
3892 
3893 extern HAMLIB_EXPORT(int) rig_set_lock_mode(RIG *rig, int lock);
3894 extern HAMLIB_EXPORT(int) rig_get_lock_mode(RIG *rig, int *lock);
3895 
3896 extern HAMLIB_EXPORT(int) rig_is_model(RIG *rig, rig_model_t model);
3897 
3898 extern HAMLIB_EXPORT(char*) rig_date_strget(char *buf, int buflen, int localtime);
3899 
3900 enum GPIO { GPIO1, GPIO2, GPIO3, GPIO4 };
3901 extern HAMLIB_EXPORT(int) rig_cm108_get_bit(hamlib_port_t *p, enum GPIO gpio, int *bit);
3902 extern HAMLIB_EXPORT(int) rig_cm108_set_bit(hamlib_port_t *p, enum GPIO gpio, int bit);
3903 extern HAMLIB_EXPORT(int) rig_band_changed(RIG *rig, hamlib_bandselect_t band);
3904 
3905 extern HAMLIB_EXPORT(void *) rig_data_pointer(RIG *rig, rig_ptrx_t idx);
3906 
3908 
3909 __END_DECLS
3910 
3911 #endif /* _RIG_H */
3912 
Definition: rig.h:723
const char * rig_strstatus(enum rig_status_e status)
Convert enum RIG_STATUS_... to printable string.
Definition: misc.c:427
rig_port_t port_type
Definition: rig.h:2839
Definition: rig.h:793
scan_t rig_has_scan(RIG *rig, scan_t scan)
check availability of scanning functions
Definition: rig.c:7158
setting_t funcs
Definition: rig.h:1639
Definition: rig.h:713
enum serial_handshake_e serial_handshake
Definition: rig.h:2845
int multicast_data_port
Definition: rig.h:2881
int rig_get_cache_freq(RIG *rig, vfo_t vfo, freq_t *freq, int *cache_ms_freq_p)
get cached values for a VFO
Definition: cache.c:549
hamlib_token_t token
Definition: rig.h:902
int rig_get_mem(RIG *rig, vfo_t vfo, int *ch)
get the current memory channel number
Definition: mem.c:131
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:597
vfo_cb_t vfo_event
Definition: rig.h:3074
int auto_power_on
Definition: rig.h:2785
rig_debug_level_e
Hamlib debug levels.
Definition: rig.h:243
struct rig_callbacks callbacks
Definition: rig.h:3101
double vfo_comp
Definition: rig.h:2920
value_t step
Definition: rig.h:1733
int rig_get_ext_level(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t *val)
get the value of a level extra parameter
Definition: settings.c:728
Definition: rig.h:788
unsigned tuning_step
Definition: rig.h:1636
const char * rig_strspectrummode(enum rig_spectrum_mode_e mode)
Convert enum RIG_SPECTRUM_MODE_... to alpha string.
Definition: misc.c:1811
Definition: rig.h:1145
unsigned channel_desc
Definition: rig.h:1647
Definition: rig.h:1171
vfo_op_t vfo_ops
Definition: rig.h:2856
Definition: rig.h:667
Definition: rig.h:792
unsigned tx_vfo
Definition: rig.h:1633
int rig_set_uplink(RIG *rig, int val)
For GPredict to avoid reading frequency on uplink VFO.
Definition: rig.c:1922
setting_t rig_has_get_level(RIG *rig, setting_t level)
check retrieval ability of level settings
Definition: settings.c:321
Definition: rig.h:448
setting_t has_set_func
Definition: rig.h:2744
struct ext_list * ext_levels
Definition: rig.h:1605
hamlib_bandselect_t
Definition: rig.h:796
int raw
Definition: rig.h:1748
int rig_set_dcd_callback(RIG *rig, dcd_cb_t cb, rig_ptr_t arg)
set the callback for dcd events
Definition: event.c:491
double freq_t
Frequency type.
Definition: rig.h:458
Definition: rig.h:245
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: cache.c:310
int rig_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd)
get the status of the DCD
Definition: rig.c:4213
value_t min
Definition: rig.h:1731
int use_cached_mode
Definition: rig.h:3017
rig_ptr_t spectrum_arg
Definition: rig.h:3083
shortfreq_t max_ifshift
Definition: rig.h:2936
unsigned bank_num
Definition: rig.h:1621
Definition: rig.h:670
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:1525
vfo_t tx_vfo
Definition: rig.h:2771
float f
Definition: rig.h:1029
int rig_set_channel(RIG *rig, vfo_t vfo, const channel_t *chan)
set channel data
Definition: mem.c:684
int rig_set_vfo(RIG *rig, vfo_t vfo)
set the current VFO
Definition: rig.c:3301
scan_t
Rig Scan operation.
Definition: rig.h:845
Definition: rig.h:673
float step
Definition: rig.h:912
int rig_get_rig_info(RIG *rig, char *response, int max_response_len)
get freq/mode/width for requested VFO
Definition: rig.c:7948
Definition: rig.h:1151
shortfreq_t xit
Definition: rig.h:1595
void rig_debug(enum rig_debug_level_e debug_level, const char *fmt,...)
Print debugging messages through stderr by default.
Definition: debug.c:206
Definition: rig.h:777
Definition: rig.h:1671
Definition: rig.h:797
dcd_type_t dcd_type
Definition: rig.h:2838
uint32_t rig_model_t
Convenience type definition for rig model.
Definition: riglist.h:709
Definition: rig.h:368
int chan_desc_sz
Definition: rig.h:2860
unsigned tx_width
Definition: rig.h:1630
pbwidth_t tx_width
Definition: rig.h:1586
Definition: rig.h:753
char tag[32]
Definition: rig.h:1607
Definition: rig.h:696
Definition: rig.h:321
int low_power
Definition: rig.h:1462
Definition: rig.h:1678
Definition: rig.h:1142
hamlib_port_t_deprecated rigport_deprecated
Definition: rig.h:2716
hamlib_port_t_deprecated dcdport_deprecated
Definition: rig.h:2718
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:1326
FILE * rig_set_debug_file(FILE *stream)
Change the output stream from stderr to a different stream.
Definition: debug.c:334
freq_range_t rx_range_list[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2923
rig_ptr_t priv
Definition: rig.h:2962
const char * dflt
Definition: rig.h:906
void rig_get_debug(enum rig_debug_level_e *debug_level)
Get the current debug level.
Definition: debug.c:160
int rig_send_morse(RIG *rig, vfo_t vfo, const char *msg)
send morse code
Definition: rig.c:7416
const char * cs
Definition: rig.h:1031
rig_ptr_t pltune_arg
Definition: rig.h:3081
int serial_data_bits
Definition: rig.h:2842
int transaction_active
Definition: rig.h:2758
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:6730
Deprecated Rig state containing live data and customized fields. Due to DLL problems this remains in-...
Definition: rig.h:2906
freq_t endf
Definition: rig.h:1460
powerstat_t powerstat
Definition: rig.h:2821
int twiddle_timeout
Definition: rig.h:2980
shortfreq_t max_ifshift
Definition: rig.h:2736
gran_t level_gran[64]
Definition: rig.h:2950
Definition: rig.h:194
pbwidth_t rig_passband_wide(RIG *rig, rmode_t mode)
get the wide passband of a mode
Definition: rig.c:3242
freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2861
int uplink
Definition: rig.h:2782
gran_t level_gran[64]
Definition: rig.h:2750
vfo_t vfo
Definition: rig.h:1578
Definition: rig.h:337
const char * model_name
Definition: rig.h:2831
Definition: rig.h:422
unsigned rptr_offs
Definition: rig.h:1635
const char * rig_strlevel(setting_t level)
Convert enum RIG_LEVEL_... to alpha string.
Definition: misc.c:1179
Definition: rig.h:201
int rig_set_bank(RIG *rig, vfo_t vfo, int bank)
set the current memory bank
Definition: mem.c:194
hamlib_token_t rig_token_lookup(RIG *rig, const char *name)
lookup a token id
Definition: conf.c:1443
int ptt_share
Definition: rig.h:2992
int rig_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch)
perform Memory/VFO operations
Definition: rig.c:7191
int freq_skip
Definition: rig.h:2891
Definition: rig.h:420
const struct confparams * rig_ext_lookup_tok(RIG *rig, hamlib_token_t token)
lookup ext token, return pointer to confparams struct.
Definition: ext.c:279
Definition: rig.h:811
Definition: rig.h:682
int rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
get the frequency of the target VFO
Definition: rig.c:2429
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:6656
rig_parm_e
Rig Parameters.
Definition: rig.h:1137
struct cal_table::@3 table[HAMLIB_MAX_CAL_LENGTH]
Tuning step definition.
Definition: rig.h:1490
hamlib_token_t rig_ext_token_lookup(RIG *rig, const char *name)
Simple lookup returning token id associated with name.
Definition: ext.c:324
Definition: rig.h:419
int rig_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit)
get the current XIT offset
Definition: rig.c:6251
setting_t rig_has_set_level(RIG *rig, setting_t level)
check settable ability of level settings
Definition: settings.c:351
vfo_op_t rig_has_vfo_op(RIG *rig, vfo_op_t op)
check retrieval ability of VFO operations
Definition: rig.c:7046
int rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
set PTT on/off
Definition: rig.c:3552
Definition: rig.h:884
pbwidth_t current_width
Definition: rig.h:2970
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:132
int rig_set_trn(RIG *rig, int trn)
control the transceive mode
Definition: event.c:582
Frequency range.
Definition: rig.h:1458
ann_t announces
Definition: rig.h:2738
Calibration table struct for float values.
Definition: rig.h:1775
hamlib_port_t dcdport
Definition: rig.h:3012
Definition: rig.h:790
Definition: rig.h:206
double signal_strength_min
Definition: rig.h:1853
Definition: rig.h:192
const char * rig_strparm(setting_t parm)
Convert enum RIG_PARM_... to alpha string.
Definition: misc.c:1353
Definition: rig.h:318
powerstat_t
Radio power state.
Definition: rig.h:710
Definition: network.c:145
time_t twiddle_time
Definition: rig.h:2979
int lock_mode
Definition: rig.h:2820
Definition: rig.h:889
Definition: rig.h:195
int startc
Definition: rig.h:1697
rig_model_t rig_model
Definition: rig.h:2830
Definition: rig.h:324
value_t levels[64]
Definition: rig.h:1597
int vfo_list
Definition: rig.h:2760
double signal_strength_max
Definition: rig.h:1854
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:521
Definition: rig.h:789
signed long shortfreq_t
Short frequency type.
Definition: rig.h:480
vfo_t rx_vfo
Definition: rig.h:2999
int async_data_enabled
Definition: rig.h:2965
chan_type_t rig_parse_mtype(const char *s)
Convert alpha string to enum RIG_MTYPE_...
Definition: misc.c:1746
struct filter_list filters[HAMLIB_FLTLSTSIZ]
Definition: rig.h:2728
unsigned flags
Definition: rig.h:1646
setting_t has_get_func
Definition: rig.h:2743
signed int i
Definition: rig.h:1027
Definition: rig.h:1824
pbwidth_t current_width
Definition: rig.h:2770
setting_t has_get_parm
Definition: rig.h:2747
int poll_interval
Definition: rig.h:2966
Definition: rig.h:372
Definition: rig.h:323
Definition: rig.h:1144
const chan_t * rig_lookup_mem_caps(RIG *rig, int ch)
lookup the memory type and capabilities
Definition: mem.c:1587
freq_t freq
Definition: rig.h:1580
setting_t rig_has_set_func(RIG *rig, setting_t func)
check ability of radio functions
Definition: settings.c:469
void rig_set_debug(enum rig_debug_level_e debug_level)
Change the current debug level.
Definition: debug.c:147
setting_t has_get_parm
Definition: rig.h:2947
freq_range_t tx_range_list[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2724
int use_cached_mode
Definition: rig.h:2817
Definition: rig.h:421
rig_ptr_t ptt_arg
Definition: rig.h:3077
powerstat_t powerstat
Definition: rig.h:3021
uint64_t rig_idx2setting(int i)
Definition: misc.c:798
freq_t center_freq
Definition: rig.h:1858
hamlib_port_t pttport
Definition: rig.h:3011
int rig_set_conf(RIG *rig, hamlib_token_t token, const char *val)
set a radio configuration parameter
Definition: conf.c:1474
rig_ptr_t obj
Definition: rig.h:2963
int power_max
Definition: rig.h:2795
setting_t has_set_level
Definition: rig.h:2946
int comm_state
Definition: rig.h:2961
int rig_set_vfo_callback(RIG *rig, vfo_cb_t cb, rig_ptr_t arg)
set the callback for vfo events
Definition: event.c:435
setting_t rig_parse_func(const char *s)
Convert alpha string to enum RIG_FUNC_...
Definition: misc.c:810
pbwidth_t width
Definition: rig.h:1582
Definition: rig.h:814
rmode_t mode
Definition: rig.h:1581
Definition: rig.h:854
shortfreq_t tuning_step
Definition: rig.h:1593
unsigned int tone_t
CTCSS and DCS type definition.
Definition: rig.h:302
freq_t current_freq
Definition: rig.h:2767
freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2864
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:6563
int rig_probe_all(hamlib_port_t *port, rig_probe_func_t cfunc, rig_ptr_t data)
try to guess rigs
Definition: rig.c:7017
float val
Definition: rig.h:1779
int auto_power_off
Definition: rig.h:2987
Definition: rig.h:449
freq_t startf
Definition: rig.h:1459
Definition: rig.h:685
int post_ptt_delay
Definition: rig.h:2889
int rig_send_dtmf(RIG *rig, vfo_t vfo, const char *digits)
send DTMF digits
Definition: rig.c:7263
serial_handshake_e
Serial handshake.
Definition: rig.h:345
int high_power
Definition: rig.h:1463
Definition: rig.h:703
Definition: rig.h:933
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:5047
Definition: rig.h:346
struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ]
Definition: rig.h:2926
int rig_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
activate/de-activate functions of radio
Definition: settings.c:500
Definition: rig.h:367
unsigned vfo
Definition: rig.h:1622
Definition: rig.h:700
unsigned mode
Definition: rig.h:1625
const char * rig_strvfo(vfo_t vfo)
Convert enum RIG_VFO_... to alpha string.
Definition: misc.c:670
shortfreq_t pbwidth_t
Definition: rig.h:650
int ptt_share
Definition: rig.h:2792
Definition: rig.h:322
Spectrum scope.
Definition: rig.h:1810
Definition: rig.h:325
Spectrum scope averaging modes.
Definition: rig.h:1830
Definition: rig.h:210
int rig_set_freq_callback(RIG *rig, freq_cb_t cb, rig_ptr_t arg)
set the callback for freq events
Definition: event.c:379
Channel capability definition.
Definition: rig.h:1620
Definition: rig.h:1139
int bank_qty
Definition: rig.h:2859
Definition: rig.h:207
int rig_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS squelch
Definition: tones.c:364
Definition: rig.h:683
shortfreq_t rig_get_resolution(RIG *rig, rmode_t mode)
get the best frequency resolution of the rig
Definition: rig.c:6795
Channel structure.
Definition: rig.h:1575
Definition: rig.h:369
Definition: rig.h:715
ann_t announces
Definition: rig.h:2938
Definition: rig.h:1674
vfo_op_t
VFO operation.
Definition: rig.h:752
Definition: rig.h:760
rptr_shift_t
Repeater shift type.
Definition: rig.h:437
Definition: rig.h:357
int size
Definition: rig.h:1746
Definition: rig.h:1823
int power_now
Definition: rig.h:2793
Definition: rig.h:890
const char * rig_license()
get the Hamlib license
Definition: rig.c:8194
Definition: rig.h:847
int serial_rate_min
Definition: rig.h:2840
int rig_wait_morse(RIG *rig, vfo_t vfo)
wait morse code
Definition: rig.c:7628
setting_t has_set_parm
Definition: rig.h:2948
int rig_setting2idx(setting_t s)
basically convert setting_t expressed 2^n to n
Definition: settings.c:983
rig_spectrum_mode_e
Spectrum scope modes.
Definition: rig.h:1819
unsigned int u
Definition: rig.h:1028
Definition: rig.h:822
const char * rig_strfunc(setting_t func)
Convert enum RIG_FUNC_... to alpha string.
Definition: misc.c:886
int rig_set_vfo_opt(RIG *rig, int status)
set the vfo option for rigctld
Definition: rig.c:7842
Extension attribute definition.
Definition: rig.h:1558
Definition: rig.h:656
struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES]
Definition: rig.h:2871
gran_t parm_gran[64]
Definition: rig.h:2951
rmode_t mode_list
Definition: rig.h:2972
Definition: rig.h:211
const char * rig_get_caps_cptr(rig_model_t rig_model, enum rig_caps_cptr_e rig_caps)
Function to return char pointer value from rig->caps.
Definition: misc.c:2704
int rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit)
set the XIT
Definition: rig.c:6179
setting_t rig_has_get_parm(RIG *rig, setting_t parm)
check retrieval ability of parameter settings
Definition: settings.c:381
freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2869
int async_data_supported
Definition: rig.h:2851
enum serial_parity_e serial_parity
Definition: rig.h:2844
Universal approach for passing values.
Definition: rig.h:1026
Definition: rig.h:197
Definition: rig.h:885
hamlib_port_t_deprecated pttport_deprecated
Definition: rig.h:2917
Definition: rig.h:702
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:5285
char * multicast_cmd_addr
Definition: rig.h:2882
const char * rig_strptrshift(rptr_shift_t shift)
convert enum RIG_RPT_SHIFT_... to printable character
Definition: misc.c:1675
int twiddle_rit
Definition: rig.h:2797
vfo_t rig_parse_vfo(const char *s)
Convert alpha string to enum RIG_VFO_...
Definition: misc.c:641
Definition: rig.h:804
freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2862
const char * rig_strscan(scan_t rscan)
Convert enum RIG_SCAN_... to alpha string.
Definition: misc.c:1646
freq_t offset_vfob
Definition: rig.h:3025
setting_t has_set_parm
Definition: rig.h:2748
vfo_t tx_vfo
Definition: rig.h:2971
Definition: rig.h:755
int vfo_opt
Definition: rig.h:2984
int rig_get_ext_func(RIG *rig, vfo_t vfo, hamlib_token_t token, int *status)
get the value of a function extra parameter
Definition: settings.c:859
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:7806
freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2870
vfo_t current_vfo
Definition: rig.h:2959
freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2863
unsigned ant
Definition: rig.h:1623
freq_cb_t freq_event
Definition: rig.h:3070
ptt_type_t ptt_type
Definition: rig.h:2837
setting_t has_get_func
Definition: rig.h:2943
vfo_t current_vfo
Definition: rig.h:2759
rig_ptr_t dcd_arg
Definition: rig.h:3079
int auto_power_off
Definition: rig.h:2787
Definition: rig.h:778
int rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
get the status of the PTT
Definition: rig.c:3888
hamlib_port_t pttport
Definition: rig.h:2811
The Rig structure.
Definition: rig.h:3097
int write_delay
Definition: rig.h:2846
dcd_type_t
DCD type.
Definition: rig.h:665
struct multicast_s * multicast
Definition: rig.h:2826
Definition: rig.h:779
int rig_reset(RIG *rig, reset_t reset)
reset the radio
Definition: rig.c:6944
rmode_t modes
Definition: rig.h:1461
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's clock
Definition: rig.c:8155
pltune_cb_t pltune
Definition: rig.h:3080
Definition: rig.h:371
unsigned char disable_yaesu_bandselect
Definition: rig.h:2996
tone_t dcs_code
Definition: rig.h:1600
char * s
Definition: rig.h:1030
Definition: rig.h:209
Definition: rig.h:818
int rig_get_conf(RIG *rig, hamlib_token_t token, char *val)
get the value of a configuration parameter
Definition: conf.c:1535
Definition: rig.h:815
int raw
Definition: rig.h:1778
freq_t offset_vfob
Definition: rig.h:2825
setting_t rig_has_set_parm(RIG *rig, setting_t parm)
check settable ability of parameter settings
Definition: settings.c:410
struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ]
Definition: rig.h:2726
unsigned tag
Definition: rig.h:1649
meter_level_e
Level display meters.
Definition: rig.h:1007
chan_type_t
Memory channel type definition.
Definition: rig.h:1668
setting_t has_set_level
Definition: rig.h:2746
Definition: rig.h:244
spectrum_cb_t spectrum_event
Definition: rig.h:3082
Definition: rig.h:672
const char * rig_stragclevel(enum agc_level_e level)
Convert enum RIG_AGC_... to alpha string.
Definition: misc.c:1429
int channel_num
Definition: rig.h:1576
setting_t rig_has_get_func(RIG *rig, setting_t func)
check ability of radio functions
Definition: settings.c:439
Definition: rig.h:366
rig_status_e
Development status of the backend.
Definition: rig.h:417
Definition: rig.h:791
Definition: rig.h:320
Definition: rig.h:1675
Definition: rig.h:213
const char * rig_copyright()
get the Hamlib copyright
Definition: rig.c:8214
rig_comm_status_t comm_status
Definition: rig.h:2886
const struct confparams * rig_confparam_lookup(RIG *rig, const char *name)
lookup a confparam struct
Definition: conf.c:1369
Definition: rig.h:816
Definition: rig.h:438
char * multicast_data_addr
Definition: rig.h:2880
struct rig_state_deprecated state_deprecated
Definition: rig.h:3100
Definition: rig.h:204
setting_t has_get_level
Definition: rig.h:2945
Definition: rig.h:1146
Definition: rig.h:203
shortfreq_t max_rit
Definition: rig.h:2734
Definition: rig.h:1673
Definition: rig.h:801
char * tuner_control_pathname
Definition: rig.h:3022
Definition: rig.h:725
Definition: rig.h:1676
rmode_t modes
Definition: rig.h:1491
scan_t rig_parse_scan(const char *s)
Convert alpha string to enum RIG_SCAN_...
Definition: misc.c:1621
int rig_set_chan_all(RIG *rig, vfo_t vfo, const channel_t chans[])
set all channel data
Definition: mem.c:1167
Definition: rig.h:375
rig_function_e
Rig data structure.
Definition: rig.h:2218
Definition: rig.h:655
shortfreq_t max_rit
Definition: rig.h:2934
int rig_set_mem(RIG *rig, vfo_t vfo, int ch)
set the current memory channel number
Definition: mem.c:68
int rig_get_ext_parm(RIG *rig, hamlib_token_t token, value_t *val)
get the value of a parm extra parameter
Definition: settings.c:956
struct rig_state state
Definition: rig.h:3103
Definition: rig.h:250
int poll_interval
Definition: rig.h:2766
Definition: rig.h:697
Definition: rig.h:388
int post_write_delay
Definition: rig.h:2847
Definition: rig.h:765
unsigned split
Definition: rig.h:1632
freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2867
int rig_open(RIG *rig)
open the communication to the rig
Definition: rig.c:959
Definition: rig.h:928
Definition: rig.h:1172
unsigned rit
Definition: rig.h:1637
int rig_get_dcs_sql(RIG *rig, vfo_t vfo, tone_t *code)
get the current DCS code
Definition: tones.c:558
agc_level_e
AGC delay settings.
Definition: rig.h:383
int vfo_list
Definition: rig.h:2960
int transmit
Definition: rig.h:2775
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:1460
enum rig_status_e status
Definition: rig.h:2835
Definition: rig.h:756
Definition: rig.h:727
void rig_set_debug_time_stamp(int flag)
Enable or disable the time stamp on debugging output.
Definition: debug.c:190
tone_t * ctcss_list
Definition: rig.h:2854
Rig state containing live data and customized fields.
Definition: rig.h:2707
vfo_t rx_vfo
Definition: rig.h:2799
Definition: rig.h:668
int rig_need_debug(enum rig_debug_level_e debug_level)
Test if a given debug level is active.
Definition: debug.c:176
shortfreq_t rit
Definition: rig.h:1594
Definition: rig.h:785
Definition: rig.h:808
Definition: rig.h:758
Definition: rig.h:783
Definition: rig.h:932
Definition: rig.h:196
hamlib_port_t rigport
Definition: rig.h:3010
int transceive
Definition: rig.h:2858
int rig_set_mode_callback(RIG *rig, mode_cb_t cb, rig_ptr_t arg)
set the callback for mode events
Definition: event.c:407
int rig_set_ext_func(RIG *rig, vfo_t vfo, hamlib_token_t token, int status)
set a radio function extra parameter
Definition: settings.c:793
time_t twiddle_time
Definition: rig.h:2779
Definition: rig.h:726
Definition: rig.h:247
Definition: rig.h:852
struct rig_caps * caps
Definition: rig.h:3098
Definition: rig.h:711
freq_range_t rx_range_list[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2723
int twiddle_state
Definition: rig.h:2998
freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2868
Definition: rig.h:1173
ann_t
Announce.
Definition: rig.h:926
int rig_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)
get the current repeater shift
Definition: rig.c:4436
multicast_item_e
Multicast data items 3 different data item can be included in the multicast JSON. ...
Definition: rig.h:1180
int rig_cleanup(RIG *rig)
release a rig handle and free associated memory
Definition: rig.c:1851
RIG * rig_init(rig_model_t rig_model)
Allocate a new RIG handle.
Definition: rig.c:544
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:1079
Definition: rig.h:887
pbwidth_t rig_passband_normal(RIG *rig, rmode_t mode)
get the normal passband of a mode
Definition: rig.c:3138
Definition: rig.h:205
Definition: rig.h:373
Definition: rig.h:786
int use_cached_ptt
Definition: rig.h:2818
setting_t rig_parse_parm(const char *s)
Convert alpha string to RIG_PARM_...
Definition: misc.c:1303
unsigned xit
Definition: rig.h:1638
int serial_rate_max
Definition: rig.h:2841
int targetable_vfo
Definition: rig.h:2850
int rig_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
set the repeater shift
Definition: rig.c:4358
Definition: rig.h:315
Definition: rig.h:439
#define RIG_SETTING_MAX
Maximum # of rig settings.
Definition: rig.h:1208
unsigned int ant_t
Antenna typedef.
Definition: rig.h:983
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:1394
char * label
Definition: rig.h:1466
setting_t rig_parse_level(const char *s)
Convert alpha string to enum RIG_LEVEL_...
Definition: misc.c:1098
int rig_set_twiddle(RIG *rig, int seconds)
timeout (secs) to stop rigctld when VFO is manually changed
Definition: rig.c:1898
Definition: rig.h:805
const char * name
Definition: rig.h:903
int scan_group
Definition: rig.h:1602
rig_ptr_t mode_arg
Definition: rig.h:3073
int rig_set_parm(RIG *rig, setting_t parm, value_t val)
set a radio parameter
Definition: settings.c:253
Definition: rig.h:799
int rig_flush_force(hamlib_port_t *port, int flush_async_data)
Force flush of rig communication data buffers.
Definition: misc.c:2265
Definition: rig.h:319
reset_t
Reset operation.
Definition: rig.h:722
int rig_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs)
get the current repeater offset
Definition: rig.c:4597
int rig_send_voice_mem(RIG *rig, vfo_t vfo, int ch)
send voice memory content
Definition: rig.c:7699
int depth
Definition: rig.h:3019
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:1126
Definition: rig.h:208
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:8055
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:549
Definition: rig.h:336
uint64_t rig_level_e
Rig Level Settings.
Definition: rig.h:1049
Definition: rig.h:1149
freq_range_t tx_range_list[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2924
rig_errcode_e
Definition: rig.h:190
int use_cached_freq
Definition: rig.h:2816
Definition: rig.h:787
int deprecated_itu_region
Definition: rig.h:2922
Definition: rig.h:1138
Rig cache data.
Definition: rig.h:2590
int rig_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
get the mode of the target VFO
Definition: rig.c:2970
int rig_get_vfo_list(RIG *rig, char *buf, int buflen)
get list of available vfos
Definition: rig.c:8136
Hamlib rig(radio) model definitions.
rig_conf_e
parameter types
Definition: rig.h:883
Definition: rig.h:759
int power_now
Definition: rig.h:2993
Definition: rig.h:810
rmode_t mode_list
Definition: rig.h:2772
enum rig_port_e rig_port_t
Port type.
setting_t levels
Definition: rig.h:1640
rmode_t tx_mode
Definition: rig.h:1585
int rig_set_ptt_callback(RIG *rig, ptt_cb_t cb, rig_ptr_t arg)
set the callback for ptt events
Definition: event.c:463
int rig_set_dcs_sql(RIG *rig, vfo_t vfo, tone_t code)
set the current DCS code
Definition: tones.c:495
unsigned ctcss_tone
Definition: rig.h:1641
ptt_type_t
PTT type.
Definition: rig.h:694
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:5591
Definition: rig.h:886
setting_t funcs
Definition: rig.h:1596
Definition: rig.h:806
int uplink
Definition: rig.h:2982
int rig_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option)
set the antenna
Definition: rig.c:6483
hamlib_band_t
Band enumeration.
Definition: rig.h:776
Definition: rig.h:358
int rig_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length)
receive DTMF digits
Definition: rig.c:7340
int timeout
Definition: rig.h:2848
Calibration table struct.
Definition: rig.h:1745
Definition: rig.h:930
Definition: rig.h:191
Definition: rig.h:821
serial_parity_e
Serial parity.
Definition: rig.h:333
const char * hamlib_copyright2
Hamlib copyright notice.
Definition: rig.c:115
int vfo_opt
Definition: rig.h:2784
int longlat2locator(double longitude, double latitude, char *locator, int pair_count)
Convert longitude/latitude to QRA locator (Maidenhead grid square).
Definition: locator.c:545
int rig_get_parm(RIG *rig, setting_t parm, value_t *val)
get the value of a parameter
Definition: settings.c:287
freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS]
Definition: rig.h:2873
freq_t low_edge_freq
Definition: rig.h:1861
int id
Definition: rig.h:1849
Definition: rig.h:754
int size
Definition: rig.h:1776
freq_t high_edge_freq
Definition: rig.h:1862
gran_t parm_gran[64]
Definition: rig.h:2751
tone_t ctcss_tone
Definition: rig.h:1598
value_t val
Definition: rig.h:1560
int rig_get_chan_all(RIG *rig, vfo_t vfo, channel_t chans[])
get all channel data
Definition: mem.c:1210
setting_t has_get_level
Definition: rig.h:2745
Definition: rig.h:200
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:5930
Definition: rig.h:782
Definition: rig.h:376
int rig_get_ctcss_sql(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS squelch
Definition: tones.c:432
shortfreq_t ts
Definition: rig.h:1492
Definition: rig.h:927
const char * rig_strrmode(rmode_t mode)
Convert enum RIG_MODE to alpha string.
Definition: misc.c:540
int power_min
Definition: rig.h:2994
hamlib_port_t rigport
Definition: rig.h:2810
int rig_set_ext_parm(RIG *rig, hamlib_token_t token, value_t val)
set a radio parm extra parameter
Definition: settings.c:924
Definition: rig.h:1871
Definition: rig.h:820
int auto_disable_screensaver
Definition: rig.h:2789
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:5449
unsigned tx_mode
Definition: rig.h:1629
int rig_get_powerstat(RIG *rig, powerstat_t *status)
get the on/off status of the radio
Definition: rig.c:6889
pbwidth_t width
Definition: rig.h:1527
freq_t span_freq
Definition: rig.h:1859
freq_t offset_vfoa
Definition: rig.h:3024
enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES]
Definition: rig.h:2872
rmode_t current_mode
Definition: rig.h:2968
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:5679
enum rig_spectrum_mode_e spectrum_mode
Definition: rig.h:1856
Definition: rig.h:1147
hamlib_port_t_deprecated port_t_deprecated
Port definition.
Definition: rig.h:2502
int rig_get_trn(RIG *rig, int *trn)
get the current transceive mode
Definition: event.c:606
unsigned int flags
Definition: rig.h:1603
Definition: rig.h:819
freq_t lo_freq
Definition: rig.h:2778
unsigned rptr_shift
Definition: rig.h:1634
Definition: rig.h:150
int rig_stop_morse(RIG *rig, vfo_t vfo)
stop morse code
Definition: rig.c:7513
int rig_get_twiddle(RIG *rig, int *seconds)
get the twiddle timeout value (secs)
Definition: rig.c:1949
const char * version
Definition: rig.h:2833
int rig_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS sub-tone frequency
Definition: tones.c:166
ant_t ant
Definition: rig.h:1579
Definition: rig.h:853
int use_cached_freq
Definition: rig.h:3016
const char * rig_strvfop(vfo_op_t op)
Convert enum RIG_OP_... to alpha string.
Definition: misc.c:1576
const char * rigerror2(int errnum)
get string describing the error code
Definition: rig.c:454
freq_t offset_vfoa
Definition: rig.h:2824
const char * combostr[RIG_COMBO_MAX]
Definition: rig.h:915
split_t
Split mode.
Definition: rig.h:447
Definition: rig.h:392
struct multicast_s * multicast
Definition: rig.h:3026
Definition: rig.h:781
int rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
set the frequency of the target VFO
Definition: rig.c:2080
chan_type_t type
Definition: rig.h:1699
Definition: rig.h:1148
Definition: rig.h:929
int transmit
Definition: rig.h:2975
int rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq)
get the current split frequencies
Definition: rig.c:4870
Definition: rig.h:202
Callback functions and args for rig event.
Definition: rig.h:3069
int rig_stop_voice_mem(RIG *rig, vfo_t vfo)
stop sending voice memory
Definition: rig.c:7768
const char * tooltip
Definition: rig.h:905
Definition: rig.h:314
Definition: rig.h:761
Definition: rig.h:684
Definition: rig.h:393
Definition: rig.h:766
long hamlib_token_t
configuration token
Definition: rig.h:861
int rig_mem_count(RIG *rig)
get memory channel count
Definition: mem.c:1652
Memory channel list definition.
Definition: rig.h:1696
Definition: rig.h:316
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:2769
cookie_e
Rig Cookie enumerations.
Definition: rig.h:1170
unsigned ctcss_sql
Definition: rig.h:1642
Definition: rig.h:1143
level/parm granularity definition
Definition: rig.h:1730
Definition: rig.h:334
rig_model_t rig_probe(hamlib_port_t *port)
try to guess a rig
Definition: rig.c:6989
rig_caps_int_e
Enumeration of rig->caps values.
Definition: rig.h:2321
char * tuner_control_pathname
Definition: rig.h:2822
shortfreq_t rptr_offs
Definition: rig.h:1592
const char * rig_strcommstatus(rig_comm_status_t status)
Convert enum RIG_COMM_STATUS... to alpha string.
Definition: misc.c:2759
unsigned freq
Definition: rig.h:1624
ptt_t
PTT status.
Definition: rig.h:681
int data_level_max
Definition: rig.h:1852
float min
Definition: rig.h:910
char channel_desc[HAMLIB_MAXCHANDESC]
Definition: rig.h:1604
int rig_close(RIG *rig)
close the communication to the rig
Definition: rig.c:1673
struct cal_table_float::@4 table[HAMLIB_MAX_CAL_LENGTH]
int deprecated_itu_region
Definition: rig.h:2722
int bank_num
Definition: rig.h:1577
Definition: rig.h:1140
int doppler
Definition: rig.h:2879
int power_min
Definition: rig.h:2794
Definition: rig.h:812
char client_version[32]
Definition: rig.h:2823
Definition: rig.h:798
Definition: rig.h:1141
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:1307
unsigned tx_freq
Definition: rig.h:1628
int twiddle_rit
Definition: rig.h:2997
rmode_t modes
Definition: rig.h:1526
unsigned dcs_code
Definition: rig.h:1643
Definition: rig.h:803
Definition: rig.h:807
enum agc_level_e rig_levelagcvalue(int agcValue)
Convert a value to agc_level_e – constrains the range.
Definition: misc.c:1474
struct freq_range_list freq_range_t
Frequency range.
Definition: rig.h:335
Definition: rig.h:248
dcd_e
Definition: rig.h:654
Definition: rig.h:671
int retry
Definition: rig.h:2849
rig_type_t
Rig type flags.
Definition: rig.h:365
rmode_t rig_parse_mode(const char *s)
Convert alpha string to enum RIG_MODE.
Definition: misc.c:513
struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES]
Definition: rig.h:2874
Definition: rig.h:763
unsigned int vfo_t
VFO definition.
Definition: rig.h:518
Definition: rig.h:1677
int rig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
get the value of a level
Definition: settings.c:158
freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2865
int rig_set_ext_level(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t val)
set a radio level extra parameter
Definition: settings.c:662
unsigned width
Definition: rig.h:1626
Definition: rig.h:817
ptt_cb_t ptt_event
Definition: rig.h:3076
Definition: rig.h:1670
freq_t current_freq
Definition: rig.h:2967
Definition: rig.h:666
rptr_shift_t rig_parse_rptr_shift(const char *s)
Convert alpha char to enum RIG_RPT_SHIFT_...
Definition: misc.c:1700
Definition: rig.h:762
struct confparams::@0::@1 n
Definition: rig.h:701
hamlib_port_t_deprecated dcdport_deprecated
Definition: rig.h:2918
enum rig_conf_e type
Definition: rig.h:907
Definition: rig.h:246
vfo_t vfo
Definition: rig.h:1464
Definition: rig.h:199
int preamp[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2740
Definition: rig.h:1822
int locator2longlat(double *longitude, double *latitude, const char *locator)
Convert QRA locator (Maidenhead grid square) to Longitude/Latitude.
Definition: locator.c:451
int agc_level_count
Definition: rig.h:2852
Definition: rig.h:780
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:1528
int rig_get_dcs_code(RIG *rig, vfo_t vfo, tone_t *code)
get the current encoding DCS code
Definition: tones.c:293
freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2866
const char * rig_strmtype(chan_type_t mtype)
Convert enum RIG_MTYPE_... to alpha string.
Definition: misc.c:1771
int rig_get_channel(RIG *rig, vfo_t vfox, channel_t *chan, int read_only)
get channel data
Definition: mem.c:828
Definition: rig.h:809
int data_level_min
Definition: rig.h:1851
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:182
freq_t tx_freq
Definition: rig.h:1584
vfo_t tx_vfo
Definition: rig.h:1589
mode_cb_t mode_event
Definition: rig.h:3072
vprintf_cb_t rig_set_debug_callback(vprintf_cb_t cb, rig_ptr_t arg)
Set callback to handle debugging messages.
Definition: debug.c:316
int async_data_enabled
Definition: rig.h:2765
rig_ptr_t freq_arg
Definition: rig.h:3071
Definition: rig.h:764
int endc
Definition: rig.h:1698
Definition: rig.h:348
void * rig_get_function_ptr(rig_model_t rig_model, enum rig_function_e rig_function)
Function to return pointer to rig_* function.
Definition: misc.c:2365
enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS]
Definition: rig.h:2853
tone_t * dcs_list
Definition: rig.h:2855
Definition: rig.h:698
size_t spectrum_data_length
Definition: rig.h:1864
Definition: rig.h:198
tone_t dcs_sql
Definition: rig.h:1601
Definition: rig.h:1672
int rig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
set a radio level setting
Definition: settings.c:73
cal_table_t str_cal
Definition: rig.h:2930
Definition: rig.h:1878
int auto_disable_screensaver
Definition: rig.h:2989
int transaction_active
Definition: rig.h:2958
uint64_t setting_t
Setting.
Definition: rig.h:1202
int twiddle_state
Definition: rig.h:2798
int twiddle_timeout
Definition: rig.h:2780
Definition: rig.h:813
Definition: rig.h:800
cal_table_t str_cal
Definition: rig.h:2730
dcd_cb_t dcd_event
Definition: rig.h:3078
Definition: rig.h:931
rig_ptr_t vfo_arg
Definition: rig.h:3075
int serial_stop_bits
Definition: rig.h:2843
Definition: rig.h:849
int lock_mode
Definition: rig.h:3020
Definition: rig.h:850
rig_ptr_t obj
Definition: rig.h:2763
struct filter_list filters[HAMLIB_FLTLSTSIZ]
Definition: rig.h:2928
Definition: rig.h:888
unsigned ext_levels
Definition: rig.h:1648
Multicast data items the are unique per rig instantiation This is meant for internal Hamlib use only...
Definition: rig.h:2669
split_t split
Definition: rig.h:1588
Definition: rig.h:418
Definition: rig.h:212
unsigned char * spectrum_data
Definition: rig.h:1865
Definition: rig.h:193
freq_t lo_freq
Definition: rig.h:2978
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:8243
serial_control_state_e
Serial control state.
Definition: rig.h:355
int auto_power_on
Definition: rig.h:2985
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's clock
Definition: rig.c:8173
unsigned char disable_yaesu_bandselect
Definition: rig.h:2796
int dual_watch
Definition: rig.h:2888
Definition: rig.h:440
const char * mfg_name
Definition: rig.h:2832
setting_t has_set_func
Definition: rig.h:2944
pbwidth_t rig_passband_narrow(RIG *rig, rmode_t mode)
get the narrow passband of a mode
Definition: rig.c:3189
int rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op)
perform Memory/VFO operations
Definition: rig.c:7075
char client_version[32]
Definition: rig.h:3023
shortfreq_t max_xit
Definition: rig.h:2735
Definition: rig.h:757
Definition: rig.h:356
Definition: rig.h:370
Definition: rig.h:714
const char * hamlib_version2
Hamlib release number.
Definition: rig.c:102
enum agc_level_e rig_levelagcstr(const char *agcString)
Convert AGC string... to agc_level_e.
Definition: misc.c:1505
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:82
Definition: rig.h:784
value_t max
Definition: rig.h:1732
uint64_t rig_get_caps_int(rig_model_t rig_model, enum rig_caps_int_e rig_caps)
Function to return int value from rig->caps Does not support > 32-bit rig_caps values.
Definition: misc.c:2658
int multicast_cmd_port
Definition: rig.h:2883
shortfreq_t max_xit
Definition: rig.h:2935
unsigned scan_group
Definition: rig.h:1645
Definition: network.c:131
Definition: rig.h:1150
int rig_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts)
get the current Tuning Step
Definition: rig.c:6401
Definition: rig.h:712
Definition: rig.h:724
int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2875
Definition: rig.h:1152
int rig_set_powerstat(RIG *rig, powerstat_t status)
turn on/off the radio
Definition: rig.c:6837
Definition: rig.h:347
scan_t scan_ops
Definition: rig.h:2857
Configuration parameter structure.
Definition: rig.h:901
uint64_t rmode_t
Radio mode.
Definition: rig.h:1360
tone_t ctcss_sql
Definition: rig.h:1599
int rig_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts)
set the Tuning Step
Definition: rig.c:6329
Definition: rig.h:674
Definition: rig.h:313
Definition: rig.h:326
int rig_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs)
set the repeater offset
Definition: rig.c:4520
Definition: rig.h:846
Definition: rig.h:338
const char * label
Definition: rig.h:904
int rig_type
Definition: rig.h:2836
int val
Definition: rig.h:1749
int rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit)
set the RIT
Definition: rig.c:6029
Definition: rig.h:695
Definition: rig.h:823
union confparams::@0 u
ant_t ant
Definition: rig.h:1465
const char * copyright
Definition: rig.h:2834
hamlib_port_t_deprecated rigport_deprecated
Definition: rig.h:2916
Definition: rig.h:802
int rig_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS sub-tone frequency
Definition: tones.c:98
value_t rig_valueagclevel(enum agc_level_e agcLevel)
Convert a enum agc_level_e to value.
Definition: misc.c:1454
rig_port_e
Port type.
Definition: rig.h:312
int rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq)
set the split frequencies
Definition: rig.c:4680
Definition: rig.h:317
Definition: rig.h:249
hamlib_port_t dcdport
Definition: rig.h:2812
int preamp[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2940
channel_cap_t mem_caps
Definition: rig.h:1700
int rig_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit)
get the current RIT offset
Definition: rig.c:6101
int depth
Definition: rig.h:2819
hamlib_port_t_deprecated pttport_deprecated
Definition: rig.h:2717
Definition: rig.h:669
rig_ptr_t priv
Definition: rig.h:2762
Definition: rig.h:1821
Definition: rig.h:1679
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:232
int comm_state
Definition: rig.h:2761
const char * rig_get_info(RIG *rig)
get general information from the radio
Definition: rig.c:7881
Definition: rig.h:1669
float max
Definition: rig.h:911
int rig_get_vfo(RIG *rig, vfo_t *vfo)
get the current VFO
Definition: rig.c:3448
Represents a single line of rig spectrum scope FFT data.
Definition: rig.h:1847
vfo_op_t rig_parse_vfo_op(const char *s)
Convert alpha string to enum RIG_OP_...
Definition: misc.c:1551
rmode_t current_mode
Definition: rig.h:2768
Definition: rig.h:824
unsigned dcs_sql
Definition: rig.h:1644
Definition: rig.h:699
int attenuator[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2741
Definition: rig.h:374
int attenuator[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2941
rptr_shift_t rptr_shift
Definition: rig.h:1591
int power_max
Definition: rig.h:2995
const char * rig_version()
get the Hamlib version
Definition: rig.c:8204
Definition: rig.h:851
double vfo_comp
Definition: rig.h:2720
int use_cached_ptt
Definition: rig.h:3018
hamlib_token_t token
Definition: rig.h:1559
int rig_strrmodes(rmode_t modes, char *buf, int buflen)
Convert RIG_MODE or'd value to alpha string of all modes.
Definition: misc.c:572
Definition: rig.h:848