Hamlib 4.7~git
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",spaces(STATE(rig)->depth), __FILE__, __LINE__)
39#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
40
41#include <stdio.h>
42#include <stdarg.h>
43#include <string.h>
44#include <inttypes.h>
45#include <time.h>
46
47// to stop warnings about including winsock2.h before windows.h
48#if defined(_WIN32)
49#include <winsock2.h>
50#include <windows.h>
51#include <ws2tcpip.h>
52#else
53//#include <sys/socket.h> // doesn't seem we need this
54#include <netinet/in.h>
55//#include <arpa/inet.h>
56#endif
57
58// mingw64 still shows __TIMESIZE != 64
59// need to do more testing
60#if 0
61#if __TIMESIZE != 64
62#warning TIMESIZE != 64 -- Please report your OS system to hamlib-developer@lists.sourceforge.net
63#endif
64#endif
65
66// For MSVC install the NUGet pthread package
67#if defined(_MSC_VER)
68#define HAVE_STRUCT_TIMESPEC
69#endif
70#include <pthread.h>
71
72/* Rig list is in a separate file so as not to mess up w/ this one */
73#include <hamlib/riglist.h>
74//#include <hamlib/config.h>
75
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
172// FIFO currently used for send_morse queue
173#define HAMLIB_FIFO_SIZE 1024
174
175typedef struct
176{
177 char data[HAMLIB_FIFO_SIZE];
178 int head;
179 int tail;
180 int flush; // flush flag for stop_morse
181 pthread_mutex_t mutex;
182} FIFO_RIG;
183
184
189// cookie is 26-char time code plus 10-char (2^31-1) random number
190#define HAMLIB_COOKIE_SIZE 37
191extern int cookie_use; // this is global as once one client requests it everybody needs to honor it
192extern int skip_init; // allow rigctl to skip any radio commands at startup
193
195extern HAMLIB_EXPORT_VAR(const char) hamlib_version[];
196extern HAMLIB_EXPORT_VAR(const char) hamlib_copyright[];
197extern HAMLIB_EXPORT_VAR(const char *) hamlib_version2;
198extern HAMLIB_EXPORT_VAR(const char *) hamlib_copyright2;
200
235
241#define RIG_IS_SOFT_ERRCODE(errcode) (errcode == -RIG_EINVAL || errcode == -RIG_ENIMPL || errcode == -RIG_ERJCTED \
242 || errcode == -RIG_ETRUNC || errcode == -RIG_ENAVAIL || errcode == -RIG_ENTARGET \
243 || errcode == -RIG_EVFO || errcode == -RIG_EDOM || errcode == -RIG_EDEPRECATED \
244 || errcode == -RIG_ESECURITY || errcode == -RIG_EPOWER)
245
249#define NETRIGCTL_RET "RPRT "
250
251
268
269
270/* --------------- Rig capabilities -----------------*/
271
272/* Forward struct references
273 * may also include structures defined elsewhere,
274 * but pointed to by rig
275 */
276
277struct rig;
278struct rig_state;
279struct rig_cache;
280struct hamlib_port;
281typedef struct hamlib_port hamlib_port_t;
282//---Start cut here---
285//---End cut here---
286
290typedef struct s_rig RIG;
291
293#define HAMLIB_RIGNAMSIZ 30
294#define HAMLIB_RIGVERSIZ 8
295#define HAMLIB_FILPATHLEN 512
296#define HAMLIB_FRQRANGESIZ 30
297#define HAMLIB_MAXCHANDESC 30 /* describe channel eg: "WWV 5 MHz" */
298#define HAMLIB_TSLSTSIZ 20 /* max tuning step list size, zero ended */
299#define HAMLIB_FLTLSTSIZ 60 /* max mode/filter list size, zero ended */
300#define HAMLIB_MAXDBLSTSIZ 8 /* max preamp/att levels supported, zero ended */
301#define HAMLIB_CHANLSTSIZ 16 /* max mem_list size, zero ended */
302#define HAMLIB_MAX_AGC_LEVELS 8 /* max AGC levels supported */
303#define HAMLIB_MAX_SPECTRUM_SCOPES 4 /* max number of spectrum scopes supported */
304#define HAMLIB_MAX_SPECTRUM_MODES 5 /* max number of spectrum modes supported */
305#define HAMLIB_MAX_SPECTRUM_AVG_MODES 12 /* max number of spectrum averaging modes supported */
306#define HAMLIB_MAX_SPECTRUM_SPANS 20 /* max number of spectrum modes supported */
307#define HAMLIB_MAX_SPECTRUM_DATA 2048 /* max number of data bytes in a single spectrum line */
308#define HAMLIB_MAX_CAL_LENGTH 32 /* max calibration plots in cal_table_t */
309#define HAMLIB_MAX_MODES 63
310#define HAMLIB_MAX_VFOS 31
311#define HAMLIB_MAX_ROTORS 31
312#define HAMLIB_MAX_VFO_OPS 31
313#define HAMLIB_MAX_RSCANS 31
314#define HAMLIB_MAX_SNAPSHOT_PACKET_SIZE 16384 /* maximum number of bytes in a UDP snapshot packet */
316
317
328typedef unsigned int tone_t;
329#define CTCSS_LIST_SIZE 60
330#define DCS_LIST_SIZE 128
331
332
354
355
366
367
376
377
386
387
391typedef enum {
392 RIG_FLAG_RECEIVER = (1 << 1),
394 RIG_FLAG_SCANNER = (1 << 3),
395 RIG_FLAG_MOBILE = (1 << 4),
396 RIG_FLAG_HANDHELD = (1 << 5),
397 RIG_FLAG_COMPUTER = (1 << 6),
398 RIG_FLAG_TRUNKING = (1 << 7),
399 RIG_FLAG_APRS = (1 << 8),
400 RIG_FLAG_TNC = (1 << 9),
401 RIG_FLAG_DXCLUSTER = (1 << 10),
402 RIG_FLAG_TUNER = (1 << 11)
403} rig_type_t;
404
408/* TODO: kill me, and replace by real AGC delay */
410 RIG_AGC_OFF = 0,
411 RIG_AGC_SUPERFAST,
412 RIG_AGC_FAST,
413 RIG_AGC_SLOW,
415 RIG_AGC_MEDIUM,
416 RIG_AGC_AUTO,
417 RIG_AGC_LONG,
420};
421
422
424#define RIG_FLAG_TRANSCEIVER (RIG_FLAG_RECEIVER|RIG_FLAG_TRANSMITTER)
425#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)
426
427#define RIG_TYPE_OTHER 0
428#define RIG_TYPE_TRANSCEIVER RIG_FLAG_TRANSCEIVER
429#define RIG_TYPE_HANDHELD (RIG_FLAG_TRANSCEIVER|RIG_FLAG_HANDHELD)
430#define RIG_TYPE_MOBILE (RIG_FLAG_TRANSCEIVER|RIG_FLAG_MOBILE)
431#define RIG_TYPE_RECEIVER RIG_FLAG_RECEIVER
432#define RIG_TYPE_PCRECEIVER (RIG_FLAG_COMPUTER|RIG_FLAG_RECEIVER)
433#define RIG_TYPE_SCANNER (RIG_FLAG_SCANNER|RIG_FLAG_RECEIVER)
434#define RIG_TYPE_TRUNKSCANNER (RIG_TYPE_SCANNER|RIG_FLAG_TRUNKING)
435#define RIG_TYPE_COMPUTER (RIG_FLAG_TRANSCEIVER|RIG_FLAG_COMPUTER)
436#define RIG_TYPE_TUNER RIG_FLAG_TUNER
438
439
449 /* RIG_STATUS_NEW * *!< Initial release of code
450 * !! Use of RIG_STATUS_NEW is deprecated. Do not use it anymore */
451};
452
457#define RIG_STATUS_NEW RIG_STATUS_UNTESTED
458
459
468
469
473typedef enum {
476} split_t;
477
478
484typedef double freq_t;
485
489#define PRIfreq ".0f"
490
494#define SCNfreq "lf"
498#define FREQFMT SCNfreq
499
500
506typedef signed long shortfreq_t;
507
509#define Hz(f) ((freq_t)(f))
511#define kHz(f) ((freq_t)((f)*(freq_t)1000))
513#define MHz(f) ((freq_t)((f)*(freq_t)1000000))
515#define GHz(f) ((freq_t)((f)*(freq_t)1000000000))
516
518#define s_Hz(f) ((shortfreq_t)(f))
520#define s_kHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000))
522#define s_MHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000))
524#define s_GHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000000))
525
527#define RIG_FREQ_NONE Hz(0)
528
529
544typedef unsigned int vfo_t;
545
547
548#define RIG_VFO_N(n) (1u<<(n))
549
551#define RIG_VFO_NONE 0
552
554#define RIG_VFO_A RIG_VFO_N(0)
555
557#define RIG_VFO_B RIG_VFO_N(1)
558
560#define RIG_VFO_C RIG_VFO_N(2)
561
562// Any addition VFOS need to go from 3-20
563// To maintain backward compatibility these values cannot change
564
566#define RIG_VFO_SUB_A RIG_VFO_N(21)
567
569#define RIG_VFO_SUB_B RIG_VFO_N(22)
570
572#define RIG_VFO_SUB_C RIG_VFO_N(3)
573
575#define RIG_VFO_MAIN_A RIG_VFO_N(23)
576
578#define RIG_VFO_MAIN_B RIG_VFO_N(24)
579
581#define RIG_VFO_MAIN_C RIG_VFO_N(4)
582
584#define RIG_VFO_OTHER RIG_VFO_N(5)
585
587#define RIG_VFO_SUB RIG_VFO_N(25)
588
590#define RIG_VFO_MAIN RIG_VFO_N(26)
591
593#define RIG_VFO_VFO RIG_VFO_N(27)
594
596#define RIG_VFO_MEM RIG_VFO_N(28)
597
599#define RIG_VFO_CURR RIG_VFO_N(29)
600
602#define RIG_VFO_TX_FLAG RIG_VFO_N(30)
603
605#define RIG_VFO_ALL RIG_VFO_N(31)
606
607// we can also use RIG_VFO_N(31) if needed
608
609// Misc VFO Macros
610
612#define RIG_VFO_TX_VFO(v) ((v)|RIG_VFO_TX_FLAG)
613
615#define RIG_VFO_TX RIG_VFO_TX_VFO(RIG_VFO_CURR)
616
618#define RIG_VFO_RX RIG_VFO_CURR
619
620
621/*
622 * targetable bitfields, for internal use.
623 * In rig.c lack of a flag will cause a VFO change if needed
624 * So setting this flag will mean the backend handles any VFO needs
625 * For many rigs RITXIT, PTT, MEM, and BANK are non-VFO commands so need these flags to avoid unnecessary VFO swapping
626 */
628#define RIG_TARGETABLE_NONE 0
629#define RIG_TARGETABLE_FREQ (1<<0)
630#define RIG_TARGETABLE_MODE (1<<1) // mode by vfo or same mode on both vfos
631#define RIG_TARGETABLE_PURE (1<<2) // deprecated -- not used -- reuse it
632#define RIG_TARGETABLE_TONE (1<<3)
633#define RIG_TARGETABLE_FUNC (1<<4)
634#define RIG_TARGETABLE_LEVEL (1<<5)
635#define RIG_TARGETABLE_RITXIT (1<<6)
636#define RIG_TARGETABLE_PTT (1<<7)
637#define RIG_TARGETABLE_MEM (1<<8)
638#define RIG_TARGETABLE_BANK (1<<9)
639#define RIG_TARGETABLE_ANT (1<<10)
640#define RIG_TARGETABLE_ROOFING (1<<11) // roofing filter targetable by VFO
641#define RIG_TARGETABLE_SPECTRUM (1<<12) // spectrum scope targetable by VFO
642#define RIG_TARGETABLE_BAND (1<<13) // Band select -- e.g. Yaesu BS command
643#define RIG_TARGETABLE_COMMON (RIG_TARGETABLE_RITXIT | RIG_TARGETABLE_PTT | RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK)
644#define RIG_TARGETABLE_ALL 0x7fffffff
646//
647//
648// Newer Icoms like the 9700 and 910 have VFOA/B on both Main & Sub
649// Compared to older rigs which have one or the other
650// So we need to distinguish between them
652#define VFO_HAS_A_B ((STATE(rig)->vfo_list & (RIG_VFO_A|RIG_VFO_B)) == (RIG_VFO_A|RIG_VFO_B))
653#define VFO_HAS_MAIN_SUB ((STATE(rig)->vfo_list & (RIG_VFO_MAIN|RIG_VFO_SUB)) == (RIG_VFO_MAIN|RIG_VFO_SUB))
654#define VFO_HAS_MAIN_SUB_ONLY ((!VFO_HAS_A_B) & VFO_HAS_MAIN_SUB)
655#define VFO_HAS_MAIN_SUB_A_B_ONLY (VFO_HAS_A_B & VFO_HAS_MAIN_SUB)
656#define VFO_HAS_A_B_ONLY (VFO_HAS_A_B & (!VFO_HAS_MAIN_SUB))
657#define VFO_DUAL (RIG_VFO_MAIN_A|RIG_VFO_MAIN_B|RIG_VFO_SUB_A|RIG_VFO_SUB_B)
658#define VFO_HAS_DUAL ((STATE(rig)->vfo_list & VFO_DUAL) == VFO_DUAL)
660
665#define RIG_PASSBAND_NORMAL s_Hz(0)
666
670#define RIG_PASSBAND_NOCHANGE s_Hz(-1)
671
677
678typedef float agc_time_t;
679
680typedef enum dcd_e {
683} dcd_t;
684
685
702
703
713
714
733
734
738typedef enum {
740 RIG_POWER_ON = (1 << 0),
741 RIG_POWER_STANDBY = (1 << 1),
742 RIG_POWER_OPERATE = (1 << 2),
745
746
750typedef enum {
752 RIG_RESET_SOFT = (1 << 0),
753 RIG_RESET_VFO = (1 << 1),
754 RIG_RESET_MCALL = (1 << 2),
756} reset_t;
757
758
767
768
784typedef enum {
786 RIG_OP_CPY = (1 << 0),
787 RIG_OP_XCHG = (1 << 1),
788 RIG_OP_FROM_VFO = (1 << 2),
789 RIG_OP_TO_VFO = (1 << 3),
790 RIG_OP_MCL = (1 << 4),
791 RIG_OP_UP = (1 << 5),
792 RIG_OP_DOWN = (1 << 6),
793 RIG_OP_BAND_UP = (1 << 7),
794 RIG_OP_BAND_DOWN = (1 << 8),
795 RIG_OP_LEFT = (1 << 9),
796 RIG_OP_RIGHT = (1 << 10),
797 RIG_OP_TUNE = (1 << 11),
798 RIG_OP_TOGGLE = (1 << 12)
799} vfo_op_t;
800
827
828typedef enum { // numbers here reflect generic values -- need to map to rig values
829 RIG_BANDSELECT_UNUSED = CONSTANT_64BIT_FLAG(0),
830 RIG_BANDSELECT_2200M = CONSTANT_64BIT_FLAG(1),
831 RIG_BANDSELECT_600M = CONSTANT_64BIT_FLAG(2),
832 RIG_BANDSELECT_160M = CONSTANT_64BIT_FLAG(3),
833 RIG_BANDSELECT_80M = CONSTANT_64BIT_FLAG(4),
834 RIG_BANDSELECT_60M = CONSTANT_64BIT_FLAG(5),
835 RIG_BANDSELECT_40M = CONSTANT_64BIT_FLAG(6),
836 RIG_BANDSELECT_30M = CONSTANT_64BIT_FLAG(7),
837 RIG_BANDSELECT_20M = CONSTANT_64BIT_FLAG(8),
838 RIG_BANDSELECT_17M = CONSTANT_64BIT_FLAG(9),
839 RIG_BANDSELECT_15M = CONSTANT_64BIT_FLAG(10),
840 RIG_BANDSELECT_12M = CONSTANT_64BIT_FLAG(11),
841 RIG_BANDSELECT_10M = CONSTANT_64BIT_FLAG(12),
842 RIG_BANDSELECT_6M = CONSTANT_64BIT_FLAG(13),
843 RIG_BANDSELECT_WFM = CONSTANT_64BIT_FLAG(14),
844 RIG_BANDSELECT_GEN = CONSTANT_64BIT_FLAG(15),
845 RIG_BANDSELECT_MW = CONSTANT_64BIT_FLAG(16),
846 RIG_BANDSELECT_AIR = CONSTANT_64BIT_FLAG(17),
847 RIG_BANDSELECT_4M = CONSTANT_64BIT_FLAG(18),
848 RIG_BANDSELECT_2M = CONSTANT_64BIT_FLAG(19),
849 RIG_BANDSELECT_1_25M = CONSTANT_64BIT_FLAG(20),
850 RIG_BANDSELECT_70CM = CONSTANT_64BIT_FLAG(21),
851 RIG_BANDSELECT_33CM = CONSTANT_64BIT_FLAG(22),
852 RIG_BANDSELECT_23CM = CONSTANT_64BIT_FLAG(23),
853 RIG_BANDSELECT_13CM = CONSTANT_64BIT_FLAG(24),
854 RIG_BANDSELECT_9CM = CONSTANT_64BIT_FLAG(25),
855 RIG_BANDSELECT_5CM = CONSTANT_64BIT_FLAG(26),
856 RIG_BANDSELECT_3CM = CONSTANT_64BIT_FLAG(27),
858
859
860#define RIG_BANDSELECT_ALL
861#define RIG_BANDSELECT_LF (RIG_BANDSELECT_2200M | RIG_BANDSELECT_600M)
862#define RIG_BANDSELECT_HF (RIG_BANDSELECT_160M | RIG_BANDSELECT_80M | RIG_BANDSELECT_60M | RIG_BANDSELECT_40M\
863| RIG_BANDSELECT_30M | RIG_BANDSELECT_20M | RIG_BANDSELECT_17M | RIG_BANDSELECT_15M | RIG_BANDSELECT_12M\
864| RIG_BANDSELECT_10M | RIG_BANDSELECT_6M)
865#define RIG_BANDSELECT_VHF (RIG_BANDSELECT_AIR | RIG_BANDSELECT_2M| RIG_BANDSELECT_1_25M(
866#define RIG_BANDSELECT_UHF (RIG_BANDSELECT_70CM)
867
868
877typedef enum {
879 RIG_SCAN_MEM = (1 << 0),
880 RIG_SCAN_SLCT = (1 << 1),
881 RIG_SCAN_PRIO = (1 << 2),
882 RIG_SCAN_PROG = (1 << 3),
883 RIG_SCAN_DELTA = (1 << 4),
884 RIG_SCAN_VFO = (1 << 5),
885 RIG_SCAN_PLT = (1 << 6),
886 RIG_SCAN_STOP = (1 << 7)
887} scan_t;
888
889
893typedef long hamlib_token_t;
894#define token_t hamlib_token_t
895
899#define RIG_CONF_END 0
900
913
914/* strongly inspired from soundmodem. Thanks Thomas! */
924
926#define RIG_COMBO_MAX 16
927#define RIG_BIN_MAX 80
929
935 const char *name;
936 const char *label;
937 const char *tooltip;
938 const char *dflt;
940 union {
941 struct {
942 float min;
943 float max;
944 float step;
945 } n;
946 struct {
947 const char *combostr[RIG_COMBO_MAX];
948 } c;
949 } u;
950};
951
952
958typedef enum {
961 RIG_ANN_FREQ = (1 << 0),
962 RIG_ANN_RXMODE = (1 << 1),
963 RIG_ANN_CW = (1 << 2),
964 RIG_ANN_ENG = (1 << 3),
965 RIG_ANN_JAP = (1 << 4)
966} ann_t;
967
968
1015typedef unsigned int ant_t;
1016
1017#define RIG_ANT_NONE 0
1018#define RIG_ANT_N(n) ((ant_t)1<<(n))
1019#define RIG_ANT_1 RIG_ANT_N(0)
1020#define RIG_ANT_2 RIG_ANT_N(1)
1021#define RIG_ANT_3 RIG_ANT_N(2)
1022#define RIG_ANT_4 RIG_ANT_N(3)
1023#define RIG_ANT_5 RIG_ANT_N(4)
1024
1025#define RIG_ANT_UNKNOWN RIG_ANT_N(30)
1026#define RIG_ANT_CURR RIG_ANT_N(31)
1027
1028#define RIG_ANT_MAX 32
1029
1030
1032#define RIG_AGC_LAST 99999
1034
1035#if 1 // deprecated
1040 RIG_METER_NONE = 0, /*< No display meter */
1041 RIG_METER_SWR = (1 << 0), /*< Stationary Wave Ratio */
1042 RIG_METER_COMP = (1 << 1), /*< Compression level */
1043 RIG_METER_ALC = (1 << 2), /*< ALC */
1044 RIG_METER_IC = (1 << 3), /*< IC */
1045 RIG_METER_DB = (1 << 4), /*< DB */
1046 RIG_METER_PO = (1 << 5), /*< Power Out */
1047 RIG_METER_VDD = (1 << 6), /*< Final Amp Voltage */
1048 RIG_METER_TEMP = (1 << 7) /*< Final Amp Temperature */
1049};
1050#endif
1051
1052
1058typedef union {
1059 signed int i;
1060 unsigned int u;
1061 float f;
1062 char *s;
1063 const char *cs;
1065 struct {
1066 int l;
1067 unsigned char *d; /* Pointer to data buffer */
1068 } b;
1070} value_t;
1071
1072
1081typedef uint64_t rig_level_e;
1082#define RIG_LEVEL_NONE 0
1083#define RIG_LEVEL_PREAMP CONSTANT_64BIT_FLAG(0)
1084#define RIG_LEVEL_ATT CONSTANT_64BIT_FLAG(1)
1085#define RIG_LEVEL_VOXDELAY CONSTANT_64BIT_FLAG(2)
1086#define RIG_LEVEL_AF CONSTANT_64BIT_FLAG(3)
1087#define RIG_LEVEL_RF CONSTANT_64BIT_FLAG(4)
1088#define RIG_LEVEL_SQL CONSTANT_64BIT_FLAG(5)
1089#define RIG_LEVEL_IF CONSTANT_64BIT_FLAG(6)
1090#define RIG_LEVEL_APF CONSTANT_64BIT_FLAG(7)
1091#define RIG_LEVEL_NR CONSTANT_64BIT_FLAG(8)
1092#define RIG_LEVEL_PBT_IN CONSTANT_64BIT_FLAG(9)
1093#define RIG_LEVEL_PBT_OUT CONSTANT_64BIT_FLAG(10)
1094#define RIG_LEVEL_CWPITCH CONSTANT_64BIT_FLAG(11)
1095#define RIG_LEVEL_RFPOWER CONSTANT_64BIT_FLAG(12)
1096#define RIG_LEVEL_MICGAIN CONSTANT_64BIT_FLAG(13)
1097#define RIG_LEVEL_KEYSPD CONSTANT_64BIT_FLAG(14)
1098#define RIG_LEVEL_NOTCHF CONSTANT_64BIT_FLAG(15)
1099#define RIG_LEVEL_COMP CONSTANT_64BIT_FLAG(16)
1100#define RIG_LEVEL_AGC CONSTANT_64BIT_FLAG(17)
1101#define RIG_LEVEL_BKINDL CONSTANT_64BIT_FLAG(18)
1102#define RIG_LEVEL_BALANCE CONSTANT_64BIT_FLAG(19)
1103#define RIG_LEVEL_METER CONSTANT_64BIT_FLAG(20)
1104#define RIG_LEVEL_VOXGAIN CONSTANT_64BIT_FLAG(21)
1105#define RIG_LEVEL_ANTIVOX CONSTANT_64BIT_FLAG(22)
1106#define RIG_LEVEL_SLOPE_LOW CONSTANT_64BIT_FLAG(23)
1107#define RIG_LEVEL_SLOPE_HIGH CONSTANT_64BIT_FLAG(24)
1108#define RIG_LEVEL_BKIN_DLYMS CONSTANT_64BIT_FLAG(25)
1109
1111#define RIG_LEVEL_RAWSTR CONSTANT_64BIT_FLAG(26)
1112//#define RIG_LEVEL_SQLSTAT CONSTANT_64BIT_FLAG(27) /*!< \c SQLSTAT -- SQL status, arg int (open=1/closed=0). Deprecated, use get_dcd instead */
1113#define RIG_LEVEL_SWR CONSTANT_64BIT_FLAG(28)
1114#define RIG_LEVEL_ALC CONSTANT_64BIT_FLAG(29)
1115#define RIG_LEVEL_STRENGTH CONSTANT_64BIT_FLAG(30)
1116 /* RIG_LEVEL_BWC (1<<31) */
1117#define RIG_LEVEL_RFPOWER_METER CONSTANT_64BIT_FLAG(32)
1118#define RIG_LEVEL_COMP_METER CONSTANT_64BIT_FLAG(33)
1119#define RIG_LEVEL_VD_METER CONSTANT_64BIT_FLAG(34)
1120#define RIG_LEVEL_ID_METER CONSTANT_64BIT_FLAG(35)
1121
1122#define RIG_LEVEL_NOTCHF_RAW CONSTANT_64BIT_FLAG(36)
1123#define RIG_LEVEL_MONITOR_GAIN CONSTANT_64BIT_FLAG(37)
1124#define RIG_LEVEL_NB CONSTANT_64BIT_FLAG(38)
1125#define RIG_LEVEL_RFPOWER_METER_WATTS CONSTANT_64BIT_FLAG(39)
1126#define RIG_LEVEL_SPECTRUM_MODE CONSTANT_64BIT_FLAG(40)
1127#define RIG_LEVEL_SPECTRUM_SPAN CONSTANT_64BIT_FLAG(41)
1128#define RIG_LEVEL_SPECTRUM_EDGE_LOW CONSTANT_64BIT_FLAG(42)
1129#define RIG_LEVEL_SPECTRUM_EDGE_HIGH CONSTANT_64BIT_FLAG(43)
1130#define RIG_LEVEL_SPECTRUM_SPEED CONSTANT_64BIT_FLAG(44)
1131#define RIG_LEVEL_SPECTRUM_REF CONSTANT_64BIT_FLAG(45)
1132#define RIG_LEVEL_SPECTRUM_AVG CONSTANT_64BIT_FLAG(46)
1133#define RIG_LEVEL_SPECTRUM_ATT CONSTANT_64BIT_FLAG(47)
1134#define RIG_LEVEL_TEMP_METER CONSTANT_64BIT_FLAG(48)
1135#define RIG_LEVEL_BAND_SELECT CONSTANT_64BIT_FLAG(49)
1136#define RIG_LEVEL_USB_AF CONSTANT_64BIT_FLAG(50)
1137#define RIG_LEVEL_USB_AF_INPUT CONSTANT_64BIT_FLAG(51)
1138#define RIG_LEVEL_AGC_TIME CONSTANT_64BIT_FLAG(52)
1139#define RIG_LEVEL_53 CONSTANT_64BIT_FLAG(53)
1140#define RIG_LEVEL_54 CONSTANT_64BIT_FLAG(54)
1141#define RIG_LEVEL_55 CONSTANT_64BIT_FLAG(55)
1142#define RIG_LEVEL_56 CONSTANT_64BIT_FLAG(56)
1143#define RIG_LEVEL_57 CONSTANT_64BIT_FLAG(57)
1144#define RIG_LEVEL_58 CONSTANT_64BIT_FLAG(58)
1145#define RIG_LEVEL_59 CONSTANT_64BIT_FLAG(59)
1146#define RIG_LEVEL_60 CONSTANT_64BIT_FLAG(60)
1147#define RIG_LEVEL_61 CONSTANT_64BIT_FLAG(61)
1148#define RIG_LEVEL_62 CONSTANT_64BIT_FLAG(62)
1149#define RIG_LEVEL_63 CONSTANT_64BIT_FLAG(63)
1150
1152#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)
1153
1154#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)
1155
1156#define RIG_LEVEL_IS_FLOAT(l) ((l)&RIG_LEVEL_FLOAT_LIST)
1157#define RIG_LEVEL_SET(l) ((l)&~RIG_LEVEL_READONLY_LIST)
1159
1160
1186
1187enum rig_keyertype_e {
1188 RIG_KEYERTYPE_STRAIGHT = 0,
1189 RIG_KEYERTYPE_BUG = (1 << 0),
1190 RIG_KEYERTYPE_PADDLE = (1 << 1),
1191 RIG_KEYERTYPE_UNKNOWN = (1 << 2)
1192};
1193
1207
1213 RIG_MULTICAST_POLL, // hamlib will be polling the rig for all rig items
1214 RIG_MULTICAST_TRANSCEIVE, // transceive will be turned on and processed
1215 RIG_MULTICAST_SPECTRUM // spectrum data will be included
1216};
1217
1219#define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT|RIG_PARM_KEYLIGHT|RIG_PARM_BACKLIGHT)
1220#define RIG_PARM_STRING_LIST (RIG_PARM_BANDSELECT|RIG_PARM_KEYERTYPE)
1221#define RIG_PARM_READONLY_LIST (RIG_PARM_BAT)
1222
1223#define RIG_PARM_IS_FLOAT(l) ((l)&RIG_PARM_FLOAT_LIST)
1224#define RIG_PARM_IS_STRING(l) ((l)&RIG_PARM_STRING_LIST)
1225#define RIG_PARM_SET(l) ((l)&~RIG_PARM_READONLY_LIST)
1227
1234typedef uint64_t setting_t;
1235
1240#define RIG_SETTING_MAX 64
1241
1258#define RIG_TRN_OFF 0
1259#define RIG_TRN_RIG 1
1260#define RIG_TRN_POLL 2
1261
1262
1271/*
1272 * The C standard dictates that an enum constant is a 32 bit signed integer.
1273 * Setting a constant's bit 31 created a negative value that on amd64 had the
1274 * upper 32 bits set as well when assigned to the misc.c:rig_func_str structure.
1275 * This caused misc.c:rig_strfunc() to fail its comparison for RIG_FUNC_XIT
1276 * on amd64 (x86_64). To use bit 31 as an unsigned long, preprocessor macros
1277 * have been used instead as a 'const unsigned long' which cannot be used to
1278 * initialize the rig_func_str.func members. TNX KA6MAL, AC6SL. - N0NB
1279 */
1280#define RIG_FUNC_NONE 0
1281#define RIG_FUNC_FAGC CONSTANT_64BIT_FLAG (0)
1282#define RIG_FUNC_NB CONSTANT_64BIT_FLAG (1)
1283#define RIG_FUNC_COMP CONSTANT_64BIT_FLAG (2)
1284#define RIG_FUNC_VOX CONSTANT_64BIT_FLAG (3)
1285#define RIG_FUNC_TONE CONSTANT_64BIT_FLAG (4)
1286#define RIG_FUNC_TSQL CONSTANT_64BIT_FLAG (5)
1287#define RIG_FUNC_SBKIN CONSTANT_64BIT_FLAG (6)
1288#define RIG_FUNC_FBKIN CONSTANT_64BIT_FLAG (7)
1289#define RIG_FUNC_ANF CONSTANT_64BIT_FLAG (8)
1290#define RIG_FUNC_NR CONSTANT_64BIT_FLAG (9)
1291#define RIG_FUNC_AIP CONSTANT_64BIT_FLAG (10)
1292#define RIG_FUNC_APF CONSTANT_64BIT_FLAG (11)
1293#define RIG_FUNC_MON CONSTANT_64BIT_FLAG (12)
1294#define RIG_FUNC_MN CONSTANT_64BIT_FLAG (13)
1295#define RIG_FUNC_RF CONSTANT_64BIT_FLAG (14)
1296#define RIG_FUNC_ARO CONSTANT_64BIT_FLAG (15)
1297#define RIG_FUNC_LOCK CONSTANT_64BIT_FLAG (16)
1298#define RIG_FUNC_MUTE CONSTANT_64BIT_FLAG (17)
1299#define RIG_FUNC_VSC CONSTANT_64BIT_FLAG (18)
1300#define RIG_FUNC_REV CONSTANT_64BIT_FLAG (19)
1301#define RIG_FUNC_SQL CONSTANT_64BIT_FLAG (20)
1302#define RIG_FUNC_ABM CONSTANT_64BIT_FLAG (21)
1303#define RIG_FUNC_BC CONSTANT_64BIT_FLAG (22)
1304#define RIG_FUNC_MBC CONSTANT_64BIT_FLAG (23)
1305#define RIG_FUNC_RIT CONSTANT_64BIT_FLAG (24)
1306#define RIG_FUNC_AFC CONSTANT_64BIT_FLAG (25)
1307#define RIG_FUNC_SATMODE CONSTANT_64BIT_FLAG (26)
1308#define RIG_FUNC_SCOPE CONSTANT_64BIT_FLAG (27)
1309#define RIG_FUNC_RESUME CONSTANT_64BIT_FLAG (28)
1310#define RIG_FUNC_TBURST CONSTANT_64BIT_FLAG (29)
1311#define RIG_FUNC_TUNER CONSTANT_64BIT_FLAG (30)
1312#define RIG_FUNC_XIT CONSTANT_64BIT_FLAG (31)
1313#ifndef SWIGLUAHIDE
1314/* Hide the top 32 bits from the old Lua binding as they can't be represented */
1315#define RIG_FUNC_NB2 CONSTANT_64BIT_FLAG (32)
1316#define RIG_FUNC_CSQL CONSTANT_64BIT_FLAG (33)
1317#define RIG_FUNC_AFLT CONSTANT_64BIT_FLAG (34)
1318#define RIG_FUNC_ANL CONSTANT_64BIT_FLAG (35)
1319#define RIG_FUNC_BC2 CONSTANT_64BIT_FLAG (36)
1320#define RIG_FUNC_DUAL_WATCH CONSTANT_64BIT_FLAG (37)
1321#define RIG_FUNC_DIVERSITY CONSTANT_64BIT_FLAG (38)
1322#define RIG_FUNC_DSQL CONSTANT_64BIT_FLAG (39)
1323#define RIG_FUNC_SCEN CONSTANT_64BIT_FLAG (40)
1324#define RIG_FUNC_SLICE CONSTANT_64BIT_FLAG (41)
1325#define RIG_FUNC_TRANSCEIVE CONSTANT_64BIT_FLAG (42)
1326#define RIG_FUNC_SPECTRUM CONSTANT_64BIT_FLAG (43)
1327#define RIG_FUNC_SPECTRUM_HOLD CONSTANT_64BIT_FLAG (44)
1328#define RIG_FUNC_SEND_MORSE CONSTANT_64BIT_FLAG (45)
1329#define RIG_FUNC_SEND_VOICE_MEM CONSTANT_64BIT_FLAG (46)
1330#define RIG_FUNC_OVF_STATUS CONSTANT_64BIT_FLAG (47)
1331#define RIG_FUNC_SYNC CONSTANT_64BIT_FLAG (48)
1332#define RIG_FUNC_BIT49 CONSTANT_64BIT_FLAG (49)
1333#define RIG_FUNC_BIT50 CONSTANT_64BIT_FLAG (50)
1334#define RIG_FUNC_BIT51 CONSTANT_64BIT_FLAG (51)
1335#define RIG_FUNC_BIT52 CONSTANT_64BIT_FLAG (52)
1336#define RIG_FUNC_BIT53 CONSTANT_64BIT_FLAG (53)
1337#define RIG_FUNC_BIT54 CONSTANT_64BIT_FLAG (54)
1338#define RIG_FUNC_BIT55 CONSTANT_64BIT_FLAG (55)
1339#define RIG_FUNC_BIT56 CONSTANT_64BIT_FLAG (56)
1340#define RIG_FUNC_BIT57 CONSTANT_64BIT_FLAG (57)
1341#define RIG_FUNC_BIT58 CONSTANT_64BIT_FLAG (58)
1342#define RIG_FUNC_BIT59 CONSTANT_64BIT_FLAG (59)
1343#define RIG_FUNC_BIT60 CONSTANT_64BIT_FLAG (60)
1344#define RIG_FUNC_BIT61 CONSTANT_64BIT_FLAG (61)
1345#define RIG_FUNC_BIT62 CONSTANT_64BIT_FLAG (62)
1346#define RIG_FUNC_BIT63 CONSTANT_64BIT_FLAG (63)
1347/* 63 is this highest bit number that can be used */
1348#endif
1349
1356#define mW(p) ((int)(p))
1364#define Watts(p) ((int)((p)*1000))
1371#define W(p) Watts(p)
1372#if 0 // deprecating kW macro as this doesn't make sense
1379#define kW(p) ((int)((p)*1000000L))
1380#endif
1381
1382
1392typedef uint64_t rmode_t;
1393
1394#define RIG_MODE_NONE 0
1395#define RIG_MODE_AM CONSTANT_64BIT_FLAG (0)
1396#define RIG_MODE_CW CONSTANT_64BIT_FLAG (1)
1397#define RIG_MODE_USB CONSTANT_64BIT_FLAG (2)
1398#define RIG_MODE_LSB CONSTANT_64BIT_FLAG (3)
1399#define RIG_MODE_RTTY CONSTANT_64BIT_FLAG (4)
1400#define RIG_MODE_FM CONSTANT_64BIT_FLAG (5)
1401#define RIG_MODE_WFM CONSTANT_64BIT_FLAG (6)
1402#define RIG_MODE_CWR CONSTANT_64BIT_FLAG (7)
1403#define RIG_MODE_RTTYR CONSTANT_64BIT_FLAG (8)
1404#define RIG_MODE_AMS CONSTANT_64BIT_FLAG (9)
1405#define RIG_MODE_PKTLSB CONSTANT_64BIT_FLAG (10)
1406#define RIG_MODE_PKTUSB CONSTANT_64BIT_FLAG (11)
1407#define RIG_MODE_PKTFM CONSTANT_64BIT_FLAG (12)
1408#define RIG_MODE_ECSSUSB CONSTANT_64BIT_FLAG (13)
1409#define RIG_MODE_ECSSLSB CONSTANT_64BIT_FLAG (14)
1410#define RIG_MODE_FAX CONSTANT_64BIT_FLAG (15)
1411#define RIG_MODE_SAM CONSTANT_64BIT_FLAG (16)
1412#define RIG_MODE_SAL CONSTANT_64BIT_FLAG (17)
1413#define RIG_MODE_SAH CONSTANT_64BIT_FLAG (18)
1414#define RIG_MODE_DSB CONSTANT_64BIT_FLAG (19)
1415#define RIG_MODE_FMN CONSTANT_64BIT_FLAG (21)
1416#define RIG_MODE_PKTAM CONSTANT_64BIT_FLAG (22)
1417#define RIG_MODE_P25 CONSTANT_64BIT_FLAG (23)
1418#define RIG_MODE_DSTAR CONSTANT_64BIT_FLAG (24)
1419#define RIG_MODE_DPMR CONSTANT_64BIT_FLAG (25)
1420#define RIG_MODE_NXDNVN CONSTANT_64BIT_FLAG (26)
1421#define RIG_MODE_NXDN_N CONSTANT_64BIT_FLAG (27)
1422#define RIG_MODE_DCR CONSTANT_64BIT_FLAG (28)
1423#define RIG_MODE_AMN CONSTANT_64BIT_FLAG (29)
1424#define RIG_MODE_PSK CONSTANT_64BIT_FLAG (30)
1425#define RIG_MODE_PSKR CONSTANT_64BIT_FLAG (31)
1426#ifndef SWIGLUAHIDE
1427/* hide the top 32 bits from the Lua binding as they will not work */
1428#define RIG_MODE_DD CONSTANT_64BIT_FLAG (32)
1429#define RIG_MODE_C4FM CONSTANT_64BIT_FLAG (33)
1430#define RIG_MODE_PKTFMN CONSTANT_64BIT_FLAG (34)
1431#define RIG_MODE_SPEC CONSTANT_64BIT_FLAG (35)
1432#define RIG_MODE_CWN CONSTANT_64BIT_FLAG (36)
1433#define RIG_MODE_IQ CONSTANT_64BIT_FLAG (37)
1434#define RIG_MODE_ISBUSB CONSTANT_64BIT_FLAG (38)
1435#define RIG_MODE_ISBLSB CONSTANT_64BIT_FLAG (39)
1436#define RIG_MODE_USBD1 CONSTANT_64BIT_FLAG (40)
1437#define RIG_MODE_USBD2 CONSTANT_64BIT_FLAG (41)
1438#define RIG_MODE_USBD3 CONSTANT_64BIT_FLAG (42)
1439#define RIG_MODE_LSBD1 CONSTANT_64BIT_FLAG (43)
1440#define RIG_MODE_LSBD2 CONSTANT_64BIT_FLAG (44)
1441#define RIG_MODE_LSBD3 CONSTANT_64BIT_FLAG (45)
1442#define RIG_MODE_WFMS CONSTANT_64BIT_FLAG (46)
1443#define RIG_MODE_BIT47 CONSTANT_64BIT_FLAG (47)
1444#define RIG_MODE_BIT48 CONSTANT_64BIT_FLAG (48)
1445#define RIG_MODE_BIT49 CONSTANT_64BIT_FLAG (49)
1446#define RIG_MODE_BIT50 CONSTANT_64BIT_FLAG (50)
1447#define RIG_MODE_BIT51 CONSTANT_64BIT_FLAG (51)
1448#define RIG_MODE_BIT52 CONSTANT_64BIT_FLAG (52)
1449#define RIG_MODE_BIT53 CONSTANT_64BIT_FLAG (53)
1450#define RIG_MODE_BIT54 CONSTANT_64BIT_FLAG (54)
1451#define RIG_MODE_BIT55 CONSTANT_64BIT_FLAG (55)
1452#define RIG_MODE_BIT56 CONSTANT_64BIT_FLAG (56)
1453#define RIG_MODE_BIT57 CONSTANT_64BIT_FLAG (57)
1454#define RIG_MODE_BIT58 CONSTANT_64BIT_FLAG (58)
1455#define RIG_MODE_BIT59 CONSTANT_64BIT_FLAG (59)
1456#define RIG_MODE_BIT60 CONSTANT_64BIT_FLAG (60)
1457#define RIG_MODE_BIT61 CONSTANT_64BIT_FLAG (61)
1458#define RIG_MODE_BIT62 CONSTANT_64BIT_FLAG (62)
1459#define RIG_MODE_TESTS_MAX CONSTANT_64BIT_FLAG (63)
1460#define RIG_MODE_ALL (0xffffffff)
1461#endif
1462
1466#define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB)
1467
1471#define RIG_MODE_PKTSSB (RIG_MODE_PKTUSB|RIG_MODE_PKTLSB)
1472
1476#define RIG_MODE_ECSS (RIG_MODE_ECSSUSB|RIG_MODE_ECSSLSB)
1477
1479#define RIG_DBLST_END 0 /* end marker in a preamp/att level list */
1480#define RIG_IS_DBLST_END(d) ((d)==0)
1482
1483
1500
1502#define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE}
1503#define RIG_IS_FRNG_END(r) ((r).startf == Hz(0) && (r).endf == Hz(0))
1505
1526
1528#define RIG_TS_ANY 0
1529#define RIG_TS_END {RIG_MODE_NONE, 0}
1530#define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0)
1532
1533
1561
1562#define RIG_FLT_ANY 0
1563#define RIG_FLT_END {RIG_MODE_NONE, 0}
1564#define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE)
1565#define DEBUGMSGSAVE_SIZE 24000
1567
1568
1572#define RIG_CHFLAG_NONE 0
1576#define RIG_CHFLAG_SKIP (1<<0)
1580#define RIG_CHFLAG_DATA (1<<1)
1584#define RIG_CHFLAG_PSKIP (1<<2)
1585
1594
1596#define RIG_EXT_END {0, {.i=0}}
1597#define RIG_IS_EXT_END(x) ((x).token == 0)
1599
1641
1645typedef struct channel channel_t;
1646
1653 unsigned bank_num: 1;
1654 unsigned vfo: 1;
1655 unsigned ant: 1;
1656 unsigned freq: 1;
1657 unsigned mode: 1;
1658 unsigned width: 1;
1659
1660 unsigned tx_freq: 1;
1661 unsigned tx_mode: 1;
1662 unsigned tx_width: 1;
1663
1664 unsigned split: 1;
1665 unsigned tx_vfo: 1;
1666 unsigned rptr_shift: 1;
1667 unsigned rptr_offs: 1;
1668 unsigned tuning_step: 1;
1669 unsigned rit: 1;
1670 unsigned xit: 1;
1673 unsigned ctcss_tone: 1;
1674 unsigned ctcss_sql: 1;
1675 unsigned dcs_code: 1;
1676 unsigned dcs_sql: 1;
1677 unsigned scan_group: 1;
1678 unsigned flags: 1;
1679 unsigned channel_desc: 1;
1680 unsigned ext_levels: 1;
1681 unsigned tag: 1;
1682};
1683
1688
1689
1713
1714
1734
1736#define RIG_CHAN_END {0,0,RIG_MTYPE_NONE}
1737#define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE)
1739
1743#define RIG_MEM_CAPS_ALL -1
1744
1748typedef struct chan_list chan_t;
1749
1750
1767
1771typedef struct gran gran_t;
1772
1773
1778 int size;
1779 struct {
1780 int raw;
1781 int val;
1782 } table[HAMLIB_MAX_CAL_LENGTH];
1783};
1784
1797typedef struct cal_table cal_table_t;
1798
1800#define EMPTY_STR_CAL { 0, { { 0, 0 }, } }
1802
1803
1808 int size;
1809 struct {
1810 int raw;
1811 float val;
1812 } table[HAMLIB_MAX_CAL_LENGTH];
1813};
1814
1828
1830#define EMPTY_FLOAT_CAL { 0, { { 0, 0f }, } }
1831
1832typedef int (* chan_cb_t)(RIG *, vfo_t vfo, channel_t **, int, const chan_t *, rig_ptr_t);
1833typedef int (* confval_cb_t)(RIG *,
1834 const struct confparams *,
1835 value_t *,
1836 rig_ptr_t);
1838
1843{
1844 int id;
1845 char *name;
1846};
1847
1858
1863{
1864 int id;
1865 char *name;
1866};
1867
1899
1905 struct deferred_config_item *nextt;
1906 hamlib_token_t token;
1907 char *value; // strdup'ed, must be freed
1908};
1909typedef struct deferred_config_item deferred_config_item_t;
1910
1912 struct deferred_config_item *firstt; // NULL if none
1913 struct deferred_config_item *lastt;
1914};
1915typedef struct deferred_config_header deferred_config_header_t;
1916
1917
1923#define RIG_MODEL(arg) .rig_model=arg,.macro_name=#arg
1924
1925#define HAMLIB_CHECK_RIG_CAPS "HAMLIB_CHECK_RIG_CAPS"
1926
1946struct rig_caps {
1948 const char *model_name;
1949 const char *mfg_name;
1950 const char *version;
1951 const char *copyright;
1953
1958
1965
1969 int retry;
1970
1977
1980
1981 const struct confparams *extparms;
1982 const struct confparams *extlevels;
1983 const struct confparams *extfuncs;
1985
1988
1989 int preamp[HAMLIB_MAXDBLSTSIZ];
1990 int attenuator[HAMLIB_MAXDBLSTSIZ];
1994
1996 enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS];
1997
1999
2004
2007
2008 chan_t chan_list[HAMLIB_CHANLSTSIZ];
2009
2010 // As of 2020-02-12 we know of 5 models from Icom USA, EUR, ITR, TPE, KOR for the IC-9700
2011 // So we currently have 5 ranges we need to deal with
2012 // The backend for the model should fill in the label field to explain what model it is
2013 // The the IC-9700 in ic7300.c for an example
2014 freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ];
2015 freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ];
2016 freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ];
2017 freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ];
2018 freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ];
2019 freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ];
2020 freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ];
2021 freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ];
2022 freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ];
2023 freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ];
2024
2025 struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
2026 struct filter_list filters[HAMLIB_FLTLSTSIZ];
2027
2035
2036 struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES];
2037 enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES];
2038 freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS];
2039 struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES];
2040 int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ];
2041
2042 const struct confparams *cfgparams;
2043 const rig_ptr_t priv;
2044
2045 /*
2046 * Rig API
2047 *
2048 */
2049
2050 int (*rig_init)(RIG *rig);
2051 int (*rig_cleanup)(RIG *rig);
2052 int (*rig_open)(RIG *rig);
2053 int (*rig_close)(RIG *rig);
2054
2055 /*
2056 * General API commands, from most primitive to least.. :()
2057 * List Set/Get functions pairs
2058 */
2059
2060 int (*set_freq)(RIG *rig, vfo_t vfo, freq_t freq);
2061 int (*get_freq)(RIG *rig, vfo_t vfo, freq_t *freq);
2062
2063 int (*set_mode)(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
2064 int (*get_mode)(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width);
2065
2066 int (*set_vfo)(RIG *rig, vfo_t vfo);
2067 int (*get_vfo)(RIG *rig, vfo_t *vfo);
2068
2069 int (*set_ptt)(RIG *rig, vfo_t vfo, ptt_t ptt);
2070 int (*get_ptt)(RIG *rig, vfo_t vfo, ptt_t *ptt);
2071
2072 int (*get_dcd)(RIG *rig, vfo_t vfo, dcd_t *dcd);
2073
2074 int (*set_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift);
2075 int (*get_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift);
2076
2077 int (*set_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t offs);
2078 int (*get_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t *offs);
2079
2080 int (*set_split_freq)(RIG *rig, vfo_t vfo, freq_t tx_freq);
2081 int (*get_split_freq)(RIG *rig, vfo_t vfo, freq_t *tx_freq);
2082
2083 int (*set_split_mode)(RIG *rig,
2084 vfo_t vfo,
2085 rmode_t tx_mode,
2086 pbwidth_t tx_width);
2087 int (*get_split_mode)(RIG *rig,
2088 vfo_t vfo,
2089 rmode_t *tx_mode,
2090 pbwidth_t *tx_width);
2091
2092 int (*set_split_freq_mode)(RIG *rig,
2093 vfo_t vfo,
2094 freq_t tx_freq,
2095 rmode_t tx_mode,
2096 pbwidth_t tx_width);
2097 int (*get_split_freq_mode)(RIG *rig,
2098 vfo_t vfo,
2099 freq_t *tx_freq,
2100 rmode_t *tx_mode,
2101 pbwidth_t *tx_width);
2102
2103 int (*set_split_vfo)(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo);
2104 int (*get_split_vfo)(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo);
2105
2106 int (*set_rit)(RIG *rig, vfo_t vfo, shortfreq_t rit);
2107 int (*get_rit)(RIG *rig, vfo_t vfo, shortfreq_t *rit);
2108
2109 int (*set_xit)(RIG *rig, vfo_t vfo, shortfreq_t xit);
2110 int (*get_xit)(RIG *rig, vfo_t vfo, shortfreq_t *xit);
2111
2112 int (*set_ts)(RIG *rig, vfo_t vfo, shortfreq_t ts);
2113 int (*get_ts)(RIG *rig, vfo_t vfo, shortfreq_t *ts);
2114
2115 int (*set_dcs_code)(RIG *rig, vfo_t vfo, tone_t code);
2116 int (*get_dcs_code)(RIG *rig, vfo_t vfo, tone_t *code);
2117
2118 int (*set_tone)(RIG *rig, vfo_t vfo, tone_t tone);
2119 int (*get_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
2120
2121 int (*set_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t tone);
2122 int (*get_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
2123
2124 int (*set_dcs_sql)(RIG *rig, vfo_t vfo, tone_t code);
2125 int (*get_dcs_sql)(RIG *rig, vfo_t vfo, tone_t *code);
2126
2127 int (*set_tone_sql)(RIG *rig, vfo_t vfo, tone_t tone);
2128 int (*get_tone_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
2129
2130 int (*set_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t tone);
2131 int (*get_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
2132
2133 int (*power2mW)(RIG *rig,
2134 unsigned int *mwpower,
2135 float power,
2136 freq_t freq,
2137 rmode_t mode);
2138 int (*mW2power)(RIG *rig,
2139 float *power,
2140 unsigned int mwpower,
2141 freq_t freq,
2142 rmode_t mode);
2143
2144 int (*set_powerstat)(RIG *rig, powerstat_t status);
2145 int (*get_powerstat)(RIG *rig, powerstat_t *status);
2146
2147 int (*reset)(RIG *rig, reset_t reset);
2148
2149 int (*set_ant)(RIG *rig, vfo_t vfo, ant_t ant, value_t option);
2150 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);
2151
2152 int (*set_level)(RIG *rig, vfo_t vfo, setting_t level, value_t val);
2153 int (*get_level)(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
2154
2155 int (*set_func)(RIG *rig, vfo_t vfo, setting_t func, int status);
2156 int (*get_func)(RIG *rig, vfo_t vfo, setting_t func, int *status);
2157
2158 int (*set_parm)(RIG *rig, setting_t parm, value_t val);
2159 int (*get_parm)(RIG *rig, setting_t parm, value_t *val);
2160
2161 int (*set_ext_level)(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t val);
2162 int (*get_ext_level)(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t *val);
2163
2164 int (*set_ext_func)(RIG *rig, vfo_t vfo, hamlib_token_t token, int status);
2165 int (*get_ext_func)(RIG *rig, vfo_t vfo, hamlib_token_t token, int *status);
2166
2167 int (*set_ext_parm)(RIG *rig, hamlib_token_t token, value_t val);
2168 int (*get_ext_parm)(RIG *rig, hamlib_token_t token, value_t *val);
2169
2170 int (*set_conf)(RIG *rig, hamlib_token_t token, const char *val);
2171 int (*get_conf)(RIG *rig, hamlib_token_t token, char *val);
2172
2173 int (*send_dtmf)(RIG *rig, vfo_t vfo, const char *digits);
2174 int (*recv_dtmf)(RIG *rig, vfo_t vfo, char *digits, int *length);
2175
2176 int (*send_morse)(RIG *rig, vfo_t vfo, const char *msg);
2177 int (*stop_morse)(RIG *rig, vfo_t vfo);
2178 int (*wait_morse)(RIG *rig, vfo_t vfo);
2179
2180 int (*send_voice_mem)(RIG *rig, vfo_t vfo, int ch);
2181 int (*stop_voice_mem)(RIG *rig, vfo_t vfo);
2182
2183 int (*set_bank)(RIG *rig, vfo_t vfo, int bank);
2184
2185 int (*set_mem)(RIG *rig, vfo_t vfo, int ch);
2186 int (*get_mem)(RIG *rig, vfo_t vfo, int *ch);
2187
2188 int (*vfo_op)(RIG *rig, vfo_t vfo, vfo_op_t op);
2189
2190 int (*scan)(RIG *rig, vfo_t vfo, scan_t scan, int ch);
2191
2192 int (*set_trn)(RIG *rig, int trn);
2193 int (*get_trn)(RIG *rig, int *trn);
2194
2195 int (*decode_event)(RIG *rig);
2196
2197 int (*set_channel)(RIG *rig, vfo_t vfo, const channel_t *chan);
2198 int (*get_channel)(RIG *rig, vfo_t vfo, channel_t *chan, int read_only);
2199
2200 const char * (*get_info)(RIG *rig);
2201
2202 int (*set_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
2203 int (*get_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
2204
2205 int (*set_mem_all_cb)(RIG *rig,
2206 vfo_t vfo,
2207 chan_cb_t chan_cb,
2208 confval_cb_t parm_cb,
2209 rig_ptr_t);
2210 int (*get_mem_all_cb)(RIG *rig,
2211 vfo_t vfo,
2212 chan_cb_t chan_cb,
2213 confval_cb_t parm_cb,
2214 rig_ptr_t);
2215
2216 int (*set_vfo_opt)(RIG *rig, int status); // only for Net Rigctl device
2217 int (*rig_get_vfo_info) (RIG *rig,
2218 vfo_t vfo,
2219 freq_t *freq,
2220 rmode_t *mode,
2221 pbwidth_t *width,
2222 split_t *split);
2223 int(*set_clock) (RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset);
2224 int(*get_clock) (RIG *rig, int *year, int *month, int *day, int *hour, int *min, int *sec, double *msec, int *utc_offset);
2225
2226 const char *clone_combo_set;
2227 const char *clone_combo_get;
2228 const char *macro_name;
2229
2231 int (*read_frame_direct)(RIG *rig,
2232 size_t buffer_length,
2233 const unsigned char *buffer);
2234 int (*is_async_frame)(RIG *rig,
2235 size_t frame_length,
2236 const unsigned char *frame);
2237 int (*process_async_frame)(RIG *rig,
2238 size_t frame_length,
2239 const unsigned char *frame);
2240// this will be used to check rigcaps structure is compatible with client
2241 char *hamlib_check_rig_caps; // a constant value we can check for hamlib integrity
2242 int (*get_conf2)(RIG *rig, hamlib_token_t token, char *val, int val_len);
2243 int (*password)(RIG *rig, const char *key1); /*< Send encrypted password if rigctld is secured with -A/--password */
2244 int (*set_lock_mode)(RIG *rig, int mode);
2245 int (*get_lock_mode)(RIG *rig, int *mode);
2247 short morse_qsize; /* max length of morse */
2248// int (*bandwidth2rig)(RIG *rig, enum bandwidth_t bandwidth);
2249// enum bandwidth_t (*rig2bandwidth)(RIG *rig, int rigbandwidth);
2250};
2251
2252
2257// all functions enumerated for rig_get_function_ptr
2259 RIG_FUNCTION_INIT,
2260 RIG_FUNCTION_CLEANUP,
2261 RIG_FUNCTION_OPEN,
2262 RIG_FUNCTION_CLOSE,
2263 RIG_FUNCTION_SET_FREQ,
2264 RIG_FUNCTION_GET_FREQ,
2265 RIG_FUNCTION_SET_MODE,
2266 RIG_FUNCTION_GET_MODE,
2267 RIG_FUNCTION_SET_VFO,
2268 RIG_FUNCTION_GET_VFO,
2269 RIG_FUNCTION_SET_PTT,
2270 RIG_FUNCTION_GET_PTT,
2271 RIG_FUNCTION_GET_DCD,
2272 RIG_FUNCTION_SET_RPTR_SHIFT,
2273 RIG_FUNCTION_GET_RPTR_SHIFT,
2274 RIG_FUNCTION_SET_RPTR_OFFS,
2275 RIG_FUNCTION_GET_RPTR_OFFS,
2276 RIG_FUNCTION_SET_SPLIT_FREQ,
2277 RIG_FUNCTION_GET_SPLIT_FREQ,
2278 RIG_FUNCTION_SET_SPLIT_MODE,
2279 RIG_FUNCTION_SET_SPLIT_FREQ_MODE,
2280 RIG_FUNCTION_GET_SPLIT_FREQ_MODE,
2281 RIG_FUNCTION_SET_SPLIT_VFO,
2282 RIG_FUNCTION_GET_SPLIT_VFO,
2283 RIG_FUNCTION_SET_RIT,
2284 RIG_FUNCTION_GET_RIT,
2285 RIG_FUNCTION_SET_XIT,
2286 RIG_FUNCTION_GET_XIT,
2287 RIG_FUNCTION_SET_TS,
2288 RIG_FUNCTION_GET_TS,
2289 RIG_FUNCTION_SET_DCS_CODE,
2290 RIG_FUNCTION_GET_DCS_CODE,
2291 RIG_FUNCTION_SET_TONE,
2292 RIG_FUNCTION_GET_TONE,
2293 RIG_FUNCTION_SET_CTCSS_TONE,
2294 RIG_FUNCTION_GET_CTCSS_TONE,
2295 RIG_FUNCTION_SET_DCS_SQL,
2296 RIG_FUNCTION_GET_DCS_SQL,
2297 RIG_FUNCTION_SET_TONE_SQL,
2298 RIG_FUNCTION_GET_TONE_SQL,
2299 RIG_FUNCTION_SET_CTCSS_SQL,
2300 RIG_FUNCTION_GET_CTCSS_SQL,
2301 RIG_FUNCTION_POWER2MW,
2302 RIG_FUNCTION_MW2POWER,
2303 RIG_FUNCTION_SET_POWERSTAT,
2304 RIG_FUNCTION_GET_POWERSTAT,
2305 RIG_FUNCTION_RESET,
2306 RIG_FUNCTION_SET_ANT,
2307 RIG_FUNCTION_GET_ANT,
2308 RIG_FUNCTION_SET_LEVEL,
2309 RIG_FUNCTION_GET_LEVEL,
2310 RIG_FUNCTION_SET_FUNC,
2311 RIG_FUNCTION_GET_FUNC,
2312 RIG_FUNCTION_SET_PARM,
2313 RIG_FUNCTION_GET_PARM,
2314 RIG_FUNCTION_SET_EXT_LEVEL,
2315 RIG_FUNCTION_GET_EXT_LEVEL,
2316 RIG_FUNCTION_SET_EXT_FUNC,
2317 RIG_FUNCTION_GET_EXT_FUNC,
2318 RIG_FUNCTION_SET_EXT_PARM,
2319 RIG_FUNCTION_GET_EXT_PARM,
2320 RIG_FUNCTION_SET_CONF,
2321 RIG_FUNCTION_GET_CONF,
2322 RIG_FUNCTION_SEND_DTMF,
2323 RIG_FUNCTION_SEND_MORSE,
2324 RIG_FUNCTION_STOP_MORSE,
2325 RIG_FUNCTION_WAIT_MORSE,
2326 RIG_FUNCTION_SEND_VOICE_MEM,
2327 RIG_FUNCTION_SET_BANK,
2328 RIG_FUNCTION_SET_MEM,
2329 RIG_FUNCTION_GET_MEM,
2330 RIG_FUNCTION_VFO_OP,
2331 RIG_FUNCTION_SCAN,
2332 RIG_FUNCTION_SET_TRN,
2333 RIG_FUNCTION_GET_TRN,
2334 RIG_FUNCTION_DECODE_EVENT,
2335 RIG_FUNCTION_SET_CHANNEL,
2336 RIG_FUNCTION_GET_CHANNEL,
2337 RIG_FUNCTION_GET_INFO,
2338 RIG_FUNCTION_SET_CHAN_ALL_CB,
2339 RIG_FUNCTION_GET_CHAN_ALL_CB,
2340 RIG_FUNCTION_SET_MEM_ALL_CB,
2341 RIG_FUNCTION_GET_MEM_ALL_CB,
2342 RIG_FUNCTION_SET_VFO_OPT,
2343 RIG_FUNCTION_READ_FRAME_DIRECT,
2344 RIG_FUNCTION_IS_ASYNC_FRAME,
2345 RIG_FUNCTION_PROCESS_ASYNC_FRAME,
2346 RIG_FUNCTION_GET_CONF2,
2347 RIG_FUNCTION_STOP_VOICE_MEM,
2348};
2349
2354extern HAMLIB_EXPORT (void *) rig_get_function_ptr(rig_model_t rig_model, enum rig_function_e rig_function);
2355
2360// values enumerated for rig->caps values
2362 RIG_CAPS_TARGETABLE_VFO,
2363 RIG_CAPS_RIG_MODEL,
2364 RIG_CAPS_PORT_TYPE,
2365 RIG_CAPS_PTT_TYPE,
2366 RIG_CAPS_HAS_GET_LEVEL,
2367 RIG_CAPS_HAS_SET_LEVEL,
2368};
2369
2370enum rig_caps_cptr_e {
2371 RIG_CAPS_VERSION_CPTR,
2372 RIG_CAPS_MFG_NAME_CPTR,
2373 RIG_CAPS_MODEL_NAME_CPTR,
2374 RIG_CAPS_STATUS_CPTR
2375};
2376
2381extern HAMLIB_EXPORT (uint64_t) rig_get_caps_int(rig_model_t rig_model, enum rig_caps_int_e rig_caps);
2382
2387extern HAMLIB_EXPORT (const char *) rig_get_caps_cptr(rig_model_t rig_model, enum rig_caps_cptr_e rig_caps);
2388
2389struct hamlib_async_pipe;
2390
2391typedef struct hamlib_async_pipe hamlib_async_pipe_t;
2392
2393//---Start cut here---
2394// Definition of struct hamlib_port moved to port.h
2395// Temporary include here until 5.0
2396/* For non-invasive debugging */
2397#ifndef NO_OLD_INCLUDES
2398__END_DECLS
2399
2400#include <hamlib/port.h>
2401
2402__BEGIN_DECLS
2403#endif
2404
2405//---End cut here---
2406/* Macros to access data structures/pointers
2407 * Make it easier to change location in preparation
2408 * for moving them out of rig->state.
2409 * See https://github.com/Hamlib/Hamlib/issues/1445
2410 * https://github.com/Hamlib/Hamlib/issues/1452
2411 * https://github.com/Hamlib/Hamlib/issues/1420
2412 * https://github.com/Hamlib/Hamlib/issues/536
2413 * https://github.com/Hamlib/Hamlib/issues/487
2414 */
2415// Note: Experimental, and subject to change!!
2416#if defined(IN_HAMLIB)
2417/* These are for internal use only */
2418#define RIGPORT(r) (&(r)->state.rigport)
2419#define PTTPORT(r) (&(r)->state.pttport)
2420#define DCDPORT(r) (&(r)->state.dcdport)
2421//Moved to src/cache.h #define CACHE(r) ((r)->cache_addr)
2422#define AMPPORT(a) (&(a)->state.ampport)
2423#define ROTPORT(r) (&(r)->state.rotport)
2424#define ROTPORT2(r) (&(r)->state.rotport2)
2425//Moved to include/hamlib/rig_state.h #define STATE(r) (&r->state)
2426//Moved to include/hamlib/amp_state.h #define AMPSTATE(a) (&(a)->state)
2427//Moved to include/hamlib/rot_state.h #define ROTSTATE(r) (&(r)->state)
2428/* Then when the rigport address is stored as a pointer somewhere else(say,
2429 * in the rig structure itself), the definition could be changed to
2430 * #define RIGPORT(r) r->somewhereelse
2431 * and every reference is updated.
2432 */
2433#else
2434/* Define external unique names */
2435//#define HAMLIB_RIGPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_RIGPORT))
2436//#define HAMLIB_PTTPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_PTTPORT))
2437//#define HAMLIB_DCDPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_DCDPORT))
2438//#define HAMLIB_CACHE(r) ((struct rig_cache *)rig_data_pointer(r, RIG_PTRX_CACHE))
2439//#define HAMLIB_AMPPORT(a) ((hamlib_port_t *)amp_data_pointer(a, RIG_PTRX_AMPPORT))
2440//#define HAMLIB_ROTPORT(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT))
2441//#define HAMLIB_ROTPORT2(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT2))
2442//#define HAMLIB_STATE(r) ((struct rig_state *)rig_data_pointer(r, RIG_PTRX_STATE))
2443//#define HAMLIB_AMPSTATE(a) ((struct amp_state *)amp_data_pointer(a, RIG_PTRX_AMPSTATE))
2444//#define HAMLIB_ROTSTATE(r) ((struct rot_state *)rot_data_pointer(r, RIG_PTRX_ROTSTATE))
2445#endif
2446
2447typedef enum {
2448 RIG_PTRX_NONE=0,
2449 RIG_PTRX_RIGPORT,
2450 RIG_PTRX_PTTPORT,
2451 RIG_PTRX_DCDPORT,
2452 RIG_PTRX_CACHE,
2453 RIG_PTRX_AMPPORT,
2454 RIG_PTRX_ROTPORT,
2455 RIG_PTRX_ROTPORT2,
2456 RIG_PTRX_STATE,
2457 RIG_PTRX_AMPSTATE,
2458 RIG_PTRX_ROTSTATE,
2459// New entries go directly above this line====================
2460 RIG_PTRX_MAXIMUM
2461} rig_ptrx_t;
2462
2463#define HAMLIB_ELAPSED_GET 0
2464#define HAMLIB_ELAPSED_SET 1
2465#define HAMLIB_ELAPSED_INVALIDATE 2
2466
2467#define HAMLIB_CACHE_ALWAYS (-1)
2468
2469typedef enum {
2470 HAMLIB_CACHE_ALL, // to set all cache timeouts at once
2471 HAMLIB_CACHE_VFO,
2472 HAMLIB_CACHE_FREQ,
2473 HAMLIB_CACHE_MODE,
2474 HAMLIB_CACHE_PTT,
2475 HAMLIB_CACHE_SPLIT,
2476 HAMLIB_CACHE_WIDTH
2477} hamlib_cache_t;
2478
2479typedef enum {
2480 TWIDDLE_OFF,
2481 TWIDDLE_ON
2482} twiddle_state_t;
2483
2492 int timeout_ms; // the cache timeout for invalidating itself
2493 vfo_t vfo;
2494 //freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1
2495 // other abstraction here is based on dual vfo rigs and mapped to all others
2496 // So we have four possible states of rig
2497 // MainA, MainB, SubA, SubB
2498 // Main is the Main VFO and Sub is for the 2nd VFO
2499 // Most rigs have MainA and MainB
2500 // Dual VFO rigs can have SubA and SubB too
2501 // For dual VFO rigs simplex operations are all done on MainA/MainB -- ergo this abstraction
2502 freq_t freqCurr; // Other VFO
2503 freq_t freqOther; // Other VFO
2504 freq_t freqMainA; // VFO_A, VFO_MAIN, and VFO_MAINA
2505 freq_t freqMainB; // VFO_B, VFO_SUB, and VFO_MAINB
2506 freq_t freqMainC; // VFO_C, VFO_MAINC
2507 freq_t freqSubA; // VFO_SUBA -- only for rigs with dual Sub VFOs
2508 freq_t freqSubB; // VFO_SUBB -- only for rigs with dual Sub VFOs
2509 freq_t freqSubC; // VFO_SUBC -- only for rigs with 3 Sub VFOs
2510 freq_t freqMem; // VFO_MEM -- last MEM channel
2511 rmode_t modeCurr;
2512 rmode_t modeOther;
2513 rmode_t modeMainA;
2514 rmode_t modeMainB;
2515 rmode_t modeMainC;
2516 rmode_t modeSubA;
2517 rmode_t modeSubB;
2518 rmode_t modeSubC;
2519 rmode_t modeMem;
2520 pbwidth_t widthCurr; // if non-zero then rig has separate width for MainA
2521 pbwidth_t widthOther; // if non-zero then rig has separate width for MainA
2522 pbwidth_t widthMainA; // if non-zero then rig has separate width for MainA
2523 pbwidth_t widthMainB; // if non-zero then rig has separate width for MainB
2524 pbwidth_t widthMainC; // if non-zero then rig has separate width for MainC
2525 pbwidth_t widthSubA; // if non-zero then rig has separate width for SubA
2526 pbwidth_t widthSubB; // if non-zero then rig has separate width for SubB
2527 pbwidth_t widthSubC; // if non-zero then rig has separate width for SubC
2528 pbwidth_t widthMem; // if non-zero then rig has separate width for Mem
2529 ptt_t ptt;
2530 split_t split;
2531 vfo_t split_vfo; // split caches two values
2532 struct timespec time_freqCurr;
2533 struct timespec time_freqOther;
2534 struct timespec time_freqMainA;
2535 struct timespec time_freqMainB;
2536 struct timespec time_freqMainC;
2537 struct timespec time_freqSubA;
2538 struct timespec time_freqSubB;
2539 struct timespec time_freqSubC;
2540 struct timespec time_freqMem;
2541 struct timespec time_vfo;
2542 struct timespec time_modeCurr;
2543 struct timespec time_modeOther;
2544 struct timespec time_modeMainA;
2545 struct timespec time_modeMainB;
2546 struct timespec time_modeMainC;
2547 struct timespec time_modeSubA;
2548 struct timespec time_modeSubB;
2549 struct timespec time_modeSubC;
2550 struct timespec time_modeMem;
2551 struct timespec time_widthCurr;
2552 struct timespec time_widthOther;
2553 struct timespec time_widthMainA;
2554 struct timespec time_widthMainB;
2555 struct timespec time_widthMainC;
2556 struct timespec time_widthSubA;
2557 struct timespec time_widthSubB;
2558 struct timespec time_widthSubC;
2559 struct timespec time_widthMem;
2560 struct timespec time_ptt;
2561 struct timespec time_split;
2562 int satmode; // if rig is in satellite mode
2563};
2564
2569#include <hamlib/multicast.h>
2571{
2572 int multicast_running;
2573 int sock;
2574 int seqnumber;
2575 volatile int runflag; // = 0;
2576 pthread_t threadid;
2577 // this mutex is needed to control serial access
2578 // as of 2023-05-13 we have main thread and multicast thread needing it
2579 // eventually we should be able to use cached info only in the main thread to avoid contention
2580 pthread_mutex_t mutex;
2581 int mutex_initialized;
2582//#ifdef HAVE_ARPA_INET_H
2583 //struct ip_mreq mreq; // = {0};
2584 struct sockaddr_in dest_addr; // = {0};
2585 int port;
2586//#endif
2587};
2588
2589typedef unsigned int rig_comm_status_t;
2590
2591#define RIG_COMM_STATUS_OK 0x00
2592#define RIG_COMM_STATUS_CONNECTING 0x01
2593#define RIG_COMM_STATUS_DISCONNECTED 0x02
2594#define RIG_COMM_STATUS_TERMINATED 0x03
2595#define RIG_COMM_STATUS_WARNING 0x04
2596#define RIG_COMM_STATUS_ERROR 0x05
2597
2598//---Start cut here---
2599/* rig_state definition moved to include/hamlib/rig_state.h */
2600#ifndef NO_OLD_INCLUDES
2601
2602__END_DECLS
2603
2604#include <hamlib/rig_state.h>
2605
2606__BEGIN_DECLS
2607
2608#endif
2609//---End cut here---
2610
2612typedef int (*vprintf_cb_t)(enum rig_debug_level_e,
2613 rig_ptr_t,
2614 const char *,
2615 va_list);
2616
2617typedef int (*freq_cb_t)(RIG *, vfo_t, freq_t, rig_ptr_t);
2618typedef int (*mode_cb_t)(RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t);
2619typedef int (*vfo_cb_t)(RIG *, vfo_t, rig_ptr_t);
2620typedef int (*ptt_cb_t)(RIG *, vfo_t, ptt_t, rig_ptr_t);
2621typedef int (*dcd_cb_t)(RIG *, vfo_t, dcd_t, rig_ptr_t);
2622typedef int (*pltune_cb_t)(RIG *,
2623 vfo_t, freq_t *,
2624 rmode_t *,
2625 pbwidth_t *,
2626 rig_ptr_t);
2627typedef int (*spectrum_cb_t)(RIG *,
2628 struct rig_spectrum_line *,
2629 rig_ptr_t);
2630
2632
2650// Do NOT add/remove from this structure -- it will break DLL backwards compatibility
2652 freq_cb_t freq_event;
2653 rig_ptr_t freq_arg;
2654 mode_cb_t mode_event;
2655 rig_ptr_t mode_arg;
2656 vfo_cb_t vfo_event;
2657 rig_ptr_t vfo_arg;
2658 ptt_cb_t ptt_event;
2659 rig_ptr_t ptt_arg;
2660 dcd_cb_t dcd_event;
2661 rig_ptr_t dcd_arg;
2662 pltune_cb_t pltune;
2663 rig_ptr_t pltune_arg;
2664 spectrum_cb_t spectrum_event;
2665 rig_ptr_t spectrum_arg;
2666 /* etc.. */
2667};
2668
2669
2679struct s_rig {
2680 struct rig_caps *caps;
2681 // Do not remove the deprecated structure -- it will mess up DLL backwards compatibility
2684 // state should really be a pointer but that's a LOT of changes involved
2686/* Data beyond this line is for hamlib internal use only,
2687 * and should *NOT* be referenced by applications, as layout will change!
2688 */
2689 struct rig_cache *cache_addr;
2690};
2691
2692
2693
2694/* --------------- API function prototypes -----------------*/
2695
2697
2698extern HAMLIB_EXPORT(RIG *) rig_init HAMLIB_PARAMS((rig_model_t rig_model));
2699extern HAMLIB_EXPORT(int) rig_open HAMLIB_PARAMS((RIG *rig));
2700
2701/*
2702 * General API commands, from most primitive to least.. :()
2703 * List Set/Get functions pairs
2704 */
2705
2706extern HAMLIB_EXPORT(int)
2707rig_flush_force(hamlib_port_t *port, int flush_async_data);
2708
2709extern HAMLIB_EXPORT(int)
2710rig_flush(hamlib_port_t *port);
2711
2712extern HAMLIB_EXPORT(void)
2713rig_lock(RIG *rig, int lock);
2714
2715#if BUILTINFUNC
2716#define rig_set_freq(r,v,f) rig_set_freq(r,v,f,__builtin_FUNCTION())
2717extern HAMLIB_EXPORT(int)
2718rig_set_freq HAMLIB_PARAMS((RIG *rig,
2719 vfo_t vfo,
2720 freq_t freq, const char*));
2721#else
2722extern HAMLIB_EXPORT(int)
2723rig_set_freq HAMLIB_PARAMS((RIG *rig,
2724 vfo_t vfo,
2725 freq_t freq));
2726#endif
2727#if BUILTINFUNC
2728#define rig_get_freq(r,v,f) rig_get_freq(r,v,f,__builtin_FUNCTION())
2729extern HAMLIB_EXPORT(int)
2730rig_get_freq HAMLIB_PARAMS((RIG *rig,
2731 vfo_t vfo,
2732 freq_t *freq, const char*));
2733#else
2734extern HAMLIB_EXPORT(int)
2735rig_get_freq HAMLIB_PARAMS((RIG *rig,
2736 vfo_t vfo,
2737 freq_t *freq));
2738#endif
2739
2740extern HAMLIB_EXPORT(int)
2741rig_set_mode HAMLIB_PARAMS((RIG *rig,
2742 vfo_t vfo,
2743 rmode_t mode,
2744 pbwidth_t width));
2745extern HAMLIB_EXPORT(int)
2746rig_get_mode HAMLIB_PARAMS((RIG *rig,
2747 vfo_t vfo,
2748 rmode_t *mode,
2749 pbwidth_t *width));
2750
2751#if BUILTINFUNC
2752#define rig_set_vfo(r,v) rig_set_vfo(r,v,__builtin_FUNCTION())
2753extern HAMLIB_EXPORT(int)
2754rig_set_vfo HAMLIB_PARAMS((RIG *rig,
2755 vfo_t vfo, const char *func));
2756#else
2757extern HAMLIB_EXPORT(int)
2758rig_set_vfo HAMLIB_PARAMS((RIG *rig,
2759 vfo_t vfo));
2760#endif
2761extern HAMLIB_EXPORT(int)
2762rig_get_vfo HAMLIB_PARAMS((RIG *rig,
2763 vfo_t *vfo));
2764
2765extern HAMLIB_EXPORT(int)
2766rig_get_vfo_info HAMLIB_PARAMS((RIG *rig,
2767 vfo_t vfo,
2768 freq_t *freq,
2769 rmode_t *mode,
2770 pbwidth_t *width,
2771 split_t *split,
2772 int *satmode));
2773
2774extern HAMLIB_EXPORT(int)
2775rig_get_vfo_list HAMLIB_PARAMS((RIG *rig, char *buf, int buflen));
2776
2777extern HAMLIB_EXPORT(int)
2778netrigctl_get_vfo_mode HAMLIB_PARAMS((RIG *rig));
2779
2780extern HAMLIB_EXPORT(int)
2781rig_set_ptt HAMLIB_PARAMS((RIG *rig,
2782 vfo_t vfo,
2783 ptt_t ptt));
2784extern HAMLIB_EXPORT(int)
2785rig_get_ptt HAMLIB_PARAMS((RIG *rig,
2786 vfo_t vfo,
2787 ptt_t *ptt));
2788
2789extern HAMLIB_EXPORT(int)
2790rig_get_dcd HAMLIB_PARAMS((RIG *rig,
2791 vfo_t vfo,
2792 dcd_t *dcd));
2793
2794extern HAMLIB_EXPORT(int)
2795rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig,
2796 vfo_t vfo,
2797 rptr_shift_t rptr_shift));
2798extern HAMLIB_EXPORT(int)
2799rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig,
2800 vfo_t vfo,
2801 rptr_shift_t *rptr_shift));
2802
2803extern HAMLIB_EXPORT(int)
2804rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig,
2805 vfo_t vfo,
2806 shortfreq_t rptr_offs));
2807extern HAMLIB_EXPORT(int)
2808rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig,
2809 vfo_t vfo,
2810 shortfreq_t *rptr_offs));
2811
2812extern HAMLIB_EXPORT(int)
2813rig_set_ctcss_tone HAMLIB_PARAMS((RIG *rig,
2814 vfo_t vfo,
2815 tone_t tone));
2816extern HAMLIB_EXPORT(int)
2817rig_get_ctcss_tone HAMLIB_PARAMS((RIG *rig,
2818 vfo_t vfo,
2819 tone_t *tone));
2820
2821extern HAMLIB_EXPORT(int)
2822rig_set_dcs_code HAMLIB_PARAMS((RIG *rig,
2823 vfo_t vfo,
2824 tone_t code));
2825extern HAMLIB_EXPORT(int)
2826rig_get_dcs_code HAMLIB_PARAMS((RIG *rig,
2827 vfo_t vfo,
2828 tone_t *code));
2829
2830extern HAMLIB_EXPORT(int)
2831rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig,
2832 vfo_t vfo,
2833 tone_t tone));
2834extern HAMLIB_EXPORT(int)
2835rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig,
2836 vfo_t vfo,
2837 tone_t *tone));
2838
2839extern HAMLIB_EXPORT(int)
2840rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig,
2841 vfo_t vfo,
2842 tone_t code));
2843extern HAMLIB_EXPORT(int)
2844rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig,
2845 vfo_t vfo,
2846 tone_t *code));
2847
2848extern HAMLIB_EXPORT(int)
2849rig_set_split_freq HAMLIB_PARAMS((RIG *rig,
2850 vfo_t vfo,
2851 freq_t tx_freq));
2852extern HAMLIB_EXPORT(int)
2853rig_get_split_freq HAMLIB_PARAMS((RIG *rig,
2854 vfo_t vfo,
2855 freq_t *tx_freq));
2856
2857extern HAMLIB_EXPORT(int)
2858rig_set_split_mode HAMLIB_PARAMS((RIG *rig,
2859 vfo_t vfo,
2860 rmode_t tx_mode,
2861 pbwidth_t tx_width));
2862extern HAMLIB_EXPORT(int)
2863rig_get_split_mode HAMLIB_PARAMS((RIG *rig,
2864 vfo_t vfo,
2865 rmode_t *tx_mode,
2866 pbwidth_t *tx_width));
2867
2868extern HAMLIB_EXPORT(int)
2869rig_set_split_freq_mode HAMLIB_PARAMS((RIG *rig,
2870 vfo_t vfo,
2871 freq_t tx_freq,
2872 rmode_t tx_mode,
2873 pbwidth_t tx_width));
2874extern HAMLIB_EXPORT(int)
2875rig_get_split_freq_mode HAMLIB_PARAMS((RIG *rig,
2876 vfo_t vfo,
2877 freq_t *tx_freq,
2878 rmode_t *tx_mode,
2879 pbwidth_t *tx_width));
2880
2881extern HAMLIB_EXPORT(int)
2882rig_set_split_vfo HAMLIB_PARAMS((RIG *,
2883 vfo_t rx_vfo,
2884 split_t split,
2885 vfo_t tx_vfo));
2886extern HAMLIB_EXPORT(int)
2887rig_get_split_vfo HAMLIB_PARAMS((RIG *,
2888 vfo_t rx_vfo,
2889 split_t *split,
2890 vfo_t *tx_vfo));
2891
2892extern HAMLIB_EXPORT(int)
2893rig_set_rit HAMLIB_PARAMS((RIG *rig,
2894 vfo_t vfo,
2895 shortfreq_t rit));
2896extern HAMLIB_EXPORT(int)
2897rig_get_rit HAMLIB_PARAMS((RIG *rig,
2898 vfo_t vfo,
2899 shortfreq_t *rit));
2900
2901extern HAMLIB_EXPORT(int)
2902rig_set_xit HAMLIB_PARAMS((RIG *rig,
2903 vfo_t vfo,
2904 shortfreq_t xit));
2905extern HAMLIB_EXPORT(int)
2906rig_get_xit HAMLIB_PARAMS((RIG *rig,
2907 vfo_t vfo,
2908 shortfreq_t *xit));
2909
2910extern HAMLIB_EXPORT(int)
2911rig_set_ts HAMLIB_PARAMS((RIG *rig,
2912 vfo_t vfo,
2913 shortfreq_t ts));
2914extern HAMLIB_EXPORT(int)
2915rig_get_ts HAMLIB_PARAMS((RIG *rig,
2916 vfo_t vfo,
2917 shortfreq_t *ts));
2918
2919extern HAMLIB_EXPORT(int)
2920rig_power2mW HAMLIB_PARAMS((RIG *rig,
2921 unsigned int *mwpower,
2922 float power,
2923 freq_t freq,
2924 rmode_t mode));
2925extern HAMLIB_EXPORT(int)
2926rig_mW2power HAMLIB_PARAMS((RIG *rig,
2927 float *power,
2928 unsigned int mwpower,
2929 freq_t freq,
2930 rmode_t mode));
2931
2932extern HAMLIB_EXPORT(shortfreq_t)
2933rig_get_resolution HAMLIB_PARAMS((RIG *rig,
2934 rmode_t mode));
2935
2936extern HAMLIB_EXPORT(int)
2937rig_set_level HAMLIB_PARAMS((RIG *rig,
2938 vfo_t vfo,
2939 setting_t level,
2940 value_t val));
2941extern HAMLIB_EXPORT(int)
2942rig_get_level HAMLIB_PARAMS((RIG *rig,
2943 vfo_t vfo,
2944 setting_t level,
2945 value_t *val));
2946
2947#define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s))
2948
2949extern HAMLIB_EXPORT(int)
2950rig_set_parm HAMLIB_PARAMS((RIG *rig,
2951 setting_t parm,
2952 value_t val));
2953extern HAMLIB_EXPORT(int)
2954rig_get_parm HAMLIB_PARAMS((RIG *rig,
2955 setting_t parm,
2956 value_t *val));
2957
2958extern HAMLIB_EXPORT(int)
2959rig_set_conf HAMLIB_PARAMS((RIG *rig,
2960 hamlib_token_t token,
2961 const char *val));
2962// deprecating rig_get_conf
2963HL_DEPRECATED extern HAMLIB_EXPORT(int)
2964rig_get_conf HAMLIB_PARAMS((RIG *rig,
2965 hamlib_token_t token,
2966 char *val));
2967extern HAMLIB_EXPORT(int)
2968rig_get_conf2 HAMLIB_PARAMS((RIG *rig,
2969 hamlib_token_t token,
2970 char *val,
2971 int val_len));
2972
2973extern HAMLIB_EXPORT(int)
2974rig_set_powerstat HAMLIB_PARAMS((RIG *rig,
2975 powerstat_t status));
2976extern HAMLIB_EXPORT(int)
2977rig_get_powerstat HAMLIB_PARAMS((RIG *rig,
2978 powerstat_t *status));
2979
2980extern HAMLIB_EXPORT(int)
2981rig_reset HAMLIB_PARAMS((RIG *rig,
2982 reset_t reset)); /* dangerous! */
2983
2984extern HAMLIB_EXPORT(int)
2985rig_set_ext_level HAMLIB_PARAMS((RIG *rig,
2986 vfo_t vfo,
2987 hamlib_token_t token,
2988 value_t val));
2989extern HAMLIB_EXPORT(int)
2990rig_get_ext_level HAMLIB_PARAMS((RIG *rig,
2991 vfo_t vfo,
2992 hamlib_token_t token,
2993 value_t *val));
2994
2995extern HAMLIB_EXPORT(int)
2996rig_set_ext_func HAMLIB_PARAMS((RIG *rig,
2997 vfo_t vfo,
2998 hamlib_token_t token,
2999 int status));
3000extern HAMLIB_EXPORT(int)
3001rig_get_ext_func HAMLIB_PARAMS((RIG *rig,
3002 vfo_t vfo,
3003 hamlib_token_t token,
3004 int *status));
3005
3006extern HAMLIB_EXPORT(int)
3007rig_set_ext_parm HAMLIB_PARAMS((RIG *rig,
3008 hamlib_token_t token,
3009 value_t val));
3010extern HAMLIB_EXPORT(int)
3011rig_get_ext_parm HAMLIB_PARAMS((RIG *rig,
3012 hamlib_token_t token,
3013 value_t *val));
3014
3015extern HAMLIB_EXPORT(int)
3016rig_ext_func_foreach HAMLIB_PARAMS((RIG *rig,
3017 int (*cfunc)(RIG *,
3018 const struct confparams *,
3019 rig_ptr_t),
3020 rig_ptr_t data));
3021extern HAMLIB_EXPORT(int)
3022rig_ext_level_foreach HAMLIB_PARAMS((RIG *rig,
3023 int (*cfunc)(RIG *,
3024 const struct confparams *,
3025 rig_ptr_t),
3026 rig_ptr_t data));
3027extern HAMLIB_EXPORT(int)
3028rig_ext_parm_foreach HAMLIB_PARAMS((RIG *rig,
3029 int (*cfunc)(RIG *,
3030 const struct confparams *,
3031 rig_ptr_t),
3032 rig_ptr_t data));
3033
3034extern HAMLIB_EXPORT(const struct confparams *)
3035rig_ext_lookup HAMLIB_PARAMS((RIG *rig,
3036 const char *name));
3037
3038extern HAMLIB_EXPORT(const struct confparams *)
3039rig_ext_lookup_tok HAMLIB_PARAMS((RIG *rig,
3040 hamlib_token_t token));
3041extern HAMLIB_EXPORT(hamlib_token_t)
3042rig_ext_token_lookup HAMLIB_PARAMS((RIG *rig,
3043 const char *name));
3044
3045
3046extern HAMLIB_EXPORT(int)
3047rig_token_foreach HAMLIB_PARAMS((RIG *rig,
3048 int (*cfunc)(const struct confparams *,
3049 rig_ptr_t),
3050 rig_ptr_t data));
3051
3052extern HAMLIB_EXPORT(const struct confparams *)
3053rig_confparam_lookup HAMLIB_PARAMS((RIG *rig,
3054 const char *name));
3055extern HAMLIB_EXPORT(hamlib_token_t)
3056rig_token_lookup HAMLIB_PARAMS((RIG *rig,
3057 const char *name));
3058
3059extern HAMLIB_EXPORT(int)
3060rig_close HAMLIB_PARAMS((RIG *rig));
3061
3062extern HAMLIB_EXPORT(int)
3063rig_cleanup HAMLIB_PARAMS((RIG *rig));
3064
3065extern HAMLIB_EXPORT(int)
3066rig_set_ant HAMLIB_PARAMS((RIG *rig,
3067 vfo_t vfo,
3068 ant_t ant, /* antenna */
3069 value_t option)); /* optional ant info */
3070extern HAMLIB_EXPORT(int)
3071rig_get_ant HAMLIB_PARAMS((RIG *rig,
3072 vfo_t vfo,
3073 ant_t ant,
3074 value_t *option,
3075 ant_t *ant_curr,
3076 ant_t *ant_tx,
3077 ant_t *ant_rx));
3078
3079extern HAMLIB_EXPORT(setting_t)
3080rig_has_get_level HAMLIB_PARAMS((RIG *rig,
3081 setting_t level));
3082extern HAMLIB_EXPORT(setting_t)
3083rig_has_set_level HAMLIB_PARAMS((RIG *rig,
3084 setting_t level));
3085
3086extern HAMLIB_EXPORT(setting_t)
3087rig_has_get_parm HAMLIB_PARAMS((RIG *rig,
3088 setting_t parm));
3089extern HAMLIB_EXPORT(setting_t)
3090rig_has_set_parm HAMLIB_PARAMS((RIG *rig,
3091 setting_t parm));
3092
3093extern HAMLIB_EXPORT(setting_t)
3094rig_has_get_func HAMLIB_PARAMS((RIG *rig,
3095 setting_t func));
3096extern HAMLIB_EXPORT(setting_t)
3097rig_has_set_func HAMLIB_PARAMS((RIG *rig,
3098 setting_t func));
3099
3100extern HAMLIB_EXPORT(int)
3101rig_set_func HAMLIB_PARAMS((RIG *rig,
3102 vfo_t vfo,
3103 setting_t func,
3104 int status));
3105extern HAMLIB_EXPORT(int)
3106rig_get_func HAMLIB_PARAMS((RIG *rig,
3107 vfo_t vfo,
3108 setting_t func,
3109 int *status));
3110
3111extern HAMLIB_EXPORT(int)
3112rig_send_dtmf HAMLIB_PARAMS((RIG *rig,
3113 vfo_t vfo,
3114 const char *digits));
3115extern HAMLIB_EXPORT(int)
3116rig_recv_dtmf HAMLIB_PARAMS((RIG *rig,
3117 vfo_t vfo,
3118 char *digits,
3119 int *length));
3120
3121extern HAMLIB_EXPORT(int)
3122rig_send_morse HAMLIB_PARAMS((RIG *rig,
3123 vfo_t vfo,
3124 const char *msg));
3125
3126extern HAMLIB_EXPORT(int)
3127rig_stop_morse HAMLIB_PARAMS((RIG *rig,
3128 vfo_t vfo));
3129
3130extern HAMLIB_EXPORT(int)
3131rig_wait_morse HAMLIB_PARAMS((RIG *rig,
3132 vfo_t vfo));
3133
3134extern HAMLIB_EXPORT(int)
3135rig_send_voice_mem HAMLIB_PARAMS((RIG *rig,
3136 vfo_t vfo,
3137 int ch));
3138
3139extern HAMLIB_EXPORT(int)
3140rig_stop_voice_mem HAMLIB_PARAMS((RIG *rig,
3141 vfo_t vfo));
3142
3143extern HAMLIB_EXPORT(int)
3144rig_set_bank HAMLIB_PARAMS((RIG *rig,
3145 vfo_t vfo,
3146 int bank));
3147
3148extern HAMLIB_EXPORT(int)
3149rig_set_mem HAMLIB_PARAMS((RIG *rig,
3150 vfo_t vfo,
3151 int ch));
3152extern HAMLIB_EXPORT(int)
3153rig_get_mem HAMLIB_PARAMS((RIG *rig,
3154 vfo_t vfo,
3155 int *ch));
3156
3157extern HAMLIB_EXPORT(int)
3158rig_vfo_op HAMLIB_PARAMS((RIG *rig,
3159 vfo_t vfo,
3160 vfo_op_t op));
3161
3162extern HAMLIB_EXPORT(vfo_op_t)
3163rig_has_vfo_op HAMLIB_PARAMS((RIG *rig,
3164 vfo_op_t op));
3165
3166extern HAMLIB_EXPORT(int)
3167rig_scan HAMLIB_PARAMS((RIG *rig,
3168 vfo_t vfo,
3169 scan_t scan,
3170 int ch));
3171
3172extern HAMLIB_EXPORT(scan_t)
3173rig_has_scan HAMLIB_PARAMS((RIG *rig,
3174 scan_t scan));
3175
3176extern HAMLIB_EXPORT(int)
3177rig_set_channel HAMLIB_PARAMS((RIG *rig,
3178 vfo_t vfo,
3179 const channel_t *chan)); /* mem */
3180extern HAMLIB_EXPORT(int)
3181rig_get_channel HAMLIB_PARAMS((RIG *rig,
3182 vfo_t vfo,
3183 channel_t *chan, int read_only));
3184
3185extern HAMLIB_EXPORT(int)
3186rig_set_chan_all HAMLIB_PARAMS((RIG *rig,
3187 vfo_t vfo,
3188 const channel_t chans[]));
3189extern HAMLIB_EXPORT(int)
3190rig_get_chan_all HAMLIB_PARAMS((RIG *rig,
3191 vfo_t vfo,
3192 channel_t chans[]));
3193
3194extern HAMLIB_EXPORT(int)
3195rig_set_chan_all_cb HAMLIB_PARAMS((RIG *rig,
3196 vfo_t vfo,
3197 chan_cb_t chan_cb,
3198 rig_ptr_t));
3199extern HAMLIB_EXPORT(int)
3200rig_get_chan_all_cb HAMLIB_PARAMS((RIG *rig,
3201 vfo_t vfo,
3202 chan_cb_t chan_cb,
3203 rig_ptr_t));
3204
3205extern HAMLIB_EXPORT(int)
3206rig_set_mem_all_cb HAMLIB_PARAMS((RIG *rig,
3207 vfo_t vfo,
3208 chan_cb_t chan_cb,
3209 confval_cb_t parm_cb,
3210 rig_ptr_t));
3211extern HAMLIB_EXPORT(int)
3212rig_get_mem_all_cb HAMLIB_PARAMS((RIG *rig,
3213 vfo_t vfo,
3214 chan_cb_t chan_cb,
3215 confval_cb_t parm_cb,
3216 rig_ptr_t));
3217
3218extern HAMLIB_EXPORT(int)
3219rig_set_mem_all HAMLIB_PARAMS((RIG *rig,
3220 vfo_t vfo,
3221 const channel_t *chan,
3222 const struct confparams *,
3223 const value_t *));
3224extern HAMLIB_EXPORT(int)
3225rig_get_mem_all HAMLIB_PARAMS((RIG *rig,
3226 vfo_t vfo,
3227 channel_t *chan,
3228 const struct confparams *,
3229 value_t *));
3230
3231extern HAMLIB_EXPORT(const chan_t *)
3232rig_lookup_mem_caps HAMLIB_PARAMS((RIG *rig,
3233 int ch));
3234
3235extern HAMLIB_EXPORT(int)
3236rig_mem_count HAMLIB_PARAMS((RIG *rig));
3237
3238extern HAMLIB_EXPORT(int)
3239rig_set_trn HAMLIB_PARAMS((RIG *rig,
3240 int trn));
3241extern HAMLIB_EXPORT(int)
3242rig_get_trn HAMLIB_PARAMS((RIG *rig,
3243 int *trn));
3244
3245extern HAMLIB_EXPORT(int)
3246rig_set_freq_callback HAMLIB_PARAMS((RIG *,
3247 freq_cb_t,
3248 rig_ptr_t));
3249
3250extern HAMLIB_EXPORT(int)
3251rig_set_mode_callback HAMLIB_PARAMS((RIG *,
3252 mode_cb_t,
3253 rig_ptr_t));
3254extern HAMLIB_EXPORT(int)
3255rig_set_vfo_callback HAMLIB_PARAMS((RIG *,
3256 vfo_cb_t,
3257 rig_ptr_t));
3258
3259extern HAMLIB_EXPORT(int)
3260rig_set_ptt_callback HAMLIB_PARAMS((RIG *,
3261 ptt_cb_t,
3262 rig_ptr_t));
3263
3264extern HAMLIB_EXPORT(int)
3265rig_set_dcd_callback HAMLIB_PARAMS((RIG *,
3266 dcd_cb_t,
3267 rig_ptr_t));
3268
3269extern HAMLIB_EXPORT(int)
3270rig_set_pltune_callback HAMLIB_PARAMS((RIG *,
3271 pltune_cb_t,
3272 rig_ptr_t));
3273
3274extern HAMLIB_EXPORT(int)
3275rig_set_spectrum_callback HAMLIB_PARAMS((RIG *,
3276 spectrum_cb_t,
3277 rig_ptr_t));
3278
3279extern HAMLIB_EXPORT(int)
3280rig_set_twiddle HAMLIB_PARAMS((RIG *rig,
3281 int seconds));
3282
3283extern HAMLIB_EXPORT(int)
3284rig_get_twiddle HAMLIB_PARAMS((RIG *rig,
3285 int *seconds));
3286
3287extern HAMLIB_EXPORT(int)
3288rig_set_uplink HAMLIB_PARAMS((RIG *rig,
3289 int val));
3290
3291extern HAMLIB_EXPORT(const char *)
3292rig_get_info HAMLIB_PARAMS((RIG *rig));
3293
3294extern HAMLIB_EXPORT(struct rig_caps *)
3295rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model));
3296
3297extern HAMLIB_EXPORT(const freq_range_t *)
3298rig_get_range HAMLIB_PARAMS((const freq_range_t *range_list,
3299 freq_t freq,
3300 rmode_t mode));
3301
3302extern HAMLIB_EXPORT(pbwidth_t)
3303rig_passband_normal HAMLIB_PARAMS((RIG *rig,
3304 rmode_t mode));
3305extern HAMLIB_EXPORT(pbwidth_t)
3306rig_passband_narrow HAMLIB_PARAMS((RIG *rig,
3307 rmode_t mode));
3308extern HAMLIB_EXPORT(pbwidth_t)
3309rig_passband_wide HAMLIB_PARAMS((RIG *rig,
3310 rmode_t mode));
3311
3312extern HAMLIB_EXPORT(const char *)
3313rigerror HAMLIB_PARAMS((int errnum));
3314extern HAMLIB_EXPORT(const char *)
3315rigerror2 HAMLIB_PARAMS((int errnum));
3316
3317extern HAMLIB_EXPORT(int)
3318rig_setting2idx HAMLIB_PARAMS((setting_t s));
3319
3320#define HAMLIB_SETTINGS_FILE "hamlib_settings"
3321
3322extern HAMLIB_EXPORT(setting_t)
3323rig_idx2setting(int i);
3324/*
3325 * Even if these functions are prefixed with "rig_", they are not rig specific
3326 * Maybe "hamlib_" would have been better. Let me know. --SF
3327 */
3328extern HAMLIB_EXPORT(void)
3329rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
3330
3331extern HAMLIB_EXPORT(void)
3332rig_get_debug HAMLIB_PARAMS((enum rig_debug_level_e *debug_level));
3333
3334extern HAMLIB_EXPORT(void)
3335rig_set_debug_time_stamp HAMLIB_PARAMS((int flag));
3336
3337#define rig_set_debug_level(level) rig_set_debug(level)
3338
3339extern HAMLIB_EXPORT(int)
3340rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
3341
3342
3343extern HAMLIB_EXPORT(void)add2debugmsgsave(const char *s);
3344// this needs to be fairly big to avoid compiler warnings
3345extern HAMLIB_EXPORT_VAR(char) debugmsgsave[DEBUGMSGSAVE_SIZE]; // last debug msg
3346extern HAMLIB_EXPORT_VAR(char) debugmsgsave2[DEBUGMSGSAVE_SIZE]; // last-1 debug msg
3347// debugmsgsave3 is deprecated
3348extern HAMLIB_EXPORT_VAR(char) debugmsgsave3[DEBUGMSGSAVE_SIZE]; // last-2 debug msg
3349#define rig_debug_clear() { debugmsgsave[0] = debugmsgsave2[0] = debugmsgsave3[0] = 0; };
3350#ifndef __cplusplus
3351#ifdef __GNUC__
3352// doing the debug macro with a dummy sprintf allows gcc to check the format string
3353#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)
3354#endif
3355#endif
3356
3357// Measuring elapsed time -- local variable inside function when macro is used
3358#define ELAPSED1 struct timespec __begin; elapsed_ms(&__begin, HAMLIB_ELAPSED_SET);
3359#define ELAPSED2 rig_debug(RIG_DEBUG_VERBOSE, "%s%d:%s: elapsed=%.0lfms\n", spaces(STATE(rig)->depth), STATE(rig)->depth, __func__, elapsed_ms(&__begin, HAMLIB_ELAPSED_GET));
3360
3361// use this instead of snprintf for automatic detection of buffer limit
3362#define SNPRINTF(s,n,...) { if (snprintf(s,n,##__VA_ARGS__) >= (n)) fprintf(stderr,"***** %s(%d): message truncated *****\n", __func__, __LINE__); }
3363
3364extern HAMLIB_EXPORT(void)
3365rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level,
3366 const char *fmt, ...));
3367
3368extern HAMLIB_EXPORT(vprintf_cb_t)
3369rig_set_debug_callback HAMLIB_PARAMS((vprintf_cb_t cb,
3370 rig_ptr_t arg));
3371
3372extern HAMLIB_EXPORT(FILE *)
3373rig_set_debug_file HAMLIB_PARAMS((FILE *stream));
3374
3375extern HAMLIB_EXPORT(int)
3376rig_register HAMLIB_PARAMS((struct rig_caps *caps));
3377
3378extern HAMLIB_EXPORT(int)
3379rig_unregister HAMLIB_PARAMS((rig_model_t rig_model));
3380
3381extern HAMLIB_EXPORT(int)
3382rig_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rig_caps *, rig_ptr_t),
3383 rig_ptr_t data));
3384
3385extern HAMLIB_EXPORT(int)
3386rig_list_foreach_model HAMLIB_PARAMS((int (*cfunc)(const rig_model_t rig_model, rig_ptr_t),
3387 rig_ptr_t data));
3388
3389extern HAMLIB_EXPORT(int)
3390rig_load_backend HAMLIB_PARAMS((const char *be_name));
3391
3392extern HAMLIB_EXPORT(int)
3393rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model));
3394
3395extern HAMLIB_EXPORT(int)
3396rig_load_all_backends HAMLIB_PARAMS((void));
3397
3398typedef int (*rig_probe_func_t)(const hamlib_port_t *, rig_model_t, rig_ptr_t);
3399
3400extern HAMLIB_EXPORT(int)
3401rig_probe_all HAMLIB_PARAMS((hamlib_port_t *p,
3402 rig_probe_func_t,
3403 rig_ptr_t));
3404
3405extern HAMLIB_EXPORT(rig_model_t)
3406rig_probe HAMLIB_PARAMS((hamlib_port_t *p));
3407
3408
3409/* Misc calls */
3410extern HAMLIB_EXPORT(const char *) rig_strrmode(rmode_t mode);
3411extern HAMLIB_EXPORT(int) rig_strrmodes(rmode_t modes, char *buf, int buflen);
3412extern HAMLIB_EXPORT(const char *) rig_strvfo(vfo_t vfo);
3413extern HAMLIB_EXPORT(const char *) rig_strfunc(setting_t);
3414extern HAMLIB_EXPORT(const char *) rig_strlevel(setting_t);
3415extern HAMLIB_EXPORT(const char *) rig_strparm(setting_t);
3416extern HAMLIB_EXPORT(const char *) rig_stragclevel(enum agc_level_e level);
3417extern HAMLIB_EXPORT(enum agc_level_e) rig_levelagcstr (const char *agcString);
3418extern HAMLIB_EXPORT(enum agc_level_e) rig_levelagcvalue (int agcValue);
3419extern HAMLIB_EXPORT(value_t) rig_valueagclevel (enum agc_level_e agcLevel);
3420extern HAMLIB_EXPORT(const char *) rig_strptrshift(rptr_shift_t);
3421extern HAMLIB_EXPORT(const char *) rig_strvfop(vfo_op_t op);
3422extern HAMLIB_EXPORT(const char *) rig_strscan(scan_t scan);
3423extern HAMLIB_EXPORT(const char *) rig_strstatus(enum rig_status_e status);
3424extern HAMLIB_EXPORT(const char *) rig_strmtype(chan_type_t mtype);
3425extern HAMLIB_EXPORT(const char *) rig_strspectrummode(enum rig_spectrum_mode_e mode);
3426extern HAMLIB_EXPORT(const char *) rig_strcommstatus(rig_comm_status_t vfo);
3427
3428extern HAMLIB_EXPORT(rmode_t) rig_parse_mode(const char *s);
3429extern HAMLIB_EXPORT(vfo_t) rig_parse_vfo(const char *s);
3430extern HAMLIB_EXPORT(setting_t) rig_parse_func(const char *s);
3431extern HAMLIB_EXPORT(setting_t) rig_parse_level(const char *s);
3432extern HAMLIB_EXPORT(setting_t) rig_parse_parm(const char *s);
3433extern HAMLIB_EXPORT(vfo_op_t) rig_parse_vfo_op(const char *s);
3434extern HAMLIB_EXPORT(scan_t) rig_parse_scan(const char *s);
3435extern HAMLIB_EXPORT(rptr_shift_t) rig_parse_rptr_shift(const char *s);
3436extern HAMLIB_EXPORT(chan_type_t) rig_parse_mtype(const char *s);
3437
3438extern HAMLIB_EXPORT(const char *) rig_license HAMLIB_PARAMS((void));
3439extern HAMLIB_EXPORT(const char *) rig_version HAMLIB_PARAMS((void));
3440extern HAMLIB_EXPORT(const char *) rig_copyright HAMLIB_PARAMS((void));
3441
3442extern HAMLIB_EXPORT(void) rig_no_restore_ai(void);
3443
3444extern HAMLIB_EXPORT(int) rig_get_cache_timeout_ms(RIG *rig, hamlib_cache_t selection);
3445extern HAMLIB_EXPORT(int) rig_set_cache_timeout_ms(RIG *rig, hamlib_cache_t selection, int ms);
3446
3447extern HAMLIB_EXPORT(int) rig_set_vfo_opt(RIG *rig, int status);
3448extern 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);
3449extern HAMLIB_EXPORT(int) rig_get_rig_info(RIG *rig, char *response, int max_response_len);
3450extern 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);
3451extern HAMLIB_EXPORT(int) rig_get_cache_freq(RIG *rig, vfo_t vfo, freq_t *freq, int * cache_ms_freq);
3452
3453extern 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);
3454extern 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);
3455
3456typedef unsigned long rig_useconds_t;
3457extern HAMLIB_EXPORT(int) hl_usleep(rig_useconds_t msec);
3458
3459extern HAMLIB_EXPORT(int) rig_cookie(RIG *rig, enum cookie_e cookie_cmd, char *cookie, int cookie_len);
3460
3461extern HAMLIB_EXPORT(int) rig_password(RIG *rig, const char *key1);
3462extern HAMLIB_EXPORT(void) rig_password_generate_secret(char *pass,
3463 char result[HAMLIB_SECRET_LENGTH + 1]);
3464extern HAMLIB_EXPORT(int) rig_send_raw(RIG *rig, const unsigned char* send, int send_len, unsigned char* reply, int reply_len, unsigned char *term);
3465
3466extern HAMLIB_EXPORT(int)
3467longlat2locator HAMLIB_PARAMS((double longitude,
3468 double latitude,
3469 char *locator_res,
3470 int pair_count));
3471
3472extern HAMLIB_EXPORT(int)
3473locator2longlat HAMLIB_PARAMS((double *longitude,
3474 double *latitude,
3475 const char *locator));
3476
3477extern HAMLIB_EXPORT(char*) rig_make_md5(const char *pass);
3478
3479extern HAMLIB_EXPORT(int) rig_set_lock_mode(RIG *rig, int lock);
3480extern HAMLIB_EXPORT(int) rig_get_lock_mode(RIG *rig, int *lock);
3481
3482extern HAMLIB_EXPORT(int) rig_is_model(RIG *rig, rig_model_t model);
3483
3484extern HAMLIB_EXPORT(char*) rig_date_strget(char *buf, int buflen, int localtime);
3485
3486enum GPIO { GPIO1, GPIO2, GPIO3, GPIO4 };
3487extern HAMLIB_EXPORT(int) rig_cm108_get_bit(hamlib_port_t *p, enum GPIO gpio, int *bit);
3488extern HAMLIB_EXPORT(int) rig_cm108_set_bit(hamlib_port_t *p, enum GPIO gpio, int bit);
3489extern HAMLIB_EXPORT(int) rig_band_changed(RIG *rig, hamlib_bandselect_t band);
3490
3491extern HAMLIB_EXPORT(void *) rig_data_pointer(RIG *rig, rig_ptrx_t idx);
3492
3494
3495__END_DECLS
3496
3497#endif /* _RIG_H */
3498
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:1306
vfo_t rig_parse_vfo(const char *s)
Convert alpha string to enum RIG_VFO_...
Definition misc.c:643
const char * rig_strparm(setting_t parm)
Convert enum RIG_PARM_... to alpha string.
Definition misc.c:1356
const char * rig_strspectrummode(enum rig_spectrum_mode_e mode)
Convert enum RIG_SPECTRUM_MODE_... to alpha string.
Definition misc.c:1814
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:574
const char * rig_strvfo(vfo_t vfo)
Convert enum RIG_VFO_... to alpha string.
Definition misc.c:672
const char * rig_strscan(scan_t rscan)
Convert enum RIG_SCAN_... to alpha string.
Definition misc.c:1649
rptr_shift_t rig_parse_rptr_shift(const char *s)
Convert alpha char to enum RIG_RPT_SHIFT_...
Definition misc.c:1703
enum agc_level_e rig_levelagcstr(const char *agcString)
Convert AGC string... to agc_level_e.
Definition misc.c:1508
const char * rig_strfunc(setting_t func)
Convert enum RIG_FUNC_... to alpha string.
Definition misc.c:889
value_t rig_valueagclevel(enum agc_level_e agcLevel)
Convert a enum agc_level_e to value.
Definition misc.c:1457
const char * rig_strptrshift(rptr_shift_t shift)
convert enum RIG_RPT_SHIFT_... to printable character
Definition misc.c:1678
uint64_t rig_idx2setting(int i)
Definition misc.c:801
chan_type_t rig_parse_mtype(const char *s)
Convert alpha string to enum RIG_MTYPE_...
Definition misc.c:1749
const char * rig_stragclevel(enum agc_level_e level)
Convert enum RIG_AGC_... to alpha string.
Definition misc.c:1432
enum agc_level_e rig_levelagcvalue(int agcValue)
Convert a value to agc_level_e – constrains the range.
Definition misc.c:1477
const char * rig_strcommstatus(rig_comm_status_t status)
Convert enum RIG_COMM_STATUS... to alpha string.
Definition misc.c:2746
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:1101
scan_t rig_parse_scan(const char *s)
Convert alpha string to enum RIG_SCAN_...
Definition misc.c:1624
const char * rig_strrmode(rmode_t mode)
Convert enum RIG_MODE to alpha string.
Definition misc.c:542
setting_t rig_parse_func(const char *s)
Convert alpha string to enum RIG_FUNC_...
Definition misc.c:813
const char * rig_strmtype(chan_type_t mtype)
Convert enum RIG_MTYPE_... to alpha string.
Definition misc.c:1774
rmode_t rig_parse_mode(const char *s)
Convert alpha string to enum RIG_MODE.
Definition misc.c:515
const char * rig_strvfop(vfo_op_t op)
Convert enum RIG_OP_... to alpha string.
Definition misc.c:1579
const char * rig_strlevel(setting_t level)
Convert enum RIG_LEVEL_... to alpha string.
Definition misc.c:1182
int rig_flush_force(hamlib_port_t *port, int flush_async_data)
Force flush of rig communication data buffers.
Definition misc.c:2252
vfo_op_t rig_parse_vfo_op(const char *s)
Convert alpha string to enum RIG_OP_...
Definition misc.c:1554
const char * rig_get_info(RIG *rig)
get general information from the radio
Definition rig.c:7946
int rig_set_vfo(RIG *rig, vfo_t vfo)
set the current VFO
Definition rig.c:3366
unsigned int vfo_t
VFO definition.
Definition rig.h:544
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:5656
int rig_send_dtmf(RIG *rig, vfo_t vfo, const char *digits)
send DTMF digits
Definition rig.c:7328
int rig_set_twiddle(RIG *rig, int seconds)
timeout (secs) to stop rigctld when VFO is manually changed
Definition rig.c:1964
struct chan_list chan_t
chan_t type
Definition rig.h:1748
unsigned int ant_t
Antenna typedef.
Definition rig.h:1015
meter_level_e
Level display meters.
Definition rig.h:1039
int rig_get_rig_info(RIG *rig, char *response, int max_response_len)
get freq/mode/width for requested VFO
Definition rig.c:8013
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:4278
enum client_e client_t
serial_parity_e
Serial parity.
Definition rig.h:359
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:5995
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:3035
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:5744
dcd_e
Definition rig.h:680
struct cal_table cal_table_t
calibration table type
Definition rig.h:1797
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:808
const char * hamlib_copyright2
Hamlib copyright notice.
Definition rig.c:125
int rig_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs)
get the current repeater offset
Definition rig.c:4662
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:6902
int rig_get_powerstat(RIG *rig, powerstat_t *status)
get the on/off status of the radio
Definition rig.c:6954
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:893
serial_control_state_e
Serial control state.
Definition rig.h:381
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:6721
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:3513
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:5514
uint64_t rmode_t
Radio mode.
Definition rig.h:1392
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:676
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:6166
int rig_cleanup(RIG *rig)
release a rig handle and free associated memory
Definition rig.c:1920
rig_type_t
Rig type flags.
Definition rig.h:391
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:473
int rig_get_vfo_list(RIG *rig, char *buf, int buflen)
get list of available vfos
Definition rig.c:8201
rptr_shift_t
Repeater shift type.
Definition rig.h:463
const char * rig_license()
get the Hamlib license
Definition rig.c:8259
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:7223
client_e
Definition rig.h:762
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:8238
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:958
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:2494
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:3953
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:6795
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:8269
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:6316
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:2691
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:2645
rig_caps_int_e
Enumeration of rig->caps values.
Definition rig.h:2361
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:4585
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:1169
int rig_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option)
set the antenna
Definition rig.c:6548
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:6860
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:8120
pbwidth_t rig_passband_wide(RIG *rig, rmode_t mode)
get the wide passband of a mode
Definition rig.c:3307
struct channel channel_t
Channel structure typedef.
Definition rig.h:1645
uint64_t setting_t
Setting bit mask.
Definition rig.h:1234
powerstat_t
Radio power state.
Definition rig.h:738
multicast_item_e
Multicast data items 3 different data item can be included in the multicast JSON.
Definition rig.h:1212
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:1988
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:4745
int rig_probe_all(hamlib_port_t *port, rig_probe_func_t cfunc, rig_ptr_t data)
try to guess rigs
Definition rig.c:7082
rig_errcode_e
Hamlib error codes.
Definition rig.h:209
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:915
scan_t
Rig Scan operation.
Definition rig.h:877
int rig_send_voice_mem(RIG *rig, vfo_t vfo, int ch)
send voice memory content
Definition rig.c:7764
int rig_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length)
receive DTMF digits
Definition rig.c:7405
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:2146
int rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
set PTT on/off
Definition rig.c:3617
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:112
double freq_t
Frequency type.
Definition rig.h:484
int rig_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch)
perform Memory/VFO operations
Definition rig.c:7256
cookie_e
Rig Cookie enumerations.
Definition rig.h:1202
int rig_send_morse(RIG *rig, vfo_t vfo, const char *msg)
send morse code
Definition rig.c:7481
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:2352
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:707
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:691
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:1558
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:8220
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:2834
vfo_op_t
VFO operation.
Definition rig.h:784
int rig_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts)
get the current Tuning Step
Definition rig.c:6466
enum ptt_type_e ptt_type_t
PTT (Push To Talk) type.
signed long shortfreq_t
Short frequency type.
Definition rig.h:506
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:8279
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:338
int rig_wait_morse(RIG *rig, vfo_t vfo)
wait morse code
Definition rig.c:7693
int rig_close(RIG *rig)
close the communication to the rig
Definition rig.c:1746
pbwidth_t rig_passband_narrow(RIG *rig, rmode_t mode)
get the narrow passband of a mode
Definition rig.c:3254
serial_handshake_e
Serial handshake.
Definition rig.h:371
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:409
unsigned int tone_t
CTCSS and DCS type definition.
Definition rig.h:328
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:7907
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:3203
rig_debug_level_e
Hamlib debug levels.
Definition rig.h:259
#define RIG_SETTING_MAX
Maximum # of rig settings.
Definition rig.h:1240
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:1687
struct s_rig RIG
Rig structure definition (see rig for details).
Definition rig.h:290
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:1392
int rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit)
set the RIT
Definition rig.c:6094
hamlib_bandselect_t
Definition rig.h:828
int rig_stop_voice_mem(RIG *rig, vfo_t vfo)
stop sending voice memory
Definition rig.c:7833
int rig_get_twiddle(RIG *rig, int *seconds)
get the twiddle timeout value (secs)
Definition rig.c:2015
int rig_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts)
set the Tuning Step
Definition rig.c:6394
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:6628
int rig_open(RIG *rig)
open the communication to the rig
Definition rig.c:1039
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:1466
int rig_stop_morse(RIG *rig, vfo_t vfo)
stop morse code
Definition rig.c:7578
ptt_type_e
PTT (Push To Talk) type.
Definition rig.h:722
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:1081
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:5112
int rig_reset(RIG *rig, reset_t reset)
reset the radio
Definition rig.c:7009
struct gran gran_t
gran_t type
Definition rig.h:1771
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:1330
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:7111
int rig_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)
get the current repeater shift
Definition rig.c:4501
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:5350
int rig_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
set the repeater shift
Definition rig.c:4423
reset_t
Reset operation.
Definition rig.h:750
rig_function_e
Enumeration of all rig_ functions.
Definition rig.h:2258
int rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq)
get the current split frequencies
Definition rig.c:4935
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:7871
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:7140
rig_status_e
Development status of the backend.
Definition rig.h:443
int rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit)
set the XIT
Definition rig.c:6244
int rig_set_conf(RIG *rig, hamlib_token_t token, const char *val)
set a radio configuration parameter
Definition conf.c:1497
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:1827
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:8308
rig_spectrum_mode_e
Spectrum scope modes.
Definition rig.h:1851
rig_model_t rig_probe(hamlib_port_t *port)
try to guess a rig
Definition rig.c:7054
chan_type_t
Memory channel type definition.
Definition rig.h:1700
@ RIG_PARITY_MARK
Definition rig.h:363
@ RIG_PARITY_NONE
Definition rig.h:360
@ RIG_PARITY_EVEN
Definition rig.h:362
@ RIG_PARITY_SPACE
Definition rig.h:364
@ RIG_PARITY_ODD
Definition rig.h:361
@ RIG_DCD_ON
Definition rig.h:682
@ RIG_DCD_OFF
Definition rig.h:681
@ RIG_BAND_AIR
Definition rig.h:823
@ RIG_BAND_UNUSED
Definition rig.h:822
@ RIG_BAND_20M
Definition rig.h:814
@ RIG_BAND_12M
Definition rig.h:817
@ RIG_BAND_60M
Definition rig.h:811
@ RIG_BAND_10M
Definition rig.h:818
@ RIG_BAND_430MHZ
Definition rig.h:825
@ RIG_BAND_40M
Definition rig.h:812
@ RIG_BAND_15M
Definition rig.h:816
@ RIG_BAND_GEN
Definition rig.h:820
@ RIG_BAND_30M
Definition rig.h:813
@ RIG_BAND_144MHZ
Definition rig.h:824
@ RIG_BAND_80M
Definition rig.h:810
@ RIG_BAND_MW
Definition rig.h:821
@ RIG_BAND_6M
Definition rig.h:819
@ RIG_BAND_17M
Definition rig.h:815
@ RIG_BAND_160M
Definition rig.h:809
@ RIG_SIGNAL_ON
Definition rig.h:383
@ RIG_SIGNAL_OFF
Definition rig.h:384
@ RIG_SIGNAL_UNSET
Definition rig.h:382
@ RIG_FLAG_COMPUTER
Definition rig.h:397
@ RIG_FLAG_TUNER
Definition rig.h:402
@ RIG_FLAG_SCANNER
Definition rig.h:394
@ RIG_FLAG_TRANSMITTER
Definition rig.h:393
@ RIG_FLAG_MOBILE
Definition rig.h:395
@ RIG_FLAG_TRUNKING
Definition rig.h:398
@ RIG_FLAG_APRS
Definition rig.h:399
@ RIG_FLAG_TNC
Definition rig.h:400
@ RIG_FLAG_HANDHELD
Definition rig.h:396
@ RIG_FLAG_DXCLUSTER
Definition rig.h:401
@ RIG_FLAG_RECEIVER
Definition rig.h:392
@ RIG_SPLIT_ON
Definition rig.h:475
@ RIG_SPLIT_OFF
Definition rig.h:474
@ RIG_RPT_SHIFT_PLUS
Definition rig.h:466
@ RIG_RPT_SHIFT_MINUS
Definition rig.h:465
@ RIG_RPT_SHIFT_NONE
Definition rig.h:464
@ RIG_CLIENT_WSJTX
Definition rig.h:764
@ RIG_CLIENT_UNKNOWN
Definition rig.h:763
@ RIG_CLIENT_GPREDICT
Definition rig.h:765
@ RIG_ANN_RXMODE
Definition rig.h:962
@ RIG_ANN_OFF
Definition rig.h:960
@ RIG_ANN_ENG
Definition rig.h:964
@ RIG_ANN_FREQ
Definition rig.h:961
@ RIG_ANN_NONE
Definition rig.h:959
@ RIG_ANN_CW
Definition rig.h:963
@ RIG_ANN_JAP
Definition rig.h:965
@ RIG_PARM_BEEP
Definition rig.h:1174
@ RIG_PARM_AFIF_LAN
Definition rig.h:1182
@ RIG_PARM_AFIF_WLAN
Definition rig.h:1183
@ RIG_PARM_BANDSELECT
Definition rig.h:1180
@ RIG_PARM_TIME
Definition rig.h:1175
@ RIG_PARM_SCREENSAVER
Definition rig.h:1178
@ RIG_PARM_ANN
Definition rig.h:1171
@ RIG_PARM_AFIF
Definition rig.h:1179
@ RIG_PARM_NONE
Definition rig.h:1170
@ RIG_PARM_KEYERTYPE
Definition rig.h:1181
@ RIG_PARM_AFIF_ACC
Definition rig.h:1184
@ RIG_PARM_BACKLIGHT
Definition rig.h:1173
@ RIG_PARM_KEYLIGHT
Definition rig.h:1177
@ RIG_PARM_BAT
Definition rig.h:1176
@ RIG_PARM_APO
Definition rig.h:1172
@ RIG_POWER_OPERATE
Definition rig.h:742
@ RIG_POWER_UNKNOWN
Definition rig.h:743
@ RIG_POWER_STANDBY
Definition rig.h:741
@ RIG_POWER_OFF
Definition rig.h:739
@ RIG_POWER_ON
Definition rig.h:740
@ RIG_ENIMPL
Definition rig.h:214
@ RIG_ECONF
Definition rig.h:212
@ RIG_ELIMIT
Definition rig.h:231
@ RIG_ENAVAIL
Definition rig.h:221
@ RIG_OK
Definition rig.h:210
@ RIG_EPROTO
Definition rig.h:218
@ RIG_EINTERNAL
Definition rig.h:217
@ RIG_EDOM
Definition rig.h:227
@ RIG_EIO
Definition rig.h:216
@ RIG_EVFO
Definition rig.h:226
@ RIG_ETIMEOUT
Definition rig.h:215
@ RIG_ENOMEM
Definition rig.h:213
@ RIG_EARG
Definition rig.h:225
@ RIG_EPOWER
Definition rig.h:230
@ RIG_EACCESS
Definition rig.h:232
@ RIG_ERJCTED
Definition rig.h:219
@ RIG_ESECURITY
Definition rig.h:229
@ RIG_BUSERROR
Definition rig.h:223
@ RIG_BUSBUSY
Definition rig.h:224
@ RIG_EDEPRECATED
Definition rig.h:228
@ RIG_ENTARGET
Definition rig.h:222
@ RIG_EINVAL
Definition rig.h:211
@ RIG_ETRUNC
Definition rig.h:220
@ RIG_CONF_STRING
Definition rig.h:916
@ RIG_CONF_BUTTON
Definition rig.h:920
@ RIG_CONF_CHECKBUTTON
Definition rig.h:919
@ RIG_CONF_BINARY
Definition rig.h:921
@ RIG_CONF_COMBO
Definition rig.h:917
@ RIG_CONF_INT
Definition rig.h:922
@ RIG_CONF_NUMERIC
Definition rig.h:918
@ RIG_SCAN_DELTA
Definition rig.h:883
@ RIG_SCAN_PLT
Definition rig.h:885
@ RIG_SCAN_PROG
Definition rig.h:882
@ RIG_SCAN_MEM
Definition rig.h:879
@ RIG_SCAN_NONE
Definition rig.h:878
@ RIG_SCAN_VFO
Definition rig.h:884
@ RIG_SCAN_PRIO
Definition rig.h:881
@ RIG_SCAN_SLCT
Definition rig.h:880
@ RIG_SCAN_STOP
Definition rig.h:886
@ RIG_COOKIE_RENEW
Definition rig.h:1205
@ RIG_COOKIE_RELEASE
Definition rig.h:1204
@ RIG_COOKIE_GET
Definition rig.h:1203
@ RIG_PTT_OFF
Definition rig.h:708
@ RIG_PTT_ON_DATA
Definition rig.h:711
@ RIG_PTT_ON_MIC
Definition rig.h:710
@ RIG_PTT_ON
Definition rig.h:709
@ RIG_DCD_SERIAL_CTS
Definition rig.h:695
@ RIG_DCD_PARALLEL
Definition rig.h:697
@ RIG_DCD_CM108
Definition rig.h:698
@ RIG_DCD_RIG
Definition rig.h:693
@ RIG_DCD_GPION
Definition rig.h:700
@ RIG_DCD_NONE
Definition rig.h:692
@ RIG_DCD_SERIAL_DSR
Definition rig.h:694
@ RIG_DCD_GPIO
Definition rig.h:699
@ RIG_DCD_SERIAL_CAR
Definition rig.h:696
@ RIG_OP_CPY
Definition rig.h:786
@ RIG_OP_DOWN
Definition rig.h:792
@ RIG_OP_TO_VFO
Definition rig.h:789
@ RIG_OP_TUNE
Definition rig.h:797
@ RIG_OP_FROM_VFO
Definition rig.h:788
@ RIG_OP_MCL
Definition rig.h:790
@ RIG_OP_RIGHT
Definition rig.h:796
@ RIG_OP_UP
Definition rig.h:791
@ RIG_OP_TOGGLE
Definition rig.h:798
@ RIG_OP_NONE
Definition rig.h:785
@ RIG_OP_BAND_UP
Definition rig.h:793
@ RIG_OP_BAND_DOWN
Definition rig.h:794
@ RIG_OP_LEFT
Definition rig.h:795
@ RIG_OP_XCHG
Definition rig.h:787
@ RIG_PORT_PACKET
Definition rig.h:343
@ RIG_PORT_UDP_NETWORK
Definition rig.h:349
@ RIG_PORT_NONE
Definition rig.h:339
@ RIG_PORT_CM108
Definition rig.h:350
@ RIG_PORT_GPIO
Definition rig.h:351
@ RIG_PORT_ULTRA
Definition rig.h:345
@ RIG_PORT_GPION
Definition rig.h:352
@ RIG_PORT_SERIAL
Definition rig.h:340
@ RIG_PORT_PARALLEL
Definition rig.h:347
@ RIG_PORT_NETWORK
Definition rig.h:341
@ RIG_PORT_DEVICE
Definition rig.h:342
@ RIG_PORT_RPC
Definition rig.h:346
@ RIG_PORT_DTMF
Definition rig.h:344
@ RIG_PORT_USB
Definition rig.h:348
@ RIG_HANDSHAKE_HARDWARE
Definition rig.h:374
@ RIG_HANDSHAKE_NONE
Definition rig.h:372
@ RIG_HANDSHAKE_XONXOFF
Definition rig.h:373
@ RIG_AGC_NONE
Definition rig.h:419
@ RIG_AGC_ON
Definition rig.h:418
@ RIG_AGC_USER
Definition rig.h:414
@ RIG_DEBUG_ERR
Definition rig.h:262
@ RIG_DEBUG_BUG
Definition rig.h:261
@ RIG_DEBUG_WARN
Definition rig.h:263
@ RIG_DEBUG_TRACE
Definition rig.h:265
@ RIG_DEBUG_VERBOSE
Definition rig.h:264
@ RIG_DEBUG_CACHE
Definition rig.h:266
@ RIG_DEBUG_NONE
Definition rig.h:260
@ RIG_BANDSELECT_600M
Definition rig.h:831
@ RIG_BANDSELECT_1_25M
Definition rig.h:849
@ RIG_BANDSELECT_GEN
Definition rig.h:844
@ RIG_BANDSELECT_17M
Definition rig.h:838
@ RIG_BANDSELECT_6M
Definition rig.h:842
@ RIG_BANDSELECT_9CM
Definition rig.h:854
@ RIG_BANDSELECT_160M
Definition rig.h:832
@ RIG_BANDSELECT_AIR
Definition rig.h:846
@ RIG_BANDSELECT_20M
Definition rig.h:837
@ RIG_BANDSELECT_MW
Definition rig.h:845
@ RIG_BANDSELECT_2200M
Definition rig.h:830
@ RIG_BANDSELECT_23CM
Definition rig.h:852
@ RIG_BANDSELECT_UNUSED
Definition rig.h:829
@ RIG_BANDSELECT_33CM
Definition rig.h:851
@ RIG_BANDSELECT_60M
Definition rig.h:834
@ RIG_BANDSELECT_3CM
Definition rig.h:856
@ RIG_BANDSELECT_4M
Definition rig.h:847
@ RIG_BANDSELECT_12M
Definition rig.h:840
@ RIG_BANDSELECT_WFM
Definition rig.h:843
@ RIG_BANDSELECT_5CM
Definition rig.h:855
@ RIG_BANDSELECT_15M
Definition rig.h:839
@ RIG_BANDSELECT_30M
Definition rig.h:836
@ RIG_BANDSELECT_70CM
Definition rig.h:850
@ RIG_BANDSELECT_40M
Definition rig.h:835
@ RIG_BANDSELECT_80M
Definition rig.h:833
@ RIG_BANDSELECT_13CM
Definition rig.h:853
@ RIG_BANDSELECT_2M
Definition rig.h:848
@ RIG_BANDSELECT_10M
Definition rig.h:841
@ RIG_PTT_RIG
Definition rig.h:724
@ RIG_PTT_RIG_MICDATA
Definition rig.h:728
@ RIG_PTT_SERIAL_DTR
Definition rig.h:725
@ RIG_PTT_NONE
Definition rig.h:723
@ RIG_PTT_PARALLEL
Definition rig.h:727
@ RIG_PTT_GPION
Definition rig.h:731
@ RIG_PTT_GPIO
Definition rig.h:730
@ RIG_PTT_CM108
Definition rig.h:729
@ RIG_PTT_SERIAL_RTS
Definition rig.h:726
@ RIG_RESET_MCALL
Definition rig.h:754
@ RIG_RESET_MASTER
Definition rig.h:755
@ RIG_RESET_NONE
Definition rig.h:751
@ RIG_RESET_VFO
Definition rig.h:753
@ RIG_RESET_SOFT
Definition rig.h:752
@ RIG_STATUS_STABLE
Definition rig.h:447
@ RIG_STATUS_BUGGY
Definition rig.h:448
@ RIG_STATUS_UNTESTED
Definition rig.h:445
@ RIG_STATUS_BETA
Definition rig.h:446
@ RIG_STATUS_ALPHA
Definition rig.h:444
@ RIG_SPECTRUM_MODE_CENTER_SCROLL
Definition rig.h:1855
@ RIG_SPECTRUM_MODE_FIXED_SCROLL
Definition rig.h:1856
@ RIG_SPECTRUM_MODE_FIXED
Definition rig.h:1854
@ RIG_SPECTRUM_MODE_CENTER
Definition rig.h:1853
@ RIG_MTYPE_VOICE
Definition rig.h:1709
@ RIG_MTYPE_PRIO
Definition rig.h:1708
@ RIG_MTYPE_EDGE
Definition rig.h:1703
@ RIG_MTYPE_MEM
Definition rig.h:1702
@ RIG_MTYPE_CALL
Definition rig.h:1704
@ RIG_MTYPE_SAT
Definition rig.h:1706
@ RIG_MTYPE_MORSE
Definition rig.h:1710
@ RIG_MTYPE_MEMOPAD
Definition rig.h:1705
@ RIG_MTYPE_SPLIT
Definition rig.h:1711
@ RIG_MTYPE_NONE
Definition rig.h:1701
@ RIG_MTYPE_BAND
Definition rig.h:1707
uint32_t rig_model_t
Definition riglist.h:1125
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:8926
void * rig_data_pointer(RIG *rig, rig_ptrx_t idx)
Get the address of a Hamlib data structure.
Definition rig.c:9112
Hamlib rig state data structure.
Hamlib rig (radio) model definitions.
Definition rig.h:176
Calibration table struct for float values.
Definition rig.h:1807
float val
Definition rig.h:1811
int size
Definition rig.h:1808
struct cal_table_float::@072126103202102107020356262247040377366075150327 table[HAMLIB_MAX_CAL_LENGTH]
int raw
Definition rig.h:1810
Calibration table struct.
Definition rig.h:1777
int val
Definition rig.h:1781
int raw
Definition rig.h:1780
struct cal_table::@331211052225021277273210161246231043124274055054 table[HAMLIB_MAX_CAL_LENGTH]
int size
Definition rig.h:1778
Memory channel list definition.
Definition rig.h:1728
int startc
Definition rig.h:1729
chan_type_t type
Definition rig.h:1731
channel_cap_t mem_caps
Definition rig.h:1732
int endc
Definition rig.h:1730
Channel capability definition.
Definition rig.h:1652
unsigned tx_vfo
Definition rig.h:1665
unsigned tx_freq
Definition rig.h:1660
unsigned mode
Definition rig.h:1657
unsigned dcs_code
Definition rig.h:1675
unsigned rit
Definition rig.h:1669
unsigned dcs_sql
Definition rig.h:1676
unsigned rptr_offs
Definition rig.h:1667
unsigned bank_num
Definition rig.h:1653
setting_t levels
Definition rig.h:1672
unsigned width
Definition rig.h:1658
unsigned rptr_shift
Definition rig.h:1666
unsigned tx_width
Definition rig.h:1662
unsigned ctcss_sql
Definition rig.h:1674
unsigned tx_mode
Definition rig.h:1661
unsigned freq
Definition rig.h:1656
setting_t funcs
Definition rig.h:1671
unsigned ctcss_tone
Definition rig.h:1673
unsigned tag
Definition rig.h:1681
unsigned ext_levels
Definition rig.h:1680
unsigned vfo
Definition rig.h:1654
unsigned ant
Definition rig.h:1655
unsigned split
Definition rig.h:1664
unsigned scan_group
Definition rig.h:1677
unsigned flags
Definition rig.h:1678
unsigned tuning_step
Definition rig.h:1668
unsigned xit
Definition rig.h:1670
unsigned channel_desc
Definition rig.h:1679
Channel structure.
Definition rig.h:1607
shortfreq_t tuning_step
Definition rig.h:1625
rmode_t mode
Definition rig.h:1613
tone_t ctcss_tone
Definition rig.h:1630
pbwidth_t tx_width
Definition rig.h:1618
vfo_t vfo
Definition rig.h:1610
value_t levels[64]
Definition rig.h:1629
shortfreq_t rptr_offs
Definition rig.h:1624
vfo_t tx_vfo
Definition rig.h:1621
tone_t dcs_code
Definition rig.h:1632
setting_t funcs
Definition rig.h:1628
struct ext_list * ext_levels
Definition rig.h:1637
tone_t ctcss_sql
Definition rig.h:1631
shortfreq_t xit
Definition rig.h:1627
int bank_num
Definition rig.h:1609
pbwidth_t width
Definition rig.h:1614
freq_t freq
Definition rig.h:1612
char tag[32]
Definition rig.h:1639
rptr_shift_t rptr_shift
Definition rig.h:1623
shortfreq_t rit
Definition rig.h:1626
char channel_desc[HAMLIB_MAXCHANDESC]
Definition rig.h:1636
rmode_t tx_mode
Definition rig.h:1617
split_t split
Definition rig.h:1620
freq_t tx_freq
Definition rig.h:1616
ant_t ant
Definition rig.h:1611
unsigned int flags
Definition rig.h:1635
int scan_group
Definition rig.h:1634
int channel_num
Definition rig.h:1608
tone_t dcs_sql
Definition rig.h:1633
Configuration parameter structure.
Definition rig.h:933
struct confparams::@033225172056077305142122337054032147025166204265::@163117262255361113366066204176146175153337215262 c
const char * combostr[RIG_COMBO_MAX]
Definition rig.h:947
hamlib_token_t token
Definition rig.h:934
struct confparams::@033225172056077305142122337054032147025166204265::@332164064105370312140027320331233300111000145211 n
const char * tooltip
Definition rig.h:937
const char * dflt
Definition rig.h:938
float min
Definition rig.h:942
float step
Definition rig.h:944
const char * label
Definition rig.h:936
float max
Definition rig.h:943
const char * name
Definition rig.h:935
union confparams::@033225172056077305142122337054032147025166204265 u
enum rig_conf_e type
Definition rig.h:939
Definition rig.h:1911
Definition rig.h:1904
Extension attribute definition.
Definition rig.h:1590
hamlib_token_t token
Definition rig.h:1591
value_t val
Definition rig.h:1592
Filter definition.
Definition rig.h:1557
rmode_t modes
Definition rig.h:1558
pbwidth_t width
Definition rig.h:1559
Frequency range.
Definition rig.h:1490
freq_t startf
Definition rig.h:1491
freq_t endf
Definition rig.h:1492
int low_power
Definition rig.h:1494
char * label
Definition rig.h:1498
ant_t ant
Definition rig.h:1497
int high_power
Definition rig.h:1495
vfo_t vfo
Definition rig.h:1496
rmode_t modes
Definition rig.h:1493
level/parm granularity definition
Definition rig.h:1762
value_t max
Definition rig.h:1764
value_t step
Definition rig.h:1765
value_t min
Definition rig.h:1763
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:2571
Rig cache data.
Definition rig.h:2491
Rig cache data.
Definition cache.h:45
Callback functions and args for rig event.
Definition rig.h:2651
rig_ptr_t mode_arg
Definition rig.h:2655
ptt_cb_t ptt_event
Definition rig.h:2658
vfo_cb_t vfo_event
Definition rig.h:2656
spectrum_cb_t spectrum_event
Definition rig.h:2664
mode_cb_t mode_event
Definition rig.h:2654
rig_ptr_t freq_arg
Definition rig.h:2653
rig_ptr_t spectrum_arg
Definition rig.h:2665
rig_ptr_t ptt_arg
Definition rig.h:2659
rig_ptr_t dcd_arg
Definition rig.h:2661
dcd_cb_t dcd_event
Definition rig.h:2660
rig_ptr_t pltune_arg
Definition rig.h:2663
pltune_cb_t pltune
Definition rig.h:2662
rig_ptr_t vfo_arg
Definition rig.h:2657
freq_cb_t freq_event
Definition rig.h:2652
Rig data structure.
Definition rig.h:1946
int write_delay
Definition rig.h:1966
setting_t has_set_func
Definition rig.h:1972
enum serial_handshake_e serial_handshake
Definition rig.h:1964
struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ]
Definition rig.h:2025
int retry
Definition rig.h:1969
const char * model_name
Definition rig.h:1948
int attenuator[HAMLIB_MAXDBLSTSIZ]
Definition rig.h:1990
freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ]
Definition rig.h:2022
int serial_data_bits
Definition rig.h:1961
const char * clone_combo_get
Definition rig.h:2227
const char * version
Definition rig.h:1950
int serial_rate_max
Definition rig.h:1960
int targetable_vfo
Definition rig.h:2002
cal_table_float_t swr_cal
Definition rig.h:2029
ptt_type_t ptt_type
Definition rig.h:1955
const char * clone_combo_set
Definition rig.h:2226
cal_table_float_t vd_meter_cal
Definition rig.h:2033
int serial_stop_bits
Definition rig.h:1962
struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES]
Definition rig.h:2039
int * ext_tokens
Definition rig.h:1984
gran_t parm_gran[64]
Definition rig.h:1979
const char * macro_name
Definition rig.h:2228
dcd_type_t dcd_type
Definition rig.h:1956
int async_data_supported
Definition rig.h:2230
enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS]
Definition rig.h:1996
chan_t chan_list[HAMLIB_CHANLSTSIZ]
Definition rig.h:2008
int preamp[HAMLIB_MAXDBLSTSIZ]
Definition rig.h:1989
const rig_ptr_t priv
Definition rig.h:2043
const struct confparams * cfgparams
Definition rig.h:2042
enum rig_status_e status
Definition rig.h:1952
freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ]
Definition rig.h:2023
tone_t * dcs_list
Definition rig.h:1987
shortfreq_t max_rit
Definition rig.h:1991
const struct confparams * extlevels
Definition rig.h:1982
const char * copyright
Definition rig.h:1951
shortfreq_t max_xit
Definition rig.h:1992
setting_t has_set_level
Definition rig.h:1974
rig_model_t rig_model
Definition rig.h:1947
cal_table_float_t rfpower_meter_cal
Definition rig.h:2031
setting_t has_get_parm
Definition rig.h:1975
int chan_desc_sz
Definition rig.h:2006
enum serial_parity_e serial_parity
Definition rig.h:1963
freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ]
Definition rig.h:2014
int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ]
Definition rig.h:2040
shortfreq_t max_ifshift
Definition rig.h:1993
cal_table_float_t comp_meter_cal
Definition rig.h:2032
rig_port_t port_type
Definition rig.h:1957
short timeout_retry
Definition rig.h:2246
const char * mfg_name
Definition rig.h:1949
tone_t * ctcss_list
Definition rig.h:1986
struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES]
Definition rig.h:2036
freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ]
Definition rig.h:2020
scan_t scan_ops
Definition rig.h:2001
cal_table_float_t alc_cal
Definition rig.h:2030
freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ]
Definition rig.h:2016
setting_t has_set_parm
Definition rig.h:1976
vfo_op_t vfo_ops
Definition rig.h:2000
setting_t has_get_func
Definition rig.h:1971
ann_t announces
Definition rig.h:1998
const struct confparams * extparms
Definition rig.h:1981
struct filter_list filters[HAMLIB_FLTLSTSIZ]
Definition rig.h:2026
int post_write_delay
Definition rig.h:1967
int transceive
Definition rig.h:2003
enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES]
Definition rig.h:2037
int timeout
Definition rig.h:1968
freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS]
Definition rig.h:2038
freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ]
Definition rig.h:2015
cal_table_t str_cal
Definition rig.h:2028
cal_table_float_t id_meter_cal
Definition rig.h:2034
int bank_qty
Definition rig.h:2005
freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ]
Definition rig.h:2018
int rig_type
Definition rig.h:1954
setting_t has_get_level
Definition rig.h:1973
const struct confparams * extfuncs
Definition rig.h:1983
gran_t level_gran[64]
Definition rig.h:1978
freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ]
Definition rig.h:2021
int agc_level_count
Definition rig.h:1995
int serial_rate_min
Definition rig.h:1959
freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ]
Definition rig.h:2019
freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ]
Definition rig.h:2017
Spectrum scope averaging modes.
Definition rig.h:1863
Represents a single line of rig spectrum scope FFT data.
Definition rig.h:1880
size_t spectrum_data_length
Definition rig.h:1896
freq_t low_edge_freq
Definition rig.h:1893
int data_level_min
Definition rig.h:1883
int id
Definition rig.h:1881
enum rig_spectrum_mode_e spectrum_mode
Definition rig.h:1888
double signal_strength_max
Definition rig.h:1886
freq_t center_freq
Definition rig.h:1890
freq_t span_freq
Definition rig.h:1891
double signal_strength_min
Definition rig.h:1885
unsigned char * spectrum_data
Definition rig.h:1897
int data_level_max
Definition rig.h:1884
freq_t high_edge_freq
Definition rig.h:1894
Spectrum scope.
Definition rig.h:1843
Deprecated Rig state containing live data and customized fields.
Definition rig_state.h:257
Rig state containing live data and customized fields.
Definition rig_state.h:55
The Rig structure.
Definition rig.h:2679
struct rig_callbacks callbacks
Definition rig.h:2683
struct rig_state_deprecated state_deprecated
Definition rig.h:2682
struct rig_state state
Definition rig.h:2685
struct rig_caps * caps
Definition rig.h:2680
Tuning step definition.
Definition rig.h:1522
rmode_t modes
Definition rig.h:1523
shortfreq_t ts
Definition rig.h:1524
Universal approach for passing values.
Definition rig.h:1058
unsigned int u
Definition rig.h:1060
char * s
Definition rig.h:1062
float f
Definition rig.h:1061
const char * cs
Definition rig.h:1063
signed int i
Definition rig.h:1059