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