Hamlib  4.6.2
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 removeing 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 #define CTCSS_LIST_SIZE 60
303 #define DCS_LIST_SIZE 128
304 typedef unsigned int tone_t;
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 
864 
866 #define RIG_CONF_END 0
867 
869 
883 /* strongly inspired from soundmodem. Thanks Thomas! */
892 };
893 
895 #define RIG_COMBO_MAX 16
896 #define RIG_BIN_MAX 80
897 
902 struct confparams {
903  hamlib_token_t token;
904  const char *name;
905  const char *label;
906  const char *tooltip;
907  const char *dflt;
909  union {
910  struct {
911  float min;
912  float max;
913  float step;
914  } n;
915  struct {
916  const char *combostr[RIG_COMBO_MAX];
917  } c;
918  } u;
919 };
920 
921 
927 typedef enum {
930  RIG_ANN_FREQ = (1 << 0),
931  RIG_ANN_RXMODE = (1 << 1),
932  RIG_ANN_CW = (1 << 2),
933  RIG_ANN_ENG = (1 << 3),
934  RIG_ANN_JAP = (1 << 4)
935 } ann_t;
936 
937 
984 typedef unsigned int ant_t;
985 
986 #define RIG_ANT_NONE 0
987 #define RIG_ANT_N(n) ((ant_t)1<<(n))
988 #define RIG_ANT_1 RIG_ANT_N(0)
989 #define RIG_ANT_2 RIG_ANT_N(1)
990 #define RIG_ANT_3 RIG_ANT_N(2)
991 #define RIG_ANT_4 RIG_ANT_N(3)
992 #define RIG_ANT_5 RIG_ANT_N(4)
993 
994 #define RIG_ANT_UNKNOWN RIG_ANT_N(30)
995 #define RIG_ANT_CURR RIG_ANT_N(31)
996 
997 #define RIG_ANT_MAX 32
998 
999 
1001 #define RIG_AGC_LAST 99999
1002 
1004 #if 1 // deprecated
1005 
1009  RIG_METER_NONE = 0, /*< No display meter */
1010  RIG_METER_SWR = (1 << 0), /*< Stationary Wave Ratio */
1011  RIG_METER_COMP = (1 << 1), /*< Compression level */
1012  RIG_METER_ALC = (1 << 2), /*< ALC */
1013  RIG_METER_IC = (1 << 3), /*< IC */
1014  RIG_METER_DB = (1 << 4), /*< DB */
1015  RIG_METER_PO = (1 << 5), /*< Power Out */
1016  RIG_METER_VDD = (1 << 6), /*< Final Amp Voltage */
1017  RIG_METER_TEMP = (1 << 7) /*< Final Amp Temperature */
1018 };
1019 #endif
1020 
1021 
1027 typedef union {
1028  signed int i;
1029  unsigned int u;
1030  float f;
1031  char *s;
1032  const char *cs;
1033  struct {
1035  int l;
1036  unsigned char *d; /* Pointer to data buffer */
1037  } b;
1039 } value_t;
1040 
1041 
1050 typedef uint64_t rig_level_e;
1051 #define RIG_LEVEL_NONE 0
1052 #define RIG_LEVEL_PREAMP CONSTANT_64BIT_FLAG(0)
1053 #define RIG_LEVEL_ATT CONSTANT_64BIT_FLAG(1)
1054 #define RIG_LEVEL_VOXDELAY CONSTANT_64BIT_FLAG(2)
1055 #define RIG_LEVEL_AF CONSTANT_64BIT_FLAG(3)
1056 #define RIG_LEVEL_RF CONSTANT_64BIT_FLAG(4)
1057 #define RIG_LEVEL_SQL CONSTANT_64BIT_FLAG(5)
1058 #define RIG_LEVEL_IF CONSTANT_64BIT_FLAG(6)
1059 #define RIG_LEVEL_APF CONSTANT_64BIT_FLAG(7)
1060 #define RIG_LEVEL_NR CONSTANT_64BIT_FLAG(8)
1061 #define RIG_LEVEL_PBT_IN CONSTANT_64BIT_FLAG(9)
1062 #define RIG_LEVEL_PBT_OUT CONSTANT_64BIT_FLAG(10)
1063 #define RIG_LEVEL_CWPITCH CONSTANT_64BIT_FLAG(11)
1064 #define RIG_LEVEL_RFPOWER CONSTANT_64BIT_FLAG(12)
1065 #define RIG_LEVEL_MICGAIN CONSTANT_64BIT_FLAG(13)
1066 #define RIG_LEVEL_KEYSPD CONSTANT_64BIT_FLAG(14)
1067 #define RIG_LEVEL_NOTCHF CONSTANT_64BIT_FLAG(15)
1068 #define RIG_LEVEL_COMP CONSTANT_64BIT_FLAG(16)
1069 #define RIG_LEVEL_AGC CONSTANT_64BIT_FLAG(17)
1070 #define RIG_LEVEL_BKINDL CONSTANT_64BIT_FLAG(18)
1071 #define RIG_LEVEL_BALANCE CONSTANT_64BIT_FLAG(19)
1072 #define RIG_LEVEL_METER CONSTANT_64BIT_FLAG(20)
1073 #define RIG_LEVEL_VOXGAIN CONSTANT_64BIT_FLAG(21)
1074 #define RIG_LEVEL_ANTIVOX CONSTANT_64BIT_FLAG(22)
1075 #define RIG_LEVEL_SLOPE_LOW CONSTANT_64BIT_FLAG(23)
1076 #define RIG_LEVEL_SLOPE_HIGH CONSTANT_64BIT_FLAG(24)
1077 #define RIG_LEVEL_BKIN_DLYMS CONSTANT_64BIT_FLAG(25)
1080 #define RIG_LEVEL_RAWSTR CONSTANT_64BIT_FLAG(26)
1081 //#define RIG_LEVEL_SQLSTAT CONSTANT_64BIT_FLAG(27)
1082 #define RIG_LEVEL_SWR CONSTANT_64BIT_FLAG(28)
1083 #define RIG_LEVEL_ALC CONSTANT_64BIT_FLAG(29)
1084 #define RIG_LEVEL_STRENGTH CONSTANT_64BIT_FLAG(30)
1085  /* RIG_LEVEL_BWC (1<<31) */
1086 #define RIG_LEVEL_RFPOWER_METER CONSTANT_64BIT_FLAG(32)
1087 #define RIG_LEVEL_COMP_METER CONSTANT_64BIT_FLAG(33)
1088 #define RIG_LEVEL_VD_METER CONSTANT_64BIT_FLAG(34)
1089 #define RIG_LEVEL_ID_METER CONSTANT_64BIT_FLAG(35)
1091 #define RIG_LEVEL_NOTCHF_RAW CONSTANT_64BIT_FLAG(36)
1092 #define RIG_LEVEL_MONITOR_GAIN CONSTANT_64BIT_FLAG(37)
1093 #define RIG_LEVEL_NB CONSTANT_64BIT_FLAG(38)
1094 #define RIG_LEVEL_RFPOWER_METER_WATTS CONSTANT_64BIT_FLAG(39)
1095 #define RIG_LEVEL_SPECTRUM_MODE CONSTANT_64BIT_FLAG(40)
1096 #define RIG_LEVEL_SPECTRUM_SPAN CONSTANT_64BIT_FLAG(41)
1097 #define RIG_LEVEL_SPECTRUM_EDGE_LOW CONSTANT_64BIT_FLAG(42)
1098 #define RIG_LEVEL_SPECTRUM_EDGE_HIGH CONSTANT_64BIT_FLAG(43)
1099 #define RIG_LEVEL_SPECTRUM_SPEED CONSTANT_64BIT_FLAG(44)
1100 #define RIG_LEVEL_SPECTRUM_REF CONSTANT_64BIT_FLAG(45)
1101 #define RIG_LEVEL_SPECTRUM_AVG CONSTANT_64BIT_FLAG(46)
1102 #define RIG_LEVEL_SPECTRUM_ATT CONSTANT_64BIT_FLAG(47)
1103 #define RIG_LEVEL_TEMP_METER CONSTANT_64BIT_FLAG(48)
1104 #define RIG_LEVEL_BAND_SELECT CONSTANT_64BIT_FLAG(49)
1105 #define RIG_LEVEL_USB_AF CONSTANT_64BIT_FLAG(50)
1106 #define RIG_LEVEL_USB_AF_INPUT CONSTANT_64BIT_FLAG(51)
1107 #define RIG_LEVEL_AGC_TIME CONSTANT_64BIT_FLAG(52)
1108 #define RIG_LEVEL_53 CONSTANT_64BIT_FLAG(53)
1109 #define RIG_LEVEL_54 CONSTANT_64BIT_FLAG(54)
1110 #define RIG_LEVEL_55 CONSTANT_64BIT_FLAG(55)
1111 #define RIG_LEVEL_56 CONSTANT_64BIT_FLAG(56)
1112 #define RIG_LEVEL_57 CONSTANT_64BIT_FLAG(57)
1113 #define RIG_LEVEL_58 CONSTANT_64BIT_FLAG(58)
1114 #define RIG_LEVEL_59 CONSTANT_64BIT_FLAG(59)
1115 #define RIG_LEVEL_60 CONSTANT_64BIT_FLAG(60)
1116 #define RIG_LEVEL_61 CONSTANT_64BIT_FLAG(61)
1117 #define RIG_LEVEL_62 CONSTANT_64BIT_FLAG(62)
1118 #define RIG_LEVEL_63 CONSTANT_64BIT_FLAG(63)
1120 #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)
1122 
1123 #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)
1124 
1125 #define RIG_LEVEL_IS_FLOAT(l) ((l)&RIG_LEVEL_FLOAT_LIST)
1126 #define RIG_LEVEL_SET(l) ((l)&~RIG_LEVEL_READONLY_LIST)
1127 
1129 
1140  RIG_PARM_ANN = (1 << 0),
1141  RIG_PARM_APO = (1 << 1),
1142  RIG_PARM_BACKLIGHT = (1 << 2),
1143  RIG_PARM_BEEP = (1 << 4),
1144  RIG_PARM_TIME = (1 << 5),
1145  RIG_PARM_BAT = (1 << 6),
1146  RIG_PARM_KEYLIGHT = (1 << 7),
1148  RIG_PARM_AFIF = (1 << 9),
1149  RIG_PARM_BANDSELECT = (1 << 10),
1150  RIG_PARM_KEYERTYPE = (1 << 11),
1151  RIG_PARM_AFIF_LAN = (1 << 12),
1152  RIG_PARM_AFIF_WLAN = (1 << 13),
1153  RIG_PARM_AFIF_ACC = (1 << 14)
1154 };
1155 
1156 enum rig_keyertype_e {
1157  RIG_KEYERTYPE_STRAIGHT = 0,
1158  RIG_KEYERTYPE_BUG = (1 << 0),
1159  RIG_KEYERTYPE_PADDLE = (1 << 1),
1160  RIG_KEYERTYPE_UNKNOWN = (1 << 2)
1161 };
1162 
1171 enum cookie_e {
1175 };
1176 
1182  RIG_MULTICAST_POLL, // hamlib will be polling the rig for all rig items
1183  RIG_MULTICAST_TRANSCEIVE, // transceive will be turned on and processed
1184  RIG_MULTICAST_SPECTRUM // spectrum data will be included
1185 };
1186 
1188 #define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT|RIG_PARM_KEYLIGHT|RIG_PARM_BACKLIGHT)
1189 #define RIG_PARM_STRING_LIST (RIG_PARM_BANDSELECT|RIG_PARM_KEYERTYPE)
1190 #define RIG_PARM_READONLY_LIST (RIG_PARM_BAT)
1191 
1192 #define RIG_PARM_IS_FLOAT(l) ((l)&RIG_PARM_FLOAT_LIST)
1193 #define RIG_PARM_IS_STRING(l) ((l)&RIG_PARM_STRING_LIST)
1194 #define RIG_PARM_SET(l) ((l)&~RIG_PARM_READONLY_LIST)
1195 
1203 typedef uint64_t setting_t;
1204 
1209 #define RIG_SETTING_MAX 64
1210 
1227 #define RIG_TRN_OFF 0
1228 #define RIG_TRN_RIG 1
1229 #define RIG_TRN_POLL 2
1230 
1231 
1240 /*
1241  * The C standard dictates that an enum constant is a 32 bit signed integer.
1242  * Setting a constant's bit 31 created a negative value that on amd64 had the
1243  * upper 32 bits set as well when assigned to the misc.c:rig_func_str structure.
1244  * This caused misc.c:rig_strfunc() to fail its comparison for RIG_FUNC_XIT
1245  * on amd64 (x86_64). To use bit 31 as an unsigned long, preprocessor macros
1246  * have been used instead as a 'const unsigned long' which cannot be used to
1247  * initialize the rig_func_str.func members. TNX KA6MAL, AC6SL. - N0NB
1248  */
1249 #define RIG_FUNC_NONE 0
1250 #define RIG_FUNC_FAGC CONSTANT_64BIT_FLAG (0)
1251 #define RIG_FUNC_NB CONSTANT_64BIT_FLAG (1)
1252 #define RIG_FUNC_COMP CONSTANT_64BIT_FLAG (2)
1253 #define RIG_FUNC_VOX CONSTANT_64BIT_FLAG (3)
1254 #define RIG_FUNC_TONE CONSTANT_64BIT_FLAG (4)
1255 #define RIG_FUNC_TSQL CONSTANT_64BIT_FLAG (5)
1256 #define RIG_FUNC_SBKIN CONSTANT_64BIT_FLAG (6)
1257 #define RIG_FUNC_FBKIN CONSTANT_64BIT_FLAG (7)
1258 #define RIG_FUNC_ANF CONSTANT_64BIT_FLAG (8)
1259 #define RIG_FUNC_NR CONSTANT_64BIT_FLAG (9)
1260 #define RIG_FUNC_AIP CONSTANT_64BIT_FLAG (10)
1261 #define RIG_FUNC_APF CONSTANT_64BIT_FLAG (11)
1262 #define RIG_FUNC_MON CONSTANT_64BIT_FLAG (12)
1263 #define RIG_FUNC_MN CONSTANT_64BIT_FLAG (13)
1264 #define RIG_FUNC_RF CONSTANT_64BIT_FLAG (14)
1265 #define RIG_FUNC_ARO CONSTANT_64BIT_FLAG (15)
1266 #define RIG_FUNC_LOCK CONSTANT_64BIT_FLAG (16)
1267 #define RIG_FUNC_MUTE CONSTANT_64BIT_FLAG (17)
1268 #define RIG_FUNC_VSC CONSTANT_64BIT_FLAG (18)
1269 #define RIG_FUNC_REV CONSTANT_64BIT_FLAG (19)
1270 #define RIG_FUNC_SQL CONSTANT_64BIT_FLAG (20)
1271 #define RIG_FUNC_ABM CONSTANT_64BIT_FLAG (21)
1272 #define RIG_FUNC_BC CONSTANT_64BIT_FLAG (22)
1273 #define RIG_FUNC_MBC CONSTANT_64BIT_FLAG (23)
1274 #define RIG_FUNC_RIT CONSTANT_64BIT_FLAG (24)
1275 #define RIG_FUNC_AFC CONSTANT_64BIT_FLAG (25)
1276 #define RIG_FUNC_SATMODE CONSTANT_64BIT_FLAG (26)
1277 #define RIG_FUNC_SCOPE CONSTANT_64BIT_FLAG (27)
1278 #define RIG_FUNC_RESUME CONSTANT_64BIT_FLAG (28)
1279 #define RIG_FUNC_TBURST CONSTANT_64BIT_FLAG (29)
1280 #define RIG_FUNC_TUNER CONSTANT_64BIT_FLAG (30)
1281 #define RIG_FUNC_XIT CONSTANT_64BIT_FLAG (31)
1282 #ifndef SWIGLUAHIDE
1283 /* Hide the top 32 bits from the old Lua binding as they can't be represented */
1284 #define RIG_FUNC_NB2 CONSTANT_64BIT_FLAG (32)
1285 #define RIG_FUNC_CSQL CONSTANT_64BIT_FLAG (33)
1286 #define RIG_FUNC_AFLT CONSTANT_64BIT_FLAG (34)
1287 #define RIG_FUNC_ANL CONSTANT_64BIT_FLAG (35)
1288 #define RIG_FUNC_BC2 CONSTANT_64BIT_FLAG (36)
1289 #define RIG_FUNC_DUAL_WATCH CONSTANT_64BIT_FLAG (37)
1290 #define RIG_FUNC_DIVERSITY CONSTANT_64BIT_FLAG (38)
1291 #define RIG_FUNC_DSQL CONSTANT_64BIT_FLAG (39)
1292 #define RIG_FUNC_SCEN CONSTANT_64BIT_FLAG (40)
1293 #define RIG_FUNC_SLICE CONSTANT_64BIT_FLAG (41)
1294 #define RIG_FUNC_TRANSCEIVE CONSTANT_64BIT_FLAG (42)
1295 #define RIG_FUNC_SPECTRUM CONSTANT_64BIT_FLAG (43)
1296 #define RIG_FUNC_SPECTRUM_HOLD CONSTANT_64BIT_FLAG (44)
1297 #define RIG_FUNC_SEND_MORSE CONSTANT_64BIT_FLAG (45)
1298 #define RIG_FUNC_SEND_VOICE_MEM CONSTANT_64BIT_FLAG (46)
1299 #define RIG_FUNC_OVF_STATUS CONSTANT_64BIT_FLAG (47)
1300 #define RIG_FUNC_SYNC CONSTANT_64BIT_FLAG (48)
1301 #define RIG_FUNC_BIT49 CONSTANT_64BIT_FLAG (49)
1302 #define RIG_FUNC_BIT50 CONSTANT_64BIT_FLAG (50)
1303 #define RIG_FUNC_BIT51 CONSTANT_64BIT_FLAG (51)
1304 #define RIG_FUNC_BIT52 CONSTANT_64BIT_FLAG (52)
1305 #define RIG_FUNC_BIT53 CONSTANT_64BIT_FLAG (53)
1306 #define RIG_FUNC_BIT54 CONSTANT_64BIT_FLAG (54)
1307 #define RIG_FUNC_BIT55 CONSTANT_64BIT_FLAG (55)
1308 #define RIG_FUNC_BIT56 CONSTANT_64BIT_FLAG (56)
1309 #define RIG_FUNC_BIT57 CONSTANT_64BIT_FLAG (57)
1310 #define RIG_FUNC_BIT58 CONSTANT_64BIT_FLAG (58)
1311 #define RIG_FUNC_BIT59 CONSTANT_64BIT_FLAG (59)
1312 #define RIG_FUNC_BIT60 CONSTANT_64BIT_FLAG (60)
1313 #define RIG_FUNC_BIT61 CONSTANT_64BIT_FLAG (61)
1314 #define RIG_FUNC_BIT62 CONSTANT_64BIT_FLAG (62)
1315 #define RIG_FUNC_BIT63 CONSTANT_64BIT_FLAG (63)
1316 /* 63 is this highest bit number that can be used */
1317 #endif
1318 
1325 #define mW(p) ((int)(p))
1326 
1333 #define Watts(p) ((int)((p)*1000))
1334 
1340 #define W(p) Watts(p)
1341 #if 0 // deprecating kW macro as this doesn't make sense
1342 
1348 #define kW(p) ((int)((p)*1000000L))
1349 #endif
1350 
1351 
1361 typedef uint64_t rmode_t;
1362 
1363 #define RIG_MODE_NONE 0
1364 #define RIG_MODE_AM CONSTANT_64BIT_FLAG (0)
1365 #define RIG_MODE_CW CONSTANT_64BIT_FLAG (1)
1366 #define RIG_MODE_USB CONSTANT_64BIT_FLAG (2)
1367 #define RIG_MODE_LSB CONSTANT_64BIT_FLAG (3)
1368 #define RIG_MODE_RTTY CONSTANT_64BIT_FLAG (4)
1369 #define RIG_MODE_FM CONSTANT_64BIT_FLAG (5)
1370 #define RIG_MODE_WFM CONSTANT_64BIT_FLAG (6)
1371 #define RIG_MODE_CWR CONSTANT_64BIT_FLAG (7)
1372 #define RIG_MODE_RTTYR CONSTANT_64BIT_FLAG (8)
1373 #define RIG_MODE_AMS CONSTANT_64BIT_FLAG (9)
1374 #define RIG_MODE_PKTLSB CONSTANT_64BIT_FLAG (10)
1375 #define RIG_MODE_PKTUSB CONSTANT_64BIT_FLAG (11)
1376 #define RIG_MODE_PKTFM CONSTANT_64BIT_FLAG (12)
1377 #define RIG_MODE_ECSSUSB CONSTANT_64BIT_FLAG (13)
1378 #define RIG_MODE_ECSSLSB CONSTANT_64BIT_FLAG (14)
1379 #define RIG_MODE_FAX CONSTANT_64BIT_FLAG (15)
1380 #define RIG_MODE_SAM CONSTANT_64BIT_FLAG (16)
1381 #define RIG_MODE_SAL CONSTANT_64BIT_FLAG (17)
1382 #define RIG_MODE_SAH CONSTANT_64BIT_FLAG (18)
1383 #define RIG_MODE_DSB CONSTANT_64BIT_FLAG (19)
1384 #define RIG_MODE_FMN CONSTANT_64BIT_FLAG (21)
1385 #define RIG_MODE_PKTAM CONSTANT_64BIT_FLAG (22)
1386 #define RIG_MODE_P25 CONSTANT_64BIT_FLAG (23)
1387 #define RIG_MODE_DSTAR CONSTANT_64BIT_FLAG (24)
1388 #define RIG_MODE_DPMR CONSTANT_64BIT_FLAG (25)
1389 #define RIG_MODE_NXDNVN CONSTANT_64BIT_FLAG (26)
1390 #define RIG_MODE_NXDN_N CONSTANT_64BIT_FLAG (27)
1391 #define RIG_MODE_DCR CONSTANT_64BIT_FLAG (28)
1392 #define RIG_MODE_AMN CONSTANT_64BIT_FLAG (29)
1393 #define RIG_MODE_PSK CONSTANT_64BIT_FLAG (30)
1394 #define RIG_MODE_PSKR CONSTANT_64BIT_FLAG (31)
1395 #ifndef SWIGLUAHIDE
1396 /* hide the top 32 bits from the Lua binding as they will not work */
1397 #define RIG_MODE_DD CONSTANT_64BIT_FLAG (32)
1398 #define RIG_MODE_C4FM CONSTANT_64BIT_FLAG (33)
1399 #define RIG_MODE_PKTFMN CONSTANT_64BIT_FLAG (34)
1400 #define RIG_MODE_SPEC CONSTANT_64BIT_FLAG (35)
1401 #define RIG_MODE_CWN CONSTANT_64BIT_FLAG (36)
1402 #define RIG_MODE_IQ CONSTANT_64BIT_FLAG (37)
1403 #define RIG_MODE_ISBUSB CONSTANT_64BIT_FLAG (38)
1404 #define RIG_MODE_ISBLSB CONSTANT_64BIT_FLAG (39)
1405 #define RIG_MODE_USBD1 CONSTANT_64BIT_FLAG (40)
1406 #define RIG_MODE_USBD2 CONSTANT_64BIT_FLAG (41)
1407 #define RIG_MODE_USBD3 CONSTANT_64BIT_FLAG (42)
1408 #define RIG_MODE_LSBD1 CONSTANT_64BIT_FLAG (43)
1409 #define RIG_MODE_LSBD2 CONSTANT_64BIT_FLAG (44)
1410 #define RIG_MODE_LSBD3 CONSTANT_64BIT_FLAG (45)
1411 #define RIG_MODE_BIT46 CONSTANT_64BIT_FLAG (46)
1412 #define RIG_MODE_BIT47 CONSTANT_64BIT_FLAG (47)
1413 #define RIG_MODE_BIT48 CONSTANT_64BIT_FLAG (48)
1414 #define RIG_MODE_BIT49 CONSTANT_64BIT_FLAG (49)
1415 #define RIG_MODE_BIT50 CONSTANT_64BIT_FLAG (50)
1416 #define RIG_MODE_BIT51 CONSTANT_64BIT_FLAG (51)
1417 #define RIG_MODE_BIT52 CONSTANT_64BIT_FLAG (52)
1418 #define RIG_MODE_BIT53 CONSTANT_64BIT_FLAG (53)
1419 #define RIG_MODE_BIT54 CONSTANT_64BIT_FLAG (54)
1420 #define RIG_MODE_BIT55 CONSTANT_64BIT_FLAG (55)
1421 #define RIG_MODE_BIT56 CONSTANT_64BIT_FLAG (56)
1422 #define RIG_MODE_BIT57 CONSTANT_64BIT_FLAG (57)
1423 #define RIG_MODE_BIT58 CONSTANT_64BIT_FLAG (58)
1424 #define RIG_MODE_BIT59 CONSTANT_64BIT_FLAG (59)
1425 #define RIG_MODE_BIT60 CONSTANT_64BIT_FLAG (60)
1426 #define RIG_MODE_BIT61 CONSTANT_64BIT_FLAG (61)
1427 #define RIG_MODE_BIT62 CONSTANT_64BIT_FLAG (62)
1428 #define RIG_MODE_TESTS_MAX CONSTANT_64BIT_FLAG (63)
1429 #define RIG_MODE_ALL (0xffffffff)
1430 #endif
1431 
1435 #define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB)
1436 
1440 #define RIG_MODE_PKTSSB (RIG_MODE_PKTUSB|RIG_MODE_PKTLSB)
1441 
1445 #define RIG_MODE_ECSS (RIG_MODE_ECSSUSB|RIG_MODE_ECSSLSB)
1446 
1448 #define RIG_DBLST_END 0 /* end marker in a preamp/att level list */
1449 #define RIG_IS_DBLST_END(d) ((d)==0)
1450 
1452 
1459 typedef struct freq_range_list {
1460  freq_t startf;
1461  freq_t endf;
1462  rmode_t modes;
1465  vfo_t vfo;
1466  ant_t ant;
1467  char *label;
1468 } freq_range_t;
1469 
1471 #define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE}
1472 #define RIG_IS_FRNG_END(r) ((r).startf == Hz(0) && (r).endf == Hz(0))
1473 
1492  rmode_t modes;
1493  shortfreq_t ts;
1494 };
1495 
1497 #define RIG_TS_ANY 0
1498 #define RIG_TS_END {RIG_MODE_NONE, 0}
1499 #define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0)
1500 
1502 
1526 struct filter_list {
1527  rmode_t modes;
1528  pbwidth_t width;
1529 };
1531 #define RIG_FLT_ANY 0
1532 #define RIG_FLT_END {RIG_MODE_NONE, 0}
1533 #define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE)
1534 #define DEBUGMSGSAVE_SIZE 24000
1535 
1537 
1541 #define RIG_CHFLAG_NONE 0
1542 
1545 #define RIG_CHFLAG_SKIP (1<<0)
1546 
1549 #define RIG_CHFLAG_DATA (1<<1)
1550 
1553 #define RIG_CHFLAG_PSKIP (1<<2)
1554 
1559 struct ext_list {
1560  hamlib_token_t token;
1562 };
1563 
1565 #define RIG_EXT_END {0, {.i=0}}
1566 #define RIG_IS_EXT_END(x) ((x).token == 0)
1567 
1576 struct channel {
1578  int bank_num;
1579  vfo_t vfo;
1580  ant_t ant;
1581  freq_t freq;
1582  rmode_t mode;
1583  pbwidth_t width;
1585  freq_t tx_freq;
1586  rmode_t tx_mode;
1587  pbwidth_t tx_width;
1590  vfo_t tx_vfo;
1593  shortfreq_t rptr_offs;
1594  shortfreq_t tuning_step;
1595  shortfreq_t rit;
1596  shortfreq_t xit;
1597  setting_t funcs;
1599  tone_t ctcss_tone;
1600  tone_t ctcss_sql;
1601  tone_t dcs_code;
1602  tone_t dcs_sql;
1604  unsigned int flags;
1605  char channel_desc[HAMLIB_MAXCHANDESC];
1606  struct ext_list
1607  *ext_levels;
1608  char tag[32];
1609 };
1610 
1614 typedef struct channel channel_t;
1615 
1621 struct channel_cap {
1622  unsigned bank_num: 1;
1623  unsigned vfo: 1;
1624  unsigned ant: 1;
1625  unsigned freq: 1;
1626  unsigned mode: 1;
1627  unsigned width: 1;
1629  unsigned tx_freq: 1;
1630  unsigned tx_mode: 1;
1631  unsigned tx_width: 1;
1633  unsigned split: 1;
1634  unsigned tx_vfo: 1;
1635  unsigned rptr_shift: 1;
1636  unsigned rptr_offs: 1;
1637  unsigned tuning_step: 1;
1638  unsigned rit: 1;
1639  unsigned xit: 1;
1640  setting_t funcs;
1641  setting_t levels;
1642  unsigned ctcss_tone: 1;
1643  unsigned ctcss_sql: 1;
1644  unsigned dcs_code: 1;
1645  unsigned dcs_sql: 1;
1646  unsigned scan_group: 1;
1647  unsigned flags: 1;
1648  unsigned channel_desc: 1;
1649  unsigned ext_levels: 1;
1650  unsigned tag: 1;
1651 };
1652 
1657 
1658 
1669 typedef enum {
1681 } chan_type_t;
1682 
1683 
1697 struct chan_list {
1698  int startc;
1699  int endc;
1702 };
1703 
1705 #define RIG_CHAN_END {0,0,RIG_MTYPE_NONE}
1706 #define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE)
1707 
1712 #define RIG_MEM_CAPS_ALL -1
1713 
1717 typedef struct chan_list chan_t;
1718 
1719 
1731 struct gran {
1735 };
1736 
1740 typedef struct gran gran_t;
1741 
1742 
1746 struct cal_table {
1747  int size;
1748  struct {
1749  int raw;
1750  int val;
1751  } table[HAMLIB_MAX_CAL_LENGTH];
1752 };
1753 
1766 typedef struct cal_table cal_table_t;
1767 
1769 #define EMPTY_STR_CAL { 0, { { 0, 0 }, } }
1770 
1772 
1777  int size;
1778  struct {
1779  int raw;
1780  float val;
1781  } table[HAMLIB_MAX_CAL_LENGTH];
1782 };
1783 
1797 
1799 #define EMPTY_FLOAT_CAL { 0, { { 0, 0f }, } }
1800 
1801 typedef int (* chan_cb_t)(RIG *, vfo_t vfo, channel_t **, int, const chan_t *, rig_ptr_t);
1802 typedef int (* confval_cb_t)(RIG *,
1803  const struct confparams *,
1804  value_t *,
1805  rig_ptr_t);
1807 
1812 {
1813  int id;
1814  char *name;
1815 };
1816 
1821  RIG_SPECTRUM_MODE_NONE = 0,
1826 };
1827 
1832 {
1833  int id;
1834  char *name;
1835 };
1836 
1849 {
1850  int id;
1859  freq_t center_freq;
1860  freq_t span_freq;
1862  freq_t low_edge_freq;
1866  unsigned char *spectrum_data;
1867 };
1868 
1873  struct deferred_config_item *next;
1874  hamlib_token_t token;
1875  char *value; // strdup'ed, must be freed
1876 };
1878 
1880  struct deferred_config_item *first; // NULL if none
1881  struct deferred_config_item *last;
1882 };
1884 
1904 #define RIG_MODEL(arg) .rig_model=arg,.macro_name=#arg
1906 #define HAMLIB_CHECK_RIG_CAPS "HAMLIB_CHECK_RIG_CAPS"
1907 struct rig_caps {
1908  rig_model_t rig_model;
1909  const char *model_name;
1910  const char *mfg_name;
1911  const char *version;
1912  const char *copyright;
1913  enum rig_status_e status;
1915  int rig_type;
1916  ptt_type_t ptt_type;
1917  dcd_type_t dcd_type;
1918  rig_port_t port_type;
1920  int serial_rate_min;
1921  int serial_rate_max;
1922  int serial_data_bits;
1923  int serial_stop_bits;
1924  enum serial_parity_e serial_parity;
1925  enum serial_handshake_e serial_handshake;
1927  int write_delay;
1928  int post_write_delay;
1929  int timeout;
1930  int retry;
1932  setting_t has_get_func;
1933  setting_t has_set_func;
1934  setting_t has_get_level;
1935  setting_t has_set_level;
1936  setting_t has_get_parm;
1937  setting_t has_set_parm;
1939  gran_t level_gran[RIG_SETTING_MAX];
1940  gran_t parm_gran[RIG_SETTING_MAX];
1942  const struct confparams *extparms;
1943  const struct confparams *extlevels;
1944  const struct confparams *extfuncs;
1945  int *ext_tokens;
1947  tone_t *ctcss_list;
1948  tone_t *dcs_list;
1950  int preamp[HAMLIB_MAXDBLSTSIZ];
1951  int attenuator[HAMLIB_MAXDBLSTSIZ];
1952  shortfreq_t max_rit;
1953  shortfreq_t max_xit;
1954  shortfreq_t max_ifshift;
1956  int agc_level_count;
1957  enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS];
1959  ann_t announces;
1961  vfo_op_t vfo_ops;
1962  scan_t scan_ops;
1963  int targetable_vfo;
1964  int transceive;
1966  int bank_qty;
1967  int chan_desc_sz;
1969  chan_t chan_list[HAMLIB_CHANLSTSIZ];
1971  // As of 2020-02-12 we know of 5 models from Icom USA, EUR, ITR, TPE, KOR for the IC-9700
1972  // So we currently have 5 ranges we need to deal with
1973  // The backend for the model should fill in the label field to explain what model it is
1974  // The the IC-9700 in ic7300.c for an example
1975  freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ];
1976  freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ];
1977  freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ];
1978  freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ];
1979  freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ];
1980  freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ];
1981  freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ];
1982  freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ];
1983  freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ];
1984  freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ];
1986  struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
1987  struct filter_list filters[HAMLIB_FLTLSTSIZ];
1989  cal_table_t str_cal;
1990  cal_table_float_t swr_cal;
1991  cal_table_float_t alc_cal;
1992  cal_table_float_t rfpower_meter_cal;
1993  cal_table_float_t comp_meter_cal;
1994  cal_table_float_t vd_meter_cal;
1995  cal_table_float_t id_meter_cal;
1997  struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES];
1998  enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES];
1999  freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS];
2000  struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES];
2001  int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ];
2003  const struct confparams *cfgparams;
2004  const rig_ptr_t priv;
2006  /*
2007  * Rig API
2008  *
2009  */
2010 
2011  int (*rig_init)(RIG *rig);
2012  int (*rig_cleanup)(RIG *rig);
2013  int (*rig_open)(RIG *rig);
2014  int (*rig_close)(RIG *rig);
2015 
2016  /*
2017  * General API commands, from most primitive to least.. :()
2018  * List Set/Get functions pairs
2019  */
2020 
2021  int (*set_freq)(RIG *rig, vfo_t vfo, freq_t freq);
2022  int (*get_freq)(RIG *rig, vfo_t vfo, freq_t *freq);
2023 
2024  int (*set_mode)(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
2025  int (*get_mode)(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width);
2026 
2027  int (*set_vfo)(RIG *rig, vfo_t vfo);
2028  int (*get_vfo)(RIG *rig, vfo_t *vfo);
2029 
2030  int (*set_ptt)(RIG *rig, vfo_t vfo, ptt_t ptt);
2031  int (*get_ptt)(RIG *rig, vfo_t vfo, ptt_t *ptt);
2032 
2033  int (*get_dcd)(RIG *rig, vfo_t vfo, dcd_t *dcd);
2034 
2035  int (*set_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift);
2036  int (*get_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift);
2037 
2038  int (*set_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t offs);
2039  int (*get_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t *offs);
2040 
2041  int (*set_split_freq)(RIG *rig, vfo_t vfo, freq_t tx_freq);
2042  int (*get_split_freq)(RIG *rig, vfo_t vfo, freq_t *tx_freq);
2043 
2044  int (*set_split_mode)(RIG *rig,
2045  vfo_t vfo,
2046  rmode_t tx_mode,
2047  pbwidth_t tx_width);
2048  int (*get_split_mode)(RIG *rig,
2049  vfo_t vfo,
2050  rmode_t *tx_mode,
2051  pbwidth_t *tx_width);
2052 
2053  int (*set_split_freq_mode)(RIG *rig,
2054  vfo_t vfo,
2055  freq_t tx_freq,
2056  rmode_t tx_mode,
2057  pbwidth_t tx_width);
2058  int (*get_split_freq_mode)(RIG *rig,
2059  vfo_t vfo,
2060  freq_t *tx_freq,
2061  rmode_t *tx_mode,
2062  pbwidth_t *tx_width);
2063 
2064  int (*set_split_vfo)(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo);
2065  int (*get_split_vfo)(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo);
2066 
2067  int (*set_rit)(RIG *rig, vfo_t vfo, shortfreq_t rit);
2068  int (*get_rit)(RIG *rig, vfo_t vfo, shortfreq_t *rit);
2069 
2070  int (*set_xit)(RIG *rig, vfo_t vfo, shortfreq_t xit);
2071  int (*get_xit)(RIG *rig, vfo_t vfo, shortfreq_t *xit);
2072 
2073  int (*set_ts)(RIG *rig, vfo_t vfo, shortfreq_t ts);
2074  int (*get_ts)(RIG *rig, vfo_t vfo, shortfreq_t *ts);
2075 
2076  int (*set_dcs_code)(RIG *rig, vfo_t vfo, tone_t code);
2077  int (*get_dcs_code)(RIG *rig, vfo_t vfo, tone_t *code);
2078 
2079  int (*set_tone)(RIG *rig, vfo_t vfo, tone_t tone);
2080  int (*get_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
2081 
2082  int (*set_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t tone);
2083  int (*get_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
2084 
2085  int (*set_dcs_sql)(RIG *rig, vfo_t vfo, tone_t code);
2086  int (*get_dcs_sql)(RIG *rig, vfo_t vfo, tone_t *code);
2087 
2088  int (*set_tone_sql)(RIG *rig, vfo_t vfo, tone_t tone);
2089  int (*get_tone_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
2090 
2091  int (*set_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t tone);
2092  int (*get_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
2093 
2094  int (*power2mW)(RIG *rig,
2095  unsigned int *mwpower,
2096  float power,
2097  freq_t freq,
2098  rmode_t mode);
2099  int (*mW2power)(RIG *rig,
2100  float *power,
2101  unsigned int mwpower,
2102  freq_t freq,
2103  rmode_t mode);
2104 
2105  int (*set_powerstat)(RIG *rig, powerstat_t status);
2106  int (*get_powerstat)(RIG *rig, powerstat_t *status);
2107 
2108  int (*reset)(RIG *rig, reset_t reset);
2109 
2110  int (*set_ant)(RIG *rig, vfo_t vfo, ant_t ant, value_t option);
2111  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);
2112 
2113  int (*set_level)(RIG *rig, vfo_t vfo, setting_t level, value_t val);
2114  int (*get_level)(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
2115 
2116  int (*set_func)(RIG *rig, vfo_t vfo, setting_t func, int status);
2117  int (*get_func)(RIG *rig, vfo_t vfo, setting_t func, int *status);
2118 
2119  int (*set_parm)(RIG *rig, setting_t parm, value_t val);
2120  int (*get_parm)(RIG *rig, setting_t parm, value_t *val);
2121 
2122  int (*set_ext_level)(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t val);
2123  int (*get_ext_level)(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t *val);
2124 
2125  int (*set_ext_func)(RIG *rig, vfo_t vfo, hamlib_token_t token, int status);
2126  int (*get_ext_func)(RIG *rig, vfo_t vfo, hamlib_token_t token, int *status);
2127 
2128  int (*set_ext_parm)(RIG *rig, hamlib_token_t token, value_t val);
2129  int (*get_ext_parm)(RIG *rig, hamlib_token_t token, value_t *val);
2130 
2131  int (*set_conf)(RIG *rig, hamlib_token_t token, const char *val);
2132  int (*get_conf)(RIG *rig, hamlib_token_t token, char *val);
2133 
2134  int (*send_dtmf)(RIG *rig, vfo_t vfo, const char *digits);
2135  int (*recv_dtmf)(RIG *rig, vfo_t vfo, char *digits, int *length);
2136 
2137  int (*send_morse)(RIG *rig, vfo_t vfo, const char *msg);
2138  int (*stop_morse)(RIG *rig, vfo_t vfo);
2139  int (*wait_morse)(RIG *rig, vfo_t vfo);
2140 
2141  int (*send_voice_mem)(RIG *rig, vfo_t vfo, int ch);
2142  int (*stop_voice_mem)(RIG *rig, vfo_t vfo);
2143 
2144  int (*set_bank)(RIG *rig, vfo_t vfo, int bank);
2145 
2146  int (*set_mem)(RIG *rig, vfo_t vfo, int ch);
2147  int (*get_mem)(RIG *rig, vfo_t vfo, int *ch);
2148 
2149  int (*vfo_op)(RIG *rig, vfo_t vfo, vfo_op_t op);
2150 
2151  int (*scan)(RIG *rig, vfo_t vfo, scan_t scan, int ch);
2152 
2153  int (*set_trn)(RIG *rig, int trn);
2154  int (*get_trn)(RIG *rig, int *trn);
2155 
2156  int (*decode_event)(RIG *rig);
2157 
2158  int (*set_channel)(RIG *rig, vfo_t vfo, const channel_t *chan);
2159  int (*get_channel)(RIG *rig, vfo_t vfo, channel_t *chan, int read_only);
2160 
2161  const char * (*get_info)(RIG *rig);
2162 
2163  int (*set_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
2164  int (*get_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
2165 
2166  int (*set_mem_all_cb)(RIG *rig,
2167  vfo_t vfo,
2168  chan_cb_t chan_cb,
2169  confval_cb_t parm_cb,
2170  rig_ptr_t);
2171  int (*get_mem_all_cb)(RIG *rig,
2172  vfo_t vfo,
2173  chan_cb_t chan_cb,
2174  confval_cb_t parm_cb,
2175  rig_ptr_t);
2176 
2177  int (*set_vfo_opt)(RIG *rig, int status); // only for Net Rigctl device
2178  int (*rig_get_vfo_info) (RIG *rig,
2179  vfo_t vfo,
2180  freq_t *freq,
2181  rmode_t *mode,
2182  pbwidth_t *width,
2183  split_t *split);
2184  int(*set_clock) (RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset);
2185  int(*get_clock) (RIG *rig, int *year, int *month, int *day, int *hour, int *min, int *sec, double *msec, int *utc_offset);
2186 
2187  const char *clone_combo_set;
2188  const char *clone_combo_get;
2189  const char *macro_name;
2191  int async_data_supported;
2192  int (*read_frame_direct)(RIG *rig,
2193  size_t buffer_length,
2194  const unsigned char *buffer);
2195  int (*is_async_frame)(RIG *rig,
2196  size_t frame_length,
2197  const unsigned char *frame);
2198  int (*process_async_frame)(RIG *rig,
2199  size_t frame_length,
2200  const unsigned char *frame);
2201 // this will be used to check rigcaps structure is compatible with client
2202  char *hamlib_check_rig_caps; // a constant value we can check for hamlib integrity
2203  int (*get_conf2)(RIG *rig, hamlib_token_t token, char *val, int val_len);
2204  int (*password)(RIG *rig, const char *key1); /*< Send encrypted password if rigctld is secured with -A/--password */
2205  int (*set_lock_mode)(RIG *rig, int mode);
2206  int (*get_lock_mode)(RIG *rig, int *mode);
2207  short timeout_retry;
2208  short morse_qsize; /* max length of morse */
2209 // int (*bandwidth2rig)(RIG *rig, enum bandwidth_t bandwidth);
2210 // enum bandwidth_t (*rig2bandwidth)(RIG *rig, int rigbandwidth);
2211 };
2213 
2218 // all functions enumerated for rig_get_function_ptr
2220  RIG_FUNCTION_INIT,
2221  RIG_FUNCTION_CLEANUP,
2222  RIG_FUNCTION_OPEN,
2223  RIG_FUNCTION_CLOSE,
2224  RIG_FUNCTION_SET_FREQ,
2225  RIG_FUNCTION_GET_FREQ,
2226  RIG_FUNCTION_SET_MODE,
2227  RIG_FUNCTION_GET_MODE,
2228  RIG_FUNCTION_SET_VFO,
2229  RIG_FUNCTION_GET_VFO,
2230  RIG_FUNCTION_SET_PTT,
2231  RIG_FUNCTION_GET_PTT,
2232  RIG_FUNCTION_GET_DCD,
2233  RIG_FUNCTION_SET_RPTR_SHIFT,
2234  RIG_FUNCTION_GET_RPTR_SHIFT,
2235  RIG_FUNCTION_SET_RPTR_OFFS,
2236  RIG_FUNCTION_GET_RPTR_OFFS,
2237  RIG_FUNCTION_SET_SPLIT_FREQ,
2238  RIG_FUNCTION_GET_SPLIT_FREQ,
2239  RIG_FUNCTION_SET_SPLIT_MODE,
2240  RIG_FUNCTION_SET_SPLIT_FREQ_MODE,
2241  RIG_FUNCTION_GET_SPLIT_FREQ_MODE,
2242  RIG_FUNCTION_SET_SPLIT_VFO,
2243  RIG_FUNCTION_GET_SPLIT_VFO,
2244  RIG_FUNCTION_SET_RIT,
2245  RIG_FUNCTION_GET_RIT,
2246  RIG_FUNCTION_SET_XIT,
2247  RIG_FUNCTION_GET_XIT,
2248  RIG_FUNCTION_SET_TS,
2249  RIG_FUNCTION_GET_TS,
2250  RIG_FUNCTION_SET_DCS_CODE,
2251  RIG_FUNCTION_GET_DCS_CODE,
2252  RIG_FUNCTION_SET_TONE,
2253  RIG_FUNCTION_GET_TONE,
2254  RIG_FUNCTION_SET_CTCSS_TONE,
2255  RIG_FUNCTION_GET_CTCSS_TONE,
2256  RIG_FUNCTION_SET_DCS_SQL,
2257  RIG_FUNCTION_GET_DCS_SQL,
2258  RIG_FUNCTION_SET_TONE_SQL,
2259  RIG_FUNCTION_GET_TONE_SQL,
2260  RIG_FUNCTION_SET_CTCSS_SQL,
2261  RIG_FUNCTION_GET_CTCSS_SQL,
2262  RIG_FUNCTION_POWER2MW,
2263  RIG_FUNCTION_MW2POWER,
2264  RIG_FUNCTION_SET_POWERSTAT,
2265  RIG_FUNCTION_GET_POWERSTAT,
2266  RIG_FUNCTION_RESET,
2267  RIG_FUNCTION_SET_ANT,
2268  RIG_FUNCTION_GET_ANT,
2269  RIG_FUNCTION_SET_LEVEL,
2270  RIG_FUNCTION_GET_LEVEL,
2271  RIG_FUNCTION_SET_FUNC,
2272  RIG_FUNCTION_GET_FUNC,
2273  RIG_FUNCTION_SET_PARM,
2274  RIG_FUNCTION_GET_PARM,
2275  RIG_FUNCTION_SET_EXT_LEVEL,
2276  RIG_FUNCTION_GET_EXT_LEVEL,
2277  RIG_FUNCTION_SET_EXT_FUNC,
2278  RIG_FUNCTION_GET_EXT_FUNC,
2279  RIG_FUNCTION_SET_EXT_PARM,
2280  RIG_FUNCTION_GET_EXT_PARM,
2281  RIG_FUNCTION_SET_CONF,
2282  RIG_FUNCTION_GET_CONF,
2283  RIG_FUNCTION_SEND_DTMF,
2284  RIG_FUNCTION_SEND_MORSE,
2285  RIG_FUNCTION_STOP_MORSE,
2286  RIG_FUNCTION_WAIT_MORSE,
2287  RIG_FUNCTION_SEND_VOICE_MEM,
2288  RIG_FUNCTION_SET_BANK,
2289  RIG_FUNCTION_SET_MEM,
2290  RIG_FUNCTION_GET_MEM,
2291  RIG_FUNCTION_VFO_OP,
2292  RIG_FUNCTION_SCAN,
2293  RIG_FUNCTION_SET_TRN,
2294  RIG_FUNCTION_GET_TRN,
2295  RIG_FUNCTION_DECODE_EVENT,
2296  RIG_FUNCTION_SET_CHANNEL,
2297  RIG_FUNCTION_GET_CHANNEL,
2298  RIG_FUNCTION_GET_INFO,
2299  RIG_FUNCTION_SET_CHAN_ALL_CB,
2300  RIG_FUNCTION_GET_CHAN_ALL_CB,
2301  RIG_FUNCTION_SET_MEM_ALL_CB,
2302  RIG_FUNCTION_GET_MEM_ALL_CB,
2303  RIG_FUNCTION_SET_VFO_OPT,
2304  RIG_FUNCTION_READ_FRAME_DIRECT,
2305  RIG_FUNCTION_IS_ASYNC_FRAME,
2306  RIG_FUNCTION_PROCESS_ASYNC_FRAME,
2307  RIG_FUNCTION_GET_CONF2,
2308  RIG_FUNCTION_STOP_VOICE_MEM,
2309 };
2310 
2315 extern HAMLIB_EXPORT (void *) rig_get_function_ptr(rig_model_t rig_model, enum rig_function_e rig_function);
2316 
2321 // values enumerated for rig->caps values
2323  RIG_CAPS_TARGETABLE_VFO,
2324  RIG_CAPS_RIG_MODEL,
2325  RIG_CAPS_PORT_TYPE,
2326  RIG_CAPS_PTT_TYPE,
2327  RIG_CAPS_HAS_GET_LEVEL,
2328  RIG_CAPS_HAS_SET_LEVEL,
2329 };
2330 
2331 enum rig_caps_cptr_e {
2332  RIG_CAPS_VERSION_CPTR,
2333  RIG_CAPS_MFG_NAME_CPTR,
2334  RIG_CAPS_MODEL_NAME_CPTR,
2335  RIG_CAPS_STATUS_CPTR
2336 };
2337 
2342 extern HAMLIB_EXPORT (uint64_t) rig_get_caps_int(rig_model_t rig_model, enum rig_caps_int_e rig_caps);
2343 
2348 extern HAMLIB_EXPORT (const char *) rig_get_caps_cptr(rig_model_t rig_model, enum rig_caps_cptr_e rig_caps);
2349 
2350 struct hamlib_async_pipe;
2351 
2352 typedef struct hamlib_async_pipe hamlib_async_pipe_t;
2353 
2359 // DO NOT CHANGE THIS STRUCTURE ALL UNTIL 5.0
2361 // Right now it is static inside rig structure
2362 // 5.0 will change it to a pointer which can then be added to
2363 // At that point only add to the end of the structure
2364 typedef struct hamlib_port {
2365  union {
2366  rig_port_t rig;
2367  ptt_type_t ptt;
2368  dcd_type_t dcd;
2369  } type;
2370 
2371  int fd;
2372  void *handle;
2374  int write_delay;
2375  int post_write_delay;
2377  struct {
2378  int tv_sec, tv_usec;
2379  } post_write_date;
2381  int timeout;
2382  short retry;
2383  short flushx;
2385  char pathname[HAMLIB_FILPATHLEN];
2387  union {
2388  struct {
2389  int rate;
2390  int data_bits;
2391  int stop_bits;
2392  enum serial_parity_e parity;
2393  enum serial_handshake_e handshake;
2394  enum serial_control_state_e rts_state;
2395  enum serial_control_state_e dtr_state;
2396  } serial;
2398  struct {
2399  int pin;
2400  } parallel;
2402  struct {
2403  int ptt_bitnum;
2404  } cm108;
2406  struct {
2407  int vid;
2408  int pid;
2409  int conf;
2410  int iface;
2411  int alt;
2412  char *vendor_name;
2413  char *product;
2414  } usb;
2416  struct {
2417  int on_value;
2418  int value;
2419  } gpio;
2420  } parm;
2421  int client_port;
2422  RIG *rig;
2423  int asyncio;
2424 #if defined(_WIN32)
2425  hamlib_async_pipe_t *sync_data_pipe;
2426  hamlib_async_pipe_t *sync_data_error_pipe;
2427 #else
2428  int fd_sync_write;
2429  int fd_sync_read;
2430  int fd_sync_error_write;
2431  int fd_sync_error_read;
2432 #endif
2433  short timeout_retry;
2434 // DO NOT ADD ANYTHING HERE UNTIL 5.0!!
2435 } hamlib_port_t;
2436 
2437 
2438 // DO NOT CHANGE THIS STRUCTURE AT ALL
2439 // Will be removed in 5.0
2440 typedef struct hamlib_port_deprecated {
2441  union {
2442  rig_port_t rig;
2443  ptt_type_t ptt;
2444  dcd_type_t dcd;
2445  } type;
2446 
2447  int fd;
2448  void *handle;
2450  int write_delay;
2451  int post_write_delay;
2453  struct {
2454  int tv_sec, tv_usec;
2455  } post_write_date;
2457  int timeout;
2458  short retry;
2459  short flushx;
2461  char pathname[HAMLIB_FILPATHLEN];
2463  union {
2464  struct {
2465  int rate;
2466  int data_bits;
2467  int stop_bits;
2468  enum serial_parity_e parity;
2469  enum serial_handshake_e handshake;
2470  enum serial_control_state_e rts_state;
2471  enum serial_control_state_e dtr_state;
2472  } serial;
2474  struct {
2475  int pin;
2476  } parallel;
2478  struct {
2479  int ptt_bitnum;
2480  } cm108;
2482  struct {
2483  int vid;
2484  int pid;
2485  int conf;
2486  int iface;
2487  int alt;
2488  char *vendor_name;
2489  char *product;
2490  } usb;
2492  struct {
2493  int on_value;
2494  int value;
2495  } gpio;
2496  } parm;
2497  int client_port;
2498  RIG *rig;
2499 } hamlib_port_t_deprecated;
2501 
2502 #if !defined(__APPLE__) || !defined(__cplusplus)
2503 typedef hamlib_port_t_deprecated port_t_deprecated;
2504 typedef hamlib_port_t port_t;
2505 #endif
2506 
2507 /* Macros to access data structures/pointers
2508  * Make it easier to change location in preparation
2509  * for moving them out of rig->state.
2510  * See https://github.com/Hamlib/Hamlib/issues/1445
2511  * https://github.com/Hamlib/Hamlib/issues/1452
2512  * https://github.com/Hamlib/Hamlib/issues/1420
2513  * https://github.com/Hamlib/Hamlib/issues/536
2514  * https://github.com/Hamlib/Hamlib/issues/487
2515  */
2516 // Note: Experimental, and subject to change!!
2517 #if defined(IN_HAMLIB)
2518 /* These are for internal use only */
2519 #define RIGPORT(r) (&r->state.rigport)
2520 #define PTTPORT(r) (&r->state.pttport)
2521 #define DCDPORT(r) (&r->state.dcdport)
2522 #define CACHE(r) (&r->state.cache)
2523 #define AMPPORT(a) (&a->state.ampport)
2524 #define ROTPORT(r) (&r->state.rotport)
2525 #define ROTPORT2(r) (&r->state.rotport2)
2526 #define STATE(r) (&r->state)
2527 #define AMPSTATE(a) (&(a)->state)
2528 #define ROTSTATE(r) (&(r)->state)
2529 /* Then when the rigport address is stored as a pointer somewhere else(say,
2530  * in the rig structure itself), the definition could be changed to
2531  * #define RIGPORT(r) r->somewhereelse
2532  * and every reference is updated.
2533  */
2534 #else
2535 /* Define external unique names */
2536 #define HAMLIB_RIGPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_RIGPORT))
2537 #define HAMLIB_PTTPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_PTTPORT))
2538 #define HAMLIB_DCDPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_DCDPORT))
2539 #define HAMLIB_CACHE(r) ((struct rig_cache *)rig_data_pointer(r, RIG_PTRX_CACHE))
2540 #define HAMLIB_AMPPORT(a) ((hamlib_port_t *)amp_data_pointer(a, RIG_PTRX_AMPPORT))
2541 #define HAMLIB_ROTPORT(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT))
2542 #define HAMLIB_ROTPORT2(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT2))
2543 #define HAMLIB_STATE(r) ((struct rig_state *)rig_data_pointer(r, RIG_PTRX_STATE))
2544 #define HAMLIB_AMPSTATE(a) ((struct amp_state *)amp_data_pointer(a, RIG_PTRX_AMPSTATE))
2545 #define HAMLIB_ROTSTATE(r) ((struct rot_state *)rot_data_pointer(r, RIG_PTRX_ROTSTATE))
2546 #endif
2547 
2548 typedef enum {
2549  RIG_PTRX_NONE=0,
2550  RIG_PTRX_RIGPORT,
2551  RIG_PTRX_PTTPORT,
2552  RIG_PTRX_DCDPORT,
2553  RIG_PTRX_CACHE,
2554  RIG_PTRX_AMPPORT,
2555  RIG_PTRX_ROTPORT,
2556  RIG_PTRX_ROTPORT2,
2557  RIG_PTRX_STATE,
2558  RIG_PTRX_AMPSTATE,
2559  RIG_PTRX_ROTSTATE,
2560 // New entries go directly above this line====================
2561  RIG_PTRX_MAXIMUM
2562 } rig_ptrx_t;
2563 
2564 #define HAMLIB_ELAPSED_GET 0
2565 #define HAMLIB_ELAPSED_SET 1
2566 #define HAMLIB_ELAPSED_INVALIDATE 2
2567 
2568 #define HAMLIB_CACHE_ALWAYS (-1)
2570 typedef enum {
2571  HAMLIB_CACHE_ALL, // to set all cache timeouts at once
2572  HAMLIB_CACHE_VFO,
2573  HAMLIB_CACHE_FREQ,
2574  HAMLIB_CACHE_MODE,
2575  HAMLIB_CACHE_PTT,
2576  HAMLIB_CACHE_SPLIT,
2577  HAMLIB_CACHE_WIDTH
2578 } hamlib_cache_t;
2579 
2580 typedef enum {
2581  TWIDDLE_OFF,
2582  TWIDDLE_ON
2583 } twiddle_state_t;
2584 
2591 struct rig_cache {
2592  int timeout_ms; // the cache timeout for invalidating itself
2593  vfo_t vfo;
2594  //freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1
2595  // other abstraction here is based on dual vfo rigs and mapped to all others
2596  // So we have four possible states of rig
2597  // MainA, MainB, SubA, SubB
2598  // Main is the Main VFO and Sub is for the 2nd VFO
2599  // Most rigs have MainA and MainB
2600  // Dual VFO rigs can have SubA and SubB too
2601  // For dual VFO rigs simplex operations are all done on MainA/MainB -- ergo this abstraction
2602  freq_t freqCurr; // Other VFO
2603  freq_t freqOther; // Other VFO
2604  freq_t freqMainA; // VFO_A, VFO_MAIN, and VFO_MAINA
2605  freq_t freqMainB; // VFO_B, VFO_SUB, and VFO_MAINB
2606  freq_t freqMainC; // VFO_C, VFO_MAINC
2607  freq_t freqSubA; // VFO_SUBA -- only for rigs with dual Sub VFOs
2608  freq_t freqSubB; // VFO_SUBB -- only for rigs with dual Sub VFOs
2609  freq_t freqSubC; // VFO_SUBC -- only for rigs with 3 Sub VFOs
2610  freq_t freqMem; // VFO_MEM -- last MEM channel
2611  rmode_t modeCurr;
2612  rmode_t modeOther;
2613  rmode_t modeMainA;
2614  rmode_t modeMainB;
2615  rmode_t modeMainC;
2616  rmode_t modeSubA;
2617  rmode_t modeSubB;
2618  rmode_t modeSubC;
2619  rmode_t modeMem;
2620  pbwidth_t widthCurr; // if non-zero then rig has separate width for MainA
2621  pbwidth_t widthOther; // if non-zero then rig has separate width for MainA
2622  pbwidth_t widthMainA; // if non-zero then rig has separate width for MainA
2623  pbwidth_t widthMainB; // if non-zero then rig has separate width for MainB
2624  pbwidth_t widthMainC; // if non-zero then rig has separate width for MainC
2625  pbwidth_t widthSubA; // if non-zero then rig has separate width for SubA
2626  pbwidth_t widthSubB; // if non-zero then rig has separate width for SubB
2627  pbwidth_t widthSubC; // if non-zero then rig has separate width for SubC
2628  pbwidth_t widthMem; // if non-zero then rig has separate width for Mem
2629  ptt_t ptt;
2630  split_t split;
2631  vfo_t split_vfo; // split caches two values
2632  struct timespec time_freqCurr;
2633  struct timespec time_freqOther;
2634  struct timespec time_freqMainA;
2635  struct timespec time_freqMainB;
2636  struct timespec time_freqMainC;
2637  struct timespec time_freqSubA;
2638  struct timespec time_freqSubB;
2639  struct timespec time_freqSubC;
2640  struct timespec time_freqMem;
2641  struct timespec time_vfo;
2642  struct timespec time_modeCurr;
2643  struct timespec time_modeOther;
2644  struct timespec time_modeMainA;
2645  struct timespec time_modeMainB;
2646  struct timespec time_modeMainC;
2647  struct timespec time_modeSubA;
2648  struct timespec time_modeSubB;
2649  struct timespec time_modeSubC;
2650  struct timespec time_modeMem;
2651  struct timespec time_widthCurr;
2652  struct timespec time_widthOther;
2653  struct timespec time_widthMainA;
2654  struct timespec time_widthMainB;
2655  struct timespec time_widthMainC;
2656  struct timespec time_widthSubA;
2657  struct timespec time_widthSubB;
2658  struct timespec time_widthSubC;
2659  struct timespec time_widthMem;
2660  struct timespec time_ptt;
2661  struct timespec time_split;
2662  int satmode; // if rig is in satellite mode
2663 };
2664 
2669 #include <hamlib/multicast.h>
2671 {
2672  int multicast_running;
2673  int sock;
2674  int seqnumber;
2675  int runflag; // = 0;
2676  pthread_t threadid;
2677  // this mutex is needed to control serial access
2678  // as of 2023-05-13 we have main thread and multicast thread needing it
2679  // eventually we should be able to use cached info only in the main thread to avoid contention
2680  pthread_mutex_t mutex;
2681  int mutex_initialized;
2682 //#ifdef HAVE_ARPA_INET_H
2683  //struct ip_mreq mreq; // = {0};
2684  struct sockaddr_in dest_addr; // = {0};
2685  int port;
2686 //#endif
2687 };
2688 
2689 typedef unsigned int rig_comm_status_t;
2690 
2691 #define RIG_COMM_STATUS_OK 0x00
2692 #define RIG_COMM_STATUS_CONNECTING 0x01
2693 #define RIG_COMM_STATUS_DISCONNECTED 0x02
2694 #define RIG_COMM_STATUS_TERMINATED 0x03
2695 #define RIG_COMM_STATUS_WARNING 0x04
2696 #define RIG_COMM_STATUS_ERROR 0x05
2697 
2708 struct rig_state {
2709  /********* ENSURE ANY NEW ITEMS ARE ADDED AT BOTTOM OF THIS STRUCTURE *********/
2710  /*
2711  * overridable fields
2712  */
2713  // moving the hamlib_port_t to the end of rig_state and making it a pointer
2714  // this should allow changes to hamlib_port_t without breaking shared libraries
2715  // these will maintain a copy of the new port_t for backwards compatibility
2716  // to these offsets -- note these must stay until a major version update is done like 5.0
2717  hamlib_port_t_deprecated rigport_deprecated;
2718  hamlib_port_t_deprecated pttport_deprecated;
2719  hamlib_port_t_deprecated dcdport_deprecated;
2721  double vfo_comp;
2724  freq_range_t rx_range_list[HAMLIB_FRQRANGESIZ];
2725  freq_range_t tx_range_list[HAMLIB_FRQRANGESIZ];
2727  struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
2729  struct filter_list filters[HAMLIB_FLTLSTSIZ];
2733  chan_t chan_list[HAMLIB_CHANLSTSIZ];
2735  shortfreq_t max_rit;
2736  shortfreq_t max_xit;
2737  shortfreq_t max_ifshift;
2741  int preamp[HAMLIB_MAXDBLSTSIZ];
2742  int attenuator[HAMLIB_MAXDBLSTSIZ];
2755  /*
2756  * non overridable fields, internal use
2757  */
2758 
2760  vfo_t current_vfo;
2761  int vfo_list;
2763  rig_ptr_t priv;
2764  rig_ptr_t obj;
2768  freq_t current_freq;
2770  //rmode_t current_modeB; /*!< Mode currently set VFOB */
2771  pbwidth_t current_width;
2772  vfo_t tx_vfo;
2774  // mode_list is used by some
2775  // so anything added to this structure must be below here
2776  int transmit;
2779  freq_t lo_freq;
2780  time_t twiddle_time;
2782  // uplink allows gpredict to behave better by no reading the uplink VFO
2783  int uplink;
2784  struct rig_cache cache;
2785  int vfo_opt;
2800  vfo_t rx_vfo;
2802  volatile unsigned int snapshot_packet_sequence_number;
2803 
2804  volatile int multicast_publisher_run;
2806  volatile int async_data_handler_thread_run;
2807  void *async_data_handler_priv_data;
2808  volatile int poll_routine_thread_run;
2809  void *poll_routine_priv_data;
2810  pthread_mutex_t mutex_set_transaction;
2811  hamlib_port_t rigport;
2812  hamlib_port_t pttport;
2813  hamlib_port_t dcdport;
2814  /********* DO NOT ADD or CHANGE anything (or than to rename) ABOVE THIS LINE *********/
2815  /********* ENSURE ANY NEW ITEMS ARE ADDED AFTER HERE *********/
2816  /* flags instructing the rig_get routines to use cached values when asyncio is in use */
2820  int depth;
2824  char client_version[32];
2825  freq_t offset_vfoa;
2826  freq_t offset_vfob;
2828  // Adding a number of items so netrigctl can see the real rig information
2829  // Eventually may want to add these so that rigctld can see more of the backend
2830  // But that will come later if requested -- for now they just fill out dumpstate.c
2832  const char *model_name;
2833  const char *mfg_name;
2834  const char *version;
2835  const char *copyright;
2837  int rig_type;
2849  int timeout;
2850  int retry;
2854  enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS];
2855  tone_t *ctcss_list;
2856  tone_t *dcs_list;
2860  int bank_qty;
2862  freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ];
2863  freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ];
2864  freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ];
2865  freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ];
2866  freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ];
2867  freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ];
2868  freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ];
2869  freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ];
2870  freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ];
2871  freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ];
2872  struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES];
2873  enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES];
2874  freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS];
2875  struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES];
2876  int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ];
2877  volatile int morse_data_handler_thread_run;
2878  void *morse_data_handler_priv_data;
2879  FIFO_RIG *fifo_morse;
2880  int doppler;
2885  volatile int multicast_receiver_run;
2887  rig_comm_status_t comm_status;
2888  char device_id[HAMLIB_RIGNAMSIZ];
2891  struct timespec freq_event_elapsed;
2893  client_t client;
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:2840
Definition: rig.h:793
scan_t rig_has_scan(RIG *rig, scan_t scan)
check availability of scanning functions
Definition: rig.c:7141
setting_t funcs
Definition: rig.h:1640
Definition: rig.h:713
enum serial_handshake_e serial_handshake
Definition: rig.h:2846
int multicast_data_port
Definition: rig.h:2882
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:903
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:585
vfo_cb_t vfo_event
Definition: rig.h:3074
int auto_power_on
Definition: rig.h:2786
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:1734
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:716
Definition: rig.h:788
unsigned tuning_step
Definition: rig.h:1637
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:1146
unsigned channel_desc
Definition: rig.h:1648
Definition: rig.h:1172
vfo_op_t vfo_ops
Definition: rig.h:2857
Definition: rig.h:667
Definition: rig.h:792
unsigned tx_vfo
Definition: rig.h:1634
int rig_set_uplink(RIG *rig, int val)
For GPredict to avoid reading frequency on uplink VFO.
Definition: rig.c:1906
setting_t rig_has_get_level(RIG *rig, setting_t level)
check retrieval ability of level settings
Definition: settings.c:309
Definition: rig.h:448
setting_t has_set_func
Definition: rig.h:2745
struct ext_list * ext_levels
Definition: rig.h:1606
hamlib_bandselect_t
Definition: rig.h:796
int raw
Definition: rig.h:1749
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:4196
value_t min
Definition: rig.h:1732
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:1622
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:1526
vfo_t tx_vfo
Definition: rig.h:2772
float f
Definition: rig.h:1030
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:3290
scan_t
Rig Scan operation.
Definition: rig.h:845
Definition: rig.h:673
float step
Definition: rig.h:913
int rig_get_rig_info(RIG *rig, char *response, int max_response_len)
get freq/mode/width for requested VFO
Definition: rig.c:7918
Definition: rig.h:1152
shortfreq_t xit
Definition: rig.h:1596
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:1672
Definition: rig.h:797
dcd_type_t dcd_type
Definition: rig.h:2839
uint32_t rig_model_t
Convenience type definition for rig model.
Definition: riglist.h:708
Definition: rig.h:368
int chan_desc_sz
Definition: rig.h:2861
unsigned tx_width
Definition: rig.h:1631
pbwidth_t tx_width
Definition: rig.h:1587
Definition: rig.h:753
char tag[32]
Definition: rig.h:1608
Definition: rig.h:696
Definition: rig.h:321
int low_power
Definition: rig.h:1463
Definition: rig.h:1679
Definition: rig.h:1143
hamlib_port_t_deprecated rigport_deprecated
Definition: rig.h:2717
hamlib_port_t_deprecated dcdport_deprecated
Definition: rig.h:2719
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 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:907
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:7399
const char * cs
Definition: rig.h:1032
rig_ptr_t pltune_arg
Definition: rig.h:3081
int serial_data_bits
Definition: rig.h:2843
int transaction_active
Definition: rig.h:2759
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:6713
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:1461
powerstat_t powerstat
Definition: rig.h:2822
int twiddle_timeout
Definition: rig.h:2980
shortfreq_t max_ifshift
Definition: rig.h:2737
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:3231
freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2862
int uplink
Definition: rig.h:2783
gran_t level_gran[64]
Definition: rig.h:2751
vfo_t vfo
Definition: rig.h:1579
Definition: rig.h:337
const char * model_name
Definition: rig.h:2832
Definition: rig.h:422
unsigned rptr_offs
Definition: rig.h:1636
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:1439
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:7174
int freq_skip
Definition: rig.h:2892
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:2413
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:6639
rig_parm_e
Rig Parameters.
Definition: rig.h:1138
struct cal_table::@3 table[HAMLIB_MAX_CAL_LENGTH]
Tuning step definition.
Definition: rig.h:1491
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:6234
setting_t rig_has_set_level(RIG *rig, setting_t level)
check settable ability of level settings
Definition: settings.c:339
vfo_op_t rig_has_vfo_op(RIG *rig, vfo_op_t op)
check retrieval ability of VFO operations
Definition: rig.c:7029
int rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
set PTT on/off
Definition: rig.c:3540
Definition: rig.h:885
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:1459
ann_t announces
Definition: rig.h:2739
Calibration table struct for float values.
Definition: rig.h:1776
hamlib_port_t dcdport
Definition: rig.h:3012
Definition: rig.h:790
Definition: rig.h:206
double signal_strength_min
Definition: rig.h:1854
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:2821
Definition: rig.h:890
Definition: rig.h:195
int startc
Definition: rig.h:1698
rig_model_t rig_model
Definition: rig.h:2831
Definition: rig.h:324
value_t levels[64]
Definition: rig.h:1598
int vfo_list
Definition: rig.h:2761
double signal_strength_max
Definition: rig.h:1855
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:2729
unsigned flags
Definition: rig.h:1647
setting_t has_get_func
Definition: rig.h:2744
signed int i
Definition: rig.h:1028
Definition: rig.h:1825
pbwidth_t current_width
Definition: rig.h:2771
setting_t has_get_parm
Definition: rig.h:2748
int poll_interval
Definition: rig.h:2966
Definition: rig.h:372
Definition: rig.h:323
Definition: rig.h:1145
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:1581
setting_t rig_has_set_func(RIG *rig, setting_t func)
check ability of radio functions
Definition: settings.c:457
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:2725
int use_cached_mode
Definition: rig.h:2818
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:1859
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:1470
rig_ptr_t obj
Definition: rig.h:2963
int power_max
Definition: rig.h:2796
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:1583
Definition: rig.h:814
rmode_t mode
Definition: rig.h:1582
Definition: rig.h:854
shortfreq_t tuning_step
Definition: rig.h:1594
freq_t current_freq
Definition: rig.h:2768
freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2865
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:6546
int rig_probe_all(hamlib_port_t *port, rig_probe_func_t cfunc, rig_ptr_t data)
try to guess rigs
Definition: rig.c:7000
float val
Definition: rig.h:1780
int auto_power_off
Definition: rig.h:2987
Definition: rig.h:449
freq_t startf
Definition: rig.h:1460
Definition: rig.h:685
int post_ptt_delay
Definition: rig.h:2890
int rig_send_dtmf(RIG *rig, vfo_t vfo, const char *digits)
send DTMF digits
Definition: rig.c:7246
serial_handshake_e
Serial handshake.
Definition: rig.h:345
int high_power
Definition: rig.h:1464
Definition: rig.h:703
Definition: rig.h:934
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:5030
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:488
Definition: rig.h:367
unsigned vfo
Definition: rig.h:1623
Definition: rig.h:700
unsigned mode
Definition: rig.h:1626
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:2793
Definition: rig.h:322
Spectrum scope.
Definition: rig.h:1811
Definition: rig.h:325
Spectrum scope averaging modes.
Definition: rig.h:1831
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:1621
Definition: rig.h:1140
int bank_qty
Definition: rig.h:2860
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:6778
Channel structure.
Definition: rig.h:1576
Definition: rig.h:369
Definition: rig.h:715
ann_t announces
Definition: rig.h:2938
Definition: rig.h:1675
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:1747
Definition: rig.h:1824
int power_now
Definition: rig.h:2794
Definition: rig.h:891
const char * rig_license()
get the Hamlib license
Definition: rig.c:8164
Definition: rig.h:847
int serial_rate_min
Definition: rig.h:2841
int rig_wait_morse(RIG *rig, vfo_t vfo)
wait morse code
Definition: rig.c:7604
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:971
rig_spectrum_mode_e
Spectrum scope modes.
Definition: rig.h:1820
unsigned int u
Definition: rig.h:1029
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:7812
Extension attribute definition.
Definition: rig.h:1559
Definition: rig.h:656
struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES]
Definition: rig.h:2872
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:2702
int rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit)
set the XIT
Definition: rig.c:6162
setting_t rig_has_get_parm(RIG *rig, setting_t parm)
check retrieval ability of parameter settings
Definition: settings.c:369
freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2870
int async_data_supported
Definition: rig.h:2852
enum serial_parity_e serial_parity
Definition: rig.h:2845
Universal approach for passing values.
Definition: rig.h:1027
Definition: rig.h:197
Definition: rig.h:886
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:5268
char * multicast_cmd_addr
Definition: rig.h:2883
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:2798
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:2863
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:2749
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:847
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:7776
freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2871
vfo_t current_vfo
Definition: rig.h:2959
freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2864
unsigned ant
Definition: rig.h:1624
freq_cb_t freq_event
Definition: rig.h:3070
ptt_type_t ptt_type
Definition: rig.h:2838
setting_t has_get_func
Definition: rig.h:2943
vfo_t current_vfo
Definition: rig.h:2760
rig_ptr_t dcd_arg
Definition: rig.h:3079
int auto_power_off
Definition: rig.h:2788
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:3871
hamlib_port_t pttport
Definition: rig.h:2812
The Rig structure.
Definition: rig.h:3097
int write_delay
Definition: rig.h:2847
dcd_type_t
DCD type.
Definition: rig.h:665
struct multicast_s * multicast
Definition: rig.h:2827
Definition: rig.h:779
int rig_reset(RIG *rig, reset_t reset)
reset the radio
Definition: rig.c:6927
rmode_t modes
Definition: rig.h:1462
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:8125
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:1601
char * s
Definition: rig.h:1031
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:1531
Definition: rig.h:815
int raw
Definition: rig.h:1779
freq_t offset_vfob
Definition: rig.h:2826
setting_t rig_has_set_parm(RIG *rig, setting_t parm)
check settable ability of parameter settings
Definition: settings.c:398
struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ]
Definition: rig.h:2727
unsigned tag
Definition: rig.h:1650
meter_level_e
Level display meters.
Definition: rig.h:1008
chan_type_t
Memory channel type definition.
Definition: rig.h:1669
setting_t has_set_level
Definition: rig.h:2747
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:1577
setting_t rig_has_get_func(RIG *rig, setting_t func)
check ability of radio functions
Definition: settings.c:427
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:1676
Definition: rig.h:213
const char * rig_copyright()
get the Hamlib copyright
Definition: rig.c:8184
rig_comm_status_t comm_status
Definition: rig.h:2887
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:2881
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:1147
Definition: rig.h:203
shortfreq_t max_rit
Definition: rig.h:2735
Definition: rig.h:1674
Definition: rig.h:801
char * tuner_control_pathname
Definition: rig.h:3022
Definition: rig.h:725
Definition: rig.h:1677
rmode_t modes
Definition: rig.h:1492
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:2219
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:944
struct rig_state state
Definition: rig.h:3103
Definition: rig.h:250
int poll_interval
Definition: rig.h:2767
Definition: rig.h:697
Definition: rig.h:388
int post_write_delay
Definition: rig.h:2848
Definition: rig.h:765
unsigned split
Definition: rig.h:1633
freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2868
int rig_open(RIG *rig)
open the communication to the rig
Definition: rig.c:934
Definition: rig.h:929
Definition: rig.h:1173
unsigned rit
Definition: rig.h:1638
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:2776
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:2836
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:2855
Rig state containing live data and customized fields.
Definition: rig.h:2708
vfo_t rx_vfo
Definition: rig.h:2800
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:1595
Definition: rig.h:785
Definition: rig.h:808
Definition: rig.h:758
Definition: rig.h:783
Definition: rig.h:933
Definition: rig.h:196
hamlib_port_t rigport
Definition: rig.h:3010
int transceive
Definition: rig.h:2859
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:781
time_t twiddle_time
Definition: rig.h:2780
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:2724
int twiddle_state
Definition: rig.h:2998
freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2869
Definition: rig.h:1174
ann_t
Announce.
Definition: rig.h:927
int rig_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)
get the current repeater shift
Definition: rig.c:4419
multicast_item_e
Multicast data items 3 different data item can be included in the multicast JSON. ...
Definition: rig.h:1181
int rig_cleanup(RIG *rig)
release a rig handle and free associated memory
Definition: rig.c:1838
RIG * rig_init(rig_model_t rig_model)
Allocate a new RIG handle.
Definition: rig.c:531
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:888
pbwidth_t rig_passband_normal(RIG *rig, rmode_t mode)
get the normal passband of a mode
Definition: rig.c:3127
Definition: rig.h:205
Definition: rig.h:373
Definition: rig.h:786
int use_cached_ptt
Definition: rig.h:2819
setting_t rig_parse_parm(const char *s)
Convert alpha string to RIG_PARM_...
Definition: misc.c:1303
unsigned xit
Definition: rig.h:1639
int serial_rate_max
Definition: rig.h:2842
int targetable_vfo
Definition: rig.h:2851
int rig_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
set the repeater shift
Definition: rig.c:4341
Definition: rig.h:315
Definition: rig.h:439
#define RIG_SETTING_MAX
Maximum # of rig settings.
Definition: rig.h:1209
unsigned int ant_t
Antenna typedef.
Definition: rig.h:984
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:1467
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:1882
Definition: rig.h:805
const char * name
Definition: rig.h:904
int scan_group
Definition: rig.h:1603
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:241
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:4580
int rig_send_voice_mem(RIG *rig, vfo_t vfo, int ch)
send voice memory content
Definition: rig.c:7669
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:8025
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:1050
Definition: rig.h:1150
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:2817
Definition: rig.h:787
int deprecated_itu_region
Definition: rig.h:2922
Definition: rig.h:1139
Rig cache data.
Definition: rig.h:2591
int rig_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
Definition: rig.c:2959
int rig_get_vfo_list(RIG *rig, char *buf, int buflen)
get list of available vfos
Definition: rig.c:8106
Hamlib rig(radio) model definitions.
rig_conf_e
parameter types
Definition: rig.h:884
Definition: rig.h:759
int power_now
Definition: rig.h:2993
Definition: rig.h:810
rmode_t mode_list
Definition: rig.h:2773
enum rig_port_e rig_port_t
Port type.
setting_t levels
Definition: rig.h:1641
rmode_t tx_mode
Definition: rig.h:1586
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:1642
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:5574
Definition: rig.h:887
setting_t funcs
Definition: rig.h:1597
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:6466
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:7323
int timeout
Definition: rig.h:2849
Calibration table struct.
Definition: rig.h:1746
Definition: rig.h:931
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:112
int vfo_opt
Definition: rig.h:2785
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:275
freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS]
Definition: rig.h:2874
freq_t low_edge_freq
Definition: rig.h:1862
int id
Definition: rig.h:1850
Definition: rig.h:754
int size
Definition: rig.h:1777
freq_t high_edge_freq
Definition: rig.h:1863
gran_t parm_gran[64]
Definition: rig.h:2752
tone_t ctcss_tone
Definition: rig.h:1599
value_t val
Definition: rig.h:1561
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:2746
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:5913
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:1493
Definition: rig.h:928
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:2811
int rig_set_ext_parm(RIG *rig, hamlib_token_t token, value_t val)
set a radio parm extra parameter
Definition: settings.c:912
Definition: rig.h:1872
Definition: rig.h:820
int auto_disable_screensaver
Definition: rig.h:2790
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:5432
unsigned tx_mode
Definition: rig.h:1630
int rig_get_powerstat(RIG *rig, powerstat_t *status)
get the on/off status of the radio
Definition: rig.c:6872
pbwidth_t width
Definition: rig.h:1528
freq_t span_freq
Definition: rig.h:1860
freq_t offset_vfoa
Definition: rig.h:3024
enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES]
Definition: rig.h:2873
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:5662
enum rig_spectrum_mode_e spectrum_mode
Definition: rig.h:1857
Definition: rig.h:1148
hamlib_port_t_deprecated port_t_deprecated
Port definition.
Definition: rig.h:2503
int rig_get_trn(RIG *rig, int *trn)
get the current transceive mode
Definition: event.c:606
unsigned int flags
Definition: rig.h:1604
Definition: rig.h:819
freq_t lo_freq
Definition: rig.h:2779
unsigned rptr_shift
Definition: rig.h:1635
Definition: rig.h:150
int rig_stop_morse(RIG *rig, vfo_t vfo)
stop morse code
Definition: rig.c:7495
int rig_get_twiddle(RIG *rig, int *seconds)
get the twiddle timeout value (secs)
Definition: rig.c:1933
const char * version
Definition: rig.h:2834
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:1580
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:441
freq_t offset_vfoa
Definition: rig.h:2825
const char * combostr[RIG_COMBO_MAX]
Definition: rig.h:916
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:2064
chan_type_t type
Definition: rig.h:1700
Definition: rig.h:1149
Definition: rig.h:930
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:4853
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:7738
const char * tooltip
Definition: rig.h:906
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:1697
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:2761
cookie_e
Rig Cookie enumerations.
Definition: rig.h:1171
unsigned ctcss_sql
Definition: rig.h:1643
Definition: rig.h:1144
level/parm granularity definition
Definition: rig.h:1731
Definition: rig.h:334
rig_model_t rig_probe(hamlib_port_t *port)
try to guess a rig
Definition: rig.c:6972
rig_caps_int_e
Enumeration of rig->caps values.
Definition: rig.h:2322
char * tuner_control_pathname
Definition: rig.h:2823
shortfreq_t rptr_offs
Definition: rig.h:1593
const char * rig_strcommstatus(rig_comm_status_t status)
Convert enum RIG_COMM_STATUS... to alpha string.
Definition: misc.c:2757
unsigned freq
Definition: rig.h:1625
ptt_t
PTT status.
Definition: rig.h:681
int data_level_max
Definition: rig.h:1853
float min
Definition: rig.h:911
char channel_desc[HAMLIB_MAXCHANDESC]
Definition: rig.h:1605
int rig_close(RIG *rig)
close the communication to the rig
Definition: rig.c:1661
struct cal_table_float::@4 table[HAMLIB_MAX_CAL_LENGTH]
int deprecated_itu_region
Definition: rig.h:2723
int bank_num
Definition: rig.h:1578
Definition: rig.h:1141
int doppler
Definition: rig.h:2880
int power_min
Definition: rig.h:2795
Definition: rig.h:812
char client_version[32]
Definition: rig.h:2824
Definition: rig.h:798
Definition: rig.h:1142
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:1629
int twiddle_rit
Definition: rig.h:2997
rmode_t modes
Definition: rig.h:1527
unsigned dcs_code
Definition: rig.h:1644
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:2850
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:2875
Definition: rig.h:763
unsigned int vfo_t
VFO definition.
Definition: rig.h:518
Definition: rig.h:1678
int rig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
get the value of a level
Definition: settings.c:153
freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2866
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:650
unsigned width
Definition: rig.h:1627
Definition: rig.h:817
ptt_cb_t ptt_event
Definition: rig.h:3076
Definition: rig.h:1671
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:908
Definition: rig.h:246
vfo_t vfo
Definition: rig.h:1465
Definition: rig.h:199
int preamp[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2741
Definition: rig.h:1823
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:2853
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:2867
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:1852
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:1585
vfo_t tx_vfo
Definition: rig.h:1590
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:2766
rig_ptr_t freq_arg
Definition: rig.h:3071
Definition: rig.h:764
int endc
Definition: rig.h:1699
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:2364
enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS]
Definition: rig.h:2854
tone_t * dcs_list
Definition: rig.h:2856
Definition: rig.h:698
size_t spectrum_data_length
Definition: rig.h:1865
Definition: rig.h:198
tone_t dcs_sql
Definition: rig.h:1602
Definition: rig.h:1673
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:1879
int auto_disable_screensaver
Definition: rig.h:2989
int transaction_active
Definition: rig.h:2958
uint64_t setting_t
Setting.
Definition: rig.h:1203
int twiddle_state
Definition: rig.h:2799
int twiddle_timeout
Definition: rig.h:2781
Definition: rig.h:813
Definition: rig.h:800
cal_table_t str_cal
Definition: rig.h:2731
dcd_cb_t dcd_event
Definition: rig.h:3078
Definition: rig.h:932
rig_ptr_t vfo_arg
Definition: rig.h:3075
int serial_stop_bits
Definition: rig.h:2844
Definition: rig.h:849
int lock_mode
Definition: rig.h:3020
Definition: rig.h:850
rig_ptr_t obj
Definition: rig.h:2764
struct filter_list filters[HAMLIB_FLTLSTSIZ]
Definition: rig.h:2928
Definition: rig.h:889
unsigned ext_levels
Definition: rig.h:1649
Multicast data items the are unique per rig instantiation This is meant for internal Hamlib use only...
Definition: rig.h:2670
split_t split
Definition: rig.h:1589
Definition: rig.h:418
Definition: rig.h:212
unsigned char * spectrum_data
Definition: rig.h:1866
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:8213
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:8143
unsigned char disable_yaesu_bandselect
Definition: rig.h:2797
int dual_watch
Definition: rig.h:2889
Definition: rig.h:440
const char * mfg_name
Definition: rig.h:2833
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:3178
int rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op)
perform Memory/VFO operations
Definition: rig.c:7058
char client_version[32]
Definition: rig.h:3023
shortfreq_t max_xit
Definition: rig.h:2736
Definition: rig.h:757
Definition: rig.h:356
Definition: rig.h:370
Definition: rig.h:714
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:1733
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:2656
int multicast_cmd_port
Definition: rig.h:2884
shortfreq_t max_xit
Definition: rig.h:2935
unsigned scan_group
Definition: rig.h:1646
Definition: network.c:131
Definition: rig.h:1151
int rig_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts)
get the current Tuning Step
Definition: rig.c:6384
Definition: rig.h:712
Definition: rig.h:724
int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2876
Definition: rig.h:1153
int rig_set_powerstat(RIG *rig, powerstat_t status)
turn on/off the radio
Definition: rig.c:6820
Definition: rig.h:347
scan_t scan_ops
Definition: rig.h:2858
Configuration parameter structure.
Definition: rig.h:902
uint64_t rmode_t
Radio mode.
Definition: rig.h:1361
tone_t ctcss_sql
Definition: rig.h:1600
int rig_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts)
set the Tuning Step
Definition: rig.c:6312
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:4503
Definition: rig.h:846
Definition: rig.h:338
const char * label
Definition: rig.h:905
int rig_type
Definition: rig.h:2837
int val
Definition: rig.h:1750
int rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit)
set the RIT
Definition: rig.c:6012
Definition: rig.h:695
Definition: rig.h:823
union confparams::@0 u
ant_t ant
Definition: rig.h:1466
const char * copyright
Definition: rig.h:2835
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:4663
Definition: rig.h:317
Definition: rig.h:249
hamlib_port_t dcdport
Definition: rig.h:2813
int preamp[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2940
channel_cap_t mem_caps
Definition: rig.h:1701
int rig_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit)
get the current RIT offset
Definition: rig.c:6084
int depth
Definition: rig.h:2820
hamlib_port_t_deprecated pttport_deprecated
Definition: rig.h:2718
Definition: rig.h:669
rig_ptr_t priv
Definition: rig.h:2763
Definition: rig.h:1822
Definition: rig.h:1680
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:2762
const char * rig_get_info(RIG *rig)
get general information from the radio
Definition: rig.c:7851
Definition: rig.h:1670
float max
Definition: rig.h:912
int rig_get_vfo(RIG *rig, vfo_t *vfo)
get the current VFO
Definition: rig.c:3437
Represents a single line of rig spectrum scope FFT data.
Definition: rig.h:1848
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:2769
Definition: rig.h:824
unsigned dcs_sql
Definition: rig.h:1645
Definition: rig.h:699
int attenuator[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2742
Definition: rig.h:374
int attenuator[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2941
rptr_shift_t rptr_shift
Definition: rig.h:1592
int power_max
Definition: rig.h:2995
const char * rig_version()
get the Hamlib version
Definition: rig.c:8174
Definition: rig.h:851
double vfo_comp
Definition: rig.h:2721
int use_cached_ptt
Definition: rig.h:3018
hamlib_token_t token
Definition: rig.h:1560
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