Hamlib 4.5
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
23
24#ifndef _RIG_H
25#define _RIG_H 1
26
27#define BUILTINFUNC 0
28
29// Our shared secret password
30#define HAMLIB_SECRET_LENGTH 32
31
32#define HAMLIB_TRACE rig_debug(RIG_DEBUG_TRACE,"%s(%d) trace\n", __FILE__, __LINE__)
33#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
34
35#include <stdio.h>
36#include <stdarg.h>
37#include <string.h>
38#include <inttypes.h>
39#include <time.h>
40
41// For MSVC install the NUGet pthread package
42#if defined(_MSC_VER)
43#define HAVE_STRUCT_TIMESPEC
44#endif
45#include <pthread.h>
46
47/* Rig list is in a separate file so as not to mess up w/ this one */
48#include <hamlib/riglist.h>
49
63/* __BEGIN_DECLS should be used at the beginning of your declarations,
64 * so that C++ compilers don't mangle their names. Use __END_DECLS at
65 * the end of C declarations. */
67#undef __BEGIN_DECLS
68#undef __END_DECLS
69#ifdef __cplusplus
70# define __BEGIN_DECLS extern "C" {
71# define __END_DECLS }
72#else
73# define __BEGIN_DECLS /* empty */
74# define __END_DECLS /* empty */
75#endif
77
78/* HAMLIB_PARAMS is a macro used to wrap function prototypes, so that compilers
79 * that don't understand ANSI C prototypes still work, and ANSI C
80 * compilers can issue warnings about type mismatches. */
82#undef HAMLIB_PARAMS
83#if defined (__STDC__) \
84 || defined (_AIX) \
85 || (defined (__mips) && defined (_SYSTYPE_SVR4)) \
86 || defined(__CYGWIN__) \
87 || defined(_WIN32) \
88 || defined(__cplusplus)
89# define HAMLIB_PARAMS(protos) protos
90# define rig_ptr_t void *
91# define amp_ptr_t void *
92#else
93# define HAMLIB_PARAMS(protos) ()
94# define rig_ptr_t char *
95# define amp_ptr_t char *
96#endif
98
99#include <hamlib/rig_dll.h>
100
101#ifndef SWIGLUA
103#define CONSTANT_64BIT_FLAG(BIT) (1ull << (BIT))
105#else
106/* SWIG's older Lua generator doesn't grok ull due to Lua using a
107 double-precision floating point type internally for number
108 representations (max 53 bits of precision) so makes a string
109 constant from a constant number literal using ull */
110// #define CONSTANT_64BIT_FLAG(BIT) (1 << (BIT))
111// #define SWIGLUAHIDE
112/* But this appears to have been fixed so we'll use the correct one now
113 If you have the older version of SWIG comment out this line and use
114 the two above */
115// This 1ul definition works on swig 4.0.1 and lua 5.3.5
116#define CONSTANT_64BIT_FLAG(BIT) (1ul << (BIT))
117#endif
118
119__BEGIN_DECLS
120
125// cookie is 26-char time code plus 10-char (2^31-1) random number
126#define HAMLIB_COOKIE_SIZE 37
127extern int cookie_use; // this is global as once one client requests it everybody needs to honor it
128
130extern HAMLIB_EXPORT_VAR(const char) hamlib_version[];
131extern HAMLIB_EXPORT_VAR(const char) hamlib_copyright[];
132extern HAMLIB_EXPORT_VAR(const char *) hamlib_version2;
133extern HAMLIB_EXPORT_VAR(const char *) hamlib_copyright2;
135
147 RIG_OK = 0,
167 RIG_EPOWER,
168 RIG_EEND // MUST BE LAST ITEM IN LAST
179#define RIG_IS_SOFT_ERRCODE(errcode) (errcode == RIG_EINVAL || errcode == RIG_ENIMPL || errcode == RIG_ERJCTED \
180 || errcode == RIG_ETRUNC || errcode == RIG_ENAVAIL || errcode == RIG_ENTARGET \
181 || errcode == RIG_EVFO || errcode == RIG_EDOM || errcode == RIG_EDEPRECATED \
182 || errcode == RIG_ESECURITY || errcode == RIG_EPOWER)
183
187#define NETRIGCTL_RET "RPRT "
188
189
206
207
208/* --------------- Rig capabilities -----------------*/
209
210/* Forward struct references */
211
212struct rig;
213struct rig_state;
214
218typedef struct s_rig RIG;
219
221#define HAMLIB_RIGNAMSIZ 30
222#define HAMLIB_RIGVERSIZ 8
223#define HAMLIB_FILPATHLEN 512
224#define HAMLIB_FRQRANGESIZ 30
225#define HAMLIB_MAXCHANDESC 30 /* describe channel eg: "WWV 5Mhz" */
226#define HAMLIB_TSLSTSIZ 20 /* max tuning step list size, zero ended */
227#define HAMLIB_FLTLSTSIZ 60 /* max mode/filter list size, zero ended */
228#define HAMLIB_MAXDBLSTSIZ 8 /* max preamp/att levels supported, zero ended */
229#define HAMLIB_CHANLSTSIZ 16 /* max mem_list size, zero ended */
230#define HAMLIB_MAX_AGC_LEVELS 8 /* max AGC levels supported */
231#define HAMLIB_MAX_SPECTRUM_SCOPES 4 /* max number of spectrum scopes supported */
232#define HAMLIB_MAX_SPECTRUM_MODES 5 /* max number of spectrum modes supported */
233#define HAMLIB_MAX_SPECTRUM_AVG_MODES 12 /* max number of spectrum averaging modes supported */
234#define HAMLIB_MAX_SPECTRUM_SPANS 20 /* max number of spectrum modes supported */
235#define HAMLIB_MAX_SPECTRUM_DATA 2048 /* max number of data bytes in a single spectrum line */
236#define HAMLIB_MAX_CAL_LENGTH 32 /* max calibration plots in cal_table_t */
237#define HAMLIB_MAX_MODES 63
238#define HAMLIB_MAX_VFOS 31
239#define HAMLIB_MAX_ROTORS 63
240#define HAMLIB_MAX_VFO_OPS 31
241#define HAMLIB_MAX_RSCANS 31
242#define HAMLIB_MAX_SNAPSHOT_PACKET_SIZE 16384 /* maximum number of bytes in a UDP snapshot packet */
244
245
256#define CTCSS_LIST_SIZE 60
257#define DCS_LIST_SIZE 128
258typedef unsigned int tone_t;
259
260
264typedef enum rig_port_e {
280
281
292
293
302
303
312
313
317typedef enum {
318 RIG_FLAG_RECEIVER = (1 << 1),
320 RIG_FLAG_SCANNER = (1 << 3),
321 RIG_FLAG_MOBILE = (1 << 4),
322 RIG_FLAG_HANDHELD = (1 << 5),
323 RIG_FLAG_COMPUTER = (1 << 6),
324 RIG_FLAG_TRUNKING = (1 << 7),
325 RIG_FLAG_APRS = (1 << 8),
326 RIG_FLAG_TNC = (1 << 9),
327 RIG_FLAG_DXCLUSTER = (1 << 10),
328 RIG_FLAG_TUNER = (1 << 11)
330
334/* TODO: kill me, and replace by real AGC delay */
336 RIG_AGC_OFF = 0,
337 RIG_AGC_SUPERFAST,
338 RIG_AGC_FAST,
339 RIG_AGC_SLOW,
341 RIG_AGC_MEDIUM,
342 RIG_AGC_AUTO
343};
344
345
347#define RIG_FLAG_TRANSCEIVER (RIG_FLAG_RECEIVER|RIG_FLAG_TRANSMITTER)
348#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)
349
350#define RIG_TYPE_OTHER 0
351#define RIG_TYPE_TRANSCEIVER RIG_FLAG_TRANSCEIVER
352#define RIG_TYPE_HANDHELD (RIG_FLAG_TRANSCEIVER|RIG_FLAG_HANDHELD)
353#define RIG_TYPE_MOBILE (RIG_FLAG_TRANSCEIVER|RIG_FLAG_MOBILE)
354#define RIG_TYPE_RECEIVER RIG_FLAG_RECEIVER
355#define RIG_TYPE_PCRECEIVER (RIG_FLAG_COMPUTER|RIG_FLAG_RECEIVER)
356#define RIG_TYPE_SCANNER (RIG_FLAG_SCANNER|RIG_FLAG_RECEIVER)
357#define RIG_TYPE_TRUNKSCANNER (RIG_TYPE_SCANNER|RIG_FLAG_TRUNKING)
358#define RIG_TYPE_COMPUTER (RIG_FLAG_TRANSCEIVER|RIG_FLAG_COMPUTER)
359#define RIG_TYPE_TUNER RIG_FLAG_TUNER
361
362
372 /* RIG_STATUS_NEW * *!< Initial release of code
373 * !! Use of RIG_STATUS_NEW is deprecated. Do not use it anymore */
375
380#define RIG_STATUS_NEW RIG_STATUS_UNTESTED
381
382
386typedef enum {
391
392
396typedef enum {
400
401
407typedef double freq_t;
408
412#define PRIfreq ".0f"
413
417#define SCNfreq "lf"
421#define FREQFMT SCNfreq
422
423
429typedef signed long shortfreq_t;
430
432#define Hz(f) ((freq_t)(f))
434#define kHz(f) ((freq_t)((f)*(freq_t)1000))
436#define MHz(f) ((freq_t)((f)*(freq_t)1000000))
438#define GHz(f) ((freq_t)((f)*(freq_t)1000000000))
439
441#define s_Hz(f) ((shortfreq_t)(f))
443#define s_kHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000))
445#define s_MHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000))
447#define s_GHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000000))
448
450#define RIG_FREQ_NONE Hz(0)
451
452
467typedef unsigned int vfo_t;
468
471#define RIG_VFO_N(n) (1u<<(n))
472
474#define RIG_VFO_NONE 0
475
477#define RIG_VFO_A RIG_VFO_N(0)
478
480#define RIG_VFO_B RIG_VFO_N(1)
481
483#define RIG_VFO_C RIG_VFO_N(2)
484
485// Any addition VFOS need to go from 3-20
486// To maintain backward compatibility these values cannot change
487
489#define RIG_VFO_SUB_A RIG_VFO_N(21)
490
492#define RIG_VFO_SUB_B RIG_VFO_N(22)
493
495#define RIG_VFO_SUB_C RIG_VFO_N(3)
496
498#define RIG_VFO_MAIN_A RIG_VFO_N(23)
499
501#define RIG_VFO_MAIN_B RIG_VFO_N(24)
502
504#define RIG_VFO_MAIN_C RIG_VFO_N(4)
505
507#define RIG_VFO_OTHER RIG_VFO_N(5)
508
510#define RIG_VFO_SUB RIG_VFO_N(25)
511
513#define RIG_VFO_MAIN RIG_VFO_N(26)
514
516#define RIG_VFO_VFO RIG_VFO_N(27)
517
519#define RIG_VFO_MEM RIG_VFO_N(28)
520
522#define RIG_VFO_CURR RIG_VFO_N(29)
523
525#define RIG_VFO_TX_FLAG RIG_VFO_N(30)
526
528#define RIG_VFO_ALL RIG_VFO_N(31)
529
530// we can also use RIG_VFO_N(31) if needed
531
532// Misc VFO Macros
533
535#define RIG_VFO_TX_VFO(v) ((v)|RIG_VFO_TX_FLAG)
536
538#define RIG_VFO_TX RIG_VFO_TX_VFO(RIG_VFO_CURR)
539
541#define RIG_VFO_RX RIG_VFO_CURR
542
543
544/*
545 * targetable bitfields, for internal use.
546 * In rig.c lack of a flag will case a VFO change if needed
547 * So setting this flag will mean the backend handles any VFO needs
548 * For many rigs RITXIT, PTT, MEM, and BANK are non-VFO commands so need these flags to avoid unnecessary VFO swapping
549 */
551#define RIG_TARGETABLE_NONE 0
552#define RIG_TARGETABLE_FREQ (1<<0)
553#define RIG_TARGETABLE_MODE (1<<1) // mode by vfo or same mode on both vfos
554#define RIG_TARGETABLE_PURE (1<<2) // deprecated -- not used -- reuse it
555#define RIG_TARGETABLE_TONE (1<<3)
556#define RIG_TARGETABLE_FUNC (1<<4)
557#define RIG_TARGETABLE_LEVEL (1<<5)
558#define RIG_TARGETABLE_RITXIT (1<<6)
559#define RIG_TARGETABLE_PTT (1<<7)
560#define RIG_TARGETABLE_MEM (1<<8)
561#define RIG_TARGETABLE_BANK (1<<9)
562#define RIG_TARGETABLE_ANT (1<<10)
563#define RIG_TARGETABLE_ROOFING (1<<11) // roofing filter targetable by VFO
564#define RIG_TARGETABLE_SPECTRUM (1<<12) // spectrum scope targetable by VFO
565#define RIG_TARGETABLE_BAND (1<<13) // Band select -- e.g. Yaeus BS command
566#define RIG_TARGETABLE_COMMON (RIG_TARGETABLE_RITXIT | RIG_TARGETABLE_PTT | RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK)
567#define RIG_TARGETABLE_ALL 0x7fffffff
569//
570//
571// Newer Icoms like the 9700 and 910 have VFOA/B on both Main & Sub
572// Compared to older rigs which have one or the other
573// So we need to distinguish between them
575#define VFO_HAS_A_B ((rig->state.vfo_list & (RIG_VFO_A|RIG_VFO_B)) == (RIG_VFO_A|RIG_VFO_B))
576#define VFO_HAS_MAIN_SUB ((rig->state.vfo_list & (RIG_VFO_MAIN|RIG_VFO_SUB)) == (RIG_VFO_MAIN|RIG_VFO_SUB))
577#define VFO_HAS_MAIN_SUB_ONLY ((!VFO_HAS_A_B) & VFO_HAS_MAIN_SUB)
578#define VFO_HAS_MAIN_SUB_A_B_ONLY (VFO_HAS_A_B & VFO_HAS_MAIN_SUB)
579#define VFO_HAS_A_B_ONLY (VFO_HAS_A_B & (!VFO_HAS_MAIN_SUB))
580#define VFO_DUAL (RIG_VFO_MAIN_A|RIG_VFO_MAIN_B|RIG_VFO_SUB_A|RIG_VFO_SUB_B)
581#define VFO_HAS_DUAL ((rig->state.vfo_list & VFO_DUAL) == VFO_DUAL)
583
588#define RIG_PASSBAND_NORMAL s_Hz(0)
589
593#define RIG_PASSBAND_NOCHANGE s_Hz(-1)
594
600
601
605typedef enum dcd_e {
609
610
616typedef enum {
626} dcd_type_t;
627
628
632typedef enum {
638
639
645typedef enum {
655} ptt_type_t;
656
657
661typedef enum {
663 RIG_POWER_ON = (1 << 0),
664 RIG_POWER_STANDBY = (1 << 1),
665 RIG_POWER_OPERATE = (1 << 2),
666 RIG_POWER_UNKNOWN = (1 << 3)
668
669
673typedef enum {
675 RIG_RESET_SOFT = (1 << 0),
676 RIG_RESET_VFO = (1 << 1),
677 RIG_RESET_MCALL = (1 << 2),
678 RIG_RESET_MASTER = (1 << 3)
680
681
697typedef enum {
699 RIG_OP_CPY = (1 << 0),
700 RIG_OP_XCHG = (1 << 1),
701 RIG_OP_FROM_VFO = (1 << 2),
702 RIG_OP_TO_VFO = (1 << 3),
703 RIG_OP_MCL = (1 << 4),
704 RIG_OP_UP = (1 << 5),
705 RIG_OP_DOWN = (1 << 6),
706 RIG_OP_BAND_UP = (1 << 7),
707 RIG_OP_BAND_DOWN = (1 << 8),
708 RIG_OP_LEFT = (1 << 9),
709 RIG_OP_RIGHT = (1 << 10),
710 RIG_OP_TUNE = (1 << 11),
711 RIG_OP_TOGGLE = (1 << 12)
713
721typedef enum { // numbers here reflect the Yaesu values
740
741
750typedef enum {
752 RIG_SCAN_MEM = (1 << 0),
753 RIG_SCAN_SLCT = (1 << 1),
754 RIG_SCAN_PRIO = (1 << 2),
755 RIG_SCAN_PROG = (1 << 3),
756 RIG_SCAN_DELTA = (1 << 4),
757 RIG_SCAN_VFO = (1 << 5),
758 RIG_SCAN_PLT = (1 << 6),
759 RIG_SCAN_STOP = (1 << 7)
761
762
766typedef long token_t;
767
768
770#define RIG_CONF_END 0
772
773
787/* strongly inspired from soundmodem. Thanks Thomas! */
796
798#define RIG_COMBO_MAX 16
799#define RIG_BIN_MAX 80
801
807 const char *name;
808 const char *label;
809 const char *tooltip;
810 const char *dflt;
812 union {
813 struct {
814 float min;
815 float max;
816 float step;
817 } n;
818 struct {
819 const char *combostr[RIG_COMBO_MAX];
820 } c;
821 } u;
822};
823
824
830typedef enum {
833 RIG_ANN_FREQ = (1 << 0),
834 RIG_ANN_RXMODE = (1 << 1),
835 RIG_ANN_CW = (1 << 2),
836 RIG_ANN_ENG = (1 << 3),
837 RIG_ANN_JAP = (1 << 4)
839
840
887typedef unsigned int ant_t;
888
889#define RIG_ANT_NONE 0
890#define RIG_ANT_N(n) ((ant_t)1<<(n))
891#define RIG_ANT_1 RIG_ANT_N(0)
892#define RIG_ANT_2 RIG_ANT_N(1)
893#define RIG_ANT_3 RIG_ANT_N(2)
894#define RIG_ANT_4 RIG_ANT_N(3)
895#define RIG_ANT_5 RIG_ANT_N(4)
896
897#define RIG_ANT_UNKNOWN RIG_ANT_N(30)
898#define RIG_ANT_CURR RIG_ANT_N(31)
899
900#define RIG_ANT_MAX 32
901
902
904#define RIG_AGC_LAST RIG_AGC_AUTO
906
907#if 1 // deprecated
911enum meter_level_e {
912 RIG_METER_NONE = 0, /*< No display meter */
913 RIG_METER_SWR = (1 << 0), /*< Stationary Wave Ratio */
914 RIG_METER_COMP = (1 << 1), /*< Compression level */
915 RIG_METER_ALC = (1 << 2), /*< ALC */
916 RIG_METER_IC = (1 << 3), /*< IC */
917 RIG_METER_DB = (1 << 4), /*< DB */
918 RIG_METER_PO = (1 << 5), /*< Power Out */
919 RIG_METER_VDD = (1 << 6), /*< Final Amp Voltage */
920 RIG_METER_TEMP = (1 << 7) /*< Final Amp Temperature */
921};
922#endif
923
924
930typedef union {
931 signed int i;
932 float f;
933 char *s;
934 const char *cs;
936 struct {
937 int l;
938 unsigned char *d; /* Pointer to data buffer */
939 } b;
941} value_t;
942
943
952typedef uint64_t rig_level_e;
953#define RIG_LEVEL_NONE 0
954#define RIG_LEVEL_PREAMP CONSTANT_64BIT_FLAG(0)
955#define RIG_LEVEL_ATT CONSTANT_64BIT_FLAG(1)
956#define RIG_LEVEL_VOXDELAY CONSTANT_64BIT_FLAG(2)
957#define RIG_LEVEL_AF CONSTANT_64BIT_FLAG(3)
958#define RIG_LEVEL_RF CONSTANT_64BIT_FLAG(4)
959#define RIG_LEVEL_SQL CONSTANT_64BIT_FLAG(5)
960#define RIG_LEVEL_IF CONSTANT_64BIT_FLAG(6)
961#define RIG_LEVEL_APF CONSTANT_64BIT_FLAG(7)
962#define RIG_LEVEL_NR CONSTANT_64BIT_FLAG(8)
963#define RIG_LEVEL_PBT_IN CONSTANT_64BIT_FLAG(9)
964#define RIG_LEVEL_PBT_OUT CONSTANT_64BIT_FLAG(10)
965#define RIG_LEVEL_CWPITCH CONSTANT_64BIT_FLAG(11)
966#define RIG_LEVEL_RFPOWER CONSTANT_64BIT_FLAG(12)
967#define RIG_LEVEL_MICGAIN CONSTANT_64BIT_FLAG(13)
968#define RIG_LEVEL_KEYSPD CONSTANT_64BIT_FLAG(14)
969#define RIG_LEVEL_NOTCHF CONSTANT_64BIT_FLAG(15)
970#define RIG_LEVEL_COMP CONSTANT_64BIT_FLAG(16)
971#define RIG_LEVEL_AGC CONSTANT_64BIT_FLAG(17)
972#define RIG_LEVEL_BKINDL CONSTANT_64BIT_FLAG(18)
973#define RIG_LEVEL_BALANCE CONSTANT_64BIT_FLAG(19)
974#define RIG_LEVEL_METER CONSTANT_64BIT_FLAG(20)
975#define RIG_LEVEL_VOXGAIN CONSTANT_64BIT_FLAG(21)
976#define RIG_LEVEL_ANTIVOX CONSTANT_64BIT_FLAG(22)
977#define RIG_LEVEL_SLOPE_LOW CONSTANT_64BIT_FLAG(23)
978#define RIG_LEVEL_SLOPE_HIGH CONSTANT_64BIT_FLAG(24)
979#define RIG_LEVEL_BKIN_DLYMS CONSTANT_64BIT_FLAG(25)
982#define RIG_LEVEL_RAWSTR CONSTANT_64BIT_FLAG(26)
983//#define RIG_LEVEL_SQLSTAT CONSTANT_64BIT_FLAG(27) /*!< \c SQLSTAT -- SQL status, arg int (open=1/closed=0). Deprecated, use get_dcd instead */
984#define RIG_LEVEL_SWR CONSTANT_64BIT_FLAG(28)
985#define RIG_LEVEL_ALC CONSTANT_64BIT_FLAG(29)
986#define RIG_LEVEL_STRENGTH CONSTANT_64BIT_FLAG(30)
987 /* RIG_LEVEL_BWC (1<<31) */
988#define RIG_LEVEL_RFPOWER_METER CONSTANT_64BIT_FLAG(32)
989#define RIG_LEVEL_COMP_METER CONSTANT_64BIT_FLAG(33)
990#define RIG_LEVEL_VD_METER CONSTANT_64BIT_FLAG(34)
991#define RIG_LEVEL_ID_METER CONSTANT_64BIT_FLAG(35)
993#define RIG_LEVEL_NOTCHF_RAW CONSTANT_64BIT_FLAG(36)
994#define RIG_LEVEL_MONITOR_GAIN CONSTANT_64BIT_FLAG(37)
995#define RIG_LEVEL_NB CONSTANT_64BIT_FLAG(38)
996#define RIG_LEVEL_RFPOWER_METER_WATTS CONSTANT_64BIT_FLAG(39)
997#define RIG_LEVEL_SPECTRUM_MODE CONSTANT_64BIT_FLAG(40)
998#define RIG_LEVEL_SPECTRUM_SPAN CONSTANT_64BIT_FLAG(41)
999#define RIG_LEVEL_SPECTRUM_EDGE_LOW CONSTANT_64BIT_FLAG(42)
1000#define RIG_LEVEL_SPECTRUM_EDGE_HIGH CONSTANT_64BIT_FLAG(43)
1001#define RIG_LEVEL_SPECTRUM_SPEED CONSTANT_64BIT_FLAG(44)
1002#define RIG_LEVEL_SPECTRUM_REF CONSTANT_64BIT_FLAG(45)
1003#define RIG_LEVEL_SPECTRUM_AVG CONSTANT_64BIT_FLAG(46)
1004#define RIG_LEVEL_SPECTRUM_ATT CONSTANT_64BIT_FLAG(47)
1005#define RIG_LEVEL_TEMP_METER CONSTANT_64BIT_FLAG(48)
1006#define RIG_LEVEL_BAND_SELECT CONSTANT_64BIT_FLAG(49)
1007#define RIG_LEVEL_50 CONSTANT_64BIT_FLAG(50)
1008#define RIG_LEVEL_51 CONSTANT_64BIT_FLAG(51)
1009#define RIG_LEVEL_52 CONSTANT_64BIT_FLAG(52)
1010#define RIG_LEVEL_53 CONSTANT_64BIT_FLAG(53)
1011#define RIG_LEVEL_54 CONSTANT_64BIT_FLAG(54)
1012#define RIG_LEVEL_55 CONSTANT_64BIT_FLAG(55)
1013#define RIG_LEVEL_56 CONSTANT_64BIT_FLAG(56)
1014#define RIG_LEVEL_57 CONSTANT_64BIT_FLAG(57)
1015#define RIG_LEVEL_58 CONSTANT_64BIT_FLAG(58)
1016#define RIG_LEVEL_59 CONSTANT_64BIT_FLAG(59)
1017#define RIG_LEVEL_60 CONSTANT_64BIT_FLAG(60)
1018#define RIG_LEVEL_61 CONSTANT_64BIT_FLAG(61)
1019#define RIG_LEVEL_62 CONSTANT_64BIT_FLAG(62)
1020#define RIG_LEVEL_63 CONSTANT_64BIT_FLAG(63)
1023#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)
1024
1025#define RIG_LEVEL_READONLY_LIST (RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_STRENGTH|RIG_LEVEL_RAWSTR|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER)
1026
1027#define RIG_LEVEL_IS_FLOAT(l) ((l)&RIG_LEVEL_FLOAT_LIST)
1028#define RIG_LEVEL_SET(l) ((l)&~RIG_LEVEL_READONLY_LIST)
1030
1031
1042 RIG_PARM_ANN = (1 << 0),
1043 RIG_PARM_APO = (1 << 1),
1045 RIG_PARM_BEEP = (1 << 4),
1046 RIG_PARM_TIME = (1 << 5),
1047 RIG_PARM_BAT = (1 << 6),
1050 RIG_PARM_AFIF = (1 << 9)
1052
1065};
1066
1072 RIG_MULTICAST_POLL, // hamlib will be polling the rig for all rig items
1073 RIG_MULTICAST_TRANSCEIVE, // transceive will be turned on and processed
1074 RIG_MULTICAST_SPECTRUM // spectrum data will be included
1075};
1076
1078#define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT|RIG_PARM_KEYLIGHT)
1079#define RIG_PARM_READONLY_LIST (RIG_PARM_BAT)
1080
1081#define RIG_PARM_IS_FLOAT(l) ((l)&RIG_PARM_FLOAT_LIST)
1082#define RIG_PARM_SET(l) ((l)&~RIG_PARM_READONLY_LIST)
1084
1091typedef uint64_t setting_t;
1092
1097#define RIG_SETTING_MAX 64
1098
1115#define RIG_TRN_OFF 0
1116#define RIG_TRN_RIG 1
1117#define RIG_TRN_POLL 2
1118
1119
1128/*
1129 * The C standard dictates that an enum constant is a 32 bit signed integer.
1130 * Setting a constant's bit 31 created a negative value that on amd64 had the
1131 * upper 32 bits set as well when assigned to the misc.c:rig_func_str structure.
1132 * This caused misc.c:rig_strfunc() to fail its comparison for RIG_FUNC_XIT
1133 * on amd64 (x86_64). To use bit 31 as an unsigned long, preprocessor macros
1134 * have been used instead as a 'const unsigned long' which cannot be used to
1135 * initialize the rig_func_str.func members. TNX KA6MAL, AC6SL. - N0NB
1136 */
1137#define RIG_FUNC_NONE 0
1138#define RIG_FUNC_FAGC CONSTANT_64BIT_FLAG (0)
1139#define RIG_FUNC_NB CONSTANT_64BIT_FLAG (1)
1140#define RIG_FUNC_COMP CONSTANT_64BIT_FLAG (2)
1141#define RIG_FUNC_VOX CONSTANT_64BIT_FLAG (3)
1142#define RIG_FUNC_TONE CONSTANT_64BIT_FLAG (4)
1143#define RIG_FUNC_TSQL CONSTANT_64BIT_FLAG (5)
1144#define RIG_FUNC_SBKIN CONSTANT_64BIT_FLAG (6)
1145#define RIG_FUNC_FBKIN CONSTANT_64BIT_FLAG (7)
1146#define RIG_FUNC_ANF CONSTANT_64BIT_FLAG (8)
1147#define RIG_FUNC_NR CONSTANT_64BIT_FLAG (9)
1148#define RIG_FUNC_AIP CONSTANT_64BIT_FLAG (10)
1149#define RIG_FUNC_APF CONSTANT_64BIT_FLAG (11)
1150#define RIG_FUNC_MON CONSTANT_64BIT_FLAG (12)
1151#define RIG_FUNC_MN CONSTANT_64BIT_FLAG (13)
1152#define RIG_FUNC_RF CONSTANT_64BIT_FLAG (14)
1153#define RIG_FUNC_ARO CONSTANT_64BIT_FLAG (15)
1154#define RIG_FUNC_LOCK CONSTANT_64BIT_FLAG (16)
1155#define RIG_FUNC_MUTE CONSTANT_64BIT_FLAG (17)
1156#define RIG_FUNC_VSC CONSTANT_64BIT_FLAG (18)
1157#define RIG_FUNC_REV CONSTANT_64BIT_FLAG (19)
1158#define RIG_FUNC_SQL CONSTANT_64BIT_FLAG (20)
1159#define RIG_FUNC_ABM CONSTANT_64BIT_FLAG (21)
1160#define RIG_FUNC_BC CONSTANT_64BIT_FLAG (22)
1161#define RIG_FUNC_MBC CONSTANT_64BIT_FLAG (23)
1162#define RIG_FUNC_RIT CONSTANT_64BIT_FLAG (24)
1163#define RIG_FUNC_AFC CONSTANT_64BIT_FLAG (25)
1164#define RIG_FUNC_SATMODE CONSTANT_64BIT_FLAG (26)
1165#define RIG_FUNC_SCOPE CONSTANT_64BIT_FLAG (27)
1166#define RIG_FUNC_RESUME CONSTANT_64BIT_FLAG (28)
1167#define RIG_FUNC_TBURST CONSTANT_64BIT_FLAG (29)
1168#define RIG_FUNC_TUNER CONSTANT_64BIT_FLAG (30)
1169#define RIG_FUNC_XIT CONSTANT_64BIT_FLAG (31)
1170#ifndef SWIGLUAHIDE
1171/* Hide the top 32 bits from the old Lua binding as they can't be represented */
1172#define RIG_FUNC_NB2 CONSTANT_64BIT_FLAG (32)
1173#define RIG_FUNC_CSQL CONSTANT_64BIT_FLAG (33)
1174#define RIG_FUNC_AFLT CONSTANT_64BIT_FLAG (34)
1175#define RIG_FUNC_ANL CONSTANT_64BIT_FLAG (35)
1176#define RIG_FUNC_BC2 CONSTANT_64BIT_FLAG (36)
1177#define RIG_FUNC_DUAL_WATCH CONSTANT_64BIT_FLAG (37)
1178#define RIG_FUNC_DIVERSITY CONSTANT_64BIT_FLAG (38)
1179#define RIG_FUNC_DSQL CONSTANT_64BIT_FLAG (39)
1180#define RIG_FUNC_SCEN CONSTANT_64BIT_FLAG (40)
1181#define RIG_FUNC_SLICE CONSTANT_64BIT_FLAG (41)
1182#define RIG_FUNC_TRANSCEIVE CONSTANT_64BIT_FLAG (42)
1183#define RIG_FUNC_SPECTRUM CONSTANT_64BIT_FLAG (43)
1184#define RIG_FUNC_SPECTRUM_HOLD CONSTANT_64BIT_FLAG (44)
1185#define RIG_FUNC_SEND_MORSE CONSTANT_64BIT_FLAG (45)
1186#define RIG_FUNC_SEND_VOICE_MEM CONSTANT_64BIT_FLAG (46)
1187#define RIG_FUNC_BIT47 CONSTANT_64BIT_FLAG (47)
1188#define RIG_FUNC_BIT48 CONSTANT_64BIT_FLAG (48)
1189#define RIG_FUNC_BIT49 CONSTANT_64BIT_FLAG (49)
1190#define RIG_FUNC_BIT50 CONSTANT_64BIT_FLAG (50)
1191#define RIG_FUNC_BIT51 CONSTANT_64BIT_FLAG (51)
1192#define RIG_FUNC_BIT52 CONSTANT_64BIT_FLAG (52)
1193#define RIG_FUNC_BIT53 CONSTANT_64BIT_FLAG (53)
1194#define RIG_FUNC_BIT54 CONSTANT_64BIT_FLAG (54)
1195#define RIG_FUNC_BIT55 CONSTANT_64BIT_FLAG (55)
1196#define RIG_FUNC_BIT56 CONSTANT_64BIT_FLAG (56)
1197#define RIG_FUNC_BIT57 CONSTANT_64BIT_FLAG (57)
1198#define RIG_FUNC_BIT58 CONSTANT_64BIT_FLAG (58)
1199#define RIG_FUNC_BIT59 CONSTANT_64BIT_FLAG (59)
1200#define RIG_FUNC_BIT60 CONSTANT_64BIT_FLAG (60)
1201#define RIG_FUNC_BIT61 CONSTANT_64BIT_FLAG (61)
1202#define RIG_FUNC_BIT62 CONSTANT_64BIT_FLAG (62)
1203#define RIG_FUNC_BIT63 CONSTANT_64BIT_FLAG (63)
1204/* 63 is this highest bit number that can be used */
1205#endif
1206
1213#define mW(p) ((int)(p))
1221#define Watts(p) ((int)((p)*1000))
1228#define W(p) Watts(p)
1229#if 0 // deprecating kW macro as this doesn't make sense
1236#define kW(p) ((int)((p)*1000000L))
1237#endif
1238
1239
1249typedef uint64_t rmode_t;
1250
1251#define RIG_MODE_NONE 0
1252#define RIG_MODE_AM CONSTANT_64BIT_FLAG (0)
1253#define RIG_MODE_CW CONSTANT_64BIT_FLAG (1)
1254#define RIG_MODE_USB CONSTANT_64BIT_FLAG (2)
1255#define RIG_MODE_LSB CONSTANT_64BIT_FLAG (3)
1256#define RIG_MODE_RTTY CONSTANT_64BIT_FLAG (4)
1257#define RIG_MODE_FM CONSTANT_64BIT_FLAG (5)
1258#define RIG_MODE_WFM CONSTANT_64BIT_FLAG (6)
1259#define RIG_MODE_CWR CONSTANT_64BIT_FLAG (7)
1260#define RIG_MODE_RTTYR CONSTANT_64BIT_FLAG (8)
1261#define RIG_MODE_AMS CONSTANT_64BIT_FLAG (9)
1262#define RIG_MODE_PKTLSB CONSTANT_64BIT_FLAG (10)
1263#define RIG_MODE_PKTUSB CONSTANT_64BIT_FLAG (11)
1264#define RIG_MODE_PKTFM CONSTANT_64BIT_FLAG (12)
1265#define RIG_MODE_ECSSUSB CONSTANT_64BIT_FLAG (13)
1266#define RIG_MODE_ECSSLSB CONSTANT_64BIT_FLAG (14)
1267#define RIG_MODE_FAX CONSTANT_64BIT_FLAG (15)
1268#define RIG_MODE_SAM CONSTANT_64BIT_FLAG (16)
1269#define RIG_MODE_SAL CONSTANT_64BIT_FLAG (17)
1270#define RIG_MODE_SAH CONSTANT_64BIT_FLAG (18)
1271#define RIG_MODE_DSB CONSTANT_64BIT_FLAG (19)
1272#define RIG_MODE_FMN CONSTANT_64BIT_FLAG (21)
1273#define RIG_MODE_PKTAM CONSTANT_64BIT_FLAG (22)
1274#define RIG_MODE_P25 CONSTANT_64BIT_FLAG (23)
1275#define RIG_MODE_DSTAR CONSTANT_64BIT_FLAG (24)
1276#define RIG_MODE_DPMR CONSTANT_64BIT_FLAG (25)
1277#define RIG_MODE_NXDNVN CONSTANT_64BIT_FLAG (26)
1278#define RIG_MODE_NXDN_N CONSTANT_64BIT_FLAG (27)
1279#define RIG_MODE_DCR CONSTANT_64BIT_FLAG (28)
1280#define RIG_MODE_AMN CONSTANT_64BIT_FLAG (29)
1281#define RIG_MODE_PSK CONSTANT_64BIT_FLAG (30)
1282#define RIG_MODE_PSKR CONSTANT_64BIT_FLAG (31)
1283#ifndef SWIGLUAHIDE
1284/* hide the top 32 bits from the Lua binding as they will not work */
1285#define RIG_MODE_DD CONSTANT_64BIT_FLAG (32)
1286#define RIG_MODE_C4FM CONSTANT_64BIT_FLAG (33)
1287#define RIG_MODE_PKTFMN CONSTANT_64BIT_FLAG (34)
1288#define RIG_MODE_SPEC CONSTANT_64BIT_FLAG (35)
1289#define RIG_MODE_CWN CONSTANT_64BIT_FLAG (36)
1290#define RIG_MODE_IQ CONSTANT_64BIT_FLAG (37)
1291#define RIG_MODE_ISBUSB CONSTANT_64BIT_FLAG (38)
1292#define RIG_MODE_ISBLSB CONSTANT_64BIT_FLAG (39)
1293#define RIG_MODE_BIT40 CONSTANT_64BIT_FLAG (40)
1294#define RIG_MODE_BIT41 CONSTANT_64BIT_FLAG (41)
1295#define RIG_MODE_BIT42 CONSTANT_64BIT_FLAG (42)
1296#define RIG_MODE_BIT43 CONSTANT_64BIT_FLAG (43)
1297#define RIG_MODE_BIT44 CONSTANT_64BIT_FLAG (44)
1298#define RIG_MODE_BIT45 CONSTANT_64BIT_FLAG (45)
1299#define RIG_MODE_BIT46 CONSTANT_64BIT_FLAG (46)
1300#define RIG_MODE_BIT47 CONSTANT_64BIT_FLAG (47)
1301#define RIG_MODE_BIT48 CONSTANT_64BIT_FLAG (48)
1302#define RIG_MODE_BIT49 CONSTANT_64BIT_FLAG (49)
1303#define RIG_MODE_BIT50 CONSTANT_64BIT_FLAG (50)
1304#define RIG_MODE_BIT51 CONSTANT_64BIT_FLAG (51)
1305#define RIG_MODE_BIT52 CONSTANT_64BIT_FLAG (52)
1306#define RIG_MODE_BIT53 CONSTANT_64BIT_FLAG (53)
1307#define RIG_MODE_BIT54 CONSTANT_64BIT_FLAG (54)
1308#define RIG_MODE_BIT55 CONSTANT_64BIT_FLAG (55)
1309#define RIG_MODE_BIT56 CONSTANT_64BIT_FLAG (56)
1310#define RIG_MODE_BIT57 CONSTANT_64BIT_FLAG (57)
1311#define RIG_MODE_BIT58 CONSTANT_64BIT_FLAG (58)
1312#define RIG_MODE_BIT59 CONSTANT_64BIT_FLAG (59)
1313#define RIG_MODE_BIT60 CONSTANT_64BIT_FLAG (60)
1314#define RIG_MODE_BIT61 CONSTANT_64BIT_FLAG (61)
1315#define RIG_MODE_BIT62 CONSTANT_64BIT_FLAG (62)
1316#define RIG_MODE_TESTS_MAX CONSTANT_64BIT_FLAG (63)
1317#endif
1318
1322#define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB)
1323
1327#define RIG_MODE_ECSS (RIG_MODE_ECSSUSB|RIG_MODE_ECSSLSB)
1328
1330#define RIG_DBLST_END 0 /* end marker in a preamp/att level list */
1331#define RIG_IS_DBLST_END(d) ((d)==0)
1333
1334
1341typedef struct freq_range_list {
1349 char *label;
1351
1353#define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE}
1354#define RIG_IS_FRNG_END(r) ((r).startf == Hz(0) && (r).endf == Hz(0))
1356
1376};
1377
1379#define RIG_TS_ANY 0
1380#define RIG_TS_END {RIG_MODE_NONE, 0}
1381#define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0)
1383
1384
1411};
1413#define RIG_FLT_ANY 0
1414#define RIG_FLT_END {RIG_MODE_NONE, 0}
1415#define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE)
1416#define DEBUGMSGSAVE_SIZE 24000
1418
1419
1423#define RIG_CHFLAG_NONE 0
1427#define RIG_CHFLAG_SKIP (1<<0)
1431#define RIG_CHFLAG_DATA (1<<1)
1435#define RIG_CHFLAG_PSKIP (1<<2)
1436
1441struct ext_list {
1444};
1445
1447#define RIG_EXT_END {0, {.i=0}}
1448#define RIG_IS_EXT_END(x) ((x).token == 0)
1450
1458struct channel {
1481 tone_t ctcss_tone;
1482 tone_t ctcss_sql;
1483 tone_t dcs_code;
1484 tone_t dcs_sql;
1486 unsigned int flags;
1487 char channel_desc[HAMLIB_MAXCHANDESC];
1488 struct ext_list
1490};
1491
1495typedef struct channel channel_t;
1496
1503 unsigned bank_num: 1;
1504 unsigned vfo: 1;
1505 unsigned ant: 1;
1506 unsigned freq: 1;
1507 unsigned mode: 1;
1508 unsigned width: 1;
1510 unsigned tx_freq: 1;
1511 unsigned tx_mode: 1;
1512 unsigned tx_width: 1;
1514 unsigned split: 1;
1515 unsigned tx_vfo: 1;
1516 unsigned rptr_shift: 1;
1517 unsigned rptr_offs: 1;
1518 unsigned tuning_step: 1;
1519 unsigned rit: 1;
1520 unsigned xit: 1;
1523 unsigned ctcss_tone: 1;
1524 unsigned ctcss_sql: 1;
1525 unsigned dcs_code: 1;
1526 unsigned dcs_sql: 1;
1527 unsigned scan_group: 1;
1528 unsigned flags: 1;
1529 unsigned channel_desc: 1;
1530 unsigned ext_levels: 1;
1531};
1532
1537
1538
1549typedef enum {
1559
1560
1576 int endc;
1580};
1581
1583#define RIG_CHAN_END {0,0,RIG_MTYPE_NONE}
1584#define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE)
1586
1590#define RIG_MEM_CAPS_ALL -1
1591
1595typedef struct chan_list chan_t;
1596
1597
1609struct gran {
1613};
1614
1618typedef struct gran gran_t;
1619
1620
1625 int size;
1626 struct {
1627 int raw;
1628 int val;
1629 } table[HAMLIB_MAX_CAL_LENGTH];
1630};
1631
1644typedef struct cal_table cal_table_t;
1645
1647#define EMPTY_STR_CAL { 0, { { 0, 0 }, } }
1649
1650
1655 int size;
1656 struct {
1657 int raw;
1658 float val;
1659 } table[HAMLIB_MAX_CAL_LENGTH];
1660};
1661
1675
1677#define EMPTY_FLOAT_CAL { 0, { { 0, 0f }, } }
1678
1679typedef int (* chan_cb_t)(RIG *, channel_t **, int, const chan_t *, rig_ptr_t);
1680typedef int (* confval_cb_t)(RIG *,
1681 const struct confparams *,
1682 value_t *,
1683 rig_ptr_t);
1685
1690{
1691 int id;
1692 char *name;
1693};
1694
1699 RIG_SPECTRUM_MODE_NONE = 0,
1704};
1705
1710{
1711 int id;
1712 char *name;
1713};
1714
1727{
1728 int id;
1744 unsigned char *spectrum_data;
1745};
1746
1767#define RIG_MODEL(arg) .rig_model=arg,.macro_name=#arg
1768#define HAMLIB_CHECK_RIG_CAPS "HAMLIB_CHECK_RIG_CAPS"
1769struct rig_caps {
1770 rig_model_t rig_model;
1771 const char *model_name;
1772 const char *mfg_name;
1773 const char *version;
1774 const char *copyright;
1775 enum rig_status_e status;
1777 int rig_type;
1778 ptt_type_t ptt_type;
1779 dcd_type_t dcd_type;
1780 rig_port_t port_type;
1782 int serial_rate_min;
1783 int serial_rate_max;
1784 int serial_data_bits;
1785 int serial_stop_bits;
1786 enum serial_parity_e serial_parity;
1787 enum serial_handshake_e serial_handshake;
1789 int write_delay;
1790 int post_write_delay;
1791 int timeout;
1792 int retry;
1794 setting_t has_get_func;
1795 setting_t has_set_func;
1796 setting_t has_get_level;
1797 setting_t has_set_level;
1798 setting_t has_get_parm;
1799 setting_t has_set_parm;
1801 gran_t level_gran[RIG_SETTING_MAX];
1802 gran_t parm_gran[RIG_SETTING_MAX];
1804 const struct confparams *extparms;
1805 const struct confparams *extlevels;
1806 const struct confparams *extfuncs;
1807 int *ext_tokens;
1809 tone_t *ctcss_list;
1810 tone_t *dcs_list;
1812 int preamp[HAMLIB_MAXDBLSTSIZ];
1813 int attenuator[HAMLIB_MAXDBLSTSIZ];
1814 shortfreq_t max_rit;
1815 shortfreq_t max_xit;
1816 shortfreq_t max_ifshift;
1818 int agc_level_count;
1819 enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS];
1821 ann_t announces;
1823 vfo_op_t vfo_ops;
1824 scan_t scan_ops;
1825 int targetable_vfo;
1826 int transceive;
1828 int bank_qty;
1829 int chan_desc_sz;
1831 chan_t chan_list[HAMLIB_CHANLSTSIZ];
1833 // As of 2020-02-12 we know of 5 models from Icom USA, EUR, ITR, TPE, KOR for the IC-9700
1834 // So we currently have 5 ranges we need to deal with
1835 // The backend for the model should fill in the label field to explain what model it is
1836 // The the IC-9700 in ic7300.c for an example
1837 freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ];
1838 freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ];
1839 freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ];
1840 freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ];
1841 freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ];
1842 freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ];
1843 freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ];
1844 freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ];
1845 freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ];
1846 freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ];
1848 struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
1849 struct filter_list filters[HAMLIB_FLTLSTSIZ];
1851 cal_table_t str_cal;
1852 cal_table_float_t swr_cal;
1853 cal_table_float_t alc_cal;
1854 cal_table_float_t rfpower_meter_cal;
1855 cal_table_float_t comp_meter_cal;
1856 cal_table_float_t vd_meter_cal;
1857 cal_table_float_t id_meter_cal;
1859 struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES];
1860 enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES];
1861 freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS];
1862 struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES];
1863 int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ];
1865 const struct confparams *cfgparams;
1866 const rig_ptr_t priv;
1868 /*
1869 * Rig API
1870 *
1871 */
1872
1873 int (*rig_init)(RIG *rig);
1874 int (*rig_cleanup)(RIG *rig);
1875 int (*rig_open)(RIG *rig);
1876 int (*rig_close)(RIG *rig);
1877
1878 /*
1879 * General API commands, from most primitive to least.. :()
1880 * List Set/Get functions pairs
1881 */
1882
1883 int (*set_freq)(RIG *rig, vfo_t vfo, freq_t freq);
1884 int (*get_freq)(RIG *rig, vfo_t vfo, freq_t *freq);
1885
1886 int (*set_mode)(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
1887 int (*get_mode)(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width);
1888
1889 int (*set_vfo)(RIG *rig, vfo_t vfo);
1890 int (*get_vfo)(RIG *rig, vfo_t *vfo);
1891
1892 int (*set_ptt)(RIG *rig, vfo_t vfo, ptt_t ptt);
1893 int (*get_ptt)(RIG *rig, vfo_t vfo, ptt_t *ptt);
1894
1895 int (*get_dcd)(RIG *rig, vfo_t vfo, dcd_t *dcd);
1896
1897 int (*set_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift);
1898 int (*get_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift);
1899
1900 int (*set_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t offs);
1901 int (*get_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t *offs);
1902
1903 int (*set_split_freq)(RIG *rig, vfo_t vfo, freq_t tx_freq);
1904 int (*get_split_freq)(RIG *rig, vfo_t vfo, freq_t *tx_freq);
1905
1906 int (*set_split_mode)(RIG *rig,
1907 vfo_t vfo,
1908 rmode_t tx_mode,
1909 pbwidth_t tx_width);
1910 int (*get_split_mode)(RIG *rig,
1911 vfo_t vfo,
1912 rmode_t *tx_mode,
1913 pbwidth_t *tx_width);
1914
1915 int (*set_split_freq_mode)(RIG *rig,
1916 vfo_t vfo,
1917 freq_t tx_freq,
1918 rmode_t tx_mode,
1919 pbwidth_t tx_width);
1920 int (*get_split_freq_mode)(RIG *rig,
1921 vfo_t vfo,
1922 freq_t *tx_freq,
1923 rmode_t *tx_mode,
1924 pbwidth_t *tx_width);
1925
1926 int (*set_split_vfo)(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo);
1927 int (*get_split_vfo)(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo);
1928
1929 int (*set_rit)(RIG *rig, vfo_t vfo, shortfreq_t rit);
1930 int (*get_rit)(RIG *rig, vfo_t vfo, shortfreq_t *rit);
1931
1932 int (*set_xit)(RIG *rig, vfo_t vfo, shortfreq_t xit);
1933 int (*get_xit)(RIG *rig, vfo_t vfo, shortfreq_t *xit);
1934
1935 int (*set_ts)(RIG *rig, vfo_t vfo, shortfreq_t ts);
1936 int (*get_ts)(RIG *rig, vfo_t vfo, shortfreq_t *ts);
1937
1938 int (*set_dcs_code)(RIG *rig, vfo_t vfo, tone_t code);
1939 int (*get_dcs_code)(RIG *rig, vfo_t vfo, tone_t *code);
1940
1941 int (*set_tone)(RIG *rig, vfo_t vfo, tone_t tone);
1942 int (*get_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
1943
1944 int (*set_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t tone);
1945 int (*get_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
1946
1947 int (*set_dcs_sql)(RIG *rig, vfo_t vfo, tone_t code);
1948 int (*get_dcs_sql)(RIG *rig, vfo_t vfo, tone_t *code);
1949
1950 int (*set_tone_sql)(RIG *rig, vfo_t vfo, tone_t tone);
1951 int (*get_tone_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
1952
1953 int (*set_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t tone);
1954 int (*get_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
1955
1956 int (*power2mW)(RIG *rig,
1957 unsigned int *mwpower,
1958 float power,
1959 freq_t freq,
1960 rmode_t mode);
1961 int (*mW2power)(RIG *rig,
1962 float *power,
1963 unsigned int mwpower,
1964 freq_t freq,
1965 rmode_t mode);
1966
1967 int (*set_powerstat)(RIG *rig, powerstat_t status);
1968 int (*get_powerstat)(RIG *rig, powerstat_t *status);
1969
1970 int (*reset)(RIG *rig, reset_t reset);
1971
1972 int (*set_ant)(RIG *rig, vfo_t vfo, ant_t ant, value_t option);
1973 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);
1974
1975 int (*set_level)(RIG *rig, vfo_t vfo, setting_t level, value_t val);
1976 int (*get_level)(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
1977
1978 int (*set_func)(RIG *rig, vfo_t vfo, setting_t func, int status);
1979 int (*get_func)(RIG *rig, vfo_t vfo, setting_t func, int *status);
1980
1981 int (*set_parm)(RIG *rig, setting_t parm, value_t val);
1982 int (*get_parm)(RIG *rig, setting_t parm, value_t *val);
1983
1984 int (*set_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t val);
1985 int (*get_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t *val);
1986
1987 int (*set_ext_func)(RIG *rig, vfo_t vfo, token_t token, int status);
1988 int (*get_ext_func)(RIG *rig, vfo_t vfo, token_t token, int *status);
1989
1990 int (*set_ext_parm)(RIG *rig, token_t token, value_t val);
1991 int (*get_ext_parm)(RIG *rig, token_t token, value_t *val);
1992
1993 int (*set_conf)(RIG *rig, token_t token, const char *val);
1994 int (*get_conf)(RIG *rig, token_t token, char *val);
1995
1996 int (*send_dtmf)(RIG *rig, vfo_t vfo, const char *digits);
1997 int (*recv_dtmf)(RIG *rig, vfo_t vfo, char *digits, int *length);
1998
1999 int (*send_morse)(RIG *rig, vfo_t vfo, const char *msg);
2000 int (*stop_morse)(RIG *rig, vfo_t vfo);
2001 int (*wait_morse)(RIG *rig, vfo_t vfo);
2002
2003 int (*send_voice_mem)(RIG *rig, vfo_t vfo, int ch);
2004
2005 int (*set_bank)(RIG *rig, vfo_t vfo, int bank);
2006
2007 int (*set_mem)(RIG *rig, vfo_t vfo, int ch);
2008 int (*get_mem)(RIG *rig, vfo_t vfo, int *ch);
2009
2010 int (*vfo_op)(RIG *rig, vfo_t vfo, vfo_op_t op);
2011
2012 int (*scan)(RIG *rig, vfo_t vfo, scan_t scan, int ch);
2013
2014 int (*set_trn)(RIG *rig, int trn);
2015 int (*get_trn)(RIG *rig, int *trn);
2016
2017 int (*decode_event)(RIG *rig);
2018
2019 int (*set_channel)(RIG *rig, vfo_t vfo, const channel_t *chan);
2020 int (*get_channel)(RIG *rig, vfo_t vfo, channel_t *chan, int read_only);
2021
2022 const char * (*get_info)(RIG *rig);
2023
2024 int (*set_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
2025 int (*get_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
2026
2027 int (*set_mem_all_cb)(RIG *rig,
2028 chan_cb_t chan_cb,
2029 confval_cb_t parm_cb,
2030 rig_ptr_t);
2031 int (*get_mem_all_cb)(RIG *rig,
2032 chan_cb_t chan_cb,
2033 confval_cb_t parm_cb,
2034 rig_ptr_t);
2035
2036 int (*set_vfo_opt)(RIG *rig, int status); // only for Net Rigctl device
2037 int (*rig_get_vfo_info) (RIG *rig,
2038 vfo_t vfo,
2039 freq_t *freq,
2040 rmode_t *mode,
2041 pbwidth_t *width,
2042 split_t *split);
2043 int(*set_clock) (RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset);
2044 int(*get_clock) (RIG *rig, int *year, int *month, int *day, int *hour, int *min, int *sec, double *msec, int *utc_offset);
2045
2046 const char *clone_combo_set;
2047 const char *clone_combo_get;
2048 const char *macro_name;
2050 int async_data_supported;
2051 int (*read_frame_direct)(RIG *rig,
2052 size_t buffer_length,
2053 const unsigned char *buffer);
2054 int (*is_async_frame)(RIG *rig,
2055 size_t frame_length,
2056 const unsigned char *frame);
2057 int (*process_async_frame)(RIG *rig,
2058 size_t frame_length,
2059 const unsigned char *frame);
2060// this will be used to check rigcaps structure is compatible with client
2061 char *hamlib_check_rig_caps; // a constant value we can check for hamlib integrity
2062 int (*get_conf2)(RIG *rig, token_t token, char *val, int val_len);
2063 int (*password)(RIG *rig, const char *key1); /*< Send encrypted password if rigctld is secured with -A/--password */
2064 int (*set_lock_mode)(RIG *rig, int mode);
2065 int (*get_lock_mode)(RIG *rig, int *mode);
2066};
2068
2074// all functions enumerated for rig_get_function_ptr
2075enum rig_function_e {
2076 RIG_FUNCTION_INIT,
2077 RIG_FUNCTION_CLEANUP,
2078 RIG_FUNCTION_OPEN,
2079 RIG_FUNCTION_CLOSE,
2080 RIG_FUNCTION_SET_FREQ,
2081 RIG_FUNCTION_GET_FREQ,
2082 RIG_FUNCTION_SET_MODE,
2083 RIG_FUNCTION_GET_MODE,
2084 RIG_FUNCTION_SET_VFO,
2085 RIG_FUNCTION_GET_VFO,
2086 RIG_FUNCTION_SET_PTT,
2087 RIG_FUNCTION_GET_PTT,
2088 RIG_FUNCTION_GET_DCD,
2089 RIG_FUNCTION_SET_RPTR_SHIFT,
2090 RIG_FUNCTION_GET_RPTR_SHIFT,
2091 RIG_FUNCTION_SET_RPTR_OFFS,
2092 RIG_FUNCTION_GET_RPTR_OFFS,
2093 RIG_FUNCTION_SET_SPLIT_FREQ,
2094 RIG_FUNCTION_GET_SPLIT_FREQ,
2095 RIG_FUNCTION_SET_SPLIT_MODE,
2096 RIG_FUNCTION_SET_SPLIT_FREQ_MODE,
2097 RIG_FUNCTION_GET_SPLIT_FREQ_MODE,
2098 RIG_FUNCTION_SET_SPLIT_VFO,
2099 RIG_FUNCTION_GET_SPLIT_VFO,
2100 RIG_FUNCTION_SET_RIT,
2101 RIG_FUNCTION_GET_RIT,
2102 RIG_FUNCTION_SET_XIT,
2103 RIG_FUNCTION_GET_XIT,
2104 RIG_FUNCTION_SET_TS,
2105 RIG_FUNCTION_GET_TS,
2106 RIG_FUNCTION_SET_DCS_CODE,
2107 RIG_FUNCTION_GET_DCS_CODE,
2108 RIG_FUNCTION_SET_TONE,
2109 RIG_FUNCTION_GET_TONE,
2110 RIG_FUNCTION_SET_CTCSS_TONE,
2111 RIG_FUNCTION_GET_CTCSS_TONE,
2112 RIG_FUNCTION_SET_DCS_SQL,
2113 RIG_FUNCTION_GET_DCS_SQL,
2114 RIG_FUNCTION_SET_TONE_SQL,
2115 RIG_FUNCTION_GET_TONE_SQL,
2116 RIG_FUNCTION_SET_CTCSS_SQL,
2117 RIG_FUNCTION_GET_CTCSS_SQL,
2118 RIG_FUNCTION_POWER2MW,
2119 RIG_FUNCTION_MW2POWER,
2120 RIG_FUNCTION_SET_POWERSTAT,
2121 RIG_FUNCTION_GET_POWERSTAT,
2122 RIG_FUNCTION_RESET,
2123 RIG_FUNCTION_SET_ANT,
2124 RIG_FUNCTION_GET_ANT,
2125 RIG_FUNCTION_SET_LEVEL,
2126 RIG_FUNCTION_GET_LEVEL,
2127 RIG_FUNCTION_SET_FUNC,
2128 RIG_FUNCTION_GET_FUNC,
2129 RIG_FUNCTION_SET_PARM,
2130 RIG_FUNCTION_GET_PARM,
2131 RIG_FUNCTION_SET_EXT_LEVEL,
2132 RIG_FUNCTION_GET_EXT_LEVEL,
2133 RIG_FUNCTION_SET_EXT_FUNC,
2134 RIG_FUNCTION_GET_EXT_FUNC,
2135 RIG_FUNCTION_SET_EXT_PARM,
2136 RIG_FUNCTION_GET_EXT_PARM,
2137 RIG_FUNCTION_SET_CONF,
2138 RIG_FUNCTION_GET_CONF,
2139 RIG_FUNCTION_SEND_DTMF,
2140 RIG_FUNCTION_SEND_MORSE,
2141 RIG_FUNCTION_STOP_MORSE,
2142 RIG_FUNCTION_WAIT_MORSE,
2143 RIG_FUNCTION_SEND_VOICE_MEM,
2144 RIG_FUNCTION_SET_BANK,
2145 RIG_FUNCTION_SET_MEM,
2146 RIG_FUNCTION_GET_MEM,
2147 RIG_FUNCTION_VFO_OP,
2148 RIG_FUNCTION_SCAN,
2149 RIG_FUNCTION_SET_TRN,
2150 RIG_FUNCTION_GET_TRN,
2151 RIG_FUNCTION_DECODE_EVENT,
2152 RIG_FUNCTION_SET_CHANNEL,
2153 RIG_FUNCTION_GET_CHANNEL,
2154 RIG_FUNCTION_GET_INFO,
2155 RIG_FUNCTION_SET_CHAN_ALL_CB,
2156 RIG_FUNCTION_GET_CHAN_ALL_CB,
2157 RIG_FUNCTION_SET_MEM_ALL_CB,
2158 RIG_FUNCTION_GET_MEM_ALL_CB,
2159 RIG_FUNCTION_SET_VFO_OPT,
2160 RIG_FUNCTION_READ_FRAME_DIRECT,
2161 RIG_FUNCTION_IS_ASYNC_FRAME,
2162 RIG_FUNCTION_PROCESS_ASYNC_FRAME,
2163 RIG_FUNCTION_GET_CONF2,
2164};
2165
2171extern HAMLIB_EXPORT (void *) rig_get_function_ptr(rig_model_t rig_model, enum rig_function_e rig_function);
2172
2178// values enumerated for rig->caps values
2179enum rig_caps_int_e {
2180 RIG_CAPS_TARGETABLE_VFO,
2181 RIG_CAPS_RIG_MODEL,
2182 RIG_CAPS_PORT_TYPE,
2183 RIG_CAPS_PTT_TYPE,
2184 RIG_CAPS_HAS_GET_LEVEL
2185};
2186
2187enum rig_caps_cptr_e {
2188 RIG_CAPS_VERSION_CPTR,
2189 RIG_CAPS_MFG_NAME_CPTR,
2190 RIG_CAPS_MODEL_NAME_CPTR,
2191 RIG_CAPS_STATUS_CPTR
2192};
2193
2199extern HAMLIB_EXPORT (long long) rig_get_caps_int(rig_model_t rig_model, enum rig_caps_int_e rig_caps);
2200
2206extern HAMLIB_EXPORT (const char *) rig_get_caps_cptr(rig_model_t rig_model, enum rig_caps_cptr_e rig_caps);
2207
2208struct hamlib_async_pipe;
2209
2210typedef struct hamlib_async_pipe hamlib_async_pipe_t;
2211
2218// DO NOT CHANGE THIS STRUCTURE ALL UNTIL 5.0
2219// Right now it is static inside rig structure
2220// 5.0 will change it to a pointer which can then be added to
2221// At that point only add to the end of the structure
2222typedef struct hamlib_port {
2223 union {
2224 rig_port_t rig;
2225 ptt_type_t ptt;
2226 dcd_type_t dcd;
2227 } type;
2228
2229 int fd;
2230 void *handle;
2232 int write_delay;
2233 int post_write_delay;
2235 struct {
2236 int tv_sec, tv_usec;
2237 } post_write_date;
2239 int timeout;
2240 short retry;
2241 short flushx;
2243 char pathname[HAMLIB_FILPATHLEN];
2245 union {
2246 struct {
2247 int rate;
2248 int data_bits;
2249 int stop_bits;
2250 enum serial_parity_e parity;
2251 enum serial_handshake_e handshake;
2252 enum serial_control_state_e rts_state;
2253 enum serial_control_state_e dtr_state;
2254 } serial;
2256 struct {
2257 int pin;
2258 } parallel;
2260 struct {
2261 int ptt_bitnum;
2262 } cm108;
2264 struct {
2265 int vid;
2266 int pid;
2267 int conf;
2268 int iface;
2269 int alt;
2270 char *vendor_name;
2271 char *product;
2272 } usb;
2274 struct {
2275 int on_value;
2276 int value;
2277 } gpio;
2278 } parm;
2279 int client_port;
2280 RIG *rig;
2281 int asyncio;
2282#if defined(_WIN32)
2283 hamlib_async_pipe_t *sync_data_pipe;
2284 hamlib_async_pipe_t *sync_data_error_pipe;
2285#else
2286 int fd_sync_write;
2287 int fd_sync_read;
2288 int fd_sync_error_write;
2289 int fd_sync_error_read;
2290#endif
2291} hamlib_port_t;
2292
2293
2294// DO NOT CHANGE THIS STRUCTURE AT ALL
2295// Will be removed in 5.0
2296typedef struct hamlib_port_deprecated {
2297 union {
2298 rig_port_t rig;
2299 ptt_type_t ptt;
2300 dcd_type_t dcd;
2301 } type;
2302
2303 int fd;
2304 void *handle;
2306 int write_delay;
2307 int post_write_delay;
2309 struct {
2310 int tv_sec, tv_usec;
2311 } post_write_date;
2313 int timeout;
2314 short retry;
2315 short flushx;
2317 char pathname[HAMLIB_FILPATHLEN];
2319 union {
2320 struct {
2321 int rate;
2322 int data_bits;
2323 int stop_bits;
2324 enum serial_parity_e parity;
2325 enum serial_handshake_e handshake;
2326 enum serial_control_state_e rts_state;
2327 enum serial_control_state_e dtr_state;
2328 } serial;
2330 struct {
2331 int pin;
2332 } parallel;
2334 struct {
2335 int ptt_bitnum;
2336 } cm108;
2338 struct {
2339 int vid;
2340 int pid;
2341 int conf;
2342 int iface;
2343 int alt;
2344 char *vendor_name;
2345 char *product;
2346 } usb;
2348 struct {
2349 int on_value;
2350 int value;
2351 } gpio;
2352 } parm;
2353 int client_port;
2354 RIG *rig;
2355} hamlib_port_t_deprecated;
2357
2358#if !defined(__APPLE__) || !defined(__cplusplus)
2359typedef hamlib_port_t_deprecated port_t_deprecated;
2360typedef hamlib_port_t port_t;
2361#endif
2362
2363#define HAMLIB_ELAPSED_GET 0
2364#define HAMLIB_ELAPSED_SET 1
2365#define HAMLIB_ELAPSED_INVALIDATE 2
2366
2367#define HAMLIB_CACHE_ALWAYS (-1) /*< value to set cache timeout to always use cache */
2368
2369typedef enum {
2370 HAMLIB_CACHE_ALL, // to set all cache timeouts at once
2371 HAMLIB_CACHE_VFO,
2372 HAMLIB_CACHE_FREQ,
2373 HAMLIB_CACHE_MODE,
2374 HAMLIB_CACHE_PTT,
2375 HAMLIB_CACHE_SPLIT,
2376 HAMLIB_CACHE_WIDTH
2377} hamlib_cache_t;
2378
2379typedef enum {
2380 TWIDDLE_OFF,
2381 TWIDDLE_ON
2382} twiddle_state_t;
2383
2389struct rig_cache {
2390 int timeout_ms; // the cache timeout for invalidating itself
2391 vfo_t vfo;
2392 //freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1
2393 // other abstraction here is based on dual vfo rigs and mapped to all others
2394 // So we have four possible states of rig
2395 // MainA, MainB, SubA, SubB
2396 // Main is the Main VFO and Sub is for the 2nd VFO
2397 // Most rigs have MainA and MainB
2398 // Dual VFO rigs can have SubA and SubB too
2399 // For dual VFO rigs simplex operations are all done on MainA/MainB -- ergo this abstraction
2400 freq_t freqCurr; // Other VFO
2401 freq_t freqOther; // Other VFO
2402 freq_t freqMainA; // VFO_A, VFO_MAIN, and VFO_MAINA
2403 freq_t freqMainB; // VFO_B, VFO_SUB, and VFO_MAINB
2404 freq_t freqMainC; // VFO_C, VFO_MAINC
2405 freq_t freqSubA; // VFO_SUBA -- only for rigs with dual Sub VFOs
2406 freq_t freqSubB; // VFO_SUBB -- only for rigs with dual Sub VFOs
2407 freq_t freqSubC; // VFO_SUBC -- only for rigs with 3 Sub VFOs
2408 freq_t freqMem; // VFO_MEM -- last MEM channel
2409 rmode_t modeCurr;
2410 rmode_t modeOther;
2411 rmode_t modeMainA;
2412 rmode_t modeMainB;
2413 rmode_t modeMainC;
2414 rmode_t modeSubA;
2415 rmode_t modeSubB;
2416 rmode_t modeSubC;
2417 rmode_t modeMem;
2418 pbwidth_t widthCurr; // if non-zero then rig has separate width for MainA
2419 pbwidth_t widthOther; // if non-zero then rig has separate width for MainA
2420 pbwidth_t widthMainA; // if non-zero then rig has separate width for MainA
2421 pbwidth_t widthMainB; // if non-zero then rig has separate width for MainB
2422 pbwidth_t widthMainC; // if non-zero then rig has separate width for MainC
2423 pbwidth_t widthSubA; // if non-zero then rig has separate width for SubA
2424 pbwidth_t widthSubB; // if non-zero then rig has separate width for SubB
2425 pbwidth_t widthSubC; // if non-zero then rig has separate width for SubC
2426 pbwidth_t widthMem; // if non-zero then rig has separate width for Mem
2427 ptt_t ptt;
2428 split_t split;
2429 vfo_t split_vfo; // split caches two values
2430 struct timespec time_freqCurr;
2431 struct timespec time_freqOther;
2432 struct timespec time_freqMainA;
2433 struct timespec time_freqMainB;
2434 struct timespec time_freqMainC;
2435 struct timespec time_freqSubA;
2436 struct timespec time_freqSubB;
2437 struct timespec time_freqSubC;
2438 struct timespec time_freqMem;
2439 struct timespec time_vfo;
2440 struct timespec time_modeCurr;
2441 struct timespec time_modeOther;
2442 struct timespec time_modeMainA;
2443 struct timespec time_modeMainB;
2444 struct timespec time_modeMainC;
2445 struct timespec time_modeSubA;
2446 struct timespec time_modeSubB;
2447 struct timespec time_modeSubC;
2448 struct timespec time_modeMem;
2449 struct timespec time_widthCurr;
2450 struct timespec time_widthOther;
2451 struct timespec time_widthMainA;
2452 struct timespec time_widthMainB;
2453 struct timespec time_widthMainC;
2454 struct timespec time_widthSubA;
2455 struct timespec time_widthSubB;
2456 struct timespec time_widthSubC;
2457 struct timespec time_widthMem;
2458 struct timespec time_ptt;
2459 struct timespec time_split;
2460 int satmode; // if rig is in satellite mode
2461};
2462
2463
2474struct rig_state {
2475 /********* ENSURE ANY NEW ITEMS ARE ADDED AT BOTTOM OF THIS STRUCTURE *********/
2476 /*
2477 * overridable fields
2478 */
2479 // moving the hamlib_port_t to the end of rig_state and making it a pointer
2480 // this should allow changes to hamlib_port_t without breaking shared libraries
2481 // these will maintain a copy of the new port_t for backwards compatibility
2482 // to these offsets -- note these must stay until a major version update is done like 5.0
2483 hamlib_port_t_deprecated rigport_deprecated;
2484 hamlib_port_t_deprecated pttport_deprecated;
2485 hamlib_port_t_deprecated dcdport_deprecated;
2487 double vfo_comp;
2489 int deprecated_itu_region;
2490 freq_range_t rx_range_list[HAMLIB_FRQRANGESIZ];
2491 freq_range_t tx_range_list[HAMLIB_FRQRANGESIZ];
2493 struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
2495 struct filter_list filters[HAMLIB_FLTLSTSIZ];
2497 cal_table_t str_cal;
2499 chan_t chan_list[HAMLIB_CHANLSTSIZ];
2501 shortfreq_t max_rit;
2502 shortfreq_t max_xit;
2503 shortfreq_t max_ifshift;
2505 ann_t announces;
2507 int preamp[HAMLIB_MAXDBLSTSIZ];
2508 int attenuator[HAMLIB_MAXDBLSTSIZ];
2510 setting_t has_get_func;
2511 setting_t has_set_func;
2512 setting_t has_get_level;
2513 setting_t has_set_level;
2514 setting_t has_get_parm;
2515 setting_t has_set_parm;
2517 gran_t level_gran[RIG_SETTING_MAX];
2518 gran_t parm_gran[RIG_SETTING_MAX];
2521 /*
2522 * non overridable fields, internal use
2523 */
2524
2525 int transaction_active;
2526 vfo_t current_vfo;
2527 int vfo_list;
2528 int comm_state;
2529 rig_ptr_t priv;
2530 rig_ptr_t obj;
2532 int async_data_enabled;
2533 int poll_interval;
2534 freq_t current_freq;
2535 rmode_t current_mode;
2536 //rmode_t current_modeB; /*!< Mode currently set VFOB */
2537 pbwidth_t current_width;
2538 vfo_t tx_vfo;
2539 rmode_t mode_list;
2540 // mode_list is used by some
2541 // so anything added to this structure must be below here
2542 int transmit;
2545 freq_t lo_freq;
2546 time_t twiddle_time;
2547 int twiddle_timeout;
2548 // uplink allows gpredict to behave better by no reading the uplink VFO
2549 int uplink;
2550 struct rig_cache cache;
2551 int vfo_opt;
2552 int auto_power_on;
2554 int auto_power_off;
2556 int auto_disable_screensaver;
2559 int ptt_share;
2560 int power_now;
2561 int power_min;
2562 int power_max;
2563 unsigned char disable_yaesu_bandselect;
2564 int twiddle_rit;
2565 int twiddle_state;
2566 vfo_t rx_vfo;
2568 volatile unsigned int snapshot_packet_sequence_number;
2569
2570 volatile int multicast_publisher_run;
2572 volatile int async_data_handler_thread_run;
2573 void *async_data_handler_priv_data;
2574 volatile int poll_routine_thread_run;
2575 void *poll_routine_priv_data;
2576 pthread_mutex_t mutex_set_transaction;
2577 hamlib_port_t rigport;
2578 hamlib_port_t pttport;
2579 hamlib_port_t dcdport;
2580 /********* DO NOT ADD or CHANGE anything (or than to rename) ABOVE THIS LINE *********/
2581 /********* ENSURE ANY NEW ITEMS ARE ADDED AFTER HERE *********/
2582 /* flags instructing the rig_get routines to use cached values when asyncio is in use */
2583 int use_cached_freq; /*<! flag instructing rig_get_freq to use cached values when asyncio is in use */
2584 int use_cached_mode; /*<! flag instructing rig_get_mode to use cached values when asyncio is in use */
2585 int use_cached_ptt; /*<! flag instructing rig_get_ptt to use cached values when asyncio is in use */
2586 int depth; /*<! a depth counter to use for debug indentation and such */
2587 int lock_mode; /*<! flag that prevents mode changes if ~= 0 -- see set/get_lock_mode */
2588 powerstat_t powerstat; /*<! power status */
2589};
2590
2592typedef int (*vprintf_cb_t)(enum rig_debug_level_e,
2593 rig_ptr_t,
2594 const char *,
2595 va_list);
2596
2597typedef int (*freq_cb_t)(RIG *, vfo_t, freq_t, rig_ptr_t);
2598typedef int (*mode_cb_t)(RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t);
2599typedef int (*vfo_cb_t)(RIG *, vfo_t, rig_ptr_t);
2600typedef int (*ptt_cb_t)(RIG *, vfo_t, ptt_t, rig_ptr_t);
2601typedef int (*dcd_cb_t)(RIG *, vfo_t, dcd_t, rig_ptr_t);
2602typedef int (*pltune_cb_t)(RIG *,
2603 vfo_t, freq_t *,
2604 rmode_t *,
2605 pbwidth_t *,
2606 rig_ptr_t);
2607typedef int (*spectrum_cb_t)(RIG *,
2608 struct rig_spectrum_line *,
2609 rig_ptr_t);
2610
2612
2630struct rig_callbacks {
2631 freq_cb_t freq_event;
2632 rig_ptr_t freq_arg;
2633 mode_cb_t mode_event;
2634 rig_ptr_t mode_arg;
2635 vfo_cb_t vfo_event;
2636 rig_ptr_t vfo_arg;
2637 ptt_cb_t ptt_event;
2638 rig_ptr_t ptt_arg;
2639 dcd_cb_t dcd_event;
2640 rig_ptr_t dcd_arg;
2641 pltune_cb_t pltune;
2642 rig_ptr_t pltune_arg;
2643 spectrum_cb_t spectrum_event;
2644 rig_ptr_t spectrum_arg;
2645 /* etc.. */
2646};
2647
2648
2658struct s_rig {
2659 struct rig_caps *caps;
2660 struct rig_state state;
2661 struct rig_callbacks callbacks;
2662};
2663
2664
2665
2666/* --------------- API function prototypes -----------------*/
2667
2669
2670extern HAMLIB_EXPORT(RIG *) rig_init HAMLIB_PARAMS((rig_model_t rig_model));
2671extern HAMLIB_EXPORT(int) rig_open HAMLIB_PARAMS((RIG *rig));
2672
2673/*
2674 * General API commands, from most primitive to least.. :()
2675 * List Set/Get functions pairs
2676 */
2677
2678extern HAMLIB_EXPORT(int)
2679rig_flush(hamlib_port_t *port);
2680
2681#if BUILTINFUNC
2682#define rig_set_freq(r,v, f) rig_set_vfo(r,v,f,__builtin_FUNCTION())
2683#else
2684extern HAMLIB_EXPORT(int)
2685rig_set_freq HAMLIB_PARAMS((RIG *rig,
2686 vfo_t vfo,
2687 freq_t freq));
2688#endif
2689extern HAMLIB_EXPORT(int)
2690rig_get_freq HAMLIB_PARAMS((RIG *rig,
2691 vfo_t vfo,
2692 freq_t *freq));
2693
2694extern HAMLIB_EXPORT(int)
2695rig_set_mode HAMLIB_PARAMS((RIG *rig,
2696 vfo_t vfo,
2697 rmode_t mode,
2698 pbwidth_t width));
2699extern HAMLIB_EXPORT(int)
2700rig_get_mode HAMLIB_PARAMS((RIG *rig,
2701 vfo_t vfo,
2702 rmode_t *mode,
2703 pbwidth_t *width));
2704
2705#if BUILTINFUNC
2706#define rig_set_vfo(r,v) rig_set_vfo(r,v,__builtin_FUNCTION())
2707extern HAMLIB_EXPORT(int)
2708rig_set_vfo HAMLIB_PARAMS((RIG *rig,
2709 vfo_t vfo, const char *func));
2710#else
2711extern HAMLIB_EXPORT(int)
2712rig_set_vfo HAMLIB_PARAMS((RIG *rig,
2713 vfo_t vfo));
2714#endif
2715extern HAMLIB_EXPORT(int)
2716rig_get_vfo HAMLIB_PARAMS((RIG *rig,
2717 vfo_t *vfo));
2718
2719extern HAMLIB_EXPORT(int)
2720rig_get_vfo_info HAMLIB_PARAMS((RIG *rig,
2721 vfo_t vfo,
2722 freq_t *freq,
2723 rmode_t *mode,
2724 pbwidth_t *width,
2725 split_t *split,
2726 int *satmode));
2727
2728extern HAMLIB_EXPORT(int)
2729rig_get_vfo_list HAMLIB_PARAMS((RIG *rig, char *buf, int buflen));
2730
2731extern HAMLIB_EXPORT(int)
2732netrigctl_get_vfo_mode HAMLIB_PARAMS((RIG *rig));
2733
2734extern HAMLIB_EXPORT(int)
2735rig_set_ptt HAMLIB_PARAMS((RIG *rig,
2736 vfo_t vfo,
2737 ptt_t ptt));
2738extern HAMLIB_EXPORT(int)
2739rig_get_ptt HAMLIB_PARAMS((RIG *rig,
2740 vfo_t vfo,
2741 ptt_t *ptt));
2742
2743extern HAMLIB_EXPORT(int)
2744rig_get_dcd HAMLIB_PARAMS((RIG *rig,
2745 vfo_t vfo,
2746 dcd_t *dcd));
2747
2748extern HAMLIB_EXPORT(int)
2749rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig,
2750 vfo_t vfo,
2751 rptr_shift_t rptr_shift));
2752extern HAMLIB_EXPORT(int)
2753rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig,
2754 vfo_t vfo,
2755 rptr_shift_t *rptr_shift));
2756
2757extern HAMLIB_EXPORT(int)
2758rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig,
2759 vfo_t vfo,
2760 shortfreq_t rptr_offs));
2761extern HAMLIB_EXPORT(int)
2762rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig,
2763 vfo_t vfo,
2764 shortfreq_t *rptr_offs));
2765
2766extern HAMLIB_EXPORT(int)
2767rig_set_ctcss_tone HAMLIB_PARAMS((RIG *rig,
2768 vfo_t vfo,
2769 tone_t tone));
2770extern HAMLIB_EXPORT(int)
2771rig_get_ctcss_tone HAMLIB_PARAMS((RIG *rig,
2772 vfo_t vfo,
2773 tone_t *tone));
2774
2775extern HAMLIB_EXPORT(int)
2776rig_set_dcs_code HAMLIB_PARAMS((RIG *rig,
2777 vfo_t vfo,
2778 tone_t code));
2779extern HAMLIB_EXPORT(int)
2780rig_get_dcs_code HAMLIB_PARAMS((RIG *rig,
2781 vfo_t vfo,
2782 tone_t *code));
2783
2784extern HAMLIB_EXPORT(int)
2785rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig,
2786 vfo_t vfo,
2787 tone_t tone));
2788extern HAMLIB_EXPORT(int)
2789rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig,
2790 vfo_t vfo,
2791 tone_t *tone));
2792
2793extern HAMLIB_EXPORT(int)
2794rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig,
2795 vfo_t vfo,
2796 tone_t code));
2797extern HAMLIB_EXPORT(int)
2798rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig,
2799 vfo_t vfo,
2800 tone_t *code));
2801
2802extern HAMLIB_EXPORT(int)
2803rig_set_split_freq HAMLIB_PARAMS((RIG *rig,
2804 vfo_t vfo,
2805 freq_t tx_freq));
2806extern HAMLIB_EXPORT(int)
2807rig_get_split_freq HAMLIB_PARAMS((RIG *rig,
2808 vfo_t vfo,
2809 freq_t *tx_freq));
2810
2811extern HAMLIB_EXPORT(int)
2812rig_set_split_mode HAMLIB_PARAMS((RIG *rig,
2813 vfo_t vfo,
2814 rmode_t tx_mode,
2815 pbwidth_t tx_width));
2816extern HAMLIB_EXPORT(int)
2817rig_get_split_mode HAMLIB_PARAMS((RIG *rig,
2818 vfo_t vfo,
2819 rmode_t *tx_mode,
2820 pbwidth_t *tx_width));
2821
2822extern HAMLIB_EXPORT(int)
2823rig_set_split_freq_mode HAMLIB_PARAMS((RIG *rig,
2824 vfo_t vfo,
2825 freq_t tx_freq,
2826 rmode_t tx_mode,
2827 pbwidth_t tx_width));
2828extern HAMLIB_EXPORT(int)
2829rig_get_split_freq_mode HAMLIB_PARAMS((RIG *rig,
2830 vfo_t vfo,
2831 freq_t *tx_freq,
2832 rmode_t *tx_mode,
2833 pbwidth_t *tx_width));
2834
2835extern HAMLIB_EXPORT(int)
2836rig_set_split_vfo HAMLIB_PARAMS((RIG *,
2837 vfo_t rx_vfo,
2838 split_t split,
2839 vfo_t tx_vfo));
2840extern HAMLIB_EXPORT(int)
2841rig_get_split_vfo HAMLIB_PARAMS((RIG *,
2842 vfo_t rx_vfo,
2843 split_t *split,
2844 vfo_t *tx_vfo));
2845
2846extern HAMLIB_EXPORT(int)
2847rig_set_rit HAMLIB_PARAMS((RIG *rig,
2848 vfo_t vfo,
2849 shortfreq_t rit));
2850extern HAMLIB_EXPORT(int)
2851rig_get_rit HAMLIB_PARAMS((RIG *rig,
2852 vfo_t vfo,
2853 shortfreq_t *rit));
2854
2855extern HAMLIB_EXPORT(int)
2856rig_set_xit HAMLIB_PARAMS((RIG *rig,
2857 vfo_t vfo,
2858 shortfreq_t xit));
2859extern HAMLIB_EXPORT(int)
2860rig_get_xit HAMLIB_PARAMS((RIG *rig,
2861 vfo_t vfo,
2862 shortfreq_t *xit));
2863
2864extern HAMLIB_EXPORT(int)
2865rig_set_ts HAMLIB_PARAMS((RIG *rig,
2866 vfo_t vfo,
2867 shortfreq_t ts));
2868extern HAMLIB_EXPORT(int)
2869rig_get_ts HAMLIB_PARAMS((RIG *rig,
2870 vfo_t vfo,
2871 shortfreq_t *ts));
2872
2873extern HAMLIB_EXPORT(int)
2874rig_power2mW HAMLIB_PARAMS((RIG *rig,
2875 unsigned int *mwpower,
2876 float power,
2877 freq_t freq,
2878 rmode_t mode));
2879extern HAMLIB_EXPORT(int)
2880rig_mW2power HAMLIB_PARAMS((RIG *rig,
2881 float *power,
2882 unsigned int mwpower,
2883 freq_t freq,
2884 rmode_t mode));
2885
2886extern HAMLIB_EXPORT(shortfreq_t)
2887rig_get_resolution HAMLIB_PARAMS((RIG *rig,
2888 rmode_t mode));
2889
2890extern HAMLIB_EXPORT(int)
2891rig_set_level HAMLIB_PARAMS((RIG *rig,
2892 vfo_t vfo,
2893 setting_t level,
2894 value_t val));
2895extern HAMLIB_EXPORT(int)
2896rig_get_level HAMLIB_PARAMS((RIG *rig,
2897 vfo_t vfo,
2898 setting_t level,
2899 value_t *val));
2900
2901#define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s))
2902
2903extern HAMLIB_EXPORT(int)
2904rig_set_parm HAMLIB_PARAMS((RIG *rig,
2905 setting_t parm,
2906 value_t val));
2907extern HAMLIB_EXPORT(int)
2908rig_get_parm HAMLIB_PARAMS((RIG *rig,
2909 setting_t parm,
2910 value_t *val));
2911
2912extern HAMLIB_EXPORT(int)
2913rig_set_conf HAMLIB_PARAMS((RIG *rig,
2914 token_t token,
2915 const char *val));
2916// deprecating rig_get_conf
2917extern HAMLIB_EXPORT(int)
2918rig_get_conf HAMLIB_PARAMS((RIG *rig,
2919 token_t token,
2920 char *val));
2921extern HAMLIB_EXPORT(int)
2922rig_get_conf2 HAMLIB_PARAMS((RIG *rig,
2923 token_t token,
2924 char *val,
2925 int val_len));
2926
2927extern HAMLIB_EXPORT(int)
2928rig_set_powerstat HAMLIB_PARAMS((RIG *rig,
2929 powerstat_t status));
2930extern HAMLIB_EXPORT(int)
2931rig_get_powerstat HAMLIB_PARAMS((RIG *rig,
2932 powerstat_t *status));
2933
2934extern HAMLIB_EXPORT(int)
2935rig_reset HAMLIB_PARAMS((RIG *rig,
2936 reset_t reset)); /* dangerous! */
2937
2938extern HAMLIB_EXPORT(int)
2939rig_set_ext_level HAMLIB_PARAMS((RIG *rig,
2940 vfo_t vfo,
2941 token_t token,
2942 value_t val));
2943extern HAMLIB_EXPORT(int)
2944rig_get_ext_level HAMLIB_PARAMS((RIG *rig,
2945 vfo_t vfo,
2946 token_t token,
2947 value_t *val));
2948
2949extern HAMLIB_EXPORT(int)
2950rig_set_ext_func HAMLIB_PARAMS((RIG *rig,
2951 vfo_t vfo,
2952 token_t token,
2953 int status));
2954extern HAMLIB_EXPORT(int)
2955rig_get_ext_func HAMLIB_PARAMS((RIG *rig,
2956 vfo_t vfo,
2957 token_t token,
2958 int *status));
2959
2960extern HAMLIB_EXPORT(int)
2961rig_set_ext_parm HAMLIB_PARAMS((RIG *rig,
2962 token_t token,
2963 value_t val));
2964extern HAMLIB_EXPORT(int)
2965rig_get_ext_parm HAMLIB_PARAMS((RIG *rig,
2966 token_t token,
2967 value_t *val));
2968
2969extern HAMLIB_EXPORT(int)
2970rig_ext_func_foreach HAMLIB_PARAMS((RIG *rig,
2971 int (*cfunc)(RIG *,
2972 const struct confparams *,
2973 rig_ptr_t),
2974 rig_ptr_t data));
2975extern HAMLIB_EXPORT(int)
2976rig_ext_level_foreach HAMLIB_PARAMS((RIG *rig,
2977 int (*cfunc)(RIG *,
2978 const struct confparams *,
2979 rig_ptr_t),
2980 rig_ptr_t data));
2981extern HAMLIB_EXPORT(int)
2982rig_ext_parm_foreach HAMLIB_PARAMS((RIG *rig,
2983 int (*cfunc)(RIG *,
2984 const struct confparams *,
2985 rig_ptr_t),
2986 rig_ptr_t data));
2987
2988extern HAMLIB_EXPORT(const struct confparams *)
2989rig_ext_lookup HAMLIB_PARAMS((RIG *rig,
2990 const char *name));
2991
2992extern HAMLIB_EXPORT(const struct confparams *)
2993rig_ext_lookup_tok HAMLIB_PARAMS((RIG *rig,
2994 token_t token));
2995extern HAMLIB_EXPORT(token_t)
2996rig_ext_token_lookup HAMLIB_PARAMS((RIG *rig,
2997 const char *name));
2998
2999
3000extern HAMLIB_EXPORT(int)
3001rig_token_foreach HAMLIB_PARAMS((RIG *rig,
3002 int (*cfunc)(const struct confparams *,
3003 rig_ptr_t),
3004 rig_ptr_t data));
3005
3006extern HAMLIB_EXPORT(const struct confparams *)
3007rig_confparam_lookup HAMLIB_PARAMS((RIG *rig,
3008 const char *name));
3009extern HAMLIB_EXPORT(token_t)
3010rig_token_lookup HAMLIB_PARAMS((RIG *rig,
3011 const char *name));
3012
3013extern HAMLIB_EXPORT(int)
3014rig_close HAMLIB_PARAMS((RIG *rig));
3015
3016extern HAMLIB_EXPORT(int)
3017rig_cleanup HAMLIB_PARAMS((RIG *rig));
3018
3019extern HAMLIB_EXPORT(int)
3020rig_set_ant HAMLIB_PARAMS((RIG *rig,
3021 vfo_t vfo,
3022 ant_t ant, /* antenna */
3023 value_t option)); /* optional ant info */
3024extern HAMLIB_EXPORT(int)
3025rig_get_ant HAMLIB_PARAMS((RIG *rig,
3026 vfo_t vfo,
3027 ant_t ant,
3028 value_t *option,
3029 ant_t *ant_curr,
3030 ant_t *ant_tx,
3031 ant_t *ant_rx));
3032
3033extern HAMLIB_EXPORT(setting_t)
3034rig_has_get_level HAMLIB_PARAMS((RIG *rig,
3035 setting_t level));
3036extern HAMLIB_EXPORT(setting_t)
3037rig_has_set_level HAMLIB_PARAMS((RIG *rig,
3038 setting_t level));
3039
3040extern HAMLIB_EXPORT(setting_t)
3041rig_has_get_parm HAMLIB_PARAMS((RIG *rig,
3042 setting_t parm));
3043extern HAMLIB_EXPORT(setting_t)
3044rig_has_set_parm HAMLIB_PARAMS((RIG *rig,
3045 setting_t parm));
3046
3047extern HAMLIB_EXPORT(setting_t)
3048rig_has_get_func HAMLIB_PARAMS((RIG *rig,
3049 setting_t func));
3050extern HAMLIB_EXPORT(setting_t)
3051rig_has_set_func HAMLIB_PARAMS((RIG *rig,
3052 setting_t func));
3053
3054extern HAMLIB_EXPORT(int)
3055rig_set_func HAMLIB_PARAMS((RIG *rig,
3056 vfo_t vfo,
3057 setting_t func,
3058 int status));
3059extern HAMLIB_EXPORT(int)
3060rig_get_func HAMLIB_PARAMS((RIG *rig,
3061 vfo_t vfo,
3062 setting_t func,
3063 int *status));
3064
3065extern HAMLIB_EXPORT(int)
3066rig_send_dtmf HAMLIB_PARAMS((RIG *rig,
3067 vfo_t vfo,
3068 const char *digits));
3069extern HAMLIB_EXPORT(int)
3070rig_recv_dtmf HAMLIB_PARAMS((RIG *rig,
3071 vfo_t vfo,
3072 char *digits,
3073 int *length));
3074
3075extern HAMLIB_EXPORT(int)
3076rig_send_morse HAMLIB_PARAMS((RIG *rig,
3077 vfo_t vfo,
3078 const char *msg));
3079
3080extern HAMLIB_EXPORT(int)
3081rig_stop_morse HAMLIB_PARAMS((RIG *rig,
3082 vfo_t vfo));
3083
3084extern HAMLIB_EXPORT(int)
3085rig_wait_morse HAMLIB_PARAMS((RIG *rig,
3086 vfo_t vfo));
3087
3088extern HAMLIB_EXPORT(int)
3089rig_send_voice_mem HAMLIB_PARAMS((RIG *rig,
3090 vfo_t vfo,
3091 int ch));
3092
3093extern HAMLIB_EXPORT(int)
3094rig_set_bank HAMLIB_PARAMS((RIG *rig,
3095 vfo_t vfo,
3096 int bank));
3097
3098extern HAMLIB_EXPORT(int)
3099rig_set_mem HAMLIB_PARAMS((RIG *rig,
3100 vfo_t vfo,
3101 int ch));
3102extern HAMLIB_EXPORT(int)
3103rig_get_mem HAMLIB_PARAMS((RIG *rig,
3104 vfo_t vfo,
3105 int *ch));
3106
3107extern HAMLIB_EXPORT(int)
3108rig_vfo_op HAMLIB_PARAMS((RIG *rig,
3109 vfo_t vfo,
3110 vfo_op_t op));
3111
3112extern HAMLIB_EXPORT(vfo_op_t)
3113rig_has_vfo_op HAMLIB_PARAMS((RIG *rig,
3114 vfo_op_t op));
3115
3116extern HAMLIB_EXPORT(int)
3117rig_scan HAMLIB_PARAMS((RIG *rig,
3118 vfo_t vfo,
3119 scan_t scan,
3120 int ch));
3121
3122extern HAMLIB_EXPORT(scan_t)
3123rig_has_scan HAMLIB_PARAMS((RIG *rig,
3124 scan_t scan));
3125
3126extern HAMLIB_EXPORT(int)
3127rig_set_channel HAMLIB_PARAMS((RIG *rig,
3128 vfo_t vfo,
3129 const channel_t *chan)); /* mem */
3130extern HAMLIB_EXPORT(int)
3131rig_get_channel HAMLIB_PARAMS((RIG *rig,
3132 vfo_t vfo,
3133 channel_t *chan, int read_only));
3134
3135extern HAMLIB_EXPORT(int)
3136rig_set_chan_all HAMLIB_PARAMS((RIG *rig,
3137 vfo_t vfo,
3138 const channel_t chans[]));
3139extern HAMLIB_EXPORT(int)
3140rig_get_chan_all HAMLIB_PARAMS((RIG *rig,
3141 vfo_t vfo,
3142 channel_t chans[]));
3143
3144extern HAMLIB_EXPORT(int)
3145rig_set_chan_all_cb HAMLIB_PARAMS((RIG *rig,
3146 vfo_t vfo,
3147 chan_cb_t chan_cb,
3148 rig_ptr_t));
3149extern HAMLIB_EXPORT(int)
3150rig_get_chan_all_cb HAMLIB_PARAMS((RIG *rig,
3151 vfo_t vfo,
3152 chan_cb_t chan_cb,
3153 rig_ptr_t));
3154
3155extern HAMLIB_EXPORT(int)
3156rig_set_mem_all_cb HAMLIB_PARAMS((RIG *rig,
3157 vfo_t vfo,
3158 chan_cb_t chan_cb,
3159 confval_cb_t parm_cb,
3160 rig_ptr_t));
3161extern HAMLIB_EXPORT(int)
3162rig_get_mem_all_cb HAMLIB_PARAMS((RIG *rig,
3163 vfo_t vfo,
3164 chan_cb_t chan_cb,
3165 confval_cb_t parm_cb,
3166 rig_ptr_t));
3167
3168extern HAMLIB_EXPORT(int)
3169rig_set_mem_all HAMLIB_PARAMS((RIG *rig,
3170 vfo_t vfo,
3171 const channel_t *chan,
3172 const struct confparams *,
3173 const value_t *));
3174extern HAMLIB_EXPORT(int)
3175rig_get_mem_all HAMLIB_PARAMS((RIG *rig,
3176 vfo_t vfo,
3177 channel_t *chan,
3178 const struct confparams *,
3179 value_t *));
3180
3181extern HAMLIB_EXPORT(const chan_t *)
3182rig_lookup_mem_caps HAMLIB_PARAMS((RIG *rig,
3183 int ch));
3184
3185extern HAMLIB_EXPORT(int)
3186rig_mem_count HAMLIB_PARAMS((RIG *rig));
3187
3188extern HAMLIB_EXPORT(int)
3189rig_set_trn HAMLIB_PARAMS((RIG *rig,
3190 int trn));
3191extern HAMLIB_EXPORT(int)
3192rig_get_trn HAMLIB_PARAMS((RIG *rig,
3193 int *trn));
3194
3195extern HAMLIB_EXPORT(int)
3196rig_set_freq_callback HAMLIB_PARAMS((RIG *,
3197 freq_cb_t,
3198 rig_ptr_t));
3199
3200extern HAMLIB_EXPORT(int)
3201rig_set_mode_callback HAMLIB_PARAMS((RIG *,
3202 mode_cb_t,
3203 rig_ptr_t));
3204extern HAMLIB_EXPORT(int)
3205rig_set_vfo_callback HAMLIB_PARAMS((RIG *,
3206 vfo_cb_t,
3207 rig_ptr_t));
3208
3209extern HAMLIB_EXPORT(int)
3210rig_set_ptt_callback HAMLIB_PARAMS((RIG *,
3211 ptt_cb_t,
3212 rig_ptr_t));
3213
3214extern HAMLIB_EXPORT(int)
3215rig_set_dcd_callback HAMLIB_PARAMS((RIG *,
3216 dcd_cb_t,
3217 rig_ptr_t));
3218
3219extern HAMLIB_EXPORT(int)
3220rig_set_pltune_callback HAMLIB_PARAMS((RIG *,
3221 pltune_cb_t,
3222 rig_ptr_t));
3223
3224extern HAMLIB_EXPORT(int)
3225rig_set_spectrum_callback HAMLIB_PARAMS((RIG *,
3226 spectrum_cb_t,
3227 rig_ptr_t));
3228
3229extern HAMLIB_EXPORT(int)
3230rig_set_twiddle HAMLIB_PARAMS((RIG *rig,
3231 int seconds));
3232
3233extern HAMLIB_EXPORT(int)
3234rig_get_twiddle HAMLIB_PARAMS((RIG *rig,
3235 int *seconds));
3236
3237extern HAMLIB_EXPORT(int)
3238rig_set_uplink HAMLIB_PARAMS((RIG *rig,
3239 int val));
3240
3241extern HAMLIB_EXPORT(const char *)
3242rig_get_info HAMLIB_PARAMS((RIG *rig));
3243
3244extern HAMLIB_EXPORT(const struct rig_caps *)
3245rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model));
3246
3247extern HAMLIB_EXPORT(const freq_range_t *)
3248rig_get_range HAMLIB_PARAMS((const freq_range_t *range_list,
3249 freq_t freq,
3250 rmode_t mode));
3251
3252extern HAMLIB_EXPORT(pbwidth_t)
3253rig_passband_normal HAMLIB_PARAMS((RIG *rig,
3254 rmode_t mode));
3255extern HAMLIB_EXPORT(pbwidth_t)
3256rig_passband_narrow HAMLIB_PARAMS((RIG *rig,
3257 rmode_t mode));
3258extern HAMLIB_EXPORT(pbwidth_t)
3259rig_passband_wide HAMLIB_PARAMS((RIG *rig,
3260 rmode_t mode));
3261
3262extern HAMLIB_EXPORT(const char *)
3263rigerror HAMLIB_PARAMS((int errnum));
3264extern HAMLIB_EXPORT(const char *)
3265rigerror2 HAMLIB_PARAMS((int errnum));
3266
3267extern HAMLIB_EXPORT(int)
3268rig_setting2idx HAMLIB_PARAMS((setting_t s));
3269
3270#define HAMLIB_SETTINGS_FILE "hamlib_settings"
3271
3272extern HAMLIB_EXPORT(setting_t)
3273rig_idx2setting(int i);
3274/*
3275 * Even if these functions are prefixed with "rig_", they are not rig specific
3276 * Maybe "hamlib_" would have been better. Let me know. --SF
3277 */
3278extern HAMLIB_EXPORT(void)
3279rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
3280
3281extern HAMLIB_EXPORT(void)
3282rig_set_debug_time_stamp HAMLIB_PARAMS((int flag));
3283
3284#define rig_set_debug_level(level) rig_set_debug(level)
3285
3286extern HAMLIB_EXPORT(int)
3287rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
3288
3289
3290extern HAMLIB_EXPORT(void)add2debugmsgsave(const char *s);
3291// this needs to be fairly big to avoid compiler warnings
3292extern HAMLIB_EXPORT_VAR(char) debugmsgsave[DEBUGMSGSAVE_SIZE]; // last debug msg
3293extern HAMLIB_EXPORT_VAR(char) debugmsgsave2[DEBUGMSGSAVE_SIZE]; // last-1 debug msg
3294// debugmsgsave3 is deprecated
3295extern HAMLIB_EXPORT_VAR(char) debugmsgsave3[DEBUGMSGSAVE_SIZE]; // last-2 debug msg
3296#ifndef __cplusplus
3297#ifdef __GNUC__
3298// doing the debug macro with a dummy sprintf allows gcc to check the format string
3299#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)
3300#endif
3301#endif
3302
3303// Measuring elapsed time -- local variable inside function when macro is used
3304#define ELAPSED1 struct timespec __begin; elapsed_ms(&__begin, HAMLIB_ELAPSED_SET);
3305#define ELAPSED2 rig_debug(RIG_DEBUG_TRACE, "%.*s%d:%s: elapsed=%.0lfms\n", rig->state.depth, spaces(), rig->state.depth, __func__, elapsed_ms(&__begin, HAMLIB_ELAPSED_GET));
3306
3307// use this instead of snprintf for automatic detection of buffer limit
3308#define SNPRINTF(s,n,...) { snprintf(s,n,##__VA_ARGS__);if (strlen(s) > n-1) fprintf(stderr,"****** %s(%d): buffer overflow ******\n", __func__, __LINE__); }
3309
3310extern HAMLIB_EXPORT(void)
3311rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level,
3312 const char *fmt, ...));
3313
3314extern HAMLIB_EXPORT(vprintf_cb_t)
3315rig_set_debug_callback HAMLIB_PARAMS((vprintf_cb_t cb,
3316 rig_ptr_t arg));
3317
3318extern HAMLIB_EXPORT(FILE *)
3319rig_set_debug_file HAMLIB_PARAMS((FILE *stream));
3320
3321extern HAMLIB_EXPORT(int)
3322rig_register HAMLIB_PARAMS((const struct rig_caps *caps));
3323
3324extern HAMLIB_EXPORT(int)
3325rig_unregister HAMLIB_PARAMS((rig_model_t rig_model));
3326
3327extern HAMLIB_EXPORT(int)
3328rig_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rig_caps *, rig_ptr_t),
3329 rig_ptr_t data));
3330
3331extern HAMLIB_EXPORT(int)
3332rig_list_foreach_model HAMLIB_PARAMS((int (*cfunc)(const rig_model_t rig_model, rig_ptr_t),
3333 rig_ptr_t data));
3334
3335extern HAMLIB_EXPORT(int)
3336rig_load_backend HAMLIB_PARAMS((const char *be_name));
3337
3338extern HAMLIB_EXPORT(int)
3339rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model));
3340
3341extern HAMLIB_EXPORT(int)
3342rig_load_all_backends HAMLIB_PARAMS((void));
3343
3344typedef int (*rig_probe_func_t)(const hamlib_port_t *, rig_model_t, rig_ptr_t);
3345
3346extern HAMLIB_EXPORT(int)
3347rig_probe_all HAMLIB_PARAMS((hamlib_port_t *p,
3348 rig_probe_func_t,
3349 rig_ptr_t));
3350
3351extern HAMLIB_EXPORT(rig_model_t)
3352rig_probe HAMLIB_PARAMS((hamlib_port_t *p));
3353
3354
3355/* Misc calls */
3356extern HAMLIB_EXPORT(const char *) rig_strrmode(rmode_t mode);
3357extern HAMLIB_EXPORT(int) rig_strrmodes(rmode_t modes, char *buf, int buflen);
3358extern HAMLIB_EXPORT(const char *) rig_strvfo(vfo_t vfo);
3359extern HAMLIB_EXPORT(const char *) rig_strfunc(setting_t);
3360extern HAMLIB_EXPORT(const char *) rig_strlevel(setting_t);
3361extern HAMLIB_EXPORT(const char *) rig_strparm(setting_t);
3362extern HAMLIB_EXPORT(const char *) rig_stragclevel(enum agc_level_e level);
3363extern HAMLIB_EXPORT(enum agc_level_e) rig_levelagcstr (char *agcString);
3364extern HAMLIB_EXPORT(enum agc_level_e) rig_levelagcvalue (int agcValue);
3365extern HAMLIB_EXPORT(value_t) rig_valueagclevel (enum agc_level_e agcLevel);
3366extern HAMLIB_EXPORT(const char *) rig_strptrshift(rptr_shift_t);
3367extern HAMLIB_EXPORT(const char *) rig_strvfop(vfo_op_t op);
3368extern HAMLIB_EXPORT(const char *) rig_strscan(scan_t scan);
3369extern HAMLIB_EXPORT(const char *) rig_strstatus(enum rig_status_e status);
3370extern HAMLIB_EXPORT(const char *) rig_strmtype(chan_type_t mtype);
3371extern HAMLIB_EXPORT(const char *) rig_strspectrummode(enum rig_spectrum_mode_e mode);
3372
3373extern HAMLIB_EXPORT(rmode_t) rig_parse_mode(const char *s);
3374extern HAMLIB_EXPORT(vfo_t) rig_parse_vfo(const char *s);
3375extern HAMLIB_EXPORT(setting_t) rig_parse_func(const char *s);
3376extern HAMLIB_EXPORT(setting_t) rig_parse_level(const char *s);
3377extern HAMLIB_EXPORT(setting_t) rig_parse_parm(const char *s);
3378extern HAMLIB_EXPORT(vfo_op_t) rig_parse_vfo_op(const char *s);
3379extern HAMLIB_EXPORT(scan_t) rig_parse_scan(const char *s);
3380extern HAMLIB_EXPORT(rptr_shift_t) rig_parse_rptr_shift(const char *s);
3381extern HAMLIB_EXPORT(chan_type_t) rig_parse_mtype(const char *s);
3382
3383extern HAMLIB_EXPORT(const char *) rig_license HAMLIB_PARAMS((void));
3384extern HAMLIB_EXPORT(const char *) rig_version HAMLIB_PARAMS((void));
3385extern HAMLIB_EXPORT(const char *) rig_copyright HAMLIB_PARAMS((void));
3386
3387extern HAMLIB_EXPORT(void) rig_no_restore_ai(void);
3388
3389extern HAMLIB_EXPORT(int) rig_get_cache_timeout_ms(RIG *rig, hamlib_cache_t selection);
3390extern HAMLIB_EXPORT(int) rig_set_cache_timeout_ms(RIG *rig, hamlib_cache_t selection, int ms);
3391
3392extern HAMLIB_EXPORT(int) rig_set_vfo_opt(RIG *rig, int status);
3393extern 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);
3394extern HAMLIB_EXPORT(int) rig_get_rig_info(RIG *rig, char *response, int max_response_len);
3395extern 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);
3396
3397extern 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);
3398extern 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);
3399
3400typedef unsigned long rig_useconds_t;
3401extern HAMLIB_EXPORT(int) hl_usleep(rig_useconds_t msec);
3402
3403extern HAMLIB_EXPORT(int) rig_cookie(RIG *rig, enum cookie_e cookie_cmd, char *cookie, int cookie_len);
3404
3405extern HAMLIB_EXPORT(int) rig_password(RIG *rig, const char *key1);
3406extern HAMLIB_EXPORT(void) rig_password_generate_secret(char *pass,
3407 char result[HAMLIB_SECRET_LENGTH + 1]);
3408extern HAMLIB_EXPORT(int) rig_send_raw(RIG *rig, const unsigned char* send, int send_len, unsigned char* reply, int reply_len, unsigned char *term);
3409
3410extern HAMLIB_EXPORT(int)
3411longlat2locator HAMLIB_PARAMS((double longitude,
3412 double latitude,
3413 char *locator_res,
3414 int pair_count));
3415
3416extern HAMLIB_EXPORT(int)
3417locator2longlat HAMLIB_PARAMS((double *longitude,
3418 double *latitude,
3419 const char *locator));
3420
3421extern HAMLIB_EXPORT(char*) rig_make_md5(char *pass);
3422
3423extern HAMLIB_EXPORT(int) rig_set_lock_mode(RIG *rig, int lock);
3424extern HAMLIB_EXPORT(int) rig_get_lock_mode(RIG *rig, int *lock);
3425
3426
3428
3429__END_DECLS
3430
3431#endif /* _RIG_H */
3432
setting_t rig_parse_parm(const char *s)
Convert alpha string to RIG_PARM_...
Definition: misc.c:1167
vfo_t rig_parse_vfo(const char *s)
Convert alpha string to enum RIG_VFO_...
Definition: misc.c:638
const char * rig_strparm(setting_t parm)
Convert enum RIG_PARM_... to alpha string.
Definition: misc.c:1217
enum agc_level_e rig_levelagcstr(char *agcString)
Convert AGC string... to agc_level_e.
Definition: misc.c:1366
const char * rig_strspectrummode(enum rig_spectrum_mode_e mode)
Convert enum RIG_SPECTRUM_MODE_... to alpha string.
Definition: misc.c:1669
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:570
const char * rig_strvfo(vfo_t vfo)
Convert enum RIG_VFO_... to alpha string.
Definition: misc.c:667
const char * rig_strscan(scan_t rscan)
Convert enum RIG_SCAN_... to alpha string.
Definition: misc.c:1507
rptr_shift_t rig_parse_rptr_shift(const char *s)
Convert alpha char to enum RIG_RPT_SHIFT_...
Definition: misc.c:1561
const char * rig_strfunc(setting_t func)
Convert enum RIG_FUNC_... to alpha string.
Definition: misc.c:819
value_t rig_valueagclevel(enum agc_level_e agcLevel)
Convert a enum agc_level_e to value.
Definition: misc.c:1315
const char * rig_strptrshift(rptr_shift_t shift)
convert enum RIG_RPT_SHIFT_... to printable character
Definition: misc.c:1536
uint64_t rig_idx2setting(int i)
Definition: misc.c:757
chan_type_t rig_parse_mtype(const char *s)
Convert alpha string to enum RIG_MTYPE_...
Definition: misc.c:1604
const char * rig_stragclevel(enum agc_level_e level)
Convert enum RIG_AGC_... to alpha string.
Definition: misc.c:1290
enum agc_level_e rig_levelagcvalue(int agcValue)
Convert a value to agc_level_e – constrains the range.
Definition: misc.c:1335
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:968
scan_t rig_parse_scan(const char *s)
Convert alpha string to enum RIG_SCAN_...
Definition: misc.c:1482
const char * rig_strrmode(rmode_t mode)
Convert enum RIG_MODE to alpha string.
Definition: misc.c:538
setting_t rig_parse_func(const char *s)
Convert alpha string to enum RIG_FUNC_...
Definition: misc.c:769
const char * rig_strmtype(chan_type_t mtype)
Convert enum RIG_MTYPE_... to alpha string.
Definition: misc.c:1629
rmode_t rig_parse_mode(const char *s)
Convert alpha string to enum RIG_MODE.
Definition: misc.c:512
const char * rig_strvfop(vfo_op_t op)
Convert enum RIG_OP_... to alpha string.
Definition: misc.c:1437
const char * rig_strlevel(setting_t level)
Convert enum RIG_LEVEL_... to alpha string.
Definition: misc.c:1049
vfo_op_t rig_parse_vfo_op(const char *s)
Convert alpha string to enum RIG_OP_...
Definition: misc.c:1412
const char * rig_get_info(RIG *rig)
get general information from the radio
Definition: rig.c:6729
shortfreq_t tuning_step
Definition: rig.h:1476
rmode_t mode
Definition: rig.h:1464
int rig_set_vfo(RIG *rig, vfo_t vfo)
set the current VFO
Definition: rig.c:2655
unsigned int vfo_t
VFO definition.
Definition: rig.h:467
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:4673
int rig_set_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t val)
set a radio level extra parameter
Definition: settings.c:613
int rig_send_dtmf(RIG *rig, vfo_t vfo, const char *digits)
send DTMF digits
Definition: rig.c:6200
int rig_set_twiddle(RIG *rig, int seconds)
timeout (secs) to stop rigctld when VFO is manually changed
Definition: rig.c:1578
int rig_get_rig_info(RIG *rig, char *response, int max_response_len)
get freq/mode/width for requested VFO
Definition: rig.c:6798
tone_t ctcss_tone
Definition: rig.h:1481
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:3466
size_t spectrum_data_length
Definition: rig.h:1743
pbwidth_t tx_width
Definition: rig.h:1469
vfo_t vfo
Definition: rig.h:1461
value_t levels[64]
Definition: rig.h:1480
int startc
Definition: rig.h:1575
serial_parity_e
Serial parity.
Definition: rig.h:285
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:4893
int rig_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
Definition: rig.c:2349
int val
Definition: rig.h:1628
shortfreq_t rptr_offs
Definition: rig.h:1475
freq_t startf
Definition: rig.h:1342
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:243
int rig_set_channel(RIG *rig, vfo_t vfo, const channel_t *chan)
set channel data
Definition: mem.c:685
freq_t low_edge_freq
Definition: rig.h:1740
const char * combostr[RIG_COMBO_MAX]
Definition: rig.h:819
rmode_t modes
Definition: rig.h:1409
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:4733
dcd_e
DCD status.
Definition: rig.h:605
vfo_t tx_vfo
Definition: rig.h:1472
int rig_set_freq_callback(RIG *rig, freq_cb_t cb, rig_ptr_t arg)
set the callback for freq events
Definition: event.c:359
hamlib_band_t
Band enumeration.
Definition: rig.h:721
const char * hamlib_copyright2
Hamlib copyright notice.
Definition: rig.c:105
int rig_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs)
get the current repeater offset
Definition: rig.c:3808
int rig_set_powerstat(RIG *rig, powerstat_t status)
turn on/off the radio
Definition: rig.c:5806
int rig_get_powerstat(RIG *rig, powerstat_t *status)
get the on/off status of the radio
Definition: rig.c:5844
int rig_set_dcs_sql(RIG *rig, vfo_t vfo, tone_t code)
set the current DCS code
Definition: tones.c:489
serial_control_state_e
Serial control state.
Definition: rig.h:307
int rig_set_mem(RIG *rig, vfo_t vfo, int ch)
set the current memory channel number
Definition: mem.c:69
freq_t endf
Definition: rig.h:1343
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:5653
setting_t rig_has_set_func(RIG *rig, setting_t func)
check ability of radio functions
Definition: settings.c:445
unsigned tx_vfo
Definition: rig.h:1515
int rig_get_vfo(RIG *rig, vfo_t *vfo)
get the current VFO
Definition: rig.c:2806
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:4555
uint64_t rmode_t
Radio mode.
Definition: rig.h:1249
int rig_set_vfo_callback(RIG *rig, vfo_cb_t cb, rig_ptr_t arg)
set the callback for vfo events
Definition: event.c:415
shortfreq_t pbwidth_t
Definition: rig.h:599
int data_level_min
Definition: rig.h:1730
int rig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
set a radio level setting
Definition: settings.c:72
int rig_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit)
get the current RIT offset
Definition: rig.c:5105
int rig_cleanup(RIG *rig)
release a rig handle and free associated memory
Definition: rig.c:1536
rig_type_t
Rig type flags.
Definition: rig.h:317
const char * tooltip
Definition: rig.h:809
struct confparams::@0::@2 c
value_t max
Definition: rig.h:1611
unsigned tx_freq
Definition: rig.h:1510
tone_t dcs_code
Definition: rig.h:1483
setting_t funcs
Definition: rig.h:1479
int rig_get_mem(RIG *rig, vfo_t vfo, int *ch)
get the current memory channel number
Definition: mem.c:132
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
enum rig_port_e rig_port_t
Port type.
struct ext_list * ext_levels
Definition: rig.h:1488
unsigned mode
Definition: rig.h:1507
split_t
Split mode.
Definition: rig.h:396
int rig_get_vfo_list(RIG *rig, char *buf, int buflen)
get list of available vfos
Definition: rig.c:6958
unsigned dcs_code
Definition: rig.h:1525
float val
Definition: rig.h:1658
rptr_shift_t
Repeater shift type.
Definition: rig.h:386
const char * rig_license()
get the Hamlib license
Definition: rig.c:7012
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:551
char * s
Definition: rig.h:933
scan_t rig_has_scan(RIG *rig, scan_t scan)
check availability of scanning functions
Definition: rig.c:6097
const char * dflt
Definition: rig.h:810
ptt_type_t
PTT type.
Definition: rig.h:645
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:6992
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
token_t rig_token_lookup(RIG *rig, const char *name)
lookup a token id
Definition: conf.c:1208
int rig_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS squelch
Definition: tones.c:360
ann_t
Announce.
Definition: rig.h:830
int rig_set_dcs_code(RIG *rig, vfo_t vfo, tone_t code)
set the current encoding DCS code
Definition: tones.c:228
int rig_set_dcd_callback(RIG *rig, dcd_cb_t cb, rig_ptr_t arg)
set the callback for dcd events
Definition: event.c:471
int rig_get_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t *val)
get the value of a level extra parameter
Definition: settings.c:679
int rig_get_channel(RIG *rig, vfo_t vfox, channel_t *chan, int read_only)
get channel data
Definition: mem.c:829
int rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
get the frequency of the target VFO
Definition: rig.c:1936
int low_power
Definition: rig.h:1345
int rig_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
activate/de-activate functions of radio
Definition: settings.c:476
int rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
get the status of the PTT
Definition: rig.c:3183
float min
Definition: rig.h:814
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:5709
int rig_set_bank(RIG *rig, vfo_t vfo, int bank)
set the current memory bank
Definition: mem.c:195
unsigned rit
Definition: rig.h:1519
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:7022
int id
Definition: rig.h:1728
unsigned dcs_sql
Definition: rig.h:1526
unsigned rptr_offs
Definition: rig.h:1517
float f
Definition: rig.h:932
int rig_get_ctcss_sql(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS squelch
Definition: tones.c:427
FILE * rig_set_debug_file(FILE *stream)
Change the output stream from stderr a different stream.
Definition: debug.c:324
int rig_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit)
get the current XIT offset
Definition: rig.c:5253
enum rig_spectrum_mode_e spectrum_mode
Definition: rig.h:1735
tone_t ctcss_sql
Definition: rig.h:1482
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:529
int rig_get_parm(RIG *rig, setting_t parm, value_t *val)
get the value of a parameter
Definition: settings.c:263
value_t step
Definition: rig.h:1612
int rig_get_trn(RIG *rig, int *trn)
get the current transceive mode
Definition: event.c:586
double signal_strength_max
Definition: rig.h:1733
int rig_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs)
set the repeater offset
Definition: rig.c:3738
int rig_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS sub-tone frequency
Definition: tones.c:165
unsigned bank_num
Definition: rig.h:1503
int rig_set_ext_func(RIG *rig, vfo_t vfo, token_t token, int status)
set a radio function extra parameter
Definition: settings.c:744
setting_t rig_has_set_level(RIG *rig, setting_t level)
check settable ability of level settings
Definition: settings.c:327
setting_t levels
Definition: rig.h:1522
rig_parm_e
Rig Parameters.
Definition: rig.h:1040
int rig_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option)
set the antenna
Definition: rig.c:5482
char * label
Definition: rig.h:1349
unsigned width
Definition: rig.h:1508
void rig_set_debug_time_stamp(int flag)
Enable or disable the time stamp on debugging output.
Definition: debug.c:178
shortfreq_t xit
Definition: rig.h:1478
freq_t center_freq
Definition: rig.h:1737
shortfreq_t rig_get_resolution(RIG *rig, rmode_t mode)
get the best frequency resolution of the rig
Definition: rig.c:5765
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:6890
pbwidth_t rig_passband_wide(RIG *rig, rmode_t mode)
get the wide passband of a mode
Definition: rig.c:2598
int hl_usleep(rig_useconds_t usec)
provide sleep and usleep replacements
Definition: sleep.c:52
token_t token
Definition: rig.h:806
uint64_t setting_t
Setting.
Definition: rig.h:1091
int bank_num
Definition: rig.h:1460
powerstat_t
Radio power state.
Definition: rig.h:661
freq_t span_freq
Definition: rig.h:1738
pbwidth_t width
Definition: rig.h:1465
multicast_item_e
Multicast data items 3 different data item can be included in the multicast JSON.
Definition: rig.h:1071
struct cal_table::@3 table[HAMLIB_MAX_CAL_LENGTH]
setting_t rig_has_get_func(RIG *rig, setting_t func)
check ability of radio functions
Definition: settings.c:415
int rig_set_uplink(RIG *rig, int val)
For GPredict to avoid reading frequency on uplink VFO.
Definition: rig.c:1603
unsigned rptr_shift
Definition: rig.h:1516
enum dcd_e dcd_t
DCD status.
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:549
chan_type_t type
Definition: rig.h:1577
double signal_strength_min
Definition: rig.h:1732
int rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq)
set the split frequencies
Definition: rig.c:3883
int rig_probe_all(hamlib_port_t *port, rig_probe_func_t cfunc, rig_ptr_t data)
try to guess rigs
Definition: rig.c:5958
rig_errcode_e
Definition: rig.h:146
unsigned tx_width
Definition: rig.h:1512
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:788
freq_t freq
Definition: rig.h:1463
struct cal_table_float::@4 table[HAMLIB_MAX_CAL_LENGTH]
pbwidth_t width
Definition: rig.h:1410
scan_t
Rig Scan operation.
Definition: rig.h:750
int rig_send_voice_mem(RIG *rig, vfo_t vfo, int ch)
send voice memory content
Definition: rig.c:6591
int rig_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length)
receive DTMF digits
Definition: rig.c:6276
int rig_set_mode_callback(RIG *rig, mode_cb_t cb, rig_ptr_t arg)
set the callback for mode events
Definition: event.c:387
int rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
set the frequency of the target VFO
Definition: rig.c:1711
const char * cs
Definition: rig.h:934
int rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
set PTT on/off
Definition: rig.c:2889
int rig_get_conf(RIG *rig, token_t token, char *val)
get the value of a configuration parameter
Definition: conf.c:1292
int raw
Definition: rig.h:1627
float step
Definition: rig.h:816
double freq_t
Frequency type,.
Definition: rig.h:407
int rig_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch)
perform Memory/VFO operations
Definition: rig.c:6129
cookie_e
Rig Cookie enumerations.
Definition: rig.h:1061
token_t token
Definition: rig.h:1442
int rig_send_morse(RIG *rig, vfo_t vfo, const char *msg)
send morse code
Definition: rig.c:6351
const struct confparams * rig_ext_lookup_tok(RIG *rig, token_t token)
lookup ext token, return pointer to confparams struct.
Definition: ext.c:279
rptr_shift_t rptr_shift
Definition: rig.h:1474
unsigned ctcss_sql
Definition: rig.h:1524
int rig_setting2idx(setting_t s)
basically convert setting_t expressed 2^n to n
Definition: settings.c:934
int rig_get_ext_parm(RIG *rig, token_t token, value_t *val)
get the value of a parm extra parameter
Definition: settings.c:907
unsigned tx_mode
Definition: rig.h:1511
ant_t ant
Definition: rig.h:1348
int rig_mem_count(RIG *rig)
get memory channel count
Definition: mem.c:1653
ptt_t
PTT status.
Definition: rig.h:632
const chan_t * rig_lookup_mem_caps(RIG *rig, int ch)
lookup the memory type and capabilities
Definition: mem.c:1587
shortfreq_t rit
Definition: rig.h:1477
char channel_desc[HAMLIB_MAXCHANDESC]
Definition: rig.h:1487
int high_power
Definition: rig.h:1346
value_t min
Definition: rig.h:1610
RIG * rig_init(rig_model_t rig_model)
allocate a new RIG handle
Definition: rig.c:486
unsigned freq
Definition: rig.h:1506
setting_t rig_has_get_parm(RIG *rig, setting_t parm)
check retrieval ability of parameter settings
Definition: settings.c:357
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_set_pltune_callback(RIG *rig, pltune_cb_t cb, rig_ptr_t arg)
set the callback for pipelined tuning module
Definition: event.c:501
unsigned char * spectrum_data
Definition: rig.h:1744
rmode_t tx_mode
Definition: rig.h:1468
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:6976
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_ext_parm(RIG *rig, token_t token, value_t val)
set a radio parm extra parameter
Definition: settings.c:875
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:2200
vfo_op_t
VFO operation.
Definition: rig.h:697
int rig_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts)
get the current Tuning Step
Definition: rig.c:5401
setting_t funcs
Definition: rig.h:1521
split_t split
Definition: rig.h:1471
signed long shortfreq_t
Short frequency type.
Definition: rig.h:429
token_t rig_ext_token_lookup(RIG *rig, const char *name)
Simple lookup returning token id associated with name.
Definition: ext.c:323
rmode_t modes
Definition: rig.h:1374
freq_t tx_freq
Definition: rig.h:1467
vprintf_cb_t rig_set_debug_callback(vprintf_cb_t cb, rig_ptr_t arg)
Set callback to handle debugging messages.
Definition: debug.c:306
unsigned ctcss_tone
Definition: rig.h:1523
const char * rig_copyright()
get the Hamlib copyright
Definition: rig.c:7032
int rig_set_conf(RIG *rig, token_t token, const char *val)
set a radio configuration parameter
Definition: conf.c:1239
int rig_need_debug(enum rig_debug_level_e debug_level)
Test if a given debug level is active.
Definition: debug.c:164
rig_port_e
Port type.
Definition: rig.h:264
int rig_wait_morse(RIG *rig, vfo_t vfo)
wait morse code
Definition: rig.c:6527
int rig_close(RIG *rig)
close the communication to the rig
Definition: rig.c:1378
pbwidth_t rig_passband_narrow(RIG *rig, rmode_t mode)
get the narrow passband of a mode
Definition: rig.c:2546
serial_handshake_e
Serial handshake.
Definition: rig.h:297
shortfreq_t ts
Definition: rig.h:1375
unsigned ext_levels
Definition: rig.h:1530
int rig_get_ext_func(RIG *rig, vfo_t vfo, token_t token, int *status)
get the value of a function extra parameter
Definition: settings.c:810
int size
Definition: rig.h:1655
ant_t ant
Definition: rig.h:1462
agc_level_e
AGC delay settings.
Definition: rig.h:335
dcd_type_t
DCD type.
Definition: rig.h:616
unsigned vfo
Definition: rig.h:1504
int rig_get_chan_all(RIG *rig, vfo_t vfo, channel_t chans[])
get all channel data
Definition: mem.c:1210
channel_cap_t mem_caps
Definition: rig.h:1579
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:6696
int rig_set_ptt_callback(RIG *rig, ptt_cb_t cb, rig_ptr_t arg)
set the callback for ptt events
Definition: event.c:443
pbwidth_t rig_passband_normal(RIG *rig, rmode_t mode)
get the normal passband of a mode
Definition: rig.c:2495
rig_debug_level_e
Hamlib debug levels.
Definition: rig.h:197
const char * label
Definition: rig.h:808
#define RIG_SETTING_MAX
Maximum # of rig settings.
Definition: rig.h:1097
unsigned int flags
Definition: rig.h:1486
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:386
struct s_rig RIG
Rig structure definition (see rig for details).
Definition: rig.h:218
const struct confparams * rig_confparam_lookup(RIG *rig, const char *name)
lookup a confparam struct
Definition: conf.c:1152
int rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit)
set the RIT
Definition: rig.c:5034
unsigned ant
Definition: rig.h:1505
int rig_get_twiddle(RIG *rig, int *seconds)
get the twiddle timeout value (secs)
Definition: rig.c:1629
int rig_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts)
set the Tuning Step
Definition: rig.c:5330
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:5561
int rig_open(RIG *rig)
open the communication to the rig
Definition: rig.c:798
int rig_set_parm(RIG *rig, setting_t parm, value_t val)
set a radio parameter
Definition: settings.c:229
unsigned split
Definition: rig.h:1514
int data_level_max
Definition: rig.h:1731
int rig_get_dcs_code(RIG *rig, vfo_t vfo, tone_t *code)
get the current encoding DCS code
Definition: tones.c:290
int endc
Definition: rig.h:1576
vfo_t vfo
Definition: rig.h:1347
int rig_stop_morse(RIG *rig, vfo_t vfo)
stop morse code
Definition: rig.c:6423
unsigned scan_group
Definition: rig.h:1527
unsigned flags
Definition: rig.h:1528
setting_t rig_has_get_level(RIG *rig, setting_t level)
check retrieval ability of level settings
Definition: settings.c:297
uint64_t rig_level_e
Rig Level Settings.
Definition: rig.h:952
long token_t
configuration token
Definition: rig.h:766
float max
Definition: rig.h:815
int rig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
get the value of a level
Definition: settings.c:142
const char * rigerror2(int errnum)
get string describing the error code
Definition: rig.c:396
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:4200
int rig_reset(RIG *rig, reset_t reset)
reset the radio
Definition: rig.c:5886
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:1090
int rig_set_trn(RIG *rig, int trn)
control the transceive mode
Definition: event.c:562
vfo_op_t rig_has_vfo_op(RIG *rig, vfo_op_t op)
check retrieval ability of VFO operations
Definition: rig.c:5987
unsigned int ant_t
Antenna typedef.
Definition: rig.h:887
int rig_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)
get the current repeater shift
Definition: rig.c:3662
int scan_group
Definition: rig.h:1485
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:4419
int rig_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
set the repeater shift
Definition: rig.c:3591
const char * name
Definition: rig.h:807
reset_t
Reset operation.
Definition: rig.h:673
int channel_num
Definition: rig.h:1459
freq_t high_edge_freq
Definition: rig.h:1741
tone_t dcs_sql
Definition: rig.h:1484
unsigned tuning_step
Definition: rig.h:1518
int rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq)
get the current split frequencies
Definition: rig.c:4048
void rig_set_debug(enum rig_debug_level_e debug_level)
Change the current debug level.
Definition: debug.c:148
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:6660
unsigned xit
Definition: rig.h:1520
int rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op)
perform Memory/VFO operations
Definition: rig.c:6018
rig_status_e
Development status of the backend.
Definition: rig.h:366
int rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit)
set the XIT
Definition: rig.c:5182
struct confparams::@0::@1 n
int raw
Definition: rig.h:1657
signed int i
Definition: rig.h:931
enum rig_conf_e type
Definition: rig.h:811
union confparams::@0 u
int size
Definition: rig.h:1625
void rig_debug(enum rig_debug_level_e debug_level, const char *fmt,...)
Print debugging messages through stderr by default.
Definition: debug.c:196
rmode_t modes
Definition: rig.h:1344
value_t val
Definition: rig.h:1443
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:7061
rig_spectrum_mode_e
Spectrum scope modes.
Definition: rig.h:1698
rig_model_t rig_probe(hamlib_port_t *port)
try to guess a rig
Definition: rig.c:5930
chan_type_t
Memory channel type definition.
Definition: rig.h:1549
unsigned channel_desc
Definition: rig.h:1529
@ RIG_PARITY_MARK
Definition: rig.h:289
@ RIG_PARITY_NONE
Definition: rig.h:286
@ RIG_PARITY_EVEN
Definition: rig.h:288
@ RIG_PARITY_SPACE
Definition: rig.h:290
@ RIG_PARITY_ODD
Definition: rig.h:287
@ RIG_DCD_ON
Definition: rig.h:607
@ RIG_DCD_OFF
Definition: rig.h:606
@ RIG_BAND_AIR
Definition: rig.h:736
@ RIG_BAND_UNUSED
Definition: rig.h:735
@ RIG_BAND_20M
Definition: rig.h:727
@ RIG_BAND_12M
Definition: rig.h:730
@ RIG_BAND_60M
Definition: rig.h:724
@ RIG_BAND_10M
Definition: rig.h:731
@ RIG_BAND_430MHZ
Definition: rig.h:738
@ RIG_BAND_40M
Definition: rig.h:725
@ RIG_BAND_15M
Definition: rig.h:729
@ RIG_BAND_GEN
Definition: rig.h:733
@ RIG_BAND_30M
Definition: rig.h:726
@ RIG_BAND_144MHZ
Definition: rig.h:737
@ RIG_BAND_80M
Definition: rig.h:723
@ RIG_BAND_MW
Definition: rig.h:734
@ RIG_BAND_6M
Definition: rig.h:732
@ RIG_BAND_17M
Definition: rig.h:728
@ RIG_BAND_160M
Definition: rig.h:722
@ RIG_SIGNAL_ON
Definition: rig.h:309
@ RIG_SIGNAL_OFF
Definition: rig.h:310
@ RIG_SIGNAL_UNSET
Definition: rig.h:308
@ RIG_FLAG_COMPUTER
Definition: rig.h:323
@ RIG_FLAG_TUNER
Definition: rig.h:328
@ RIG_FLAG_SCANNER
Definition: rig.h:320
@ RIG_FLAG_TRANSMITTER
Definition: rig.h:319
@ RIG_FLAG_MOBILE
Definition: rig.h:321
@ RIG_FLAG_TRUNKING
Definition: rig.h:324
@ RIG_FLAG_APRS
Definition: rig.h:325
@ RIG_FLAG_TNC
Definition: rig.h:326
@ RIG_FLAG_HANDHELD
Definition: rig.h:322
@ RIG_FLAG_DXCLUSTER
Definition: rig.h:327
@ RIG_FLAG_RECEIVER
Definition: rig.h:318
@ RIG_SPLIT_ON
Definition: rig.h:398
@ RIG_SPLIT_OFF
Definition: rig.h:397
@ RIG_RPT_SHIFT_PLUS
Definition: rig.h:389
@ RIG_RPT_SHIFT_MINUS
Definition: rig.h:388
@ RIG_RPT_SHIFT_NONE
Definition: rig.h:387
@ RIG_PTT_RIG
Definition: rig.h:647
@ RIG_PTT_RIG_MICDATA
Definition: rig.h:651
@ RIG_PTT_SERIAL_DTR
Definition: rig.h:648
@ RIG_PTT_NONE
Definition: rig.h:646
@ RIG_PTT_PARALLEL
Definition: rig.h:650
@ RIG_PTT_GPION
Definition: rig.h:654
@ RIG_PTT_GPIO
Definition: rig.h:653
@ RIG_PTT_CM108
Definition: rig.h:652
@ RIG_PTT_SERIAL_RTS
Definition: rig.h:649
@ RIG_ANN_RXMODE
Definition: rig.h:834
@ RIG_ANN_OFF
Definition: rig.h:832
@ RIG_ANN_ENG
Definition: rig.h:836
@ RIG_ANN_FREQ
Definition: rig.h:833
@ RIG_ANN_NONE
Definition: rig.h:831
@ RIG_ANN_CW
Definition: rig.h:835
@ RIG_ANN_JAP
Definition: rig.h:837
@ RIG_PARM_BEEP
Definition: rig.h:1045
@ RIG_PARM_TIME
Definition: rig.h:1046
@ RIG_PARM_SCREENSAVER
Definition: rig.h:1049
@ RIG_PARM_ANN
Definition: rig.h:1042
@ RIG_PARM_AFIF
Definition: rig.h:1050
@ RIG_PARM_NONE
Definition: rig.h:1041
@ RIG_PARM_BACKLIGHT
Definition: rig.h:1044
@ RIG_PARM_KEYLIGHT
Definition: rig.h:1048
@ RIG_PARM_BAT
Definition: rig.h:1047
@ RIG_PARM_APO
Definition: rig.h:1043
@ RIG_POWER_OPERATE
Definition: rig.h:665
@ RIG_POWER_UNKNOWN
Definition: rig.h:666
@ RIG_POWER_STANDBY
Definition: rig.h:664
@ RIG_POWER_OFF
Definition: rig.h:662
@ RIG_POWER_ON
Definition: rig.h:663
@ RIG_ENIMPL
Definition: rig.h:151
@ RIG_ECONF
Definition: rig.h:149
@ RIG_ENAVAIL
Definition: rig.h:158
@ RIG_OK
Definition: rig.h:147
@ RIG_EPROTO
Definition: rig.h:155
@ RIG_EEND
Definition: rig.h:168
@ RIG_EINTERNAL
Definition: rig.h:154
@ RIG_EDOM
Definition: rig.h:164
@ RIG_EIO
Definition: rig.h:153
@ RIG_EVFO
Definition: rig.h:163
@ RIG_ETIMEOUT
Definition: rig.h:152
@ RIG_ENOMEM
Definition: rig.h:150
@ RIG_EARG
Definition: rig.h:162
@ RIG_ERJCTED
Definition: rig.h:156
@ RIG_ESECURITY
Definition: rig.h:166
@ RIG_BUSERROR
Definition: rig.h:160
@ RIG_BUSBUSY
Definition: rig.h:161
@ RIG_EDEPRECATED
Definition: rig.h:165
@ RIG_ENTARGET
Definition: rig.h:159
@ RIG_EINVAL
Definition: rig.h:148
@ RIG_ETRUNC
Definition: rig.h:157
@ RIG_CONF_STRING
Definition: rig.h:789
@ RIG_CONF_BUTTON
Definition: rig.h:793
@ RIG_CONF_CHECKBUTTON
Definition: rig.h:792
@ RIG_CONF_BINARY
Definition: rig.h:794
@ RIG_CONF_COMBO
Definition: rig.h:790
@ RIG_CONF_NUMERIC
Definition: rig.h:791
@ RIG_SCAN_DELTA
Definition: rig.h:756
@ RIG_SCAN_PLT
Definition: rig.h:758
@ RIG_SCAN_PROG
Definition: rig.h:755
@ RIG_SCAN_MEM
Definition: rig.h:752
@ RIG_SCAN_NONE
Definition: rig.h:751
@ RIG_SCAN_VFO
Definition: rig.h:757
@ RIG_SCAN_PRIO
Definition: rig.h:754
@ RIG_SCAN_SLCT
Definition: rig.h:753
@ RIG_SCAN_STOP
Definition: rig.h:759
@ RIG_COOKIE_RENEW
Definition: rig.h:1064
@ RIG_COOKIE_RELEASE
Definition: rig.h:1063
@ RIG_COOKIE_GET
Definition: rig.h:1062
@ RIG_PTT_OFF
Definition: rig.h:633
@ RIG_PTT_ON_DATA
Definition: rig.h:636
@ RIG_PTT_ON_MIC
Definition: rig.h:635
@ RIG_PTT_ON
Definition: rig.h:634
@ RIG_OP_CPY
Definition: rig.h:699
@ RIG_OP_DOWN
Definition: rig.h:705
@ RIG_OP_TO_VFO
Definition: rig.h:702
@ RIG_OP_TUNE
Definition: rig.h:710
@ RIG_OP_FROM_VFO
Definition: rig.h:701
@ RIG_OP_MCL
Definition: rig.h:703
@ RIG_OP_RIGHT
Definition: rig.h:709
@ RIG_OP_UP
Definition: rig.h:704
@ RIG_OP_TOGGLE
Definition: rig.h:711
@ RIG_OP_NONE
Definition: rig.h:698
@ RIG_OP_BAND_UP
Definition: rig.h:706
@ RIG_OP_BAND_DOWN
Definition: rig.h:707
@ RIG_OP_LEFT
Definition: rig.h:708
@ RIG_OP_XCHG
Definition: rig.h:700
@ RIG_PORT_PACKET
Definition: rig.h:269
@ RIG_PORT_UDP_NETWORK
Definition: rig.h:275
@ RIG_PORT_NONE
Definition: rig.h:265
@ RIG_PORT_CM108
Definition: rig.h:276
@ RIG_PORT_GPIO
Definition: rig.h:277
@ RIG_PORT_ULTRA
Definition: rig.h:271
@ RIG_PORT_GPION
Definition: rig.h:278
@ RIG_PORT_SERIAL
Definition: rig.h:266
@ RIG_PORT_PARALLEL
Definition: rig.h:273
@ RIG_PORT_NETWORK
Definition: rig.h:267
@ RIG_PORT_DEVICE
Definition: rig.h:268
@ RIG_PORT_RPC
Definition: rig.h:272
@ RIG_PORT_DTMF
Definition: rig.h:270
@ RIG_PORT_USB
Definition: rig.h:274
@ RIG_HANDSHAKE_HARDWARE
Definition: rig.h:300
@ RIG_HANDSHAKE_NONE
Definition: rig.h:298
@ RIG_HANDSHAKE_XONXOFF
Definition: rig.h:299
@ RIG_AGC_USER
Definition: rig.h:340
@ RIG_DCD_SERIAL_CTS
Definition: rig.h:620
@ RIG_DCD_PARALLEL
Definition: rig.h:622
@ RIG_DCD_CM108
Definition: rig.h:623
@ RIG_DCD_RIG
Definition: rig.h:618
@ RIG_DCD_GPION
Definition: rig.h:625
@ RIG_DCD_NONE
Definition: rig.h:617
@ RIG_DCD_SERIAL_DSR
Definition: rig.h:619
@ RIG_DCD_GPIO
Definition: rig.h:624
@ RIG_DCD_SERIAL_CAR
Definition: rig.h:621
@ RIG_DEBUG_ERR
Definition: rig.h:200
@ RIG_DEBUG_BUG
Definition: rig.h:199
@ RIG_DEBUG_WARN
Definition: rig.h:201
@ RIG_DEBUG_TRACE
Definition: rig.h:203
@ RIG_DEBUG_VERBOSE
Definition: rig.h:202
@ RIG_DEBUG_CACHE
Definition: rig.h:204
@ RIG_DEBUG_NONE
Definition: rig.h:198
@ RIG_RESET_MCALL
Definition: rig.h:677
@ RIG_RESET_MASTER
Definition: rig.h:678
@ RIG_RESET_NONE
Definition: rig.h:674
@ RIG_RESET_VFO
Definition: rig.h:676
@ RIG_RESET_SOFT
Definition: rig.h:675
@ RIG_STATUS_STABLE
Definition: rig.h:370
@ RIG_STATUS_BUGGY
Definition: rig.h:371
@ RIG_STATUS_UNTESTED
Definition: rig.h:368
@ RIG_STATUS_BETA
Definition: rig.h:369
@ RIG_STATUS_ALPHA
Definition: rig.h:367
@ RIG_SPECTRUM_MODE_CENTER_SCROLL
Definition: rig.h:1702
@ RIG_SPECTRUM_MODE_FIXED_SCROLL
Definition: rig.h:1703
@ RIG_SPECTRUM_MODE_FIXED
Definition: rig.h:1701
@ RIG_SPECTRUM_MODE_CENTER
Definition: rig.h:1700
@ RIG_MTYPE_PRIO
Definition: rig.h:1557
@ RIG_MTYPE_EDGE
Definition: rig.h:1552
@ RIG_MTYPE_MEM
Definition: rig.h:1551
@ RIG_MTYPE_CALL
Definition: rig.h:1553
@ RIG_MTYPE_SAT
Definition: rig.h:1555
@ RIG_MTYPE_MEMOPAD
Definition: rig.h:1554
@ RIG_MTYPE_NONE
Definition: rig.h:1550
@ RIG_MTYPE_BAND
Definition: rig.h:1556
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
Calibration table struct for float values.
Definition: rig.h:1654
Calibration table struct.
Definition: rig.h:1624
Memory channel list definition.
Definition: rig.h:1574
Channel capability definition.
Definition: rig.h:1502
Channel structure.
Definition: rig.h:1458
Configuration parameter structure.
Definition: rig.h:805
Extension attribute definition.
Definition: rig.h:1441
Filter definition.
Definition: rig.h:1408
Frequency range.
Definition: rig.h:1341
level/parm granularity definition
Definition: rig.h:1609
Definition: network.c:123
Spectrum scope averaging modes.
Definition: rig.h:1710
Represents a single line of rig spectrum scope FFT data.
Definition: rig.h:1727
Spectrum scope.
Definition: rig.h:1690
Tuning step definition.
Definition: rig.h:1373
Universal approach for passing values.
Definition: rig.h:930