Hamlib 4.7.1
Loading...
Searching...
No Matches
rig.h
Go to the documentation of this file.
1/*
2 * Hamlib Interface - API header
3 * Copyright (c) 2000-2003 by Frank Singleton
4 * Copyright (c) 2000-2012 by Stephane Fillod
5 *
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 *
21 */
22/* SPDX-License-Identifier: LGPL-2.1-or-later */
23
24#ifndef _RIG_H
25#define _RIG_H 1
26
27// as of 2023-11-23 rig_caps is no longer constant
28// this #define allows clients to test which declaration to use for backwards compatibility
29// As of 2025-01-03 removing this -- fldigi was the only one that got it right
30// riglist_foreach is now constant again but others are not
31// #define RIGCAPS_NOT_CONST 1
32
33#define BUILTINFUNC 0
34
35// Our shared secret password
36#define HAMLIB_SECRET_LENGTH 32
37
38#define HAMLIB_TRACE rig_debug(RIG_DEBUG_TRACE,"%s%s(%d) trace\n",hl_stars(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
76/* Define macros for handling attributes, if the compiler implements them
77 * Should be available in c23-capable compilers, or c++11 ones
78 */
79// From ISO/IEC 9899:202y n3301 working draft
80#ifndef __has_c_attribute
81#define __has_c_attribute(x) 0
82#endif
83
84// Macro to mark fallthrough as OK
85// Squelch warnings if -Wimplicit-fallthrough added to CFLAGS
86#if __has_c_attribute(fallthrough)
87#define HL_FALLTHROUGH [[fallthrough]];
88#else
89/* Fall back to nothing */
90#define HL_FALLTHROUGH
91#endif
92
93// Macro to mark function or variable as deprecated/obsolete
94#if __has_c_attribute(deprecated)
95#define HL_DEPRECATED [[deprecated]]
96#else
97// Make it vanish
98#define HL_DEPRECATED
99#endif
100
105
112
113
114/* __BEGIN_DECLS should be used at the beginning of your declarations,
115 * so that C++ compilers don't mangle their names. Use __END_DECLS at
116 * the end of C declarations. */
118#undef __BEGIN_DECLS
119#undef __END_DECLS
120#ifdef __cplusplus
121# define __BEGIN_DECLS extern "C" {
122# define __END_DECLS }
123#else
124# define __BEGIN_DECLS /* empty */
125# define __END_DECLS /* empty */
126#endif
128
129/* HAMLIB_PARAMS is a macro used to wrap function prototypes, so that compilers
130 * that don't understand ANSI C prototypes still work, and ANSI C
131 * compilers can issue warnings about type mismatches. */
133#undef HAMLIB_PARAMS
134#if defined (__STDC__) \
135 || defined (_AIX) \
136 || (defined (__mips) && defined (_SYSTYPE_SVR4)) \
137 || defined(__CYGWIN__) \
138 || defined(_WIN32) \
139 || defined(__cplusplus)
140# define HAMLIB_PARAMS(protos) protos
141# define rig_ptr_t void *
142# define amp_ptr_t void *
143#else
144# define HAMLIB_PARAMS(protos) ()
145# define rig_ptr_t char *
146# define amp_ptr_t char *
147#endif
149
150#include <hamlib/rig_dll.h>
151
152#ifndef SWIGLUA
154#define CONSTANT_64BIT_FLAG(BIT) (1ull << (BIT))
156#else
157/* SWIG's older Lua generator doesn't grok ull due to Lua using a
158 double-precision floating point type internally for number
159 representations (max 53 bits of precision) so makes a string
160 constant from a constant number literal using ull */
161// #define CONSTANT_64BIT_FLAG(BIT) (1 << (BIT))
162// #define SWIGLUAHIDE
163/* But this appears to have been fixed so we'll use the correct one now
164 If you have the older version of SWIG comment out this line and use
165 the two above */
166// This 1ul definition works on swig 4.0.1 and lua 5.3.5
167#define CONSTANT_64BIT_FLAG(BIT) (1ul << (BIT))
168#endif
169
170__BEGIN_DECLS
171
176// cookie is 26-char time code plus 10-char (2^31-1) random number
177#define HAMLIB_COOKIE_SIZE 37
178extern int cookie_use; // this is global as once one client requests it everybody needs to honor it
179extern int skip_init; // allow rigctl to skip any radio commands at startup
180
182extern HAMLIB_EXPORT_VAR(const char) hamlib_version[];
183extern HAMLIB_EXPORT_VAR(const char) hamlib_copyright[];
184extern HAMLIB_EXPORT_VAR(const char *) hamlib_version2;
185extern HAMLIB_EXPORT_VAR(const char *) hamlib_copyright2;
187
222
228#define RIG_IS_SOFT_ERRCODE(errcode) (errcode == -RIG_EINVAL || errcode == -RIG_ENIMPL || errcode == -RIG_ERJCTED \
229 || errcode == -RIG_ETRUNC || errcode == -RIG_ENAVAIL || errcode == -RIG_ENTARGET \
230 || errcode == -RIG_EVFO || errcode == -RIG_EDOM || errcode == -RIG_EDEPRECATED \
231 || errcode == -RIG_ESECURITY || errcode == -RIG_EPOWER)
232
236#define NETRIGCTL_RET "RPRT "
237
238
255
256
257/* --------------- Rig capabilities -----------------*/
258
259/* Forward struct references
260 * may also include structures defined elsewhere,
261 * but pointed to by rig
262 */
263
264struct rig;
265struct rig_state;
266struct rig_cache;
267struct hamlib_port;
268typedef struct hamlib_port hamlib_port_t;
269//---Start cut here---
272//---End cut here---
273
277typedef struct s_rig RIG;
278
280#define HAMLIB_RIGNAMSIZ 30
281#define HAMLIB_RIGVERSIZ 8
282#define HAMLIB_FILPATHLEN 512
283/* Debian: Hamlib 4.3 drops FILPATHLEN, restore until all rdeps have been updated */
284#define FILPATHLEN HAMLIB_FILPATHLEN
285#define HAMLIB_FRQRANGESIZ 30
286#define HAMLIB_MAXCHANDESC 30 /* describe channel eg: "WWV 5 MHz" */
287#define HAMLIB_TSLSTSIZ 20 /* max tuning step list size, zero ended */
288#define HAMLIB_FLTLSTSIZ 60 /* max mode/filter list size, zero ended */
289#define HAMLIB_MAXDBLSTSIZ 8 /* max preamp/att levels supported, zero ended */
290#define HAMLIB_CHANLSTSIZ 16 /* max mem_list size, zero ended */
291#define HAMLIB_MAX_AGC_LEVELS 8 /* max AGC levels supported */
292#define HAMLIB_MAX_SPECTRUM_SCOPES 4 /* max number of spectrum scopes supported */
293#define HAMLIB_MAX_SPECTRUM_MODES 5 /* max number of spectrum modes supported */
294#define HAMLIB_MAX_SPECTRUM_AVG_MODES 12 /* max number of spectrum averaging modes supported */
295#define HAMLIB_MAX_SPECTRUM_SPANS 20 /* max number of spectrum modes supported */
296#define HAMLIB_MAX_SPECTRUM_DATA 2048 /* max number of data bytes in a single spectrum line */
297#define HAMLIB_MAX_CAL_LENGTH 32 /* max calibration plots in cal_table_t */
298#define HAMLIB_MAX_MODES 63
299#define HAMLIB_MAX_VFOS 31
300#define HAMLIB_MAX_ROTORS 31
301#define HAMLIB_MAX_VFO_OPS 31
302#define HAMLIB_MAX_RSCANS 31
303#define HAMLIB_MAX_SNAPSHOT_PACKET_SIZE 16384 /* maximum number of bytes in a UDP snapshot packet */
305
306
317typedef unsigned int tone_t;
318#define CTCSS_LIST_SIZE 60
319#define DCS_LIST_SIZE 128
320
321
343
344
355
356
365
366
375
376
380typedef enum {
381 RIG_FLAG_RECEIVER = (1 << 1),
383 RIG_FLAG_SCANNER = (1 << 3),
384 RIG_FLAG_MOBILE = (1 << 4),
385 RIG_FLAG_HANDHELD = (1 << 5),
386 RIG_FLAG_COMPUTER = (1 << 6),
387 RIG_FLAG_TRUNKING = (1 << 7),
388 RIG_FLAG_APRS = (1 << 8),
389 RIG_FLAG_TNC = (1 << 9),
390 RIG_FLAG_DXCLUSTER = (1 << 10),
391 RIG_FLAG_TUNER = (1 << 11)
392} rig_type_t;
393
397/* TODO: kill me, and replace by real AGC delay */
399 RIG_AGC_OFF = 0,
400 RIG_AGC_SUPERFAST,
401 RIG_AGC_FAST,
402 RIG_AGC_SLOW,
404 RIG_AGC_MEDIUM,
405 RIG_AGC_AUTO,
406 RIG_AGC_LONG,
409};
410
411
413#define RIG_FLAG_TRANSCEIVER (RIG_FLAG_RECEIVER|RIG_FLAG_TRANSMITTER)
414#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)
415
416#define RIG_TYPE_OTHER 0
417#define RIG_TYPE_TRANSCEIVER RIG_FLAG_TRANSCEIVER
418#define RIG_TYPE_HANDHELD (RIG_FLAG_TRANSCEIVER|RIG_FLAG_HANDHELD)
419#define RIG_TYPE_MOBILE (RIG_FLAG_TRANSCEIVER|RIG_FLAG_MOBILE)
420#define RIG_TYPE_RECEIVER RIG_FLAG_RECEIVER
421#define RIG_TYPE_PCRECEIVER (RIG_FLAG_COMPUTER|RIG_FLAG_RECEIVER)
422#define RIG_TYPE_SCANNER (RIG_FLAG_SCANNER|RIG_FLAG_RECEIVER)
423#define RIG_TYPE_TRUNKSCANNER (RIG_TYPE_SCANNER|RIG_FLAG_TRUNKING)
424#define RIG_TYPE_COMPUTER (RIG_FLAG_TRANSCEIVER|RIG_FLAG_COMPUTER)
425#define RIG_TYPE_TUNER RIG_FLAG_TUNER
427
428
438 /* RIG_STATUS_NEW * *!< Initial release of code
439 * !! Use of RIG_STATUS_NEW is deprecated. Do not use it anymore */
440};
441
446#define RIG_STATUS_NEW RIG_STATUS_UNTESTED
447
448
457
458
462typedef enum {
465} split_t;
466
467
473typedef double freq_t;
474
478#define PRIfreq ".0f"
479
483#define SCNfreq "lf"
487#define FREQFMT SCNfreq
488
489
495typedef signed long shortfreq_t;
496
498#define Hz(f) ((freq_t)(f))
500#define kHz(f) ((freq_t)((f)*(freq_t)1000))
502#define MHz(f) ((freq_t)((f)*(freq_t)1000000))
504#define GHz(f) ((freq_t)((f)*(freq_t)1000000000))
505
507#define s_Hz(f) ((shortfreq_t)(f))
509#define s_kHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000))
511#define s_MHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000))
513#define s_GHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000000))
514
516#define RIG_FREQ_NONE Hz(0)
517
518
533typedef unsigned int vfo_t;
534
536
537#define RIG_VFO_N(n) (1u<<(n))
538
540#define RIG_VFO_NONE 0
541
543#define RIG_VFO_A RIG_VFO_N(0)
544
546#define RIG_VFO_B RIG_VFO_N(1)
547
549#define RIG_VFO_C RIG_VFO_N(2)
550
551// Any addition VFOS need to go from 3-20
552// To maintain backward compatibility these values cannot change
553
555#define RIG_VFO_SUB_A RIG_VFO_N(21)
556
558#define RIG_VFO_SUB_B RIG_VFO_N(22)
559
561#define RIG_VFO_SUB_C RIG_VFO_N(3)
562
564#define RIG_VFO_MAIN_A RIG_VFO_N(23)
565
567#define RIG_VFO_MAIN_B RIG_VFO_N(24)
568
570#define RIG_VFO_MAIN_C RIG_VFO_N(4)
571
573#define RIG_VFO_OTHER RIG_VFO_N(5)
574
576#define RIG_VFO_SUB RIG_VFO_N(25)
577
579#define RIG_VFO_MAIN RIG_VFO_N(26)
580
582#define RIG_VFO_VFO RIG_VFO_N(27)
583
585#define RIG_VFO_MEM RIG_VFO_N(28)
586
588#define RIG_VFO_CURR RIG_VFO_N(29)
589
591#define RIG_VFO_TX_FLAG RIG_VFO_N(30)
592
594#define RIG_VFO_ALL RIG_VFO_N(31)
595
596// we can also use RIG_VFO_N(31) if needed
597
598// Misc VFO Macros
599
601#define RIG_VFO_TX_VFO(v) ((v)|RIG_VFO_TX_FLAG)
602
604#define RIG_VFO_TX RIG_VFO_TX_VFO(RIG_VFO_CURR)
605
607#define RIG_VFO_RX RIG_VFO_CURR
608
609
610/*
611 * targetable bitfields, for internal use.
612 * In rig.c lack of a flag will cause a VFO change if needed
613 * So setting this flag will mean the backend handles any VFO needs
614 * For many rigs RITXIT, PTT, MEM, and BANK are non-VFO commands so need these flags to avoid unnecessary VFO swapping
615 */
617#define RIG_TARGETABLE_NONE 0
618#define RIG_TARGETABLE_FREQ (1<<0)
619#define RIG_TARGETABLE_MODE (1<<1) // mode by vfo or same mode on both vfos
620#define RIG_TARGETABLE_PURE (1<<2) // deprecated -- not used -- reuse it
621#define RIG_TARGETABLE_TONE (1<<3)
622#define RIG_TARGETABLE_FUNC (1<<4)
623#define RIG_TARGETABLE_LEVEL (1<<5)
624#define RIG_TARGETABLE_RITXIT (1<<6)
625#define RIG_TARGETABLE_PTT (1<<7)
626#define RIG_TARGETABLE_MEM (1<<8)
627#define RIG_TARGETABLE_BANK (1<<9)
628#define RIG_TARGETABLE_ANT (1<<10)
629#define RIG_TARGETABLE_ROOFING (1<<11) // roofing filter targetable by VFO
630#define RIG_TARGETABLE_SPECTRUM (1<<12) // spectrum scope targetable by VFO
631#define RIG_TARGETABLE_BAND (1<<13) // Band select -- e.g. Yaesu BS command
632#define RIG_TARGETABLE_COMMON (RIG_TARGETABLE_RITXIT | RIG_TARGETABLE_PTT | RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK)
633#define RIG_TARGETABLE_ALL 0x7fffffff
635//
636//
637// Newer Icoms like the 9700 and 910 have VFOA/B on both Main & Sub
638// Compared to older rigs which have one or the other
639// So we need to distinguish between them
641#define VFO_HAS_A_B ((STATE(rig)->vfo_list & (RIG_VFO_A|RIG_VFO_B)) == (RIG_VFO_A|RIG_VFO_B))
642#define VFO_HAS_MAIN_SUB ((STATE(rig)->vfo_list & (RIG_VFO_MAIN|RIG_VFO_SUB)) == (RIG_VFO_MAIN|RIG_VFO_SUB))
643#define VFO_HAS_MAIN_SUB_ONLY ((!VFO_HAS_A_B) & VFO_HAS_MAIN_SUB)
644#define VFO_HAS_MAIN_SUB_A_B_ONLY (VFO_HAS_A_B & VFO_HAS_MAIN_SUB)
645#define VFO_HAS_A_B_ONLY (VFO_HAS_A_B & (!VFO_HAS_MAIN_SUB))
646#define VFO_DUAL (RIG_VFO_MAIN_A|RIG_VFO_MAIN_B|RIG_VFO_SUB_A|RIG_VFO_SUB_B)
647#define VFO_HAS_DUAL ((STATE(rig)->vfo_list & VFO_DUAL) == VFO_DUAL)
649
654#define RIG_PASSBAND_NORMAL s_Hz(0)
655
659#define RIG_PASSBAND_NOCHANGE s_Hz(-1)
660
666
667typedef float agc_time_t;
668
669typedef enum dcd_e {
672} dcd_t;
673
674
691
692
702
703
722
723
727typedef enum {
729 RIG_POWER_ON = (1 << 0),
730 RIG_POWER_STANDBY = (1 << 1),
731 RIG_POWER_OPERATE = (1 << 2),
734
735
739typedef enum {
741 RIG_RESET_SOFT = (1 << 0),
742 RIG_RESET_VFO = (1 << 1),
743 RIG_RESET_MCALL = (1 << 2),
745} reset_t;
746
747
756
757
773typedef enum {
775 RIG_OP_CPY = (1 << 0),
776 RIG_OP_XCHG = (1 << 1),
777 RIG_OP_FROM_VFO = (1 << 2),
778 RIG_OP_TO_VFO = (1 << 3),
779 RIG_OP_MCL = (1 << 4),
780 RIG_OP_UP = (1 << 5),
781 RIG_OP_DOWN = (1 << 6),
782 RIG_OP_BAND_UP = (1 << 7),
783 RIG_OP_BAND_DOWN = (1 << 8),
784 RIG_OP_LEFT = (1 << 9),
785 RIG_OP_RIGHT = (1 << 10),
786 RIG_OP_TUNE = (1 << 11),
787 RIG_OP_TOGGLE = (1 << 12)
788} vfo_op_t;
789
816
817typedef enum { // numbers here reflect generic values -- need to map to rig values
818 RIG_BANDSELECT_UNUSED = CONSTANT_64BIT_FLAG(0),
819 RIG_BANDSELECT_2200M = CONSTANT_64BIT_FLAG(1),
820 RIG_BANDSELECT_600M = CONSTANT_64BIT_FLAG(2),
821 RIG_BANDSELECT_160M = CONSTANT_64BIT_FLAG(3),
822 RIG_BANDSELECT_80M = CONSTANT_64BIT_FLAG(4),
823 RIG_BANDSELECT_60M = CONSTANT_64BIT_FLAG(5),
824 RIG_BANDSELECT_40M = CONSTANT_64BIT_FLAG(6),
825 RIG_BANDSELECT_30M = CONSTANT_64BIT_FLAG(7),
826 RIG_BANDSELECT_20M = CONSTANT_64BIT_FLAG(8),
827 RIG_BANDSELECT_17M = CONSTANT_64BIT_FLAG(9),
828 RIG_BANDSELECT_15M = CONSTANT_64BIT_FLAG(10),
829 RIG_BANDSELECT_12M = CONSTANT_64BIT_FLAG(11),
830 RIG_BANDSELECT_10M = CONSTANT_64BIT_FLAG(12),
831 RIG_BANDSELECT_6M = CONSTANT_64BIT_FLAG(13),
832 RIG_BANDSELECT_WFM = CONSTANT_64BIT_FLAG(14),
833 RIG_BANDSELECT_GEN = CONSTANT_64BIT_FLAG(15),
834 RIG_BANDSELECT_MW = CONSTANT_64BIT_FLAG(16),
835 RIG_BANDSELECT_AIR = CONSTANT_64BIT_FLAG(17),
836 RIG_BANDSELECT_4M = CONSTANT_64BIT_FLAG(18),
837 RIG_BANDSELECT_2M = CONSTANT_64BIT_FLAG(19),
838 RIG_BANDSELECT_1_25M = CONSTANT_64BIT_FLAG(20),
839 RIG_BANDSELECT_70CM = CONSTANT_64BIT_FLAG(21),
840 RIG_BANDSELECT_33CM = CONSTANT_64BIT_FLAG(22),
841 RIG_BANDSELECT_23CM = CONSTANT_64BIT_FLAG(23),
842 RIG_BANDSELECT_13CM = CONSTANT_64BIT_FLAG(24),
843 RIG_BANDSELECT_9CM = CONSTANT_64BIT_FLAG(25),
844 RIG_BANDSELECT_5CM = CONSTANT_64BIT_FLAG(26),
845 RIG_BANDSELECT_3CM = CONSTANT_64BIT_FLAG(27),
847
848
849#define RIG_BANDSELECT_ALL
850#define RIG_BANDSELECT_LF (RIG_BANDSELECT_2200M | RIG_BANDSELECT_600M)
851#define RIG_BANDSELECT_HF (RIG_BANDSELECT_160M | RIG_BANDSELECT_80M | RIG_BANDSELECT_60M | RIG_BANDSELECT_40M\
852| RIG_BANDSELECT_30M | RIG_BANDSELECT_20M | RIG_BANDSELECT_17M | RIG_BANDSELECT_15M | RIG_BANDSELECT_12M\
853| RIG_BANDSELECT_10M | RIG_BANDSELECT_6M)
854#define RIG_BANDSELECT_VHF (RIG_BANDSELECT_AIR | RIG_BANDSELECT_2M| RIG_BANDSELECT_1_25M(
855#define RIG_BANDSELECT_UHF (RIG_BANDSELECT_70CM)
856
857
866typedef enum {
868 RIG_SCAN_MEM = (1 << 0),
869 RIG_SCAN_SLCT = (1 << 1),
870 RIG_SCAN_PRIO = (1 << 2),
871 RIG_SCAN_PROG = (1 << 3),
872 RIG_SCAN_DELTA = (1 << 4),
873 RIG_SCAN_VFO = (1 << 5),
874 RIG_SCAN_PLT = (1 << 6),
875 RIG_SCAN_STOP = (1 << 7)
876} scan_t;
877
878
882typedef long hamlib_token_t;
883#define token_t hamlib_token_t
884
888#define RIG_CONF_END 0
889
902
903/* strongly inspired from soundmodem. Thanks Thomas! */
913
915#define RIG_COMBO_MAX 16
916#define RIG_BIN_MAX 80
918
924 const char *name;
925 const char *label;
926 const char *tooltip;
927 const char *dflt;
929 union {
930 struct {
931 float min;
932 float max;
933 float step;
934 } n;
935 struct {
936 const char *combostr[RIG_COMBO_MAX];
937 } c;
938 } u;
939};
940
941
947typedef enum {
950 RIG_ANN_FREQ = (1 << 0),
951 RIG_ANN_RXMODE = (1 << 1),
952 RIG_ANN_CW = (1 << 2),
953 RIG_ANN_ENG = (1 << 3),
954 RIG_ANN_JAP = (1 << 4)
955} ann_t;
956
957
1004typedef unsigned int ant_t;
1005
1006#define RIG_ANT_NONE 0
1007#define RIG_ANT_N(n) ((ant_t)1<<(n))
1008#define RIG_ANT_1 RIG_ANT_N(0)
1009#define RIG_ANT_2 RIG_ANT_N(1)
1010#define RIG_ANT_3 RIG_ANT_N(2)
1011#define RIG_ANT_4 RIG_ANT_N(3)
1012#define RIG_ANT_5 RIG_ANT_N(4)
1013
1014#define RIG_ANT_UNKNOWN RIG_ANT_N(30)
1015#define RIG_ANT_CURR RIG_ANT_N(31)
1016
1017#define RIG_ANT_MAX 32
1018
1019
1021#define RIG_AGC_LAST 99999
1023
1024#if 1 // deprecated
1029 RIG_METER_NONE = 0, /*< No display meter */
1030 RIG_METER_SWR = (1 << 0), /*< Stationary Wave Ratio */
1031 RIG_METER_COMP = (1 << 1), /*< Compression level */
1032 RIG_METER_ALC = (1 << 2), /*< ALC */
1033 RIG_METER_IC = (1 << 3), /*< IC */
1034 RIG_METER_DB = (1 << 4), /*< DB */
1035 RIG_METER_PO = (1 << 5), /*< Power Out */
1036 RIG_METER_VDD = (1 << 6), /*< Final Amp Voltage */
1037 RIG_METER_TEMP = (1 << 7) /*< Final Amp Temperature */
1038};
1039#endif
1040
1041
1047typedef union {
1048 signed int i;
1049 unsigned int u;
1050 float f;
1051 char *s;
1052 const char *cs;
1054 struct {
1055 int l;
1056 unsigned char *d; /* Pointer to data buffer */
1057 } b;
1059} value_t;
1060
1061
1070typedef uint64_t rig_level_e;
1071#define RIG_LEVEL_NONE 0
1072#define RIG_LEVEL_PREAMP CONSTANT_64BIT_FLAG(0)
1073#define RIG_LEVEL_ATT CONSTANT_64BIT_FLAG(1)
1074#define RIG_LEVEL_VOXDELAY CONSTANT_64BIT_FLAG(2)
1075#define RIG_LEVEL_AF CONSTANT_64BIT_FLAG(3)
1076#define RIG_LEVEL_RF CONSTANT_64BIT_FLAG(4)
1077#define RIG_LEVEL_SQL CONSTANT_64BIT_FLAG(5)
1078#define RIG_LEVEL_IF CONSTANT_64BIT_FLAG(6)
1079#define RIG_LEVEL_APF CONSTANT_64BIT_FLAG(7)
1080#define RIG_LEVEL_NR CONSTANT_64BIT_FLAG(8)
1081#define RIG_LEVEL_PBT_IN CONSTANT_64BIT_FLAG(9)
1082#define RIG_LEVEL_PBT_OUT CONSTANT_64BIT_FLAG(10)
1083#define RIG_LEVEL_CWPITCH CONSTANT_64BIT_FLAG(11)
1084#define RIG_LEVEL_RFPOWER CONSTANT_64BIT_FLAG(12)
1085#define RIG_LEVEL_MICGAIN CONSTANT_64BIT_FLAG(13)
1086#define RIG_LEVEL_KEYSPD CONSTANT_64BIT_FLAG(14)
1087#define RIG_LEVEL_NOTCHF CONSTANT_64BIT_FLAG(15)
1088#define RIG_LEVEL_COMP CONSTANT_64BIT_FLAG(16)
1089#define RIG_LEVEL_AGC CONSTANT_64BIT_FLAG(17)
1090#define RIG_LEVEL_BKINDL CONSTANT_64BIT_FLAG(18)
1091#define RIG_LEVEL_BALANCE CONSTANT_64BIT_FLAG(19)
1092#define RIG_LEVEL_METER CONSTANT_64BIT_FLAG(20)
1093#define RIG_LEVEL_VOXGAIN CONSTANT_64BIT_FLAG(21)
1094#define RIG_LEVEL_ANTIVOX CONSTANT_64BIT_FLAG(22)
1095#define RIG_LEVEL_SLOPE_LOW CONSTANT_64BIT_FLAG(23)
1096#define RIG_LEVEL_SLOPE_HIGH CONSTANT_64BIT_FLAG(24)
1097#define RIG_LEVEL_BKIN_DLYMS CONSTANT_64BIT_FLAG(25)
1098
1100#define RIG_LEVEL_RAWSTR CONSTANT_64BIT_FLAG(26)
1101//#define RIG_LEVEL_SQLSTAT CONSTANT_64BIT_FLAG(27) /*!< \c SQLSTAT -- SQL status, arg int (open=1/closed=0). Deprecated, use get_dcd instead */
1102#define RIG_LEVEL_SWR CONSTANT_64BIT_FLAG(28)
1103#define RIG_LEVEL_ALC CONSTANT_64BIT_FLAG(29)
1104#define RIG_LEVEL_STRENGTH CONSTANT_64BIT_FLAG(30)
1105 /* RIG_LEVEL_BWC (1<<31) */
1106#define RIG_LEVEL_RFPOWER_METER CONSTANT_64BIT_FLAG(32)
1107#define RIG_LEVEL_COMP_METER CONSTANT_64BIT_FLAG(33)
1108#define RIG_LEVEL_VD_METER CONSTANT_64BIT_FLAG(34)
1109#define RIG_LEVEL_ID_METER CONSTANT_64BIT_FLAG(35)
1110
1111#define RIG_LEVEL_NOTCHF_RAW CONSTANT_64BIT_FLAG(36)
1112#define RIG_LEVEL_MONITOR_GAIN CONSTANT_64BIT_FLAG(37)
1113#define RIG_LEVEL_NB CONSTANT_64BIT_FLAG(38)
1114#define RIG_LEVEL_RFPOWER_METER_WATTS CONSTANT_64BIT_FLAG(39)
1115#define RIG_LEVEL_SPECTRUM_MODE CONSTANT_64BIT_FLAG(40)
1116#define RIG_LEVEL_SPECTRUM_SPAN CONSTANT_64BIT_FLAG(41)
1117#define RIG_LEVEL_SPECTRUM_EDGE_LOW CONSTANT_64BIT_FLAG(42)
1118#define RIG_LEVEL_SPECTRUM_EDGE_HIGH CONSTANT_64BIT_FLAG(43)
1119#define RIG_LEVEL_SPECTRUM_SPEED CONSTANT_64BIT_FLAG(44)
1120#define RIG_LEVEL_SPECTRUM_REF CONSTANT_64BIT_FLAG(45)
1121#define RIG_LEVEL_SPECTRUM_AVG CONSTANT_64BIT_FLAG(46)
1122#define RIG_LEVEL_SPECTRUM_ATT CONSTANT_64BIT_FLAG(47)
1123#define RIG_LEVEL_TEMP_METER CONSTANT_64BIT_FLAG(48)
1124#define RIG_LEVEL_BAND_SELECT CONSTANT_64BIT_FLAG(49)
1125#define RIG_LEVEL_USB_AF CONSTANT_64BIT_FLAG(50)
1126#define RIG_LEVEL_USB_AF_INPUT CONSTANT_64BIT_FLAG(51)
1127#define RIG_LEVEL_AGC_TIME CONSTANT_64BIT_FLAG(52)
1128#define RIG_LEVEL_53 CONSTANT_64BIT_FLAG(53)
1129#define RIG_LEVEL_54 CONSTANT_64BIT_FLAG(54)
1130#define RIG_LEVEL_55 CONSTANT_64BIT_FLAG(55)
1131#define RIG_LEVEL_56 CONSTANT_64BIT_FLAG(56)
1132#define RIG_LEVEL_57 CONSTANT_64BIT_FLAG(57)
1133#define RIG_LEVEL_58 CONSTANT_64BIT_FLAG(58)
1134#define RIG_LEVEL_59 CONSTANT_64BIT_FLAG(59)
1135#define RIG_LEVEL_60 CONSTANT_64BIT_FLAG(60)
1136#define RIG_LEVEL_61 CONSTANT_64BIT_FLAG(61)
1137#define RIG_LEVEL_62 CONSTANT_64BIT_FLAG(62)
1138#define RIG_LEVEL_63 CONSTANT_64BIT_FLAG(63)
1139
1141#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)
1142
1143#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)
1144
1145#define RIG_LEVEL_IS_FLOAT(l) ((l)&RIG_LEVEL_FLOAT_LIST)
1146#define RIG_LEVEL_SET(l) ((l)&~RIG_LEVEL_READONLY_LIST)
1148
1149
1175
1176enum rig_keyertype_e {
1177 RIG_KEYERTYPE_STRAIGHT = 0,
1178 RIG_KEYERTYPE_BUG = (1 << 0),
1179 RIG_KEYERTYPE_PADDLE = (1 << 1),
1180 RIG_KEYERTYPE_UNKNOWN = (1 << 2)
1181};
1182
1196
1202 RIG_MULTICAST_POLL, // hamlib will be polling the rig for all rig items
1203 RIG_MULTICAST_TRANSCEIVE, // transceive will be turned on and processed
1204 RIG_MULTICAST_SPECTRUM // spectrum data will be included
1205};
1206
1208#define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT|RIG_PARM_KEYLIGHT|RIG_PARM_BACKLIGHT)
1209#define RIG_PARM_STRING_LIST (RIG_PARM_BANDSELECT|RIG_PARM_KEYERTYPE)
1210#define RIG_PARM_READONLY_LIST (RIG_PARM_BAT)
1211
1212#define RIG_PARM_IS_FLOAT(l) ((l)&RIG_PARM_FLOAT_LIST)
1213#define RIG_PARM_IS_STRING(l) ((l)&RIG_PARM_STRING_LIST)
1214#define RIG_PARM_SET(l) ((l)&~RIG_PARM_READONLY_LIST)
1216
1223typedef uint64_t setting_t;
1224
1229#define RIG_SETTING_MAX 64
1230
1247#define RIG_TRN_OFF 0
1248#define RIG_TRN_RIG 1
1249#define RIG_TRN_POLL 2
1250
1251
1260/*
1261 * The C standard dictates that an enum constant is a 32 bit signed integer.
1262 * Setting a constant's bit 31 created a negative value that on amd64 had the
1263 * upper 32 bits set as well when assigned to the misc.c:rig_func_str structure.
1264 * This caused misc.c:rig_strfunc() to fail its comparison for RIG_FUNC_XIT
1265 * on amd64 (x86_64). To use bit 31 as an unsigned long, preprocessor macros
1266 * have been used instead as a 'const unsigned long' which cannot be used to
1267 * initialize the rig_func_str.func members. TNX KA6MAL, AC6SL. - N0NB
1268 */
1269#define RIG_FUNC_NONE 0
1270#define RIG_FUNC_FAGC CONSTANT_64BIT_FLAG (0)
1271#define RIG_FUNC_NB CONSTANT_64BIT_FLAG (1)
1272#define RIG_FUNC_COMP CONSTANT_64BIT_FLAG (2)
1273#define RIG_FUNC_VOX CONSTANT_64BIT_FLAG (3)
1274#define RIG_FUNC_TONE CONSTANT_64BIT_FLAG (4)
1275#define RIG_FUNC_TSQL CONSTANT_64BIT_FLAG (5)
1276#define RIG_FUNC_SBKIN CONSTANT_64BIT_FLAG (6)
1277#define RIG_FUNC_FBKIN CONSTANT_64BIT_FLAG (7)
1278#define RIG_FUNC_ANF CONSTANT_64BIT_FLAG (8)
1279#define RIG_FUNC_NR CONSTANT_64BIT_FLAG (9)
1280#define RIG_FUNC_AIP CONSTANT_64BIT_FLAG (10)
1281#define RIG_FUNC_APF CONSTANT_64BIT_FLAG (11)
1282#define RIG_FUNC_MON CONSTANT_64BIT_FLAG (12)
1283#define RIG_FUNC_MN CONSTANT_64BIT_FLAG (13)
1284#define RIG_FUNC_RF CONSTANT_64BIT_FLAG (14)
1285#define RIG_FUNC_ARO CONSTANT_64BIT_FLAG (15)
1286#define RIG_FUNC_LOCK CONSTANT_64BIT_FLAG (16)
1287#define RIG_FUNC_MUTE CONSTANT_64BIT_FLAG (17)
1288#define RIG_FUNC_VSC CONSTANT_64BIT_FLAG (18)
1289#define RIG_FUNC_REV CONSTANT_64BIT_FLAG (19)
1290#define RIG_FUNC_SQL CONSTANT_64BIT_FLAG (20)
1291#define RIG_FUNC_ABM CONSTANT_64BIT_FLAG (21)
1292#define RIG_FUNC_BC CONSTANT_64BIT_FLAG (22)
1293#define RIG_FUNC_MBC CONSTANT_64BIT_FLAG (23)
1294#define RIG_FUNC_RIT CONSTANT_64BIT_FLAG (24)
1295#define RIG_FUNC_AFC CONSTANT_64BIT_FLAG (25)
1296#define RIG_FUNC_SATMODE CONSTANT_64BIT_FLAG (26)
1297#define RIG_FUNC_SCOPE CONSTANT_64BIT_FLAG (27)
1298#define RIG_FUNC_RESUME CONSTANT_64BIT_FLAG (28)
1299#define RIG_FUNC_TBURST CONSTANT_64BIT_FLAG (29)
1300#define RIG_FUNC_TUNER CONSTANT_64BIT_FLAG (30)
1301#define RIG_FUNC_XIT CONSTANT_64BIT_FLAG (31)
1302#ifndef SWIGLUAHIDE
1303/* Hide the top 32 bits from the old Lua binding as they can't be represented */
1304#define RIG_FUNC_NB2 CONSTANT_64BIT_FLAG (32)
1305#define RIG_FUNC_CSQL CONSTANT_64BIT_FLAG (33)
1306#define RIG_FUNC_AFLT CONSTANT_64BIT_FLAG (34)
1307#define RIG_FUNC_ANL CONSTANT_64BIT_FLAG (35)
1308#define RIG_FUNC_BC2 CONSTANT_64BIT_FLAG (36)
1309#define RIG_FUNC_DUAL_WATCH CONSTANT_64BIT_FLAG (37)
1310#define RIG_FUNC_DIVERSITY CONSTANT_64BIT_FLAG (38)
1311#define RIG_FUNC_DSQL CONSTANT_64BIT_FLAG (39)
1312#define RIG_FUNC_SCEN CONSTANT_64BIT_FLAG (40)
1313#define RIG_FUNC_SLICE CONSTANT_64BIT_FLAG (41)
1314#define RIG_FUNC_TRANSCEIVE CONSTANT_64BIT_FLAG (42)
1315#define RIG_FUNC_SPECTRUM CONSTANT_64BIT_FLAG (43)
1316#define RIG_FUNC_SPECTRUM_HOLD CONSTANT_64BIT_FLAG (44)
1317#define RIG_FUNC_SEND_MORSE CONSTANT_64BIT_FLAG (45)
1318#define RIG_FUNC_SEND_VOICE_MEM CONSTANT_64BIT_FLAG (46)
1319#define RIG_FUNC_OVF_STATUS CONSTANT_64BIT_FLAG (47)
1320#define RIG_FUNC_SYNC CONSTANT_64BIT_FLAG (48)
1321#define RIG_FUNC_BIT49 CONSTANT_64BIT_FLAG (49)
1322#define RIG_FUNC_BIT50 CONSTANT_64BIT_FLAG (50)
1323#define RIG_FUNC_BIT51 CONSTANT_64BIT_FLAG (51)
1324#define RIG_FUNC_BIT52 CONSTANT_64BIT_FLAG (52)
1325#define RIG_FUNC_BIT53 CONSTANT_64BIT_FLAG (53)
1326#define RIG_FUNC_BIT54 CONSTANT_64BIT_FLAG (54)
1327#define RIG_FUNC_BIT55 CONSTANT_64BIT_FLAG (55)
1328#define RIG_FUNC_BIT56 CONSTANT_64BIT_FLAG (56)
1329#define RIG_FUNC_BIT57 CONSTANT_64BIT_FLAG (57)
1330#define RIG_FUNC_BIT58 CONSTANT_64BIT_FLAG (58)
1331#define RIG_FUNC_BIT59 CONSTANT_64BIT_FLAG (59)
1332#define RIG_FUNC_BIT60 CONSTANT_64BIT_FLAG (60)
1333#define RIG_FUNC_BIT61 CONSTANT_64BIT_FLAG (61)
1334#define RIG_FUNC_BIT62 CONSTANT_64BIT_FLAG (62)
1335#define RIG_FUNC_BIT63 CONSTANT_64BIT_FLAG (63)
1336/* 63 is this highest bit number that can be used */
1337#endif
1338
1345#define mW(p) ((int)(p))
1353#define Watts(p) ((int)((p)*1000))
1360#define W(p) Watts(p)
1361#if 0 // deprecating kW macro as this doesn't make sense
1368#define kW(p) ((int)((p)*1000000L))
1369#endif
1370
1371
1381typedef uint64_t rmode_t;
1382
1383#define RIG_MODE_NONE 0
1384#define RIG_MODE_AM CONSTANT_64BIT_FLAG (0)
1385#define RIG_MODE_CW CONSTANT_64BIT_FLAG (1)
1386#define RIG_MODE_USB CONSTANT_64BIT_FLAG (2)
1387#define RIG_MODE_LSB CONSTANT_64BIT_FLAG (3)
1388#define RIG_MODE_RTTY CONSTANT_64BIT_FLAG (4)
1389#define RIG_MODE_FM CONSTANT_64BIT_FLAG (5)
1390#define RIG_MODE_WFM CONSTANT_64BIT_FLAG (6)
1391#define RIG_MODE_CWR CONSTANT_64BIT_FLAG (7)
1392#define RIG_MODE_RTTYR CONSTANT_64BIT_FLAG (8)
1393#define RIG_MODE_AMS CONSTANT_64BIT_FLAG (9)
1394#define RIG_MODE_PKTLSB CONSTANT_64BIT_FLAG (10)
1395#define RIG_MODE_PKTUSB CONSTANT_64BIT_FLAG (11)
1396#define RIG_MODE_PKTFM CONSTANT_64BIT_FLAG (12)
1397#define RIG_MODE_ECSSUSB CONSTANT_64BIT_FLAG (13)
1398#define RIG_MODE_ECSSLSB CONSTANT_64BIT_FLAG (14)
1399#define RIG_MODE_FAX CONSTANT_64BIT_FLAG (15)
1400#define RIG_MODE_SAM CONSTANT_64BIT_FLAG (16)
1401#define RIG_MODE_SAL CONSTANT_64BIT_FLAG (17)
1402#define RIG_MODE_SAH CONSTANT_64BIT_FLAG (18)
1403#define RIG_MODE_DSB CONSTANT_64BIT_FLAG (19)
1404#define RIG_MODE_FMN CONSTANT_64BIT_FLAG (21)
1405#define RIG_MODE_PKTAM CONSTANT_64BIT_FLAG (22)
1406#define RIG_MODE_P25 CONSTANT_64BIT_FLAG (23)
1407#define RIG_MODE_DSTAR CONSTANT_64BIT_FLAG (24)
1408#define RIG_MODE_DPMR CONSTANT_64BIT_FLAG (25)
1409#define RIG_MODE_NXDNVN CONSTANT_64BIT_FLAG (26)
1410#define RIG_MODE_NXDN_N CONSTANT_64BIT_FLAG (27)
1411#define RIG_MODE_DCR CONSTANT_64BIT_FLAG (28)
1412#define RIG_MODE_AMN CONSTANT_64BIT_FLAG (29)
1413#define RIG_MODE_PSK CONSTANT_64BIT_FLAG (30)
1414#define RIG_MODE_PSKR CONSTANT_64BIT_FLAG (31)
1415#ifndef SWIGLUAHIDE
1416/* hide the top 32 bits from the Lua binding as they will not work */
1417#define RIG_MODE_DD CONSTANT_64BIT_FLAG (32)
1418#define RIG_MODE_C4FM CONSTANT_64BIT_FLAG (33)
1419#define RIG_MODE_PKTFMN CONSTANT_64BIT_FLAG (34)
1420#define RIG_MODE_SPEC CONSTANT_64BIT_FLAG (35)
1421#define RIG_MODE_CWN CONSTANT_64BIT_FLAG (36)
1422#define RIG_MODE_IQ CONSTANT_64BIT_FLAG (37)
1423#define RIG_MODE_ISBUSB CONSTANT_64BIT_FLAG (38)
1424#define RIG_MODE_ISBLSB CONSTANT_64BIT_FLAG (39)
1425#define RIG_MODE_USBD1 CONSTANT_64BIT_FLAG (40)
1426#define RIG_MODE_USBD2 CONSTANT_64BIT_FLAG (41)
1427#define RIG_MODE_USBD3 CONSTANT_64BIT_FLAG (42)
1428#define RIG_MODE_LSBD1 CONSTANT_64BIT_FLAG (43)
1429#define RIG_MODE_LSBD2 CONSTANT_64BIT_FLAG (44)
1430#define RIG_MODE_LSBD3 CONSTANT_64BIT_FLAG (45)
1431#define RIG_MODE_WFMS CONSTANT_64BIT_FLAG (46)
1432#define RIG_MODE_BIT47 CONSTANT_64BIT_FLAG (47)
1433#define RIG_MODE_BIT48 CONSTANT_64BIT_FLAG (48)
1434#define RIG_MODE_BIT49 CONSTANT_64BIT_FLAG (49)
1435#define RIG_MODE_BIT50 CONSTANT_64BIT_FLAG (50)
1436#define RIG_MODE_BIT51 CONSTANT_64BIT_FLAG (51)
1437#define RIG_MODE_BIT52 CONSTANT_64BIT_FLAG (52)
1438#define RIG_MODE_BIT53 CONSTANT_64BIT_FLAG (53)
1439#define RIG_MODE_BIT54 CONSTANT_64BIT_FLAG (54)
1440#define RIG_MODE_BIT55 CONSTANT_64BIT_FLAG (55)
1441#define RIG_MODE_BIT56 CONSTANT_64BIT_FLAG (56)
1442#define RIG_MODE_BIT57 CONSTANT_64BIT_FLAG (57)
1443#define RIG_MODE_BIT58 CONSTANT_64BIT_FLAG (58)
1444#define RIG_MODE_BIT59 CONSTANT_64BIT_FLAG (59)
1445#define RIG_MODE_BIT60 CONSTANT_64BIT_FLAG (60)
1446#define RIG_MODE_BIT61 CONSTANT_64BIT_FLAG (61)
1447#define RIG_MODE_BIT62 CONSTANT_64BIT_FLAG (62)
1448#define RIG_MODE_TESTS_MAX CONSTANT_64BIT_FLAG (63)
1449#define RIG_MODE_ALL (0xffffffff)
1450#endif
1451
1455#define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB)
1456
1460#define RIG_MODE_PKTSSB (RIG_MODE_PKTUSB|RIG_MODE_PKTLSB)
1461
1465#define RIG_MODE_ECSS (RIG_MODE_ECSSUSB|RIG_MODE_ECSSLSB)
1466
1468#define RIG_DBLST_END 0 /* end marker in a preamp/att level list */
1469#define RIG_IS_DBLST_END(d) ((d)==0)
1471
1472
1489
1491#define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE}
1492#define RIG_IS_FRNG_END(r) ((r).startf == Hz(0) && (r).endf == Hz(0))
1494
1515
1517#define RIG_TS_ANY 0
1518#define RIG_TS_END {RIG_MODE_NONE, 0}
1519#define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0)
1521
1522
1550
1551#define RIG_FLT_ANY 0
1552#define RIG_FLT_END {RIG_MODE_NONE, 0}
1553#define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE)
1554#define DEBUGMSGSAVE_SIZE 24000
1556
1557
1561#define RIG_CHFLAG_NONE 0
1565#define RIG_CHFLAG_SKIP (1<<0)
1569#define RIG_CHFLAG_DATA (1<<1)
1573#define RIG_CHFLAG_PSKIP (1<<2)
1574
1583
1585#define RIG_EXT_END {0, {.i=0}}
1586#define RIG_IS_EXT_END(x) ((x).token == 0)
1588
1630
1634typedef struct channel channel_t;
1635
1642 unsigned bank_num: 1;
1643 unsigned vfo: 1;
1644 unsigned ant: 1;
1645 unsigned freq: 1;
1646 unsigned mode: 1;
1647 unsigned width: 1;
1648
1649 unsigned tx_freq: 1;
1650 unsigned tx_mode: 1;
1651 unsigned tx_width: 1;
1652
1653 unsigned split: 1;
1654 unsigned tx_vfo: 1;
1655 unsigned rptr_shift: 1;
1656 unsigned rptr_offs: 1;
1657 unsigned tuning_step: 1;
1658 unsigned rit: 1;
1659 unsigned xit: 1;
1662 unsigned ctcss_tone: 1;
1663 unsigned ctcss_sql: 1;
1664 unsigned dcs_code: 1;
1665 unsigned dcs_sql: 1;
1666 unsigned scan_group: 1;
1667 unsigned flags: 1;
1668 unsigned channel_desc: 1;
1669 unsigned ext_levels: 1;
1670 unsigned tag: 1;
1671};
1672
1677
1678
1702
1703
1723
1725#define RIG_CHAN_END {0,0,RIG_MTYPE_NONE}
1726#define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE)
1728
1732#define RIG_MEM_CAPS_ALL -1
1733
1737typedef struct chan_list chan_t;
1738
1739
1756
1760typedef struct gran gran_t;
1761
1762
1767 int size;
1768 struct {
1769 int raw;
1770 int val;
1771 } table[HAMLIB_MAX_CAL_LENGTH];
1772};
1773
1786typedef struct cal_table cal_table_t;
1787
1789#define EMPTY_STR_CAL { 0, { { 0, 0 }, } }
1791
1792
1797 int size;
1798 struct {
1799 int raw;
1800 float val;
1801 } table[HAMLIB_MAX_CAL_LENGTH];
1802};
1803
1817
1819#define EMPTY_FLOAT_CAL { 0, { { 0, 0f }, } }
1820
1821typedef int (* chan_cb_t)(RIG *, vfo_t vfo, channel_t **, int, const chan_t *, rig_ptr_t);
1822typedef int (* confval_cb_t)(RIG *,
1823 const struct confparams *,
1824 value_t *,
1825 rig_ptr_t);
1827
1832{
1833 int id;
1834 char *name;
1835};
1836
1847
1852{
1853 int id;
1854 char *name;
1855};
1856
1888
1894 struct deferred_config_item *nextt;
1895 hamlib_token_t token;
1896 char *value; // strdup'ed, must be freed
1897};
1898typedef struct deferred_config_item deferred_config_item_t;
1899
1901 struct deferred_config_item *firstt; // NULL if none
1902 struct deferred_config_item *lastt;
1903};
1904typedef struct deferred_config_header deferred_config_header_t;
1905
1906
1912#define RIG_MODEL(arg) .rig_model=arg,.macro_name=#arg
1913
1914#define HAMLIB_CHECK_RIG_CAPS "HAMLIB_CHECK_RIG_CAPS"
1915
1935struct rig_caps {
1937 const char *model_name;
1938 const char *mfg_name;
1939 const char *version;
1940 const char *copyright;
1942
1947
1954
1958 int retry;
1959
1966
1969
1970 const struct confparams *extparms;
1971 const struct confparams *extlevels;
1972 const struct confparams *extfuncs;
1974
1977
1978 int preamp[HAMLIB_MAXDBLSTSIZ];
1979 int attenuator[HAMLIB_MAXDBLSTSIZ];
1983
1985 enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS];
1986
1988
1993
1996
1997 chan_t chan_list[HAMLIB_CHANLSTSIZ];
1998
1999 // As of 2020-02-12 we know of 5 models from Icom USA, EUR, ITR, TPE, KOR for the IC-9700
2000 // So we currently have 5 ranges we need to deal with
2001 // The backend for the model should fill in the label field to explain what model it is
2002 // The the IC-9700 in ic7300.c for an example
2003 freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ];
2004 freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ];
2005 freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ];
2006 freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ];
2007 freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ];
2008 freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ];
2009 freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ];
2010 freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ];
2011 freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ];
2012 freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ];
2013
2014 struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
2015 struct filter_list filters[HAMLIB_FLTLSTSIZ];
2016
2024
2025 struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES];
2026 enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES];
2027 freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS];
2028 struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES];
2029 int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ];
2030
2031 const struct confparams *cfgparams;
2032 const rig_ptr_t priv;
2033
2034 /*
2035 * Rig API
2036 *
2037 */
2038
2039 int (*rig_init)(RIG *rig);
2040 int (*rig_cleanup)(RIG *rig);
2041 int (*rig_open)(RIG *rig);
2042 int (*rig_close)(RIG *rig);
2043
2044 /*
2045 * General API commands, from most primitive to least.. :()
2046 * List Set/Get functions pairs
2047 */
2048
2049 int (*set_freq)(RIG *rig, vfo_t vfo, freq_t freq);
2050 int (*get_freq)(RIG *rig, vfo_t vfo, freq_t *freq);
2051
2052 int (*set_mode)(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
2053 int (*get_mode)(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width);
2054
2055 int (*set_vfo)(RIG *rig, vfo_t vfo);
2056 int (*get_vfo)(RIG *rig, vfo_t *vfo);
2057
2058 int (*set_ptt)(RIG *rig, vfo_t vfo, ptt_t ptt);
2059 int (*get_ptt)(RIG *rig, vfo_t vfo, ptt_t *ptt);
2060
2061 int (*get_dcd)(RIG *rig, vfo_t vfo, dcd_t *dcd);
2062
2063 int (*set_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift);
2064 int (*get_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift);
2065
2066 int (*set_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t offs);
2067 int (*get_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t *offs);
2068
2069 int (*set_split_freq)(RIG *rig, vfo_t vfo, freq_t tx_freq);
2070 int (*get_split_freq)(RIG *rig, vfo_t vfo, freq_t *tx_freq);
2071
2072 int (*set_split_mode)(RIG *rig,
2073 vfo_t vfo,
2074 rmode_t tx_mode,
2075 pbwidth_t tx_width);
2076 int (*get_split_mode)(RIG *rig,
2077 vfo_t vfo,
2078 rmode_t *tx_mode,
2079 pbwidth_t *tx_width);
2080
2081 int (*set_split_freq_mode)(RIG *rig,
2082 vfo_t vfo,
2083 freq_t tx_freq,
2084 rmode_t tx_mode,
2085 pbwidth_t tx_width);
2086 int (*get_split_freq_mode)(RIG *rig,
2087 vfo_t vfo,
2088 freq_t *tx_freq,
2089 rmode_t *tx_mode,
2090 pbwidth_t *tx_width);
2091
2092 int (*set_split_vfo)(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo);
2093 int (*get_split_vfo)(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo);
2094
2095 int (*set_rit)(RIG *rig, vfo_t vfo, shortfreq_t rit);
2096 int (*get_rit)(RIG *rig, vfo_t vfo, shortfreq_t *rit);
2097
2098 int (*set_xit)(RIG *rig, vfo_t vfo, shortfreq_t xit);
2099 int (*get_xit)(RIG *rig, vfo_t vfo, shortfreq_t *xit);
2100
2101 int (*set_ts)(RIG *rig, vfo_t vfo, shortfreq_t ts);
2102 int (*get_ts)(RIG *rig, vfo_t vfo, shortfreq_t *ts);
2103
2104 int (*set_dcs_code)(RIG *rig, vfo_t vfo, tone_t code);
2105 int (*get_dcs_code)(RIG *rig, vfo_t vfo, tone_t *code);
2106
2107 int (*set_tone)(RIG *rig, vfo_t vfo, tone_t tone);
2108 int (*get_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
2109
2110 int (*set_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t tone);
2111 int (*get_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
2112
2113 int (*set_dcs_sql)(RIG *rig, vfo_t vfo, tone_t code);
2114 int (*get_dcs_sql)(RIG *rig, vfo_t vfo, tone_t *code);
2115
2116 int (*set_tone_sql)(RIG *rig, vfo_t vfo, tone_t tone);
2117 int (*get_tone_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
2118
2119 int (*set_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t tone);
2120 int (*get_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
2121
2122 int (*power2mW)(RIG *rig,
2123 unsigned int *mwpower,
2124 float power,
2125 freq_t freq,
2126 rmode_t mode);
2127 int (*mW2power)(RIG *rig,
2128 float *power,
2129 unsigned int mwpower,
2130 freq_t freq,
2131 rmode_t mode);
2132
2133 int (*set_powerstat)(RIG *rig, powerstat_t status);
2134 int (*get_powerstat)(RIG *rig, powerstat_t *status);
2135
2136 int (*reset)(RIG *rig, reset_t reset);
2137
2138 int (*set_ant)(RIG *rig, vfo_t vfo, ant_t ant, value_t option);
2139 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);
2140
2141 int (*set_level)(RIG *rig, vfo_t vfo, setting_t level, value_t val);
2142 int (*get_level)(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
2143
2144 int (*set_func)(RIG *rig, vfo_t vfo, setting_t func, int status);
2145 int (*get_func)(RIG *rig, vfo_t vfo, setting_t func, int *status);
2146
2147 int (*set_parm)(RIG *rig, setting_t parm, value_t val);
2148 int (*get_parm)(RIG *rig, setting_t parm, value_t *val);
2149
2150 int (*set_ext_level)(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t val);
2151 int (*get_ext_level)(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t *val);
2152
2153 int (*set_ext_func)(RIG *rig, vfo_t vfo, hamlib_token_t token, int status);
2154 int (*get_ext_func)(RIG *rig, vfo_t vfo, hamlib_token_t token, int *status);
2155
2156 int (*set_ext_parm)(RIG *rig, hamlib_token_t token, value_t val);
2157 int (*get_ext_parm)(RIG *rig, hamlib_token_t token, value_t *val);
2158
2159 int (*set_conf)(RIG *rig, hamlib_token_t token, const char *val);
2160 int (*get_conf)(RIG *rig, hamlib_token_t token, char *val);
2161
2162 int (*send_dtmf)(RIG *rig, vfo_t vfo, const char *digits);
2163 int (*recv_dtmf)(RIG *rig, vfo_t vfo, char *digits, int *length);
2164
2165 int (*send_morse)(RIG *rig, vfo_t vfo, const char *msg);
2166 int (*stop_morse)(RIG *rig, vfo_t vfo);
2167 int (*wait_morse)(RIG *rig, vfo_t vfo);
2168
2169 int (*send_voice_mem)(RIG *rig, vfo_t vfo, int ch);
2170 int (*stop_voice_mem)(RIG *rig, vfo_t vfo);
2171
2172 int (*set_bank)(RIG *rig, vfo_t vfo, int bank);
2173
2174 int (*set_mem)(RIG *rig, vfo_t vfo, int ch);
2175 int (*get_mem)(RIG *rig, vfo_t vfo, int *ch);
2176
2177 int (*vfo_op)(RIG *rig, vfo_t vfo, vfo_op_t op);
2178
2179 int (*scan)(RIG *rig, vfo_t vfo, scan_t scan, int ch);
2180
2181 int (*set_trn)(RIG *rig, int trn);
2182 int (*get_trn)(RIG *rig, int *trn);
2183
2184 int (*decode_event)(RIG *rig);
2185
2186 int (*set_channel)(RIG *rig, vfo_t vfo, const channel_t *chan);
2187 int (*get_channel)(RIG *rig, vfo_t vfo, channel_t *chan, int read_only);
2188
2189 const char * (*get_info)(RIG *rig);
2190
2191 int (*set_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
2192 int (*get_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
2193
2194 int (*set_mem_all_cb)(RIG *rig,
2195 vfo_t vfo,
2196 chan_cb_t chan_cb,
2197 confval_cb_t parm_cb,
2198 rig_ptr_t);
2199 int (*get_mem_all_cb)(RIG *rig,
2200 vfo_t vfo,
2201 chan_cb_t chan_cb,
2202 confval_cb_t parm_cb,
2203 rig_ptr_t);
2204
2205 int (*set_vfo_opt)(RIG *rig, int status); // only for Net Rigctl device
2206 int (*rig_get_vfo_info) (RIG *rig,
2207 vfo_t vfo,
2208 freq_t *freq,
2209 rmode_t *mode,
2210 pbwidth_t *width,
2211 split_t *split);
2212 int(*set_clock) (RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset);
2213 int(*get_clock) (RIG *rig, int *year, int *month, int *day, int *hour, int *min, int *sec, double *msec, int *utc_offset);
2214
2215 const char *clone_combo_set;
2216 const char *clone_combo_get;
2217 const char *macro_name;
2218
2220 int (*read_frame_direct)(RIG *rig,
2221 size_t buffer_length,
2222 const unsigned char *buffer);
2223 int (*is_async_frame)(RIG *rig,
2224 size_t frame_length,
2225 const unsigned char *frame);
2226 int (*process_async_frame)(RIG *rig,
2227 size_t frame_length,
2228 const unsigned char *frame);
2229// this will be used to check rigcaps structure is compatible with client
2230 char *hamlib_check_rig_caps; // a constant value we can check for hamlib integrity
2231 int (*get_conf2)(RIG *rig, hamlib_token_t token, char *val, int val_len);
2232 int (*password)(RIG *rig, const char *key1); /*< Send encrypted password if rigctld is secured with -A/--password */
2233 int (*set_lock_mode)(RIG *rig, int mode);
2234 int (*get_lock_mode)(RIG *rig, int *mode);
2237// int (*bandwidth2rig)(RIG *rig, enum bandwidth_t bandwidth);
2238// enum bandwidth_t (*rig2bandwidth)(RIG *rig, int rigbandwidth);
2239};
2240
2241
2246// all functions enumerated for rig_get_function_ptr
2248 RIG_FUNCTION_INIT,
2249 RIG_FUNCTION_CLEANUP,
2250 RIG_FUNCTION_OPEN,
2251 RIG_FUNCTION_CLOSE,
2252 RIG_FUNCTION_SET_FREQ,
2253 RIG_FUNCTION_GET_FREQ,
2254 RIG_FUNCTION_SET_MODE,
2255 RIG_FUNCTION_GET_MODE,
2256 RIG_FUNCTION_SET_VFO,
2257 RIG_FUNCTION_GET_VFO,
2258 RIG_FUNCTION_SET_PTT,
2259 RIG_FUNCTION_GET_PTT,
2260 RIG_FUNCTION_GET_DCD,
2261 RIG_FUNCTION_SET_RPTR_SHIFT,
2262 RIG_FUNCTION_GET_RPTR_SHIFT,
2263 RIG_FUNCTION_SET_RPTR_OFFS,
2264 RIG_FUNCTION_GET_RPTR_OFFS,
2265 RIG_FUNCTION_SET_SPLIT_FREQ,
2266 RIG_FUNCTION_GET_SPLIT_FREQ,
2267 RIG_FUNCTION_SET_SPLIT_MODE,
2268 RIG_FUNCTION_SET_SPLIT_FREQ_MODE,
2269 RIG_FUNCTION_GET_SPLIT_FREQ_MODE,
2270 RIG_FUNCTION_SET_SPLIT_VFO,
2271 RIG_FUNCTION_GET_SPLIT_VFO,
2272 RIG_FUNCTION_SET_RIT,
2273 RIG_FUNCTION_GET_RIT,
2274 RIG_FUNCTION_SET_XIT,
2275 RIG_FUNCTION_GET_XIT,
2276 RIG_FUNCTION_SET_TS,
2277 RIG_FUNCTION_GET_TS,
2278 RIG_FUNCTION_SET_DCS_CODE,
2279 RIG_FUNCTION_GET_DCS_CODE,
2280 RIG_FUNCTION_SET_TONE,
2281 RIG_FUNCTION_GET_TONE,
2282 RIG_FUNCTION_SET_CTCSS_TONE,
2283 RIG_FUNCTION_GET_CTCSS_TONE,
2284 RIG_FUNCTION_SET_DCS_SQL,
2285 RIG_FUNCTION_GET_DCS_SQL,
2286 RIG_FUNCTION_SET_TONE_SQL,
2287 RIG_FUNCTION_GET_TONE_SQL,
2288 RIG_FUNCTION_SET_CTCSS_SQL,
2289 RIG_FUNCTION_GET_CTCSS_SQL,
2290 RIG_FUNCTION_POWER2MW,
2291 RIG_FUNCTION_MW2POWER,
2292 RIG_FUNCTION_SET_POWERSTAT,
2293 RIG_FUNCTION_GET_POWERSTAT,
2294 RIG_FUNCTION_RESET,
2295 RIG_FUNCTION_SET_ANT,
2296 RIG_FUNCTION_GET_ANT,
2297 RIG_FUNCTION_SET_LEVEL,
2298 RIG_FUNCTION_GET_LEVEL,
2299 RIG_FUNCTION_SET_FUNC,
2300 RIG_FUNCTION_GET_FUNC,
2301 RIG_FUNCTION_SET_PARM,
2302 RIG_FUNCTION_GET_PARM,
2303 RIG_FUNCTION_SET_EXT_LEVEL,
2304 RIG_FUNCTION_GET_EXT_LEVEL,
2305 RIG_FUNCTION_SET_EXT_FUNC,
2306 RIG_FUNCTION_GET_EXT_FUNC,
2307 RIG_FUNCTION_SET_EXT_PARM,
2308 RIG_FUNCTION_GET_EXT_PARM,
2309 RIG_FUNCTION_SET_CONF,
2310 RIG_FUNCTION_GET_CONF,
2311 RIG_FUNCTION_SEND_DTMF,
2312 RIG_FUNCTION_SEND_MORSE,
2313 RIG_FUNCTION_STOP_MORSE,
2314 RIG_FUNCTION_WAIT_MORSE,
2315 RIG_FUNCTION_SEND_VOICE_MEM,
2316 RIG_FUNCTION_SET_BANK,
2317 RIG_FUNCTION_SET_MEM,
2318 RIG_FUNCTION_GET_MEM,
2319 RIG_FUNCTION_VFO_OP,
2320 RIG_FUNCTION_SCAN,
2321 RIG_FUNCTION_SET_TRN,
2322 RIG_FUNCTION_GET_TRN,
2323 RIG_FUNCTION_DECODE_EVENT,
2324 RIG_FUNCTION_SET_CHANNEL,
2325 RIG_FUNCTION_GET_CHANNEL,
2326 RIG_FUNCTION_GET_INFO,
2327 RIG_FUNCTION_SET_CHAN_ALL_CB,
2328 RIG_FUNCTION_GET_CHAN_ALL_CB,
2329 RIG_FUNCTION_SET_MEM_ALL_CB,
2330 RIG_FUNCTION_GET_MEM_ALL_CB,
2331 RIG_FUNCTION_SET_VFO_OPT,
2332 RIG_FUNCTION_READ_FRAME_DIRECT,
2333 RIG_FUNCTION_IS_ASYNC_FRAME,
2334 RIG_FUNCTION_PROCESS_ASYNC_FRAME,
2335 RIG_FUNCTION_GET_CONF2,
2336 RIG_FUNCTION_STOP_VOICE_MEM,
2337};
2338
2343extern HAMLIB_EXPORT (void *) rig_get_function_ptr(rig_model_t rig_model, enum rig_function_e rig_function);
2344
2349// values enumerated for rig->caps values
2351 RIG_CAPS_TARGETABLE_VFO,
2352 RIG_CAPS_RIG_MODEL,
2353 RIG_CAPS_PORT_TYPE,
2354 RIG_CAPS_PTT_TYPE,
2355 RIG_CAPS_HAS_GET_LEVEL,
2356 RIG_CAPS_HAS_SET_LEVEL,
2357};
2358
2359enum rig_caps_cptr_e {
2360 RIG_CAPS_VERSION_CPTR,
2361 RIG_CAPS_MFG_NAME_CPTR,
2362 RIG_CAPS_MODEL_NAME_CPTR,
2363 RIG_CAPS_STATUS_CPTR
2364};
2365
2370extern HAMLIB_EXPORT (uint64_t) rig_get_caps_int(rig_model_t rig_model, enum rig_caps_int_e rig_caps);
2371
2376extern HAMLIB_EXPORT (const char *) rig_get_caps_cptr(rig_model_t rig_model, enum rig_caps_cptr_e rig_caps);
2377
2378struct hamlib_async_pipe;
2379
2380typedef struct hamlib_async_pipe hamlib_async_pipe_t;
2381
2382//---Start cut here---
2383// Definition of struct hamlib_port moved to port.h
2384// Temporary include here until 5.0
2385/* For non-invasive debugging */
2386#ifndef NO_OLD_INCLUDES
2387__END_DECLS
2388
2389#include <hamlib/port.h>
2390
2391__BEGIN_DECLS
2392#endif
2393
2394//---End cut here---
2395/* Macros to access data structures/pointers
2396 * Make it easier to change location in preparation
2397 * for moving them out of rig->state.
2398 * See https://github.com/Hamlib/Hamlib/issues/1445
2399 * https://github.com/Hamlib/Hamlib/issues/1452
2400 * https://github.com/Hamlib/Hamlib/issues/1420
2401 * https://github.com/Hamlib/Hamlib/issues/536
2402 * https://github.com/Hamlib/Hamlib/issues/487
2403 */
2404// Note: Experimental, and subject to change!!
2405#if defined(IN_HAMLIB)
2406/* These are for internal use only */
2407#define RIGPORT(r) (&(r)->state.rigport)
2408#define PTTPORT(r) (&(r)->state.pttport)
2409#define DCDPORT(r) (&(r)->state.dcdport)
2410//Moved to src/cache.h #define CACHE(r) ((r)->cache_addr)
2411#define AMPPORT(a) (&(a)->state.ampport)
2412#define ROTPORT(r) (&(r)->state.rotport)
2413#define ROTPORT2(r) (&(r)->state.rotport2)
2414//Moved to include/hamlib/rig_state.h #define STATE(r) (&r->state)
2415//Moved to include/hamlib/amp_state.h #define AMPSTATE(a) (&(a)->state)
2416//Moved to include/hamlib/rot_state.h #define ROTSTATE(r) (&(r)->state)
2417/* Then when the rigport address is stored as a pointer somewhere else(say,
2418 * in the rig structure itself), the definition could be changed to
2419 * #define RIGPORT(r) r->somewhereelse
2420 * and every reference is updated.
2421 */
2422#else
2423/* Define external unique names */
2424//#define HAMLIB_RIGPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_RIGPORT))
2425//#define HAMLIB_PTTPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_PTTPORT))
2426//#define HAMLIB_DCDPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_DCDPORT))
2427//#define HAMLIB_CACHE(r) ((struct rig_cache *)rig_data_pointer(r, RIG_PTRX_CACHE))
2428//#define HAMLIB_AMPPORT(a) ((hamlib_port_t *)amp_data_pointer(a, RIG_PTRX_AMPPORT))
2429//#define HAMLIB_ROTPORT(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT))
2430//#define HAMLIB_ROTPORT2(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT2))
2431//#define HAMLIB_STATE(r) ((struct rig_state *)rig_data_pointer(r, RIG_PTRX_STATE))
2432//#define HAMLIB_AMPSTATE(a) ((struct amp_state *)amp_data_pointer(a, RIG_PTRX_AMPSTATE))
2433//#define HAMLIB_ROTSTATE(r) ((struct rot_state *)rot_data_pointer(r, RIG_PTRX_ROTSTATE))
2434#endif
2435
2436typedef enum {
2437 RIG_PTRX_NONE=0,
2438 RIG_PTRX_RIGPORT,
2439 RIG_PTRX_PTTPORT,
2440 RIG_PTRX_DCDPORT,
2441 RIG_PTRX_CACHE,
2442 RIG_PTRX_AMPPORT,
2443 RIG_PTRX_ROTPORT,
2444 RIG_PTRX_ROTPORT2,
2445 RIG_PTRX_STATE,
2446 RIG_PTRX_AMPSTATE,
2447 RIG_PTRX_ROTSTATE,
2448// New entries go directly above this line====================
2449 RIG_PTRX_MAXIMUM
2450} rig_ptrx_t;
2451
2452#define HAMLIB_ELAPSED_GET 0
2453#define HAMLIB_ELAPSED_SET 1
2454#define HAMLIB_ELAPSED_INVALIDATE 2
2455
2456#define HAMLIB_CACHE_ALWAYS (-1)
2457
2458typedef enum {
2459 HAMLIB_CACHE_ALL, // to set all cache timeouts at once
2460 HAMLIB_CACHE_VFO,
2461 HAMLIB_CACHE_FREQ,
2462 HAMLIB_CACHE_MODE,
2463 HAMLIB_CACHE_PTT,
2464 HAMLIB_CACHE_SPLIT,
2465 HAMLIB_CACHE_WIDTH
2466} hamlib_cache_t;
2467
2468typedef enum {
2469 TWIDDLE_OFF,
2470 TWIDDLE_ON
2471} twiddle_state_t;
2472
2481 int timeout_ms; // the cache timeout for invalidating itself
2482 vfo_t vfo;
2483 //freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1
2484 // other abstraction here is based on dual vfo rigs and mapped to all others
2485 // So we have four possible states of rig
2486 // MainA, MainB, SubA, SubB
2487 // Main is the Main VFO and Sub is for the 2nd VFO
2488 // Most rigs have MainA and MainB
2489 // Dual VFO rigs can have SubA and SubB too
2490 // For dual VFO rigs simplex operations are all done on MainA/MainB -- ergo this abstraction
2491 freq_t freqCurr; // Other VFO
2492 freq_t freqOther; // Other VFO
2493 freq_t freqMainA; // VFO_A, VFO_MAIN, and VFO_MAINA
2494 freq_t freqMainB; // VFO_B, VFO_SUB, and VFO_MAINB
2495 freq_t freqMainC; // VFO_C, VFO_MAINC
2496 freq_t freqSubA; // VFO_SUBA -- only for rigs with dual Sub VFOs
2497 freq_t freqSubB; // VFO_SUBB -- only for rigs with dual Sub VFOs
2498 freq_t freqSubC; // VFO_SUBC -- only for rigs with 3 Sub VFOs
2499 freq_t freqMem; // VFO_MEM -- last MEM channel
2500 rmode_t modeCurr;
2501 rmode_t modeOther;
2502 rmode_t modeMainA;
2503 rmode_t modeMainB;
2504 rmode_t modeMainC;
2505 rmode_t modeSubA;
2506 rmode_t modeSubB;
2507 rmode_t modeSubC;
2508 rmode_t modeMem;
2509 pbwidth_t widthCurr; // if non-zero then rig has separate width for MainA
2510 pbwidth_t widthOther; // if non-zero then rig has separate width for MainA
2511 pbwidth_t widthMainA; // if non-zero then rig has separate width for MainA
2512 pbwidth_t widthMainB; // if non-zero then rig has separate width for MainB
2513 pbwidth_t widthMainC; // if non-zero then rig has separate width for MainC
2514 pbwidth_t widthSubA; // if non-zero then rig has separate width for SubA
2515 pbwidth_t widthSubB; // if non-zero then rig has separate width for SubB
2516 pbwidth_t widthSubC; // if non-zero then rig has separate width for SubC
2517 pbwidth_t widthMem; // if non-zero then rig has separate width for Mem
2518 ptt_t ptt;
2519 split_t split;
2520 vfo_t split_vfo; // split caches two values
2521 struct timespec time_freqCurr;
2522 struct timespec time_freqOther;
2523 struct timespec time_freqMainA;
2524 struct timespec time_freqMainB;
2525 struct timespec time_freqMainC;
2526 struct timespec time_freqSubA;
2527 struct timespec time_freqSubB;
2528 struct timespec time_freqSubC;
2529 struct timespec time_freqMem;
2530 struct timespec time_vfo;
2531 struct timespec time_modeCurr;
2532 struct timespec time_modeOther;
2533 struct timespec time_modeMainA;
2534 struct timespec time_modeMainB;
2535 struct timespec time_modeMainC;
2536 struct timespec time_modeSubA;
2537 struct timespec time_modeSubB;
2538 struct timespec time_modeSubC;
2539 struct timespec time_modeMem;
2540 struct timespec time_widthCurr;
2541 struct timespec time_widthOther;
2542 struct timespec time_widthMainA;
2543 struct timespec time_widthMainB;
2544 struct timespec time_widthMainC;
2545 struct timespec time_widthSubA;
2546 struct timespec time_widthSubB;
2547 struct timespec time_widthSubC;
2548 struct timespec time_widthMem;
2549 struct timespec time_ptt;
2550 struct timespec time_split;
2551 int satmode; // if rig is in satellite mode
2552};
2553
2558#include <hamlib/multicast.h>
2560{
2561 int multicast_running;
2562 int sock;
2563 int seqnumber;
2564 volatile int runflag; // = 0;
2565 pthread_t threadid;
2566 // this mutex is needed to control serial access
2567 // as of 2023-05-13 we have main thread and multicast thread needing it
2568 // eventually we should be able to use cached info only in the main thread to avoid contention
2569 pthread_mutex_t mutex;
2570 int mutex_initialized;
2571//#ifdef HAVE_ARPA_INET_H
2572 //struct ip_mreq mreq; // = {0};
2573 struct sockaddr_in dest_addr; // = {0};
2574 int port;
2575//#endif
2576};
2577
2578typedef unsigned int rig_comm_status_t;
2579
2580#define RIG_COMM_STATUS_OK 0x00
2581#define RIG_COMM_STATUS_CONNECTING 0x01
2582#define RIG_COMM_STATUS_DISCONNECTED 0x02
2583#define RIG_COMM_STATUS_TERMINATED 0x03
2584#define RIG_COMM_STATUS_WARNING 0x04
2585#define RIG_COMM_STATUS_ERROR 0x05
2586
2587//---Start cut here---
2588/* rig_state definition moved to include/hamlib/rig_state.h */
2589#ifndef NO_OLD_INCLUDES
2590
2591__END_DECLS
2592
2593#include <hamlib/rig_state.h>
2594
2595__BEGIN_DECLS
2596
2597#endif
2598//---End cut here---
2599
2601typedef int (*vprintf_cb_t)(enum rig_debug_level_e,
2602 rig_ptr_t,
2603 const char *,
2604 va_list);
2605
2606typedef int (*freq_cb_t)(RIG *, vfo_t, freq_t, rig_ptr_t);
2607typedef int (*mode_cb_t)(RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t);
2608typedef int (*vfo_cb_t)(RIG *, vfo_t, rig_ptr_t);
2609typedef int (*ptt_cb_t)(RIG *, vfo_t, ptt_t, rig_ptr_t);
2610typedef int (*dcd_cb_t)(RIG *, vfo_t, dcd_t, rig_ptr_t);
2611typedef int (*pltune_cb_t)(RIG *,
2612 vfo_t, freq_t *,
2613 rmode_t *,
2614 pbwidth_t *,
2615 rig_ptr_t);
2616typedef int (*spectrum_cb_t)(RIG *,
2617 struct rig_spectrum_line *,
2618 rig_ptr_t);
2619
2621
2639// Do NOT add/remove from this structure -- it will break DLL backwards compatibility
2641 freq_cb_t freq_event;
2642 rig_ptr_t freq_arg;
2643 mode_cb_t mode_event;
2644 rig_ptr_t mode_arg;
2645 vfo_cb_t vfo_event;
2646 rig_ptr_t vfo_arg;
2647 ptt_cb_t ptt_event;
2648 rig_ptr_t ptt_arg;
2649 dcd_cb_t dcd_event;
2650 rig_ptr_t dcd_arg;
2651 pltune_cb_t pltune;
2652 rig_ptr_t pltune_arg;
2653 spectrum_cb_t spectrum_event;
2654 rig_ptr_t spectrum_arg;
2655 /* etc.. */
2656};
2657
2658
2668struct s_rig {
2669 struct rig_caps *caps;
2670 // Do not remove the deprecated structure -- it will mess up DLL backwards compatibility
2673 // state should really be a pointer but that's a LOT of changes involved
2675/* Data after this line is for hamlib internal use only,
2676 * and should *NOT* be referenced by applications, as layout will change!
2677 */
2679};
2680
2681
2682
2683/* --------------- API function prototypes -----------------*/
2684
2686
2687extern HAMLIB_EXPORT(RIG *) rig_init HAMLIB_PARAMS((rig_model_t rig_model));
2688extern HAMLIB_EXPORT(int) rig_open HAMLIB_PARAMS((RIG *rig));
2689
2690/*
2691 * General API commands, from most primitive to least.. :()
2692 * List Set/Get functions pairs
2693 */
2694
2695extern HAMLIB_EXPORT(int)
2696rig_flush_force(hamlib_port_t *port, int flush_async_data);
2697
2698extern HAMLIB_EXPORT(int)
2699rig_flush(hamlib_port_t *port);
2700
2701extern HAMLIB_EXPORT(void)
2702rig_lock(RIG *rig, int lock);
2703
2704#if BUILTINFUNC
2705#define rig_set_freq(r,v,f) rig_set_freq(r,v,f,__builtin_FUNCTION())
2706extern HAMLIB_EXPORT(int)
2707rig_set_freq HAMLIB_PARAMS((RIG *rig,
2708 vfo_t vfo,
2709 freq_t freq, const char*));
2710#else
2711extern HAMLIB_EXPORT(int)
2712rig_set_freq HAMLIB_PARAMS((RIG *rig,
2713 vfo_t vfo,
2714 freq_t freq));
2715#endif
2716#if BUILTINFUNC
2717#define rig_get_freq(r,v,f) rig_get_freq(r,v,f,__builtin_FUNCTION())
2718extern HAMLIB_EXPORT(int)
2719rig_get_freq HAMLIB_PARAMS((RIG *rig,
2720 vfo_t vfo,
2721 freq_t *freq, const char*));
2722#else
2723extern HAMLIB_EXPORT(int)
2724rig_get_freq HAMLIB_PARAMS((RIG *rig,
2725 vfo_t vfo,
2726 freq_t *freq));
2727#endif
2728
2729extern HAMLIB_EXPORT(int)
2730rig_set_mode HAMLIB_PARAMS((RIG *rig,
2731 vfo_t vfo,
2732 rmode_t mode,
2733 pbwidth_t width));
2734extern HAMLIB_EXPORT(int)
2735rig_get_mode HAMLIB_PARAMS((RIG *rig,
2736 vfo_t vfo,
2737 rmode_t *mode,
2738 pbwidth_t *width));
2739
2740#if BUILTINFUNC
2741#define rig_set_vfo(r,v) rig_set_vfo(r,v,__builtin_FUNCTION())
2742extern HAMLIB_EXPORT(int)
2743rig_set_vfo HAMLIB_PARAMS((RIG *rig,
2744 vfo_t vfo, const char *func));
2745#else
2746extern HAMLIB_EXPORT(int)
2747rig_set_vfo HAMLIB_PARAMS((RIG *rig,
2748 vfo_t vfo));
2749#endif
2750extern HAMLIB_EXPORT(int)
2751rig_get_vfo HAMLIB_PARAMS((RIG *rig,
2752 vfo_t *vfo));
2753
2754extern HAMLIB_EXPORT(int)
2755rig_get_vfo_info HAMLIB_PARAMS((RIG *rig,
2756 vfo_t vfo,
2757 freq_t *freq,
2758 rmode_t *mode,
2759 pbwidth_t *width,
2760 split_t *split,
2761 int *satmode));
2762
2763extern HAMLIB_EXPORT(int)
2764rig_get_vfo_list HAMLIB_PARAMS((RIG *rig, char *buf, int buflen));
2765
2766extern HAMLIB_EXPORT(int)
2767netrigctl_get_vfo_mode HAMLIB_PARAMS((RIG *rig));
2768
2769extern HAMLIB_EXPORT(int)
2770rig_set_ptt HAMLIB_PARAMS((RIG *rig,
2771 vfo_t vfo,
2772 ptt_t ptt));
2773extern HAMLIB_EXPORT(int)
2774rig_get_ptt HAMLIB_PARAMS((RIG *rig,
2775 vfo_t vfo,
2776 ptt_t *ptt));
2777
2778extern HAMLIB_EXPORT(int)
2779rig_get_dcd HAMLIB_PARAMS((RIG *rig,
2780 vfo_t vfo,
2781 dcd_t *dcd));
2782
2783extern HAMLIB_EXPORT(int)
2784rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig,
2785 vfo_t vfo,
2786 rptr_shift_t rptr_shift));
2787extern HAMLIB_EXPORT(int)
2788rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig,
2789 vfo_t vfo,
2790 rptr_shift_t *rptr_shift));
2791
2792extern HAMLIB_EXPORT(int)
2793rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig,
2794 vfo_t vfo,
2795 shortfreq_t rptr_offs));
2796extern HAMLIB_EXPORT(int)
2797rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig,
2798 vfo_t vfo,
2799 shortfreq_t *rptr_offs));
2800
2801extern HAMLIB_EXPORT(int)
2802rig_set_ctcss_tone HAMLIB_PARAMS((RIG *rig,
2803 vfo_t vfo,
2804 tone_t tone));
2805extern HAMLIB_EXPORT(int)
2806rig_get_ctcss_tone HAMLIB_PARAMS((RIG *rig,
2807 vfo_t vfo,
2808 tone_t *tone));
2809
2810extern HAMLIB_EXPORT(int)
2811rig_set_dcs_code HAMLIB_PARAMS((RIG *rig,
2812 vfo_t vfo,
2813 tone_t code));
2814extern HAMLIB_EXPORT(int)
2815rig_get_dcs_code HAMLIB_PARAMS((RIG *rig,
2816 vfo_t vfo,
2817 tone_t *code));
2818
2819extern HAMLIB_EXPORT(int)
2820rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig,
2821 vfo_t vfo,
2822 tone_t tone));
2823extern HAMLIB_EXPORT(int)
2824rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig,
2825 vfo_t vfo,
2826 tone_t *tone));
2827
2828extern HAMLIB_EXPORT(int)
2829rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig,
2830 vfo_t vfo,
2831 tone_t code));
2832extern HAMLIB_EXPORT(int)
2833rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig,
2834 vfo_t vfo,
2835 tone_t *code));
2836
2837extern HAMLIB_EXPORT(int)
2838rig_set_split_freq HAMLIB_PARAMS((RIG *rig,
2839 vfo_t vfo,
2840 freq_t tx_freq));
2841extern HAMLIB_EXPORT(int)
2842rig_get_split_freq HAMLIB_PARAMS((RIG *rig,
2843 vfo_t vfo,
2844 freq_t *tx_freq));
2845
2846extern HAMLIB_EXPORT(int)
2847rig_set_split_mode HAMLIB_PARAMS((RIG *rig,
2848 vfo_t vfo,
2849 rmode_t tx_mode,
2850 pbwidth_t tx_width));
2851extern HAMLIB_EXPORT(int)
2852rig_get_split_mode HAMLIB_PARAMS((RIG *rig,
2853 vfo_t vfo,
2854 rmode_t *tx_mode,
2855 pbwidth_t *tx_width));
2856
2857extern HAMLIB_EXPORT(int)
2858rig_set_split_freq_mode HAMLIB_PARAMS((RIG *rig,
2859 vfo_t vfo,
2860 freq_t tx_freq,
2861 rmode_t tx_mode,
2862 pbwidth_t tx_width));
2863extern HAMLIB_EXPORT(int)
2864rig_get_split_freq_mode HAMLIB_PARAMS((RIG *rig,
2865 vfo_t vfo,
2866 freq_t *tx_freq,
2867 rmode_t *tx_mode,
2868 pbwidth_t *tx_width));
2869
2870extern HAMLIB_EXPORT(int)
2871rig_set_split_vfo HAMLIB_PARAMS((RIG *,
2872 vfo_t rx_vfo,
2873 split_t split,
2874 vfo_t tx_vfo));
2875extern HAMLIB_EXPORT(int)
2876rig_get_split_vfo HAMLIB_PARAMS((RIG *,
2877 vfo_t rx_vfo,
2878 split_t *split,
2879 vfo_t *tx_vfo));
2880
2881extern HAMLIB_EXPORT(int)
2882rig_set_rit HAMLIB_PARAMS((RIG *rig,
2883 vfo_t vfo,
2884 shortfreq_t rit));
2885extern HAMLIB_EXPORT(int)
2886rig_get_rit HAMLIB_PARAMS((RIG *rig,
2887 vfo_t vfo,
2888 shortfreq_t *rit));
2889
2890extern HAMLIB_EXPORT(int)
2891rig_set_xit HAMLIB_PARAMS((RIG *rig,
2892 vfo_t vfo,
2893 shortfreq_t xit));
2894extern HAMLIB_EXPORT(int)
2895rig_get_xit HAMLIB_PARAMS((RIG *rig,
2896 vfo_t vfo,
2897 shortfreq_t *xit));
2898
2899extern HAMLIB_EXPORT(int)
2900rig_set_ts HAMLIB_PARAMS((RIG *rig,
2901 vfo_t vfo,
2902 shortfreq_t ts));
2903extern HAMLIB_EXPORT(int)
2904rig_get_ts HAMLIB_PARAMS((RIG *rig,
2905 vfo_t vfo,
2906 shortfreq_t *ts));
2907
2908extern HAMLIB_EXPORT(int)
2909rig_power2mW HAMLIB_PARAMS((RIG *rig,
2910 unsigned int *mwpower,
2911 float power,
2912 freq_t freq,
2913 rmode_t mode));
2914extern HAMLIB_EXPORT(int)
2915rig_mW2power HAMLIB_PARAMS((RIG *rig,
2916 float *power,
2917 unsigned int mwpower,
2918 freq_t freq,
2919 rmode_t mode));
2920
2921extern HAMLIB_EXPORT(shortfreq_t)
2922rig_get_resolution HAMLIB_PARAMS((RIG *rig,
2923 rmode_t mode));
2924
2925extern HAMLIB_EXPORT(int)
2926rig_set_level HAMLIB_PARAMS((RIG *rig,
2927 vfo_t vfo,
2928 setting_t level,
2929 value_t val));
2930extern HAMLIB_EXPORT(int)
2931rig_get_level HAMLIB_PARAMS((RIG *rig,
2932 vfo_t vfo,
2933 setting_t level,
2934 value_t *val));
2935
2936#define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s))
2937
2938extern HAMLIB_EXPORT(int)
2939rig_set_parm HAMLIB_PARAMS((RIG *rig,
2940 setting_t parm,
2941 value_t val));
2942extern HAMLIB_EXPORT(int)
2943rig_get_parm HAMLIB_PARAMS((RIG *rig,
2944 setting_t parm,
2945 value_t *val));
2946
2947extern HAMLIB_EXPORT(int)
2948rig_set_conf HAMLIB_PARAMS((RIG *rig,
2949 hamlib_token_t token,
2950 const char *val));
2951// deprecating rig_get_conf
2952HL_DEPRECATED extern HAMLIB_EXPORT(int)
2953rig_get_conf HAMLIB_PARAMS((RIG *rig,
2954 hamlib_token_t token,
2955 char *val));
2956extern HAMLIB_EXPORT(int)
2957rig_get_conf2 HAMLIB_PARAMS((RIG *rig,
2958 hamlib_token_t token,
2959 char *val,
2960 int val_len));
2961
2962extern HAMLIB_EXPORT(int)
2963rig_set_powerstat HAMLIB_PARAMS((RIG *rig,
2964 powerstat_t status));
2965extern HAMLIB_EXPORT(int)
2966rig_get_powerstat HAMLIB_PARAMS((RIG *rig,
2967 powerstat_t *status));
2968
2969extern HAMLIB_EXPORT(int)
2970rig_reset HAMLIB_PARAMS((RIG *rig,
2971 reset_t reset)); /* dangerous! */
2972
2973extern HAMLIB_EXPORT(int)
2974rig_set_ext_level HAMLIB_PARAMS((RIG *rig,
2975 vfo_t vfo,
2976 hamlib_token_t token,
2977 value_t val));
2978extern HAMLIB_EXPORT(int)
2979rig_get_ext_level HAMLIB_PARAMS((RIG *rig,
2980 vfo_t vfo,
2981 hamlib_token_t token,
2982 value_t *val));
2983
2984extern HAMLIB_EXPORT(int)
2985rig_set_ext_func HAMLIB_PARAMS((RIG *rig,
2986 vfo_t vfo,
2987 hamlib_token_t token,
2988 int status));
2989extern HAMLIB_EXPORT(int)
2990rig_get_ext_func HAMLIB_PARAMS((RIG *rig,
2991 vfo_t vfo,
2992 hamlib_token_t token,
2993 int *status));
2994
2995extern HAMLIB_EXPORT(int)
2996rig_set_ext_parm HAMLIB_PARAMS((RIG *rig,
2997 hamlib_token_t token,
2998 value_t val));
2999extern HAMLIB_EXPORT(int)
3000rig_get_ext_parm HAMLIB_PARAMS((RIG *rig,
3001 hamlib_token_t token,
3002 value_t *val));
3003
3004extern HAMLIB_EXPORT(int)
3005rig_ext_func_foreach HAMLIB_PARAMS((RIG *rig,
3006 int (*cfunc)(RIG *,
3007 const struct confparams *,
3008 rig_ptr_t),
3009 rig_ptr_t data));
3010extern HAMLIB_EXPORT(int)
3011rig_ext_level_foreach HAMLIB_PARAMS((RIG *rig,
3012 int (*cfunc)(RIG *,
3013 const struct confparams *,
3014 rig_ptr_t),
3015 rig_ptr_t data));
3016extern HAMLIB_EXPORT(int)
3017rig_ext_parm_foreach HAMLIB_PARAMS((RIG *rig,
3018 int (*cfunc)(RIG *,
3019 const struct confparams *,
3020 rig_ptr_t),
3021 rig_ptr_t data));
3022
3023extern HAMLIB_EXPORT(const struct confparams *)
3024rig_ext_lookup HAMLIB_PARAMS((RIG *rig,
3025 const char *name));
3026
3027extern HAMLIB_EXPORT(const struct confparams *)
3028rig_ext_lookup_tok HAMLIB_PARAMS((RIG *rig,
3029 hamlib_token_t token));
3030extern HAMLIB_EXPORT(hamlib_token_t)
3031rig_ext_token_lookup HAMLIB_PARAMS((RIG *rig,
3032 const char *name));
3033
3034
3035extern HAMLIB_EXPORT(int)
3036rig_token_foreach HAMLIB_PARAMS((RIG *rig,
3037 int (*cfunc)(const struct confparams *,
3038 rig_ptr_t),
3039 rig_ptr_t data));
3040
3041extern HAMLIB_EXPORT(const struct confparams *)
3042rig_confparam_lookup HAMLIB_PARAMS((RIG *rig,
3043 const char *name));
3044extern HAMLIB_EXPORT(hamlib_token_t)
3045rig_token_lookup HAMLIB_PARAMS((RIG *rig,
3046 const char *name));
3047
3048extern HAMLIB_EXPORT(int)
3049rig_close HAMLIB_PARAMS((RIG *rig));
3050
3051extern HAMLIB_EXPORT(int)
3052rig_cleanup HAMLIB_PARAMS((RIG *rig));
3053
3054extern HAMLIB_EXPORT(int)
3055rig_set_ant HAMLIB_PARAMS((RIG *rig,
3056 vfo_t vfo,
3057 ant_t ant, /* antenna */
3058 value_t option)); /* optional ant info */
3059extern HAMLIB_EXPORT(int)
3060rig_get_ant HAMLIB_PARAMS((RIG *rig,
3061 vfo_t vfo,
3062 ant_t ant,
3063 value_t *option,
3064 ant_t *ant_curr,
3065 ant_t *ant_tx,
3066 ant_t *ant_rx));
3067
3068extern HAMLIB_EXPORT(setting_t)
3069rig_has_get_level HAMLIB_PARAMS((RIG *rig,
3070 setting_t level));
3071extern HAMLIB_EXPORT(setting_t)
3072rig_has_set_level HAMLIB_PARAMS((RIG *rig,
3073 setting_t level));
3074
3075extern HAMLIB_EXPORT(setting_t)
3076rig_has_get_parm HAMLIB_PARAMS((RIG *rig,
3077 setting_t parm));
3078extern HAMLIB_EXPORT(setting_t)
3079rig_has_set_parm HAMLIB_PARAMS((RIG *rig,
3080 setting_t parm));
3081
3082extern HAMLIB_EXPORT(setting_t)
3083rig_has_get_func HAMLIB_PARAMS((RIG *rig,
3084 setting_t func));
3085extern HAMLIB_EXPORT(setting_t)
3086rig_has_set_func HAMLIB_PARAMS((RIG *rig,
3087 setting_t func));
3088
3089extern HAMLIB_EXPORT(int)
3090rig_set_func HAMLIB_PARAMS((RIG *rig,
3091 vfo_t vfo,
3092 setting_t func,
3093 int status));
3094extern HAMLIB_EXPORT(int)
3095rig_get_func HAMLIB_PARAMS((RIG *rig,
3096 vfo_t vfo,
3097 setting_t func,
3098 int *status));
3099
3100extern HAMLIB_EXPORT(int)
3101rig_send_dtmf HAMLIB_PARAMS((RIG *rig,
3102 vfo_t vfo,
3103 const char *digits));
3104extern HAMLIB_EXPORT(int)
3105rig_recv_dtmf HAMLIB_PARAMS((RIG *rig,
3106 vfo_t vfo,
3107 char *digits,
3108 int *length));
3109
3110extern HAMLIB_EXPORT(int)
3111rig_send_morse HAMLIB_PARAMS((RIG *rig,
3112 vfo_t vfo,
3113 const char *msg));
3114
3115extern HAMLIB_EXPORT(int)
3116rig_stop_morse HAMLIB_PARAMS((RIG *rig,
3117 vfo_t vfo));
3118
3119extern HAMLIB_EXPORT(int)
3120rig_wait_morse HAMLIB_PARAMS((RIG *rig,
3121 vfo_t vfo));
3122
3123extern HAMLIB_EXPORT(int)
3124rig_send_voice_mem HAMLIB_PARAMS((RIG *rig,
3125 vfo_t vfo,
3126 int ch));
3127
3128extern HAMLIB_EXPORT(int)
3129rig_stop_voice_mem HAMLIB_PARAMS((RIG *rig,
3130 vfo_t vfo));
3131
3132extern HAMLIB_EXPORT(int)
3133rig_set_bank HAMLIB_PARAMS((RIG *rig,
3134 vfo_t vfo,
3135 int bank));
3136
3137extern HAMLIB_EXPORT(int)
3138rig_set_mem HAMLIB_PARAMS((RIG *rig,
3139 vfo_t vfo,
3140 int ch));
3141extern HAMLIB_EXPORT(int)
3142rig_get_mem HAMLIB_PARAMS((RIG *rig,
3143 vfo_t vfo,
3144 int *ch));
3145
3146extern HAMLIB_EXPORT(int)
3147rig_vfo_op HAMLIB_PARAMS((RIG *rig,
3148 vfo_t vfo,
3149 vfo_op_t op));
3150
3151extern HAMLIB_EXPORT(vfo_op_t)
3152rig_has_vfo_op HAMLIB_PARAMS((RIG *rig,
3153 vfo_op_t op));
3154
3155extern HAMLIB_EXPORT(int)
3156rig_scan HAMLIB_PARAMS((RIG *rig,
3157 vfo_t vfo,
3158 scan_t scan,
3159 int ch));
3160
3161extern HAMLIB_EXPORT(scan_t)
3162rig_has_scan HAMLIB_PARAMS((RIG *rig,
3163 scan_t scan));
3164
3165extern HAMLIB_EXPORT(int)
3166rig_set_channel HAMLIB_PARAMS((RIG *rig,
3167 vfo_t vfo,
3168 const channel_t *chan)); /* mem */
3169extern HAMLIB_EXPORT(int)
3170rig_get_channel HAMLIB_PARAMS((RIG *rig,
3171 vfo_t vfo,
3172 channel_t *chan, int read_only));
3173
3174extern HAMLIB_EXPORT(int)
3175rig_set_chan_all HAMLIB_PARAMS((RIG *rig,
3176 vfo_t vfo,
3177 const channel_t chans[]));
3178extern HAMLIB_EXPORT(int)
3179rig_get_chan_all HAMLIB_PARAMS((RIG *rig,
3180 vfo_t vfo,
3181 channel_t chans[]));
3182
3183extern HAMLIB_EXPORT(int)
3184rig_set_chan_all_cb HAMLIB_PARAMS((RIG *rig,
3185 vfo_t vfo,
3186 chan_cb_t chan_cb,
3187 rig_ptr_t));
3188extern HAMLIB_EXPORT(int)
3189rig_get_chan_all_cb HAMLIB_PARAMS((RIG *rig,
3190 vfo_t vfo,
3191 chan_cb_t chan_cb,
3192 rig_ptr_t));
3193
3194extern HAMLIB_EXPORT(int)
3195rig_set_mem_all_cb HAMLIB_PARAMS((RIG *rig,
3196 vfo_t vfo,
3197 chan_cb_t chan_cb,
3198 confval_cb_t parm_cb,
3199 rig_ptr_t));
3200extern HAMLIB_EXPORT(int)
3201rig_get_mem_all_cb HAMLIB_PARAMS((RIG *rig,
3202 vfo_t vfo,
3203 chan_cb_t chan_cb,
3204 confval_cb_t parm_cb,
3205 rig_ptr_t));
3206
3207extern HAMLIB_EXPORT(int)
3208rig_set_mem_all HAMLIB_PARAMS((RIG *rig,
3209 vfo_t vfo,
3210 const channel_t *chan,
3211 const struct confparams *,
3212 const value_t *));
3213extern HAMLIB_EXPORT(int)
3214rig_get_mem_all HAMLIB_PARAMS((RIG *rig,
3215 vfo_t vfo,
3216 channel_t *chan,
3217 const struct confparams *,
3218 value_t *));
3219
3220extern HAMLIB_EXPORT(const chan_t *)
3221rig_lookup_mem_caps HAMLIB_PARAMS((RIG *rig,
3222 int ch));
3223
3224extern HAMLIB_EXPORT(int)
3225rig_mem_count HAMLIB_PARAMS((RIG *rig));
3226
3227HL_DEPRECATED
3228extern HAMLIB_EXPORT(int)
3229rig_set_trn HAMLIB_PARAMS((RIG *rig,
3230 int trn));
3231HL_DEPRECATED
3232extern HAMLIB_EXPORT(int)
3233rig_get_trn HAMLIB_PARAMS((RIG *rig,
3234 int *trn));
3235
3236extern HAMLIB_EXPORT(int)
3237rig_set_freq_callback HAMLIB_PARAMS((RIG *,
3238 freq_cb_t,
3239 rig_ptr_t));
3240
3241extern HAMLIB_EXPORT(int)
3242rig_set_mode_callback HAMLIB_PARAMS((RIG *,
3243 mode_cb_t,
3244 rig_ptr_t));
3245extern HAMLIB_EXPORT(int)
3246rig_set_vfo_callback HAMLIB_PARAMS((RIG *,
3247 vfo_cb_t,
3248 rig_ptr_t));
3249
3250extern HAMLIB_EXPORT(int)
3251rig_set_ptt_callback HAMLIB_PARAMS((RIG *,
3252 ptt_cb_t,
3253 rig_ptr_t));
3254
3255extern HAMLIB_EXPORT(int)
3256rig_set_dcd_callback HAMLIB_PARAMS((RIG *,
3257 dcd_cb_t,
3258 rig_ptr_t));
3259
3260extern HAMLIB_EXPORT(int)
3261rig_set_pltune_callback HAMLIB_PARAMS((RIG *,
3262 pltune_cb_t,
3263 rig_ptr_t));
3264
3265extern HAMLIB_EXPORT(int)
3266rig_set_spectrum_callback HAMLIB_PARAMS((RIG *,
3267 spectrum_cb_t,
3268 rig_ptr_t));
3269
3270extern HAMLIB_EXPORT(int)
3271rig_set_twiddle HAMLIB_PARAMS((RIG *rig,
3272 int seconds));
3273
3274extern HAMLIB_EXPORT(int)
3275rig_get_twiddle HAMLIB_PARAMS((RIG *rig,
3276 int *seconds));
3277
3278extern HAMLIB_EXPORT(int)
3279rig_set_uplink HAMLIB_PARAMS((RIG *rig,
3280 int val));
3281
3282extern HAMLIB_EXPORT(const char *)
3283rig_get_info HAMLIB_PARAMS((RIG *rig));
3284
3285extern HAMLIB_EXPORT(struct rig_caps *)
3286rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model));
3287
3288extern HAMLIB_EXPORT(const freq_range_t *)
3289rig_get_range HAMLIB_PARAMS((const freq_range_t *range_list,
3290 freq_t freq,
3291 rmode_t mode));
3292
3293extern HAMLIB_EXPORT(pbwidth_t)
3294rig_passband_normal HAMLIB_PARAMS((RIG *rig,
3295 rmode_t mode));
3296extern HAMLIB_EXPORT(pbwidth_t)
3297rig_passband_narrow HAMLIB_PARAMS((RIG *rig,
3298 rmode_t mode));
3299extern HAMLIB_EXPORT(pbwidth_t)
3300rig_passband_wide HAMLIB_PARAMS((RIG *rig,
3301 rmode_t mode));
3302
3303extern HAMLIB_EXPORT(const char *)
3304rigerror HAMLIB_PARAMS((int errnum));
3305extern HAMLIB_EXPORT(const char *)
3306rigerror2 HAMLIB_PARAMS((int errnum));
3307
3308extern HAMLIB_EXPORT(int)
3309rig_setting2idx HAMLIB_PARAMS((setting_t s));
3310
3311#define HAMLIB_SETTINGS_FILE "hamlib_settings"
3312
3313extern HAMLIB_EXPORT(setting_t)
3314rig_idx2setting(int i);
3315/*
3316 * Even if these functions are prefixed with "rig_", they are not rig specific
3317 * Maybe "hamlib_" would have been better. Let me know. --SF
3318 */
3319extern HAMLIB_EXPORT(void)
3320rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
3321
3322extern HAMLIB_EXPORT(void)
3323rig_get_debug HAMLIB_PARAMS((enum rig_debug_level_e *debug_level));
3324
3325extern HAMLIB_EXPORT(void)
3326rig_set_debug_time_stamp HAMLIB_PARAMS((int flag));
3327
3328#define rig_set_debug_level(level) rig_set_debug(level)
3329
3330extern HAMLIB_EXPORT(int)
3331rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
3332
3333
3334extern HAMLIB_EXPORT(void)add2debugmsgsave(const char *s);
3335// this needs to be fairly big to avoid compiler warnings
3336extern HAMLIB_EXPORT_VAR(char) debugmsgsave[DEBUGMSGSAVE_SIZE]; // last debug msg
3337extern HAMLIB_EXPORT_VAR(char) debugmsgsave2[DEBUGMSGSAVE_SIZE]; // last-1 debug msg
3338// debugmsgsave3 is deprecated
3339extern HAMLIB_EXPORT_VAR(char) debugmsgsave3[DEBUGMSGSAVE_SIZE]; // last-2 debug msg
3340#define rig_debug_clear() { debugmsgsave[0] = debugmsgsave2[0] = debugmsgsave3[0] = 0; };
3341#ifndef __cplusplus
3342#ifdef __GNUC__
3343// doing the debug macro with a dummy sprintf allows gcc to check the format string
3344#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)
3345#endif
3346#endif
3347
3348// Measuring elapsed time -- local variable inside function when macro is used
3349#define ELAPSED1 struct timespec __begin; elapsed_ms(&__begin, HAMLIB_ELAPSED_SET);
3350#define ELAPSED2 rig_debug(RIG_DEBUG_VERBOSE, "%s%d:%s: elapsed=%.0lfms\n", hl_stars(STATE(rig)->depth), STATE(rig)->depth, __func__, elapsed_ms(&__begin, HAMLIB_ELAPSED_GET));
3351
3352// use this instead of snprintf for automatic detection of buffer limit
3353#define SNPRINTF(s,n,...) { if (snprintf(s,n,##__VA_ARGS__) >= (n)) fprintf(stderr,"***** %s(%d): message truncated *****\n", __func__, __LINE__); }
3354
3355extern HAMLIB_EXPORT(void)
3356rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level,
3357 const char *fmt, ...));
3358
3359extern HAMLIB_EXPORT(vprintf_cb_t)
3360rig_set_debug_callback HAMLIB_PARAMS((vprintf_cb_t cb,
3361 rig_ptr_t arg));
3362
3363extern HAMLIB_EXPORT(FILE *)
3364rig_set_debug_file HAMLIB_PARAMS((FILE *stream));
3365
3366extern HAMLIB_EXPORT(int)
3367rig_register HAMLIB_PARAMS((struct rig_caps *caps));
3368
3369extern HAMLIB_EXPORT(int)
3370rig_unregister HAMLIB_PARAMS((rig_model_t rig_model));
3371
3372extern HAMLIB_EXPORT(int)
3373rig_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rig_caps *, rig_ptr_t),
3374 rig_ptr_t data));
3375
3376extern HAMLIB_EXPORT(int)
3377rig_list_foreach_model HAMLIB_PARAMS((int (*cfunc)(const rig_model_t rig_model, rig_ptr_t),
3378 rig_ptr_t data));
3379
3380extern HAMLIB_EXPORT(int)
3381rig_load_backend HAMLIB_PARAMS((const char *be_name));
3382
3383extern HAMLIB_EXPORT(int)
3384rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model));
3385
3386extern HAMLIB_EXPORT(int)
3387rig_load_all_backends HAMLIB_PARAMS((void));
3388
3389typedef int (*rig_probe_func_t)(const hamlib_port_t *, rig_model_t, rig_ptr_t);
3390
3391extern HAMLIB_EXPORT(int)
3392rig_probe_all HAMLIB_PARAMS((hamlib_port_t *p,
3393 rig_probe_func_t,
3394 rig_ptr_t));
3395
3396extern HAMLIB_EXPORT(rig_model_t)
3397rig_probe HAMLIB_PARAMS((hamlib_port_t *p));
3398
3399
3400/* Misc calls */
3401extern HAMLIB_EXPORT(const char *) rig_strrmode(rmode_t mode);
3402extern HAMLIB_EXPORT(int) rig_strrmodes(rmode_t modes, char *buf, int buflen);
3403extern HAMLIB_EXPORT(const char *) rig_strvfo(vfo_t vfo);
3404extern HAMLIB_EXPORT(const char *) rig_strfunc(setting_t);
3405extern HAMLIB_EXPORT(const char *) rig_strlevel(setting_t);
3406extern HAMLIB_EXPORT(const char *) rig_strparm(setting_t);
3407extern HAMLIB_EXPORT(const char *) rig_stragclevel(enum agc_level_e level);
3408extern HAMLIB_EXPORT(enum agc_level_e) rig_levelagcstr (const char *agcString);
3409extern HAMLIB_EXPORT(enum agc_level_e) rig_levelagcvalue (int agcValue);
3410extern HAMLIB_EXPORT(value_t) rig_valueagclevel (enum agc_level_e agcLevel);
3411extern HAMLIB_EXPORT(const char *) rig_strptrshift(rptr_shift_t);
3412extern HAMLIB_EXPORT(const char *) rig_strvfop(vfo_op_t op);
3413extern HAMLIB_EXPORT(const char *) rig_strscan(scan_t scan);
3414extern HAMLIB_EXPORT(const char *) rig_strstatus(enum rig_status_e status);
3415extern HAMLIB_EXPORT(const char *) rig_strmtype(chan_type_t mtype);
3416extern HAMLIB_EXPORT(const char *) rig_strspectrummode(enum rig_spectrum_mode_e mode);
3417extern HAMLIB_EXPORT(const char *) rig_strcommstatus(rig_comm_status_t vfo);
3418
3419extern HAMLIB_EXPORT(rmode_t) rig_parse_mode(const char *s);
3420extern HAMLIB_EXPORT(vfo_t) rig_parse_vfo(const char *s);
3421extern HAMLIB_EXPORT(setting_t) rig_parse_func(const char *s);
3422extern HAMLIB_EXPORT(setting_t) rig_parse_level(const char *s);
3423extern HAMLIB_EXPORT(setting_t) rig_parse_parm(const char *s);
3424extern HAMLIB_EXPORT(vfo_op_t) rig_parse_vfo_op(const char *s);
3425extern HAMLIB_EXPORT(scan_t) rig_parse_scan(const char *s);
3426extern HAMLIB_EXPORT(rptr_shift_t) rig_parse_rptr_shift(const char *s);
3427extern HAMLIB_EXPORT(chan_type_t) rig_parse_mtype(const char *s);
3428
3429extern HAMLIB_EXPORT(const char *) rig_license HAMLIB_PARAMS((void));
3430extern HAMLIB_EXPORT(const char *) rig_version HAMLIB_PARAMS((void));
3431extern HAMLIB_EXPORT(const char *) rig_copyright HAMLIB_PARAMS((void));
3432
3433extern HAMLIB_EXPORT(void) rig_no_restore_ai(void);
3434
3435extern HAMLIB_EXPORT(int) rig_get_cache_timeout_ms(RIG *rig, hamlib_cache_t selection);
3436extern HAMLIB_EXPORT(int) rig_set_cache_timeout_ms(RIG *rig, hamlib_cache_t selection, int ms);
3437
3438extern HAMLIB_EXPORT(int) rig_set_vfo_opt(RIG *rig, int status);
3439extern 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);
3440extern HAMLIB_EXPORT(int) rig_get_rig_info(RIG *rig, char *response, int max_response_len);
3441extern 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);
3442extern HAMLIB_EXPORT(int) rig_get_cache_freq(RIG *rig, vfo_t vfo, freq_t *freq, int * cache_ms_freq);
3443
3444extern 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);
3445extern 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);
3446
3447typedef unsigned long rig_useconds_t;
3448extern HAMLIB_EXPORT(int) hl_usleep(rig_useconds_t msec);
3449
3450extern HAMLIB_EXPORT(int) rig_cookie(RIG *rig, enum cookie_e cookie_cmd, char *cookie, int cookie_len);
3451
3452extern HAMLIB_EXPORT(int) rig_password(RIG *rig, const char *key1);
3453extern HAMLIB_EXPORT(void) rig_password_generate_secret(char *pass,
3454 char result[HAMLIB_SECRET_LENGTH + 1]);
3455extern HAMLIB_EXPORT(int) rig_send_raw(RIG *rig, const unsigned char* send, int send_len, unsigned char* reply, int reply_len, unsigned char *term);
3456
3457extern HAMLIB_EXPORT(int)
3458longlat2locator HAMLIB_PARAMS((double longitude,
3459 double latitude,
3460 char *locator_res,
3461 int pair_count));
3462
3463extern HAMLIB_EXPORT(int)
3464locator2longlat HAMLIB_PARAMS((double *longitude,
3465 double *latitude,
3466 const char *locator));
3467
3468extern HAMLIB_EXPORT(char*) rig_make_md5(const char *pass);
3469
3470extern HAMLIB_EXPORT(int) rig_set_lock_mode(RIG *rig, int lock);
3471extern HAMLIB_EXPORT(int) rig_get_lock_mode(RIG *rig, int *lock);
3472
3473extern HAMLIB_EXPORT(int) rig_is_model(RIG *rig, rig_model_t model);
3474
3475extern HAMLIB_EXPORT(char*) rig_date_strget(char *buf, int buflen, int localtime);
3476
3477enum GPIO { GPIO1, GPIO2, GPIO3, GPIO4 };
3478extern HAMLIB_EXPORT(int) rig_cm108_get_bit(hamlib_port_t *p, enum GPIO gpio, int *bit);
3479extern HAMLIB_EXPORT(int) rig_cm108_set_bit(hamlib_port_t *p, enum GPIO gpio, int bit);
3480extern HAMLIB_EXPORT(int) rig_band_changed(RIG *rig, hamlib_bandselect_t band);
3481
3482extern HAMLIB_EXPORT(void *) rig_data_pointer(RIG *rig, rig_ptrx_t idx);
3483
3485
3486__END_DECLS
3487
3488#endif /* _RIG_H */
3489
void add2debugmsgsave(const char *s)
Handle stack trace messages.
Definition rig.c:426
struct hamlib_port_deprecated hamlib_port_t_deprecated
struct hamlib_port hamlib_port_t
Port definition.
setting_t rig_parse_parm(const char *s)
Convert alpha string to RIG_PARM_...
Definition misc.c:1315
vfo_t rig_parse_vfo(const char *s)
Convert alpha string to enum RIG_VFO_...
Definition misc.c:650
const char * rig_strparm(setting_t parm)
Convert enum RIG_PARM_... to alpha string.
Definition misc.c:1365
const char * rig_strspectrummode(enum rig_spectrum_mode_e mode)
Convert enum RIG_SPECTRUM_MODE_... to alpha string.
Definition misc.c:1823
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:581
const char * rig_strvfo(vfo_t vfo)
Convert enum RIG_VFO_... to alpha string.
Definition misc.c:679
const char * rig_strscan(scan_t rscan)
Convert enum RIG_SCAN_... to alpha string.
Definition misc.c:1658
rptr_shift_t rig_parse_rptr_shift(const char *s)
Convert alpha char to enum RIG_RPT_SHIFT_...
Definition misc.c:1712
enum agc_level_e rig_levelagcstr(const char *agcString)
Convert AGC string... to agc_level_e.
Definition misc.c:1517
const char * rig_strfunc(setting_t func)
Convert enum RIG_FUNC_... to alpha string.
Definition misc.c:896
value_t rig_valueagclevel(enum agc_level_e agcLevel)
Convert a enum agc_level_e to value.
Definition misc.c:1466
const char * rig_strptrshift(rptr_shift_t shift)
convert enum RIG_RPT_SHIFT_... to printable character
Definition misc.c:1687
uint64_t rig_idx2setting(int i)
Definition misc.c:808
chan_type_t rig_parse_mtype(const char *s)
Convert alpha string to enum RIG_MTYPE_...
Definition misc.c:1758
const char * rig_stragclevel(enum agc_level_e level)
Convert enum RIG_AGC_... to alpha string.
Definition misc.c:1441
enum agc_level_e rig_levelagcvalue(int agcValue)
Convert a value to agc_level_e – constrains the range.
Definition misc.c:1486
const char * rig_strcommstatus(rig_comm_status_t status)
Convert enum RIG_COMM_STATUS... to alpha string.
Definition misc.c:2755
const char * rig_strstatus(enum rig_status_e status)
Convert enum RIG_STATUS_... to printable string.
Definition misc.c:429
setting_t rig_parse_level(const char *s)
Convert alpha string to enum RIG_LEVEL_...
Definition misc.c:1110
scan_t rig_parse_scan(const char *s)
Convert alpha string to enum RIG_SCAN_...
Definition misc.c:1633
const char * rig_strrmode(rmode_t mode)
Convert enum RIG_MODE to alpha string.
Definition misc.c:549
setting_t rig_parse_func(const char *s)
Convert alpha string to enum RIG_FUNC_...
Definition misc.c:820
const char * rig_strmtype(chan_type_t mtype)
Convert enum RIG_MTYPE_... to alpha string.
Definition misc.c:1783
rmode_t rig_parse_mode(const char *s)
Convert alpha string to enum RIG_MODE.
Definition misc.c:522
const char * rig_strvfop(vfo_op_t op)
Convert enum RIG_OP_... to alpha string.
Definition misc.c:1588
const char * rig_strlevel(setting_t level)
Convert enum RIG_LEVEL_... to alpha string.
Definition misc.c:1191
int rig_flush_force(hamlib_port_t *port, int flush_async_data)
Force flush of rig communication data buffers.
Definition misc.c:2261
vfo_op_t rig_parse_vfo_op(const char *s)
Convert alpha string to enum RIG_OP_...
Definition misc.c:1563
const char * rig_get_info(RIG *rig)
get general information from the radio
Definition rig.c:7950
int rig_set_vfo(RIG *rig, vfo_t vfo)
set the current VFO
Definition rig.c:3370
unsigned int vfo_t
VFO definition.
Definition rig.h:533
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:5660
int rig_send_dtmf(RIG *rig, vfo_t vfo, const char *digits)
send DTMF digits
Definition rig.c:7332
int rig_set_twiddle(RIG *rig, int seconds)
timeout (secs) to stop rigctld when VFO is manually changed
Definition rig.c:1968
struct chan_list chan_t
chan_t type
Definition rig.h:1737
unsigned int ant_t
Antenna typedef.
Definition rig.h:1004
meter_level_e
Level display meters.
Definition rig.h:1028
int rig_get_rig_info(RIG *rig, char *response, int max_response_len)
get freq/mode/width for requested VFO
Definition rig.c:8017
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:1527
int rig_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd)
get the status of the DCD
Definition rig.c:4282
enum client_e client_t
serial_parity_e
Serial parity.
Definition rig.h:348
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:5999
int rig_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
get the mode of the target VFO
Definition rig.c:3039
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:311
int rig_set_channel(RIG *rig, vfo_t vfo, const channel_t *chan)
set channel data
Definition mem.c:683
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:5748
dcd_e
Definition rig.h:669
struct cal_table cal_table_t
calibration table type
Definition rig.h:1786
hamlib_token_t rig_ext_token_lookup(RIG *rig, const char *name)
Simple lookup returning token id associated with name.
Definition ext.c:323
int rig_set_freq_callback(RIG *rig, freq_cb_t cb, rig_ptr_t arg)
set the callback for freq events
Definition event.c:374
hamlib_band_t
Band enumeration.
Definition rig.h:797
const char * hamlib_copyright2
Hamlib copyright notice.
Definition rig.c:126
int rig_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs)
get the current repeater offset
Definition rig.c:4666
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:858
int rig_set_powerstat(RIG *rig, powerstat_t status)
turn on/off the radio
Definition rig.c:6906
int rig_get_powerstat(RIG *rig, powerstat_t *status)
get the on/off status of the radio
Definition rig.c:6958
int rig_set_dcs_sql(RIG *rig, vfo_t vfo, tone_t code)
set the current DCS code
Definition tones.c:496
long hamlib_token_t
configuration token
Definition rig.h:882
serial_control_state_e
Serial control state.
Definition rig.h:370
int rig_set_mem(RIG *rig, vfo_t vfo, int ch)
set the current memory channel number
Definition mem.c:67
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:6725
setting_t rig_has_set_func(RIG *rig, setting_t func)
check ability of radio functions
Definition settings.c:468
int rig_get_vfo(RIG *rig, vfo_t *vfo)
get the current VFO
Definition rig.c:3517
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:5518
uint64_t rmode_t
Radio mode.
Definition rig.h:1381
int rig_set_vfo_callback(RIG *rig, vfo_cb_t cb, rig_ptr_t arg)
set the callback for vfo events
Definition event.c:430
shortfreq_t pbwidth_t
Definition rig.h:665
int rig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
set a radio level setting
Definition settings.c:74
int rig_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit)
get the current RIT offset
Definition rig.c:6170
int rig_cleanup(RIG *rig)
release a rig handle and free associated memory
Definition rig.c:1924
rig_type_t
Rig type flags.
Definition rig.h:380
int rig_get_mem(RIG *rig, vfo_t vfo, int *ch)
get the current memory channel number
Definition mem.c:130
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:1459
int rig_set_ext_parm(RIG *rig, hamlib_token_t token, value_t val)
set a radio parm extra parameter
Definition settings.c:923
enum rig_port_e rig_port_t
Port type.
split_t
Split mode.
Definition rig.h:462
int rig_get_vfo_list(RIG *rig, char *buf, int buflen)
get list of available vfos
Definition rig.c:8205
rptr_shift_t
Repeater shift type.
Definition rig.h:452
const char * rig_license()
get the Hamlib license
Definition rig.c:8263
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:1325
int rig_get_dcs_sql(RIG *rig, vfo_t vfo, tone_t *code)
get the current DCS code
Definition tones.c:559
scan_t rig_has_scan(RIG *rig, scan_t scan)
check availability of scanning functions
Definition rig.c:7227
client_e
Definition rig.h:751
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:8242
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:1393
int rig_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS squelch
Definition tones.c:365
ann_t
Announce.
Definition rig.h:947
int rig_set_dcs_code(RIG *rig, vfo_t vfo, tone_t code)
set the current encoding DCS code
Definition tones.c:231
int rig_set_dcd_callback(RIG *rig, dcd_cb_t cb, rig_ptr_t arg)
set the callback for dcd events
Definition event.c:486
int rig_get_channel(RIG *rig, vfo_t vfox, channel_t *chan, int read_only)
get channel data
Definition mem.c:827
int rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
get the frequency of the target VFO
Definition rig.c:2498
int rig_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
activate/de-activate functions of radio
Definition settings.c:499
int rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
get the status of the PTT
Definition rig.c:3957
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:1125
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:6799
int rig_set_bank(RIG *rig, vfo_t vfo, int bank)
set the current memory bank
Definition mem.c:193
const struct confparams * rig_ext_lookup_tok(RIG *rig, hamlib_token_t token)
lookup ext token, return pointer to confparams struct.
Definition ext.c:278
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:81
const char * rig_version()
get the Hamlib version
Definition rig.c:8273
int rig_get_ctcss_sql(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS squelch
Definition tones.c:433
FILE * rig_set_debug_file(FILE *stream)
Change the output stream from stderr to a different stream.
Definition debug.c:333
int rig_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit)
get the current XIT offset
Definition rig.c:6320
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:2700
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:544
int rig_get_parm(RIG *rig, setting_t parm, value_t *val)
get the value of a parameter
Definition settings.c:286
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:2654
rig_caps_int_e
Enumeration of rig->caps values.
Definition rig.h:2350
int rig_get_trn(RIG *rig, int *trn)
get the current transceive mode
Definition event.c:601
int rig_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs)
set the repeater offset
Definition rig.c:4589
int rig_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS sub-tone frequency
Definition tones.c:167
setting_t rig_has_set_level(RIG *rig, setting_t level)
check settable ability of level settings
Definition settings.c:350
rig_parm_e
Rig Parameters.
Definition rig.h:1158
int rig_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option)
set the antenna
Definition rig.c:6552
void rig_set_debug_time_stamp(int flag)
Enable or disable the time stamp on debugging output.
Definition debug.c:189
shortfreq_t rig_get_resolution(RIG *rig, rmode_t mode)
get the best frequency resolution of the rig
Definition rig.c:6864
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:8124
pbwidth_t rig_passband_wide(RIG *rig, rmode_t mode)
get the wide passband of a mode
Definition rig.c:3311
struct channel channel_t
Channel structure typedef.
Definition rig.h:1634
uint64_t setting_t
Setting bit mask.
Definition rig.h:1223
powerstat_t
Radio power state.
Definition rig.h:727
multicast_item_e
Multicast data items 3 different data item can be included in the multicast JSON.
Definition rig.h:1201
setting_t rig_has_get_func(RIG *rig, setting_t func)
check ability of radio functions
Definition settings.c:438
int rig_set_uplink(RIG *rig, int val)
For GPredict to avoid reading frequency on uplink VFO.
Definition rig.c:1992
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:596
int rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq)
set the split frequencies
Definition rig.c:4749
int rig_probe_all(hamlib_port_t *port, rig_probe_func_t cfunc, rig_ptr_t data)
try to guess rigs
Definition rig.c:7086
rig_errcode_e
Hamlib error codes.
Definition rig.h:196
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:181
rig_conf_e
parameter types
Definition rig.h:904
scan_t
Rig Scan operation.
Definition rig.h:866
int rig_send_voice_mem(RIG *rig, vfo_t vfo, int ch)
send voice memory content
Definition rig.c:7768
int rig_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length)
receive DTMF digits
Definition rig.c:7409
int rig_set_mode_callback(RIG *rig, mode_cb_t cb, rig_ptr_t arg)
set the callback for mode events
Definition event.c:402
int rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
set the frequency of the target VFO
Definition rig.c:2150
int rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
set PTT on/off
Definition rig.c:3621
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:661
const char * hamlib_version2
Hamlib version string.
Definition rig.c:113
double freq_t
Frequency type.
Definition rig.h:473
int rig_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch)
perform Memory/VFO operations
Definition rig.c:7260
cookie_e
Rig Cookie enumerations.
Definition rig.h:1191
int rig_send_morse(RIG *rig, vfo_t vfo, const char *msg)
send morse code
Definition rig.c:7485
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:2361
int rig_setting2idx(setting_t s)
basically convert setting_t expressed 2^n to n
Definition settings.c:982
int rig_mem_count(RIG *rig)
get memory channel count
Definition mem.c:1651
ptt_t
PTT status.
Definition rig.h:696
const chan_t * rig_lookup_mem_caps(RIG *rig, int ch)
lookup the memory type and capabilities
Definition mem.c:1586
dcd_type_e
DCD (Data Carrier Detect) type.
Definition rig.h:680
RIG * rig_init(rig_model_t rig_model)
Allocate a new RIG handle.
Definition rig.c:616
setting_t rig_has_get_parm(RIG *rig, setting_t parm)
check retrieval ability of parameter settings
Definition settings.c:380
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:131
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:727
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:516
int rig_get_conf(RIG *rig, hamlib_token_t token, char *val)
get the value of a configuration parameter
Definition conf.c:1559
struct freq_range_list freq_range_t
Frequency range.
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:8224
int rig_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS sub-tone frequency
Definition tones.c:99
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:2838
vfo_op_t
VFO operation.
Definition rig.h:773
int rig_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts)
get the current Tuning Step
Definition rig.c:6470
enum ptt_type_e ptt_type_t
PTT (Push To Talk) type.
signed long shortfreq_t
Short frequency type.
Definition rig.h:495
void rig_get_debug(enum rig_debug_level_e *debug_level)
Get the current debug level.
Definition debug.c:159
vprintf_cb_t rig_set_debug_callback(vprintf_cb_t cb, rig_ptr_t arg)
Set callback to handle debugging messages.
Definition debug.c:315
const char * rig_copyright()
get the Hamlib copyright
Definition rig.c:8283
int rig_need_debug(enum rig_debug_level_e debug_level)
Test if a given debug level is active.
Definition debug.c:175
rig_port_e
Port type.
Definition rig.h:327
int rig_wait_morse(RIG *rig, vfo_t vfo)
wait morse code
Definition rig.c:7697
int rig_close(RIG *rig)
close the communication to the rig
Definition rig.c:1750
pbwidth_t rig_passband_narrow(RIG *rig, rmode_t mode)
get the narrow passband of a mode
Definition rig.c:3258
serial_handshake_e
Serial handshake.
Definition rig.h:360
const char * rigerror(int errnum)
Add error message to debug output.
Definition rig.c:520
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:553
agc_level_e
AGC delay settings.
Definition rig.h:398
unsigned int tone_t
CTCSS and DCS type definition.
Definition rig.h:317
int rig_get_chan_all(RIG *rig, vfo_t vfo, channel_t chans[])
get all channel data
Definition mem.c:1209
int rig_set_chan_all(RIG *rig, vfo_t vfo, const channel_t chans[])
set all channel data
Definition mem.c:1166
int rig_set_vfo_opt(RIG *rig, int status)
set the vfo option for rigctld
Definition rig.c:7911
int rig_set_ptt_callback(RIG *rig, ptt_cb_t cb, rig_ptr_t arg)
set the callback for ptt events
Definition event.c:458
pbwidth_t rig_passband_normal(RIG *rig, rmode_t mode)
get the normal passband of a mode
Definition rig.c:3207
rig_debug_level_e
Hamlib debug levels.
Definition rig.h:246
#define RIG_SETTING_MAX
Maximum # of rig settings.
Definition rig.h:1229
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:231
setting_t rig_has_set_parm(RIG *rig, setting_t parm)
check settable ability of parameter settings
Definition settings.c:409
struct channel_cap channel_cap_t
Channel cap.
Definition rig.h:1676
struct s_rig RIG
Rig structure definition (see rig for details).
Definition rig.h:277
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:792
const struct confparams * rig_confparam_lookup(RIG *rig, const char *name)
lookup a confparam struct
Definition conf.c:1393
int rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit)
set the RIT
Definition rig.c:6098
hamlib_bandselect_t
Definition rig.h:817
int rig_stop_voice_mem(RIG *rig, vfo_t vfo)
stop sending voice memory
Definition rig.c:7837
int rig_get_twiddle(RIG *rig, int *seconds)
get the twiddle timeout value (secs)
Definition rig.c:2019
int rig_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts)
set the Tuning Step
Definition rig.c:6398
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:6632
int rig_open(RIG *rig)
open the communication to the rig
Definition rig.c:1040
int rig_set_parm(RIG *rig, setting_t parm, value_t val)
set a radio parameter
Definition settings.c:252
enum dcd_type_e dcd_type_t
DCD (Data Carrier Detect) type.
int rig_get_dcs_code(RIG *rig, vfo_t vfo, tone_t *code)
get the current encoding DCS code
Definition tones.c:294
hamlib_token_t rig_token_lookup(RIG *rig, const char *name)
lookup a token id
Definition conf.c:1467
int rig_stop_morse(RIG *rig, vfo_t vfo)
stop morse code
Definition rig.c:7582
ptt_type_e
PTT (Push To Talk) type.
Definition rig.h:711
setting_t rig_has_get_level(RIG *rig, setting_t level)
check retrieval ability of level settings
Definition settings.c:320
uint64_t rig_level_e
Rig Level Settings.
Definition rig.h:1070
int rig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
get the value of a level
Definition settings.c:157
const char * rigerror2(int errnum)
Get the string describing the passed error code.
Definition rig.c:492
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:1078
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:5116
int rig_reset(RIG *rig, reset_t reset)
reset the radio
Definition rig.c:7013
struct gran gran_t
gran_t type
Definition rig.h:1760
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:1331
int rig_set_trn(RIG *rig, int trn)
control the transceive mode
Definition event.c:577
vfo_op_t rig_has_vfo_op(RIG *rig, vfo_op_t op)
check retrieval ability of VFO operations
Definition rig.c:7115
int rig_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)
get the current repeater shift
Definition rig.c:4505
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:5354
int rig_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
set the repeater shift
Definition rig.c:4427
reset_t
Reset operation.
Definition rig.h:739
rig_function_e
Enumeration of all rig_ functions.
Definition rig.h:2247
int rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq)
get the current split frequencies
Definition rig.c:4939
void rig_set_debug(enum rig_debug_level_e debug_level)
Change the current debug level.
Definition debug.c:146
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:7875
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:955
int rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op)
perform Memory/VFO operations
Definition rig.c:7144
rig_status_e
Development status of the backend.
Definition rig.h:432
int rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit)
set the XIT
Definition rig.c:6248
int rig_set_conf(RIG *rig, hamlib_token_t token, const char *val)
set a radio configuration parameter
Definition conf.c:1498
void rig_debug(enum rig_debug_level_e debug_level, const char *fmt,...)
Print debugging messages through stderr by default.
Definition debug.c:205
struct cal_table_float cal_table_float_t
calibration table type for float values
Definition rig.h:1816
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:8312
rig_spectrum_mode_e
Spectrum scope modes.
Definition rig.h:1840
rig_model_t rig_probe(hamlib_port_t *port)
try to guess a rig
Definition rig.c:7058
chan_type_t
Memory channel type definition.
Definition rig.h:1689
@ RIG_PARITY_MARK
Definition rig.h:352
@ RIG_PARITY_NONE
Definition rig.h:349
@ RIG_PARITY_EVEN
Definition rig.h:351
@ RIG_PARITY_SPACE
Definition rig.h:353
@ RIG_PARITY_ODD
Definition rig.h:350
@ RIG_DCD_ON
Definition rig.h:671
@ RIG_DCD_OFF
Definition rig.h:670
@ RIG_BAND_AIR
Definition rig.h:812
@ RIG_BAND_UNUSED
Definition rig.h:811
@ RIG_BAND_20M
Definition rig.h:803
@ RIG_BAND_12M
Definition rig.h:806
@ RIG_BAND_60M
Definition rig.h:800
@ RIG_BAND_10M
Definition rig.h:807
@ RIG_BAND_430MHZ
Definition rig.h:814
@ RIG_BAND_40M
Definition rig.h:801
@ RIG_BAND_15M
Definition rig.h:805
@ RIG_BAND_GEN
Definition rig.h:809
@ RIG_BAND_30M
Definition rig.h:802
@ RIG_BAND_144MHZ
Definition rig.h:813
@ RIG_BAND_80M
Definition rig.h:799
@ RIG_BAND_MW
Definition rig.h:810
@ RIG_BAND_6M
Definition rig.h:808
@ RIG_BAND_17M
Definition rig.h:804
@ RIG_BAND_160M
Definition rig.h:798
@ RIG_SIGNAL_ON
Definition rig.h:372
@ RIG_SIGNAL_OFF
Definition rig.h:373
@ RIG_SIGNAL_UNSET
Definition rig.h:371
@ RIG_FLAG_COMPUTER
Definition rig.h:386
@ RIG_FLAG_TUNER
Definition rig.h:391
@ RIG_FLAG_SCANNER
Definition rig.h:383
@ RIG_FLAG_TRANSMITTER
Definition rig.h:382
@ RIG_FLAG_MOBILE
Definition rig.h:384
@ RIG_FLAG_TRUNKING
Definition rig.h:387
@ RIG_FLAG_APRS
Definition rig.h:388
@ RIG_FLAG_TNC
Definition rig.h:389
@ RIG_FLAG_HANDHELD
Definition rig.h:385
@ RIG_FLAG_DXCLUSTER
Definition rig.h:390
@ RIG_FLAG_RECEIVER
Definition rig.h:381
@ RIG_SPLIT_ON
Definition rig.h:464
@ RIG_SPLIT_OFF
Definition rig.h:463
@ RIG_RPT_SHIFT_PLUS
Definition rig.h:455
@ RIG_RPT_SHIFT_MINUS
Definition rig.h:454
@ RIG_RPT_SHIFT_NONE
Definition rig.h:453
@ RIG_CLIENT_WSJTX
Definition rig.h:753
@ RIG_CLIENT_UNKNOWN
Definition rig.h:752
@ RIG_CLIENT_GPREDICT
Definition rig.h:754
@ RIG_ANN_RXMODE
Definition rig.h:951
@ RIG_ANN_OFF
Definition rig.h:949
@ RIG_ANN_ENG
Definition rig.h:953
@ RIG_ANN_FREQ
Definition rig.h:950
@ RIG_ANN_NONE
Definition rig.h:948
@ RIG_ANN_CW
Definition rig.h:952
@ RIG_ANN_JAP
Definition rig.h:954
@ RIG_PARM_BEEP
Definition rig.h:1163
@ RIG_PARM_AFIF_LAN
Definition rig.h:1171
@ RIG_PARM_AFIF_WLAN
Definition rig.h:1172
@ RIG_PARM_BANDSELECT
Definition rig.h:1169
@ RIG_PARM_TIME
Definition rig.h:1164
@ RIG_PARM_SCREENSAVER
Definition rig.h:1167
@ RIG_PARM_ANN
Definition rig.h:1160
@ RIG_PARM_AFIF
Definition rig.h:1168
@ RIG_PARM_NONE
Definition rig.h:1159
@ RIG_PARM_KEYERTYPE
Definition rig.h:1170
@ RIG_PARM_AFIF_ACC
Definition rig.h:1173
@ RIG_PARM_BACKLIGHT
Definition rig.h:1162
@ RIG_PARM_KEYLIGHT
Definition rig.h:1166
@ RIG_PARM_BAT
Definition rig.h:1165
@ RIG_PARM_APO
Definition rig.h:1161
@ RIG_POWER_OPERATE
Definition rig.h:731
@ RIG_POWER_UNKNOWN
Definition rig.h:732
@ RIG_POWER_STANDBY
Definition rig.h:730
@ RIG_POWER_OFF
Definition rig.h:728
@ RIG_POWER_ON
Definition rig.h:729
@ RIG_ENIMPL
Definition rig.h:201
@ RIG_ECONF
Definition rig.h:199
@ RIG_ELIMIT
Definition rig.h:218
@ RIG_ENAVAIL
Definition rig.h:208
@ RIG_OK
Definition rig.h:197
@ RIG_EPROTO
Definition rig.h:205
@ RIG_EINTERNAL
Definition rig.h:204
@ RIG_EDOM
Definition rig.h:214
@ RIG_EIO
Definition rig.h:203
@ RIG_EVFO
Definition rig.h:213
@ RIG_ETIMEOUT
Definition rig.h:202
@ RIG_ENOMEM
Definition rig.h:200
@ RIG_EARG
Definition rig.h:212
@ RIG_EPOWER
Definition rig.h:217
@ RIG_EACCESS
Definition rig.h:219
@ RIG_ERJCTED
Definition rig.h:206
@ RIG_ESECURITY
Definition rig.h:216
@ RIG_BUSERROR
Definition rig.h:210
@ RIG_BUSBUSY
Definition rig.h:211
@ RIG_EDEPRECATED
Definition rig.h:215
@ RIG_ENTARGET
Definition rig.h:209
@ RIG_EINVAL
Definition rig.h:198
@ RIG_ETRUNC
Definition rig.h:207
@ RIG_CONF_STRING
Definition rig.h:905
@ RIG_CONF_BUTTON
Definition rig.h:909
@ RIG_CONF_CHECKBUTTON
Definition rig.h:908
@ RIG_CONF_BINARY
Definition rig.h:910
@ RIG_CONF_COMBO
Definition rig.h:906
@ RIG_CONF_INT
Definition rig.h:911
@ RIG_CONF_NUMERIC
Definition rig.h:907
@ RIG_SCAN_DELTA
Definition rig.h:872
@ RIG_SCAN_PLT
Definition rig.h:874
@ RIG_SCAN_PROG
Definition rig.h:871
@ RIG_SCAN_MEM
Definition rig.h:868
@ RIG_SCAN_NONE
Definition rig.h:867
@ RIG_SCAN_VFO
Definition rig.h:873
@ RIG_SCAN_PRIO
Definition rig.h:870
@ RIG_SCAN_SLCT
Definition rig.h:869
@ RIG_SCAN_STOP
Definition rig.h:875
@ RIG_COOKIE_RENEW
Definition rig.h:1194
@ RIG_COOKIE_RELEASE
Definition rig.h:1193
@ RIG_COOKIE_GET
Definition rig.h:1192
@ RIG_PTT_OFF
Definition rig.h:697
@ RIG_PTT_ON_DATA
Definition rig.h:700
@ RIG_PTT_ON_MIC
Definition rig.h:699
@ RIG_PTT_ON
Definition rig.h:698
@ RIG_DCD_SERIAL_CTS
Definition rig.h:684
@ RIG_DCD_PARALLEL
Definition rig.h:686
@ RIG_DCD_CM108
Definition rig.h:687
@ RIG_DCD_RIG
Definition rig.h:682
@ RIG_DCD_GPION
Definition rig.h:689
@ RIG_DCD_NONE
Definition rig.h:681
@ RIG_DCD_SERIAL_DSR
Definition rig.h:683
@ RIG_DCD_GPIO
Definition rig.h:688
@ RIG_DCD_SERIAL_CAR
Definition rig.h:685
@ RIG_OP_CPY
Definition rig.h:775
@ RIG_OP_DOWN
Definition rig.h:781
@ RIG_OP_TO_VFO
Definition rig.h:778
@ RIG_OP_TUNE
Definition rig.h:786
@ RIG_OP_FROM_VFO
Definition rig.h:777
@ RIG_OP_MCL
Definition rig.h:779
@ RIG_OP_RIGHT
Definition rig.h:785
@ RIG_OP_UP
Definition rig.h:780
@ RIG_OP_TOGGLE
Definition rig.h:787
@ RIG_OP_NONE
Definition rig.h:774
@ RIG_OP_BAND_UP
Definition rig.h:782
@ RIG_OP_BAND_DOWN
Definition rig.h:783
@ RIG_OP_LEFT
Definition rig.h:784
@ RIG_OP_XCHG
Definition rig.h:776
@ RIG_PORT_PACKET
Definition rig.h:332
@ RIG_PORT_UDP_NETWORK
Definition rig.h:338
@ RIG_PORT_NONE
Definition rig.h:328
@ RIG_PORT_CM108
Definition rig.h:339
@ RIG_PORT_GPIO
Definition rig.h:340
@ RIG_PORT_ULTRA
Definition rig.h:334
@ RIG_PORT_GPION
Definition rig.h:341
@ RIG_PORT_SERIAL
Definition rig.h:329
@ RIG_PORT_PARALLEL
Definition rig.h:336
@ RIG_PORT_NETWORK
Definition rig.h:330
@ RIG_PORT_DEVICE
Definition rig.h:331
@ RIG_PORT_RPC
Definition rig.h:335
@ RIG_PORT_DTMF
Definition rig.h:333
@ RIG_PORT_USB
Definition rig.h:337
@ RIG_HANDSHAKE_HARDWARE
Definition rig.h:363
@ RIG_HANDSHAKE_NONE
Definition rig.h:361
@ RIG_HANDSHAKE_XONXOFF
Definition rig.h:362
@ RIG_AGC_NONE
Definition rig.h:408
@ RIG_AGC_ON
Definition rig.h:407
@ RIG_AGC_USER
Definition rig.h:403
@ RIG_DEBUG_ERR
Definition rig.h:249
@ RIG_DEBUG_BUG
Definition rig.h:248
@ RIG_DEBUG_WARN
Definition rig.h:250
@ RIG_DEBUG_TRACE
Definition rig.h:252
@ RIG_DEBUG_VERBOSE
Definition rig.h:251
@ RIG_DEBUG_CACHE
Definition rig.h:253
@ RIG_DEBUG_NONE
Definition rig.h:247
@ RIG_BANDSELECT_600M
Definition rig.h:820
@ RIG_BANDSELECT_1_25M
Definition rig.h:838
@ RIG_BANDSELECT_GEN
Definition rig.h:833
@ RIG_BANDSELECT_17M
Definition rig.h:827
@ RIG_BANDSELECT_6M
Definition rig.h:831
@ RIG_BANDSELECT_9CM
Definition rig.h:843
@ RIG_BANDSELECT_160M
Definition rig.h:821
@ RIG_BANDSELECT_AIR
Definition rig.h:835
@ RIG_BANDSELECT_20M
Definition rig.h:826
@ RIG_BANDSELECT_MW
Definition rig.h:834
@ RIG_BANDSELECT_2200M
Definition rig.h:819
@ RIG_BANDSELECT_23CM
Definition rig.h:841
@ RIG_BANDSELECT_UNUSED
Definition rig.h:818
@ RIG_BANDSELECT_33CM
Definition rig.h:840
@ RIG_BANDSELECT_60M
Definition rig.h:823
@ RIG_BANDSELECT_3CM
Definition rig.h:845
@ RIG_BANDSELECT_4M
Definition rig.h:836
@ RIG_BANDSELECT_12M
Definition rig.h:829
@ RIG_BANDSELECT_WFM
Definition rig.h:832
@ RIG_BANDSELECT_5CM
Definition rig.h:844
@ RIG_BANDSELECT_15M
Definition rig.h:828
@ RIG_BANDSELECT_30M
Definition rig.h:825
@ RIG_BANDSELECT_70CM
Definition rig.h:839
@ RIG_BANDSELECT_40M
Definition rig.h:824
@ RIG_BANDSELECT_80M
Definition rig.h:822
@ RIG_BANDSELECT_13CM
Definition rig.h:842
@ RIG_BANDSELECT_2M
Definition rig.h:837
@ RIG_BANDSELECT_10M
Definition rig.h:830
@ RIG_PTT_RIG
Definition rig.h:713
@ RIG_PTT_RIG_MICDATA
Definition rig.h:717
@ RIG_PTT_SERIAL_DTR
Definition rig.h:714
@ RIG_PTT_NONE
Definition rig.h:712
@ RIG_PTT_PARALLEL
Definition rig.h:716
@ RIG_PTT_GPION
Definition rig.h:720
@ RIG_PTT_GPIO
Definition rig.h:719
@ RIG_PTT_CM108
Definition rig.h:718
@ RIG_PTT_SERIAL_RTS
Definition rig.h:715
@ RIG_RESET_MCALL
Definition rig.h:743
@ RIG_RESET_MASTER
Definition rig.h:744
@ RIG_RESET_NONE
Definition rig.h:740
@ RIG_RESET_VFO
Definition rig.h:742
@ RIG_RESET_SOFT
Definition rig.h:741
@ RIG_STATUS_STABLE
Definition rig.h:436
@ RIG_STATUS_BUGGY
Definition rig.h:437
@ RIG_STATUS_UNTESTED
Definition rig.h:434
@ RIG_STATUS_BETA
Definition rig.h:435
@ RIG_STATUS_ALPHA
Definition rig.h:433
@ RIG_SPECTRUM_MODE_CENTER_SCROLL
Definition rig.h:1844
@ RIG_SPECTRUM_MODE_FIXED_SCROLL
Definition rig.h:1845
@ RIG_SPECTRUM_MODE_FIXED
Definition rig.h:1843
@ RIG_SPECTRUM_MODE_CENTER
Definition rig.h:1842
@ RIG_MTYPE_VOICE
Definition rig.h:1698
@ RIG_MTYPE_PRIO
Definition rig.h:1697
@ RIG_MTYPE_EDGE
Definition rig.h:1692
@ RIG_MTYPE_MEM
Definition rig.h:1691
@ RIG_MTYPE_CALL
Definition rig.h:1693
@ RIG_MTYPE_SAT
Definition rig.h:1695
@ RIG_MTYPE_MORSE
Definition rig.h:1699
@ RIG_MTYPE_MEMOPAD
Definition rig.h:1694
@ RIG_MTYPE_SPLIT
Definition rig.h:1700
@ RIG_MTYPE_NONE
Definition rig.h:1690
@ RIG_MTYPE_BAND
Definition rig.h:1696
uint32_t rig_model_t
Definition riglist.h:1161
int locator2longlat(double *longitude, double *latitude, const char *locator)
Convert QRA locator (Maidenhead grid square) to Longitude/Latitude.
Definition locator.c:450
int longlat2locator(double longitude, double latitude, char *locator, int pair_count)
Convert longitude/latitude to QRA locator (Maidenhead grid square).
Definition locator.c:544
Hamlib port data structures.
int rig_send_raw(RIG *rig, const unsigned char *send, int send_len, unsigned char *reply, int reply_len, unsigned char *term)
Send verbatim data.
Definition rig.c:8930
void * rig_data_pointer(RIG *rig, rig_ptrx_t idx)
Get the address of a Hamlib data structure.
Definition rig.c:9116
Hamlib rig state data structure.
Hamlib rig (radio) model definitions.
Calibration table struct for float values.
Definition rig.h:1796
float val
Definition rig.h:1800
int size
Definition rig.h:1797
struct cal_table_float::@260357335022157173346240004242231066315222212311 table[HAMLIB_MAX_CAL_LENGTH]
int raw
Definition rig.h:1799
Calibration table struct.
Definition rig.h:1766
int val
Definition rig.h:1770
struct cal_table::@121150301016022276071153215244171315045055310231 table[HAMLIB_MAX_CAL_LENGTH]
int raw
Definition rig.h:1769
int size
Definition rig.h:1767
Memory channel list definition.
Definition rig.h:1717
int startc
Definition rig.h:1718
chan_type_t type
Definition rig.h:1720
channel_cap_t mem_caps
Definition rig.h:1721
int endc
Definition rig.h:1719
Channel capability definition.
Definition rig.h:1641
unsigned tx_vfo
Definition rig.h:1654
unsigned tx_freq
Definition rig.h:1649
unsigned mode
Definition rig.h:1646
unsigned dcs_code
Definition rig.h:1664
unsigned rit
Definition rig.h:1658
unsigned dcs_sql
Definition rig.h:1665
unsigned rptr_offs
Definition rig.h:1656
unsigned bank_num
Definition rig.h:1642
setting_t levels
Definition rig.h:1661
unsigned width
Definition rig.h:1647
unsigned rptr_shift
Definition rig.h:1655
unsigned tx_width
Definition rig.h:1651
unsigned ctcss_sql
Definition rig.h:1663
unsigned tx_mode
Definition rig.h:1650
unsigned freq
Definition rig.h:1645
setting_t funcs
Definition rig.h:1660
unsigned ctcss_tone
Definition rig.h:1662
unsigned tag
Definition rig.h:1670
unsigned ext_levels
Definition rig.h:1669
unsigned vfo
Definition rig.h:1643
unsigned ant
Definition rig.h:1644
unsigned split
Definition rig.h:1653
unsigned scan_group
Definition rig.h:1666
unsigned flags
Definition rig.h:1667
unsigned tuning_step
Definition rig.h:1657
unsigned xit
Definition rig.h:1659
unsigned channel_desc
Definition rig.h:1668
Channel structure.
Definition rig.h:1596
shortfreq_t tuning_step
Definition rig.h:1614
rmode_t mode
Definition rig.h:1602
tone_t ctcss_tone
Definition rig.h:1619
pbwidth_t tx_width
Definition rig.h:1607
vfo_t vfo
Definition rig.h:1599
value_t levels[64]
Definition rig.h:1618
shortfreq_t rptr_offs
Definition rig.h:1613
vfo_t tx_vfo
Definition rig.h:1610
tone_t dcs_code
Definition rig.h:1621
setting_t funcs
Definition rig.h:1617
struct ext_list * ext_levels
Definition rig.h:1626
tone_t ctcss_sql
Definition rig.h:1620
shortfreq_t xit
Definition rig.h:1616
int bank_num
Definition rig.h:1598
pbwidth_t width
Definition rig.h:1603
freq_t freq
Definition rig.h:1601
char tag[32]
Definition rig.h:1628
rptr_shift_t rptr_shift
Definition rig.h:1612
shortfreq_t rit
Definition rig.h:1615
char channel_desc[HAMLIB_MAXCHANDESC]
Definition rig.h:1625
rmode_t tx_mode
Definition rig.h:1606
split_t split
Definition rig.h:1609
freq_t tx_freq
Definition rig.h:1605
ant_t ant
Definition rig.h:1600
unsigned int flags
Definition rig.h:1624
int scan_group
Definition rig.h:1623
int channel_num
Definition rig.h:1597
tone_t dcs_sql
Definition rig.h:1622
Configuration parameter structure.
Definition rig.h:922
const char * combostr[RIG_COMBO_MAX]
Definition rig.h:936
hamlib_token_t token
Definition rig.h:923
const char * tooltip
Definition rig.h:926
const char * dflt
Definition rig.h:927
float min
Definition rig.h:931
union confparams::@072331312356070142263302032212167270075252253212 u
float step
Definition rig.h:933
struct confparams::@072331312356070142263302032212167270075252253212::@336312367261005251226145252043311256152262324155 n
struct confparams::@072331312356070142263302032212167270075252253212::@312236002162120057131210122022260351075305344256 c
const char * label
Definition rig.h:925
float max
Definition rig.h:932
const char * name
Definition rig.h:924
enum rig_conf_e type
Definition rig.h:928
Definition rig.h:1900
Definition rig.h:1893
Extension attribute definition.
Definition rig.h:1579
hamlib_token_t token
Definition rig.h:1580
value_t val
Definition rig.h:1581
Filter definition.
Definition rig.h:1546
rmode_t modes
Definition rig.h:1547
pbwidth_t width
Definition rig.h:1548
Frequency range.
Definition rig.h:1479
freq_t startf
Definition rig.h:1480
freq_t endf
Definition rig.h:1481
int low_power
Definition rig.h:1483
char * label
Definition rig.h:1487
ant_t ant
Definition rig.h:1486
int high_power
Definition rig.h:1484
vfo_t vfo
Definition rig.h:1485
rmode_t modes
Definition rig.h:1482
level/parm granularity definition
Definition rig.h:1751
value_t max
Definition rig.h:1753
value_t step
Definition rig.h:1754
value_t min
Definition rig.h:1752
Definition port.h:137
Port definition.
Definition port.h:55
Multicast data items the are unique per rig instantiation This is meant for internal Hamlib use only.
Definition rig.h:2560
Rig cache data.
Definition rig.h:2480
Rig cache data.
Definition cache.h:45
Callback functions and args for rig event.
Definition rig.h:2640
rig_ptr_t mode_arg
Definition rig.h:2644
ptt_cb_t ptt_event
Definition rig.h:2647
vfo_cb_t vfo_event
Definition rig.h:2645
spectrum_cb_t spectrum_event
Definition rig.h:2653
mode_cb_t mode_event
Definition rig.h:2643
rig_ptr_t freq_arg
Definition rig.h:2642
rig_ptr_t spectrum_arg
Definition rig.h:2654
rig_ptr_t ptt_arg
Definition rig.h:2648
rig_ptr_t dcd_arg
Definition rig.h:2650
dcd_cb_t dcd_event
Definition rig.h:2649
rig_ptr_t pltune_arg
Definition rig.h:2652
pltune_cb_t pltune
Definition rig.h:2651
rig_ptr_t vfo_arg
Definition rig.h:2646
freq_cb_t freq_event
Definition rig.h:2641
Rig data structure.
Definition rig.h:1935
int write_delay
Definition rig.h:1955
setting_t has_set_func
Definition rig.h:1961
enum serial_handshake_e serial_handshake
Definition rig.h:1953
struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ]
Definition rig.h:2014
int retry
Definition rig.h:1958
const char * model_name
Definition rig.h:1937
int attenuator[HAMLIB_MAXDBLSTSIZ]
Definition rig.h:1979
freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ]
Definition rig.h:2011
int serial_data_bits
Definition rig.h:1950
const char * clone_combo_get
Definition rig.h:2216
const char * version
Definition rig.h:1939
int serial_rate_max
Definition rig.h:1949
int targetable_vfo
Definition rig.h:1991
cal_table_float_t swr_cal
Definition rig.h:2018
ptt_type_t ptt_type
Definition rig.h:1944
const char * clone_combo_set
Definition rig.h:2215
cal_table_float_t vd_meter_cal
Definition rig.h:2022
int serial_stop_bits
Definition rig.h:1951
struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES]
Definition rig.h:2028
int * ext_tokens
Definition rig.h:1973
gran_t parm_gran[64]
Definition rig.h:1968
const char * macro_name
Definition rig.h:2217
dcd_type_t dcd_type
Definition rig.h:1945
int async_data_supported
Definition rig.h:2219
enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS]
Definition rig.h:1985
chan_t chan_list[HAMLIB_CHANLSTSIZ]
Definition rig.h:1997
int preamp[HAMLIB_MAXDBLSTSIZ]
Definition rig.h:1978
const rig_ptr_t priv
Definition rig.h:2032
const struct confparams * cfgparams
Definition rig.h:2031
enum rig_status_e status
Definition rig.h:1941
freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ]
Definition rig.h:2012
tone_t * dcs_list
Definition rig.h:1976
shortfreq_t max_rit
Definition rig.h:1980
const struct confparams * extlevels
Definition rig.h:1971
const char * copyright
Definition rig.h:1940
shortfreq_t max_xit
Definition rig.h:1981
setting_t has_set_level
Definition rig.h:1963
rig_model_t rig_model
Definition rig.h:1936
short morse_qsize
Definition rig.h:2236
cal_table_float_t rfpower_meter_cal
Definition rig.h:2020
setting_t has_get_parm
Definition rig.h:1964
int chan_desc_sz
Definition rig.h:1995
enum serial_parity_e serial_parity
Definition rig.h:1952
freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ]
Definition rig.h:2003
int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ]
Definition rig.h:2029
shortfreq_t max_ifshift
Definition rig.h:1982
cal_table_float_t comp_meter_cal
Definition rig.h:2021
rig_port_t port_type
Definition rig.h:1946
short timeout_retry
Definition rig.h:2235
const char * mfg_name
Definition rig.h:1938
tone_t * ctcss_list
Definition rig.h:1975
struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES]
Definition rig.h:2025
freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ]
Definition rig.h:2009
scan_t scan_ops
Definition rig.h:1990
cal_table_float_t alc_cal
Definition rig.h:2019
freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ]
Definition rig.h:2005
setting_t has_set_parm
Definition rig.h:1965
vfo_op_t vfo_ops
Definition rig.h:1989
setting_t has_get_func
Definition rig.h:1960
ann_t announces
Definition rig.h:1987
const struct confparams * extparms
Definition rig.h:1970
struct filter_list filters[HAMLIB_FLTLSTSIZ]
Definition rig.h:2015
int post_write_delay
Definition rig.h:1956
int transceive
Definition rig.h:1992
enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES]
Definition rig.h:2026
int timeout
Definition rig.h:1957
freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS]
Definition rig.h:2027
freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ]
Definition rig.h:2004
cal_table_t str_cal
Definition rig.h:2017
cal_table_float_t id_meter_cal
Definition rig.h:2023
int bank_qty
Definition rig.h:1994
freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ]
Definition rig.h:2007
int rig_type
Definition rig.h:1943
setting_t has_get_level
Definition rig.h:1962
const struct confparams * extfuncs
Definition rig.h:1972
gran_t level_gran[64]
Definition rig.h:1967
freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ]
Definition rig.h:2010
int agc_level_count
Definition rig.h:1984
int serial_rate_min
Definition rig.h:1948
freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ]
Definition rig.h:2008
freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ]
Definition rig.h:2006
Spectrum scope averaging modes.
Definition rig.h:1852
Represents a single line of rig spectrum scope FFT data.
Definition rig.h:1869
size_t spectrum_data_length
Definition rig.h:1885
freq_t low_edge_freq
Definition rig.h:1882
int data_level_min
Definition rig.h:1872
int id
Definition rig.h:1870
enum rig_spectrum_mode_e spectrum_mode
Definition rig.h:1877
double signal_strength_max
Definition rig.h:1875
freq_t center_freq
Definition rig.h:1879
freq_t span_freq
Definition rig.h:1880
double signal_strength_min
Definition rig.h:1874
unsigned char * spectrum_data
Definition rig.h:1886
int data_level_max
Definition rig.h:1873
freq_t high_edge_freq
Definition rig.h:1883
Spectrum scope.
Definition rig.h:1832
Deprecated Rig state containing live data and customized fields.
Definition rig_state.h:263
Rig state containing live data and customized fields.
Definition rig_state.h:61
The Rig structure.
Definition rig.h:2668
struct rig_callbacks callbacks
Definition rig.h:2672
struct rig_state_deprecated state_deprecated
Definition rig.h:2671
struct rig_state state
Definition rig.h:2674
struct rig_caps * caps
Definition rig.h:2669
struct rig_cache * cache_addr
Definition rig.h:2678
Tuning step definition.
Definition rig.h:1511
rmode_t modes
Definition rig.h:1512
shortfreq_t ts
Definition rig.h:1513
Universal approach for passing values.
Definition rig.h:1047
unsigned int u
Definition rig.h:1049
char * s
Definition rig.h:1051
float f
Definition rig.h:1050
const char * cs
Definition rig.h:1052
signed int i
Definition rig.h:1048