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