Hamlib 4.6.3
Loading...
Searching...
No Matches
rig.h
Go to the documentation of this file.
1/*
2 * Hamlib Interface - API header
3 * Copyright (c) 2000-2003 by Frank Singleton
4 * Copyright (c) 2000-2012 by Stephane Fillod
5 *
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 *
21 */
22/* SPDX-License-Identifier: LGPL-2.1-or-later */
23
24#ifndef _RIG_H
25#define _RIG_H 1
26
27// as of 2023-11-23 rig_caps is no longer constant
28// this #define allows clients to test which declaration to use for backwards compatibility
29// As of 2025-01-03 removing this -- fldigi was the only one that got it right
30// riglist_foreach is now constant again but others are not
31// #define RIGCAPS_NOT_CONST 1
32
33#define BUILTINFUNC 0
34
35// Our shared secret password
36#define HAMLIB_SECRET_LENGTH 32
37
38#define HAMLIB_TRACE rig_debug(RIG_DEBUG_TRACE,"%s%s(%d) trace\n",spaces(STATE(rig)->depth), __FILE__, __LINE__)
39#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
40
41#include <stdio.h>
42#include <stdarg.h>
43#include <string.h>
44#include <inttypes.h>
45#include <time.h>
46
47// to stop warnings about including winsock2.h before windows.h
48#if defined(_WIN32)
49#include <winsock2.h>
50#include <windows.h>
51#include <ws2tcpip.h>
52#else
53//#include <sys/socket.h> // doesn't seem we need this
54#include <netinet/in.h>
55//#include <arpa/inet.h>
56#endif
57
58// mingw64 still shows __TIMESIZE != 64
59// need to do more testing
60#if 0
61#if __TIMESIZE != 64
62#warning TIMESIZE != 64 -- Please report your OS system to hamlib-developer@lists.sourceforge.net
63#endif
64#endif
65
66// For MSVC install the NUGet pthread package
67#if defined(_MSC_VER)
68#define HAVE_STRUCT_TIMESPEC
69#endif
70#include <pthread.h>
71
72/* Rig list is in a separate file so as not to mess up w/ this one */
73#include <hamlib/riglist.h>
74//#include <hamlib/config.h>
75
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
304typedef unsigned int tone_t;
305#define CTCSS_LIST_SIZE 60
306#define DCS_LIST_SIZE 128
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\
834| RIG_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
869#define RIG_CONF_END 0
870
884/* strongly inspired from soundmodem. Thanks Thomas! */
894
896#define RIG_COMBO_MAX 16
897#define RIG_BIN_MAX 80
899
905 const char *name;
906 const char *label;
907 const char *tooltip;
908 const char *dflt;
910 union {
911 struct {
912 float min;
913 float max;
914 float step;
915 } n;
916 struct {
917 const char *combostr[RIG_COMBO_MAX];
918 } c;
919 } u;
920};
921
922
928typedef enum {
931 RIG_ANN_FREQ = (1 << 0),
932 RIG_ANN_RXMODE = (1 << 1),
933 RIG_ANN_CW = (1 << 2),
934 RIG_ANN_ENG = (1 << 3),
935 RIG_ANN_JAP = (1 << 4)
937
938
985typedef unsigned int ant_t;
986
987#define RIG_ANT_NONE 0
988#define RIG_ANT_N(n) ((ant_t)1<<(n))
989#define RIG_ANT_1 RIG_ANT_N(0)
990#define RIG_ANT_2 RIG_ANT_N(1)
991#define RIG_ANT_3 RIG_ANT_N(2)
992#define RIG_ANT_4 RIG_ANT_N(3)
993#define RIG_ANT_5 RIG_ANT_N(4)
994
995#define RIG_ANT_UNKNOWN RIG_ANT_N(30)
996#define RIG_ANT_CURR RIG_ANT_N(31)
997
998#define RIG_ANT_MAX 32
999
1000
1002#define RIG_AGC_LAST 99999
1004
1005#if 1 // deprecated
1009enum meter_level_e {
1010 RIG_METER_NONE = 0, /*< No display meter */
1011 RIG_METER_SWR = (1 << 0), /*< Stationary Wave Ratio */
1012 RIG_METER_COMP = (1 << 1), /*< Compression level */
1013 RIG_METER_ALC = (1 << 2), /*< ALC */
1014 RIG_METER_IC = (1 << 3), /*< IC */
1015 RIG_METER_DB = (1 << 4), /*< DB */
1016 RIG_METER_PO = (1 << 5), /*< Power Out */
1017 RIG_METER_VDD = (1 << 6), /*< Final Amp Voltage */
1018 RIG_METER_TEMP = (1 << 7) /*< Final Amp Temperature */
1019};
1020#endif
1021
1022
1028typedef union {
1029 signed int i;
1030 unsigned int u;
1031 float f;
1032 char *s;
1033 const char *cs;
1035 struct {
1036 int l;
1037 unsigned char *d; /* Pointer to data buffer */
1038 } b;
1040} value_t;
1041
1042
1051typedef uint64_t rig_level_e;
1052#define RIG_LEVEL_NONE 0
1053#define RIG_LEVEL_PREAMP CONSTANT_64BIT_FLAG(0)
1054#define RIG_LEVEL_ATT CONSTANT_64BIT_FLAG(1)
1055#define RIG_LEVEL_VOXDELAY CONSTANT_64BIT_FLAG(2)
1056#define RIG_LEVEL_AF CONSTANT_64BIT_FLAG(3)
1057#define RIG_LEVEL_RF CONSTANT_64BIT_FLAG(4)
1058#define RIG_LEVEL_SQL CONSTANT_64BIT_FLAG(5)
1059#define RIG_LEVEL_IF CONSTANT_64BIT_FLAG(6)
1060#define RIG_LEVEL_APF CONSTANT_64BIT_FLAG(7)
1061#define RIG_LEVEL_NR CONSTANT_64BIT_FLAG(8)
1062#define RIG_LEVEL_PBT_IN CONSTANT_64BIT_FLAG(9)
1063#define RIG_LEVEL_PBT_OUT CONSTANT_64BIT_FLAG(10)
1064#define RIG_LEVEL_CWPITCH CONSTANT_64BIT_FLAG(11)
1065#define RIG_LEVEL_RFPOWER CONSTANT_64BIT_FLAG(12)
1066#define RIG_LEVEL_MICGAIN CONSTANT_64BIT_FLAG(13)
1067#define RIG_LEVEL_KEYSPD CONSTANT_64BIT_FLAG(14)
1068#define RIG_LEVEL_NOTCHF CONSTANT_64BIT_FLAG(15)
1069#define RIG_LEVEL_COMP CONSTANT_64BIT_FLAG(16)
1070#define RIG_LEVEL_AGC CONSTANT_64BIT_FLAG(17)
1071#define RIG_LEVEL_BKINDL CONSTANT_64BIT_FLAG(18)
1072#define RIG_LEVEL_BALANCE CONSTANT_64BIT_FLAG(19)
1073#define RIG_LEVEL_METER CONSTANT_64BIT_FLAG(20)
1074#define RIG_LEVEL_VOXGAIN CONSTANT_64BIT_FLAG(21)
1075#define RIG_LEVEL_ANTIVOX CONSTANT_64BIT_FLAG(22)
1076#define RIG_LEVEL_SLOPE_LOW CONSTANT_64BIT_FLAG(23)
1077#define RIG_LEVEL_SLOPE_HIGH CONSTANT_64BIT_FLAG(24)
1078#define RIG_LEVEL_BKIN_DLYMS CONSTANT_64BIT_FLAG(25)
1081#define RIG_LEVEL_RAWSTR CONSTANT_64BIT_FLAG(26)
1082//#define RIG_LEVEL_SQLSTAT CONSTANT_64BIT_FLAG(27) /*!< \c SQLSTAT -- SQL status, arg int (open=1/closed=0). Deprecated, use get_dcd instead */
1083#define RIG_LEVEL_SWR CONSTANT_64BIT_FLAG(28)
1084#define RIG_LEVEL_ALC CONSTANT_64BIT_FLAG(29)
1085#define RIG_LEVEL_STRENGTH CONSTANT_64BIT_FLAG(30)
1086 /* RIG_LEVEL_BWC (1<<31) */
1087#define RIG_LEVEL_RFPOWER_METER CONSTANT_64BIT_FLAG(32)
1088#define RIG_LEVEL_COMP_METER CONSTANT_64BIT_FLAG(33)
1089#define RIG_LEVEL_VD_METER CONSTANT_64BIT_FLAG(34)
1090#define RIG_LEVEL_ID_METER CONSTANT_64BIT_FLAG(35)
1092#define RIG_LEVEL_NOTCHF_RAW CONSTANT_64BIT_FLAG(36)
1093#define RIG_LEVEL_MONITOR_GAIN CONSTANT_64BIT_FLAG(37)
1094#define RIG_LEVEL_NB CONSTANT_64BIT_FLAG(38)
1095#define RIG_LEVEL_RFPOWER_METER_WATTS CONSTANT_64BIT_FLAG(39)
1096#define RIG_LEVEL_SPECTRUM_MODE CONSTANT_64BIT_FLAG(40)
1097#define RIG_LEVEL_SPECTRUM_SPAN CONSTANT_64BIT_FLAG(41)
1098#define RIG_LEVEL_SPECTRUM_EDGE_LOW CONSTANT_64BIT_FLAG(42)
1099#define RIG_LEVEL_SPECTRUM_EDGE_HIGH CONSTANT_64BIT_FLAG(43)
1100#define RIG_LEVEL_SPECTRUM_SPEED CONSTANT_64BIT_FLAG(44)
1101#define RIG_LEVEL_SPECTRUM_REF CONSTANT_64BIT_FLAG(45)
1102#define RIG_LEVEL_SPECTRUM_AVG CONSTANT_64BIT_FLAG(46)
1103#define RIG_LEVEL_SPECTRUM_ATT CONSTANT_64BIT_FLAG(47)
1104#define RIG_LEVEL_TEMP_METER CONSTANT_64BIT_FLAG(48)
1105#define RIG_LEVEL_BAND_SELECT CONSTANT_64BIT_FLAG(49)
1106#define RIG_LEVEL_USB_AF CONSTANT_64BIT_FLAG(50)
1107#define RIG_LEVEL_USB_AF_INPUT CONSTANT_64BIT_FLAG(51)
1108#define RIG_LEVEL_AGC_TIME CONSTANT_64BIT_FLAG(52)
1109#define RIG_LEVEL_53 CONSTANT_64BIT_FLAG(53)
1110#define RIG_LEVEL_54 CONSTANT_64BIT_FLAG(54)
1111#define RIG_LEVEL_55 CONSTANT_64BIT_FLAG(55)
1112#define RIG_LEVEL_56 CONSTANT_64BIT_FLAG(56)
1113#define RIG_LEVEL_57 CONSTANT_64BIT_FLAG(57)
1114#define RIG_LEVEL_58 CONSTANT_64BIT_FLAG(58)
1115#define RIG_LEVEL_59 CONSTANT_64BIT_FLAG(59)
1116#define RIG_LEVEL_60 CONSTANT_64BIT_FLAG(60)
1117#define RIG_LEVEL_61 CONSTANT_64BIT_FLAG(61)
1118#define RIG_LEVEL_62 CONSTANT_64BIT_FLAG(62)
1119#define RIG_LEVEL_63 CONSTANT_64BIT_FLAG(63)
1122#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)
1123
1124#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)
1125
1126#define RIG_LEVEL_IS_FLOAT(l) ((l)&RIG_LEVEL_FLOAT_LIST)
1127#define RIG_LEVEL_SET(l) ((l)&~RIG_LEVEL_READONLY_LIST)
1129
1130
1156
1157enum rig_keyertype_e {
1158 RIG_KEYERTYPE_STRAIGHT = 0,
1159 RIG_KEYERTYPE_BUG = (1 << 0),
1160 RIG_KEYERTYPE_PADDLE = (1 << 1),
1161 RIG_KEYERTYPE_UNKNOWN = (1 << 2)
1162};
1163
1177
1183 RIG_MULTICAST_POLL, // hamlib will be polling the rig for all rig items
1184 RIG_MULTICAST_TRANSCEIVE, // transceive will be turned on and processed
1185 RIG_MULTICAST_SPECTRUM // spectrum data will be included
1186};
1187
1189#define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT|RIG_PARM_KEYLIGHT|RIG_PARM_BACKLIGHT)
1190#define RIG_PARM_STRING_LIST (RIG_PARM_BANDSELECT|RIG_PARM_KEYERTYPE)
1191#define RIG_PARM_READONLY_LIST (RIG_PARM_BAT)
1192
1193#define RIG_PARM_IS_FLOAT(l) ((l)&RIG_PARM_FLOAT_LIST)
1194#define RIG_PARM_IS_STRING(l) ((l)&RIG_PARM_STRING_LIST)
1195#define RIG_PARM_SET(l) ((l)&~RIG_PARM_READONLY_LIST)
1197
1204typedef uint64_t setting_t;
1205
1210#define RIG_SETTING_MAX 64
1211
1228#define RIG_TRN_OFF 0
1229#define RIG_TRN_RIG 1
1230#define RIG_TRN_POLL 2
1231
1232
1241/*
1242 * The C standard dictates that an enum constant is a 32 bit signed integer.
1243 * Setting a constant's bit 31 created a negative value that on amd64 had the
1244 * upper 32 bits set as well when assigned to the misc.c:rig_func_str structure.
1245 * This caused misc.c:rig_strfunc() to fail its comparison for RIG_FUNC_XIT
1246 * on amd64 (x86_64). To use bit 31 as an unsigned long, preprocessor macros
1247 * have been used instead as a 'const unsigned long' which cannot be used to
1248 * initialize the rig_func_str.func members. TNX KA6MAL, AC6SL. - N0NB
1249 */
1250#define RIG_FUNC_NONE 0
1251#define RIG_FUNC_FAGC CONSTANT_64BIT_FLAG (0)
1252#define RIG_FUNC_NB CONSTANT_64BIT_FLAG (1)
1253#define RIG_FUNC_COMP CONSTANT_64BIT_FLAG (2)
1254#define RIG_FUNC_VOX CONSTANT_64BIT_FLAG (3)
1255#define RIG_FUNC_TONE CONSTANT_64BIT_FLAG (4)
1256#define RIG_FUNC_TSQL CONSTANT_64BIT_FLAG (5)
1257#define RIG_FUNC_SBKIN CONSTANT_64BIT_FLAG (6)
1258#define RIG_FUNC_FBKIN CONSTANT_64BIT_FLAG (7)
1259#define RIG_FUNC_ANF CONSTANT_64BIT_FLAG (8)
1260#define RIG_FUNC_NR CONSTANT_64BIT_FLAG (9)
1261#define RIG_FUNC_AIP CONSTANT_64BIT_FLAG (10)
1262#define RIG_FUNC_APF CONSTANT_64BIT_FLAG (11)
1263#define RIG_FUNC_MON CONSTANT_64BIT_FLAG (12)
1264#define RIG_FUNC_MN CONSTANT_64BIT_FLAG (13)
1265#define RIG_FUNC_RF CONSTANT_64BIT_FLAG (14)
1266#define RIG_FUNC_ARO CONSTANT_64BIT_FLAG (15)
1267#define RIG_FUNC_LOCK CONSTANT_64BIT_FLAG (16)
1268#define RIG_FUNC_MUTE CONSTANT_64BIT_FLAG (17)
1269#define RIG_FUNC_VSC CONSTANT_64BIT_FLAG (18)
1270#define RIG_FUNC_REV CONSTANT_64BIT_FLAG (19)
1271#define RIG_FUNC_SQL CONSTANT_64BIT_FLAG (20)
1272#define RIG_FUNC_ABM CONSTANT_64BIT_FLAG (21)
1273#define RIG_FUNC_BC CONSTANT_64BIT_FLAG (22)
1274#define RIG_FUNC_MBC CONSTANT_64BIT_FLAG (23)
1275#define RIG_FUNC_RIT CONSTANT_64BIT_FLAG (24)
1276#define RIG_FUNC_AFC CONSTANT_64BIT_FLAG (25)
1277#define RIG_FUNC_SATMODE CONSTANT_64BIT_FLAG (26)
1278#define RIG_FUNC_SCOPE CONSTANT_64BIT_FLAG (27)
1279#define RIG_FUNC_RESUME CONSTANT_64BIT_FLAG (28)
1280#define RIG_FUNC_TBURST CONSTANT_64BIT_FLAG (29)
1281#define RIG_FUNC_TUNER CONSTANT_64BIT_FLAG (30)
1282#define RIG_FUNC_XIT CONSTANT_64BIT_FLAG (31)
1283#ifndef SWIGLUAHIDE
1284/* Hide the top 32 bits from the old Lua binding as they can't be represented */
1285#define RIG_FUNC_NB2 CONSTANT_64BIT_FLAG (32)
1286#define RIG_FUNC_CSQL CONSTANT_64BIT_FLAG (33)
1287#define RIG_FUNC_AFLT CONSTANT_64BIT_FLAG (34)
1288#define RIG_FUNC_ANL CONSTANT_64BIT_FLAG (35)
1289#define RIG_FUNC_BC2 CONSTANT_64BIT_FLAG (36)
1290#define RIG_FUNC_DUAL_WATCH CONSTANT_64BIT_FLAG (37)
1291#define RIG_FUNC_DIVERSITY CONSTANT_64BIT_FLAG (38)
1292#define RIG_FUNC_DSQL CONSTANT_64BIT_FLAG (39)
1293#define RIG_FUNC_SCEN CONSTANT_64BIT_FLAG (40)
1294#define RIG_FUNC_SLICE CONSTANT_64BIT_FLAG (41)
1295#define RIG_FUNC_TRANSCEIVE CONSTANT_64BIT_FLAG (42)
1296#define RIG_FUNC_SPECTRUM CONSTANT_64BIT_FLAG (43)
1297#define RIG_FUNC_SPECTRUM_HOLD CONSTANT_64BIT_FLAG (44)
1298#define RIG_FUNC_SEND_MORSE CONSTANT_64BIT_FLAG (45)
1299#define RIG_FUNC_SEND_VOICE_MEM CONSTANT_64BIT_FLAG (46)
1300#define RIG_FUNC_OVF_STATUS CONSTANT_64BIT_FLAG (47)
1301#define RIG_FUNC_SYNC CONSTANT_64BIT_FLAG (48)
1302#define RIG_FUNC_BIT49 CONSTANT_64BIT_FLAG (49)
1303#define RIG_FUNC_BIT50 CONSTANT_64BIT_FLAG (50)
1304#define RIG_FUNC_BIT51 CONSTANT_64BIT_FLAG (51)
1305#define RIG_FUNC_BIT52 CONSTANT_64BIT_FLAG (52)
1306#define RIG_FUNC_BIT53 CONSTANT_64BIT_FLAG (53)
1307#define RIG_FUNC_BIT54 CONSTANT_64BIT_FLAG (54)
1308#define RIG_FUNC_BIT55 CONSTANT_64BIT_FLAG (55)
1309#define RIG_FUNC_BIT56 CONSTANT_64BIT_FLAG (56)
1310#define RIG_FUNC_BIT57 CONSTANT_64BIT_FLAG (57)
1311#define RIG_FUNC_BIT58 CONSTANT_64BIT_FLAG (58)
1312#define RIG_FUNC_BIT59 CONSTANT_64BIT_FLAG (59)
1313#define RIG_FUNC_BIT60 CONSTANT_64BIT_FLAG (60)
1314#define RIG_FUNC_BIT61 CONSTANT_64BIT_FLAG (61)
1315#define RIG_FUNC_BIT62 CONSTANT_64BIT_FLAG (62)
1316#define RIG_FUNC_BIT63 CONSTANT_64BIT_FLAG (63)
1317/* 63 is this highest bit number that can be used */
1318#endif
1319
1326#define mW(p) ((int)(p))
1334#define Watts(p) ((int)((p)*1000))
1341#define W(p) Watts(p)
1342#if 0 // deprecating kW macro as this doesn't make sense
1349#define kW(p) ((int)((p)*1000000L))
1350#endif
1351
1352
1362typedef uint64_t rmode_t;
1363
1364#define RIG_MODE_NONE 0
1365#define RIG_MODE_AM CONSTANT_64BIT_FLAG (0)
1366#define RIG_MODE_CW CONSTANT_64BIT_FLAG (1)
1367#define RIG_MODE_USB CONSTANT_64BIT_FLAG (2)
1368#define RIG_MODE_LSB CONSTANT_64BIT_FLAG (3)
1369#define RIG_MODE_RTTY CONSTANT_64BIT_FLAG (4)
1370#define RIG_MODE_FM CONSTANT_64BIT_FLAG (5)
1371#define RIG_MODE_WFM CONSTANT_64BIT_FLAG (6)
1372#define RIG_MODE_CWR CONSTANT_64BIT_FLAG (7)
1373#define RIG_MODE_RTTYR CONSTANT_64BIT_FLAG (8)
1374#define RIG_MODE_AMS CONSTANT_64BIT_FLAG (9)
1375#define RIG_MODE_PKTLSB CONSTANT_64BIT_FLAG (10)
1376#define RIG_MODE_PKTUSB CONSTANT_64BIT_FLAG (11)
1377#define RIG_MODE_PKTFM CONSTANT_64BIT_FLAG (12)
1378#define RIG_MODE_ECSSUSB CONSTANT_64BIT_FLAG (13)
1379#define RIG_MODE_ECSSLSB CONSTANT_64BIT_FLAG (14)
1380#define RIG_MODE_FAX CONSTANT_64BIT_FLAG (15)
1381#define RIG_MODE_SAM CONSTANT_64BIT_FLAG (16)
1382#define RIG_MODE_SAL CONSTANT_64BIT_FLAG (17)
1383#define RIG_MODE_SAH CONSTANT_64BIT_FLAG (18)
1384#define RIG_MODE_DSB CONSTANT_64BIT_FLAG (19)
1385#define RIG_MODE_FMN CONSTANT_64BIT_FLAG (21)
1386#define RIG_MODE_PKTAM CONSTANT_64BIT_FLAG (22)
1387#define RIG_MODE_P25 CONSTANT_64BIT_FLAG (23)
1388#define RIG_MODE_DSTAR CONSTANT_64BIT_FLAG (24)
1389#define RIG_MODE_DPMR CONSTANT_64BIT_FLAG (25)
1390#define RIG_MODE_NXDNVN CONSTANT_64BIT_FLAG (26)
1391#define RIG_MODE_NXDN_N CONSTANT_64BIT_FLAG (27)
1392#define RIG_MODE_DCR CONSTANT_64BIT_FLAG (28)
1393#define RIG_MODE_AMN CONSTANT_64BIT_FLAG (29)
1394#define RIG_MODE_PSK CONSTANT_64BIT_FLAG (30)
1395#define RIG_MODE_PSKR CONSTANT_64BIT_FLAG (31)
1396#ifndef SWIGLUAHIDE
1397/* hide the top 32 bits from the Lua binding as they will not work */
1398#define RIG_MODE_DD CONSTANT_64BIT_FLAG (32)
1399#define RIG_MODE_C4FM CONSTANT_64BIT_FLAG (33)
1400#define RIG_MODE_PKTFMN CONSTANT_64BIT_FLAG (34)
1401#define RIG_MODE_SPEC CONSTANT_64BIT_FLAG (35)
1402#define RIG_MODE_CWN CONSTANT_64BIT_FLAG (36)
1403#define RIG_MODE_IQ CONSTANT_64BIT_FLAG (37)
1404#define RIG_MODE_ISBUSB CONSTANT_64BIT_FLAG (38)
1405#define RIG_MODE_ISBLSB CONSTANT_64BIT_FLAG (39)
1406#define RIG_MODE_USBD1 CONSTANT_64BIT_FLAG (40)
1407#define RIG_MODE_USBD2 CONSTANT_64BIT_FLAG (41)
1408#define RIG_MODE_USBD3 CONSTANT_64BIT_FLAG (42)
1409#define RIG_MODE_LSBD1 CONSTANT_64BIT_FLAG (43)
1410#define RIG_MODE_LSBD2 CONSTANT_64BIT_FLAG (44)
1411#define RIG_MODE_LSBD3 CONSTANT_64BIT_FLAG (45)
1412#define RIG_MODE_BIT46 CONSTANT_64BIT_FLAG (46)
1413#define RIG_MODE_BIT47 CONSTANT_64BIT_FLAG (47)
1414#define RIG_MODE_BIT48 CONSTANT_64BIT_FLAG (48)
1415#define RIG_MODE_BIT49 CONSTANT_64BIT_FLAG (49)
1416#define RIG_MODE_BIT50 CONSTANT_64BIT_FLAG (50)
1417#define RIG_MODE_BIT51 CONSTANT_64BIT_FLAG (51)
1418#define RIG_MODE_BIT52 CONSTANT_64BIT_FLAG (52)
1419#define RIG_MODE_BIT53 CONSTANT_64BIT_FLAG (53)
1420#define RIG_MODE_BIT54 CONSTANT_64BIT_FLAG (54)
1421#define RIG_MODE_BIT55 CONSTANT_64BIT_FLAG (55)
1422#define RIG_MODE_BIT56 CONSTANT_64BIT_FLAG (56)
1423#define RIG_MODE_BIT57 CONSTANT_64BIT_FLAG (57)
1424#define RIG_MODE_BIT58 CONSTANT_64BIT_FLAG (58)
1425#define RIG_MODE_BIT59 CONSTANT_64BIT_FLAG (59)
1426#define RIG_MODE_BIT60 CONSTANT_64BIT_FLAG (60)
1427#define RIG_MODE_BIT61 CONSTANT_64BIT_FLAG (61)
1428#define RIG_MODE_BIT62 CONSTANT_64BIT_FLAG (62)
1429#define RIG_MODE_TESTS_MAX CONSTANT_64BIT_FLAG (63)
1430#define RIG_MODE_ALL (0xffffffff)
1431#endif
1432
1436#define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB)
1437
1441#define RIG_MODE_PKTSSB (RIG_MODE_PKTUSB|RIG_MODE_PKTLSB)
1442
1446#define RIG_MODE_ECSS (RIG_MODE_ECSSUSB|RIG_MODE_ECSSLSB)
1447
1449#define RIG_DBLST_END 0 /* end marker in a preamp/att level list */
1450#define RIG_IS_DBLST_END(d) ((d)==0)
1452
1453
1470
1472#define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE}
1473#define RIG_IS_FRNG_END(r) ((r).startf == Hz(0) && (r).endf == Hz(0))
1475
1496
1498#define RIG_TS_ANY 0
1499#define RIG_TS_END {RIG_MODE_NONE, 0}
1500#define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0)
1502
1503
1532#define RIG_FLT_ANY 0
1533#define RIG_FLT_END {RIG_MODE_NONE, 0}
1534#define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE)
1535#define DEBUGMSGSAVE_SIZE 24000
1537
1538
1542#define RIG_CHFLAG_NONE 0
1546#define RIG_CHFLAG_SKIP (1<<0)
1550#define RIG_CHFLAG_DATA (1<<1)
1554#define RIG_CHFLAG_PSKIP (1<<2)
1555
1564
1566#define RIG_EXT_END {0, {.i=0}}
1567#define RIG_IS_EXT_END(x) ((x).token == 0)
1569
1611
1615typedef struct channel channel_t;
1616
1623 unsigned bank_num: 1;
1624 unsigned vfo: 1;
1625 unsigned ant: 1;
1626 unsigned freq: 1;
1627 unsigned mode: 1;
1628 unsigned width: 1;
1630 unsigned tx_freq: 1;
1631 unsigned tx_mode: 1;
1632 unsigned tx_width: 1;
1634 unsigned split: 1;
1635 unsigned tx_vfo: 1;
1636 unsigned rptr_shift: 1;
1637 unsigned rptr_offs: 1;
1638 unsigned tuning_step: 1;
1639 unsigned rit: 1;
1640 unsigned xit: 1;
1643 unsigned ctcss_tone: 1;
1644 unsigned ctcss_sql: 1;
1645 unsigned dcs_code: 1;
1646 unsigned dcs_sql: 1;
1647 unsigned scan_group: 1;
1648 unsigned flags: 1;
1649 unsigned channel_desc: 1;
1650 unsigned ext_levels: 1;
1651 unsigned tag: 1;
1652};
1653
1658
1659
1683
1684
1704
1706#define RIG_CHAN_END {0,0,RIG_MTYPE_NONE}
1707#define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE)
1709
1713#define RIG_MEM_CAPS_ALL -1
1714
1718typedef struct chan_list chan_t;
1719
1720
1737
1741typedef struct gran gran_t;
1742
1743
1748 int size;
1749 struct {
1750 int raw;
1751 int val;
1752 } table[HAMLIB_MAX_CAL_LENGTH];
1753};
1754
1767typedef struct cal_table cal_table_t;
1768
1770#define EMPTY_STR_CAL { 0, { { 0, 0 }, } }
1772
1773
1778 int size;
1779 struct {
1780 int raw;
1781 float val;
1782 } table[HAMLIB_MAX_CAL_LENGTH];
1783};
1784
1798
1800#define EMPTY_FLOAT_CAL { 0, { { 0, 0f }, } }
1801
1802typedef int (* chan_cb_t)(RIG *, vfo_t vfo, channel_t **, int, const chan_t *, rig_ptr_t);
1803typedef int (* confval_cb_t)(RIG *,
1804 const struct confparams *,
1805 value_t *,
1806 rig_ptr_t);
1808
1813{
1814 int id;
1815 char *name;
1816};
1817
1828
1833{
1834 int id;
1835 char *name;
1836};
1837
1869
1874 struct deferred_config_item *next;
1875 hamlib_token_t token;
1876 char *value; // strdup'ed, must be freed
1877};
1879
1881 struct deferred_config_item *first; // NULL if none
1882 struct deferred_config_item *last;
1883};
1885
1906#define RIG_MODEL(arg) .rig_model=arg,.macro_name=#arg
1907#define HAMLIB_CHECK_RIG_CAPS "HAMLIB_CHECK_RIG_CAPS"
1908struct rig_caps {
1909 rig_model_t rig_model;
1910 const char *model_name;
1911 const char *mfg_name;
1912 const char *version;
1913 const char *copyright;
1914 enum rig_status_e status;
1916 int rig_type;
1917 ptt_type_t ptt_type;
1918 dcd_type_t dcd_type;
1919 rig_port_t port_type;
1921 int serial_rate_min;
1922 int serial_rate_max;
1923 int serial_data_bits;
1924 int serial_stop_bits;
1925 enum serial_parity_e serial_parity;
1926 enum serial_handshake_e serial_handshake;
1928 int write_delay;
1929 int post_write_delay;
1930 int timeout;
1931 int retry;
1933 setting_t has_get_func;
1934 setting_t has_set_func;
1935 setting_t has_get_level;
1936 setting_t has_set_level;
1937 setting_t has_get_parm;
1938 setting_t has_set_parm;
1940 gran_t level_gran[RIG_SETTING_MAX];
1941 gran_t parm_gran[RIG_SETTING_MAX];
1943 const struct confparams *extparms;
1944 const struct confparams *extlevels;
1945 const struct confparams *extfuncs;
1946 int *ext_tokens;
1948 tone_t *ctcss_list;
1949 tone_t *dcs_list;
1951 int preamp[HAMLIB_MAXDBLSTSIZ];
1952 int attenuator[HAMLIB_MAXDBLSTSIZ];
1953 shortfreq_t max_rit;
1954 shortfreq_t max_xit;
1955 shortfreq_t max_ifshift;
1957 int agc_level_count;
1958 enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS];
1960 ann_t announces;
1962 vfo_op_t vfo_ops;
1963 scan_t scan_ops;
1964 int targetable_vfo;
1965 int transceive;
1967 int bank_qty;
1968 int chan_desc_sz;
1970 chan_t chan_list[HAMLIB_CHANLSTSIZ];
1972 // As of 2020-02-12 we know of 5 models from Icom USA, EUR, ITR, TPE, KOR for the IC-9700
1973 // So we currently have 5 ranges we need to deal with
1974 // The backend for the model should fill in the label field to explain what model it is
1975 // The the IC-9700 in ic7300.c for an example
1976 freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ];
1977 freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ];
1978 freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ];
1979 freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ];
1980 freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ];
1981 freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ];
1982 freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ];
1983 freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ];
1984 freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ];
1985 freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ];
1987 struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
1988 struct filter_list filters[HAMLIB_FLTLSTSIZ];
1990 cal_table_t str_cal;
1991 cal_table_float_t swr_cal;
1992 cal_table_float_t alc_cal;
1993 cal_table_float_t rfpower_meter_cal;
1994 cal_table_float_t comp_meter_cal;
1995 cal_table_float_t vd_meter_cal;
1996 cal_table_float_t id_meter_cal;
1998 struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES];
1999 enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES];
2000 freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS];
2001 struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES];
2002 int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ];
2004 const struct confparams *cfgparams;
2005 const rig_ptr_t priv;
2007 /*
2008 * Rig API
2009 *
2010 */
2011
2012 int (*rig_init)(RIG *rig);
2013 int (*rig_cleanup)(RIG *rig);
2014 int (*rig_open)(RIG *rig);
2015 int (*rig_close)(RIG *rig);
2016
2017 /*
2018 * General API commands, from most primitive to least.. :()
2019 * List Set/Get functions pairs
2020 */
2021
2022 int (*set_freq)(RIG *rig, vfo_t vfo, freq_t freq);
2023 int (*get_freq)(RIG *rig, vfo_t vfo, freq_t *freq);
2024
2025 int (*set_mode)(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
2026 int (*get_mode)(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width);
2027
2028 int (*set_vfo)(RIG *rig, vfo_t vfo);
2029 int (*get_vfo)(RIG *rig, vfo_t *vfo);
2030
2031 int (*set_ptt)(RIG *rig, vfo_t vfo, ptt_t ptt);
2032 int (*get_ptt)(RIG *rig, vfo_t vfo, ptt_t *ptt);
2033
2034 int (*get_dcd)(RIG *rig, vfo_t vfo, dcd_t *dcd);
2035
2036 int (*set_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift);
2037 int (*get_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift);
2038
2039 int (*set_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t offs);
2040 int (*get_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t *offs);
2041
2042 int (*set_split_freq)(RIG *rig, vfo_t vfo, freq_t tx_freq);
2043 int (*get_split_freq)(RIG *rig, vfo_t vfo, freq_t *tx_freq);
2044
2045 int (*set_split_mode)(RIG *rig,
2046 vfo_t vfo,
2047 rmode_t tx_mode,
2048 pbwidth_t tx_width);
2049 int (*get_split_mode)(RIG *rig,
2050 vfo_t vfo,
2051 rmode_t *tx_mode,
2052 pbwidth_t *tx_width);
2053
2054 int (*set_split_freq_mode)(RIG *rig,
2055 vfo_t vfo,
2056 freq_t tx_freq,
2057 rmode_t tx_mode,
2058 pbwidth_t tx_width);
2059 int (*get_split_freq_mode)(RIG *rig,
2060 vfo_t vfo,
2061 freq_t *tx_freq,
2062 rmode_t *tx_mode,
2063 pbwidth_t *tx_width);
2064
2065 int (*set_split_vfo)(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo);
2066 int (*get_split_vfo)(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo);
2067
2068 int (*set_rit)(RIG *rig, vfo_t vfo, shortfreq_t rit);
2069 int (*get_rit)(RIG *rig, vfo_t vfo, shortfreq_t *rit);
2070
2071 int (*set_xit)(RIG *rig, vfo_t vfo, shortfreq_t xit);
2072 int (*get_xit)(RIG *rig, vfo_t vfo, shortfreq_t *xit);
2073
2074 int (*set_ts)(RIG *rig, vfo_t vfo, shortfreq_t ts);
2075 int (*get_ts)(RIG *rig, vfo_t vfo, shortfreq_t *ts);
2076
2077 int (*set_dcs_code)(RIG *rig, vfo_t vfo, tone_t code);
2078 int (*get_dcs_code)(RIG *rig, vfo_t vfo, tone_t *code);
2079
2080 int (*set_tone)(RIG *rig, vfo_t vfo, tone_t tone);
2081 int (*get_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
2082
2083 int (*set_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t tone);
2084 int (*get_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
2085
2086 int (*set_dcs_sql)(RIG *rig, vfo_t vfo, tone_t code);
2087 int (*get_dcs_sql)(RIG *rig, vfo_t vfo, tone_t *code);
2088
2089 int (*set_tone_sql)(RIG *rig, vfo_t vfo, tone_t tone);
2090 int (*get_tone_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
2091
2092 int (*set_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t tone);
2093 int (*get_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
2094
2095 int (*power2mW)(RIG *rig,
2096 unsigned int *mwpower,
2097 float power,
2098 freq_t freq,
2099 rmode_t mode);
2100 int (*mW2power)(RIG *rig,
2101 float *power,
2102 unsigned int mwpower,
2103 freq_t freq,
2104 rmode_t mode);
2105
2106 int (*set_powerstat)(RIG *rig, powerstat_t status);
2107 int (*get_powerstat)(RIG *rig, powerstat_t *status);
2108
2109 int (*reset)(RIG *rig, reset_t reset);
2110
2111 int (*set_ant)(RIG *rig, vfo_t vfo, ant_t ant, value_t option);
2112 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);
2113
2114 int (*set_level)(RIG *rig, vfo_t vfo, setting_t level, value_t val);
2115 int (*get_level)(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
2116
2117 int (*set_func)(RIG *rig, vfo_t vfo, setting_t func, int status);
2118 int (*get_func)(RIG *rig, vfo_t vfo, setting_t func, int *status);
2119
2120 int (*set_parm)(RIG *rig, setting_t parm, value_t val);
2121 int (*get_parm)(RIG *rig, setting_t parm, value_t *val);
2122
2123 int (*set_ext_level)(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t val);
2124 int (*get_ext_level)(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t *val);
2125
2126 int (*set_ext_func)(RIG *rig, vfo_t vfo, hamlib_token_t token, int status);
2127 int (*get_ext_func)(RIG *rig, vfo_t vfo, hamlib_token_t token, int *status);
2128
2129 int (*set_ext_parm)(RIG *rig, hamlib_token_t token, value_t val);
2130 int (*get_ext_parm)(RIG *rig, hamlib_token_t token, value_t *val);
2131
2132 int (*set_conf)(RIG *rig, hamlib_token_t token, const char *val);
2133 int (*get_conf)(RIG *rig, hamlib_token_t token, char *val);
2134
2135 int (*send_dtmf)(RIG *rig, vfo_t vfo, const char *digits);
2136 int (*recv_dtmf)(RIG *rig, vfo_t vfo, char *digits, int *length);
2137
2138 int (*send_morse)(RIG *rig, vfo_t vfo, const char *msg);
2139 int (*stop_morse)(RIG *rig, vfo_t vfo);
2140 int (*wait_morse)(RIG *rig, vfo_t vfo);
2141
2142 int (*send_voice_mem)(RIG *rig, vfo_t vfo, int ch);
2143 int (*stop_voice_mem)(RIG *rig, vfo_t vfo);
2144
2145 int (*set_bank)(RIG *rig, vfo_t vfo, int bank);
2146
2147 int (*set_mem)(RIG *rig, vfo_t vfo, int ch);
2148 int (*get_mem)(RIG *rig, vfo_t vfo, int *ch);
2149
2150 int (*vfo_op)(RIG *rig, vfo_t vfo, vfo_op_t op);
2151
2152 int (*scan)(RIG *rig, vfo_t vfo, scan_t scan, int ch);
2153
2154 int (*set_trn)(RIG *rig, int trn);
2155 int (*get_trn)(RIG *rig, int *trn);
2156
2157 int (*decode_event)(RIG *rig);
2158
2159 int (*set_channel)(RIG *rig, vfo_t vfo, const channel_t *chan);
2160 int (*get_channel)(RIG *rig, vfo_t vfo, channel_t *chan, int read_only);
2161
2162 const char * (*get_info)(RIG *rig);
2163
2164 int (*set_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
2165 int (*get_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
2166
2167 int (*set_mem_all_cb)(RIG *rig,
2168 vfo_t vfo,
2169 chan_cb_t chan_cb,
2170 confval_cb_t parm_cb,
2171 rig_ptr_t);
2172 int (*get_mem_all_cb)(RIG *rig,
2173 vfo_t vfo,
2174 chan_cb_t chan_cb,
2175 confval_cb_t parm_cb,
2176 rig_ptr_t);
2177
2178 int (*set_vfo_opt)(RIG *rig, int status); // only for Net Rigctl device
2179 int (*rig_get_vfo_info) (RIG *rig,
2180 vfo_t vfo,
2181 freq_t *freq,
2182 rmode_t *mode,
2183 pbwidth_t *width,
2184 split_t *split);
2185 int(*set_clock) (RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset);
2186 int(*get_clock) (RIG *rig, int *year, int *month, int *day, int *hour, int *min, int *sec, double *msec, int *utc_offset);
2187
2188 const char *clone_combo_set;
2189 const char *clone_combo_get;
2190 const char *macro_name;
2192 int async_data_supported;
2193 int (*read_frame_direct)(RIG *rig,
2194 size_t buffer_length,
2195 const unsigned char *buffer);
2196 int (*is_async_frame)(RIG *rig,
2197 size_t frame_length,
2198 const unsigned char *frame);
2199 int (*process_async_frame)(RIG *rig,
2200 size_t frame_length,
2201 const unsigned char *frame);
2202// this will be used to check rigcaps structure is compatible with client
2203 char *hamlib_check_rig_caps; // a constant value we can check for hamlib integrity
2204 int (*get_conf2)(RIG *rig, hamlib_token_t token, char *val, int val_len);
2205 int (*password)(RIG *rig, const char *key1); /*< Send encrypted password if rigctld is secured with -A/--password */
2206 int (*set_lock_mode)(RIG *rig, int mode);
2207 int (*get_lock_mode)(RIG *rig, int *mode);
2208 short timeout_retry;
2209 short morse_qsize; /* max length of morse */
2210// int (*bandwidth2rig)(RIG *rig, enum bandwidth_t bandwidth);
2211// enum bandwidth_t (*rig2bandwidth)(RIG *rig, int rigbandwidth);
2212};
2214
2219// all functions enumerated for rig_get_function_ptr
2221 RIG_FUNCTION_INIT,
2222 RIG_FUNCTION_CLEANUP,
2223 RIG_FUNCTION_OPEN,
2224 RIG_FUNCTION_CLOSE,
2225 RIG_FUNCTION_SET_FREQ,
2226 RIG_FUNCTION_GET_FREQ,
2227 RIG_FUNCTION_SET_MODE,
2228 RIG_FUNCTION_GET_MODE,
2229 RIG_FUNCTION_SET_VFO,
2230 RIG_FUNCTION_GET_VFO,
2231 RIG_FUNCTION_SET_PTT,
2232 RIG_FUNCTION_GET_PTT,
2233 RIG_FUNCTION_GET_DCD,
2234 RIG_FUNCTION_SET_RPTR_SHIFT,
2235 RIG_FUNCTION_GET_RPTR_SHIFT,
2236 RIG_FUNCTION_SET_RPTR_OFFS,
2237 RIG_FUNCTION_GET_RPTR_OFFS,
2238 RIG_FUNCTION_SET_SPLIT_FREQ,
2239 RIG_FUNCTION_GET_SPLIT_FREQ,
2240 RIG_FUNCTION_SET_SPLIT_MODE,
2241 RIG_FUNCTION_SET_SPLIT_FREQ_MODE,
2242 RIG_FUNCTION_GET_SPLIT_FREQ_MODE,
2243 RIG_FUNCTION_SET_SPLIT_VFO,
2244 RIG_FUNCTION_GET_SPLIT_VFO,
2245 RIG_FUNCTION_SET_RIT,
2246 RIG_FUNCTION_GET_RIT,
2247 RIG_FUNCTION_SET_XIT,
2248 RIG_FUNCTION_GET_XIT,
2249 RIG_FUNCTION_SET_TS,
2250 RIG_FUNCTION_GET_TS,
2251 RIG_FUNCTION_SET_DCS_CODE,
2252 RIG_FUNCTION_GET_DCS_CODE,
2253 RIG_FUNCTION_SET_TONE,
2254 RIG_FUNCTION_GET_TONE,
2255 RIG_FUNCTION_SET_CTCSS_TONE,
2256 RIG_FUNCTION_GET_CTCSS_TONE,
2257 RIG_FUNCTION_SET_DCS_SQL,
2258 RIG_FUNCTION_GET_DCS_SQL,
2259 RIG_FUNCTION_SET_TONE_SQL,
2260 RIG_FUNCTION_GET_TONE_SQL,
2261 RIG_FUNCTION_SET_CTCSS_SQL,
2262 RIG_FUNCTION_GET_CTCSS_SQL,
2263 RIG_FUNCTION_POWER2MW,
2264 RIG_FUNCTION_MW2POWER,
2265 RIG_FUNCTION_SET_POWERSTAT,
2266 RIG_FUNCTION_GET_POWERSTAT,
2267 RIG_FUNCTION_RESET,
2268 RIG_FUNCTION_SET_ANT,
2269 RIG_FUNCTION_GET_ANT,
2270 RIG_FUNCTION_SET_LEVEL,
2271 RIG_FUNCTION_GET_LEVEL,
2272 RIG_FUNCTION_SET_FUNC,
2273 RIG_FUNCTION_GET_FUNC,
2274 RIG_FUNCTION_SET_PARM,
2275 RIG_FUNCTION_GET_PARM,
2276 RIG_FUNCTION_SET_EXT_LEVEL,
2277 RIG_FUNCTION_GET_EXT_LEVEL,
2278 RIG_FUNCTION_SET_EXT_FUNC,
2279 RIG_FUNCTION_GET_EXT_FUNC,
2280 RIG_FUNCTION_SET_EXT_PARM,
2281 RIG_FUNCTION_GET_EXT_PARM,
2282 RIG_FUNCTION_SET_CONF,
2283 RIG_FUNCTION_GET_CONF,
2284 RIG_FUNCTION_SEND_DTMF,
2285 RIG_FUNCTION_SEND_MORSE,
2286 RIG_FUNCTION_STOP_MORSE,
2287 RIG_FUNCTION_WAIT_MORSE,
2288 RIG_FUNCTION_SEND_VOICE_MEM,
2289 RIG_FUNCTION_SET_BANK,
2290 RIG_FUNCTION_SET_MEM,
2291 RIG_FUNCTION_GET_MEM,
2292 RIG_FUNCTION_VFO_OP,
2293 RIG_FUNCTION_SCAN,
2294 RIG_FUNCTION_SET_TRN,
2295 RIG_FUNCTION_GET_TRN,
2296 RIG_FUNCTION_DECODE_EVENT,
2297 RIG_FUNCTION_SET_CHANNEL,
2298 RIG_FUNCTION_GET_CHANNEL,
2299 RIG_FUNCTION_GET_INFO,
2300 RIG_FUNCTION_SET_CHAN_ALL_CB,
2301 RIG_FUNCTION_GET_CHAN_ALL_CB,
2302 RIG_FUNCTION_SET_MEM_ALL_CB,
2303 RIG_FUNCTION_GET_MEM_ALL_CB,
2304 RIG_FUNCTION_SET_VFO_OPT,
2305 RIG_FUNCTION_READ_FRAME_DIRECT,
2306 RIG_FUNCTION_IS_ASYNC_FRAME,
2307 RIG_FUNCTION_PROCESS_ASYNC_FRAME,
2308 RIG_FUNCTION_GET_CONF2,
2309 RIG_FUNCTION_STOP_VOICE_MEM,
2310};
2311
2316extern HAMLIB_EXPORT (void *) rig_get_function_ptr(rig_model_t rig_model, enum rig_function_e rig_function);
2317
2322// values enumerated for rig->caps values
2324 RIG_CAPS_TARGETABLE_VFO,
2325 RIG_CAPS_RIG_MODEL,
2326 RIG_CAPS_PORT_TYPE,
2327 RIG_CAPS_PTT_TYPE,
2328 RIG_CAPS_HAS_GET_LEVEL,
2329 RIG_CAPS_HAS_SET_LEVEL,
2330};
2331
2332enum rig_caps_cptr_e {
2333 RIG_CAPS_VERSION_CPTR,
2334 RIG_CAPS_MFG_NAME_CPTR,
2335 RIG_CAPS_MODEL_NAME_CPTR,
2336 RIG_CAPS_STATUS_CPTR
2337};
2338
2343extern HAMLIB_EXPORT (uint64_t) rig_get_caps_int(rig_model_t rig_model, enum rig_caps_int_e rig_caps);
2344
2349extern HAMLIB_EXPORT (const char *) rig_get_caps_cptr(rig_model_t rig_model, enum rig_caps_cptr_e rig_caps);
2350
2351struct hamlib_async_pipe;
2352
2353typedef struct hamlib_async_pipe hamlib_async_pipe_t;
2354
2361// DO NOT CHANGE THIS STRUCTURE ALL UNTIL 5.0
2362// Right now it is static inside rig structure
2363// 5.0 will change it to a pointer which can then be added to
2364// At that point only add to the end of the structure
2365typedef struct hamlib_port {
2366 union {
2367 rig_port_t rig;
2368 ptt_type_t ptt;
2369 dcd_type_t dcd;
2370 } type;
2371
2372 int fd;
2373 void *handle;
2375 int write_delay;
2376 int post_write_delay;
2378 struct {
2379 int tv_sec, tv_usec;
2380 } post_write_date;
2382 int timeout;
2383 short retry;
2384 short flushx;
2386 char pathname[HAMLIB_FILPATHLEN];
2388 union {
2389 struct {
2390 int rate;
2391 int data_bits;
2392 int stop_bits;
2393 enum serial_parity_e parity;
2394 enum serial_handshake_e handshake;
2395 enum serial_control_state_e rts_state;
2396 enum serial_control_state_e dtr_state;
2397 } serial;
2399 struct {
2400 int pin;
2401 } parallel;
2403 struct {
2404 int ptt_bitnum;
2405 } cm108;
2407 struct {
2408 int vid;
2409 int pid;
2410 int conf;
2411 int iface;
2412 int alt;
2413 char *vendor_name;
2414 char *product;
2415 } usb;
2417 struct {
2418 int on_value;
2419 int value;
2420 } gpio;
2421 } parm;
2422 int client_port;
2423 RIG *rig;
2424 int asyncio;
2425#if defined(_WIN32)
2426 hamlib_async_pipe_t *sync_data_pipe;
2427 hamlib_async_pipe_t *sync_data_error_pipe;
2428#else
2429 int fd_sync_write;
2430 int fd_sync_read;
2431 int fd_sync_error_write;
2432 int fd_sync_error_read;
2433#endif
2434 short timeout_retry;
2435// DO NOT ADD ANYTHING HERE UNTIL 5.0!!
2436} hamlib_port_t;
2437
2438
2439// DO NOT CHANGE THIS STRUCTURE AT ALL
2440// Will be removed in 5.0
2441typedef struct hamlib_port_deprecated {
2442 union {
2443 rig_port_t rig;
2444 ptt_type_t ptt;
2445 dcd_type_t dcd;
2446 } type;
2447
2448 int fd;
2449 void *handle;
2451 int write_delay;
2452 int post_write_delay;
2454 struct {
2455 int tv_sec, tv_usec;
2456 } post_write_date;
2458 int timeout;
2459 short retry;
2460 short flushx;
2462 char pathname[HAMLIB_FILPATHLEN];
2464 union {
2465 struct {
2466 int rate;
2467 int data_bits;
2468 int stop_bits;
2469 enum serial_parity_e parity;
2470 enum serial_handshake_e handshake;
2471 enum serial_control_state_e rts_state;
2472 enum serial_control_state_e dtr_state;
2473 } serial;
2475 struct {
2476 int pin;
2477 } parallel;
2479 struct {
2480 int ptt_bitnum;
2481 } cm108;
2483 struct {
2484 int vid;
2485 int pid;
2486 int conf;
2487 int iface;
2488 int alt;
2489 char *vendor_name;
2490 char *product;
2491 } usb;
2493 struct {
2494 int on_value;
2495 int value;
2496 } gpio;
2497 } parm;
2498 int client_port;
2499 RIG *rig;
2500} hamlib_port_t_deprecated;
2502
2503#if !defined(__APPLE__) || !defined(__cplusplus)
2504typedef hamlib_port_t_deprecated port_t_deprecated;
2505typedef hamlib_port_t port_t;
2506#endif
2507
2508/* Macros to access data structures/pointers
2509 * Make it easier to change location in preparation
2510 * for moving them out of rig->state.
2511 * See https://github.com/Hamlib/Hamlib/issues/1445
2512 * https://github.com/Hamlib/Hamlib/issues/1452
2513 * https://github.com/Hamlib/Hamlib/issues/1420
2514 * https://github.com/Hamlib/Hamlib/issues/536
2515 * https://github.com/Hamlib/Hamlib/issues/487
2516 */
2517// Note: Experimental, and subject to change!!
2518#if defined(IN_HAMLIB)
2519/* These are for internal use only */
2520#define RIGPORT(r) (&r->state.rigport)
2521#define PTTPORT(r) (&r->state.pttport)
2522#define DCDPORT(r) (&r->state.dcdport)
2523#define CACHE(r) (&r->state.cache)
2524#define AMPPORT(a) (&a->state.ampport)
2525#define ROTPORT(r) (&r->state.rotport)
2526#define ROTPORT2(r) (&r->state.rotport2)
2527#define STATE(r) (&r->state)
2528#define AMPSTATE(a) (&(a)->state)
2529#define ROTSTATE(r) (&(r)->state)
2530/* Then when the rigport address is stored as a pointer somewhere else(say,
2531 * in the rig structure itself), the definition could be changed to
2532 * #define RIGPORT(r) r->somewhereelse
2533 * and every reference is updated.
2534 */
2535#else
2536/* Define external unique names */
2537#define HAMLIB_RIGPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_RIGPORT))
2538#define HAMLIB_PTTPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_PTTPORT))
2539#define HAMLIB_DCDPORT(r) ((hamlib_port_t *)rig_data_pointer(r, RIG_PTRX_DCDPORT))
2540#define HAMLIB_CACHE(r) ((struct rig_cache *)rig_data_pointer(r, RIG_PTRX_CACHE))
2541#define HAMLIB_AMPPORT(a) ((hamlib_port_t *)amp_data_pointer(a, RIG_PTRX_AMPPORT))
2542#define HAMLIB_ROTPORT(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT))
2543#define HAMLIB_ROTPORT2(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT2))
2544#define HAMLIB_STATE(r) ((struct rig_state *)rig_data_pointer(r, RIG_PTRX_STATE))
2545#define HAMLIB_AMPSTATE(a) ((struct amp_state *)amp_data_pointer(a, RIG_PTRX_AMPSTATE))
2546#define HAMLIB_ROTSTATE(r) ((struct rot_state *)rot_data_pointer(r, RIG_PTRX_ROTSTATE))
2547#endif
2548
2549typedef enum {
2550 RIG_PTRX_NONE=0,
2551 RIG_PTRX_RIGPORT,
2552 RIG_PTRX_PTTPORT,
2553 RIG_PTRX_DCDPORT,
2554 RIG_PTRX_CACHE,
2555 RIG_PTRX_AMPPORT,
2556 RIG_PTRX_ROTPORT,
2557 RIG_PTRX_ROTPORT2,
2558 RIG_PTRX_STATE,
2559 RIG_PTRX_AMPSTATE,
2560 RIG_PTRX_ROTSTATE,
2561// New entries go directly above this line====================
2562 RIG_PTRX_MAXIMUM
2563} rig_ptrx_t;
2564
2565#define HAMLIB_ELAPSED_GET 0
2566#define HAMLIB_ELAPSED_SET 1
2567#define HAMLIB_ELAPSED_INVALIDATE 2
2568
2569#define HAMLIB_CACHE_ALWAYS (-1)
2571typedef enum {
2572 HAMLIB_CACHE_ALL, // to set all cache timeouts at once
2573 HAMLIB_CACHE_VFO,
2574 HAMLIB_CACHE_FREQ,
2575 HAMLIB_CACHE_MODE,
2576 HAMLIB_CACHE_PTT,
2577 HAMLIB_CACHE_SPLIT,
2578 HAMLIB_CACHE_WIDTH
2579} hamlib_cache_t;
2580
2581typedef enum {
2582 TWIDDLE_OFF,
2583 TWIDDLE_ON
2584} twiddle_state_t;
2585
2593 int timeout_ms; // the cache timeout for invalidating itself
2594 vfo_t vfo;
2595 //freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1
2596 // other abstraction here is based on dual vfo rigs and mapped to all others
2597 // So we have four possible states of rig
2598 // MainA, MainB, SubA, SubB
2599 // Main is the Main VFO and Sub is for the 2nd VFO
2600 // Most rigs have MainA and MainB
2601 // Dual VFO rigs can have SubA and SubB too
2602 // For dual VFO rigs simplex operations are all done on MainA/MainB -- ergo this abstraction
2603 freq_t freqCurr; // Other VFO
2604 freq_t freqOther; // Other VFO
2605 freq_t freqMainA; // VFO_A, VFO_MAIN, and VFO_MAINA
2606 freq_t freqMainB; // VFO_B, VFO_SUB, and VFO_MAINB
2607 freq_t freqMainC; // VFO_C, VFO_MAINC
2608 freq_t freqSubA; // VFO_SUBA -- only for rigs with dual Sub VFOs
2609 freq_t freqSubB; // VFO_SUBB -- only for rigs with dual Sub VFOs
2610 freq_t freqSubC; // VFO_SUBC -- only for rigs with 3 Sub VFOs
2611 freq_t freqMem; // VFO_MEM -- last MEM channel
2612 rmode_t modeCurr;
2613 rmode_t modeOther;
2614 rmode_t modeMainA;
2615 rmode_t modeMainB;
2616 rmode_t modeMainC;
2617 rmode_t modeSubA;
2618 rmode_t modeSubB;
2619 rmode_t modeSubC;
2620 rmode_t modeMem;
2621 pbwidth_t widthCurr; // if non-zero then rig has separate width for MainA
2622 pbwidth_t widthOther; // if non-zero then rig has separate width for MainA
2623 pbwidth_t widthMainA; // if non-zero then rig has separate width for MainA
2624 pbwidth_t widthMainB; // if non-zero then rig has separate width for MainB
2625 pbwidth_t widthMainC; // if non-zero then rig has separate width for MainC
2626 pbwidth_t widthSubA; // if non-zero then rig has separate width for SubA
2627 pbwidth_t widthSubB; // if non-zero then rig has separate width for SubB
2628 pbwidth_t widthSubC; // if non-zero then rig has separate width for SubC
2629 pbwidth_t widthMem; // if non-zero then rig has separate width for Mem
2630 ptt_t ptt;
2631 split_t split;
2632 vfo_t split_vfo; // split caches two values
2633 struct timespec time_freqCurr;
2634 struct timespec time_freqOther;
2635 struct timespec time_freqMainA;
2636 struct timespec time_freqMainB;
2637 struct timespec time_freqMainC;
2638 struct timespec time_freqSubA;
2639 struct timespec time_freqSubB;
2640 struct timespec time_freqSubC;
2641 struct timespec time_freqMem;
2642 struct timespec time_vfo;
2643 struct timespec time_modeCurr;
2644 struct timespec time_modeOther;
2645 struct timespec time_modeMainA;
2646 struct timespec time_modeMainB;
2647 struct timespec time_modeMainC;
2648 struct timespec time_modeSubA;
2649 struct timespec time_modeSubB;
2650 struct timespec time_modeSubC;
2651 struct timespec time_modeMem;
2652 struct timespec time_widthCurr;
2653 struct timespec time_widthOther;
2654 struct timespec time_widthMainA;
2655 struct timespec time_widthMainB;
2656 struct timespec time_widthMainC;
2657 struct timespec time_widthSubA;
2658 struct timespec time_widthSubB;
2659 struct timespec time_widthSubC;
2660 struct timespec time_widthMem;
2661 struct timespec time_ptt;
2662 struct timespec time_split;
2663 int satmode; // if rig is in satellite mode
2664};
2665
2670#include <hamlib/multicast.h>
2672{
2673 int multicast_running;
2674 int sock;
2675 int seqnumber;
2676 int runflag; // = 0;
2677 pthread_t threadid;
2678 // this mutex is needed to control serial access
2679 // as of 2023-05-13 we have main thread and multicast thread needing it
2680 // eventually we should be able to use cached info only in the main thread to avoid contention
2681 pthread_mutex_t mutex;
2682 int mutex_initialized;
2683//#ifdef HAVE_ARPA_INET_H
2684 //struct ip_mreq mreq; // = {0};
2685 struct sockaddr_in dest_addr; // = {0};
2686 int port;
2687//#endif
2688};
2689
2690typedef unsigned int rig_comm_status_t;
2691
2692#define RIG_COMM_STATUS_OK 0x00
2693#define RIG_COMM_STATUS_CONNECTING 0x01
2694#define RIG_COMM_STATUS_DISCONNECTED 0x02
2695#define RIG_COMM_STATUS_TERMINATED 0x03
2696#define RIG_COMM_STATUS_WARNING 0x04
2697#define RIG_COMM_STATUS_ERROR 0x05
2698
2710 /********* ENSURE ANY NEW ITEMS ARE ADDED AT BOTTOM OF THIS STRUCTURE *********/
2711 /*
2712 * overridable fields
2713 */
2714 // moving the hamlib_port_t to the end of rig_state and making it a pointer
2715 // this should allow changes to hamlib_port_t without breaking shared libraries
2716 // these will maintain a copy of the new port_t for backwards compatibility
2717 // to these offsets -- note these must stay until a major version update is done like 5.0
2718 hamlib_port_t_deprecated rigport_deprecated;
2719 hamlib_port_t_deprecated pttport_deprecated;
2720 hamlib_port_t_deprecated dcdport_deprecated;
2722 double vfo_comp;
2725 freq_range_t rx_range_list[HAMLIB_FRQRANGESIZ];
2726 freq_range_t tx_range_list[HAMLIB_FRQRANGESIZ];
2728 struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
2730 struct filter_list filters[HAMLIB_FLTLSTSIZ];
2734 chan_t chan_list[HAMLIB_CHANLSTSIZ];
2742 int preamp[HAMLIB_MAXDBLSTSIZ];
2743 int attenuator[HAMLIB_MAXDBLSTSIZ];
2756 /*
2757 * non overridable fields, internal use
2758 */
2759
2764 rig_ptr_t priv;
2765 rig_ptr_t obj;
2771 //rmode_t current_modeB; /*!< Mode currently set VFOB */
2775 // mode_list is used by some
2776 // so anything added to this structure must be below here
2783 // uplink allows gpredict to behave better by no reading the uplink VFO
2785 struct rig_cache cache;
2803 volatile unsigned int snapshot_packet_sequence_number;
2804
2805 volatile int multicast_publisher_run;
2807 volatile int async_data_handler_thread_run;
2808 void *async_data_handler_priv_data;
2809 volatile int poll_routine_thread_run;
2810 void *poll_routine_priv_data;
2811 pthread_mutex_t mutex_set_transaction;
2812 hamlib_port_t rigport;
2813 hamlib_port_t pttport;
2814 hamlib_port_t dcdport;
2815 /********* DO NOT ADD or CHANGE anything (or than to rename) ABOVE THIS LINE *********/
2816 /********* ENSURE ANY NEW ITEMS ARE ADDED AFTER HERE *********/
2817 /* flags instructing the rig_get routines to use cached values when asyncio is in use */
2821 int depth;
2829 // Adding a number of items so netrigctl can see the real rig information
2830 // Eventually may want to add these so that rigctld can see more of the backend
2831 // But that will come later if requested -- for now they just fill out dumpstate.c
2833 const char *model_name;
2834 const char *mfg_name;
2835 const char *version;
2836 const char *copyright;
2851 int retry;
2855 enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS];
2863 freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ];
2864 freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ];
2865 freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ];
2866 freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ];
2867 freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ];
2868 freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ];
2869 freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ];
2870 freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ];
2871 freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ];
2872 freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ];
2873 struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES];
2874 enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES];
2875 freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS];
2876 struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES];
2877 int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ];
2878 volatile int morse_data_handler_thread_run;
2879 void *morse_data_handler_priv_data;
2880 FIFO_RIG *fifo_morse;
2886 volatile int multicast_receiver_run;
2888 rig_comm_status_t comm_status;
2889 char device_id[HAMLIB_RIGNAMSIZ];
2892 struct timespec freq_event_elapsed;
2894 client_t client;
2895 pthread_mutex_t api_mutex; // Lock for any API entry
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:2759
const char * rig_strstatus(enum rig_status_e status)
Convert enum RIG_STATUS_... to printable string.
Definition misc.c:427
setting_t rig_parse_level(const char *s)
Convert alpha string to enum RIG_LEVEL_...
Definition misc.c:1098
scan_t rig_parse_scan(const char *s)
Convert alpha string to enum RIG_SCAN_...
Definition misc.c:1621
const char * rig_strrmode(rmode_t mode)
Convert enum RIG_MODE to alpha string.
Definition misc.c:540
setting_t rig_parse_func(const char *s)
Convert alpha string to enum RIG_FUNC_...
Definition misc.c:810
const char * rig_strmtype(chan_type_t mtype)
Convert enum RIG_MTYPE_... to alpha string.
Definition misc.c:1771
rmode_t rig_parse_mode(const char *s)
Convert alpha string to enum RIG_MODE.
Definition misc.c:513
const char * rig_strvfop(vfo_op_t op)
Convert enum RIG_OP_... to alpha string.
Definition misc.c:1576
const char * rig_strlevel(setting_t level)
Convert enum RIG_LEVEL_... to alpha string.
Definition misc.c:1179
int rig_flush_force(hamlib_port_t *port, int flush_async_data)
Force flush of rig communication data buffers.
Definition misc.c:2265
vfo_op_t rig_parse_vfo_op(const char *s)
Convert alpha string to enum RIG_OP_...
Definition misc.c:1551
const char * rig_get_info(RIG *rig)
get general information from the radio
Definition rig.c:7881
int rig_set_vfo(RIG *rig, vfo_t vfo)
set the current VFO
Definition rig.c:3301
unsigned int vfo_t
VFO definition.
Definition rig.h: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:5591
int rig_send_dtmf(RIG *rig, vfo_t vfo, const char *digits)
send DTMF digits
Definition rig.c:7263
int rig_set_twiddle(RIG *rig, int seconds)
timeout (secs) to stop rigctld when VFO is manually changed
Definition rig.c:1898
int rig_get_rig_info(RIG *rig, char *response, int max_response_len)
get freq/mode/width for requested VFO
Definition rig.c:7948
int rig_get_mem_all(RIG *rig, vfo_t vfo, channel_t chans[], const struct confparams cfgps[], value_t vals[])
get all channel and non-channel data
Definition mem.c:1528
int rig_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd)
get the status of the DCD
Definition rig.c:4213
serial_parity_e
Serial parity.
Definition rig.h: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:5930
int rig_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
get the mode of the target VFO
Definition rig.c:2970
int rig_get_cache(RIG *rig, vfo_t vfo, freq_t *freq, int *cache_ms_freq, rmode_t *mode, int *cache_ms_mode, pbwidth_t *width, int *cache_ms_width)
get cached values for a VFO
Definition cache.c:310
int rig_set_channel(RIG *rig, vfo_t vfo, const channel_t *chan)
set channel data
Definition mem.c:684
int rig_set_split_vfo(RIG *rig, vfo_t rx_vfo, split_t split, vfo_t tx_vfo)
set the split mode
Definition rig.c:5679
dcd_e
Definition rig.h: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:2504
hamlib_band_t
Band enumeration.
Definition rig.h:778
const char * hamlib_copyright2
Hamlib copyright notice.
Definition rig.c:115
int rig_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs)
get the current repeater offset
Definition rig.c:4597
int rig_get_ext_func(RIG *rig, vfo_t vfo, hamlib_token_t token, int *status)
get the value of a function extra parameter
Definition settings.c:859
int rig_set_powerstat(RIG *rig, powerstat_t status)
turn on/off the radio
Definition rig.c:6837
int rig_get_powerstat(RIG *rig, powerstat_t *status)
get the on/off status of the radio
Definition rig.c:6889
int rig_set_dcs_sql(RIG *rig, vfo_t vfo, tone_t code)
set the current DCS code
Definition tones.c:495
long hamlib_token_t
configuration token
Definition rig.h: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:6656
setting_t rig_has_set_func(RIG *rig, setting_t func)
check ability of radio functions
Definition settings.c:469
int rig_get_vfo(RIG *rig, vfo_t *vfo)
get the current VFO
Definition rig.c:3448
int rig_set_split_freq_mode(RIG *rig, vfo_t vfo, freq_t tx_freq, rmode_t tx_mode, pbwidth_t tx_width)
set the split frequency and mode
Definition rig.c:5449
uint64_t rmode_t
Radio mode.
Definition rig.h:1362
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:6101
int rig_cleanup(RIG *rig)
release a rig handle and free associated memory
Definition rig.c:1851
rig_type_t
Rig type flags.
Definition rig.h: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:924
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:8136
rptr_shift_t
Repeater shift type.
Definition rig.h:439
const char * rig_license()
get the Hamlib license
Definition rig.c:8194
int rig_set_mem_all_cb(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t arg)
set all channel and non-channel data by call-back
Definition mem.c:1326
int rig_get_dcs_sql(RIG *rig, vfo_t vfo, tone_t *code)
get the current DCS code
Definition tones.c:558
scan_t rig_has_scan(RIG *rig, scan_t scan)
check availability of scanning functions
Definition rig.c:7158
ptt_type_t
PTT type.
Definition rig.h: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:8173
int rig_get_mem_all_cb(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t arg)
get all channel and non-channel data by call-back
Definition mem.c:1394
int rig_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS squelch
Definition tones.c:364
ann_t
Announce.
Definition rig.h:928
int rig_set_dcs_code(RIG *rig, vfo_t vfo, tone_t code)
set the current encoding DCS code
Definition tones.c:230
int rig_set_dcd_callback(RIG *rig, dcd_cb_t cb, rig_ptr_t arg)
set the callback for dcd events
Definition event.c:491
int rig_get_channel(RIG *rig, vfo_t vfox, channel_t *chan, int read_only)
get channel data
Definition mem.c:828
int rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
get the frequency of the target VFO
Definition rig.c:2429
int rig_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
activate/de-activate functions of radio
Definition settings.c:500
int rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
get the status of the PTT
Definition rig.c:3888
int rig_get_chan_all_cb(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t arg)
get all channel data, by callback
Definition mem.c:1126
int rig_mW2power(RIG *rig, float *power, unsigned int mwpower, freq_t freq, rmode_t mode)
conversion utility from absolute in mW to relative range
Definition rig.c:6730
int rig_set_bank(RIG *rig, vfo_t vfo, int bank)
set the current memory bank
Definition mem.c:194
const struct confparams * rig_ext_lookup_tok(RIG *rig, hamlib_token_t token)
lookup ext token, return pointer to confparams struct.
Definition ext.c:279
int rig_ext_func_foreach(RIG *rig, int(*cfunc)(RIG *, const struct confparams *, rig_ptr_t), rig_ptr_t data)
Executes cfunc on all the elements stored in the extfuncs table.
Definition ext.c:82
const char * rig_version()
get the Hamlib version
Definition rig.c:8204
int rig_get_ctcss_sql(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS squelch
Definition tones.c:432
FILE * rig_set_debug_file(FILE *stream)
Change the output stream from stderr to a different stream.
Definition debug.c:334
int rig_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit)
get the current XIT offset
Definition rig.c:6251
const char * rig_get_caps_cptr(rig_model_t rig_model, enum rig_caps_cptr_e rig_caps)
Function to return char pointer value from rig->caps.
Definition misc.c:2704
int rig_set_spectrum_callback(RIG *rig, spectrum_cb_t cb, rig_ptr_t arg)
set the callback for spectrum line reception events
Definition event.c:549
int rig_get_parm(RIG *rig, setting_t parm, value_t *val)
get the value of a parameter
Definition settings.c:287
uint64_t rig_get_caps_int(rig_model_t rig_model, enum rig_caps_int_e rig_caps)
Function to return int value from rig->caps Does not support > 32-bit rig_caps values.
Definition misc.c:2658
rig_caps_int_e
Enumeration of rig->caps values.
Definition rig.h:2323
int rig_get_trn(RIG *rig, int *trn)
get the current transceive mode
Definition event.c:606
int rig_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs)
set the repeater offset
Definition rig.c:4520
int rig_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS sub-tone frequency
Definition tones.c:166
setting_t rig_has_set_level(RIG *rig, setting_t level)
check settable ability of level settings
Definition settings.c:351
rig_parm_e
Rig Parameters.
Definition rig.h:1139
int rig_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option)
set the antenna
Definition rig.c:6483
void rig_set_debug_time_stamp(int flag)
Enable or disable the time stamp on debugging output.
Definition debug.c:190
shortfreq_t rig_get_resolution(RIG *rig, rmode_t mode)
get the best frequency resolution of the rig
Definition rig.c:6795
int rig_get_vfo_info(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode, pbwidth_t *width, split_t *split, int *satmode)
get freq/mode/width for requested VFO
Definition rig.c:8055
pbwidth_t rig_passband_wide(RIG *rig, rmode_t mode)
get the wide passband of a mode
Definition rig.c:3242
uint64_t setting_t
Setting.
Definition rig.h:1204
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:1182
setting_t rig_has_get_func(RIG *rig, setting_t func)
check ability of radio functions
Definition settings.c:439
int rig_set_uplink(RIG *rig, int val)
For GPredict to avoid reading frequency on uplink VFO.
Definition rig.c:1922
int rig_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
get the status of functions of the radio
Definition settings.c:597
int rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq)
set the split frequencies
Definition rig.c:4680
int rig_probe_all(hamlib_port_t *port, rig_probe_func_t cfunc, rig_ptr_t data)
try to guess rigs
Definition rig.c:7017
rig_errcode_e
Definition rig.h:190
int rig_ext_parm_foreach(RIG *rig, int(*cfunc)(RIG *, const struct confparams *, rig_ptr_t), rig_ptr_t data)
Executes cfunc on all the elements stored in the extparms table.
Definition ext.c:182
rig_conf_e
parameter types
Definition rig.h:885
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:7699
int rig_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length)
receive DTMF digits
Definition rig.c:7340
int rig_set_mode_callback(RIG *rig, mode_cb_t cb, rig_ptr_t arg)
set the callback for mode events
Definition event.c:407
int rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
set the frequency of the target VFO
Definition rig.c:2080
int rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
set PTT on/off
Definition rig.c:3552
int rig_set_ext_level(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t val)
set a radio level extra parameter
Definition settings.c:662
const char * hamlib_version2
Hamlib release number.
Definition rig.c:102
double freq_t
Frequency type.
Definition rig.h:460
int rig_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch)
perform Memory/VFO operations
Definition rig.c:7191
cookie_e
Rig Cookie enumerations.
Definition rig.h:1172
int rig_send_morse(RIG *rig, vfo_t vfo, const char *msg)
send morse code
Definition rig.c:7416
void * rig_get_function_ptr(rig_model_t rig_model, enum rig_function_e rig_function)
Function to return pointer to rig_* function.
Definition misc.c:2365
int rig_setting2idx(setting_t s)
basically convert setting_t expressed 2^n to n
Definition settings.c:983
int rig_mem_count(RIG *rig)
get memory channel count
Definition mem.c:1652
ptt_t
PTT status.
Definition rig.h: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:544
setting_t rig_has_get_parm(RIG *rig, setting_t parm)
check retrieval ability of parameter settings
Definition settings.c:381
int rig_ext_level_foreach(RIG *rig, int(*cfunc)(RIG *, const struct confparams *, rig_ptr_t), rig_ptr_t data)
Executes cfunc on all the elements stored in the extlevels table.
Definition ext.c:132
int rig_get_ext_level(RIG *rig, vfo_t vfo, hamlib_token_t token, value_t *val)
get the value of a level extra parameter
Definition settings.c:728
int rig_set_pltune_callback(RIG *rig, pltune_cb_t cb, rig_ptr_t arg)
set the callback for pipelined tuning module
Definition event.c:521
int rig_get_conf(RIG *rig, hamlib_token_t token, char *val)
get the value of a configuration parameter
Definition conf.c:1535
struct freq_range_list freq_range_t
Frequency range.
int rig_set_clock(RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset)
set the rig's clock
Definition rig.c:8155
int rig_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS sub-tone frequency
Definition tones.c:98
int rig_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
set the mode of the target VFO
Definition rig.c:2769
vfo_op_t
VFO operation.
Definition rig.h:754
int rig_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts)
get the current Tuning Step
Definition rig.c:6401
signed long shortfreq_t
Short frequency type.
Definition rig.h: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:8214
int rig_need_debug(enum rig_debug_level_e debug_level)
Test if a given debug level is active.
Definition debug.c:176
rig_port_e
Port type.
Definition rig.h:314
int rig_wait_morse(RIG *rig, vfo_t vfo)
wait morse code
Definition rig.c:7628
int rig_close(RIG *rig)
close the communication to the rig
Definition rig.c:1673
pbwidth_t rig_passband_narrow(RIG *rig, rmode_t mode)
get the narrow passband of a mode
Definition rig.c:3189
serial_handshake_e
Serial handshake.
Definition rig.h: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
unsigned int tone_t
CTCSS and DCS type definition.
Definition rig.h:304
int rig_get_chan_all(RIG *rig, vfo_t vfo, channel_t chans[])
get all channel data
Definition mem.c:1210
int rig_set_chan_all(RIG *rig, vfo_t vfo, const channel_t chans[])
set all channel data
Definition mem.c:1167
int rig_set_vfo_opt(RIG *rig, int status)
set the vfo option for rigctld
Definition rig.c:7842
int rig_set_ptt_callback(RIG *rig, ptt_cb_t cb, rig_ptr_t arg)
set the callback for ptt events
Definition event.c:463
pbwidth_t rig_passband_normal(RIG *rig, rmode_t mode)
get the normal passband of a mode
Definition rig.c:3138
rig_debug_level_e
Hamlib debug levels.
Definition rig.h:243
#define RIG_SETTING_MAX
Maximum # of rig settings.
Definition rig.h:1210
const struct confparams * rig_ext_lookup(RIG *rig, const char *name)
lookup ext token by its name, return pointer to confparams struct.
Definition ext.c:232
setting_t rig_has_set_parm(RIG *rig, setting_t parm)
check settable ability of parameter settings
Definition settings.c:410
int rig_set_ext_func(RIG *rig, vfo_t vfo, hamlib_token_t token, int status)
set a radio function extra parameter
Definition settings.c:793
const struct confparams * rig_confparam_lookup(RIG *rig, const char *name)
lookup a confparam struct
Definition conf.c:1369
int rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit)
set the RIT
Definition rig.c:6029
hamlib_bandselect_t
Definition rig.h:798
int rig_stop_voice_mem(RIG *rig, vfo_t vfo)
stop sending voice memory
Definition rig.c:7768
int rig_get_twiddle(RIG *rig, int *seconds)
get the twiddle timeout value (secs)
Definition rig.c:1949
int rig_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts)
set the Tuning Step
Definition rig.c:6329
int rig_get_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t *option, ant_t *ant_curr, ant_t *ant_tx, ant_t *ant_rx)
get the current antenna
Definition rig.c:6563
int rig_open(RIG *rig)
open the communication to the rig
Definition rig.c:959
int rig_set_parm(RIG *rig, setting_t parm, value_t val)
set a radio parameter
Definition settings.c:253
int rig_get_dcs_code(RIG *rig, vfo_t vfo, tone_t *code)
get the current encoding DCS code
Definition tones.c:293
hamlib_token_t rig_token_lookup(RIG *rig, const char *name)
lookup a token id
Definition conf.c:1443
int rig_stop_morse(RIG *rig, vfo_t vfo)
stop morse code
Definition rig.c:7513
setting_t rig_has_get_level(RIG *rig, setting_t level)
check retrieval ability of level settings
Definition settings.c:321
uint64_t rig_level_e
Rig Level Settings.
Definition rig.h:1051
int rig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
get the value of a level
Definition settings.c:158
const char * rigerror2(int errnum)
get string describing the error code
Definition rig.c:454
int rig_set_chan_all_cb(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t arg)
set all channel data, by callback
Definition mem.c:1079
int rig_set_split_mode(RIG *rig, vfo_t vfo, rmode_t tx_mode, pbwidth_t tx_width)
set the split modes
Definition rig.c:5047
int rig_reset(RIG *rig, reset_t reset)
reset the radio
Definition rig.c:6944
int rig_token_foreach(RIG *rig, int(*cfunc)(const struct confparams *, rig_ptr_t), rig_ptr_t data)
call a function against each configuration token of a rig
Definition conf.c:1307
int rig_set_trn(RIG *rig, int trn)
control the transceive mode
Definition event.c:582
vfo_op_t rig_has_vfo_op(RIG *rig, vfo_op_t op)
check retrieval ability of VFO operations
Definition rig.c:7046
unsigned int ant_t
Antenna typedef.
Definition rig.h:985
int rig_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)
get the current repeater shift
Definition rig.c:4436
int rig_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, pbwidth_t *tx_width)
get the current split modes
Definition rig.c:5285
int rig_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
set the repeater shift
Definition rig.c:4358
reset_t
Reset operation.
Definition rig.h:724
rig_function_e
Rig data structure.
Definition rig.h:2220
int rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq)
get the current split frequencies
Definition rig.c:4870
void rig_set_debug(enum rig_debug_level_e debug_level)
Change the current debug level.
Definition debug.c:147
const freq_range_t * rig_get_range(const freq_range_t *range_list, freq_t freq, rmode_t mode)
find the freq_range of freq/mode
Definition rig.c:7806
int rig_get_ext_parm(RIG *rig, hamlib_token_t token, value_t *val)
get the value of a parm extra parameter
Definition settings.c:956
int rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op)
perform Memory/VFO operations
Definition rig.c:7075
rig_status_e
Development status of the backend.
Definition rig.h:419
int rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit)
set the XIT
Definition rig.c:6179
int rig_set_conf(RIG *rig, hamlib_token_t token, const char *val)
set a radio configuration parameter
Definition conf.c:1474
void rig_debug(enum rig_debug_level_e debug_level, const char *fmt,...)
Print debugging messages through stderr by default.
Definition debug.c:206
int rig_cookie(RIG *rig, enum cookie_e cookie_cmd, char *cookie, int cookie_len)
get a cookie to grab rig control
Definition rig.c:8243
rig_spectrum_mode_e
Spectrum scope modes.
Definition rig.h:1821
rig_model_t rig_probe(hamlib_port_t *port)
try to guess a rig
Definition rig.c:6989
chan_type_t
Memory channel type definition.
Definition rig.h:1670
@ 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:932
@ RIG_ANN_OFF
Definition rig.h:930
@ RIG_ANN_ENG
Definition rig.h:934
@ RIG_ANN_FREQ
Definition rig.h:931
@ RIG_ANN_NONE
Definition rig.h:929
@ RIG_ANN_CW
Definition rig.h:933
@ RIG_ANN_JAP
Definition rig.h:935
@ RIG_PARM_BEEP
Definition rig.h:1144
@ RIG_PARM_AFIF_LAN
Definition rig.h:1152
@ RIG_PARM_AFIF_WLAN
Definition rig.h:1153
@ RIG_PARM_BANDSELECT
Definition rig.h:1150
@ RIG_PARM_TIME
Definition rig.h:1145
@ RIG_PARM_SCREENSAVER
Definition rig.h:1148
@ RIG_PARM_ANN
Definition rig.h:1141
@ RIG_PARM_AFIF
Definition rig.h:1149
@ RIG_PARM_NONE
Definition rig.h:1140
@ RIG_PARM_KEYERTYPE
Definition rig.h:1151
@ RIG_PARM_AFIF_ACC
Definition rig.h:1154
@ RIG_PARM_BACKLIGHT
Definition rig.h:1143
@ RIG_PARM_KEYLIGHT
Definition rig.h:1147
@ RIG_PARM_BAT
Definition rig.h:1146
@ RIG_PARM_APO
Definition rig.h:1142
@ 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:886
@ RIG_CONF_BUTTON
Definition rig.h:890
@ RIG_CONF_CHECKBUTTON
Definition rig.h:889
@ RIG_CONF_BINARY
Definition rig.h:891
@ RIG_CONF_COMBO
Definition rig.h:887
@ RIG_CONF_INT
Definition rig.h:892
@ RIG_CONF_NUMERIC
Definition rig.h:888
@ 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:1175
@ RIG_COOKIE_RELEASE
Definition rig.h:1174
@ RIG_COOKIE_GET
Definition rig.h:1173
@ 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:1825
@ RIG_SPECTRUM_MODE_FIXED_SCROLL
Definition rig.h:1826
@ RIG_SPECTRUM_MODE_FIXED
Definition rig.h:1824
@ RIG_SPECTRUM_MODE_CENTER
Definition rig.h:1823
@ RIG_MTYPE_VOICE
Definition rig.h:1679
@ RIG_MTYPE_PRIO
Definition rig.h:1678
@ RIG_MTYPE_EDGE
Definition rig.h:1673
@ RIG_MTYPE_MEM
Definition rig.h:1672
@ RIG_MTYPE_CALL
Definition rig.h:1674
@ RIG_MTYPE_SAT
Definition rig.h:1676
@ RIG_MTYPE_MORSE
Definition rig.h:1680
@ RIG_MTYPE_MEMOPAD
Definition rig.h:1675
@ RIG_MTYPE_SPLIT
Definition rig.h:1681
@ RIG_MTYPE_NONE
Definition rig.h:1671
@ RIG_MTYPE_BAND
Definition rig.h:1677
int locator2longlat(double *longitude, double *latitude, const char *locator)
Convert QRA locator (Maidenhead grid square) to Longitude/Latitude.
Definition locator.c:451
int longlat2locator(double longitude, double latitude, char *locator, int pair_count)
Convert longitude/latitude to QRA locator (Maidenhead grid square).
Definition locator.c:545
Hamlib rig(radio) model definitions.
uint32_t rig_model_t
Convenience type definition for rig model.
Definition riglist.h:709
Definition rig.h:151
Calibration table struct for float values.
Definition rig.h:1777
float val
Definition rig.h:1781
struct cal_table_float::@4 table[HAMLIB_MAX_CAL_LENGTH]
int size
Definition rig.h:1778
int raw
Definition rig.h:1780
Calibration table struct.
Definition rig.h:1747
int val
Definition rig.h:1751
struct cal_table::@3 table[HAMLIB_MAX_CAL_LENGTH]
int raw
Definition rig.h:1750
int size
Definition rig.h:1748
Memory channel list definition.
Definition rig.h:1698
int startc
Definition rig.h:1699
chan_type_t type
Definition rig.h:1701
channel_cap_t mem_caps
Definition rig.h:1702
int endc
Definition rig.h:1700
Channel capability definition.
Definition rig.h:1622
unsigned tx_vfo
Definition rig.h:1635
unsigned tx_freq
Definition rig.h:1630
unsigned mode
Definition rig.h:1627
unsigned dcs_code
Definition rig.h:1645
unsigned rit
Definition rig.h:1639
unsigned dcs_sql
Definition rig.h:1646
unsigned rptr_offs
Definition rig.h:1637
unsigned bank_num
Definition rig.h:1623
setting_t levels
Definition rig.h:1642
unsigned width
Definition rig.h:1628
unsigned rptr_shift
Definition rig.h:1636
unsigned tx_width
Definition rig.h:1632
unsigned ctcss_sql
Definition rig.h:1644
unsigned tx_mode
Definition rig.h:1631
unsigned freq
Definition rig.h:1626
setting_t funcs
Definition rig.h:1641
unsigned ctcss_tone
Definition rig.h:1643
unsigned tag
Definition rig.h:1651
unsigned ext_levels
Definition rig.h:1650
unsigned vfo
Definition rig.h:1624
unsigned ant
Definition rig.h:1625
unsigned split
Definition rig.h:1634
unsigned scan_group
Definition rig.h:1647
unsigned flags
Definition rig.h:1648
unsigned tuning_step
Definition rig.h:1638
unsigned xit
Definition rig.h:1640
unsigned channel_desc
Definition rig.h:1649
Channel structure.
Definition rig.h:1577
shortfreq_t tuning_step
Definition rig.h:1595
rmode_t mode
Definition rig.h:1583
tone_t ctcss_tone
Definition rig.h:1600
pbwidth_t tx_width
Definition rig.h:1588
vfo_t vfo
Definition rig.h:1580
value_t levels[64]
Definition rig.h:1599
shortfreq_t rptr_offs
Definition rig.h:1594
vfo_t tx_vfo
Definition rig.h:1591
tone_t dcs_code
Definition rig.h:1602
setting_t funcs
Definition rig.h:1598
struct ext_list * ext_levels
Definition rig.h:1607
tone_t ctcss_sql
Definition rig.h:1601
shortfreq_t xit
Definition rig.h:1597
int bank_num
Definition rig.h:1579
pbwidth_t width
Definition rig.h:1584
freq_t freq
Definition rig.h:1582
char tag[32]
Definition rig.h:1609
rptr_shift_t rptr_shift
Definition rig.h:1593
shortfreq_t rit
Definition rig.h:1596
char channel_desc[HAMLIB_MAXCHANDESC]
Definition rig.h:1606
rmode_t tx_mode
Definition rig.h:1587
split_t split
Definition rig.h:1590
freq_t tx_freq
Definition rig.h:1586
ant_t ant
Definition rig.h:1581
unsigned int flags
Definition rig.h:1605
int scan_group
Definition rig.h:1604
int channel_num
Definition rig.h:1578
tone_t dcs_sql
Definition rig.h:1603
Configuration parameter structure.
Definition rig.h:903
const char * combostr[RIG_COMBO_MAX]
Definition rig.h:917
hamlib_token_t token
Definition rig.h:904
const char * tooltip
Definition rig.h:907
struct confparams::@0::@2 c
const char * dflt
Definition rig.h:908
float min
Definition rig.h:912
float step
Definition rig.h:914
const char * label
Definition rig.h:906
float max
Definition rig.h:913
const char * name
Definition rig.h:905
struct confparams::@0::@1 n
enum rig_conf_e type
Definition rig.h:909
union confparams::@0 u
Definition rig.h:1880
Definition rig.h:1873
Extension attribute definition.
Definition rig.h:1560
hamlib_token_t token
Definition rig.h:1561
value_t val
Definition rig.h:1562
Filter definition.
Definition rig.h:1527
rmode_t modes
Definition rig.h:1528
pbwidth_t width
Definition rig.h:1529
Frequency range.
Definition rig.h:1460
freq_t startf
Definition rig.h:1461
freq_t endf
Definition rig.h:1462
int low_power
Definition rig.h:1464
char * label
Definition rig.h:1468
ant_t ant
Definition rig.h:1467
int high_power
Definition rig.h:1465
vfo_t vfo
Definition rig.h:1466
rmode_t modes
Definition rig.h:1463
level/parm granularity definition
Definition rig.h:1732
value_t max
Definition rig.h:1734
value_t step
Definition rig.h:1735
value_t min
Definition rig.h:1733
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:2672
Rig cache data.
Definition rig.h:2592
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:1833
Represents a single line of rig spectrum scope FFT data.
Definition rig.h:1850
size_t spectrum_data_length
Definition rig.h:1866
freq_t low_edge_freq
Definition rig.h:1863
int data_level_min
Definition rig.h:1853
int id
Definition rig.h:1851
enum rig_spectrum_mode_e spectrum_mode
Definition rig.h:1858
double signal_strength_max
Definition rig.h:1856
freq_t center_freq
Definition rig.h:1860
freq_t span_freq
Definition rig.h:1861
double signal_strength_min
Definition rig.h:1855
unsigned char * spectrum_data
Definition rig.h:1867
int data_level_max
Definition rig.h:1854
freq_t high_edge_freq
Definition rig.h:1864
Spectrum scope.
Definition rig.h:1813
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:2709
int auto_power_on
Definition rig.h:2787
int bank_qty
Definition rig.h:2861
int transaction_active
Definition rig.h:2760
rig_comm_status_t comm_status
Definition rig.h:2888
int serial_data_bits
Definition rig.h:2844
int attenuator[HAMLIB_MAXDBLSTSIZ]
Definition rig.h:2743
int vfo_opt
Definition rig.h:2786
int twiddle_rit
Definition rig.h:2799
setting_t has_set_parm
Definition rig.h:2750
int dual_watch
Definition rig.h:2890
rmode_t mode_list
Definition rig.h:2774
int async_data_enabled
Definition rig.h:2767
shortfreq_t max_rit
Definition rig.h:2736
int timeout
Definition rig.h:2850
freq_t lo_freq
Definition rig.h:2780
int power_max
Definition rig.h:2797
gran_t parm_gran[64]
Definition rig.h:2753
freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ]
Definition rig.h:2867
struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES]
Definition rig.h:2873
struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES]
Definition rig.h:2876
int write_delay
Definition rig.h:2848
freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ]
Definition rig.h:2863
freq_range_t rx_range_list[HAMLIB_FRQRANGESIZ]
Definition rig.h:2725
hamlib_port_t_deprecated rigport_deprecated
Definition rig.h:2718
freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ]
Definition rig.h:2868
int post_write_delay
Definition rig.h:2849
int transceive
Definition rig.h:2860
int retry
Definition rig.h:2851
int use_cached_ptt
Definition rig.h:2820
freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ]
Definition rig.h:2872
vfo_t rx_vfo
Definition rig.h:2801
int agc_level_count
Definition rig.h:2854
rmode_t current_mode
Definition rig.h:2770
int freq_skip
Definition rig.h:2893
freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ]
Definition rig.h:2866
const char * copyright
Definition rig.h:2836
setting_t has_set_func
Definition rig.h:2746
int uplink
Definition rig.h:2784
int use_cached_freq
Definition rig.h:2818
int doppler
Definition rig.h:2881
tone_t * ctcss_list
Definition rig.h:2856
tone_t * dcs_list
Definition rig.h:2857
rig_ptr_t obj
Definition rig.h:2765
int twiddle_state
Definition rig.h:2800
struct filter_list filters[HAMLIB_FLTLSTSIZ]
Definition rig.h:2730
pbwidth_t current_width
Definition rig.h:2772
freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS]
Definition rig.h:2875
char client_version[32]
Definition rig.h:2825
int ptt_share
Definition rig.h:2794
rig_ptr_t priv
Definition rig.h:2764
int lock_mode
Definition rig.h:2822
freq_range_t tx_range_list[HAMLIB_FRQRANGESIZ]
Definition rig.h:2726
freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ]
Definition rig.h:2865
int use_cached_mode
Definition rig.h:2819
struct multicast_s * multicast
Definition rig.h:2828
freq_t current_freq
Definition rig.h:2769
hamlib_port_t dcdport
Definition rig.h:2814
enum serial_handshake_e serial_handshake
Definition rig.h:2847
freq_t offset_vfoa
Definition rig.h:2826
rig_port_t port_type
Definition rig.h:2841
int depth
Definition rig.h:2821
const char * mfg_name
Definition rig.h:2834
powerstat_t powerstat
Definition rig.h:2823
char * multicast_cmd_addr
Definition rig.h:2884
freq_t offset_vfob
Definition rig.h:2827
int chan_desc_sz
Definition rig.h:2862
time_t twiddle_time
Definition rig.h:2781
vfo_t tx_vfo
Definition rig.h:2773
int deprecated_itu_region
Definition rig.h:2724
int power_min
Definition rig.h:2796
double vfo_comp
Definition rig.h:2722
setting_t has_set_level
Definition rig.h:2748
hamlib_port_t_deprecated pttport_deprecated
Definition rig.h:2719
int async_data_supported
Definition rig.h:2853
shortfreq_t max_xit
Definition rig.h:2737
int post_ptt_delay
Definition rig.h:2891
hamlib_port_t rigport
Definition rig.h:2812
int power_now
Definition rig.h:2795
freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ]
Definition rig.h:2869
enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES]
Definition rig.h:2874
const char * model_name
Definition rig.h:2833
int twiddle_timeout
Definition rig.h:2782
int poll_interval
Definition rig.h:2768
int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ]
Definition rig.h:2877
int rig_type
Definition rig.h:2838
unsigned char disable_yaesu_bandselect
Definition rig.h:2798
int auto_power_off
Definition rig.h:2789
dcd_type_t dcd_type
Definition rig.h:2840
int multicast_cmd_port
Definition rig.h:2885
int serial_rate_min
Definition rig.h:2842
enum rig_status_e status
Definition rig.h:2837
enum serial_parity_e serial_parity
Definition rig.h:2846
setting_t has_get_parm
Definition rig.h:2749
int preamp[HAMLIB_MAXDBLSTSIZ]
Definition rig.h:2742
vfo_t current_vfo
Definition rig.h:2761
freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ]
Definition rig.h:2871
enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS]
Definition rig.h:2855
hamlib_port_t_deprecated dcdport_deprecated
Definition rig.h:2720
int auto_disable_screensaver
Definition rig.h:2791
int comm_state
Definition rig.h:2763
vfo_op_t vfo_ops
Definition rig.h:2858
int targetable_vfo
Definition rig.h:2852
int vfo_list
Definition rig.h:2762
ptt_type_t ptt_type
Definition rig.h:2839
setting_t has_get_level
Definition rig.h:2747
setting_t has_get_func
Definition rig.h:2745
int transmit
Definition rig.h:2777
ann_t announces
Definition rig.h:2740
int serial_rate_max
Definition rig.h:2843
cal_table_t str_cal
Definition rig.h:2732
rig_model_t rig_model
Definition rig.h:2832
const char * version
Definition rig.h:2835
scan_t scan_ops
Definition rig.h:2859
shortfreq_t max_ifshift
Definition rig.h:2738
char * multicast_data_addr
Definition rig.h:2882
int multicast_data_port
Definition rig.h:2883
gran_t level_gran[64]
Definition rig.h:2752
freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ]
Definition rig.h:2870
hamlib_port_t pttport
Definition rig.h:2813
int serial_stop_bits
Definition rig.h:2845
freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ]
Definition rig.h:2864
struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ]
Definition rig.h:2728
char * tuner_control_pathname
Definition rig.h:2824
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:1492
rmode_t modes
Definition rig.h:1493
shortfreq_t ts
Definition rig.h:1494
Universal approach for passing values.
Definition rig.h:1028
unsigned int u
Definition rig.h:1030
char * s
Definition rig.h:1032
float f
Definition rig.h:1031
const char * cs
Definition rig.h:1033
signed int i
Definition rig.h:1029