diff --git a/include/bandplan.h b/include/bandplan.h index 168c770e4..86122d05f 100644 --- a/include/bandplan.h +++ b/include/bandplan.h @@ -33,13 +33,13 @@ * * As a reminder: * struct freq_range_list { - * freq_t start; - * freq_t end; - * rmode_t modes; - * int low_power; - * int high_power; - * vfo_t vfo; - * ant_t ant; + * freq_t start; + * freq_t end; + * rmode_t modes; + * int low_power; + * int high_power; + * vfo_t vfo; + * ant_t ant; * }; */ @@ -50,49 +50,49 @@ /* MF: 300 kHz - 3 MHz */ #define FRQ_RNG_160m_REGION1(md,lp,hp,v,a) \ - { kHz(1810), MHz(2), (md), (lp), (hp), (v), (a) } + { kHz(1810), MHz(2), (md), (lp), (hp), (v), (a) } /* HF: 3 MHz - 30 MHz */ #define FRQ_RNG_80m_REGION1(md,lp,hp,v,a) \ - { kHz(3500),kHz(3800), (md), (lp), (hp), (v), (a) } + { kHz(3500),kHz(3800), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_40m_REGION1(md,lp,hp,v,a) \ - { MHz(7),kHz(7100), (md), (lp), (hp), (v), (a) } + { MHz(7),kHz(7100), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_30m_REGION1(md,lp,hp,v,a) \ - { kHz(10100),kHz(10150), (md), (lp), (hp), (v), (a) } + { kHz(10100),kHz(10150), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_20m_REGION1(md,lp,hp,v,a) \ - { MHz(14),kHz(14350), (md), (lp), (hp), (v), (a) } + { MHz(14),kHz(14350), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_17m_REGION1(md,lp,hp,v,a) \ - { kHz(18068),kHz(18168), (md), (lp), (hp), (v), (a) } + { kHz(18068),kHz(18168), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_15m_REGION1(md,lp,hp,v,a) \ - { MHz(21),kHz(21450), (md), (lp), (hp), (v), (a) } + { MHz(21),kHz(21450), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_12m_REGION1(md,lp,hp,v,a) \ - { kHz(24890),kHz(24990), (md), (lp), (hp), (v), (a) } + { kHz(24890),kHz(24990), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_10m_REGION1(md,lp,hp,v,a) \ - { MHz(28),kHz(29700), (md), (lp), (hp), (v), (a) } + { MHz(28),kHz(29700), (md), (lp), (hp), (v), (a) } /* VHF: 30 MHz - 300 MHz */ #define FRQ_RNG_6m_REGION1(md,lp,hp,v,a) \ - { kHz(50200),kHz(51200), (md), (lp), (hp), (v), (a) } + { kHz(50200),kHz(51200), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_2m_REGION1(md,lp,hp,v,a) \ - { MHz(144),MHz(146), (md), (lp), (hp), (v), (a) } + { MHz(144),MHz(146), (md), (lp), (hp), (v), (a) } /* UHF: 300 MHz - 3 GHz */ #define FRQ_RNG_70cm_REGION1(md,lp,hp,v,a) \ - { MHz(430),MHz(440), (md), (lp), (hp), (v), (a) } + { MHz(430),MHz(440), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_23cm_REGION1(md,lp,hp,v,a) \ - { MHz(1240),MHz(1300), (md), (lp), (hp), (v), (a) } + { MHz(1240),MHz(1300), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_13cm_REGION1(md,lp,hp,v,a) \ - { MHz(2300),MHz(2450), (md), (lp), (hp), (v), (a) } + { MHz(2300),MHz(2450), (md), (lp), (hp), (v), (a) } /* @@ -101,49 +101,49 @@ /* MF: 300 kHz - 3 MHz */ #define FRQ_RNG_160m_REGION2(md,lp,hp,v,a) \ - { kHz(1800),MHz(2), (md), (lp), (hp), (v), (a) } + { kHz(1800),MHz(2), (md), (lp), (hp), (v), (a) } /* HF: 3 MHz - 30 MHz */ #define FRQ_RNG_80m_REGION2(md,lp,hp,v,a) \ - { kHz(3500),MHz(4), (md), (lp), (hp), (v), (a) } + { kHz(3500),MHz(4), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_40m_REGION2(md,lp,hp,v,a) \ - { MHz(7),kHz(7300), (md), (lp), (hp), (v), (a) } + { MHz(7),kHz(7300), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_30m_REGION2(md,lp,hp,v,a) \ - { kHz(10100),kHz(10150), (md), (lp), (hp), (v), (a) } + { kHz(10100),kHz(10150), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_20m_REGION2(md,lp,hp,v,a) \ - { MHz(14),kHz(14350), (md), (lp), (hp), (v), (a) } + { MHz(14),kHz(14350), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_17m_REGION2(md,lp,hp,v,a) \ - { kHz(18068),kHz(18168), (md), (lp), (hp), (v), (a) } + { kHz(18068),kHz(18168), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_15m_REGION2(md,lp,hp,v,a) \ - { MHz(21),kHz(21450), (md), (lp), (hp), (v), (a) } + { MHz(21),kHz(21450), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_12m_REGION2(md,lp,hp,v,a) \ - { kHz(24890),kHz(24990), (md), (lp), (hp), (v), (a) } + { kHz(24890),kHz(24990), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_10m_REGION2(md,lp,hp,v,a) \ - { MHz(28),kHz(29700), (md), (lp), (hp), (v), (a) } + { MHz(28),kHz(29700), (md), (lp), (hp), (v), (a) } /* VHF: 30 MHz - 300 MHz */ #define FRQ_RNG_6m_REGION2(md,lp,hp,v,a) \ - { MHz(50),MHz(54), (md), (lp), (hp), (v), (a) } + { MHz(50),MHz(54), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_2m_REGION2(md,lp,hp,v,a) \ - { MHz(144),MHz(148), (md), (lp), (hp), (v), (a) } + { MHz(144),MHz(148), (md), (lp), (hp), (v), (a) } /* UHF: 300 MHz - 3 GHz */ #define FRQ_RNG_70cm_REGION2(md,lp,hp,v,a) \ - { MHz(430),MHz(440), (md), (lp), (hp), (v), (a) } + { MHz(430),MHz(440), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_23cm_REGION2(md,lp,hp,v,a) \ - { MHz(1240),MHz(1300), (md), (lp), (hp), (v), (a) } + { MHz(1240),MHz(1300), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_13cm_REGION2(md,lp,hp,v,a) \ - { MHz(2320),MHz(2450), (md), (lp), (hp), (v), (a) } + { MHz(2320),MHz(2450), (md), (lp), (hp), (v), (a) } /* * ITU Region 3: South Pacific and Southern Asia @@ -151,49 +151,49 @@ /* MF: 300 kHz - 3 MHz */ #define FRQ_RNG_160m_REGION3(md,lp,hp,v,a) \ - { kHz(1810),MHz(2), (md), (lp), (hp), (v), (a) } + { kHz(1810),MHz(2), (md), (lp), (hp), (v), (a) } /* HF: 3 MHz - 30 MHz */ #define FRQ_RNG_80m_REGION3(md,lp,hp,v,a) \ - { kHz(3500),kHz(3900), (md), (lp), (hp), (v), (a) } + { kHz(3500),kHz(3900), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_40m_REGION3(md,lp,hp,v,a) \ - { MHz(7),kHz(7100), (md), (lp), (hp), (v), (a) } + { MHz(7),kHz(7100), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_30m_REGION3(md,lp,hp,v,a) \ - { kHz(10100),kHz(10150), (md), (lp), (hp), (v), (a) } + { kHz(10100),kHz(10150), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_20m_REGION3(md,lp,hp,v,a) \ - { MHz(14),kHz(14350), (md), (lp), (hp), (v), (a) } + { MHz(14),kHz(14350), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_17m_REGION3(md,lp,hp,v,a) \ - { kHz(18068),kHz(18168), (md), (lp), (hp), (v), (a) } + { kHz(18068),kHz(18168), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_15m_REGION3(md,lp,hp,v,a) \ - { MHz(21),kHz(21450), (md), (lp), (hp), (v), (a) } + { MHz(21),kHz(21450), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_12m_REGION3(md,lp,hp,v,a) \ - { kHz(24890),kHz(24990), (md), (lp), (hp), (v), (a) } + { kHz(24890),kHz(24990), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_10m_REGION3(md,lp,hp,v,a) \ - { MHz(28),kHz(29700), (md), (lp), (hp), (v), (a) } + { MHz(28),kHz(29700), (md), (lp), (hp), (v), (a) } /* VHF: 30 MHz - 300 MHz */ #define FRQ_RNG_6m_REGION3(md,lp,hp,v,a) \ - { MHz(50),MHz(54), (md), (lp), (hp), (v), (a) } + { MHz(50),MHz(54), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_2m_REGION3(md,lp,hp,v,a) \ - { MHz(144),MHz(148), (md), (lp), (hp), (v), (a) } + { MHz(144),MHz(148), (md), (lp), (hp), (v), (a) } /* UHF: 300 MHz - 3 GHz */ #define FRQ_RNG_70cm_REGION3(md,lp,hp,v,a) \ - { MHz(430),MHz(440), (md), (lp), (hp), (v), (a) } + { MHz(430),MHz(440), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_23cm_REGION3(md,lp,hp,v,a) \ - { MHz(1240),MHz(1300), (md), (lp), (hp), (v), (a) } + { MHz(1240),MHz(1300), (md), (lp), (hp), (v), (a) } #define FRQ_RNG_13cm_REGION3(md,lp,hp,v,a) \ - { MHz(2320),MHz(2450), (md), (lp), (hp), (v), (a) } + { MHz(2320),MHz(2450), (md), (lp), (hp), (v), (a) } /* @@ -201,28 +201,28 @@ * Let's define FRQ_RNG_HF for REGION1, FRQ_RNG_HF_REGION2, * and FRQ_RNG_HF_REGION3 all at once! * NB: FRQ_RNG_HF defines non-AM/AM freq_range for all HF bands, - * plus 160m which is not an HF band strictly speaking. + * plus 160m which is not an HF band strictly speaking. */ #define FRQ_RNG_HF(r,m,lp,hp,v,a) \ - FRQ_RNG_160m_REGION##r((m), (lp), (hp), (v), (a)), \ - FRQ_RNG_80m_REGION##r((m), (lp), (hp), (v), (a)), \ - FRQ_RNG_40m_REGION##r((m), (lp), (hp), (v), (a)), \ - FRQ_RNG_30m_REGION##r((m), (lp), (hp), (v), (a)), \ - FRQ_RNG_20m_REGION##r((m), (lp), (hp), (v), (a)), \ - FRQ_RNG_17m_REGION##r((m), (lp), (hp), (v), (a)), \ - FRQ_RNG_15m_REGION##r((m), (lp), (hp), (v), (a)), \ - FRQ_RNG_12m_REGION##r((m), (lp), (hp), (v), (a)), \ - FRQ_RNG_10m_REGION##r((m), (lp), (hp), (v), (a)) \ - + FRQ_RNG_160m_REGION##r((m), (lp), (hp), (v), (a)), \ + FRQ_RNG_80m_REGION##r((m), (lp), (hp), (v), (a)), \ + FRQ_RNG_40m_REGION##r((m), (lp), (hp), (v), (a)), \ + FRQ_RNG_30m_REGION##r((m), (lp), (hp), (v), (a)), \ + FRQ_RNG_20m_REGION##r((m), (lp), (hp), (v), (a)), \ + FRQ_RNG_17m_REGION##r((m), (lp), (hp), (v), (a)), \ + FRQ_RNG_15m_REGION##r((m), (lp), (hp), (v), (a)), \ + FRQ_RNG_12m_REGION##r((m), (lp), (hp), (v), (a)), \ + FRQ_RNG_10m_REGION##r((m), (lp), (hp), (v), (a)) \ + #define FRQ_RNG_6m(r,m,lp,hp,v,a) \ - FRQ_RNG_6m_REGION##r((m), (lp), (hp), (v), (a)) \ - + FRQ_RNG_6m_REGION##r((m), (lp), (hp), (v), (a)) \ + #define FRQ_RNG_2m(r,m,lp,hp,v,a) \ - FRQ_RNG_2m_REGION##r((m), (lp), (hp), (v), (a)) \ - + FRQ_RNG_2m_REGION##r((m), (lp), (hp), (v), (a)) \ + #define FRQ_RNG_70cm(r,m,lp,hp,v,a) \ - FRQ_RNG_70cm_REGION##r((m), (lp), (hp), (v), (a)) \ + FRQ_RNG_70cm_REGION##r((m), (lp), (hp), (v), (a)) \ + - -#endif /* _BANDPLAN_H */ +#endif /* _BANDPLAN_H */ diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 9ca80b98a..15c4bc78a 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -27,7 +27,8 @@ #include #include -#include /* list in another file to not mess up w/ this one */ +/* Rig list is in a separate file so as not to mess up w/ this one */ +#include /** * \addtogroup rig @@ -48,23 +49,28 @@ #undef __BEGIN_DECLS #undef __END_DECLS #ifdef __cplusplus -# define __BEGIN_DECLS extern "C" { -# define __END_DECLS } +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } #else -# define __BEGIN_DECLS /* empty */ -# define __END_DECLS /* empty */ +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ #endif /* HAMLIB_PARAMS is a macro used to wrap function prototypes, so that compilers * that don't understand ANSI C prototypes still work, and ANSI C * compilers can issue warnings about type mismatches. */ #undef HAMLIB_PARAMS -#if defined (__STDC__) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(__CYGWIN__) || defined(_WIN32) || defined(__cplusplus) -# define HAMLIB_PARAMS(protos) protos -# define rig_ptr_t void* +#if defined (__STDC__) \ + || defined (_AIX) \ + || (defined (__mips) && defined (_SYSTYPE_SVR4)) \ + || defined(__CYGWIN__) \ + || defined(_WIN32) \ + || defined(__cplusplus) +# define HAMLIB_PARAMS(protos) protos +# define rig_ptr_t void * #else -# define HAMLIB_PARAMS(protos) () -# define rig_ptr_t char* +# define HAMLIB_PARAMS(protos) () +# define rig_ptr_t char * #endif #include @@ -84,45 +90,49 @@ extern HAMLIB_EXPORT_VAR(const char *) hamlib_copyright2; * of rig_errcode_e definitions in case of error, or 0 when successful. */ enum rig_errcode_e { - RIG_OK=0, /*!< No error, operation completed successfully */ - RIG_EINVAL, /*!< invalid parameter */ - RIG_ECONF, /*!< invalid configuration (serial,..) */ - RIG_ENOMEM, /*!< memory shortage */ - RIG_ENIMPL, /*!< function not implemented, but will be */ - RIG_ETIMEOUT, /*!< communication timed out */ - RIG_EIO, /*!< IO error, including open failed */ - RIG_EINTERNAL, /*!< Internal Hamlib error, huh! */ - RIG_EPROTO, /*!< Protocol error */ - RIG_ERJCTED, /*!< Command rejected by the rig */ - RIG_ETRUNC, /*!< Command performed, but arg truncated */ - RIG_ENAVAIL, /*!< function not available */ - RIG_ENTARGET, /*!< VFO not targetable */ - RIG_BUSERROR, /*!< Error talking on the bus */ - RIG_BUSBUSY, /*!< Collision on the bus */ - RIG_EARG, /*!< NULL RIG handle or any invalid pointer parameter in get arg */ - RIG_EVFO, /*!< Invalid VFO */ - RIG_EDOM /*!< Argument out of domain of func */ + RIG_OK = 0, /*!< No error, operation completed successfully */ + RIG_EINVAL, /*!< invalid parameter */ + RIG_ECONF, /*!< invalid configuration (serial,..) */ + RIG_ENOMEM, /*!< memory shortage */ + RIG_ENIMPL, /*!< function not implemented, but will be */ + RIG_ETIMEOUT, /*!< communication timed out */ + RIG_EIO, /*!< IO error, including open failed */ + RIG_EINTERNAL, /*!< Internal Hamlib error, huh! */ + RIG_EPROTO, /*!< Protocol error */ + RIG_ERJCTED, /*!< Command rejected by the rig */ + RIG_ETRUNC, /*!< Command performed, but arg truncated */ + RIG_ENAVAIL, /*!< function not available */ + RIG_ENTARGET, /*!< VFO not targetable */ + RIG_BUSERROR, /*!< Error talking on the bus */ + RIG_BUSBUSY, /*!< Collision on the bus */ + RIG_EARG, /*!< NULL RIG handle or any invalid pointer parameter in get arg */ + RIG_EVFO, /*!< Invalid VFO */ + RIG_EDOM /*!< Argument out of domain of func */ }; -/** \brief Token in the netrigctl protocol for returning error code */ +/** + * \brief Token in the netrigctl protocol for returning error code + */ #define NETRIGCTL_RET "RPRT " + /** *\brief Hamlib debug levels * - * REM: Numeric order matters for debug level + * NOTE: Numeric order matters for debug level * - * \sa rig_set_debug + * \sa rig_set_debug() */ enum rig_debug_level_e { - RIG_DEBUG_NONE = 0, /*!< no bug reporting */ - RIG_DEBUG_BUG, /*!< serious bug */ - RIG_DEBUG_ERR, /*!< error case (e.g. protocol, memory allocation) */ - RIG_DEBUG_WARN, /*!< warning */ - RIG_DEBUG_VERBOSE, /*!< verbose */ - RIG_DEBUG_TRACE /*!< tracing */ + RIG_DEBUG_NONE = 0, /*!< no bug reporting */ + RIG_DEBUG_BUG, /*!< serious bug */ + RIG_DEBUG_ERR, /*!< error case (e.g. protocol, memory allocation) */ + RIG_DEBUG_WARN, /*!< warning */ + RIG_DEBUG_VERBOSE, /*!< verbose */ + RIG_DEBUG_TRACE /*!< tracing */ }; + /* --------------- Rig capabilities -----------------*/ /* Forward struct references */ @@ -130,7 +140,7 @@ enum rig_debug_level_e { struct rig; struct rig_state; -/*! +/** * \brief Rig structure definition (see rig for details). */ typedef struct rig RIG; @@ -139,12 +149,12 @@ typedef struct rig RIG; #define RIGVERSIZ 8 #define FILPATHLEN 100 #define FRQRANGESIZ 30 -#define MAXCHANDESC 30 /* describe channel eg: "WWV 5Mhz" */ -#define TSLSTSIZ 20 /* max tuning step list size, zero ended */ -#define FLTLSTSIZ 60 /* max mode/filter list size, zero ended */ -#define MAXDBLSTSIZ 8 /* max preamp/att levels supported, zero ended */ -#define CHANLSTSIZ 16 /* max mem_list size, zero ended */ -#define MAX_CAL_LENGTH 32 /* max calibration plots in cal_table_t */ +#define MAXCHANDESC 30 /* describe channel eg: "WWV 5Mhz" */ +#define TSLSTSIZ 20 /* max tuning step list size, zero ended */ +#define FLTLSTSIZ 60 /* max mode/filter list size, zero ended */ +#define MAXDBLSTSIZ 8 /* max preamp/att levels supported, zero ended */ +#define CHANLSTSIZ 16 /* max mem_list size, zero ended */ +#define MAX_CAL_LENGTH 32 /* max calibration plots in cal_table_t */ /** @@ -159,44 +169,47 @@ typedef struct rig RIG; */ typedef unsigned int tone_t; + /** * \brief Port type */ typedef enum rig_port_e { - RIG_PORT_NONE = 0, /*!< No port */ - RIG_PORT_SERIAL, /*!< Serial */ - RIG_PORT_NETWORK, /*!< Network socket type */ - RIG_PORT_DEVICE, /*!< Device driver, like the WiNRADiO */ - RIG_PORT_PACKET, /*!< AX.25 network type, e.g. SV8CS protocol */ - RIG_PORT_DTMF, /*!< DTMF protocol bridge via another rig, eg. Kenwood Sky Cmd System */ - RIG_PORT_ULTRA, /*!< IrDA Ultra protocol! */ - RIG_PORT_RPC, /*!< RPC wrapper */ - RIG_PORT_PARALLEL, /*!< Parallel port */ - RIG_PORT_USB, /*!< USB port */ - RIG_PORT_UDP_NETWORK, /*!< UDP Network socket type */ - RIG_PORT_CM108, /*!< CM108 GPIO */ - RIG_PORT_GPIO, /*!< GPIO */ - RIG_PORT_GPION, /*!< GPIO inverted */ + RIG_PORT_NONE = 0, /*!< No port */ + RIG_PORT_SERIAL, /*!< Serial */ + RIG_PORT_NETWORK, /*!< Network socket type */ + RIG_PORT_DEVICE, /*!< Device driver, like the WiNRADiO */ + RIG_PORT_PACKET, /*!< AX.25 network type, e.g. SV8CS protocol */ + RIG_PORT_DTMF, /*!< DTMF protocol bridge via another rig, eg. Kenwood Sky Cmd System */ + RIG_PORT_ULTRA, /*!< IrDA Ultra protocol! */ + RIG_PORT_RPC, /*!< RPC wrapper */ + RIG_PORT_PARALLEL, /*!< Parallel port */ + RIG_PORT_USB, /*!< USB port */ + RIG_PORT_UDP_NETWORK, /*!< UDP Network socket type */ + RIG_PORT_CM108, /*!< CM108 GPIO */ + RIG_PORT_GPIO, /*!< GPIO */ + RIG_PORT_GPION, /*!< GPIO inverted */ } rig_port_t; + /** * \brief Serial parity */ enum serial_parity_e { - RIG_PARITY_NONE = 0, /*!< No parity */ - RIG_PARITY_ODD, /*!< Odd */ - RIG_PARITY_EVEN, /*!< Even */ - RIG_PARITY_MARK, /*!< Mark */ - RIG_PARITY_SPACE /*!< Space */ + RIG_PARITY_NONE = 0, /*!< No parity */ + RIG_PARITY_ODD, /*!< Odd */ + RIG_PARITY_EVEN, /*!< Even */ + RIG_PARITY_MARK, /*!< Mark */ + RIG_PARITY_SPACE /*!< Space */ }; + /** * \brief Serial handshake */ enum serial_handshake_e { - RIG_HANDSHAKE_NONE = 0, /*!< No handshake */ - RIG_HANDSHAKE_XONXOFF, /*!< Software XON/XOFF */ - RIG_HANDSHAKE_HARDWARE /*!< Hardware CTS/RTS */ + RIG_HANDSHAKE_NONE = 0, /*!< No handshake */ + RIG_HANDSHAKE_XONXOFF, /*!< Software XON/XOFF */ + RIG_HANDSHAKE_HARDWARE /*!< Hardware CTS/RTS */ }; @@ -204,101 +217,118 @@ enum serial_handshake_e { * \brief Serial control state */ enum serial_control_state_e { - RIG_SIGNAL_UNSET = 0, /*!< Unset or tri-state */ - RIG_SIGNAL_ON, /*!< ON */ - RIG_SIGNAL_OFF /*!< OFF */ + RIG_SIGNAL_UNSET = 0, /*!< Unset or tri-state */ + RIG_SIGNAL_ON, /*!< ON */ + RIG_SIGNAL_OFF /*!< OFF */ }; -/** \brief Rig type flags */ -typedef enum { - RIG_FLAG_RECEIVER = (1<<1), /*!< Receiver */ - RIG_FLAG_TRANSMITTER = (1<<2), /*!< Transmitter */ - RIG_FLAG_SCANNER = (1<<3), /*!< Scanner */ - RIG_FLAG_MOBILE = (1<<4), /*!< mobile sized */ - RIG_FLAG_HANDHELD = (1<<5), /*!< handheld sized */ - RIG_FLAG_COMPUTER = (1<<6), /*!< "Computer" rig */ - RIG_FLAG_TRUNKING = (1<<7), /*!< has trunking */ - RIG_FLAG_APRS = (1<<8), /*!< has APRS */ - RIG_FLAG_TNC = (1<<9), /*!< has TNC */ - RIG_FLAG_DXCLUSTER = (1<<10), /*!< has DXCluster */ - RIG_FLAG_TUNER = (1<<11) /*!< dumb tuner */ +/** + * \brief Rig type flags + */ +typedef enum { + RIG_FLAG_RECEIVER = (1 << 1), /*!< Receiver */ + RIG_FLAG_TRANSMITTER = (1 << 2), /*!< Transmitter */ + RIG_FLAG_SCANNER = (1 << 3), /*!< Scanner */ + RIG_FLAG_MOBILE = (1 << 4), /*!< mobile sized */ + RIG_FLAG_HANDHELD = (1 << 5), /*!< handheld sized */ + RIG_FLAG_COMPUTER = (1 << 6), /*!< "Computer" rig */ + RIG_FLAG_TRUNKING = (1 << 7), /*!< has trunking */ + RIG_FLAG_APRS = (1 << 8), /*!< has APRS */ + RIG_FLAG_TNC = (1 << 9), /*!< has TNC */ + RIG_FLAG_DXCLUSTER = (1 << 10), /*!< has DXCluster */ + RIG_FLAG_TUNER = (1 << 11) /*!< dumb tuner */ } rig_type_t; #define RIG_FLAG_TRANSCEIVER (RIG_FLAG_RECEIVER|RIG_FLAG_TRANSMITTER) #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) -#define RIG_TYPE_OTHER 0 -#define RIG_TYPE_TRANSCEIVER RIG_FLAG_TRANSCEIVER -#define RIG_TYPE_HANDHELD (RIG_FLAG_TRANSCEIVER|RIG_FLAG_HANDHELD) -#define RIG_TYPE_MOBILE (RIG_FLAG_TRANSCEIVER|RIG_FLAG_MOBILE) -#define RIG_TYPE_RECEIVER RIG_FLAG_RECEIVER -#define RIG_TYPE_PCRECEIVER (RIG_FLAG_COMPUTER|RIG_FLAG_RECEIVER) -#define RIG_TYPE_SCANNER (RIG_FLAG_SCANNER|RIG_FLAG_RECEIVER) -#define RIG_TYPE_TRUNKSCANNER (RIG_TYPE_SCANNER|RIG_FLAG_TRUNKING) -#define RIG_TYPE_COMPUTER (RIG_FLAG_TRANSCEIVER|RIG_FLAG_COMPUTER) -#define RIG_TYPE_TUNER RIG_FLAG_TUNER +#define RIG_TYPE_OTHER 0 +#define RIG_TYPE_TRANSCEIVER RIG_FLAG_TRANSCEIVER +#define RIG_TYPE_HANDHELD (RIG_FLAG_TRANSCEIVER|RIG_FLAG_HANDHELD) +#define RIG_TYPE_MOBILE (RIG_FLAG_TRANSCEIVER|RIG_FLAG_MOBILE) +#define RIG_TYPE_RECEIVER RIG_FLAG_RECEIVER +#define RIG_TYPE_PCRECEIVER (RIG_FLAG_COMPUTER|RIG_FLAG_RECEIVER) +#define RIG_TYPE_SCANNER (RIG_FLAG_SCANNER|RIG_FLAG_RECEIVER) +#define RIG_TYPE_TRUNKSCANNER (RIG_TYPE_SCANNER|RIG_FLAG_TRUNKING) +#define RIG_TYPE_COMPUTER (RIG_FLAG_TRANSCEIVER|RIG_FLAG_COMPUTER) +#define RIG_TYPE_TUNER RIG_FLAG_TUNER /** * \brief Development status of the backend */ enum rig_status_e { - RIG_STATUS_ALPHA = 0, /*!< Alpha quality, i.e. development */ - RIG_STATUS_UNTESTED, /*!< Written from available specs, rig unavailable for test, feedback wanted! */ - RIG_STATUS_BETA, /*!< Beta quality */ - RIG_STATUS_STABLE, /*!< Stable */ - RIG_STATUS_BUGGY /*!< Was stable, but something broke it! */ -/* RIG_STATUS_NEW * *!< Initial release of code - * !! Use of RIG_STATUS_NEW is deprecated. Do not use it anymore */ + RIG_STATUS_ALPHA = 0, /*!< Alpha quality, i.e. development */ + RIG_STATUS_UNTESTED, /*!< Written from available specs, rig unavailable for test, feedback wanted! */ + RIG_STATUS_BETA, /*!< Beta quality */ + RIG_STATUS_STABLE, /*!< Stable */ + RIG_STATUS_BUGGY /*!< Was stable, but something broke it! */ + /* RIG_STATUS_NEW * *!< Initial release of code + * !! Use of RIG_STATUS_NEW is deprecated. Do not use it anymore */ }; -/** \brief Map all deprecated RIG_STATUS_NEW references to RIG_STATUS_UNTESTED for backward compatibility */ -#define RIG_STATUS_NEW RIG_STATUS_UNTESTED +/** + * \brief Map all deprecated RIG_STATUS_NEW references to + * RIG_STATUS_UNTESTED for backward compatibility + */ +#define RIG_STATUS_NEW RIG_STATUS_UNTESTED + /** * \brief Repeater shift type */ typedef enum { - RIG_RPT_SHIFT_NONE = 0, /*!< No repeater shift */ - RIG_RPT_SHIFT_MINUS, /*!< "-" shift */ - RIG_RPT_SHIFT_PLUS /*!< "+" shift */ + RIG_RPT_SHIFT_NONE = 0, /*!< No repeater shift */ + RIG_RPT_SHIFT_MINUS, /*!< "-" shift */ + RIG_RPT_SHIFT_PLUS /*!< "+" shift */ } rptr_shift_t; + /** * \brief Split mode */ typedef enum { - RIG_SPLIT_OFF = 0, /*!< Split mode disabled */ - RIG_SPLIT_ON /*!< Split mode enabled */ + RIG_SPLIT_OFF = 0, /*!< Split mode disabled */ + RIG_SPLIT_ON /*!< Split mode enabled */ } split_t; + /** * \brief Frequency type, + * * Frequency type unit in Hz, able to hold SHF frequencies. */ typedef double freq_t; -/** \brief printf(3) format to be used for freq_t type */ + +/** + * \brief printf(3) format to be used for freq_t type + */ #define PRIfreq "f" -/** \brief scanf(3) format to be used for freq_t type */ + +/** + * \brief scanf(3) format to be used for freq_t type + */ #define SCNfreq "lf" #define FREQFMT SCNfreq + /** * \brief Short frequency type + * * Frequency in Hz restricted to 31bits, suitable for offsets, shifts, etc.. */ typedef signed long shortfreq_t; -#define Hz(f) ((freq_t)(f)) -#define kHz(f) ((freq_t)((f)*(freq_t)1000)) -#define MHz(f) ((freq_t)((f)*(freq_t)1000000)) -#define GHz(f) ((freq_t)((f)*(freq_t)1000000000)) +#define Hz(f) ((freq_t)(f)) +#define kHz(f) ((freq_t)((f)*(freq_t)1000)) +#define MHz(f) ((freq_t)((f)*(freq_t)1000000)) +#define GHz(f) ((freq_t)((f)*(freq_t)1000000000)) -#define s_Hz(f) ((shortfreq_t)(f)) -#define s_kHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000)) -#define s_MHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000)) -#define s_GHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000000)) +#define s_Hz(f) ((shortfreq_t)(f)) +#define s_kHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000)) +#define s_MHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000)) +#define s_GHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000000)) #define RIG_FREQ_NONE Hz(0) @@ -316,45 +346,45 @@ typedef signed long shortfreq_t; * * Aliases may or may not be honored by a backend and are defined using * high significant bits, i.e. RIG_VFO_MEM, RIG_VFO_MAIN, etc. - * */ typedef int vfo_t; /** \brief '' -- used in caps */ -#define RIG_VFO_NONE 0 +#define RIG_VFO_NONE 0 -#define RIG_VFO_TX_FLAG (1<<30) +#define RIG_VFO_TX_FLAG (1<<30) /** \brief \c currVFO -- current "tunable channel"/VFO */ -#define RIG_VFO_CURR (1<<29) +#define RIG_VFO_CURR (1<<29) /** \brief \c MEM -- means Memory mode, to be used with set_vfo */ -#define RIG_VFO_MEM (1<<28) +#define RIG_VFO_MEM (1<<28) /** \brief \c VFO -- means (last or any)VFO mode, with set_vfo */ -#define RIG_VFO_VFO (1<<27) +#define RIG_VFO_VFO (1<<27) -#define RIG_VFO_TX_VFO(v) ((v)|RIG_VFO_TX_FLAG) +#define RIG_VFO_TX_VFO(v) ((v)|RIG_VFO_TX_FLAG) /** \brief \c TX -- alias for split tx or uplink, of VFO_CURR */ -#define RIG_VFO_TX RIG_VFO_TX_VFO(RIG_VFO_CURR) +#define RIG_VFO_TX RIG_VFO_TX_VFO(RIG_VFO_CURR) /** \brief \c RX -- alias for split rx or downlink */ -#define RIG_VFO_RX RIG_VFO_CURR +#define RIG_VFO_RX RIG_VFO_CURR /** \brief \c Main -- alias for MAIN */ -#define RIG_VFO_MAIN (1<<26) -/** \brief \c Sub -- alias for SUB */ -#define RIG_VFO_SUB (1<<25) +#define RIG_VFO_MAIN (1<<26) -#define RIG_VFO_N(n) (1<<(n)) +/** \brief \c Sub -- alias for SUB */ +#define RIG_VFO_SUB (1<<25) + +#define RIG_VFO_N(n) (1<<(n)) /** \brief \c VFOA -- VFO A */ -#define RIG_VFO_A RIG_VFO_N(0) +#define RIG_VFO_A RIG_VFO_N(0) /** \brief \c VFOB -- VFO B */ -#define RIG_VFO_B RIG_VFO_N(1) +#define RIG_VFO_B RIG_VFO_N(1) /** \brief \c VFOC -- VFO C */ -#define RIG_VFO_C RIG_VFO_N(2) +#define RIG_VFO_C RIG_VFO_N(2) /* @@ -370,11 +400,12 @@ typedef int vfo_t; #define RIG_TARGETABLE_ALL 0x7fffffff -#define RIG_PASSBAND_NORMAL s_Hz(0) -#define RIG_PASSBAND_NOCHANGE s_Hz(-1) +#define RIG_PASSBAND_NORMAL s_Hz(0) +#define RIG_PASSBAND_NOCHANGE s_Hz(-1) /** * \brief Passband width, in Hz - * \sa rig_passband_normal, rig_passband_narrow, rig_passband_wide + * + * \sa rig_passband_normal(), rig_passband_narrow(), rig_passband_wide() */ typedef shortfreq_t pbwidth_t; @@ -383,22 +414,24 @@ typedef shortfreq_t pbwidth_t; * \brief DCD status */ typedef enum dcd_e { - RIG_DCD_OFF = 0, /*!< Squelch closed */ - RIG_DCD_ON /*!< Squelch open */ + RIG_DCD_OFF = 0, /*!< Squelch closed */ + RIG_DCD_ON /*!< Squelch open */ } dcd_t; + /** * \brief DCD type - * \sa rig_get_dcd + * + * \sa rig_get_dcd() */ typedef enum { - RIG_DCD_NONE = 0, /*!< No DCD available */ - RIG_DCD_RIG, /*!< Rig has DCD status support, i.e. rig has get_dcd cap */ - RIG_DCD_SERIAL_DSR, /*!< DCD status from serial DSR signal */ - RIG_DCD_SERIAL_CTS, /*!< DCD status from serial CTS signal */ - RIG_DCD_SERIAL_CAR, /*!< DCD status from serial CD signal */ - RIG_DCD_PARALLEL, /*!< DCD status from parallel port pin */ - RIG_DCD_CM108 /*!< DCD status from CM108 vol dn pin */ + RIG_DCD_NONE = 0, /*!< No DCD available */ + RIG_DCD_RIG, /*!< Rig has DCD status support, i.e. rig has get_dcd cap */ + RIG_DCD_SERIAL_DSR, /*!< DCD status from serial DSR signal */ + RIG_DCD_SERIAL_CTS, /*!< DCD status from serial CTS signal */ + RIG_DCD_SERIAL_CAR, /*!< DCD status from serial CD signal */ + RIG_DCD_PARALLEL, /*!< DCD status from parallel port pin */ + RIG_DCD_CM108 /*!< DCD status from CM108 vol dn pin */ } dcd_type_t; @@ -406,46 +439,50 @@ typedef enum { * \brief PTT status */ typedef enum { - RIG_PTT_OFF = 0, /*!< PTT desactivated */ - RIG_PTT_ON, /*!< PTT activated */ - RIG_PTT_ON_MIC, /*!< PTT Mic only, fallbacks on RIG_PTT_ON if unavailable */ - RIG_PTT_ON_DATA /*!< PTT Data (Mic-muted), fallbacks on RIG_PTT_ON if unavailable */ + RIG_PTT_OFF = 0, /*!< PTT desactivated */ + RIG_PTT_ON, /*!< PTT activated */ + RIG_PTT_ON_MIC, /*!< PTT Mic only, fallbacks on RIG_PTT_ON if unavailable */ + RIG_PTT_ON_DATA /*!< PTT Data (Mic-muted), fallbacks on RIG_PTT_ON if unavailable */ } ptt_t; + /** * \brief PTT type - * \sa rig_get_ptt + * + * \sa rig_get_ptt() */ typedef enum { - RIG_PTT_NONE = 0, /*!< No PTT available */ - RIG_PTT_RIG, /*!< Legacy PTT (CAT PTT) */ - RIG_PTT_SERIAL_DTR, /*!< PTT control through serial DTR signal */ - RIG_PTT_SERIAL_RTS, /*!< PTT control through serial RTS signal */ - RIG_PTT_PARALLEL, /*!< PTT control through parallel port */ - RIG_PTT_RIG_MICDATA, /*!< Legacy PTT (CAT PTT), supports RIG_PTT_ON_MIC/RIG_PTT_ON_DATA */ - RIG_PTT_CM108, /*!< PTT control through CM108 GPIO pin */ - RIG_PTT_GPIO, /*!< PTT control through GPIO pin */ - RIG_PTT_GPION, /*!< PTT control through inverted GPIO pin */ + RIG_PTT_NONE = 0, /*!< No PTT available */ + RIG_PTT_RIG, /*!< Legacy PTT (CAT PTT) */ + RIG_PTT_SERIAL_DTR, /*!< PTT control through serial DTR signal */ + RIG_PTT_SERIAL_RTS, /*!< PTT control through serial RTS signal */ + RIG_PTT_PARALLEL, /*!< PTT control through parallel port */ + RIG_PTT_RIG_MICDATA, /*!< Legacy PTT (CAT PTT), supports RIG_PTT_ON_MIC/RIG_PTT_ON_DATA */ + RIG_PTT_CM108, /*!< PTT control through CM108 GPIO pin */ + RIG_PTT_GPIO, /*!< PTT control through GPIO pin */ + RIG_PTT_GPION, /*!< PTT control through inverted GPIO pin */ } ptt_type_t; + /** * \brief Radio power state */ typedef enum { - RIG_POWER_OFF = 0, /*!< Power off */ - RIG_POWER_ON = (1<<0), /*!< Power on */ - RIG_POWER_STANDBY = (1<<1) /*!< Standby */ + RIG_POWER_OFF = 0, /*!< Power off */ + RIG_POWER_ON = (1 << 0), /*!< Power on */ + RIG_POWER_STANDBY = (1 << 1) /*!< Standby */ } powerstat_t; + /** * \brief Reset operation */ typedef enum { - RIG_RESET_NONE = 0, /*!< No reset */ - RIG_RESET_SOFT = (1<<0), /*!< Software reset */ - RIG_RESET_VFO = (1<<1), /*!< VFO reset */ - RIG_RESET_MCALL = (1<<2), /*!< Memory clear */ - RIG_RESET_MASTER = (1<<3) /*!< Master reset */ + RIG_RESET_NONE = 0, /*!< No reset */ + RIG_RESET_SOFT = (1 << 0), /*!< Software reset */ + RIG_RESET_VFO = (1 << 1), /*!< VFO reset */ + RIG_RESET_MCALL = (1 << 2), /*!< Memory clear */ + RIG_RESET_MASTER = (1 << 3) /*!< Master reset */ } reset_t; @@ -456,29 +493,29 @@ typedef enum { * The difference with a function is that an action has no on/off * status, it is performed at once. * - * Note: the vfo argument for some vfo operation may be irrelevant, + * NOTE: the vfo argument for some vfo operation may be irrelevant, * and thus will be ignored. * * The VFO/MEM "mode" is set by rig_set_vfo.\n * \c STRING used in rigctl * - * \sa rig_parse_vfo_op() rig_strvfop() + * \sa rig_parse_vfo_op(), rig_strvfop() */ typedef enum { - RIG_OP_NONE = 0, /*!< '' No VFO_OP */ - RIG_OP_CPY = (1<<0), /*!< \c CPY -- VFO A = VFO B */ - RIG_OP_XCHG = (1<<1), /*!< \c XCHG -- Exchange VFO A/B */ - RIG_OP_FROM_VFO = (1<<2), /*!< \c FROM_VFO -- VFO->MEM */ - RIG_OP_TO_VFO = (1<<3), /*!< \c TO_VFO -- MEM->VFO */ - RIG_OP_MCL = (1<<4), /*!< \c MCL -- Memory clear */ - RIG_OP_UP = (1<<5), /*!< \c UP -- UP increment VFO freq by tuning step*/ - RIG_OP_DOWN = (1<<6), /*!< \c DOWN -- DOWN decrement VFO freq by tuning step*/ - RIG_OP_BAND_UP = (1<<7), /*!< \c BAND_UP -- Band UP */ - RIG_OP_BAND_DOWN = (1<<8), /*!< \c BAND_DOWN -- Band DOWN */ - RIG_OP_LEFT = (1<<9), /*!< \c LEFT -- LEFT */ - RIG_OP_RIGHT = (1<<10),/*!< \c RIGHT -- RIGHT */ - RIG_OP_TUNE = (1<<11),/*!< \c TUNE -- Start tune */ - RIG_OP_TOGGLE = (1<<12) /*!< \c TOGGLE -- Toggle VFOA and VFOB */ + RIG_OP_NONE = 0, /*!< '' No VFO_OP */ + RIG_OP_CPY = (1 << 0), /*!< \c CPY -- VFO A = VFO B */ + RIG_OP_XCHG = (1 << 1), /*!< \c XCHG -- Exchange VFO A/B */ + RIG_OP_FROM_VFO = (1 << 2), /*!< \c FROM_VFO -- VFO->MEM */ + RIG_OP_TO_VFO = (1 << 3), /*!< \c TO_VFO -- MEM->VFO */ + RIG_OP_MCL = (1 << 4), /*!< \c MCL -- Memory clear */ + RIG_OP_UP = (1 << 5), /*!< \c UP -- UP increment VFO freq by tuning step*/ + RIG_OP_DOWN = (1 << 6), /*!< \c DOWN -- DOWN decrement VFO freq by tuning step*/ + RIG_OP_BAND_UP = (1 << 7), /*!< \c BAND_UP -- Band UP */ + RIG_OP_BAND_DOWN = (1 << 8), /*!< \c BAND_DOWN -- Band DOWN */ + RIG_OP_LEFT = (1 << 9), /*!< \c LEFT -- LEFT */ + RIG_OP_RIGHT = (1 << 10), /*!< \c RIGHT -- RIGHT */ + RIG_OP_TUNE = (1 << 11), /*!< \c TUNE -- Start tune */ + RIG_OP_TOGGLE = (1 << 12) /*!< \c TOGGLE -- Toggle VFOA and VFOB */ } vfo_op_t; @@ -488,27 +525,30 @@ typedef enum { * Various scan operations supported by a rig.\n * \c STRING used in rigctl * - * \sa rig_parse_scan() rig_strscan() + * \sa rig_parse_scan(), rig_strscan() */ typedef enum { - RIG_SCAN_NONE = 0, /*!< '' No-op value */ - RIG_SCAN_MEM = (1<<0), /*!< \c MEM -- Scan all memory channels */ - RIG_SCAN_SLCT = (1<<1), /*!< \c SLCT -- Scan all selected memory channels */ - RIG_SCAN_PRIO = (1<<2), /*!< \c PRIO -- Priority watch (mem or call channel) */ - RIG_SCAN_PROG = (1<<3), /*!< \c PROG -- Programmed(edge) scan */ - RIG_SCAN_DELTA = (1<<4), /*!< \c DELTA -- delta-f scan */ - RIG_SCAN_VFO = (1<<5), /*!< \c VFO -- most basic scan */ - RIG_SCAN_PLT = (1<<6), /*!< \c PLT -- Scan using pipelined tuning */ - RIG_SCAN_STOP = (1<<7) /*!< \c STOP -- Stop scanning */ + RIG_SCAN_NONE = 0, /*!< '' No-op value */ + RIG_SCAN_MEM = (1 << 0), /*!< \c MEM -- Scan all memory channels */ + RIG_SCAN_SLCT = (1 << 1), /*!< \c SLCT -- Scan all selected memory channels */ + RIG_SCAN_PRIO = (1 << 2), /*!< \c PRIO -- Priority watch (mem or call channel) */ + RIG_SCAN_PROG = (1 << 3), /*!< \c PROG -- Programmed(edge) scan */ + RIG_SCAN_DELTA = (1 << 4), /*!< \c DELTA -- delta-f scan */ + RIG_SCAN_VFO = (1 << 5), /*!< \c VFO -- most basic scan */ + RIG_SCAN_PLT = (1 << 6), /*!< \c PLT -- Scan using pipelined tuning */ + RIG_SCAN_STOP = (1 << 7) /*!< \c STOP -- Stop scanning */ } scan_t; + /** * \brief configuration token */ typedef long token_t; + #define RIG_CONF_END 0 + /** * \brief parameter types * @@ -522,51 +562,53 @@ typedef long token_t; */ /* strongly inspired from soundmodem. Thanks Thomas! */ - enum rig_conf_e { - RIG_CONF_STRING, /*!< String type */ - RIG_CONF_COMBO, /*!< Combo type */ - RIG_CONF_NUMERIC, /*!< Numeric type integer or real */ - RIG_CONF_CHECKBUTTON, /*!< on/off type */ - RIG_CONF_BUTTON /*!< Button type */ + RIG_CONF_STRING, /*!< String type */ + RIG_CONF_COMBO, /*!< Combo type */ + RIG_CONF_NUMERIC, /*!< Numeric type integer or real */ + RIG_CONF_CHECKBUTTON, /*!< on/off type */ + RIG_CONF_BUTTON /*!< Button type */ }; -#define RIG_COMBO_MAX 8 + +#define RIG_COMBO_MAX 8 /** * \brief Configuration parameter structure. */ struct confparams { - token_t token; /*!< Conf param token ID */ - const char *name; /*!< Param name, no spaces allowed */ - const char *label; /*!< Human readable label */ - const char *tooltip; /*!< Hint on the parameter */ - const char *dflt; /*!< Default value */ - enum rig_conf_e type; /*!< Type of the parameter */ - union { /*!< */ - struct { /*!< */ - float min; /*!< Minimum value */ - float max; /*!< Maximum value */ - float step; /*!< Step */ - } n; /*!< Numeric type */ - struct { /*!< */ - const char *combostr[RIG_COMBO_MAX]; /*!< Combo list */ - } c; /*!< Combo type */ - } u; /*!< Type union */ + token_t token; /*!< Conf param token ID */ + const char *name; /*!< Param name, no spaces allowed */ + const char *label; /*!< Human readable label */ + const char *tooltip; /*!< Hint on the parameter */ + const char *dflt; /*!< Default value */ + enum rig_conf_e type; /*!< Type of the parameter */ + union { /*!< */ + struct { /*!< */ + float min; /*!< Minimum value */ + float max; /*!< Maximum value */ + float step; /*!< Step */ + } n; /*!< Numeric type */ + struct { /*!< */ + const char *combostr[RIG_COMBO_MAX]; /*!< Combo list */ + } c; /*!< Combo type */ + } u; /*!< Type union */ }; -/** \brief Announce + +/** + * \brief Announce * * Designate optional speech synthesizer. */ typedef enum { - RIG_ANN_NONE = 0, /*!< None */ - RIG_ANN_OFF = RIG_ANN_NONE, /*!< disable announces */ - RIG_ANN_FREQ = (1<<0), /*!< Announce frequency */ - RIG_ANN_RXMODE = (1<<1), /*!< Announce receive mode */ - RIG_ANN_CW = (1<<2), /*!< CW */ - RIG_ANN_ENG = (1<<3), /*!< English */ - RIG_ANN_JAP = (1<<4) /*!< Japan */ + RIG_ANN_NONE = 0, /*!< None */ + RIG_ANN_OFF = RIG_ANN_NONE, /*!< disable announces */ + RIG_ANN_FREQ = (1 << 0), /*!< Announce frequency */ + RIG_ANN_RXMODE = (1 << 1), /*!< Announce receive mode */ + RIG_ANN_CW = (1 << 2), /*!< CW */ + RIG_ANN_ENG = (1 << 3), /*!< English */ + RIG_ANN_JAP = (1 << 4) /*!< Japan */ } ann_t; @@ -575,99 +617,103 @@ typedef enum { */ typedef int ant_t; -#define RIG_ANT_NONE 0 -#define RIG_ANT_N(n) ((ant_t)1<<(n)) -#define RIG_ANT_1 RIG_ANT_N(0) -#define RIG_ANT_2 RIG_ANT_N(1) -#define RIG_ANT_3 RIG_ANT_N(2) -#define RIG_ANT_4 RIG_ANT_N(3) -#define RIG_ANT_5 RIG_ANT_N(4) +#define RIG_ANT_NONE 0 +#define RIG_ANT_N(n) ((ant_t)1<<(n)) +#define RIG_ANT_1 RIG_ANT_N(0) +#define RIG_ANT_2 RIG_ANT_N(1) +#define RIG_ANT_3 RIG_ANT_N(2) +#define RIG_ANT_4 RIG_ANT_N(3) +#define RIG_ANT_5 RIG_ANT_N(4) + /** * \brief AGC delay settings */ /* TODO: kill me, and replace by real AGC delay */ enum agc_level_e { - RIG_AGC_OFF = 0, - RIG_AGC_SUPERFAST, - RIG_AGC_FAST, - RIG_AGC_SLOW, - RIG_AGC_USER, /*!< user selectable */ - RIG_AGC_MEDIUM, - RIG_AGC_AUTO + RIG_AGC_OFF = 0, + RIG_AGC_SUPERFAST, + RIG_AGC_FAST, + RIG_AGC_SLOW, + RIG_AGC_USER, /*!< user selectable */ + RIG_AGC_MEDIUM, + RIG_AGC_AUTO }; + /** * \brief Level display meters */ enum meter_level_e { - RIG_METER_NONE = 0, /*< No display meter */ - RIG_METER_SWR = (1<<0), /*< Stationary Wave Ratio */ - RIG_METER_COMP = (1<<1), /*< Compression level */ - RIG_METER_ALC = (1<<2), /*< ALC */ - RIG_METER_IC = (1<<3), /*< IC */ - RIG_METER_DB = (1<<4), /*< DB */ - RIG_METER_PO = (1<<5), /*< Power Out */ - RIG_METER_VDD = (1<<6) /*< Final Amp Voltage */ + RIG_METER_NONE = 0, /*< No display meter */ + RIG_METER_SWR = (1 << 0), /*< Stationary Wave Ratio */ + RIG_METER_COMP = (1 << 1), /*< Compression level */ + RIG_METER_ALC = (1 << 2), /*< ALC */ + RIG_METER_IC = (1 << 3), /*< IC */ + RIG_METER_DB = (1 << 4), /*< DB */ + RIG_METER_PO = (1 << 5), /*< Power Out */ + RIG_METER_VDD = (1 << 6) /*< Final Amp Voltage */ }; + /** * \brief Universal approach for passing values - * \sa rig_set_level, rig_get_level, rig_set_parm, rig_get_parm + * + * \sa rig_set_level(), rig_get_level(), rig_set_parm(), rig_get_parm() */ typedef union { - signed int i; /*!< Signed integer */ - float f; /*!< Single precision float */ - char *s; /*!< Pointer to char string */ - const char *cs; /*!< Pointer to constant char string */ + signed int i; /*!< Signed integer */ + float f; /*!< Single precision float */ + char *s; /*!< Pointer to char string */ + const char *cs; /*!< Pointer to constant char string */ } value_t; -/** \brief Rig Level Settings + +/** + * \brief Rig Level Settings * * Various operating levels supported by a rig.\n * \c STRING used in rigctl * - * \sa rig_parse_level() rig_strlevel() + * \sa rig_parse_level(), rig_strlevel() */ - enum rig_level_e { - RIG_LEVEL_NONE = 0, /*!< '' -- No Level */ - RIG_LEVEL_PREAMP = (1<<0), /*!< \c PREAMP -- Preamp, arg int (dB) */ - RIG_LEVEL_ATT = (1<<1), /*!< \c ATT -- Attenuator, arg int (dB) */ - RIG_LEVEL_VOX = (1<<2), /*!< \c VOX -- VOX delay, arg int (tenth of seconds) */ - RIG_LEVEL_AF = (1<<3), /*!< \c AF -- Volume, arg float [0.0 ... 1.0] */ - RIG_LEVEL_RF = (1<<4), /*!< \c RF -- RF gain (not TX power), arg float [0.0 ... 1.0] */ - RIG_LEVEL_SQL = (1<<5), /*!< \c SQL -- Squelch, arg float [0.0 ... 1.0] */ - RIG_LEVEL_IF = (1<<6), /*!< \c IF -- IF, arg int (Hz) */ - RIG_LEVEL_APF = (1<<7), /*!< \c APF -- Audio Peak Filter, arg float [0.0 ... 1.0] */ - RIG_LEVEL_NR = (1<<8), /*!< \c NR -- Noise Reduction, arg float [0.0 ... 1.0] */ - RIG_LEVEL_PBT_IN = (1<<9), /*!< \c PBT_IN -- Twin PBT (inside), arg float [0.0 ... 1.0] */ - RIG_LEVEL_PBT_OUT = (1<<10),/*!< \c PBT_OUT -- Twin PBT (outside), arg float [0.0 ... 1.0] */ - RIG_LEVEL_CWPITCH = (1<<11),/*!< \c CWPITCH -- CW pitch, arg int (Hz) */ - RIG_LEVEL_RFPOWER = (1<<12),/*!< \c RFPOWER -- RF Power, arg float [0.0 ... 1.0] */ - RIG_LEVEL_MICGAIN = (1<<13),/*!< \c MICGAIN -- MIC Gain, arg float [0.0 ... 1.0] */ - RIG_LEVEL_KEYSPD = (1<<14),/*!< \c KEYSPD -- Key Speed, arg int (WPM) */ - RIG_LEVEL_NOTCHF = (1<<15),/*!< \c NOTCHF -- Notch Freq., arg int (Hz) */ - RIG_LEVEL_COMP = (1<<16),/*!< \c COMP -- Compressor, arg float [0.0 ... 1.0] */ - RIG_LEVEL_AGC = (1<<17),/*!< \c AGC -- AGC, arg int (see enum agc_level_e) */ - RIG_LEVEL_BKINDL = (1<<18),/*!< \c BKINDL -- BKin Delay, arg int (tenth of dots) */ - RIG_LEVEL_BALANCE = (1<<19),/*!< \c BAL -- Balance (Dual Watch), arg float [0.0 ... 1.0] */ - RIG_LEVEL_METER = (1<<20),/*!< \c METER -- Display meter, arg int (see enum meter_level_e) */ + RIG_LEVEL_NONE = 0, /*!< '' -- No Level */ + RIG_LEVEL_PREAMP = (1 << 0), /*!< \c PREAMP -- Preamp, arg int (dB) */ + RIG_LEVEL_ATT = (1 << 1), /*!< \c ATT -- Attenuator, arg int (dB) */ + RIG_LEVEL_VOX = (1 << 2), /*!< \c VOX -- VOX delay, arg int (tenth of seconds) */ + RIG_LEVEL_AF = (1 << 3), /*!< \c AF -- Volume, arg float [0.0 ... 1.0] */ + RIG_LEVEL_RF = (1 << 4), /*!< \c RF -- RF gain (not TX power), arg float [0.0 ... 1.0] */ + RIG_LEVEL_SQL = (1 << 5), /*!< \c SQL -- Squelch, arg float [0.0 ... 1.0] */ + RIG_LEVEL_IF = (1 << 6), /*!< \c IF -- IF, arg int (Hz) */ + RIG_LEVEL_APF = (1 << 7), /*!< \c APF -- Audio Peak Filter, arg float [0.0 ... 1.0] */ + RIG_LEVEL_NR = (1 << 8), /*!< \c NR -- Noise Reduction, arg float [0.0 ... 1.0] */ + RIG_LEVEL_PBT_IN = (1 << 9), /*!< \c PBT_IN -- Twin PBT (inside), arg float [0.0 ... 1.0] */ + RIG_LEVEL_PBT_OUT = (1 << 10), /*!< \c PBT_OUT -- Twin PBT (outside), arg float [0.0 ... 1.0] */ + RIG_LEVEL_CWPITCH = (1 << 11), /*!< \c CWPITCH -- CW pitch, arg int (Hz) */ + RIG_LEVEL_RFPOWER = (1 << 12), /*!< \c RFPOWER -- RF Power, arg float [0.0 ... 1.0] */ + RIG_LEVEL_MICGAIN = (1 << 13), /*!< \c MICGAIN -- MIC Gain, arg float [0.0 ... 1.0] */ + RIG_LEVEL_KEYSPD = (1 << 14), /*!< \c KEYSPD -- Key Speed, arg int (WPM) */ + RIG_LEVEL_NOTCHF = (1 << 15), /*!< \c NOTCHF -- Notch Freq., arg int (Hz) */ + RIG_LEVEL_COMP = (1 << 16), /*!< \c COMP -- Compressor, arg float [0.0 ... 1.0] */ + RIG_LEVEL_AGC = (1 << 17), /*!< \c AGC -- AGC, arg int (see enum agc_level_e) */ + RIG_LEVEL_BKINDL = (1 << 18), /*!< \c BKINDL -- BKin Delay, arg int (tenth of dots) */ + RIG_LEVEL_BALANCE = (1 << 19), /*!< \c BAL -- Balance (Dual Watch), arg float [0.0 ... 1.0] */ + RIG_LEVEL_METER = (1 << 20), /*!< \c METER -- Display meter, arg int (see enum meter_level_e) */ + RIG_LEVEL_VOXGAIN = (1 << 21), /*!< \c VOXGAIN -- VOX gain level, arg float [0.0 ... 1.0] */ + RIG_LEVEL_VOXDELAY = RIG_LEVEL_VOX, /*!< Synonym of RIG_LEVEL_VOX */ + RIG_LEVEL_ANTIVOX = (1 << 22), /*!< \c ANTIVOX -- anti-VOX level, arg float [0.0 ... 1.0] */ + RIG_LEVEL_SLOPE_LOW = (1 << 23), /*!< \c SLOPE_LOW -- Slope tune, low frequency cut, */ + RIG_LEVEL_SLOPE_HIGH = (1 << 24), /*!< \c SLOPE_HIGH -- Slope tune, high frequency cut, */ + RIG_LEVEL_BKIN_DLYMS = (1 << 25), /*!< \c BKIN_DLYMS -- BKin Delay, arg int Milliseconds */ - RIG_LEVEL_VOXGAIN = (1<<21),/*!< \c VOXGAIN -- VOX gain level, arg float [0.0 ... 1.0] */ - RIG_LEVEL_VOXDELAY = RIG_LEVEL_VOX, /*!< Synonym of RIG_LEVEL_VOX */ - RIG_LEVEL_ANTIVOX = (1<<22),/*!< \c ANTIVOX -- anti-VOX level, arg float [0.0 ... 1.0] */ - RIG_LEVEL_SLOPE_LOW = (1<<23),/*!< \c SLOPE_LOW -- Slope tune, low frequency cut, */ - RIG_LEVEL_SLOPE_HIGH = (1<<24),/*!< \c SLOPE_HIGH -- Slope tune, high frequency cut, */ - RIG_LEVEL_BKIN_DLYMS = (1<<25),/*!< \c BKIN_DLYMS -- BKin Delay, arg int Milliseconds */ - - /*!< These are not settable */ - RIG_LEVEL_RAWSTR = (1<<26),/*!< \c RAWSTR -- Raw (A/D) value for signal strength, specific to each rig, arg int */ - RIG_LEVEL_SQLSTAT = (1<<27),/*!< \c SQLSTAT -- SQL status, arg int (open=1/closed=0). Deprecated, use get_dcd instead */ - RIG_LEVEL_SWR = (1<<28),/*!< \c SWR -- SWR, arg float [0.0 ... infinite] */ - RIG_LEVEL_ALC = (1<<29),/*!< \c ALC -- ALC, arg float */ - RIG_LEVEL_STRENGTH = (1<<30) /*!< \c STRENGTH -- Effective (calibrated) signal strength relative to S9, arg int (dB) */ - /*RIG_LEVEL_BWC = (1<<31)*/ /*!< Bandwidth Control, arg int (Hz) */ + /*!< These are not settable */ + RIG_LEVEL_RAWSTR = (1 << 26), /*!< \c RAWSTR -- Raw (A/D) value for signal strength, specific to each rig, arg int */ + RIG_LEVEL_SQLSTAT = (1 << 27), /*!< \c SQLSTAT -- SQL status, arg int (open=1/closed=0). Deprecated, use get_dcd instead */ + RIG_LEVEL_SWR = (1 << 28), /*!< \c SWR -- SWR, arg float [0.0 ... infinite] */ + RIG_LEVEL_ALC = (1 << 29), /*!< \c ALC -- ALC, arg float */ + RIG_LEVEL_STRENGTH = (1 << 30) /*!< \c STRENGTH -- Effective (calibrated) signal strength relative to S9, arg int (dB) */ + /* RIG_LEVEL_BWC = (1<<31) */ /*!< Bandwidth Control, arg int (Hz) */ }; #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) @@ -684,17 +730,17 @@ enum rig_level_e { * Parameters are settings that are not VFO specific.\n * \c STRING used in rigctl * - * \sa rig_parse_parm() rig_strparm() + * \sa rig_parse_parm(), rig_strparm() */ enum rig_parm_e { - RIG_PARM_NONE = 0, /*!< '' -- No Parm */ - RIG_PARM_ANN = (1<<0), /*!< \c ANN -- "Announce" level, see ann_t */ - RIG_PARM_APO = (1<<1), /*!< \c APO -- Auto power off, int in minute */ - RIG_PARM_BACKLIGHT = (1<<2), /*!< \c BACKLIGHT -- LCD light, float [0.0 ... 1.0] */ - RIG_PARM_BEEP = (1<<4), /*!< \c BEEP -- Beep on keypressed, int (0,1) */ - RIG_PARM_TIME = (1<<5), /*!< \c TIME -- hh:mm:ss, int in seconds from 00:00:00 */ - RIG_PARM_BAT = (1<<6), /*!< \c BAT -- battery level, float [0.0 ... 1.0] */ - RIG_PARM_KEYLIGHT = (1<<7) /*!< \c KEYLIGHT -- Button backlight, on/off */ + RIG_PARM_NONE = 0, /*!< '' -- No Parm */ + RIG_PARM_ANN = (1 << 0), /*!< \c ANN -- "Announce" level, see ann_t */ + RIG_PARM_APO = (1 << 1), /*!< \c APO -- Auto power off, int in minute */ + RIG_PARM_BACKLIGHT = (1 << 2), /*!< \c BACKLIGHT -- LCD light, float [0.0 ... 1.0] */ + RIG_PARM_BEEP = (1 << 4), /*!< \c BEEP -- Beep on keypressed, int (0,1) */ + RIG_PARM_TIME = (1 << 5), /*!< \c TIME -- hh:mm:ss, int in seconds from 00:00:00 */ + RIG_PARM_BAT = (1 << 6), /*!< \c BAT -- battery level, float [0.0 ... 1.0] */ + RIG_PARM_KEYLIGHT = (1 << 7) /*!< \c KEYLIGHT -- Button backlight, on/off */ }; #define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT) @@ -703,7 +749,9 @@ enum rig_parm_e { #define RIG_PARM_IS_FLOAT(l) ((l)&RIG_PARM_FLOAT_LIST) #define RIG_PARM_SET(l) ((l)&~RIG_PARM_READONLY_LIST) + #define RIG_SETTING_MAX 32 + /** * \brief Setting * @@ -712,13 +760,14 @@ enum rig_parm_e { */ typedef unsigned long setting_t; -/* - * tranceive mode, ie. the rig notify the host of any event, - * like freq changed, mode changed, etc. +/** + * \brief Tranceive mode + * + * The rig notifies the host of any event, like freq changed, mode changed, etc. */ -#define RIG_TRN_OFF 0 -#define RIG_TRN_RIG 1 -#define RIG_TRN_POLL 2 +#define RIG_TRN_OFF 0 +#define RIG_TRN_RIG 1 +#define RIG_TRN_POLL 2 /** @@ -727,7 +776,7 @@ typedef unsigned long setting_t; * Various operating functions supported by a rig.\n * \c STRING used in rigctl/rigctld * - * \sa rig_parse_func() rig_strfunc() + * \sa rig_parse_func(), rig_strfunc() */ /* * The C standard dictates that an enum constant is a 32 bit signed integer. @@ -738,49 +787,52 @@ typedef unsigned long setting_t; * have been used instead as a 'const unsigned long' which cannot be used to * initialize the func_str.func members. TNX KA6MAL, AC6SL. - N0NB */ -#define RIG_FUNC_NONE 0 /*!< '' -- No Function */ -#define RIG_FUNC_FAGC (1UL<<0) /*!< \c FAGC -- Fast AGC */ -#define RIG_FUNC_NB (1UL<<1) /*!< \c NB -- Noise Blanker */ -#define RIG_FUNC_COMP (1UL<<2) /*!< \c COMP -- Speech Compression */ -#define RIG_FUNC_VOX (1UL<<3) /*!< \c VOX -- Voice Operated Relay */ -#define RIG_FUNC_TONE (1UL<<4) /*!< \c TONE -- CTCSS Tone */ -#define RIG_FUNC_TSQL (1UL<<5) /*!< \c TSQL -- CTCSS Activate/De-activate */ -#define RIG_FUNC_SBKIN (1UL<<6) /*!< \c SBKIN -- Semi Break-in (CW mode) */ -#define RIG_FUNC_FBKIN (1UL<<7) /*!< \c FBKIN -- Full Break-in (CW mode) */ -#define RIG_FUNC_ANF (1UL<<8) /*!< \c ANF -- Automatic Notch Filter (DSP) */ -#define RIG_FUNC_NR (1UL<<9) /*!< \c NR -- Noise Reduction (DSP) */ -#define RIG_FUNC_AIP (1UL<<10) /*!< \c AIP -- RF pre-amp (AIP on Kenwood, IPO on Yaesu, etc.) */ -#define RIG_FUNC_APF (1UL<<11) /*!< \c APF -- Auto Passband/Audio Peak Filter */ -#define RIG_FUNC_MON (1UL<<12) /*!< \c MON -- Monitor transmitted signal */ -#define RIG_FUNC_MN (1UL<<13) /*!< \c MN -- Manual Notch */ -#define RIG_FUNC_RF (1UL<<14) /*!< \c RF -- RTTY Filter */ -#define RIG_FUNC_ARO (1UL<<15) /*!< \c ARO -- Auto Repeater Offset */ -#define RIG_FUNC_LOCK (1UL<<16) /*!< \c LOCK -- Lock */ -#define RIG_FUNC_MUTE (1UL<<17) /*!< \c MUTE -- Mute */ -#define RIG_FUNC_VSC (1UL<<18) /*!< \c VSC -- Voice Scan Control */ -#define RIG_FUNC_REV (1UL<<19) /*!< \c REV -- Reverse transmit and receive frequencies */ -#define RIG_FUNC_SQL (1UL<<20) /*!< \c SQL -- Turn Squelch Monitor on/off */ -#define RIG_FUNC_ABM (1UL<<21) /*!< \c ABM -- Auto Band Mode */ -#define RIG_FUNC_BC (1UL<<22) /*!< \c BC -- Beat Canceller */ -#define RIG_FUNC_MBC (1UL<<23) /*!< \c MBC -- Manual Beat Canceller */ -#define RIG_FUNC_RIT (1UL<<24) /*!< \c RIT -- Receiver Incremental Tuning */ -#define RIG_FUNC_AFC (1UL<<25) /*!< \c AFC -- Auto Frequency Control ON/OFF */ -#define RIG_FUNC_SATMODE (1UL<<26) /*!< \c SATMODE -- Satellite mode ON/OFF */ -#define RIG_FUNC_SCOPE (1UL<<27) /*!< \c SCOPE -- Simple bandscope ON/OFF */ -#define RIG_FUNC_RESUME (1UL<<28) /*!< \c RESUME -- Scan auto-resume */ -#define RIG_FUNC_TBURST (1UL<<29) /*!< \c TBURST -- 1750 Hz tone burst */ -#define RIG_FUNC_TUNER (1UL<<30) /*!< \c TUNER -- Enable automatic tuner */ -#define RIG_FUNC_XIT (1UL<<31) /*!< \c XIT -- Transmitter Incremental Tuning */ +#define RIG_FUNC_NONE 0 /*!< '' -- No Function */ +#define RIG_FUNC_FAGC (1UL<<0) /*!< \c FAGC -- Fast AGC */ +#define RIG_FUNC_NB (1UL<<1) /*!< \c NB -- Noise Blanker */ +#define RIG_FUNC_COMP (1UL<<2) /*!< \c COMP -- Speech Compression */ +#define RIG_FUNC_VOX (1UL<<3) /*!< \c VOX -- Voice Operated Relay */ +#define RIG_FUNC_TONE (1UL<<4) /*!< \c TONE -- CTCSS Tone */ +#define RIG_FUNC_TSQL (1UL<<5) /*!< \c TSQL -- CTCSS Activate/De-activate */ +#define RIG_FUNC_SBKIN (1UL<<6) /*!< \c SBKIN -- Semi Break-in (CW mode) */ +#define RIG_FUNC_FBKIN (1UL<<7) /*!< \c FBKIN -- Full Break-in (CW mode) */ +#define RIG_FUNC_ANF (1UL<<8) /*!< \c ANF -- Automatic Notch Filter (DSP) */ +#define RIG_FUNC_NR (1UL<<9) /*!< \c NR -- Noise Reduction (DSP) */ +#define RIG_FUNC_AIP (1UL<<10) /*!< \c AIP -- RF pre-amp (AIP on Kenwood, IPO on Yaesu, etc.) */ +#define RIG_FUNC_APF (1UL<<11) /*!< \c APF -- Auto Passband/Audio Peak Filter */ +#define RIG_FUNC_MON (1UL<<12) /*!< \c MON -- Monitor transmitted signal */ +#define RIG_FUNC_MN (1UL<<13) /*!< \c MN -- Manual Notch */ +#define RIG_FUNC_RF (1UL<<14) /*!< \c RF -- RTTY Filter */ +#define RIG_FUNC_ARO (1UL<<15) /*!< \c ARO -- Auto Repeater Offset */ +#define RIG_FUNC_LOCK (1UL<<16) /*!< \c LOCK -- Lock */ +#define RIG_FUNC_MUTE (1UL<<17) /*!< \c MUTE -- Mute */ +#define RIG_FUNC_VSC (1UL<<18) /*!< \c VSC -- Voice Scan Control */ +#define RIG_FUNC_REV (1UL<<19) /*!< \c REV -- Reverse transmit and receive frequencies */ +#define RIG_FUNC_SQL (1UL<<20) /*!< \c SQL -- Turn Squelch Monitor on/off */ +#define RIG_FUNC_ABM (1UL<<21) /*!< \c ABM -- Auto Band Mode */ +#define RIG_FUNC_BC (1UL<<22) /*!< \c BC -- Beat Canceller */ +#define RIG_FUNC_MBC (1UL<<23) /*!< \c MBC -- Manual Beat Canceller */ +#define RIG_FUNC_RIT (1UL<<24) /*!< \c RIT -- Receiver Incremental Tuning */ +#define RIG_FUNC_AFC (1UL<<25) /*!< \c AFC -- Auto Frequency Control ON/OFF */ +#define RIG_FUNC_SATMODE (1UL<<26) /*!< \c SATMODE -- Satellite mode ON/OFF */ +#define RIG_FUNC_SCOPE (1UL<<27) /*!< \c SCOPE -- Simple bandscope ON/OFF */ +#define RIG_FUNC_RESUME (1UL<<28) /*!< \c RESUME -- Scan auto-resume */ +#define RIG_FUNC_TBURST (1UL<<29) /*!< \c TBURST -- 1750 Hz tone burst */ +#define RIG_FUNC_TUNER (1UL<<30) /*!< \c TUNER -- Enable automatic tuner */ +#define RIG_FUNC_XIT (1UL<<31) /*!< \c XIT -- Transmitter Incremental Tuning */ -/* - * power unit macros, converts to mW - * This is limited to 2MW on 32 bits systems. +/** + * \brief power unit macros + * + * Converts a power level integer to milliwatts. This is limited to 2 + * Megawatts on 32 bit systems. */ -#define mW(p) ((int)(p)) -#define Watts(p) ((int)((p)*1000)) -#define W(p) Watts(p) -#define kW(p) ((int)((p)*1000000L)) +#define mW(p) ((int)(p)) +#define Watts(p) ((int)((p)*1000)) +#define W(p) Watts(p) +#define kW(p) ((int)((p)*1000000L)) + /** * \brief Radio mode @@ -788,45 +840,50 @@ typedef unsigned long setting_t; * Various modes supported by a rig.\n * \c STRING used in rigctl * - * \sa rig_parse_mode() rig_strrmode() + * \sa rig_parse_mode(), rig_strrmode() */ typedef enum { - RIG_MODE_NONE = 0, /*!< '' -- None */ - RIG_MODE_AM = (1<<0), /*!< \c AM -- Amplitude Modulation */ - RIG_MODE_CW = (1<<1), /*!< \c CW -- CW "normal" sideband */ - RIG_MODE_USB = (1<<2), /*!< \c USB -- Upper Side Band */ - RIG_MODE_LSB = (1<<3), /*!< \c LSB -- Lower Side Band */ - RIG_MODE_RTTY = (1<<4), /*!< \c RTTY -- Radio Teletype */ - RIG_MODE_FM = (1<<5), /*!< \c FM -- "narrow" band FM */ - RIG_MODE_WFM = (1<<6), /*!< \c WFM -- broadcast wide FM */ - RIG_MODE_CWR = (1<<7), /*!< \c CWR -- CW "reverse" sideband */ - RIG_MODE_RTTYR = (1<<8), /*!< \c RTTYR -- RTTY "reverse" sideband */ - RIG_MODE_AMS = (1<<9), /*!< \c AMS -- Amplitude Modulation Synchronous */ - RIG_MODE_PKTLSB = (1<<10),/*!< \c PKTLSB -- Packet/Digital LSB mode (dedicated port) */ - RIG_MODE_PKTUSB = (1<<11),/*!< \c PKTUSB -- Packet/Digital USB mode (dedicated port) */ - RIG_MODE_PKTFM = (1<<12),/*!< \c PKTFM -- Packet/Digital FM mode (dedicated port) */ - RIG_MODE_ECSSUSB = (1<<13),/*!< \c ECSSUSB -- Exalted Carrier Single Sideband USB */ - RIG_MODE_ECSSLSB = (1<<14),/*!< \c ECSSLSB -- Exalted Carrier Single Sideband LSB */ - RIG_MODE_FAX = (1<<15),/*!< \c FAX -- Facsimile Mode */ - RIG_MODE_SAM = (1<<16),/*!< \c SAM -- Synchronous AM double sideband */ - RIG_MODE_SAL = (1<<17),/*!< \c SAL -- Synchronous AM lower sideband */ - RIG_MODE_SAH = (1<<18),/*!< \c SAH -- Synchronous AM upper (higher) sideband */ - RIG_MODE_DSB = (1<<19),/*!< \c DSB -- Double sideband suppressed carrier */ - RIG_MODE_FMN = (1<<21),/*!< \c FMN -- FM Narrow Kenwood ts990s */ - RIG_MODE_TESTS_MAX /*!< \c MUST ALWAYS BE LAST, Max Count for dumpcaps.c */ + RIG_MODE_NONE = 0, /*!< '' -- None */ + RIG_MODE_AM = (1 << 0), /*!< \c AM -- Amplitude Modulation */ + RIG_MODE_CW = (1 << 1), /*!< \c CW -- CW "normal" sideband */ + RIG_MODE_USB = (1 << 2), /*!< \c USB -- Upper Side Band */ + RIG_MODE_LSB = (1 << 3), /*!< \c LSB -- Lower Side Band */ + RIG_MODE_RTTY = (1 << 4), /*!< \c RTTY -- Radio Teletype */ + RIG_MODE_FM = (1 << 5), /*!< \c FM -- "narrow" band FM */ + RIG_MODE_WFM = (1 << 6), /*!< \c WFM -- broadcast wide FM */ + RIG_MODE_CWR = (1 << 7), /*!< \c CWR -- CW "reverse" sideband */ + RIG_MODE_RTTYR = (1 << 8), /*!< \c RTTYR -- RTTY "reverse" sideband */ + RIG_MODE_AMS = (1 << 9), /*!< \c AMS -- Amplitude Modulation Synchronous */ + RIG_MODE_PKTLSB = (1 << 10), /*!< \c PKTLSB -- Packet/Digital LSB mode (dedicated port) */ + RIG_MODE_PKTUSB = (1 << 11), /*!< \c PKTUSB -- Packet/Digital USB mode (dedicated port) */ + RIG_MODE_PKTFM = (1 << 12), /*!< \c PKTFM -- Packet/Digital FM mode (dedicated port) */ + RIG_MODE_ECSSUSB = (1 << 13), /*!< \c ECSSUSB -- Exalted Carrier Single Sideband USB */ + RIG_MODE_ECSSLSB = (1 << 14), /*!< \c ECSSLSB -- Exalted Carrier Single Sideband LSB */ + RIG_MODE_FAX = (1 << 15), /*!< \c FAX -- Facsimile Mode */ + RIG_MODE_SAM = (1 << 16), /*!< \c SAM -- Synchronous AM double sideband */ + RIG_MODE_SAL = (1 << 17), /*!< \c SAL -- Synchronous AM lower sideband */ + RIG_MODE_SAH = (1 << 18), /*!< \c SAH -- Synchronous AM upper (higher) sideband */ + RIG_MODE_DSB = (1 << 19), /*!< \c DSB -- Double sideband suppressed carrier */ + RIG_MODE_FMN = (1 << 21), /*!< \c FMN -- FM Narrow Kenwood ts990s */ + RIG_MODE_TESTS_MAX /*!< \c MUST ALWAYS BE LAST, Max Count for dumpcaps.c */ } rmode_t; -/** \brief macro for backends, not to be used by rig_set_mode et al. */ -#define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB) +/** + * \brief macro for backends, not to be used by rig_set_mode et al. + */ +#define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB) -/** \brief macro for backends, not to be used by rig_set_mode et al. */ +/** + * \brief macro for backends, not to be used by rig_set_mode et al. + */ #define RIG_MODE_ECSS (RIG_MODE_ECSSUSB|RIG_MODE_ECSSLSB) -#define RIG_DBLST_END 0 /* end marker in a preamp/att level list */ +#define RIG_DBLST_END 0 /* end marker in a preamp/att level list */ #define RIG_IS_DBLST_END(d) ((d)==0) + /** * \brief Frequency range * @@ -834,145 +891,153 @@ typedef enum { * what frequencies your rig has access to. */ typedef struct freq_range_list { - freq_t start; /*!< Start frequency */ - freq_t end; /*!< End frequency */ - rmode_t modes; /*!< Bit field of RIG_MODE's */ - int low_power; /*!< Lower RF power in mW, -1 for no power (ie. rx list) */ - int high_power; /*!< Higher RF power in mW, -1 for no power (ie. rx list) */ - vfo_t vfo; /*!< VFO list equipped with this range */ - ant_t ant; /*!< Antenna list equipped with this range, 0 means all */ + freq_t start; /*!< Start frequency */ + freq_t end; /*!< End frequency */ + rmode_t modes; /*!< Bit field of RIG_MODE's */ + int low_power; /*!< Lower RF power in mW, -1 for no power (ie. rx list) */ + int high_power; /*!< Higher RF power in mW, -1 for no power (ie. rx list) */ + vfo_t vfo; /*!< VFO list equipped with this range */ + ant_t ant; /*!< Antenna list equipped with this range, 0 means all */ } freq_range_t; -#define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE} -#define RIG_IS_FRNG_END(r) ((r).start == Hz(0) && (r).end == Hz(0)) +#define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE} +#define RIG_IS_FRNG_END(r) ((r).start == Hz(0) && (r).end == Hz(0)) + #define RIG_ITU_REGION1 1 #define RIG_ITU_REGION2 2 #define RIG_ITU_REGION3 3 + /** * \brief Tuning step definition * * Lists the tuning steps available for each mode. * - * If a ts field in the list has RIG_TS_ANY value, - * this means the rig allows its tuning step to be - * set to any value ranging from the lowest to the - * highest (if any) value in the list for that mode. - * The tuning step must be sorted in the ascending - * order, and the RIG_TS_ANY value, if present, must + * If a ts field in the list has RIG_TS_ANY value, this means the rig allows + * its tuning step to be set to any value ranging from the lowest to the + * highest (if any) value in the list for that mode. The tuning step must be + * sorted in the ascending order, and the RIG_TS_ANY value, if present, must * be the last one in the list. * - * Note also that the minimum frequency resolution - * of the rig is determined by the lowest value - * in the Tuning step list. + * Note also that the minimum frequency resolution of the rig is determined by + * the lowest value in the Tuning step list. * - * \sa rig_set_ts, rig_get_resolution + * \sa rig_set_ts(), rig_get_resolution() */ struct tuning_step_list { - rmode_t modes; /*!< Bit field of RIG_MODE's */ - shortfreq_t ts; /*!< Tuning step in Hz */ + rmode_t modes; /*!< Bit field of RIG_MODE's */ + shortfreq_t ts; /*!< Tuning step in Hz */ }; -#define RIG_TS_ANY 0 -#define RIG_TS_END {RIG_MODE_NONE,0} -#define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0) +#define RIG_TS_ANY 0 +#define RIG_TS_END {RIG_MODE_NONE, 0} +#define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0) + /** * \brief Filter definition * * Lists the filters available for each mode. * - * If more than one filter is available for a given mode, - * the first entry in the array will be the default - * filter to use for the normal passband of this mode. - * The first entry in the array below the default normal passband - * is the default narrow passband and the first entry in the array - * above the default normal passband is the default wide passband. - * Note: if there's no lower width or upper width, then narrow or - * respectively wide passband is equal to the default normal passband. + * If more than one filter is available for a given mode, the first entry in + * the array will be the default filter to use for the normal passband of this + * mode. The first entry in the array below the default normal passband is + * the default narrow passband and the first entry in the array above the + * default normal passband is the default wide passband. Note: if there's no + * lower width or upper width, then narrow or respectively wide passband is + * equal to the default normal passband. * - * If a width field in the list has RIG_FLT_ANY value, - * this means the rig allows its passband width to be - * set to any value ranging from the lowest to the - * highest value (if any) in the list for that mode. - * The RIG_FLT_ANY value, if present, must - * be the last one in the list. + * If a width field in the list has RIG_FLT_ANY value, this means the rig + * allows its passband width to be set to any value ranging from the lowest to + * the highest value (if any) in the list for that mode. The RIG_FLT_ANY + * value, if present, must be the last one in the list. * - * The width field is the narrowest passband in a transmit/receive chain - * with regard to different IF. + * The width field is the narrowest passband in a transmit/receive chain with + * regard to different IF. * - * \sa rig_set_mode, rig_passband_normal, rig_passband_narrow, rig_passband_wide + * \sa rig_set_mode(), rig_passband_normal(), rig_passband_narrow(), rig_passband_wide() */ struct filter_list { - rmode_t modes; /*!< Bit field of RIG_MODE's */ - pbwidth_t width; /*!< Passband width in Hz */ + rmode_t modes; /*!< Bit field of RIG_MODE's */ + pbwidth_t width; /*!< Passband width in Hz */ }; -#define RIG_FLT_ANY 0 -#define RIG_FLT_END {RIG_MODE_NONE,0} -#define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE) +#define RIG_FLT_ANY 0 +#define RIG_FLT_END {RIG_MODE_NONE, 0} +#define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE) -/** \brief Empty channel_t.flags field */ -#define RIG_CHFLAG_NONE 0 -/** \brief skip memory channel during scan (lock out), channel_t.flags */ -#define RIG_CHFLAG_SKIP (1<<0) -/** \brief DATA port mode flag */ -#define RIG_CHFLAG_DATA (1<<1) +/** + * \brief Empty channel_t.flags field + */ +#define RIG_CHFLAG_NONE 0 +/** + * \brief skip memory channel during scan (lock out), channel_t.flags + */ +#define RIG_CHFLAG_SKIP (1<<0) +/** + * \brief DATA port mode flag + */ +#define RIG_CHFLAG_DATA (1<<1) + /** * \brief Extension attribute definition * */ struct ext_list { - token_t token; /*!< Token ID */ - value_t val; /*!< Value */ + token_t token; /*!< Token ID */ + value_t val; /*!< Value */ }; #define RIG_EXT_END {0, {.i=0}} -#define RIG_IS_EXT_END(x) ((x).token == 0) +#define RIG_IS_EXT_END(x) ((x).token == 0) /** * \brief Channel structure * * The channel struct stores all the attributes peculiar to a VFO. * - * \sa rig_set_channel, rig_get_channel + * \sa rig_set_channel(), rig_get_channel() */ struct channel { - int channel_num; /*!< Channel number */ - int bank_num; /*!< Bank number */ - vfo_t vfo; /*!< VFO */ - int ant; /*!< Selected antenna */ - freq_t freq; /*!< Receive frequency */ - rmode_t mode; /*!< Receive mode */ - pbwidth_t width; /*!< Receive passband width associated with mode */ + int channel_num; /*!< Channel number */ + int bank_num; /*!< Bank number */ + vfo_t vfo; /*!< VFO */ + int ant; /*!< Selected antenna */ + freq_t freq; /*!< Receive frequency */ + rmode_t mode; /*!< Receive mode */ + pbwidth_t width; /*!< Receive passband width associated with mode */ - freq_t tx_freq; /*!< Transmit frequency */ - rmode_t tx_mode; /*!< Transmit mode */ - pbwidth_t tx_width; /*!< Transmit passband width associated with mode */ + freq_t tx_freq; /*!< Transmit frequency */ + rmode_t tx_mode; /*!< Transmit mode */ + pbwidth_t tx_width; /*!< Transmit passband width associated with mode */ - split_t split; /*!< Split mode */ - vfo_t tx_vfo; /*!< Split transmit VFO */ + split_t split; /*!< Split mode */ + vfo_t tx_vfo; /*!< Split transmit VFO */ - rptr_shift_t rptr_shift; /*!< Repeater shift */ - shortfreq_t rptr_offs; /*!< Repeater offset */ - shortfreq_t tuning_step; /*!< Tuning step */ - shortfreq_t rit; /*!< RIT */ - shortfreq_t xit; /*!< XIT */ - setting_t funcs; /*!< Function status */ - value_t levels[RIG_SETTING_MAX]; /*!< Level values */ - tone_t ctcss_tone; /*!< CTCSS tone */ - tone_t ctcss_sql; /*!< CTCSS squelch tone */ - tone_t dcs_code; /*!< DCS code */ - tone_t dcs_sql; /*!< DCS squelch code */ - int scan_group; /*!< Scan group */ - int flags; /*!< Channel flags, see RIG_CHFLAG's */ - char channel_desc[MAXCHANDESC]; /*!< Name */ - struct ext_list *ext_levels; /*!< Extension level value list, NULL ended. ext_levels can be NULL */ + rptr_shift_t rptr_shift; /*!< Repeater shift */ + shortfreq_t rptr_offs; /*!< Repeater offset */ + shortfreq_t tuning_step; /*!< Tuning step */ + shortfreq_t rit; /*!< RIT */ + shortfreq_t xit; /*!< XIT */ + setting_t funcs; /*!< Function status */ + value_t levels[RIG_SETTING_MAX]; /*!< Level values */ + tone_t ctcss_tone; /*!< CTCSS tone */ + tone_t ctcss_sql; /*!< CTCSS squelch tone */ + tone_t dcs_code; /*!< DCS code */ + tone_t dcs_sql; /*!< DCS squelch code */ + int scan_group; /*!< Scan group */ + int flags; /*!< Channel flags, see RIG_CHFLAG's */ + char channel_desc[MAXCHANDESC]; /*!< Name */ + struct ext_list + *ext_levels; /*!< Extension level value list, NULL ended. ext_levels can be NULL */ }; -/** \brief Channel structure typedef */ + +/** + * \brief Channel structure typedef + */ typedef struct channel channel_t; /** @@ -981,37 +1046,39 @@ typedef struct channel channel_t; * Definition of the attributes that can be stored/retrieved in/from memory */ struct channel_cap { - unsigned bank_num:1; /*!< Bank number */ - unsigned vfo:1; /*!< VFO */ - unsigned ant:1; /*!< Selected antenna */ - unsigned freq:1; /*!< Receive frequency */ - unsigned mode:1; /*!< Receive mode */ - unsigned width:1; /*!< Receive passband width associated with mode */ + unsigned bank_num: 1; /*!< Bank number */ + unsigned vfo: 1; /*!< VFO */ + unsigned ant: 1; /*!< Selected antenna */ + unsigned freq: 1; /*!< Receive frequency */ + unsigned mode: 1; /*!< Receive mode */ + unsigned width: 1; /*!< Receive passband width associated with mode */ - unsigned tx_freq:1; /*!< Transmit frequency */ - unsigned tx_mode:1; /*!< Transmit mode */ - unsigned tx_width:1; /*!< Transmit passband width associated with mode */ + unsigned tx_freq: 1; /*!< Transmit frequency */ + unsigned tx_mode: 1; /*!< Transmit mode */ + unsigned tx_width: 1; /*!< Transmit passband width associated with mode */ - unsigned split:1; /*!< Split mode */ - unsigned tx_vfo:1; /*!< Split transmit VFO */ - unsigned rptr_shift:1; /*!< Repeater shift */ - unsigned rptr_offs:1; /*!< Repeater offset */ - unsigned tuning_step:1; /*!< Tuning step */ - unsigned rit:1; /*!< RIT */ - unsigned xit:1; /*!< XIT */ - setting_t funcs; /*!< Function status */ - setting_t levels; /*!< Level values */ - unsigned ctcss_tone:1; /*!< CTCSS tone */ - unsigned ctcss_sql:1; /*!< CTCSS squelch tone */ - unsigned dcs_code:1; /*!< DCS code */ - unsigned dcs_sql:1; /*!< DCS squelch code */ - unsigned scan_group:1; /*!< Scan group */ - unsigned flags:1; /*!< Channel flags */ - unsigned channel_desc:1; /*!< Name */ - unsigned ext_levels:1; /*!< Extension level value list */ + unsigned split: 1; /*!< Split mode */ + unsigned tx_vfo: 1; /*!< Split transmit VFO */ + unsigned rptr_shift: 1; /*!< Repeater shift */ + unsigned rptr_offs: 1; /*!< Repeater offset */ + unsigned tuning_step: 1; /*!< Tuning step */ + unsigned rit: 1; /*!< RIT */ + unsigned xit: 1; /*!< XIT */ + setting_t funcs; /*!< Function status */ + setting_t levels; /*!< Level values */ + unsigned ctcss_tone: 1; /*!< CTCSS tone */ + unsigned ctcss_sql: 1; /*!< CTCSS squelch tone */ + unsigned dcs_code: 1; /*!< DCS code */ + unsigned dcs_sql: 1; /*!< DCS squelch code */ + unsigned scan_group: 1; /*!< Scan group */ + unsigned flags: 1; /*!< Channel flags */ + unsigned channel_desc: 1; /*!< Name */ + unsigned ext_levels: 1; /*!< Extension level value list */ }; -/** \brief Channel cap */ +/** + * \brief Channel cap + */ typedef struct channel_cap channel_cap_t; @@ -1023,75 +1090,87 @@ typedef struct channel_cap channel_cap_t; * For instance, a RIG_MTYPE_EDGE channel_t will hold only a start * or stop frequency. * - * \sa chan_list + * \sa chan_list() */ typedef enum { - RIG_MTYPE_NONE=0, /*!< None */ - RIG_MTYPE_MEM, /*!< Regular */ - RIG_MTYPE_EDGE, /*!< Scan edge */ - RIG_MTYPE_CALL, /*!< Call channel */ - RIG_MTYPE_MEMOPAD, /*!< Memory pad */ - RIG_MTYPE_SAT, /*!< Satellite */ - RIG_MTYPE_BAND, /*!< VFO/Band channel */ - RIG_MTYPE_PRIO /*!< Priority channel */ + RIG_MTYPE_NONE = 0, /*!< None */ + RIG_MTYPE_MEM, /*!< Regular */ + RIG_MTYPE_EDGE, /*!< Scan edge */ + RIG_MTYPE_CALL, /*!< Call channel */ + RIG_MTYPE_MEMOPAD, /*!< Memory pad */ + RIG_MTYPE_SAT, /*!< Satellite */ + RIG_MTYPE_BAND, /*!< VFO/Band channel */ + RIG_MTYPE_PRIO /*!< Priority channel */ } chan_type_t; + /** * \brief Memory channel list definition * * Example for the Ic706MkIIG (99 memory channels, 2 scan edges, 2 call chans): \code - chan_t chan_list[] = { - { 1, 99, RIG_MTYPE_MEM }, - { 100, 103, RIG_MTYPE_EDGE }, - { 104, 105, RIG_MTYPE_CALL }, - RIG_CHAN_END - } + chan_t chan_list[] = { + { 1, 99, RIG_MTYPE_MEM }, + { 100, 103, RIG_MTYPE_EDGE }, + { 104, 105, RIG_MTYPE_CALL }, + RIG_CHAN_END + } \endcode */ struct chan_list { - int start; /*!< Starting memory channel \b number */ - int end; /*!< Ending memory channel \b number */ - chan_type_t type; /*!< Memory type. see chan_type_t */ - channel_cap_t mem_caps; /*!< Definition of attributes that can be stored/retrieved */ + int start; /*!< Starting memory channel \b number */ + int end; /*!< Ending memory channel \b number */ + chan_type_t type; /*!< Memory type. see chan_type_t */ + channel_cap_t + mem_caps; /*!< Definition of attributes that can be stored/retrieved */ }; -#define RIG_CHAN_END {0,0,RIG_MTYPE_NONE} -#define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE) -/** \brief Special memory channel value to tell rig_lookup_mem_caps() to retrieve all the ranges */ -#define RIG_MEM_CAPS_ALL -1 +#define RIG_CHAN_END {0,0,RIG_MTYPE_NONE} +#define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE) -/** \brief chan_t type */ +/** + * \brief Special memory channel value to tell rig_lookup_mem_caps() to retrieve all the ranges + */ +#define RIG_MEM_CAPS_ALL -1 + +/** + * \brief chan_t type + */ typedef struct chan_list chan_t; + /** * \brief level/parm granularity definition * - * The granularity is undefined if min=0, max=0, and step=0. + * The granularity is undefined if min = 0, max = 0, and step = 0. * - * For float settings, if min.f=0 and max.f=0 (and step.f!=0), - * max.f is assumed to be actually equal to 1.0. + * For float settings, if min.f = 0 and max.f = 0 (and step.f! = 0), max.f is + * assumed to be actually equal to 1.0. * - * If step=0 (and min and/or max are not null), then this means step - * can have maximum resolution, depending on type (int or float). + * If step = 0 (and min and/or max are not null), then this means step can + * have maximum resolution, depending on type (int or float). */ struct gran { - value_t min; /*!< Minimum value */ - value_t max; /*!< Maximum value */ - value_t step; /*!< Step */ + value_t min; /*!< Minimum value */ + value_t max; /*!< Maximum value */ + value_t step; /*!< Step */ }; -/** \brief gran_t type */ -typedef struct gran gran_t; +/** + * \brief gran_t type + */ +typedef struct gran gran_t; -/** \brief Calibration table struct */ +/** + * \brief Calibration table struct + */ struct cal_table { - int size; /*!< number of plots in the table */ - struct { - int raw; /*!< raw (A/D) value, as returned by \a RIG_LEVEL_RAWSTR */ - int val; /*!< associated value, basically the measured dB value */ - } table[MAX_CAL_LENGTH]; /*!< table of plots */ + int size; /*!< number of plots in the table */ + struct { + int raw; /*!< raw (A/D) value, as returned by \a RIG_LEVEL_RAWSTR */ + int val; /*!< associated value, basically the measured dB value */ + } table[MAX_CAL_LENGTH]; /*!< table of plots */ }; /** @@ -1111,287 +1190,331 @@ typedef struct cal_table cal_table_t; #define EMPTY_STR_CAL { 0, { { 0, 0 }, } } -typedef int (*chan_cb_t) (RIG *, channel_t**, int, const chan_t*, rig_ptr_t); -typedef int (*confval_cb_t) (RIG *, const struct confparams *, value_t *, rig_ptr_t); +typedef int (* chan_cb_t)(RIG *, channel_t **, int, const chan_t *, rig_ptr_t); +typedef int (* confval_cb_t)(RIG *, + const struct confparams *, + value_t *, + rig_ptr_t); + /** * \brief Rig data structure. * - * Basic rig type, can store some useful info about different radios. - * Each lib must be able to populate this structure, so we can make - * useful inquiries about capabilities. + * Basic rig type, can store some useful info about different radios. Each + * backend must be able to populate this structure, so we can make useful + * inquiries about capabilities. + * + * The main idea of this struct is that it will be defined by the backend rig + * driver, and will remain readonly for the application. Fields that need to + * be modifiable by the application are copied into the struct rig_state, + * which is a kind of private storage of the RIG instance. * - * The main idea of this struct is that it will be defined by the backend - * rig driver, and will remain readonly for the application. - * Fields that need to be modifiable by the application are - * copied into the struct rig_state, which is a kind of private - * of the RIG instance. * This way, you can have several rigs running within the same application, * sharing the struct rig_caps of the backend, while keeping their own * customized data. - * NB: don't move fields around, as backend depends on it when initializing - * their caps. + * + * NB: Don't move fields around, as the backends depend on it when + * initializing their caps. */ struct rig_caps { - rig_model_t rig_model; /*!< Rig model. */ - const char *model_name; /*!< Model name. */ - const char *mfg_name; /*!< Manufacturer. */ - const char *version; /*!< Driver version. */ - const char *copyright; /*!< Copyright info. */ - enum rig_status_e status; /*!< Driver status. */ + rig_model_t rig_model; /*!< Rig model. */ + const char *model_name; /*!< Model name. */ + const char *mfg_name; /*!< Manufacturer. */ + const char *version; /*!< Driver version. */ + const char *copyright; /*!< Copyright info. */ + enum rig_status_e status; /*!< Driver status. */ - int rig_type; /*!< Rig type. */ - ptt_type_t ptt_type; /*!< Type of the PTT port. */ - dcd_type_t dcd_type; /*!< Type of the DCD port. */ - rig_port_t port_type; /*!< Type of communication port. */ + int rig_type; /*!< Rig type. */ + ptt_type_t ptt_type; /*!< Type of the PTT port. */ + dcd_type_t dcd_type; /*!< Type of the DCD port. */ + rig_port_t port_type; /*!< Type of communication port. */ - int serial_rate_min; /*!< Minimum serial speed. */ - int serial_rate_max; /*!< Maximum serial speed. */ - int serial_data_bits; /*!< Number of data bits. */ - int serial_stop_bits; /*!< Number of stop bits. */ - enum serial_parity_e serial_parity; /*!< Parity. */ - enum serial_handshake_e serial_handshake; /*!< Handshake. */ + int serial_rate_min; /*!< Minimum serial speed. */ + int serial_rate_max; /*!< Maximum serial speed. */ + int serial_data_bits; /*!< Number of data bits. */ + int serial_stop_bits; /*!< Number of stop bits. */ + enum serial_parity_e serial_parity; /*!< Parity. */ + enum serial_handshake_e serial_handshake; /*!< Handshake. */ - int write_delay; /*!< Delay between each byte sent out, in mS */ - int post_write_delay; /*!< Delay between each commands send out, in mS */ - int timeout; /*!< Timeout, in mS */ - int retry; /*!< Maximum number of retries if command fails, 0 to disable */ + int write_delay; /*!< Delay between each byte sent out, in mS */ + int post_write_delay; /*!< Delay between each commands send out, in mS */ + int timeout; /*!< Timeout, in mS */ + int retry; /*!< Maximum number of retries if command fails, 0 to disable */ - setting_t has_get_func; /*!< List of get functions */ - setting_t has_set_func; /*!< List of set functions */ - setting_t has_get_level; /*!< List of get level */ - setting_t has_set_level; /*!< List of set level */ - setting_t has_get_parm; /*!< List of get parm */ - setting_t has_set_parm; /*!< List of set parm */ + setting_t has_get_func; /*!< List of get functions */ + setting_t has_set_func; /*!< List of set functions */ + setting_t has_get_level; /*!< List of get level */ + setting_t has_set_level; /*!< List of set level */ + setting_t has_get_parm; /*!< List of get parm */ + setting_t has_set_parm; /*!< List of set parm */ - gran_t level_gran[RIG_SETTING_MAX]; /*!< level granularity (i.e. steps) */ - gran_t parm_gran[RIG_SETTING_MAX]; /*!< parm granularity (i.e. steps) */ + gran_t level_gran[RIG_SETTING_MAX]; /*!< level granularity (i.e. steps) */ + gran_t parm_gran[RIG_SETTING_MAX]; /*!< parm granularity (i.e. steps) */ - const struct confparams *extparms; /*!< Extension parm list, \sa ext.c */ - const struct confparams *extlevels; /*!< Extension level list, \sa ext.c */ + const struct confparams *extparms; /*!< Extension parm list, \sa ext.c */ + const struct confparams *extlevels; /*!< Extension level list, \sa ext.c */ - const tone_t *ctcss_list; /*!< CTCSS tones list, zero ended */ - const tone_t *dcs_list; /*!< DCS code list, zero ended */ + const tone_t *ctcss_list; /*!< CTCSS tones list, zero ended */ + const tone_t *dcs_list; /*!< DCS code list, zero ended */ - int preamp[MAXDBLSTSIZ]; /*!< Preamp list in dB, 0 terminated */ - int attenuator[MAXDBLSTSIZ]; /*!< Preamp list in dB, 0 terminated */ - shortfreq_t max_rit; /*!< max absolute RIT */ - shortfreq_t max_xit; /*!< max absolute XIT */ - shortfreq_t max_ifshift; /*!< max absolute IF-SHIFT */ + int preamp[MAXDBLSTSIZ]; /*!< Preamp list in dB, 0 terminated */ + int attenuator[MAXDBLSTSIZ]; /*!< Preamp list in dB, 0 terminated */ + shortfreq_t max_rit; /*!< max absolute RIT */ + shortfreq_t max_xit; /*!< max absolute XIT */ + shortfreq_t max_ifshift; /*!< max absolute IF-SHIFT */ - ann_t announces; /*!< Announces bit field list */ + ann_t announces; /*!< Announces bit field list */ - vfo_op_t vfo_ops; /*!< VFO op bit field list */ - scan_t scan_ops; /*!< Scan bit field list */ - int targetable_vfo; /*!< Bit field list of direct VFO access commands */ - int transceive; /*!< Supported transceive mode */ + vfo_op_t vfo_ops; /*!< VFO op bit field list */ + scan_t scan_ops; /*!< Scan bit field list */ + int targetable_vfo; /*!< Bit field list of direct VFO access commands */ + int transceive; /*!< Supported transceive mode */ - int bank_qty; /*!< Number of banks */ - int chan_desc_sz; /*!< Max length of memory channel name */ + int bank_qty; /*!< Number of banks */ + int chan_desc_sz; /*!< Max length of memory channel name */ - chan_t chan_list[CHANLSTSIZ]; /*!< Channel list, zero ended */ + chan_t chan_list[CHANLSTSIZ]; /*!< Channel list, zero ended */ - freq_range_t rx_range_list1[FRQRANGESIZ]; /*!< Receive frequency range list for ITU region 1 */ - freq_range_t tx_range_list1[FRQRANGESIZ]; /*!< Transmit frequency range list for ITU region 1 */ - freq_range_t rx_range_list2[FRQRANGESIZ]; /*!< Receive frequency range list for ITU region 2 */ - freq_range_t tx_range_list2[FRQRANGESIZ]; /*!< Transmit frequency range list for ITU region 2 */ + freq_range_t rx_range_list1[FRQRANGESIZ]; /*!< Receive frequency range list for ITU region 1 */ + freq_range_t tx_range_list1[FRQRANGESIZ]; /*!< Transmit frequency range list for ITU region 1 */ + freq_range_t rx_range_list2[FRQRANGESIZ]; /*!< Receive frequency range list for ITU region 2 */ + freq_range_t tx_range_list2[FRQRANGESIZ]; /*!< Transmit frequency range list for ITU region 2 */ - struct tuning_step_list tuning_steps[TSLSTSIZ]; /*!< Tuning step list */ - struct filter_list filters[FLTLSTSIZ]; /*!< mode/filter table, at -6dB */ + struct tuning_step_list tuning_steps[TSLSTSIZ]; /*!< Tuning step list */ + struct filter_list filters[FLTLSTSIZ]; /*!< mode/filter table, at -6dB */ - cal_table_t str_cal; /*!< S-meter calibration table */ + cal_table_t str_cal; /*!< S-meter calibration table */ - const struct confparams *cfgparams; /*!< Configuration parametres. */ - const rig_ptr_t priv; /*!< Private data. */ + const struct confparams *cfgparams; /*!< Configuration parametres. */ + const rig_ptr_t priv; /*!< Private data. */ - /* - * Rig API - * - */ + /* + * Rig API + * + */ - int (*rig_init) (RIG * rig); - int (*rig_cleanup) (RIG * rig); - int (*rig_open) (RIG * rig); - int (*rig_close) (RIG * rig); + int (*rig_init)(RIG *rig); + int (*rig_cleanup)(RIG *rig); + int (*rig_open)(RIG *rig); + int (*rig_close)(RIG *rig); - /* - * General API commands, from most primitive to least.. :() - * List Set/Get functions pairs - */ + /* + * General API commands, from most primitive to least.. :() + * List Set/Get functions pairs + */ - int (*set_freq) (RIG * rig, vfo_t vfo, freq_t freq); - int (*get_freq) (RIG * rig, vfo_t vfo, freq_t * freq); + int (*set_freq)(RIG *rig, vfo_t vfo, freq_t freq); + int (*get_freq)(RIG *rig, vfo_t vfo, freq_t *freq); - int (*set_mode) (RIG * rig, vfo_t vfo, rmode_t mode, - pbwidth_t width); - int (*get_mode) (RIG * rig, vfo_t vfo, rmode_t * mode, - pbwidth_t * width); + int (*set_mode)(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width); + int (*get_mode)(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width); - int (*set_vfo) (RIG * rig, vfo_t vfo); - int (*get_vfo) (RIG * rig, vfo_t * vfo); + int (*set_vfo)(RIG *rig, vfo_t vfo); + int (*get_vfo)(RIG *rig, vfo_t *vfo); - int (*set_ptt) (RIG * rig, vfo_t vfo, ptt_t ptt); - int (*get_ptt) (RIG * rig, vfo_t vfo, ptt_t * ptt); - int (*get_dcd) (RIG * rig, vfo_t vfo, dcd_t * dcd); + int (*set_ptt)(RIG *rig, vfo_t vfo, ptt_t ptt); + int (*get_ptt)(RIG *rig, vfo_t vfo, ptt_t *ptt); - int (*set_rptr_shift) (RIG * rig, vfo_t vfo, - rptr_shift_t rptr_shift); - int (*get_rptr_shift) (RIG * rig, vfo_t vfo, - rptr_shift_t * rptr_shift); + int (*get_dcd)(RIG *rig, vfo_t vfo, dcd_t *dcd); - int (*set_rptr_offs) (RIG * rig, vfo_t vfo, shortfreq_t offs); - int (*get_rptr_offs) (RIG * rig, vfo_t vfo, shortfreq_t * offs); + int (*set_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift); + int (*get_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift); - int (*set_split_freq) (RIG * rig, vfo_t vfo, freq_t tx_freq); - int (*get_split_freq) (RIG * rig, vfo_t vfo, freq_t * tx_freq); - int (*set_split_mode) (RIG * rig, vfo_t vfo, rmode_t tx_mode, - pbwidth_t tx_width); - int (*get_split_mode) (RIG * rig, vfo_t vfo, rmode_t * tx_mode, - pbwidth_t * tx_width); - int (*set_split_freq_mode) (RIG * rig, vfo_t vfo, freq_t tx_freq, - rmode_t tx_mode, pbwidth_t tx_width); - int (*get_split_freq_mode) (RIG * rig, vfo_t vfo, freq_t * tx_freq, - rmode_t * tx_mode, pbwidth_t * tx_width); + int (*set_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t offs); + int (*get_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t *offs); - int (*set_split_vfo) (RIG * rig, vfo_t vfo, split_t split, vfo_t tx_vfo); - int (*get_split_vfo) (RIG * rig, vfo_t vfo, split_t * split, vfo_t *tx_vfo); + int (*set_split_freq)(RIG *rig, vfo_t vfo, freq_t tx_freq); + int (*get_split_freq)(RIG *rig, vfo_t vfo, freq_t *tx_freq); - int (*set_rit) (RIG * rig, vfo_t vfo, shortfreq_t rit); - int (*get_rit) (RIG * rig, vfo_t vfo, shortfreq_t * rit); - int (*set_xit) (RIG * rig, vfo_t vfo, shortfreq_t xit); - int (*get_xit) (RIG * rig, vfo_t vfo, shortfreq_t * xit); + int (*set_split_mode)(RIG *rig, + vfo_t vfo, + rmode_t tx_mode, + pbwidth_t tx_width); + int (*get_split_mode)(RIG *rig, + vfo_t vfo, + rmode_t *tx_mode, + pbwidth_t *tx_width); - int (*set_ts) (RIG * rig, vfo_t vfo, shortfreq_t ts); - int (*get_ts) (RIG * rig, vfo_t vfo, shortfreq_t * ts); + int (*set_split_freq_mode)(RIG *rig, + vfo_t vfo, + freq_t tx_freq, + rmode_t tx_mode, + pbwidth_t tx_width); + int (*get_split_freq_mode)(RIG *rig, + vfo_t vfo, + freq_t *tx_freq, + rmode_t *tx_mode, + pbwidth_t *tx_width); - int (*set_dcs_code) (RIG * rig, vfo_t vfo, tone_t code); - int (*get_dcs_code) (RIG * rig, vfo_t vfo, tone_t * code); - int (*set_tone) (RIG * rig, vfo_t vfo, tone_t tone); - int (*get_tone) (RIG * rig, vfo_t vfo, tone_t * tone); - int (*set_ctcss_tone) (RIG * rig, vfo_t vfo, tone_t tone); - int (*get_ctcss_tone) (RIG * rig, vfo_t vfo, tone_t * tone); + int (*set_split_vfo)(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo); + int (*get_split_vfo)(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo); - int (*set_dcs_sql) (RIG * rig, vfo_t vfo, tone_t code); - int (*get_dcs_sql) (RIG * rig, vfo_t vfo, tone_t * code); - int (*set_tone_sql) (RIG * rig, vfo_t vfo, tone_t tone); - int (*get_tone_sql) (RIG * rig, vfo_t vfo, tone_t * tone); - int (*set_ctcss_sql) (RIG * rig, vfo_t vfo, tone_t tone); - int (*get_ctcss_sql) (RIG * rig, vfo_t vfo, tone_t * tone); + int (*set_rit)(RIG *rig, vfo_t vfo, shortfreq_t rit); + int (*get_rit)(RIG *rig, vfo_t vfo, shortfreq_t *rit); - int (*power2mW) (RIG * rig, unsigned int *mwpower, float power, - freq_t freq, rmode_t mode); - int (*mW2power) (RIG * rig, float *power, unsigned int mwpower, - freq_t freq, rmode_t mode); + int (*set_xit)(RIG *rig, vfo_t vfo, shortfreq_t xit); + int (*get_xit)(RIG *rig, vfo_t vfo, shortfreq_t *xit); - int (*set_powerstat) (RIG * rig, powerstat_t status); - int (*get_powerstat) (RIG * rig, powerstat_t * status); - int (*reset) (RIG * rig, reset_t reset); + int (*set_ts)(RIG *rig, vfo_t vfo, shortfreq_t ts); + int (*get_ts)(RIG *rig, vfo_t vfo, shortfreq_t *ts); - int (*set_ant) (RIG * rig, vfo_t vfo, ant_t ant); - int (*get_ant) (RIG * rig, vfo_t vfo, ant_t * ant); + int (*set_dcs_code)(RIG *rig, vfo_t vfo, tone_t code); + int (*get_dcs_code)(RIG *rig, vfo_t vfo, tone_t *code); - int (*set_level) (RIG * rig, vfo_t vfo, setting_t level, - value_t val); - int (*get_level) (RIG * rig, vfo_t vfo, setting_t level, - value_t * val); + int (*set_tone)(RIG *rig, vfo_t vfo, tone_t tone); + int (*get_tone)(RIG *rig, vfo_t vfo, tone_t *tone); - int (*set_func) (RIG * rig, vfo_t vfo, setting_t func, int status); - int (*get_func) (RIG * rig, vfo_t vfo, setting_t func, - int *status); + int (*set_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t tone); + int (*get_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t *tone); - int (*set_parm) (RIG * rig, setting_t parm, value_t val); - int (*get_parm) (RIG * rig, setting_t parm, value_t * val); + int (*set_dcs_sql)(RIG *rig, vfo_t vfo, tone_t code); + int (*get_dcs_sql)(RIG *rig, vfo_t vfo, tone_t *code); - int (*set_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t val); - int (*get_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t *val); + int (*set_tone_sql)(RIG *rig, vfo_t vfo, tone_t tone); + int (*get_tone_sql)(RIG *rig, vfo_t vfo, tone_t *tone); - int (*set_ext_parm)(RIG *rig, token_t token, value_t val); - int (*get_ext_parm)(RIG *rig, token_t token, value_t *val); + int (*set_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t tone); + int (*get_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t *tone); - int (*set_conf) (RIG * rig, token_t token, const char *val); - int (*get_conf) (RIG * rig, token_t token, char *val); + int (*power2mW)(RIG *rig, + unsigned int *mwpower, + float power, + freq_t freq, + rmode_t mode); + int (*mW2power)(RIG *rig, + float *power, + unsigned int mwpower, + freq_t freq, + rmode_t mode); - int (*send_dtmf) (RIG * rig, vfo_t vfo, const char *digits); - int (*recv_dtmf) (RIG * rig, vfo_t vfo, char *digits, int *length); - int (*send_morse) (RIG * rig, vfo_t vfo, const char *msg); + int (*set_powerstat)(RIG *rig, powerstat_t status); + int (*get_powerstat)(RIG *rig, powerstat_t *status); - int (*set_bank) (RIG * rig, vfo_t vfo, int bank); - int (*set_mem) (RIG * rig, vfo_t vfo, int ch); - int (*get_mem) (RIG * rig, vfo_t vfo, int *ch); - int (*vfo_op) (RIG * rig, vfo_t vfo, vfo_op_t op); - int (*scan) (RIG * rig, vfo_t vfo, scan_t scan, int ch); + int (*reset)(RIG *rig, reset_t reset); - int (*set_trn) (RIG * rig, int trn); - int (*get_trn) (RIG * rig, int *trn); + int (*set_ant)(RIG *rig, vfo_t vfo, ant_t ant); + int (*get_ant)(RIG *rig, vfo_t vfo, ant_t *ant); - int (*decode_event) (RIG * rig); + int (*set_level)(RIG *rig, vfo_t vfo, setting_t level, value_t val); + int (*get_level)(RIG *rig, vfo_t vfo, setting_t level, value_t *val); - int (*set_channel) (RIG * rig, const channel_t * chan); - int (*get_channel) (RIG * rig, channel_t * chan); + int (*set_func)(RIG *rig, vfo_t vfo, setting_t func, int status); + int (*get_func)(RIG *rig, vfo_t vfo, setting_t func, int *status); - const char *(*get_info) (RIG * rig); + int (*set_parm)(RIG *rig, setting_t parm, value_t val); + int (*get_parm)(RIG *rig, setting_t parm, value_t *val); - int (*set_chan_all_cb) (RIG * rig, chan_cb_t chan_cb, rig_ptr_t); - int (*get_chan_all_cb) (RIG * rig, chan_cb_t chan_cb, rig_ptr_t); + int (*set_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t val); + int (*get_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t *val); - int (*set_mem_all_cb) (RIG * rig, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t); - int (*get_mem_all_cb) (RIG * rig, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t); + int (*set_ext_parm)(RIG *rig, token_t token, value_t val); + int (*get_ext_parm)(RIG *rig, token_t token, value_t *val); - const char *clone_combo_set; /*!< String describing key combination to enter load cloning mode */ - const char *clone_combo_get; /*!< String describing key combination to enter save cloning mode */ + int (*set_conf)(RIG *rig, token_t token, const char *val); + int (*get_conf)(RIG *rig, token_t token, char *val); + + int (*send_dtmf)(RIG *rig, vfo_t vfo, const char *digits); + int (*recv_dtmf)(RIG *rig, vfo_t vfo, char *digits, int *length); + + int (*send_morse)(RIG *rig, vfo_t vfo, const char *msg); + + int (*set_bank)(RIG *rig, vfo_t vfo, int bank); + + int (*set_mem)(RIG *rig, vfo_t vfo, int ch); + int (*get_mem)(RIG *rig, vfo_t vfo, int *ch); + + int (*vfo_op)(RIG *rig, vfo_t vfo, vfo_op_t op); + + int (*scan)(RIG *rig, vfo_t vfo, scan_t scan, int ch); + + int (*set_trn)(RIG *rig, int trn); + int (*get_trn)(RIG *rig, int *trn); + + int (*decode_event)(RIG *rig); + + int (*set_channel)(RIG *rig, const channel_t *chan); + int (*get_channel)(RIG *rig, channel_t *chan); + + const char * (*get_info)(RIG *rig); + + int (*set_chan_all_cb)(RIG *rig, chan_cb_t chan_cb, rig_ptr_t); + int (*get_chan_all_cb)(RIG *rig, chan_cb_t chan_cb, rig_ptr_t); + + int (*set_mem_all_cb)(RIG *rig, + chan_cb_t chan_cb, + confval_cb_t parm_cb, + rig_ptr_t); + int (*get_mem_all_cb)(RIG *rig, + chan_cb_t chan_cb, + confval_cb_t parm_cb, + rig_ptr_t); + + const char *clone_combo_set; /*!< String describing key combination to enter load cloning mode */ + const char *clone_combo_get; /*!< String describing key combination to enter save cloning mode */ }; + /** * \brief Port definition * * Of course, looks like OO painstakingly programmed in C, sigh. */ typedef struct hamlib_port { - union { - rig_port_t rig; /*!< Communication port type */ - ptt_type_t ptt; /*!< PTT port type */ - dcd_type_t dcd; /*!< DCD port type */ - } type; - int fd; /*!< File descriptor */ - void* handle; /*!< handle for USB */ + union { + rig_port_t rig; /*!< Communication port type */ + ptt_type_t ptt; /*!< PTT port type */ + dcd_type_t dcd; /*!< DCD port type */ + } type; - int write_delay; /*!< Delay between each byte sent out, in mS */ - int post_write_delay; /*!< Delay between each commands send out, in mS */ - struct { int tv_sec,tv_usec; } post_write_date; /*!< hamlib internal use */ - int timeout; /*!< Timeout, in mS */ - int retry; /*!< Maximum number of retries, 0 to disable */ + int fd; /*!< File descriptor */ + void *handle; /*!< handle for USB */ - char pathname[FILPATHLEN]; /*!< Port pathname */ - union { - struct { - int rate; /*!< Serial baud rate */ - int data_bits; /*!< Number of data bits */ - int stop_bits; /*!< Number of stop bits */ - enum serial_parity_e parity; /*!< Serial parity */ - enum serial_handshake_e handshake; /*!< Serial handshake */ - enum serial_control_state_e rts_state; /*!< RTS set state */ - enum serial_control_state_e dtr_state; /*!< DTR set state */ - } serial; /*!< serial attributes */ - struct { - int pin; /*!< Parallel port pin number */ - } parallel; /*!< parallel attributes */ - struct { - int ptt_bitnum; /*< Bit number for CM108 GPIO PTT */ - } cm108; /*!< CM108 attributes */ - struct { - int vid; /*!< Vendor ID */ - int pid; /*!< Product ID */ - int conf; /*!< Configuration */ - int iface; /*!< interface */ - int alt; /*!< alternate */ - char *vendor_name; /*!< Vendor name (opt.) */ - char *product; /*!< Product (opt.) */ - } usb; /*!< USB attributes */ - struct { - int on_value; - int value; - } gpio; - } parm; /*!< Port parameter union */ + int write_delay; /*!< Delay between each byte sent out, in mS */ + int post_write_delay; /*!< Delay between each commands send out, in mS */ + + struct { + int tv_sec, tv_usec; + } post_write_date; /*!< hamlib internal use */ + + int timeout; /*!< Timeout, in mS */ + int retry; /*!< Maximum number of retries, 0 to disable */ + + char pathname[FILPATHLEN]; /*!< Port pathname */ + + union { + struct { + int rate; /*!< Serial baud rate */ + int data_bits; /*!< Number of data bits */ + int stop_bits; /*!< Number of stop bits */ + enum serial_parity_e parity; /*!< Serial parity */ + enum serial_handshake_e handshake; /*!< Serial handshake */ + enum serial_control_state_e rts_state; /*!< RTS set state */ + enum serial_control_state_e dtr_state; /*!< DTR set state */ + } serial; /*!< serial attributes */ + + struct { + int pin; /*!< Parallel port pin number */ + } parallel; /*!< parallel attributes */ + + struct { + int ptt_bitnum; /*!< Bit number for CM108 GPIO PTT */ + } cm108; /*!< CM108 attributes */ + + struct { + int vid; /*!< Vendor ID */ + int pid; /*!< Product ID */ + int conf; /*!< Configuration */ + int iface; /*!< interface */ + int alt; /*!< alternate */ + char *vendor_name; /*!< Vendor name (opt.) */ + char *product; /*!< Product (opt.) */ + } usb; /*!< USB attributes */ + + struct { + int on_value; /*!< GPIO: 1 == normal, GPION: 0 == inverted */ + int value; /*!< Toggle PTT ON or OFF */ + } gpio; /*!< GPIO attributes */ + } parm; /*!< Port parameter union */ } hamlib_port_t; #if !defined(__APPLE__) || !defined(__cplusplus) @@ -1409,77 +1532,85 @@ typedef hamlib_port_t port_t; * not be initialized like caps are. */ struct rig_state { - /* - * overridable fields - */ - hamlib_port_t rigport; /*!< Rig port (internal use). */ - hamlib_port_t pttport; /*!< PTT port (internal use). */ - hamlib_port_t dcdport; /*!< DCD port (internal use). */ + /* + * overridable fields + */ + hamlib_port_t rigport; /*!< Rig port (internal use). */ + hamlib_port_t pttport; /*!< PTT port (internal use). */ + hamlib_port_t dcdport; /*!< DCD port (internal use). */ - double vfo_comp; /*!< VFO compensation in PPM, 0.0 to disable */ + double vfo_comp; /*!< VFO compensation in PPM, 0.0 to disable */ - int itu_region; /*!< ITU region to select among freq_range_t */ - freq_range_t rx_range_list[FRQRANGESIZ]; /*!< Receive frequency range list */ - freq_range_t tx_range_list[FRQRANGESIZ]; /*!< Transmit frequency range list */ + int itu_region; /*!< ITU region to select among freq_range_t */ + freq_range_t rx_range_list[FRQRANGESIZ]; /*!< Receive frequency range list */ + freq_range_t tx_range_list[FRQRANGESIZ]; /*!< Transmit frequency range list */ - struct tuning_step_list tuning_steps[TSLSTSIZ]; /*!< Tuning step list */ + struct tuning_step_list tuning_steps[TSLSTSIZ]; /*!< Tuning step list */ - struct filter_list filters[FLTLSTSIZ]; /*!< Mode/filter table, at -6dB */ + struct filter_list filters[FLTLSTSIZ]; /*!< Mode/filter table, at -6dB */ - cal_table_t str_cal; /*!< S-meter calibration table */ + cal_table_t str_cal; /*!< S-meter calibration table */ - chan_t chan_list[CHANLSTSIZ]; /*!< Channel list, zero ended */ + chan_t chan_list[CHANLSTSIZ]; /*!< Channel list, zero ended */ - shortfreq_t max_rit; /*!< max absolute RIT */ - shortfreq_t max_xit; /*!< max absolute XIT */ - shortfreq_t max_ifshift; /*!< max absolute IF-SHIFT */ + shortfreq_t max_rit; /*!< max absolute RIT */ + shortfreq_t max_xit; /*!< max absolute XIT */ + shortfreq_t max_ifshift; /*!< max absolute IF-SHIFT */ - ann_t announces; /*!< Announces bit field list */ + ann_t announces; /*!< Announces bit field list */ - int preamp[MAXDBLSTSIZ]; /*!< Preamp list in dB, 0 terminated */ - int attenuator[MAXDBLSTSIZ]; /*!< Preamp list in dB, 0 terminated */ + int preamp[MAXDBLSTSIZ]; /*!< Preamp list in dB, 0 terminated */ + int attenuator[MAXDBLSTSIZ]; /*!< Preamp list in dB, 0 terminated */ - setting_t has_get_func; /*!< List of get functions */ - setting_t has_set_func; /*!< List of set functions */ - setting_t has_get_level; /*!< List of get level */ - setting_t has_set_level; /*!< List of set level */ - setting_t has_get_parm; /*!< List of get parm */ - setting_t has_set_parm; /*!< List of set parm */ + setting_t has_get_func; /*!< List of get functions */ + setting_t has_set_func; /*!< List of set functions */ + setting_t has_get_level; /*!< List of get level */ + setting_t has_set_level; /*!< List of set level */ + setting_t has_get_parm; /*!< List of get parm */ + setting_t has_set_parm; /*!< List of set parm */ - gran_t level_gran[RIG_SETTING_MAX]; /*!< level granularity */ - gran_t parm_gran[RIG_SETTING_MAX]; /*!< parm granularity */ + gran_t level_gran[RIG_SETTING_MAX]; /*!< level granularity */ + gran_t parm_gran[RIG_SETTING_MAX]; /*!< parm granularity */ - /* - * non overridable fields, internal use - */ + /* + * non overridable fields, internal use + */ - int hold_decode; /*!< set to 1 to hold the event decoder (async) otherwise 0 */ - vfo_t current_vfo; /*!< VFO currently set */ - int vfo_list; /*!< Complete list of VFO for this rig */ - int comm_state; /*!< Comm port state, opened/closed. */ - rig_ptr_t priv; /*!< Pointer to private rig state data. */ - rig_ptr_t obj; /*!< Internal use by hamlib++ for event handling. */ + int hold_decode; /*!< set to 1 to hold the event decoder (async) otherwise 0 */ + vfo_t current_vfo; /*!< VFO currently set */ + int vfo_list; /*!< Complete list of VFO for this rig */ + int comm_state; /*!< Comm port state, opened/closed. */ + rig_ptr_t priv; /*!< Pointer to private rig state data. */ + rig_ptr_t obj; /*!< Internal use by hamlib++ for event handling. */ - int transceive; /*!< Whether the transceive mode is on */ - int poll_interval; /*!< Event notification polling period in milliseconds */ - freq_t current_freq; /*!< Frequency currently set */ - rmode_t current_mode; /*!< Mode currently set */ - pbwidth_t current_width; /*!< Passband width currently set */ - vfo_t tx_vfo; /*!< Tx VFO currently set */ - int mode_list; /*!< Complete list of modes for this rig */ + int transceive; /*!< Whether the transceive mode is on */ + int poll_interval; /*!< Event notification polling period in milliseconds */ + freq_t current_freq; /*!< Frequency currently set */ + rmode_t current_mode; /*!< Mode currently set */ + pbwidth_t current_width; /*!< Passband width currently set */ + vfo_t tx_vfo; /*!< Tx VFO currently set */ + int mode_list; /*!< Complete list of modes for this rig */ }; -typedef int (*vprintf_cb_t) (enum rig_debug_level_e, rig_ptr_t, const char *, va_list); +typedef int (*vprintf_cb_t)(enum rig_debug_level_e, + rig_ptr_t, + const char *, + va_list); + +typedef int (*freq_cb_t)(RIG *, vfo_t, freq_t, rig_ptr_t); +typedef int (*mode_cb_t)(RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t); +typedef int (*vfo_cb_t)(RIG *, vfo_t, rig_ptr_t); +typedef int (*ptt_cb_t)(RIG *, vfo_t, ptt_t, rig_ptr_t); +typedef int (*dcd_cb_t)(RIG *, vfo_t, dcd_t, rig_ptr_t); +typedef int (*pltune_cb_t)(RIG *, + vfo_t, freq_t *, + rmode_t *, + pbwidth_t *, + rig_ptr_t); -typedef int (*freq_cb_t) (RIG *, vfo_t, freq_t, rig_ptr_t); -typedef int (*mode_cb_t) (RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t); -typedef int (*vfo_cb_t) (RIG *, vfo_t, rig_ptr_t); -typedef int (*ptt_cb_t) (RIG *, vfo_t, ptt_t, rig_ptr_t); -typedef int (*dcd_cb_t) (RIG *, vfo_t, dcd_t, rig_ptr_t); -typedef int (*pltune_cb_t) (RIG *, vfo_t, freq_t *, rmode_t *, pbwidth_t *, rig_ptr_t); /** * \brief Callback functions and args for rig event. @@ -1495,25 +1626,26 @@ typedef int (*pltune_cb_t) (RIG *, vfo_t, freq_t *, rmode_t *, pbwidth_t *, rig_ * Callbacks suit event based programming very well, * really appropriate in a GUI. * - * \sa rig_set_freq_callback, rig_set_mode_callback, rig_set_vfo_callback, - * rig_set_ptt_callback, rig_set_dcd_callback + * \sa rig_set_freq_callback(), rig_set_mode_callback(), rig_set_vfo_callback(), + * rig_set_ptt_callback(), rig_set_dcd_callback() */ struct rig_callbacks { - freq_cb_t freq_event; /*!< Frequency change event */ - rig_ptr_t freq_arg; /*!< Frequency change argument */ - mode_cb_t mode_event; /*!< Mode change event */ - rig_ptr_t mode_arg; /*!< Mode change argument */ - vfo_cb_t vfo_event; /*!< VFO change event */ - rig_ptr_t vfo_arg; /*!< VFO change argument */ - ptt_cb_t ptt_event; /*!< PTT change event */ - rig_ptr_t ptt_arg; /*!< PTT change argument */ - dcd_cb_t dcd_event; /*!< DCD change event */ - rig_ptr_t dcd_arg; /*!< DCD change argument */ - pltune_cb_t pltune; /*!< Pipeline tuning module freq/mode/width callback */ - rig_ptr_t pltune_arg; /*!< Pipeline tuning argument */ - /* etc.. */ + freq_cb_t freq_event; /*!< Frequency change event */ + rig_ptr_t freq_arg; /*!< Frequency change argument */ + mode_cb_t mode_event; /*!< Mode change event */ + rig_ptr_t mode_arg; /*!< Mode change argument */ + vfo_cb_t vfo_event; /*!< VFO change event */ + rig_ptr_t vfo_arg; /*!< VFO change argument */ + ptt_cb_t ptt_event; /*!< PTT change event */ + rig_ptr_t ptt_arg; /*!< PTT change argument */ + dcd_cb_t dcd_event; /*!< DCD change event */ + rig_ptr_t dcd_arg; /*!< DCD change argument */ + pltune_cb_t pltune; /*!< Pipeline tuning module freq/mode/width callback */ + rig_ptr_t pltune_arg; /*!< Pipeline tuning argument */ + /* etc.. */ }; + /** * \brief The Rig structure * @@ -1521,12 +1653,12 @@ struct rig_callbacks { * rig. A pointer to this structure is returned by the rig_init() API * function and is passed as a parameter to every rig specific API call. * - * \sa rig_init(), rig_caps, rig_state + * \sa rig_init(), rig_caps(), rig_state() */ struct rig { - struct rig_caps *caps; /*!< Pointer to rig capabilities (read only) */ - struct rig_state state; /*!< Rig state */ - struct rig_callbacks callbacks; /*!< registered event callbacks */ + struct rig_caps *caps; /*!< Pointer to rig capabilities (read only) */ + struct rig_state state; /*!< Rig state */ + struct rig_callbacks callbacks; /*!< registered event callbacks */ }; @@ -1536,189 +1668,560 @@ struct rig { extern HAMLIB_EXPORT(RIG *) rig_init HAMLIB_PARAMS((rig_model_t rig_model)); extern HAMLIB_EXPORT(int) rig_open HAMLIB_PARAMS((RIG *rig)); - /* - * General API commands, from most primitive to least.. :() - * List Set/Get functions pairs - */ +/* + * General API commands, from most primitive to least.. :() + * List Set/Get functions pairs + */ -extern HAMLIB_EXPORT(int) rig_set_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t freq)); -extern HAMLIB_EXPORT(int) rig_get_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t *freq)); +extern HAMLIB_EXPORT(int) +rig_set_freq HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + freq_t freq)); +extern HAMLIB_EXPORT(int) +rig_get_freq HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + freq_t *freq)); -extern HAMLIB_EXPORT(int) rig_set_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)); -extern HAMLIB_EXPORT(int) rig_get_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)); +extern HAMLIB_EXPORT(int) +rig_set_mode HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + rmode_t mode, + pbwidth_t width)); +extern HAMLIB_EXPORT(int) +rig_get_mode HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + rmode_t *mode, + pbwidth_t *width)); -extern HAMLIB_EXPORT(int) rig_set_vfo HAMLIB_PARAMS((RIG *rig, vfo_t vfo)); -extern HAMLIB_EXPORT(int) rig_get_vfo HAMLIB_PARAMS((RIG *rig, vfo_t *vfo)); +extern HAMLIB_EXPORT(int) +rig_set_vfo HAMLIB_PARAMS((RIG *rig, + vfo_t vfo)); +extern HAMLIB_EXPORT(int) +rig_get_vfo HAMLIB_PARAMS((RIG *rig, + vfo_t *vfo)); -extern HAMLIB_EXPORT(int) rig_set_ptt HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ptt_t ptt)); -extern HAMLIB_EXPORT(int) rig_get_ptt HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ptt_t *ptt)); +extern HAMLIB_EXPORT(int) +rig_set_ptt HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + ptt_t ptt)); +extern HAMLIB_EXPORT(int) +rig_get_ptt HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + ptt_t *ptt)); -extern HAMLIB_EXPORT(int) rig_get_dcd HAMLIB_PARAMS((RIG *rig, vfo_t vfo, dcd_t *dcd)); +extern HAMLIB_EXPORT(int) +rig_get_dcd HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + dcd_t *dcd)); -extern HAMLIB_EXPORT(int) rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)); -extern HAMLIB_EXPORT(int) rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)); -extern HAMLIB_EXPORT(int) rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t rptr_offs)); -extern HAMLIB_EXPORT(int) rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs)); +extern HAMLIB_EXPORT(int) +rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + rptr_shift_t rptr_shift)); +extern HAMLIB_EXPORT(int) +rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + rptr_shift_t *rptr_shift)); -extern HAMLIB_EXPORT(int) rig_set_ctcss_tone HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t tone)); -extern HAMLIB_EXPORT(int) rig_get_ctcss_tone HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *tone)); -extern HAMLIB_EXPORT(int) rig_set_dcs_code HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t code)); -extern HAMLIB_EXPORT(int) rig_get_dcs_code HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *code)); +extern HAMLIB_EXPORT(int) +rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + shortfreq_t rptr_offs)); +extern HAMLIB_EXPORT(int) +rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + shortfreq_t *rptr_offs)); -extern HAMLIB_EXPORT(int) rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t tone)); -extern HAMLIB_EXPORT(int) rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *tone)); -extern HAMLIB_EXPORT(int) rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t code)); -extern HAMLIB_EXPORT(int) rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *code)); +extern HAMLIB_EXPORT(int) +rig_set_ctcss_tone HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + tone_t tone)); +extern HAMLIB_EXPORT(int) +rig_get_ctcss_tone HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + tone_t *tone)); + +extern HAMLIB_EXPORT(int) +rig_set_dcs_code HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + tone_t code)); +extern HAMLIB_EXPORT(int) +rig_get_dcs_code HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + tone_t *code)); + +extern HAMLIB_EXPORT(int) +rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + tone_t tone)); +extern HAMLIB_EXPORT(int) +rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + tone_t *tone)); + +extern HAMLIB_EXPORT(int) +rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + tone_t code)); +extern HAMLIB_EXPORT(int) +rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + tone_t *code)); + +extern HAMLIB_EXPORT(int) +rig_set_split_freq HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + freq_t tx_freq)); +extern HAMLIB_EXPORT(int) +rig_get_split_freq HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + freq_t *tx_freq)); + +extern HAMLIB_EXPORT(int) +rig_set_split_mode HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + rmode_t tx_mode, + pbwidth_t tx_width)); +extern HAMLIB_EXPORT(int) +rig_get_split_mode HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + rmode_t *tx_mode, + pbwidth_t *tx_width)); + +extern HAMLIB_EXPORT(int) +rig_set_split_freq_mode HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + freq_t tx_freq, + rmode_t tx_mode, + pbwidth_t tx_width)); +extern HAMLIB_EXPORT(int) +rig_get_split_freq_mode HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + freq_t *tx_freq, + rmode_t *tx_mode, + pbwidth_t *tx_width)); + +extern HAMLIB_EXPORT(int) +rig_set_split_vfo HAMLIB_PARAMS((RIG *, + vfo_t rx_vfo, + split_t split, + vfo_t tx_vfo)); +extern HAMLIB_EXPORT(int) +rig_get_split_vfo HAMLIB_PARAMS((RIG *, + vfo_t rx_vfo, + split_t *split, + vfo_t *tx_vfo)); -extern HAMLIB_EXPORT(int) rig_set_split_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t tx_freq)); -extern HAMLIB_EXPORT(int) rig_get_split_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t *tx_freq)); -extern HAMLIB_EXPORT(int) rig_set_split_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t tx_mode, pbwidth_t tx_width)); -extern HAMLIB_EXPORT(int) rig_get_split_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t *tx_mode, pbwidth_t *tx_width)); -extern HAMLIB_EXPORT(int) rig_set_split_freq_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t tx_freq, rmode_t tx_mode, pbwidth_t tx_width)); -extern HAMLIB_EXPORT(int) rig_get_split_freq_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t * tx_freq, rmode_t *tx_mode, pbwidth_t *tx_width)); -extern HAMLIB_EXPORT(int) rig_set_split_vfo HAMLIB_PARAMS((RIG*, vfo_t rx_vfo, split_t split, vfo_t tx_vfo)); -extern HAMLIB_EXPORT(int) rig_get_split_vfo HAMLIB_PARAMS((RIG*, vfo_t rx_vfo, split_t *split, vfo_t *tx_vfo)); #define rig_set_split(r,v,s) rig_set_split_vfo((r),(v),(s),RIG_VFO_CURR) #define rig_get_split(r,v,s) ({ vfo_t _tx_vfo; rig_get_split_vfo((r),(v),(s),&_tx_vfo); }) -extern HAMLIB_EXPORT(int) rig_set_rit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t rit)); -extern HAMLIB_EXPORT(int) rig_get_rit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *rit)); -extern HAMLIB_EXPORT(int) rig_set_xit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t xit)); -extern HAMLIB_EXPORT(int) rig_get_xit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *xit)); +extern HAMLIB_EXPORT(int) +rig_set_rit HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + shortfreq_t rit)); +extern HAMLIB_EXPORT(int) +rig_get_rit HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + shortfreq_t *rit)); -extern HAMLIB_EXPORT(int) rig_set_ts HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t ts)); -extern HAMLIB_EXPORT(int) rig_get_ts HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *ts)); +extern HAMLIB_EXPORT(int) +rig_set_xit HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + shortfreq_t xit)); +extern HAMLIB_EXPORT(int) +rig_get_xit HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + shortfreq_t *xit)); -extern HAMLIB_EXPORT(int) rig_power2mW HAMLIB_PARAMS((RIG *rig, unsigned int *mwpower, float power, freq_t freq, rmode_t mode)); -extern HAMLIB_EXPORT(int) rig_mW2power HAMLIB_PARAMS((RIG *rig, float *power, unsigned int mwpower, freq_t freq, rmode_t mode)); +extern HAMLIB_EXPORT(int) +rig_set_ts HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + shortfreq_t ts)); +extern HAMLIB_EXPORT(int) +rig_get_ts HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + shortfreq_t *ts)); -extern HAMLIB_EXPORT(shortfreq_t) rig_get_resolution HAMLIB_PARAMS((RIG *rig, rmode_t mode)); +extern HAMLIB_EXPORT(int) +rig_power2mW HAMLIB_PARAMS((RIG *rig, + unsigned int *mwpower, + float power, + freq_t freq, + rmode_t mode)); +extern HAMLIB_EXPORT(int) +rig_mW2power HAMLIB_PARAMS((RIG *rig, + float *power, + unsigned int mwpower, + freq_t freq, + rmode_t mode)); -extern HAMLIB_EXPORT(int) rig_set_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t level, value_t val)); -extern HAMLIB_EXPORT(int) rig_get_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t level, value_t *val)); +extern HAMLIB_EXPORT(shortfreq_t) +rig_get_resolution HAMLIB_PARAMS((RIG *rig, + rmode_t mode)); + +extern HAMLIB_EXPORT(int) +rig_set_level HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + setting_t level, + value_t val)); +extern HAMLIB_EXPORT(int) +rig_get_level HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + setting_t level, + value_t *val)); #define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s)) -extern HAMLIB_EXPORT(int) rig_set_parm HAMLIB_PARAMS((RIG *rig, setting_t parm, value_t val)); -extern HAMLIB_EXPORT(int) rig_get_parm HAMLIB_PARAMS((RIG *rig, setting_t parm, value_t *val)); +extern HAMLIB_EXPORT(int) +rig_set_parm HAMLIB_PARAMS((RIG *rig, + setting_t parm, + value_t val)); +extern HAMLIB_EXPORT(int) +rig_get_parm HAMLIB_PARAMS((RIG *rig, + setting_t parm, + value_t *val)); -extern HAMLIB_EXPORT(int) rig_set_conf HAMLIB_PARAMS((RIG *rig, token_t token, const char *val)); -extern HAMLIB_EXPORT(int) rig_get_conf HAMLIB_PARAMS((RIG *rig, token_t token, char *val)); +extern HAMLIB_EXPORT(int) +rig_set_conf HAMLIB_PARAMS((RIG *rig, + token_t token, + const char *val)); +extern HAMLIB_EXPORT(int) +rig_get_conf HAMLIB_PARAMS((RIG *rig, + token_t token, + char *val)); -extern HAMLIB_EXPORT(int) rig_set_powerstat HAMLIB_PARAMS((RIG *rig, powerstat_t status)); -extern HAMLIB_EXPORT(int) rig_get_powerstat HAMLIB_PARAMS((RIG *rig, powerstat_t *status)); +extern HAMLIB_EXPORT(int) +rig_set_powerstat HAMLIB_PARAMS((RIG *rig, + powerstat_t status)); +extern HAMLIB_EXPORT(int) +rig_get_powerstat HAMLIB_PARAMS((RIG *rig, + powerstat_t *status)); -extern HAMLIB_EXPORT(int) rig_reset HAMLIB_PARAMS((RIG *rig, reset_t reset)); /* dangerous! */ +extern HAMLIB_EXPORT(int) +rig_reset HAMLIB_PARAMS((RIG *rig, + reset_t reset)); /* dangerous! */ -extern HAMLIB_EXPORT(int) rig_set_ext_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo, - token_t token, value_t val)); -extern HAMLIB_EXPORT(int) rig_get_ext_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo, - token_t token, value_t *val)); +extern HAMLIB_EXPORT(int) +rig_set_ext_level HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + token_t token, + value_t val)); +extern HAMLIB_EXPORT(int) +rig_get_ext_level HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + token_t token, + value_t *val)); -extern HAMLIB_EXPORT(int) rig_set_ext_parm HAMLIB_PARAMS((RIG *rig, token_t token, value_t val)); -extern HAMLIB_EXPORT(int) rig_get_ext_parm HAMLIB_PARAMS((RIG *rig, token_t token, value_t *val)); +extern HAMLIB_EXPORT(int) +rig_set_ext_parm HAMLIB_PARAMS((RIG *rig, + token_t token, + value_t val)); +extern HAMLIB_EXPORT(int) +rig_get_ext_parm HAMLIB_PARAMS((RIG *rig, + token_t token, + value_t *val)); -extern HAMLIB_EXPORT(int) rig_ext_level_foreach HAMLIB_PARAMS((RIG *rig, int (*cfunc)(RIG*, const struct confparams *, rig_ptr_t), rig_ptr_t data)); -extern HAMLIB_EXPORT(int) rig_ext_parm_foreach HAMLIB_PARAMS((RIG *rig, int (*cfunc)(RIG*, const struct confparams *, rig_ptr_t), rig_ptr_t data)); -extern HAMLIB_EXPORT(const struct confparams*) rig_ext_lookup HAMLIB_PARAMS((RIG *rig, const char *name)); -extern HAMLIB_EXPORT(const struct confparams *) rig_ext_lookup_tok HAMLIB_PARAMS((RIG *rig, token_t token)); -extern HAMLIB_EXPORT(token_t) rig_ext_token_lookup HAMLIB_PARAMS((RIG *rig, const char *name)); +extern HAMLIB_EXPORT(int) +rig_ext_level_foreach HAMLIB_PARAMS((RIG *rig, + int (*cfunc)(RIG *, + const struct confparams *, + rig_ptr_t), + rig_ptr_t data)); +extern HAMLIB_EXPORT(int) +rig_ext_parm_foreach HAMLIB_PARAMS((RIG *rig, + int (*cfunc)(RIG *, + const struct confparams *, + rig_ptr_t), + rig_ptr_t data)); + +extern HAMLIB_EXPORT(const struct confparams *) +rig_ext_lookup HAMLIB_PARAMS((RIG *rig, + const char *name)); + +extern HAMLIB_EXPORT(const struct confparams *) +rig_ext_lookup_tok HAMLIB_PARAMS((RIG *rig, + token_t token)); +extern HAMLIB_EXPORT(token_t) +rig_ext_token_lookup HAMLIB_PARAMS((RIG *rig, + const char *name)); -extern HAMLIB_EXPORT(int) rig_token_foreach HAMLIB_PARAMS((RIG *rig, int (*cfunc)(const struct confparams *, rig_ptr_t), rig_ptr_t data)); -extern HAMLIB_EXPORT(const struct confparams*) rig_confparam_lookup HAMLIB_PARAMS((RIG *rig, const char *name)); -extern HAMLIB_EXPORT(token_t) rig_token_lookup HAMLIB_PARAMS((RIG *rig, const char *name)); +extern HAMLIB_EXPORT(int) +rig_token_foreach HAMLIB_PARAMS((RIG *rig, + int (*cfunc)(const struct confparams *, + rig_ptr_t), + rig_ptr_t data)); -extern HAMLIB_EXPORT(int) rig_close HAMLIB_PARAMS((RIG *rig)); -extern HAMLIB_EXPORT(int) rig_cleanup HAMLIB_PARAMS((RIG *rig)); +extern HAMLIB_EXPORT(const struct confparams *) +rig_confparam_lookup HAMLIB_PARAMS((RIG *rig, + const char *name)); +extern HAMLIB_EXPORT(token_t) +rig_token_lookup HAMLIB_PARAMS((RIG *rig, + const char *name)); -extern HAMLIB_EXPORT(int) rig_set_ant HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ant_t ant)); /* antenna */ -extern HAMLIB_EXPORT(int) rig_get_ant HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ant_t *ant)); +extern HAMLIB_EXPORT(int) +rig_close HAMLIB_PARAMS((RIG *rig)); -extern HAMLIB_EXPORT(setting_t) rig_has_get_level HAMLIB_PARAMS((RIG *rig, setting_t level)); -extern HAMLIB_EXPORT(setting_t) rig_has_set_level HAMLIB_PARAMS((RIG *rig, setting_t level)); +extern HAMLIB_EXPORT(int) +rig_cleanup HAMLIB_PARAMS((RIG *rig)); -extern HAMLIB_EXPORT(setting_t) rig_has_get_parm HAMLIB_PARAMS((RIG *rig, setting_t parm)); -extern HAMLIB_EXPORT(setting_t) rig_has_set_parm HAMLIB_PARAMS((RIG *rig, setting_t parm)); +extern HAMLIB_EXPORT(int) +rig_set_ant HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + ant_t ant)); /* antenna */ +extern HAMLIB_EXPORT(int) +rig_get_ant HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + ant_t *ant)); -extern HAMLIB_EXPORT(setting_t) rig_has_get_func HAMLIB_PARAMS((RIG *rig, setting_t func)); -extern HAMLIB_EXPORT(setting_t) rig_has_set_func HAMLIB_PARAMS((RIG *rig, setting_t func)); +extern HAMLIB_EXPORT(setting_t) +rig_has_get_level HAMLIB_PARAMS((RIG *rig, + setting_t level)); +extern HAMLIB_EXPORT(setting_t) +rig_has_set_level HAMLIB_PARAMS((RIG *rig, + setting_t level)); -extern HAMLIB_EXPORT(int) rig_set_func HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t func, int status)); -extern HAMLIB_EXPORT(int) rig_get_func HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t func, int *status)); +extern HAMLIB_EXPORT(setting_t) +rig_has_get_parm HAMLIB_PARAMS((RIG *rig, + setting_t parm)); +extern HAMLIB_EXPORT(setting_t) +rig_has_set_parm HAMLIB_PARAMS((RIG *rig, + setting_t parm)); -extern HAMLIB_EXPORT(int) rig_send_dtmf HAMLIB_PARAMS((RIG *rig, vfo_t vfo, const char *digits)); -extern HAMLIB_EXPORT(int) rig_recv_dtmf HAMLIB_PARAMS((RIG *rig, vfo_t vfo, char *digits, int *length)); -extern HAMLIB_EXPORT(int) rig_send_morse HAMLIB_PARAMS((RIG *rig, vfo_t vfo, const char *msg)); +extern HAMLIB_EXPORT(setting_t) +rig_has_get_func HAMLIB_PARAMS((RIG *rig, + setting_t func)); +extern HAMLIB_EXPORT(setting_t) +rig_has_set_func HAMLIB_PARAMS((RIG *rig, + setting_t func)); -extern HAMLIB_EXPORT(int) rig_set_bank HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int bank)); -extern HAMLIB_EXPORT(int) rig_set_mem HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int ch)); -extern HAMLIB_EXPORT(int) rig_get_mem HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int *ch)); -extern HAMLIB_EXPORT(int) rig_vfo_op HAMLIB_PARAMS((RIG *rig, vfo_t vfo, vfo_op_t op)); -extern HAMLIB_EXPORT(vfo_op_t) rig_has_vfo_op HAMLIB_PARAMS((RIG *rig, vfo_op_t op)); -extern HAMLIB_EXPORT(int) rig_scan HAMLIB_PARAMS((RIG *rig, vfo_t vfo, scan_t scan, int ch)); -extern HAMLIB_EXPORT(scan_t) rig_has_scan HAMLIB_PARAMS((RIG *rig, scan_t scan)); +extern HAMLIB_EXPORT(int) +rig_set_func HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + setting_t func, + int status)); +extern HAMLIB_EXPORT(int) +rig_get_func HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + setting_t func, + int *status)); -extern HAMLIB_EXPORT(int) rig_set_channel HAMLIB_PARAMS((RIG *rig, const channel_t *chan)); /* mem */ -extern HAMLIB_EXPORT(int) rig_get_channel HAMLIB_PARAMS((RIG *rig, channel_t *chan)); +extern HAMLIB_EXPORT(int) +rig_send_dtmf HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + const char *digits)); +extern HAMLIB_EXPORT(int) +rig_recv_dtmf HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + char *digits, + int *length)); -extern HAMLIB_EXPORT(int) rig_set_chan_all HAMLIB_PARAMS((RIG *rig, const channel_t chans[])); -extern HAMLIB_EXPORT(int) rig_get_chan_all HAMLIB_PARAMS((RIG *rig, channel_t chans[])); -extern HAMLIB_EXPORT(int) rig_set_chan_all_cb HAMLIB_PARAMS((RIG *rig, chan_cb_t chan_cb, rig_ptr_t)); -extern HAMLIB_EXPORT(int) rig_get_chan_all_cb HAMLIB_PARAMS((RIG *rig, chan_cb_t chan_cb, rig_ptr_t)); +extern HAMLIB_EXPORT(int) +rig_send_morse HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + const char *msg)); -extern HAMLIB_EXPORT(int) rig_set_mem_all_cb HAMLIB_PARAMS((RIG *rig, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t)); -extern HAMLIB_EXPORT(int) rig_get_mem_all_cb HAMLIB_PARAMS((RIG *rig, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t)); -extern HAMLIB_EXPORT(int) rig_set_mem_all HAMLIB_PARAMS((RIG *rig, const channel_t *chan, const struct confparams *, const value_t *)); -extern HAMLIB_EXPORT(int) rig_get_mem_all HAMLIB_PARAMS((RIG *rig, channel_t *chan, const struct confparams *, value_t *)); -extern HAMLIB_EXPORT(const chan_t *) rig_lookup_mem_caps HAMLIB_PARAMS((RIG *rig, int ch)); -extern HAMLIB_EXPORT(int) rig_mem_count HAMLIB_PARAMS((RIG *rig)); +extern HAMLIB_EXPORT(int) +rig_set_bank HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + int bank)); +extern HAMLIB_EXPORT(int) +rig_set_mem HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + int ch)); +extern HAMLIB_EXPORT(int) +rig_get_mem HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + int *ch)); -extern HAMLIB_EXPORT(int) rig_set_trn HAMLIB_PARAMS((RIG *rig, int trn)); -extern HAMLIB_EXPORT(int) rig_get_trn HAMLIB_PARAMS((RIG *rig, int *trn)); -extern HAMLIB_EXPORT(int) rig_set_freq_callback HAMLIB_PARAMS((RIG *, freq_cb_t, rig_ptr_t)); -extern HAMLIB_EXPORT(int) rig_set_mode_callback HAMLIB_PARAMS((RIG *, mode_cb_t, rig_ptr_t)); -extern HAMLIB_EXPORT(int) rig_set_vfo_callback HAMLIB_PARAMS((RIG *, vfo_cb_t, rig_ptr_t)); -extern HAMLIB_EXPORT(int) rig_set_ptt_callback HAMLIB_PARAMS((RIG *, ptt_cb_t, rig_ptr_t)); -extern HAMLIB_EXPORT(int) rig_set_dcd_callback HAMLIB_PARAMS((RIG *, dcd_cb_t, rig_ptr_t)); -extern HAMLIB_EXPORT(int) rig_set_pltune_callback HAMLIB_PARAMS((RIG *, pltune_cb_t, rig_ptr_t)); +extern HAMLIB_EXPORT(int) +rig_vfo_op HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + vfo_op_t op)); -extern HAMLIB_EXPORT(const char *) rig_get_info HAMLIB_PARAMS((RIG *rig)); +extern HAMLIB_EXPORT(vfo_op_t) +rig_has_vfo_op HAMLIB_PARAMS((RIG *rig, + vfo_op_t op)); -extern HAMLIB_EXPORT(const struct rig_caps *) rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model)); -extern HAMLIB_EXPORT(const freq_range_t *) rig_get_range HAMLIB_PARAMS((const freq_range_t range_list[], freq_t freq, rmode_t mode)); +extern HAMLIB_EXPORT(int) +rig_scan HAMLIB_PARAMS((RIG *rig, + vfo_t vfo, + scan_t scan, + int ch)); -extern HAMLIB_EXPORT(pbwidth_t) rig_passband_normal HAMLIB_PARAMS((RIG *rig, rmode_t mode)); -extern HAMLIB_EXPORT(pbwidth_t) rig_passband_narrow HAMLIB_PARAMS((RIG *rig, rmode_t mode)); -extern HAMLIB_EXPORT(pbwidth_t) rig_passband_wide HAMLIB_PARAMS((RIG *rig, rmode_t mode)); +extern HAMLIB_EXPORT(scan_t) +rig_has_scan HAMLIB_PARAMS((RIG *rig, + scan_t scan)); -extern HAMLIB_EXPORT(const char *) rigerror HAMLIB_PARAMS((int errnum)); +extern HAMLIB_EXPORT(int) +rig_set_channel HAMLIB_PARAMS((RIG *rig, + const channel_t *chan)); /* mem */ +extern HAMLIB_EXPORT(int) +rig_get_channel HAMLIB_PARAMS((RIG *rig, + channel_t *chan)); + +extern HAMLIB_EXPORT(int) +rig_set_chan_all HAMLIB_PARAMS((RIG *rig, + const channel_t chans[])); +extern HAMLIB_EXPORT(int) +rig_get_chan_all HAMLIB_PARAMS((RIG *rig, + channel_t chans[])); + +extern HAMLIB_EXPORT(int) +rig_set_chan_all_cb HAMLIB_PARAMS((RIG *rig, + chan_cb_t chan_cb, + rig_ptr_t)); +extern HAMLIB_EXPORT(int) +rig_get_chan_all_cb HAMLIB_PARAMS((RIG *rig, + chan_cb_t chan_cb, + rig_ptr_t)); + +extern HAMLIB_EXPORT(int) +rig_set_mem_all_cb HAMLIB_PARAMS((RIG *rig, + chan_cb_t chan_cb, + confval_cb_t parm_cb, + rig_ptr_t)); +extern HAMLIB_EXPORT(int) +rig_get_mem_all_cb HAMLIB_PARAMS((RIG *rig, + chan_cb_t chan_cb, + confval_cb_t parm_cb, + rig_ptr_t)); + +extern HAMLIB_EXPORT(int) +rig_set_mem_all HAMLIB_PARAMS((RIG *rig, + const channel_t *chan, + const struct confparams *, + const value_t *)); +extern HAMLIB_EXPORT(int) +rig_get_mem_all HAMLIB_PARAMS((RIG *rig, + channel_t *chan, + const struct confparams *, + value_t *)); + +extern HAMLIB_EXPORT(const chan_t *) +rig_lookup_mem_caps HAMLIB_PARAMS((RIG *rig, + int ch)); + +extern HAMLIB_EXPORT(int) +rig_mem_count HAMLIB_PARAMS((RIG *rig)); + +extern HAMLIB_EXPORT(int) +rig_set_trn HAMLIB_PARAMS((RIG *rig, + int trn)); +extern HAMLIB_EXPORT(int) +rig_get_trn HAMLIB_PARAMS((RIG *rig, + int *trn)); + +extern HAMLIB_EXPORT(int) +rig_set_freq_callback HAMLIB_PARAMS((RIG *, + freq_cb_t, + rig_ptr_t)); + +extern HAMLIB_EXPORT(int) +rig_set_mode_callback HAMLIB_PARAMS((RIG *, + mode_cb_t, + rig_ptr_t)); +extern HAMLIB_EXPORT(int) +rig_set_vfo_callback HAMLIB_PARAMS((RIG *, + vfo_cb_t, + rig_ptr_t)); + +extern HAMLIB_EXPORT(int) +rig_set_ptt_callback HAMLIB_PARAMS((RIG *, + ptt_cb_t, + rig_ptr_t)); + +extern HAMLIB_EXPORT(int) +rig_set_dcd_callback HAMLIB_PARAMS((RIG *, + dcd_cb_t, + rig_ptr_t)); + +extern HAMLIB_EXPORT(int) +rig_set_pltune_callback HAMLIB_PARAMS((RIG *, + pltune_cb_t, + rig_ptr_t)); + +extern HAMLIB_EXPORT(const char *) +rig_get_info HAMLIB_PARAMS((RIG *rig)); + +extern HAMLIB_EXPORT(const struct rig_caps *) +rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model)); + +extern HAMLIB_EXPORT(const freq_range_t *) +rig_get_range HAMLIB_PARAMS((const freq_range_t range_list[], + freq_t freq, + rmode_t mode)); + +extern HAMLIB_EXPORT(pbwidth_t) +rig_passband_normal HAMLIB_PARAMS((RIG *rig, + rmode_t mode)); +extern HAMLIB_EXPORT(pbwidth_t) +rig_passband_narrow HAMLIB_PARAMS((RIG *rig, + rmode_t mode)); +extern HAMLIB_EXPORT(pbwidth_t) +rig_passband_wide HAMLIB_PARAMS((RIG *rig, + rmode_t mode)); + +extern HAMLIB_EXPORT(const char *) +rigerror HAMLIB_PARAMS((int errnum)); + +extern HAMLIB_EXPORT(int) +rig_setting2idx HAMLIB_PARAMS((setting_t s)); -extern HAMLIB_EXPORT(int) rig_setting2idx HAMLIB_PARAMS((setting_t s)); #define rig_idx2setting(i) (1UL<<(i)) /* * Even if these functions are prefixed with "rig_", they are not rig specific * Maybe "hamlib_" would have been better. Let me know. --SF */ -extern HAMLIB_EXPORT(void) rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level)); -#define rig_set_debug_level(level) rig_set_debug(level) -extern HAMLIB_EXPORT(int) rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level)); -extern HAMLIB_EXPORT(void) rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level, const char *fmt, ...)); -extern HAMLIB_EXPORT(vprintf_cb_t) rig_set_debug_callback HAMLIB_PARAMS((vprintf_cb_t cb, rig_ptr_t arg)); -extern HAMLIB_EXPORT(FILE*) rig_set_debug_file HAMLIB_PARAMS((FILE *stream)); +extern HAMLIB_EXPORT(void) +rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level)); -extern HAMLIB_EXPORT(int) rig_register HAMLIB_PARAMS((const struct rig_caps *caps)); -extern HAMLIB_EXPORT(int) rig_unregister HAMLIB_PARAMS((rig_model_t rig_model)); -extern HAMLIB_EXPORT(int) rig_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rig_caps*, rig_ptr_t), rig_ptr_t data)); -extern HAMLIB_EXPORT(int) rig_load_backend HAMLIB_PARAMS((const char *be_name)); -extern HAMLIB_EXPORT(int) rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model)); -extern HAMLIB_EXPORT(int) rig_load_all_backends HAMLIB_PARAMS((void)); +#define rig_set_debug_level(level) rig_set_debug(level) + +extern HAMLIB_EXPORT(int) +rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level)); + +extern HAMLIB_EXPORT(void) +rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level, + const char *fmt, ...)); + +extern HAMLIB_EXPORT(vprintf_cb_t) +rig_set_debug_callback HAMLIB_PARAMS((vprintf_cb_t cb, + rig_ptr_t arg)); + +extern HAMLIB_EXPORT(FILE *) +rig_set_debug_file HAMLIB_PARAMS((FILE *stream)); + +extern HAMLIB_EXPORT(int) +rig_register HAMLIB_PARAMS((const struct rig_caps *caps)); + +extern HAMLIB_EXPORT(int) +rig_unregister HAMLIB_PARAMS((rig_model_t rig_model)); + +extern HAMLIB_EXPORT(int) +rig_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rig_caps *, rig_ptr_t), + rig_ptr_t data)); + +extern HAMLIB_EXPORT(int) +rig_load_backend HAMLIB_PARAMS((const char *be_name)); + +extern HAMLIB_EXPORT(int) +rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model)); + +extern HAMLIB_EXPORT(int) +rig_load_all_backends HAMLIB_PARAMS((void)); typedef int (*rig_probe_func_t)(const hamlib_port_t *, rig_model_t, rig_ptr_t); -extern HAMLIB_EXPORT(int) rig_probe_all HAMLIB_PARAMS((hamlib_port_t *p, rig_probe_func_t, rig_ptr_t)); -extern HAMLIB_EXPORT(rig_model_t) rig_probe HAMLIB_PARAMS((hamlib_port_t *p)); + +extern HAMLIB_EXPORT(int) +rig_probe_all HAMLIB_PARAMS((hamlib_port_t *p, + rig_probe_func_t, + rig_ptr_t)); + +extern HAMLIB_EXPORT(rig_model_t) +rig_probe HAMLIB_PARAMS((hamlib_port_t *p)); /* Misc calls */ diff --git a/include/hamlib/rig_dll.h b/include/hamlib/rig_dll.h index 72593ab9a..212bcd8b6 100644 --- a/include/hamlib/rig_dll.h +++ b/include/hamlib/rig_dll.h @@ -42,15 +42,15 @@ # undef HAMLIB_DLL_EXPORT # if defined (__BORLANDC__) -# define HAMLIB_DLL_IMPORT __import -# define HAMLIB_DLL_EXPORT __export +# define HAMLIB_DLL_IMPORT __import +# define HAMLIB_DLL_EXPORT __export # else -# define HAMLIB_DLL_IMPORT __declspec(dllimport) -# define HAMLIB_DLL_EXPORT __declspec(dllexport) +# define HAMLIB_DLL_IMPORT __declspec(dllimport) +# define HAMLIB_DLL_EXPORT __declspec(dllexport) # endif # ifdef DLL_EXPORT - /* HAMLIB_API may be set to __stdcall for VB, .. */ +/* HAMLIB_API may be set to __stdcall for VB, .. */ # define HAMLIB_API __cdecl # ifdef IN_HAMLIB # define BACKEND_IMPEXP HAMLIB_DLL_EXPORT @@ -60,8 +60,8 @@ # define HAMLIB_IMPEXP HAMLIB_DLL_IMPORT # endif # else - /* static build, only export the backend entry points for lt_dlsym */ -# define BACKEND_IMPEXP HAMLIB_DLL_EXPORT +/* static build, only export the backend entry points for lt_dlsym */ +# define BACKEND_IMPEXP HAMLIB_DLL_EXPORT # endif #endif @@ -88,5 +88,3 @@ #if !defined(BACKEND_EXPORT_VAR) # define BACKEND_EXPORT_VAR(type) BACKEND_IMPEXP type #endif - - diff --git a/include/hamlib/rigclass.h b/include/hamlib/rigclass.h index 0dbd78870..13b074541 100644 --- a/include/hamlib/rigclass.h +++ b/include/hamlib/rigclass.h @@ -26,156 +26,171 @@ #include -class BACKEND_IMPEXP Rig { +class BACKEND_IMPEXP Rig +{ private: - RIG* theRig; // Global ref. to the rig + RIG *theRig; // Global ref. to the rig protected: public: - Rig(rig_model_t rig_model); + Rig(rig_model_t rig_model); - virtual ~Rig(); + virtual ~Rig(); - const struct rig_caps *caps; + const struct rig_caps *caps; - // This method open the communication port to the rig - void open(void); + // This method opens the communication port to the rig + void open(void); - // This method close the communication port to the rig - void close(void); + // This method closes the communication port to the rig + void close(void); - void setConf(token_t token, const char *val); - void setConf(const char *name, const char *val); - void getConf(token_t token, char *val); - void getConf(const char *name, char *val); - token_t tokenLookup(const char *name); + void setConf(token_t token, const char *val); + void setConf(const char *name, const char *val); + void getConf(token_t token, char *val); + void getConf(const char *name, char *val); + token_t tokenLookup(const char *name); - void setFreq(freq_t freq, vfo_t vfo = RIG_VFO_CURR); - freq_t getFreq(vfo_t vfo = RIG_VFO_CURR); - void setMode(rmode_t, pbwidth_t width = RIG_PASSBAND_NORMAL, vfo_t vfo = RIG_VFO_CURR); - rmode_t getMode(pbwidth_t&, vfo_t vfo = RIG_VFO_CURR); - void setVFO(vfo_t); - vfo_t getVFO(); + void setFreq(freq_t freq, vfo_t vfo = RIG_VFO_CURR); + freq_t getFreq(vfo_t vfo = RIG_VFO_CURR); + void setMode(rmode_t, + pbwidth_t width = RIG_PASSBAND_NORMAL, + vfo_t vfo = RIG_VFO_CURR); - void setPTT (ptt_t ptt, vfo_t vfo = RIG_VFO_CURR); - ptt_t getPTT (vfo_t vfo = RIG_VFO_CURR); - dcd_t getDCD (vfo_t vfo = RIG_VFO_CURR); + rmode_t getMode(pbwidth_t&, vfo_t vfo = RIG_VFO_CURR); + void setVFO(vfo_t); + vfo_t getVFO(); - void setLevel(setting_t level, int vali, vfo_t vfo = RIG_VFO_CURR); - void setLevel(setting_t level, float valf, vfo_t vfo = RIG_VFO_CURR); - void getLevel(setting_t level, int& vali, vfo_t vfo = RIG_VFO_CURR); - void getLevel(setting_t level, float& valf, vfo_t vfo = RIG_VFO_CURR); - int getLevelI(setting_t level, vfo_t vfo = RIG_VFO_CURR); - float getLevelF(setting_t level, vfo_t vfo = RIG_VFO_CURR); - bool hasGetLevel (setting_t level); - bool hasSetLevel (setting_t level); + void setPTT(ptt_t ptt, vfo_t vfo = RIG_VFO_CURR); + ptt_t getPTT(vfo_t vfo = RIG_VFO_CURR); + dcd_t getDCD(vfo_t vfo = RIG_VFO_CURR); - void setParm(setting_t parm, int vali); - void setParm(setting_t parm, float valf); - void getParm(setting_t parm, int& vali); - void getParm(setting_t parm, float& valf); - int getParmI(setting_t parm); - float getParmF(setting_t parm); - bool hasGetParm (setting_t parm); - bool hasSetParm (setting_t parm); + void setLevel(setting_t level, int vali, vfo_t vfo = RIG_VFO_CURR); + void setLevel(setting_t level, float valf, vfo_t vfo = RIG_VFO_CURR); + void getLevel(setting_t level, int& vali, vfo_t vfo = RIG_VFO_CURR); + void getLevel(setting_t level, float& valf, vfo_t vfo = RIG_VFO_CURR); + int getLevelI(setting_t level, vfo_t vfo = RIG_VFO_CURR); + float getLevelF(setting_t level, vfo_t vfo = RIG_VFO_CURR); + bool hasGetLevel(setting_t level); + bool hasSetLevel(setting_t level); - void setFunc (setting_t func, bool status, vfo_t vfo = RIG_VFO_CURR); - bool getFunc (setting_t func, vfo_t vfo = RIG_VFO_CURR); - bool hasGetFunc (setting_t func); - bool hasSetFunc (setting_t func); + void setParm(setting_t parm, int vali); + void setParm(setting_t parm, float valf); + void getParm(setting_t parm, int& vali); + void getParm(setting_t parm, float& valf); + int getParmI(setting_t parm); + float getParmF(setting_t parm); + bool hasGetParm(setting_t parm); + bool hasSetParm(setting_t parm); - void VFOop(vfo_op_t op, vfo_t vfo = RIG_VFO_CURR); - bool hasVFOop (vfo_op_t op); + void setFunc(setting_t func, bool status, vfo_t vfo = RIG_VFO_CURR); + bool getFunc(setting_t func, vfo_t vfo = RIG_VFO_CURR); + bool hasGetFunc(setting_t func); + bool hasSetFunc(setting_t func); - void scan(scan_t scan, int ch, vfo_t vfo = RIG_VFO_CURR); - bool hasScan (scan_t scan); + void VFOop(vfo_op_t op, vfo_t vfo = RIG_VFO_CURR); + bool hasVFOop(vfo_op_t op); - const char *getInfo (void); - pbwidth_t passbandNormal (rmode_t); - pbwidth_t passbandNarrow (rmode_t); - pbwidth_t passbandWide (rmode_t); + void scan(scan_t scan, int ch, vfo_t vfo = RIG_VFO_CURR); + bool hasScan(scan_t scan); - void setRptrShift (rptr_shift_t rptr_shift, vfo_t vfo = RIG_VFO_CURR); - rptr_shift_t getRptrShift (vfo_t vfo = RIG_VFO_CURR); - void setRptrOffs (shortfreq_t rptr_offs, vfo_t vfo = RIG_VFO_CURR); - shortfreq_t getRptrOffs (vfo_t vfo = RIG_VFO_CURR); - void setTs (shortfreq_t ts, vfo_t vfo = RIG_VFO_CURR); - shortfreq_t getTs (vfo_t vfo = RIG_VFO_CURR); + const char * getInfo(void); + pbwidth_t passbandNormal(rmode_t); + pbwidth_t passbandNarrow(rmode_t); + pbwidth_t passbandWide(rmode_t); - void setCTCSS (tone_t tone, vfo_t vfo = RIG_VFO_CURR); - tone_t getCTCSS (vfo_t vfo = RIG_VFO_CURR); - void setDCS (tone_t code, vfo_t vfo = RIG_VFO_CURR); - tone_t getDCS (vfo_t vfo = RIG_VFO_CURR); + void setRptrShift(rptr_shift_t rptr_shift, vfo_t vfo = RIG_VFO_CURR); + rptr_shift_t getRptrShift(vfo_t vfo = RIG_VFO_CURR); + void setRptrOffs(shortfreq_t rptr_offs, vfo_t vfo = RIG_VFO_CURR); + shortfreq_t getRptrOffs(vfo_t vfo = RIG_VFO_CURR); + void setTs(shortfreq_t ts, vfo_t vfo = RIG_VFO_CURR); + shortfreq_t getTs(vfo_t vfo = RIG_VFO_CURR); - void setCTCSSsql (tone_t tone, vfo_t vfo = RIG_VFO_CURR); - tone_t getCTCSSsql (vfo_t vfo = RIG_VFO_CURR); - void setDCSsql (tone_t tone, vfo_t vfo = RIG_VFO_CURR); - tone_t getDCSsql (vfo_t vfo = RIG_VFO_CURR); + void setCTCSS(tone_t tone, vfo_t vfo = RIG_VFO_CURR); + tone_t getCTCSS(vfo_t vfo = RIG_VFO_CURR); + void setDCS(tone_t code, vfo_t vfo = RIG_VFO_CURR); + tone_t getDCS(vfo_t vfo = RIG_VFO_CURR); + + void setCTCSSsql(tone_t tone, vfo_t vfo = RIG_VFO_CURR); + tone_t getCTCSSsql(vfo_t vfo = RIG_VFO_CURR); + void setDCSsql(tone_t tone, vfo_t vfo = RIG_VFO_CURR); + tone_t getDCSsql(vfo_t vfo = RIG_VFO_CURR); - unsigned int power2mW (float power, freq_t freq, rmode_t mode); - float mW2power (unsigned int mwpower, freq_t freq, rmode_t mode); - void setTrn (int trn); - int getTrn (void); - void setBank (int bank, vfo_t vfo = RIG_VFO_CURR); - void setMem (int ch, vfo_t vfo = RIG_VFO_CURR); - int getMem (vfo_t vfo = RIG_VFO_CURR); + unsigned int power2mW(float power, freq_t freq, rmode_t mode); + float mW2power(unsigned int mwpower, freq_t freq, rmode_t mode); + void setTrn(int trn); + int getTrn(void); + void setBank(int bank, vfo_t vfo = RIG_VFO_CURR); + void setMem(int ch, vfo_t vfo = RIG_VFO_CURR); + int getMem(vfo_t vfo = RIG_VFO_CURR); - void setChannel (const channel_t *chan); - void getChannel (channel_t *chan); + void setChannel(const channel_t *chan); + void getChannel(channel_t *chan); - void setPowerStat (powerstat_t status); - powerstat_t getPowerStat (void); - rmode_t RngRxModes (freq_t freq); - rmode_t RngTxModes (freq_t freq); + void setPowerStat(powerstat_t status); + powerstat_t getPowerStat(void); + rmode_t RngRxModes(freq_t freq); + rmode_t RngTxModes(freq_t freq); - void setSplitFreq (freq_t tx_freq, vfo_t vfo = RIG_VFO_CURR); - freq_t getSplitFreq (vfo_t vfo = RIG_VFO_CURR); - void setSplitMode(rmode_t, pbwidth_t width = RIG_PASSBAND_NORMAL, vfo_t vfo = RIG_VFO_CURR); - rmode_t getSplitMode(pbwidth_t&, vfo_t vfo = RIG_VFO_CURR); - void setSplitFreqMode(freq_t, rmode_t, pbwidth_t width = RIG_PASSBAND_NORMAL, vfo_t vfo = RIG_VFO_CURR); - freq_t getSplitFreqMode(rmode_t&, pbwidth_t&, vfo_t vfo = RIG_VFO_CURR); - void setSplitVFO(split_t split, vfo_t vfo = RIG_VFO_CURR, vfo_t tx_vfo = RIG_VFO_CURR); - split_t getSplitVFO(vfo_t &tx_vfo, vfo_t vfo = RIG_VFO_CURR); + void setSplitFreq(freq_t tx_freq, vfo_t vfo = RIG_VFO_CURR); + freq_t getSplitFreq(vfo_t vfo = RIG_VFO_CURR); + void setSplitMode(rmode_t, + pbwidth_t width = RIG_PASSBAND_NORMAL, + vfo_t vfo = RIG_VFO_CURR); - void setRit (shortfreq_t rit, vfo_t vfo = RIG_VFO_CURR); - shortfreq_t getRit (vfo_t vfo = RIG_VFO_CURR); - void setXit (shortfreq_t xit, vfo_t vfo = RIG_VFO_CURR); - shortfreq_t getXit (vfo_t vfo = RIG_VFO_CURR); + rmode_t getSplitMode(pbwidth_t&, vfo_t vfo = RIG_VFO_CURR); + void setSplitFreqMode(freq_t, rmode_t, + pbwidth_t width = RIG_PASSBAND_NORMAL, + vfo_t vfo = RIG_VFO_CURR); - void setAnt (ant_t ant, vfo_t vfo = RIG_VFO_CURR); - ant_t getAnt (vfo_t vfo = RIG_VFO_CURR); + freq_t getSplitFreqMode(rmode_t&, pbwidth_t&, vfo_t vfo = RIG_VFO_CURR); + void setSplitVFO(split_t split, + vfo_t vfo = RIG_VFO_CURR, + vfo_t tx_vfo = RIG_VFO_CURR); - void sendDtmf (const char *digits, vfo_t vfo = RIG_VFO_CURR); - int recvDtmf (char *digits, vfo_t vfo = RIG_VFO_CURR); - void sendMorse (const char *msg, vfo_t vfo = RIG_VFO_CURR); + split_t getSplitVFO(vfo_t& tx_vfo, vfo_t vfo = RIG_VFO_CURR); + + void setRit(shortfreq_t rit, vfo_t vfo = RIG_VFO_CURR); + shortfreq_t getRit(vfo_t vfo = RIG_VFO_CURR); + void setXit(shortfreq_t xit, vfo_t vfo = RIG_VFO_CURR); + shortfreq_t getXit(vfo_t vfo = RIG_VFO_CURR); + + void setAnt(ant_t ant, vfo_t vfo = RIG_VFO_CURR); + ant_t getAnt(vfo_t vfo = RIG_VFO_CURR); + + void sendDtmf(const char *digits, vfo_t vfo = RIG_VFO_CURR); + int recvDtmf(char *digits, vfo_t vfo = RIG_VFO_CURR); + void sendMorse(const char *msg, vfo_t vfo = RIG_VFO_CURR); - shortfreq_t getResolution (rmode_t mode); - void reset (reset_t reset); - - // callbacks available in your derived object - virtual int FreqEvent(vfo_t, freq_t, rig_ptr_t) const { - return RIG_OK; - } - virtual int ModeEvent(vfo_t, rmode_t, pbwidth_t, rig_ptr_t) const { - return RIG_OK; - } - virtual int VFOEvent(vfo_t, rig_ptr_t) const { - return RIG_OK; - } - virtual int PTTEvent(vfo_t, ptt_t, rig_ptr_t) const { - return RIG_OK; - } - virtual int DCDEvent(vfo_t, dcd_t, rig_ptr_t) const { - return RIG_OK; - } - + shortfreq_t getResolution(rmode_t mode); + void reset(reset_t reset); + // callbacks available in your derived object + virtual int FreqEvent(vfo_t, freq_t, rig_ptr_t) const + { + return RIG_OK; + } + virtual int ModeEvent(vfo_t, rmode_t, pbwidth_t, rig_ptr_t) const + { + return RIG_OK; + } + virtual int VFOEvent(vfo_t, rig_ptr_t) const + { + return RIG_OK; + } + virtual int PTTEvent(vfo_t, ptt_t, rig_ptr_t) const + { + return RIG_OK; + } + virtual int DCDEvent(vfo_t, dcd_t, rig_ptr_t) const + { + return RIG_OK; + } }; - #ifdef __GNUG__ # if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8)) # if HAVE_TYPEINFO @@ -196,11 +211,11 @@ public: # undef exception # define exception builtin_exception # if HAVE_GPP_BUILTIN_H -# include +# include # elif HAVE_GXX_BUILTIN_H -# include +# include # else -# include +# include # endif # undef exception # endif @@ -223,57 +238,65 @@ extern "C" { #include #if !(defined(__GNUG__)||defined(__SUNPRO_CC)) - extern "C" void exit(int); +extern "C" void exit(int); #endif + // Forward Declarations class BACKEND_IMPEXP RigException { public: - const char *message; - int errorno; + const char *message; + int errorno; - RigException (const char* msg, int err) - : message(msg), errorno (err) + RigException(const char *msg, int err) + : message(msg), errorno(err) {}; - RigException (int err) - : message(rigerror(err)), errorno (err) + RigException(int err) + : message(rigerror(err)), errorno(err) {}; - RigException (const char* msg) - : message(msg), errorno (-RIG_EINTERNAL) + RigException(const char *msg) + : message(msg), errorno(-RIG_EINTERNAL) {}; - virtual ~RigException() + virtual ~RigException() {}; - void print() const { - std::cerr << "Rig exception: " << message << std::endl; - } - virtual const char *classname() const { - return "Rig"; - } + void print() const + { + std::cerr << "Rig exception: " << message << std::endl; + } + virtual const char *classname() const + { + return "Rig"; + } }; -inline void THROW(const RigException *e) { + +inline void THROW(const RigException *e) +{ #if defined(__GNUG__) # if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8)) - (*lib_error_handler)(e?e->classname():"",e?e->message:""); + (*lib_error_handler)(e ? e->classname() : "", e ? e->message : ""); #else - throw *e; + throw *e; #endif #elif defined(__SUNPRO_CC) - genericerror(1, ((e != 0) ? (char *)(e->message) : "")); + genericerror(1, ((e != 0) ? (char *)(e->message) : "")); #else - if (e) - std::cerr << e->message << endl; - exit(0); + + if (e) { + std::cerr << e->message << endl; + } + + exit(0); #endif } #define THROWS(s) -#endif // _RIGCLASS_H +#endif // _RIGCLASS_H diff --git a/include/hamlib/riglist.h b/include/hamlib/riglist.h index 5af6815e3..d3a60186d 100644 --- a/include/hamlib/riglist.h +++ b/include/hamlib/riglist.h @@ -29,16 +29,17 @@ /*! \file riglist.h * \brief Hamlib rig(radio) model definitions. * - * This file contains rig model definitions for the Hamlib rig API. - * Each distinct rig type has a unique model number (ID) and is used - * by hamlib to identify and distinguish between the different hardware drivers. - * The exact model numbers can be acquired using the macros in this - * file. To obtain a list of supported rig branches, one can use the statically - * defined RIG_BACKEND_LIST macro. To obtain a full list of supported rig (including - * each model in every branch), the foreach_opened_rig() API function can be used. + * This file contains rig model definitions for the Hamlib rig API. Each + * distinct rig type has a unique model number (ID) and is used by hamlib to + * identify and distinguish between the different hardware drivers. The + * exact model numbers can be acquired using the macros in this file. To + * obtain a list of supported rig branches, one can use the statically + * defined RIG_BACKEND_LIST macro. To obtain a full list of supported rig + * (including each model in every branch), the foreach_opened_rig() API + * function can be used. * - * The model number, or ID, is used to tell hamlib, which rig the client whishes to - * use. It is done with the rig_init() API call. + * The model number, or ID, is used to tell hamlib, which rig the client + * whishes to use. It is done with the rig_init() API call. */ #define RIG_MODEL_NONE 0 @@ -46,10 +47,13 @@ /*! \def RIG_MODEL_DUMMY * \brief A macro that returns the model number for the dummy backend. * - * The dummy backend, as the name suggests, is a backend which performs - * no hardware operations and always behaves as one would expect. It can - * be thought of as a hardware simulator and is very usefull for testing - * client applications. + * The dummy backend, as the name suggests, is a backend which performs no + * hardware operations and always behaves as one would expect. It can be + * thought of as a hardware simulator and is very usefull for testing client + * applications. + * + * It has also been expanded to provide support to "virtual" type of rigs + * such as the network rig control backend and W1HKJ's Flrig application. */ #define RIG_DUMMY 0 #define RIG_BACKEND_DUMMY "dummy" @@ -58,9 +62,10 @@ #define RIG_MODEL_ARMSTRONG RIG_MAKE_MODEL(RIG_DUMMY, 3) #define RIG_MODEL_FLRIG RIG_MAKE_MODEL(RIG_DUMMY, 4) - /* - * Yaesu - */ + +/* + * Yaesu + */ #define RIG_YAESU 1 #define RIG_BACKEND_YAESU "yaesu" #define RIG_MODEL_FT847 RIG_MAKE_MODEL(RIG_YAESU, 1) @@ -100,9 +105,10 @@ #define RIG_MODEL_FT991 RIG_MAKE_MODEL(RIG_YAESU, 35) #define RIG_MODEL_FT891 RIG_MAKE_MODEL(RIG_YAESU, 36) - /* - * Kenwood - */ + +/* + * Kenwood + */ #define RIG_KENWOOD 2 #define RIG_BACKEND_KENWOOD "kenwood" #define RIG_MODEL_TS50 RIG_MAKE_MODEL(RIG_KENWOOD, 1) @@ -140,15 +146,16 @@ #define RIG_MODEL_THD72A RIG_MAKE_MODEL(RIG_KENWOOD, 33) #define RIG_MODEL_TMD710 RIG_MAKE_MODEL(RIG_KENWOOD, 34) #define RIG_MODEL_TMV71 RIG_MAKE_MODEL(RIG_KENWOOD, 35) -#define RIG_MODEL_F6K RIG_MAKE_MODEL(RIG_KENWOOD, 36) /* Flex 6000 Series */ +#define RIG_MODEL_F6K RIG_MAKE_MODEL(RIG_KENWOOD, 36) /* Flex 6000 Series */ #define RIG_MODEL_TS590SG RIG_MAKE_MODEL(RIG_KENWOOD, 37) -#define RIG_MODEL_XG3 RIG_MAKE_MODEL(RIG_KENWOOD, 38) +#define RIG_MODEL_XG3 RIG_MAKE_MODEL(RIG_KENWOOD, 38) /* Elecraft XG-3 signal generator */ #define RIG_MODEL_TS990S RIG_MAKE_MODEL(RIG_KENWOOD, 39) #define RIG_MODEL_HPSDR RIG_MAKE_MODEL(RIG_KENWOOD, 40) /* OpenHPSDR, PiHPSDR */ - /* - * Icom - */ + +/* + * Icom + */ #define RIG_ICOM 3 #define RIG_BACKEND_ICOM "icom" #define RIG_MODEL_IC1271 RIG_MAKE_MODEL(RIG_ICOM, 1) @@ -197,16 +204,16 @@ #define RIG_MODEL_IC910 RIG_MAKE_MODEL(RIG_ICOM, 44) #define RIG_MODEL_IC78 RIG_MAKE_MODEL(RIG_ICOM, 45) #define RIG_MODEL_IC746PRO RIG_MAKE_MODEL(RIG_ICOM, 46) -#define RIG_MODEL_IC756PROII RIG_MAKE_MODEL(RIG_ICOM, 47) +#define RIG_MODEL_IC756PROII RIG_MAKE_MODEL(RIG_ICOM, 47) /* 48-53 defined below */ #define RIG_MODEL_ICID1 RIG_MAKE_MODEL(RIG_ICOM, 54) #define RIG_MODEL_IC703 RIG_MAKE_MODEL(RIG_ICOM, 55) #define RIG_MODEL_IC7800 RIG_MAKE_MODEL(RIG_ICOM, 56) #define RIG_MODEL_IC756PROIII RIG_MAKE_MODEL(RIG_ICOM, 57) -#define RIG_MODEL_ICR20 RIG_MAKE_MODEL(RIG_ICOM, 58) +#define RIG_MODEL_ICR20 RIG_MAKE_MODEL(RIG_ICOM, 58) /* 59 defined below */ #define RIG_MODEL_IC7000 RIG_MAKE_MODEL(RIG_ICOM, 60) #define RIG_MODEL_IC7200 RIG_MAKE_MODEL(RIG_ICOM, 61) #define RIG_MODEL_IC7700 RIG_MAKE_MODEL(RIG_ICOM, 62) -#define RIG_MODEL_IC7600 RIG_MAKE_MODEL(RIG_ICOM, 63) +#define RIG_MODEL_IC7600 RIG_MAKE_MODEL(RIG_ICOM, 63) /* 64 defined below */ #define RIG_MODEL_IC92D RIG_MAKE_MODEL(RIG_ICOM, 65) #define RIG_MODEL_ICR9500 RIG_MAKE_MODEL(RIG_ICOM, 66) #define RIG_MODEL_IC7410 RIG_MAKE_MODEL(RIG_ICOM, 67) @@ -218,29 +225,32 @@ #define RIG_MODEL_IC7300 RIG_MAKE_MODEL(RIG_ICOM, 73) #define RIG_MODEL_PERSEUS RIG_MAKE_MODEL(RIG_ICOM, 74) #define RIG_MODEL_IC785x RIG_MAKE_MODEL(RIG_ICOM, 75) -#define RIG_MODEL_X108G RIG_MAKE_MODEL(RIG_ICOM, 76) /* Xiegu X108 */ +#define RIG_MODEL_X108G RIG_MAKE_MODEL(RIG_ICOM, 76) /* Xiegu X108 */ #define RIG_MODEL_ICR6 RIG_MAKE_MODEL(RIG_ICOM, 77) /* next one is 78 */ - /* - * Optoelectronics (CI-V) - */ + +/* + * Optoelectronics (CI-V) + */ #define RIG_MODEL_MINISCOUT RIG_MAKE_MODEL(RIG_ICOM, 48) #define RIG_MODEL_XPLORER RIG_MAKE_MODEL(RIG_ICOM, 49) #define RIG_MODEL_OS535 RIG_MAKE_MODEL(RIG_ICOM, 52) #define RIG_MODEL_OS456 RIG_MAKE_MODEL(RIG_ICOM, 53) - /* - * TenTec (CI-V) - */ + +/* + * TenTec (CI-V) + */ #define RIG_MODEL_OMNIVI RIG_MAKE_MODEL(RIG_ICOM, 50) #define RIG_MODEL_OMNIVIP RIG_MAKE_MODEL(RIG_ICOM, 51) /* OMNI-VI+ */ #define RIG_MODEL_PARAGON2 RIG_MAKE_MODEL(RIG_ICOM, 59) #define RIG_MODEL_DELTAII RIG_MAKE_MODEL(RIG_ICOM, 64) - /* - * Icom PCR - */ + +/* + * Icom PCR + */ #define RIG_PCR 4 #define RIG_BACKEND_PCR "pcr" #define RIG_MODEL_PCR1000 RIG_MAKE_MODEL(RIG_PCR, 1) @@ -248,9 +258,10 @@ #define RIG_MODEL_PCR1500 RIG_MAKE_MODEL(RIG_PCR, 3) #define RIG_MODEL_PCR2500 RIG_MAKE_MODEL(RIG_PCR, 4) - /* - * AOR - */ + +/* + * AOR + */ #define RIG_AOR 5 #define RIG_BACKEND_AOR "aor" #define RIG_MODEL_AR8200 RIG_MAKE_MODEL(RIG_AOR, 1) @@ -270,9 +281,10 @@ #define RIG_MODEL_AR7030P RIG_MAKE_MODEL(RIG_AOR, 15) #define RIG_MODEL_SR2200 RIG_MAKE_MODEL(RIG_AOR, 16) - /* - * JRC - */ + +/* + * JRC + */ #define RIG_JRC 6 #define RIG_BACKEND_JRC "jrc" #define RIG_MODEL_JST145 RIG_MAKE_MODEL(RIG_JRC, 1) @@ -283,28 +295,30 @@ #define RIG_MODEL_NRD535 RIG_MAKE_MODEL(RIG_JRC, 6) #define RIG_MODEL_NRD545 RIG_MAKE_MODEL(RIG_JRC, 7) - /* - * Radio Shack - * Actualy, they might be either Icom or Uniden. TBC --SF - */ + +/* + * Radio Shack + * Actualy, they might be either Icom or Uniden. TBC --SF + */ #define RIG_RADIOSHACK 7 #define RIG_BACKEND_RADIOSHACK "radioshack" -#define RIG_MODEL_RS64 RIG_MAKE_MODEL(RIG_RADIOSHACK, 1) /* PRO-64 */ -#define RIG_MODEL_RS2005 RIG_MAKE_MODEL(RIG_RADIOSHACK, 2) /* w/ OptoElectronics OS456 Board */ -#define RIG_MODEL_RS2006 RIG_MAKE_MODEL(RIG_RADIOSHACK, 3) /* w/ OptoElectronics OS456 Board */ -#define RIG_MODEL_RS2035 RIG_MAKE_MODEL(RIG_RADIOSHACK, 4) /* w/ OptoElectronics OS435 Board */ -#define RIG_MODEL_RS2042 RIG_MAKE_MODEL(RIG_RADIOSHACK, 5) /* w/ OptoElectronics OS435 Board */ -#define RIG_MODEL_RS2041 RIG_MAKE_MODEL(RIG_RADIOSHACK, 6) /* PRO-2041 */ +#define RIG_MODEL_RS64 RIG_MAKE_MODEL(RIG_RADIOSHACK, 1) /* PRO-64 */ +#define RIG_MODEL_RS2005 RIG_MAKE_MODEL(RIG_RADIOSHACK, 2) /* w/ OptoElectronics OS456 Board */ +#define RIG_MODEL_RS2006 RIG_MAKE_MODEL(RIG_RADIOSHACK, 3) /* w/ OptoElectronics OS456 Board */ +#define RIG_MODEL_RS2035 RIG_MAKE_MODEL(RIG_RADIOSHACK, 4) /* w/ OptoElectronics OS435 Board */ +#define RIG_MODEL_RS2042 RIG_MAKE_MODEL(RIG_RADIOSHACK, 5) /* w/ OptoElectronics OS435 Board */ +#define RIG_MODEL_RS2041 RIG_MAKE_MODEL(RIG_RADIOSHACK, 6) /* PRO-2041 */ - /* - * Uniden - */ + +/* + * Uniden + */ #define RIG_UNIDEN 8 #define RIG_BACKEND_UNIDEN "uniden" -#define RIG_MODEL_BC780 RIG_MAKE_MODEL(RIG_UNIDEN, 1) /* Uniden BC780 - Trunk Tracker "Desktop Radio" */ +#define RIG_MODEL_BC780 RIG_MAKE_MODEL(RIG_UNIDEN, 1) /* Uniden BC780 - Trunk Tracker "Desktop Radio" */ #define RIG_MODEL_BC245 RIG_MAKE_MODEL(RIG_UNIDEN, 2) #define RIG_MODEL_BC895 RIG_MAKE_MODEL(RIG_UNIDEN, 3) -#define RIG_MODEL_PRO2052 RIG_MAKE_MODEL(RIG_UNIDEN, 4) /* Radio Shack PRO-2052 */ +#define RIG_MODEL_PRO2052 RIG_MAKE_MODEL(RIG_UNIDEN, 4) /* Radio Shack PRO-2052 */ #define RIG_MODEL_BC235 RIG_MAKE_MODEL(RIG_UNIDEN, 5) #define RIG_MODEL_BC250 RIG_MAKE_MODEL(RIG_UNIDEN, 6) #define RIG_MODEL_BC785 RIG_MAKE_MODEL(RIG_UNIDEN, 7) @@ -314,18 +328,20 @@ #define RIG_MODEL_BCD996T RIG_MAKE_MODEL(RIG_UNIDEN, 11) #define RIG_MODEL_BC898 RIG_MAKE_MODEL(RIG_UNIDEN, 12) - /* - * Drake - */ + +/* + * Drake + */ #define RIG_DRAKE 9 #define RIG_BACKEND_DRAKE "drake" #define RIG_MODEL_DKR8 RIG_MAKE_MODEL(RIG_DRAKE, 1) #define RIG_MODEL_DKR8A RIG_MAKE_MODEL(RIG_DRAKE, 2) #define RIG_MODEL_DKR8B RIG_MAKE_MODEL(RIG_DRAKE, 3) - /* - * Lowe - */ + +/* + * Lowe + */ #define RIG_LOWE 10 #define RIG_BACKEND_LOWE "lowe" #define RIG_MODEL_HF150 RIG_MAKE_MODEL(RIG_LOWE, 1) @@ -333,9 +349,10 @@ #define RIG_MODEL_HF250 RIG_MAKE_MODEL(RIG_LOWE, 3) #define RIG_MODEL_HF235 RIG_MAKE_MODEL(RIG_LOWE, 4) - /* - * Racal - */ + +/* + * Racal + */ #define RIG_RACAL 11 #define RIG_BACKEND_RACAL "racal" #define RIG_MODEL_RA3790 RIG_MAKE_MODEL(RIG_RACAL, 1) @@ -344,9 +361,10 @@ #define RIG_MODEL_RA3710 RIG_MAKE_MODEL(RIG_RACAL, 4) #define RIG_MODEL_RA3702 RIG_MAKE_MODEL(RIG_RACAL, 5) - /* - * Watkins-Johnson - */ + +/* + * Watkins-Johnson + */ #define RIG_WJ 12 #define RIG_BACKEND_WJ "wj" #define RIG_MODEL_HF1000 RIG_MAKE_MODEL(RIG_WJ, 1) @@ -354,9 +372,10 @@ #define RIG_MODEL_WJ8711 RIG_MAKE_MODEL(RIG_WJ, 3) #define RIG_MODEL_WJ8888 RIG_MAKE_MODEL(RIG_WJ, 4) - /* - * Rohde & Schwarz - */ + +/* + * Rohde & Schwarz--ek + */ #define RIG_EK 13 #define RIG_BACKEND_EK "ek" #define RIG_MODEL_ESM500 RIG_MAKE_MODEL(RIG_EK, 1) @@ -365,9 +384,10 @@ #define RIG_MODEL_EK895 RIG_MAKE_MODEL(RIG_EK, 4) #define RIG_MODEL_EK070 RIG_MAKE_MODEL(RIG_EK, 5) - /* - * Skanti - */ + +/* + * Skanti + */ #define RIG_SKANTI 14 #define RIG_BACKEND_SKANTI "skanti" #define RIG_MODEL_TRP7000 RIG_MAKE_MODEL(RIG_SKANTI, 1) @@ -375,9 +395,10 @@ #define RIG_MODEL_TRP9000 RIG_MAKE_MODEL(RIG_SKANTI, 3) #define RIG_MODEL_TRP8255 RIG_MAKE_MODEL(RIG_SKANTI, 4) - /* - * WiNRADiO/LinRADiO - */ + +/* + * WiNRADiO/LinRADiO + */ #define RIG_WINRADIO 15 #define RIG_BACKEND_WINRADIO "winradio" #define RIG_MODEL_WR1000 RIG_MAKE_MODEL(RIG_WINRADIO, 1) @@ -392,69 +413,75 @@ #define RIG_MODEL_G305 RIG_MAKE_MODEL(RIG_WINRADIO, 10) #define RIG_MODEL_G315 RIG_MAKE_MODEL(RIG_WINRADIO, 11) - /* - * Ten Tec - */ + +/* + * Ten Tec + */ #define RIG_TENTEC 16 #define RIG_BACKEND_TENTEC "tentec" -#define RIG_MODEL_TT550 RIG_MAKE_MODEL(RIG_TENTEC, 1) /* Pegasus */ -#define RIG_MODEL_TT538 RIG_MAKE_MODEL(RIG_TENTEC, 2) /* Jupiter */ +#define RIG_MODEL_TT550 RIG_MAKE_MODEL(RIG_TENTEC, 1) /* Pegasus */ +#define RIG_MODEL_TT538 RIG_MAKE_MODEL(RIG_TENTEC, 2) /* Jupiter */ #define RIG_MODEL_RX320 RIG_MAKE_MODEL(RIG_TENTEC, 3) #define RIG_MODEL_RX340 RIG_MAKE_MODEL(RIG_TENTEC, 4) #define RIG_MODEL_RX350 RIG_MAKE_MODEL(RIG_TENTEC, 5) -#define RIG_MODEL_TT526 RIG_MAKE_MODEL(RIG_TENTEC, 6) /* 6N2 */ -#define RIG_MODEL_TT516 RIG_MAKE_MODEL(RIG_TENTEC, 7) /* Argonaut V */ -#define RIG_MODEL_TT565 RIG_MAKE_MODEL(RIG_TENTEC, 8) /* Orion */ -#define RIG_MODEL_TT585 RIG_MAKE_MODEL(RIG_TENTEC, 9) /* Paragon */ -#define RIG_MODEL_TT588 RIG_MAKE_MODEL(RIG_TENTEC, 11) /* Omni-VII */ +#define RIG_MODEL_TT526 RIG_MAKE_MODEL(RIG_TENTEC, 6) /* 6N2 */ +#define RIG_MODEL_TT516 RIG_MAKE_MODEL(RIG_TENTEC, 7) /* Argonaut V */ +#define RIG_MODEL_TT565 RIG_MAKE_MODEL(RIG_TENTEC, 8) /* Orion */ +#define RIG_MODEL_TT585 RIG_MAKE_MODEL(RIG_TENTEC, 9) /* Paragon */ +#define RIG_MODEL_TT588 RIG_MAKE_MODEL(RIG_TENTEC, 11) /* Omni-VII */ #define RIG_MODEL_RX331 RIG_MAKE_MODEL(RIG_TENTEC, 12) #define RIG_MODEL_TT599 RIG_MAKE_MODEL(RIG_TENTEC, 13) /* Eagle */ - /* - * Alinco - */ + +/* + * Alinco + */ #define RIG_ALINCO 17 #define RIG_BACKEND_ALINCO "alinco" #define RIG_MODEL_DX77 RIG_MAKE_MODEL(RIG_ALINCO, 1) - /* - * Kachina - */ + +/* + * Kachina + */ #define RIG_KACHINA 18 #define RIG_BACKEND_KACHINA "kachina" #define RIG_MODEL_505DSP RIG_MAKE_MODEL(RIG_KACHINA, 1) - /* - * Gnuradio backend - */ +/* + * Gnuradio backend + */ #define RIG_GNURADIO 20 #define RIG_BACKEND_GNURADIO "gnuradio" -#define RIG_MODEL_GNURADIO RIG_MAKE_MODEL(RIG_GNURADIO, 1) /* dev model, Chirp source */ -#define RIG_MODEL_MC4020 RIG_MAKE_MODEL(RIG_GNURADIO, 2) /* MC4020 */ -#define RIG_MODEL_GRAUDIO RIG_MAKE_MODEL(RIG_GNURADIO, 3) /* Sound card source */ -#define RIG_MODEL_GRAUDIOIQ RIG_MAKE_MODEL(RIG_GNURADIO, 4) /* I&Q stereo sound card source */ -#define RIG_MODEL_USRP_G RIG_MAKE_MODEL(RIG_GNURADIO, 5) /* Universal Software Radio Peripheral */ +#define RIG_MODEL_GNURADIO RIG_MAKE_MODEL(RIG_GNURADIO, 1) /* dev model, Chirp source */ +#define RIG_MODEL_MC4020 RIG_MAKE_MODEL(RIG_GNURADIO, 2) /* MC4020 */ +#define RIG_MODEL_GRAUDIO RIG_MAKE_MODEL(RIG_GNURADIO, 3) /* Sound card source */ +#define RIG_MODEL_GRAUDIOIQ RIG_MAKE_MODEL(RIG_GNURADIO, 4) /* I&Q stereo sound card source */ +#define RIG_MODEL_USRP_G RIG_MAKE_MODEL(RIG_GNURADIO, 5) /* Universal Software Radio Peripheral */ - /* - * Microtune tuners - */ + +/* + * Microtune tuners + */ #define RIG_MICROTUNE 21 #define RIG_BACKEND_MICROTUNE "microtune" -#define RIG_MODEL_MICROTUNE_4937 RIG_MAKE_MODEL(RIG_MICROTUNE, 1) /* eval board */ -#define RIG_MODEL_MICROTUNE_4702 RIG_MAKE_MODEL(RIG_MICROTUNE, 2) /* Alan's */ +#define RIG_MODEL_MICROTUNE_4937 RIG_MAKE_MODEL(RIG_MICROTUNE, 1) /* eval board */ +#define RIG_MODEL_MICROTUNE_4702 RIG_MAKE_MODEL(RIG_MICROTUNE, 2) /* Alan's */ #define RIG_MODEL_MICROTUNE_4707 RIG_MAKE_MODEL(RIG_MICROTUNE, 3) - /* - * TAPR - */ + +/* + * TAPR + */ #define RIG_TAPR 22 #define RIG_BACKEND_TAPR "tapr" #define RIG_MODEL_DSP10 RIG_MAKE_MODEL(RIG_TAPR, 1) - /* - * Flex-radio - */ + +/* + * Flex-radio + */ #define RIG_FLEXRADIO 23 #define RIG_BACKEND_FLEXRADIO "flexradio" #define RIG_MODEL_SDR1000 RIG_MAKE_MODEL(RIG_FLEXRADIO, 1) @@ -463,116 +490,126 @@ #define RIG_MODEL_DTTSP_UDP RIG_MAKE_MODEL(RIG_FLEXRADIO, 4) - /* - * VEB Funkwerk Köpenick RFT - */ +/* + * VEB Funkwerk Köpenick RFT + */ #define RIG_RFT 24 #define RIG_BACKEND_RFT "rft" #define RIG_MODEL_EKD500 RIG_MAKE_MODEL(RIG_RFT, 1) - /* - * Various kits - */ + +/* + * Various kits + */ #define RIG_KIT 25 #define RIG_BACKEND_KIT "kit" #define RIG_MODEL_ELEKTOR304 RIG_MAKE_MODEL(RIG_KIT, 1) #define RIG_MODEL_DRT1 RIG_MAKE_MODEL(RIG_KIT, 2) #define RIG_MODEL_DWT RIG_MAKE_MODEL(RIG_KIT, 3) -#define RIG_MODEL_USRP0 RIG_MAKE_MODEL(RIG_KIT, 4) /* prototype */ +#define RIG_MODEL_USRP0 RIG_MAKE_MODEL(RIG_KIT, 4) /* prototype */ #define RIG_MODEL_USRP RIG_MAKE_MODEL(RIG_KIT, 5) #define RIG_MODEL_DDS60 RIG_MAKE_MODEL(RIG_KIT, 6) -#define RIG_MODEL_ELEKTOR507 RIG_MAKE_MODEL(RIG_KIT, 7) /* Elektor SDR USB */ +#define RIG_MODEL_ELEKTOR507 RIG_MAKE_MODEL(RIG_KIT, 7) /* Elektor SDR USB */ #define RIG_MODEL_MINIVNA RIG_MAKE_MODEL(RIG_KIT, 8) -#define RIG_MODEL_SI570AVRUSB RIG_MAKE_MODEL(RIG_KIT, 9) /* SoftRock Si570 AVR */ +#define RIG_MODEL_SI570AVRUSB RIG_MAKE_MODEL(RIG_KIT, 9) /* SoftRock Si570 AVR */ #define RIG_MODEL_PMSDR RIG_MAKE_MODEL(RIG_KIT, 10) -#define RIG_MODEL_SI570PICUSB RIG_MAKE_MODEL(RIG_KIT, 11) /* SoftRock Si570 PIC */ -#define RIG_MODEL_FIFISDR RIG_MAKE_MODEL(RIG_KIT, 12) /* FiFi-SDR USB */ -#define RIG_MODEL_FUNCUBEDONGLE RIG_MAKE_MODEL(RIG_KIT, 13) /* FunCUBE Dongle */ -#define RIG_MODEL_HIQSDR RIG_MAKE_MODEL(RIG_KIT, 14) /* HiQSDR */ -#define RIG_MODEL_FASDR RIG_MAKE_MODEL(RIG_KIT,15) /* Funkamateur Sdr */ -#define RIG_MODEL_SI570PEABERRY1 RIG_MAKE_MODEL(RIG_KIT, 16) /* Peaberry V1 */ -#define RIG_MODEL_SI570PEABERRY2 RIG_MAKE_MODEL(RIG_KIT, 17) /* Peaberry V2 */ -#define RIG_MODEL_FUNCUBEDONGLEPLUS RIG_MAKE_MODEL(RIG_KIT, 18) /* FunCUBE Dongle Pro+ */ -#define RIG_MODEL_RSHFIQ RIG_MAKE_MODEL(RIG_KIT, 19) /* RS-HFIQ */ +#define RIG_MODEL_SI570PICUSB RIG_MAKE_MODEL(RIG_KIT, 11) /* SoftRock Si570 PIC */ +#define RIG_MODEL_FIFISDR RIG_MAKE_MODEL(RIG_KIT, 12) /* FiFi-SDR USB */ +#define RIG_MODEL_FUNCUBEDONGLE RIG_MAKE_MODEL(RIG_KIT, 13) /* FunCUBE Dongle */ +#define RIG_MODEL_HIQSDR RIG_MAKE_MODEL(RIG_KIT, 14) /* HiQSDR */ +#define RIG_MODEL_FASDR RIG_MAKE_MODEL(RIG_KIT,15) /* Funkamateur Sdr */ +#define RIG_MODEL_SI570PEABERRY1 RIG_MAKE_MODEL(RIG_KIT, 16) /* Peaberry V1 */ +#define RIG_MODEL_SI570PEABERRY2 RIG_MAKE_MODEL(RIG_KIT, 17) /* Peaberry V2 */ +#define RIG_MODEL_FUNCUBEDONGLEPLUS RIG_MAKE_MODEL(RIG_KIT, 18) /* FunCUBE Dongle Pro+ */ +#define RIG_MODEL_RSHFIQ RIG_MAKE_MODEL(RIG_KIT, 19) /* RS-HFIQ */ - /* - * SW/FM/TV tuner cards supported by Video4Linux,*BSD, .. - */ + +/* + * SW/FM/TV tuner cards supported by Video4Linux,*BSD, .. + */ #define RIG_TUNER 26 #define RIG_BACKEND_TUNER "tuner" #define RIG_MODEL_V4L RIG_MAKE_MODEL(RIG_TUNER, 1) #define RIG_MODEL_V4L2 RIG_MAKE_MODEL(RIG_TUNER, 2) - /* - * Rohde&Schwarz - */ + +/* + * Rohde & Schwarz--rs + */ #define RIG_RS 27 #define RIG_BACKEND_RS "rs" #define RIG_MODEL_ESMC RIG_MAKE_MODEL(RIG_RS, 1) #define RIG_MODEL_EB200 RIG_MAKE_MODEL(RIG_RS, 2) - /* - * Phillips/Simoco PRM80 - */ + +/* + * Phillips/Simoco PRM80 + */ #define RIG_PRM80 28 #define RIG_BACKEND_PRM80 "prm80" #define RIG_MODEL_PRM8060 RIG_MAKE_MODEL(RIG_PRM80, 1) #define RIG_MODEL_PRM8070 RIG_MAKE_MODEL(RIG_PRM80, 2) - /* - * ADAT by HB9CBU - * - * ADDED: frgo (DG1SBG), 2012-01-01 - */ + +/* + * ADAT by HB9CBU + * + * ADDED: frgo (DG1SBG), 2012-01-01 + */ #define RIG_ADAT 29 #define RIG_BACKEND_ADAT "adat" #define RIG_MODEL_ADT_200A RIG_MAKE_MODEL(RIG_ADAT, 1) - /* - * ICOM Marine - */ + +/* + * ICOM Marine + */ #define RIG_ICMARINE 30 #define RIG_BACKEND_ICMARINE "icmarine" #define RIG_MODEL_IC_M700PRO RIG_MAKE_MODEL(RIG_ICMARINE, 1) #define RIG_MODEL_IC_M802 RIG_MAKE_MODEL(RIG_ICMARINE, 2) #define RIG_MODEL_IC_M710 RIG_MAKE_MODEL(RIG_ICMARINE, 3) - /* - * Dorji transceiver modules - */ + +/* + * Dorji transceiver modules + */ #define RIG_DORJI 31 #define RIG_BACKEND_DORJI "dorji" #define RIG_MODEL_DORJI_DRA818V RIG_MAKE_MODEL(RIG_DORJI, 1) #define RIG_MODEL_DORJI_DRA818U RIG_MAKE_MODEL(RIG_DORJI, 2) - /* - * Dorji transceiver modules - */ +/* + * Barrett + */ #define RIG_BARRETT 32 #define RIG_BACKEND_BARRETT "barrett" #define RIG_MODEL_BARRETT_2050 RIG_MAKE_MODEL(RIG_BARRETT, 1) - /* - * TODO: - RIG_MODEL_KWZ30, KNEISNER +DOERING - RIG_MODEL_E1800, DASA-Telefunken - etc. - */ + +/* + * TODO: + RIG_MODEL_KWZ30, KNEISNER +DOERING + RIG_MODEL_E1800, DASA-Telefunken + etc. +*/ + /*! \typedef typedef int rig_model_t \brief Convenience type definition for rig model. */ typedef int rig_model_t; + /* * struct rig_backend_list { - * rig_model_t model; - * const char *backend; + * rig_model_t model; + * const char *backend; * } rig_backend_list[] = RIG_LIST; * * TODO: * - { RIG_RADIOSHACK, RIG_BACKEND_RADIOSHACK }, \ + { RIG_RADIOSHACK, RIG_BACKEND_RADIOSHACK }, \ */ #endif /* _RIGLIST_H */ diff --git a/include/hamlib/rotator.h b/include/hamlib/rotator.h index 12847cc5e..88bc7bdea 100644 --- a/include/hamlib/rotator.h +++ b/include/hamlib/rotator.h @@ -30,11 +30,12 @@ * @{ */ -/*! \file rotator.h +/** + * \file rotator.h * \brief Hamlib rotator data structures. * - * This file contains the data structures and definitions for the Hamlib rotator API. - * see the rotator.c file for more details on the rotator API. + * This file contains the data structures and declarations for the Hamlib + * rotator API. see the rotator.c file for more details on the rotator API. */ @@ -46,212 +47,247 @@ __BEGIN_DECLS struct rot; struct rot_state; -/*! \typedef typedef struct rot ROT + +/** + * \typedef typedef struct rot ROT * \brief Rotator structure definition (see rot for details). */ typedef struct rot ROT; -/*! \typedef typedef float elevation_t +/** + * \typedef typedef float elevation_t * \brief Type definition for elevation. * - * The elevation_t type is used as parameter for the - * rot_set_position() and rot_get_position() functions. + * The elevation_t type is used as parameter for the rot_set_position() and + * rot_get_position() functions. * * Unless specified otherwise, the unit of elevation_t is decimal degrees. */ -/*! \typedef typedef float azimuth_t +typedef float elevation_t; + + +/** + * \typedef typedef float azimuth_t * \brief Type definition for azimuth. * - * The azimuth_t type is used as parameter for the - * rot_set_position() and rot_get_position() functions. + * The azimuth_t type is used as parameter for the rot_set_position() and + * rot_get_position() functions. * * Unless specified otherwise, the unit of azimuth_t is decimal degrees. */ -typedef float elevation_t; typedef float azimuth_t; -/** \brief Token in the netrotctl protocol for returning error code */ + +/** + * \brief Token in the netrotctl protocol for returning error code + */ #define NETROTCTL_RET "RPRT " -/*! \def ROT_RESET_ALL - * \brief A macro that returns the flag for the \b reset operation. - * \sa rot_reset(), rot_reset_t - */ -#define ROT_RESET_ALL 1 -/*! \typedef typedef int rot_reset_t +/** + * \def ROT_RESET_ALL + * \brief A macro that returns the flag for the \b reset operation. + * \sa rot_reset(), rot_reset_t() + */ +#define ROT_RESET_ALL 1 + + +/** + * \typedef typedef int rot_reset_t * \brief Type definition for rotator reset. * - * The rot_reset_t type is used as parameter for - * the rot_reset() API function. + * The rot_reset_t type is used as parameter for the rot_reset() API + * function. */ typedef int rot_reset_t; -/** \brief Rotator type flags */ +/** + * \brief Rotator type flags + */ typedef enum { - ROT_FLAG_AZIMUTH = (1<<1), /*!< Azimuth */ - ROT_FLAG_ELEVATION = (1<<2) /*!< Elevation */ + ROT_FLAG_AZIMUTH = (1 << 1), /*!< Azimuth */ + ROT_FLAG_ELEVATION = (1 << 2) /*!< Elevation */ } rot_type_t; #define ROT_TYPE_MASK (ROT_FLAG_AZIMUTH|ROT_FLAG_ELEVATION) -#define ROT_TYPE_OTHER 0 -#define ROT_TYPE_AZIMUTH ROT_FLAG_AZIMUTH -#define ROT_TYPE_ELEVATION ROT_FLAG_ELEVATION -#define ROT_TYPE_AZEL (ROT_FLAG_AZIMUTH|ROT_FLAG_ELEVATION) +#define ROT_TYPE_OTHER 0 +#define ROT_TYPE_AZIMUTH ROT_FLAG_AZIMUTH +#define ROT_TYPE_ELEVATION ROT_FLAG_ELEVATION +#define ROT_TYPE_AZEL (ROT_FLAG_AZIMUTH|ROT_FLAG_ELEVATION) -/*! \def ROT_MOVE_UP +/** + * \def ROT_MOVE_UP * \brief A macro that returns the flag for the \b UP direction. * * This macro defines the value of the \b UP direction which can be * used with the rot_move() function. * - * \sa rot_move(), ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, ROT_MOVE_RIGHT, ROT_MOVE_CW + * \sa rot_move(), ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, + * ROT_MOVE_RIGHT, ROT_MOVE_CW */ -/*! \def ROT_MOVE_DOWN +#define ROT_MOVE_UP (1<<1) + +/** + * \def ROT_MOVE_DOWN * \brief A macro that returns the flag for the \b DOWN direction. * * This macro defines the value of the \b DOWN direction which can be * used with the rot_move() function. * - * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_LEFT, ROT_MOVE_CCW, ROT_MOVE_RIGHT, ROT_MOVE_CW + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_LEFT, ROT_MOVE_CCW, ROT_MOVE_RIGHT, + * ROT_MOVE_CW */ -/*! \def ROT_MOVE_LEFT +#define ROT_MOVE_DOWN (1<<2) + +/** + * \def ROT_MOVE_LEFT * \brief A macro that returns the flag for the \b LEFT direction. * * This macro defines the value of the \b LEFT direction which can be * used with the rot_move function. * - * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_CCW, ROT_MOVE_RIGHT, ROT_MOVE_CW + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_CCW, ROT_MOVE_RIGHT, + * ROT_MOVE_CW */ -/*! \def ROT_MOVE_CCW +#define ROT_MOVE_LEFT (1<<3) + +/** + * \def ROT_MOVE_CCW * \brief A macro that returns the flag for the \b counterclockwise direction. * * This macro defines the value of the \b counterclockwise direction which * can be used with the rot_move() function. This value is equivalent to * ROT_MOVE_LEFT . * - * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_RIGHT, ROT_MOVE_CW + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_RIGHT, + * ROT_MOVE_CW */ -/*! \def ROT_MOVE_RIGHT +#define ROT_MOVE_CCW ROT_MOVE_LEFT + +/** + * \def ROT_MOVE_RIGHT * \brief A macro that returns the flag for the \b RIGHT direction. * * This macro defines the value of the \b RIGHT direction which can be used * with the rot_move() function. * - * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, ROT_MOVE_CW + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, + * ROT_MOVE_CW */ -/*! \def ROT_MOVE_CW +#define ROT_MOVE_RIGHT (1<<4) + +/** + * \def ROT_MOVE_CW * \brief A macro that returns the flag for the \b clockwise direction. * * This macro defines the value of the \b clockwise direction wich can be * used with the rot_move() function. This value is equivalent to * ROT_MOVE_RIGHT . * - * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, ROT_MOVE_RIGHT + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, + * ROT_MOVE_RIGHT */ -#define ROT_MOVE_UP (1<<1) -#define ROT_MOVE_DOWN (1<<2) -#define ROT_MOVE_LEFT (1<<3) -#define ROT_MOVE_CCW ROT_MOVE_LEFT -#define ROT_MOVE_RIGHT (1<<4) -#define ROT_MOVE_CW ROT_MOVE_RIGHT +#define ROT_MOVE_CW ROT_MOVE_RIGHT -/* Basic rot type, can store some useful - * info about different rotators. Each lib must - * be able to populate this structure, so we can make - * useful enquiries about capablilities. + +/* Basic rot type, can store some useful info about different rotators. Each + * lib must be able to populate this structure, so we can make useful + * enquiries about capablilities. */ -/*! +/** * Rotator Caps * \struct rot_caps * \brief Rotator data structure. * * The main idea of this struct is that it will be defined by the backend - * rotator driver, and will remain readonly for the application. - * Fields that need to be modifiable by the application are - * copied into the struct rot_state, which is a kind of private - * of the ROT instance. + * rotator driver, and will remain readonly for the application. Fields that + * need to be modifiable by the application are copied into the struct + * rot_state, which is a kind of private of the ROT instance. + * * This way, you can have several rigs running within the same application, * sharing the struct rot_caps of the backend, while keeping their own * customized data. - * NB: don't move fields around, as backend depends on it when initializing - * their caps. + * + * n.b.: Don't move fields around, as the backends depend on it when + * initializing their caps. */ struct rot_caps { - rot_model_t rot_model; /*!< Rotator model. */ - const char *model_name; /*!< Model name. */ - const char *mfg_name; /*!< Manufacturer. */ - const char *version; /*!< Driver version. */ - const char *copyright; /*!< Copyright info. */ - enum rig_status_e status; /*!< Driver status. */ + rot_model_t rot_model; /*!< Rotator model. */ + const char *model_name; /*!< Model name. */ + const char *mfg_name; /*!< Manufacturer. */ + const char *version; /*!< Driver version. */ + const char *copyright; /*!< Copyright info. */ + enum rig_status_e status; /*!< Driver status. */ - int rot_type; /*!< Rotator type. */ - enum rig_port_e port_type; /*!< Type of communication port. */ + int rot_type; /*!< Rotator type. */ + enum rig_port_e port_type; /*!< Type of communication port. */ - int serial_rate_min; /*!< Minimal serial speed. */ - int serial_rate_max; /*!< Maximal serial speed. */ - int serial_data_bits; /*!< Number of data bits. */ - int serial_stop_bits; /*!< Number of stop bits. */ - enum serial_parity_e serial_parity; /*!< Parity. */ - enum serial_handshake_e serial_handshake; /*!< Handshake. */ + int serial_rate_min; /*!< Minimal serial speed. */ + int serial_rate_max; /*!< Maximal serial speed. */ + int serial_data_bits; /*!< Number of data bits. */ + int serial_stop_bits; /*!< Number of stop bits. */ + enum serial_parity_e serial_parity; /*!< Parity. */ + enum serial_handshake_e serial_handshake; /*!< Handshake. */ - int write_delay; /*!< Write delay. */ - int post_write_delay; /*!< Post-write delay. */ - int timeout; /*!< Timeout. */ - int retry; /*!< Number of retry if command fails. */ + int write_delay; /*!< Write delay. */ + int post_write_delay; /*!< Post-write delay. */ + int timeout; /*!< Timeout. */ + int retry; /*!< Number of retry if command fails. */ - /* - * Movement range, az is relative to North - * negative values allowed for overlap - */ - azimuth_t min_az; /*!< Lower limit for azimuth (relative to North). */ - azimuth_t max_az; /*!< Upper limit for azimuth (relative to North). */ - elevation_t min_el; /*!< Lower limit for elevation. */ - elevation_t max_el; /*!< Upper limit for elevation. */ + /* + * Movement range, az is relative to North + * negative values allowed for overlap + */ + azimuth_t min_az; /*!< Lower limit for azimuth (relative to North). */ + azimuth_t max_az; /*!< Upper limit for azimuth (relative to North). */ + elevation_t + min_el; /*!< Lower limit for elevation. */ + elevation_t + max_el; /*!< Upper limit for elevation. */ - const struct confparams *cfgparams; /*!< Configuration parametres. */ - const rig_ptr_t priv; /*!< Private data. */ + const struct confparams *cfgparams; /*!< Configuration parametres. */ + const rig_ptr_t priv; /*!< Private data. */ - /* - * Rot Admin API - * - */ + /* + * Rot Admin API + * + */ - int (*rot_init)(ROT *rot); - int (*rot_cleanup)(ROT *rot); - int (*rot_open)(ROT *rot); - int (*rot_close)(ROT *rot); + int (*rot_init)(ROT *rot); + int (*rot_cleanup)(ROT *rot); + int (*rot_open)(ROT *rot); + int (*rot_close)(ROT *rot); - int (*set_conf)(ROT *rot, token_t token, const char *val); - int (*get_conf)(ROT *rot, token_t token, char *val); + int (*set_conf)(ROT *rot, token_t token, const char *val); + int (*get_conf)(ROT *rot, token_t token, char *val); - /* - * General API commands, from most primitive to least.. :() - * List Set/Get functions pairs - */ + /* + * General API commands, from most primitive to least.. :() + * List Set/Get functions pairs + */ - int (*set_position)(ROT *rot, azimuth_t azimuth, elevation_t elevation); - int (*get_position)(ROT *rot, azimuth_t *azimuth, elevation_t *elevation); + int (*set_position)(ROT *rot, azimuth_t azimuth, elevation_t elevation); + int (*get_position)(ROT *rot, azimuth_t *azimuth, elevation_t *elevation); - int (*stop)(ROT *rot); - int (*park)(ROT *rot); - int (*reset)(ROT *rot, rot_reset_t reset); - int (*move)(ROT *rot, int direction, int speed); + int (*stop)(ROT *rot); + int (*park)(ROT *rot); + int (*reset)(ROT *rot, rot_reset_t reset); + int (*move)(ROT *rot, int direction, int speed); - /* get firmware info, etc. */ - const char* (*get_info)(ROT *rot); + /* get firmware info, etc. */ + const char * (*get_info)(ROT *rot); - /* more to come... */ + /* more to come... */ }; -/*! +/** * Rotator state * \struct rot_state * \brief Live data and customized fields. @@ -263,26 +299,27 @@ struct rot_caps { * not be initialized like caps are. */ struct rot_state { - /* - * overridable fields - */ - azimuth_t min_az; /*!< Lower limit for azimuth (overridable). */ - azimuth_t max_az; /*!< Upper limit for azimuth (overridable). */ - elevation_t min_el; /*!< Lower limit for elevation (overridable). */ - elevation_t max_el; /*!< Upper limit for elevation (overridable). */ + /* + * overridable fields + */ + azimuth_t min_az; /*!< Lower limit for azimuth (overridable). */ + azimuth_t max_az; /*!< Upper limit for azimuth (overridable). */ + elevation_t min_el; /*!< Lower limit for elevation (overridable). */ + elevation_t max_el; /*!< Upper limit for elevation (overridable). */ - /* - * non overridable fields, internal use - */ - hamlib_port_t rotport; /*!< Rotator port (internal use). */ + /* + * non overridable fields, internal use + */ + hamlib_port_t rotport; /*!< Rotator port (internal use). */ - int comm_state; /*!< Comm port state, opened/closed. */ - rig_ptr_t priv; /*!< Pointer to private rotator state data. */ - rig_ptr_t obj; /*!< Internal use by hamlib++ for event handling. */ + int comm_state; /*!< Comm port state, opened/closed. */ + rig_ptr_t priv; /*!< Pointer to private rotator state data. */ + rig_ptr_t obj; /*!< Internal use by hamlib++ for event handling. */ - /* etc... */ + /* etc... */ }; + /** * Rotator structure * \struct rot @@ -293,76 +330,166 @@ struct rot_state { * rotator. A pointer to this structure is returned by the rot_init() API * function and is passed as a parameter to every rotator specific API call. * - * \sa rot_init(), rot_caps, rot_state + * \sa rot_init(), rot_caps(), rot_state() */ struct rot { - struct rot_caps *caps; /*!< Rotator caps. */ - struct rot_state state; /*!< Rotator state. */ + struct rot_caps *caps; /*!< Rotator caps. */ + struct rot_state state; /*!< Rotator state. */ }; + /* --------------- API function prototypes -----------------*/ -extern HAMLIB_EXPORT(ROT *) rot_init HAMLIB_PARAMS((rot_model_t rot_model)); -extern HAMLIB_EXPORT(int) rot_open HAMLIB_PARAMS((ROT *rot)); -extern HAMLIB_EXPORT(int) rot_close HAMLIB_PARAMS((ROT *rot)); -extern HAMLIB_EXPORT(int) rot_cleanup HAMLIB_PARAMS((ROT *rot)); +extern HAMLIB_EXPORT(ROT *) +rot_init HAMLIB_PARAMS((rot_model_t rot_model)); -extern HAMLIB_EXPORT(int) rot_set_conf HAMLIB_PARAMS((ROT *rot, token_t token, const char *val)); -extern HAMLIB_EXPORT(int) rot_get_conf HAMLIB_PARAMS((ROT *rot, token_t token, char *val)); - /* - * General API commands, from most primitive to least.. ) - * List Set/Get functions pairs - */ -extern HAMLIB_EXPORT(int) rot_set_position HAMLIB_PARAMS((ROT *rot, azimuth_t azimuth, elevation_t elevation)); -extern HAMLIB_EXPORT(int) rot_get_position HAMLIB_PARAMS((ROT *rot, azimuth_t *azimuth, elevation_t *elevation)); -extern HAMLIB_EXPORT(int) rot_stop HAMLIB_PARAMS((ROT *rot)); -extern HAMLIB_EXPORT(int) rot_park HAMLIB_PARAMS((ROT *rot)); -extern HAMLIB_EXPORT(int) rot_reset HAMLIB_PARAMS((ROT *rot, rot_reset_t reset)); -extern HAMLIB_EXPORT(int) rot_move HAMLIB_PARAMS((ROT *rot, int direction, int speed)); -extern HAMLIB_EXPORT(const char*) rot_get_info HAMLIB_PARAMS((ROT *rot)); +extern HAMLIB_EXPORT(int) +rot_open HAMLIB_PARAMS((ROT *rot)); -extern HAMLIB_EXPORT(int) rot_register HAMLIB_PARAMS((const struct rot_caps *caps)); -extern HAMLIB_EXPORT(int) rot_unregister HAMLIB_PARAMS((rot_model_t rot_model)); -extern HAMLIB_EXPORT(int) rot_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rot_caps*, rig_ptr_t), rig_ptr_t data)); -extern HAMLIB_EXPORT(int) rot_load_backend HAMLIB_PARAMS((const char *be_name)); -extern HAMLIB_EXPORT(int) rot_check_backend HAMLIB_PARAMS((rot_model_t rot_model)); -extern HAMLIB_EXPORT(int) rot_load_all_backends HAMLIB_PARAMS((void)); -extern HAMLIB_EXPORT(rot_model_t) rot_probe_all HAMLIB_PARAMS((hamlib_port_t *p)); +extern HAMLIB_EXPORT(int) +rot_close HAMLIB_PARAMS((ROT *rot)); -extern HAMLIB_EXPORT(int) rot_token_foreach HAMLIB_PARAMS((ROT *rot, int (*cfunc)(const struct confparams *, rig_ptr_t), rig_ptr_t data)); -extern HAMLIB_EXPORT(const struct confparams*) rot_confparam_lookup HAMLIB_PARAMS((ROT *rot, const char *name)); -extern HAMLIB_EXPORT(token_t) rot_token_lookup HAMLIB_PARAMS((ROT *rot, const char *name)); +extern HAMLIB_EXPORT(int) +rot_cleanup HAMLIB_PARAMS((ROT *rot)); -extern HAMLIB_EXPORT(const struct rot_caps *) rot_get_caps HAMLIB_PARAMS((rot_model_t rot_model)); +extern HAMLIB_EXPORT(int) +rot_set_conf HAMLIB_PARAMS((ROT *rot, + token_t token, + const char *val)); +extern HAMLIB_EXPORT(int) +rot_get_conf HAMLIB_PARAMS((ROT *rot, + token_t token, + char *val)); -extern HAMLIB_EXPORT(int) qrb HAMLIB_PARAMS((double lon1, double lat1, - double lon2, double lat2, - double *distance, double *azimuth)); -extern HAMLIB_EXPORT(double) distance_long_path HAMLIB_PARAMS((double distance)); -extern HAMLIB_EXPORT(double) azimuth_long_path HAMLIB_PARAMS((double azimuth)); +/* + * General API commands, from most primitive to least.. ) + * List Set/Get functions pairs + */ +extern HAMLIB_EXPORT(int) +rot_set_position HAMLIB_PARAMS((ROT *rot, + azimuth_t azimuth, + elevation_t elevation)); +extern HAMLIB_EXPORT(int) +rot_get_position HAMLIB_PARAMS((ROT *rot, + azimuth_t *azimuth, + elevation_t *elevation)); -extern HAMLIB_EXPORT(int) longlat2locator HAMLIB_PARAMS((double longitude, - double latitude, char *locator_res, int pair_count)); -extern HAMLIB_EXPORT(int) locator2longlat HAMLIB_PARAMS((double *longitude, - double *latitude, const char *locator)); +extern HAMLIB_EXPORT(int) +rot_stop HAMLIB_PARAMS((ROT *rot)); -extern HAMLIB_EXPORT(double) dms2dec HAMLIB_PARAMS((int degrees, int minutes, - double seconds, int sw)); -extern HAMLIB_EXPORT(int) dec2dms HAMLIB_PARAMS((double dec, int *degrees, - int *minutes, double *seconds, int *sw)); +extern HAMLIB_EXPORT(int) +rot_park HAMLIB_PARAMS((ROT *rot)); -extern HAMLIB_EXPORT(int) dec2dmmm HAMLIB_PARAMS((double dec, int *degrees, - double *minutes, int *sw)); -extern HAMLIB_EXPORT(double) dmmm2dec HAMLIB_PARAMS((int degrees, - double minutes, int sw)); +extern HAMLIB_EXPORT(int) +rot_reset HAMLIB_PARAMS((ROT *rot, + rot_reset_t reset)); -/*! \def rot_debug +extern HAMLIB_EXPORT(int) +rot_move HAMLIB_PARAMS((ROT *rot, + int direction, + int speed)); + +extern HAMLIB_EXPORT(const char *) +rot_get_info HAMLIB_PARAMS((ROT *rot)); + +extern HAMLIB_EXPORT(int) +rot_register HAMLIB_PARAMS((const struct rot_caps *caps)); + +extern HAMLIB_EXPORT(int) +rot_unregister HAMLIB_PARAMS((rot_model_t rot_model)); + +extern HAMLIB_EXPORT(int) +rot_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rot_caps *, + rig_ptr_t), + rig_ptr_t data)); + +extern HAMLIB_EXPORT(int) +rot_load_backend HAMLIB_PARAMS((const char *be_name)); + +extern HAMLIB_EXPORT(int) +rot_check_backend HAMLIB_PARAMS((rot_model_t rot_model)); + +extern HAMLIB_EXPORT(int) +rot_load_all_backends HAMLIB_PARAMS((void)); + +extern HAMLIB_EXPORT(rot_model_t) +rot_probe_all HAMLIB_PARAMS((hamlib_port_t *p)); + +extern HAMLIB_EXPORT(int) +rot_token_foreach HAMLIB_PARAMS((ROT *rot, + int (*cfunc)(const struct confparams *, + rig_ptr_t), + rig_ptr_t data)); + +extern HAMLIB_EXPORT(const struct confparams *) +rot_confparam_lookup HAMLIB_PARAMS((ROT *rot, + const char *name)); + +extern HAMLIB_EXPORT(token_t) +rot_token_lookup HAMLIB_PARAMS((ROT *rot, + const char *name)); + +extern HAMLIB_EXPORT(const struct rot_caps *) +rot_get_caps HAMLIB_PARAMS((rot_model_t rot_model)); + +extern HAMLIB_EXPORT(int) +qrb HAMLIB_PARAMS((double lon1, + double lat1, + double lon2, + double lat2, + double *distance, + double *azimuth)); + +extern HAMLIB_EXPORT(double) +distance_long_path HAMLIB_PARAMS((double distance)); + +extern HAMLIB_EXPORT(double) +azimuth_long_path HAMLIB_PARAMS((double azimuth)); + +extern HAMLIB_EXPORT(int) +longlat2locator HAMLIB_PARAMS((double longitude, + double latitude, + char *locator_res, + int pair_count)); + +extern HAMLIB_EXPORT(int) +locator2longlat HAMLIB_PARAMS((double *longitude, + double *latitude, + const char *locator)); + +extern HAMLIB_EXPORT(double) +dms2dec HAMLIB_PARAMS((int degrees, + int minutes, + double seconds, + int sw)); + +extern HAMLIB_EXPORT(int) +dec2dms HAMLIB_PARAMS((double dec, + int *degrees, + int *minutes, + double *seconds, + int *sw)); + +extern HAMLIB_EXPORT(int) +dec2dmmm HAMLIB_PARAMS((double dec, + int *degrees, + double *minutes, + int *sw)); + +extern HAMLIB_EXPORT(double) +dmmm2dec HAMLIB_PARAMS((int degrees, + double minutes, + int sw)); + + +/** + * \def rot_debug * \brief Convenience definition for debug level. * * This is just as convenience definition of the rotator debug level, * and is the same as for the rig debug level. * - * \sa rig_debug + * \sa rig_debug() */ #define rot_debug rig_debug diff --git a/include/hamlib/rotclass.h b/include/hamlib/rotclass.h index 4fe511b18..a9c830950 100644 --- a/include/hamlib/rotclass.h +++ b/include/hamlib/rotclass.h @@ -26,39 +26,40 @@ -class BACKEND_IMPEXP Rotator { +class BACKEND_IMPEXP Rotator +{ private: - ROT* theRot; // Global ref. to the rot + ROT *theRot; // Global ref. to the rot protected: public: - Rotator(rot_model_t rot_model); + Rotator(rot_model_t rot_model); - virtual ~Rotator(); + virtual ~Rotator(); - const struct rot_caps *caps; + const struct rot_caps *caps; - // This method open the communication port to the rot - void open(void); + // This method opens the communication port to the rot + void open(void); - // This method close the communication port to the rot - void close(void); + // This method closes the communication port to the rot + void close(void); - void setConf(token_t token, const char *val); - void setConf(const char *name, const char *val); - void getConf(token_t token, char *val); - void getConf(const char *name, char *val); - token_t tokenLookup(const char *name); + void setConf(token_t token, const char *val); + void setConf(const char *name, const char *val); + void getConf(token_t token, char *val); + void getConf(const char *name, char *val); + token_t tokenLookup(const char *name); - void setPosition(azimuth_t az, elevation_t el); - void getPosition(azimuth_t& az, elevation_t& el); - void stop(); - void park(); - void reset (rot_reset_t reset); + void setPosition(azimuth_t az, elevation_t el); + void getPosition(azimuth_t& az, elevation_t& el); + void stop(); + void park(); + void reset(rot_reset_t reset); - void move(int direction, int speed); + void move(int direction, int speed); }; -#endif // _ROTCLASS_H +#endif // _ROTCLASS_H diff --git a/include/hamlib/rotlist.h b/include/hamlib/rotlist.h index 709eac2b0..a8b943626 100644 --- a/include/hamlib/rotlist.h +++ b/include/hamlib/rotlist.h @@ -26,29 +26,35 @@ #define ROT_MAKE_MODEL(a,b) ((a)*100+(b)) #define ROT_BACKEND_NUM(a) ((a)/100) + /** * \addtogroup rotator * @{ */ -/*! \file rotlist.h +/** + * \file rotlist.h * \brief Hamlib rotator model definitions. * * This file contains rotator model definitions for the Hamlib rotator API. - * Each distinct rotator type has a unique model number (ID) and is used - * by hamlib to identify and distinguish between the different hardware drivers. - * The exact model numbers can be acquired using the macros in this - * file. To obtain a list of supported rotator branches, one can use the statically - * defined ROT_BACKEND_LIST macro. To obtain a full list of supported rotators (including - * each model in every branch), the foreach_opened_rot() API function can be used. + * Each distinct rotator type has a unique model number (ID) and is used by + * hamlib to identify and distinguish between the different hardware drivers. + * The exact model numbers can be acquired using the macros in this file. To + * obtain a list of supported rotator branches, one can use the statically + * defined ROT_BACKEND_LIST macro. To obtain a full list of supported + * rotators (including each model in every branch), the foreach_opened_rot() + * API function can be used. * - * The model number, or ID, is used to tell hamlib, which rotator the client whishes to - * use. It is done with the rot_init() API call. + * The model number, or ID, is used to tell Hamlib which rotator the client + * whishes to use. It is done with the rot_init() API call. */ + #define ROT_MODEL_NONE 0 -/*! \def ROT_MODEL_DUMMY + +/** + * \def ROT_MODEL_DUMMY * \brief A macro that returns the model number for the dummy backend. * * The dummy backend, as the name suggests, is a backend which performs @@ -56,7 +62,8 @@ * be thought of as a hardware simulator and is very usefull for testing * client applications. */ -/*! \def ROT_MODEL_NETROTCTL +/** + * \def ROT_MODEL_NETROTCTL * \brief A macro that returns the model number for the Network backend. * * This backend allows use of the rotctld daemon through the normal @@ -67,16 +74,20 @@ #define ROT_MODEL_DUMMY ROT_MAKE_MODEL(ROT_DUMMY, 1) #define ROT_MODEL_NETROTCTL ROT_MAKE_MODEL(ROT_DUMMY, 2) - /* - * Easycomm - */ -/*! \def ROT_MODEL_EASYCOMM1 + +/* + * Easycomm + */ + +/** + * \def ROT_MODEL_EASYCOMM1 * \brief A macro that returns the model number of the EasyComm 1 backend. * * The EasyComm 1 backend can be used with rotators that support the * EASYCOMM I Standard. */ -/*! \def ROT_MODEL_EASYCOMM2 +/** + * \def ROT_MODEL_EASYCOMM2 * \brief A macro that returns the model number of the EasyComm 2 backend. * * The EasyComm 2 backend can be used with rotators that support the @@ -89,7 +100,9 @@ #define ROT_MODEL_TRAKBOX ROT_MAKE_MODEL(ROT_EASYCOMM, 3) #define ROT_MODEL_EASYCOMM3 ROT_MAKE_MODEL(ROT_EASYCOMM, 4) -/*! \def ROT_MODEL_FODTRACK + +/** + * \def ROT_MODEL_FODTRACK * \brief A macro that returns the model number of the Fodtrack backend. * * The Fodtrack backend can be used with rotators that support the @@ -99,35 +112,41 @@ #define ROT_BACKEND_FODTRACK "fodtrack" #define ROT_MODEL_FODTRACK ROT_MAKE_MODEL(ROT_FODTRACK, 1) -/*! \def ROT_MODEL_ROTOREZ + +/** + * \def ROT_MODEL_ROTOREZ * \brief A macro that returns the model number of the Rotor-EZ backend. * * The Rotor-EZ backend can be used with Hy-Gain rotators that support * the extended DCU command set by Idiom Press Rotor-EZ board. */ -/*! \def ROT_MODEL_ROTORCARD +/** + * \def ROT_MODEL_ROTORCARD * \brief A macro that returns the model number of the Rotor Card backend. * * The Rotor-EZ backend can be used with Yaesu rotators that support the * extended DCU command set by Idiom Press Rotor Card board. */ -/*! \def ROT_MODEL_DCU +/** + * \def ROT_MODEL_DCU * \brief A macro that returns the model number of the DCU backend. * - * The Rotor-EZ backend can be used with rotators that support the - * DCU command set by Hy-Gain (currently the DCU-1). + * The Rotor-EZ backend can be used with rotators that support the DCU + * command set by Hy-Gain (currently the DCU-1). */ -/*! \def ROT_MODEL_ERC +/** + * \def ROT_MODEL_ERC * \brief A macro that returns the model number of the ERC backend. * - * The Rotor-EZ backend can be used with rotators that support the - * DCU command set by DF9GR (currently the ERC). + * The Rotor-EZ backend can be used with rotators that support the DCU + * command set by DF9GR (currently the ERC). */ -/*! \def ROT_MODEL_RT21 +/** + * \def ROT_MODEL_RT21 * \brief A macro that returns the model number of the RT21 backend. * - * The Rotor-EZ backend can be used with rotators that support the - * DCU command set by Green Heron (currently the RT-21). + * The Rotor-EZ backend can be used with rotators that support the DCU + * command set by Green Heron (currently the RT-21). */ #define ROT_ROTOREZ 4 #define ROT_BACKEND_ROTOREZ "rotorez" @@ -137,35 +156,42 @@ #define ROT_MODEL_ERC ROT_MAKE_MODEL(ROT_ROTOREZ, 4) #define ROT_MODEL_RT21 ROT_MAKE_MODEL(ROT_ROTOREZ, 5) -/*! \def ROT_MODEL_SARTEK1 + +/** + * \def ROT_MODEL_SARTEK1 * \brief A macro that returns the model number of the SARtek-1 backend. * - * The sartek backend can be used with rotators that support the - * SARtek protocol. + * The sartek backend can be used with rotators that support the SARtek + * protocol. */ #define ROT_SARTEK 5 #define ROT_BACKEND_SARTEK "sartek" #define ROT_MODEL_SARTEK1 ROT_MAKE_MODEL(ROT_SARTEK, 1) -/*! \def ROT_MODEL_GS232A + +/** + * \def ROT_MODEL_GS232A * \brief A macro that returns the model number of the GS-232A backend. * - * The GS-232A backend can be used with rotators that support the - * GS-232A protocol. + * The GS-232A backend can be used with rotators that support the GS-232A + * protocol. */ -/*! \def ROT_MODEL_GS232 +/** + * \def ROT_MODEL_GS232 * \brief A macro that returns the model number of the GS-232 backend. * - * The GS-232 backend can be used with rotators that support the - * GS-232 protocol. + * The GS-232 backend can be used with rotators that support the GS-232 + * protocol. */ -/*! \def ROT_MODEL_GS232B +/** + * \def ROT_MODEL_GS232B * \brief A macro that returns the model number of the GS-232B backend. * - * The GS-232B backend can be used with rotators that support the - * GS-232B protocol. + * The GS-232B backend can be used with rotators that support the GS-232B + * protocol. */ -/*! \def ROT_MODEL_F1TETRACKER +/** + * \def ROT_MODEL_F1TETRACKER * \brief A macro that returns the model number of the F1TETRACKER backend. * * The F1TETRACKER backend can be used with rotators that support the @@ -178,7 +204,9 @@ #define ROT_MODEL_GS232B ROT_MAKE_MODEL(ROT_GS232A, 3) #define ROT_MODEL_F1TETRACKER ROT_MAKE_MODEL(ROT_GS232A, 4) -/*! \def ROT_MODEL_PCROTOR + +/** + * \def ROT_MODEL_PCROTOR * \brief A macro that returns the model number of the PcRotor/WA6UFQ backend. * * The kit backend can be used with home brewed rotators. @@ -187,30 +215,33 @@ #define ROT_BACKEND_KIT "kit" #define ROT_MODEL_PCROTOR ROT_MAKE_MODEL(ROT_KIT, 1) -/*! \def ROT_MODEL_HD1780 + +/** + * \def ROT_MODEL_HD1780 * \brief A macro that returns the model number of the HD 1780 backend. */ #define ROT_HEATHKIT 8 #define ROT_BACKEND_HEATHKIT "heathkit" #define ROT_MODEL_HD1780 ROT_MAKE_MODEL(ROT_HEATHKIT, 1) -/*! \def ROT_MODEL_SPID_ROT2PROG + +/** + * \def ROT_MODEL_SPID_ROT2PROG * \brief A macro that returns the model number of the ROT2PROG backend. * - * The SPID backend can be used with rotators that support the SPID - * protocol. + * The SPID backend can be used with rotators that support the SPID protocol. */ -/*! \def ROT_MODEL_SPID_ROT1PROG +/** + * \def ROT_MODEL_SPID_ROT1PROG * \brief A macro that returns the model number of the ROT1PROG backend. * - * The SPID backend can be used with rotators that support the SPID - * protocol. + * The SPID backend can be used with rotators that support the SPID protocol. */ -/*! \def ROT_MODEL_SPID_MD01_ROT2PROG \brief A macro that returns the - * model number of the MD-01/02 (ROT2PROG protocol) backend. +/** + * \def ROT_MODEL_SPID_MD01_ROT2PROG + * \brief A macro that returns the model number of the MD-01/02 (ROT2PROG protocol) backend. * - * The SPID backend can be used with rotators that support the SPID - * protocol. + * The SPID backend can be used with rotators that support the SPID protocol. */ #define ROT_SPID 9 #define ROT_BACKEND_SPID "spid" @@ -218,45 +249,51 @@ #define ROT_MODEL_SPID_ROT1PROG ROT_MAKE_MODEL(ROT_SPID, 2) #define ROT_MODEL_SPID_MD01_ROT2PROG ROT_MAKE_MODEL(ROT_SPID, 3) -/*! \def ROT_MODEL_RC2800 + +/** + * \def ROT_MODEL_RC2800 * \brief A macro that returns the model number of the RC2800 backend. * - * The M2 backend can be used with rotators that support the RC2800 - * protocol and alike. + * The M2 backend can be used with rotators that support the RC2800 protocol + * and alike. */ #define ROT_M2 10 #define ROT_BACKEND_M2 "m2" #define ROT_MODEL_RC2800 ROT_MAKE_MODEL(ROT_M2, 1) -/*! \def ROT_MODEL_RCI_AZEL + +/** + * \def ROT_MODEL_RCI_AZEL * \brief A macro that returns the model number of the RCI_AZEL backend. * - * The ARS backend can be used with rotators that support the ARS - * protocol. + * The ARS backend can be used with rotators that support the ARS protocol. */ -/*! \def ROT_MODEL_RCI_AZ +/** + * \def ROT_MODEL_RCI_AZ * \brief A macro that returns the model number of the RCI_AZ backend. * - * The ARS backend can be used with rotators that support the ARS - * protocol. + * The ARS backend can be used with rotators that support the ARS protocol. */ #define ROT_ARS 11 #define ROT_BACKEND_ARS "ars" #define ROT_MODEL_RCI_AZEL ROT_MAKE_MODEL(ROT_ARS, 1) #define ROT_MODEL_RCI_AZ ROT_MAKE_MODEL(ROT_ARS, 2) -/*! \def ROT_MODEL_IF100 + +/** + * \def ROT_MODEL_IF100 * \brief A macro that returns the model number of the IF-100 backend. * - * The AMSAT backend can be used with rotators that support, - * among other, the IF-100 interface. + * The AMSAT backend can be used with rotators that support, among other, the + * IF-100 interface. */ #define ROT_AMSAT 12 #define ROT_BACKEND_AMSAT "amsat" #define ROT_MODEL_IF100 ROT_MAKE_MODEL(ROT_AMSAT, 1) -/*! \def ROT_MODEL_TS7400 +/** + * \def ROT_MODEL_TS7400 * \brief A macro that returns the model number of the TS7400 backend. * * The TS-7400 backend supports and embedded ARM board using the TS-7400 @@ -266,7 +303,9 @@ #define ROT_BACKEND_TS7400 "ts7400" #define ROT_MODEL_TS7400 ROT_MAKE_MODEL(ROT_TS7400, 1) -/*! \def ROT_MODEL_NEXSTAR + +/** + * \def ROT_MODEL_NEXSTAR * \brief A macro that returns the model number of the NEXSTAR backend. * * The CELESTRON backend can be used with rotators that support the Celestron @@ -276,7 +315,9 @@ #define ROT_BACKEND_CELESTRON "celestron" #define ROT_MODEL_NEXSTAR ROT_MAKE_MODEL(ROT_CELESTRON, 1) -/*! \def ROT_MODEL_ETHER6 + +/** + * \def ROT_MODEL_ETHER6 * \brief A macro that returns the model number of the Ether6 backend. * * The Ether6 backend can be used with rotators that support the Ether6 @@ -287,18 +328,20 @@ #define ROT_MODEL_ETHER6 ROT_MAKE_MODEL(ROT_ETHER6, 1) -/*! \def ROT_MODEL_CNCTRK +/** + * \def ROT_MODEL_CNCTRK * \brief A macro that returns the model number of the CNCTRK backend. * - * The CNCTRK backend can be used with rotators that support, - * the LinuxCNC running Axis GUI interface. + * The CNCTRK backend can be used with rotators that support the LinuxCNC + * running Axis GUI interface. */ #define ROT_CNCTRK 16 #define ROT_BACKEND_CNCTRK "cnctrk" #define ROT_MODEL_CNCTRK ROT_MAKE_MODEL(ROT_CNCTRK, 1) -/*! \def ROT_MODEL_PROSISTEL +/** + * \def ROT_MODEL_PROSISTEL * \brief A macro that returns the model number of the PROSISTEL backend. * */ @@ -307,11 +350,13 @@ #define ROT_MODEL_PROSISTEL ROT_MAKE_MODEL(ROT_PROSISTEL, 1) -/*! \typedef typedef int rot_model_t - \brief Convenience type definition for rotator model. +/** + * \typedef typedef int rot_model_t + * \brief Convenience type definition for rotator model. */ typedef int rot_model_t; + #endif /* _ROTLIST_H */ /** @} */ diff --git a/include/hl_sleep.h b/include/hl_sleep.h index 6aeea3f69..3782a8f6f 100644 --- a/include/hl_sleep.h +++ b/include/hl_sleep.h @@ -30,7 +30,11 @@ extern "C" { #endif /* TODO: what about SleepEx? */ -static inline unsigned int sleep(unsigned int nb_sec) { Sleep(nb_sec*1000); return 0; } +static inline unsigned int sleep(unsigned int nb_sec) +{ + Sleep(nb_sec * 1000); + return 0; +} #ifdef __cplusplus } diff --git a/include/num_stdio.h b/include/num_stdio.h index 665de0d84..4ba063a95 100644 --- a/include/num_stdio.h +++ b/include/num_stdio.h @@ -34,30 +34,30 @@ * separator (float, ...) is not the dot. */ #define num_sscanf(a...) \ - ({ int __ret; char *__savedlocale; \ - __savedlocale = setlocale(LC_NUMERIC, NULL); \ - setlocale(LC_NUMERIC, "C"); \ - __ret = sscanf(a); \ - setlocale(LC_NUMERIC, __savedlocale); \ - __ret; \ - }) + ({ int __ret; char *__savedlocale; \ + __savedlocale = setlocale(LC_NUMERIC, NULL); \ + setlocale(LC_NUMERIC, "C"); \ + __ret = sscanf(a); \ + setlocale(LC_NUMERIC, __savedlocale); \ + __ret; \ + }) #define num_sprintf(s, a...) \ - ({ int __ret; char *__savedlocale; \ - __savedlocale = setlocale(LC_NUMERIC, NULL); \ - setlocale(LC_NUMERIC, "C"); \ - __ret = sprintf(s, a); \ - setlocale(LC_NUMERIC, __savedlocale); \ - __ret; \ - }) + ({ int __ret; char *__savedlocale; \ + __savedlocale = setlocale(LC_NUMERIC, NULL); \ + setlocale(LC_NUMERIC, "C"); \ + __ret = sprintf(s, a); \ + setlocale(LC_NUMERIC, __savedlocale); \ + __ret; \ + }) #define num_snprintf(s, n, a...) \ - ({ int __ret; char *__savedlocale; \ - __savedlocale = setlocale(LC_NUMERIC, NULL); \ - setlocale(LC_NUMERIC, "C"); \ - __ret = snprintf(s, n, a); \ - setlocale(LC_NUMERIC, __savedlocale); \ - __ret; \ - }) + ({ int __ret; char *__savedlocale; \ + __savedlocale = setlocale(LC_NUMERIC, NULL); \ + setlocale(LC_NUMERIC, "C"); \ + __ret = snprintf(s, n, a); \ + setlocale(LC_NUMERIC, __savedlocale); \ + __ret; \ + }) -#endif /* _NUM_STDIO_H */ +#endif /* _NUM_STDIO_H */