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