kopia lustrzana https://github.com/Hamlib/Hamlib
Merge branch 'master' of http://github.com/Hamlib/Hamlib
commit
6141e5098f
|
@ -22,7 +22,8 @@ INPUT = @top_srcdir@/doc/index.doxygen \
|
|||
@top_srcdir@/src/
|
||||
|
||||
EXCLUDE = @top_srcdir@/src/amp_conf.h \
|
||||
@top_srcdir@/include/hamlib/ampclass.h
|
||||
@top_srcdir@/include/hamlib/ampclass.h \
|
||||
@top_srcdir@/include/hamlib/rotclass.h
|
||||
|
||||
INCLUDE_PATH = @top_srcdir@/include
|
||||
|
||||
|
|
|
@ -7,11 +7,11 @@ Stéphane Fillod, F8CFE, and Frank Singleton, VK3FCS and the Hamlib Group
|
|||
|
||||
\section s1 Preface
|
||||
|
||||
This document describes the Hamlib library Application Programming Interface
|
||||
(API) for this distribution.
|
||||
This document describes the Hamlib library Application Programming Interface
|
||||
(API) for this distribution.
|
||||
|
||||
We attempt to document the complete API of the core modules of Hamlib, i.e.,
|
||||
the API seen by end-user application developers. You may navigate the
|
||||
We attempt to document the complete API of the core modules of Hamlib, i.e.,
|
||||
the API seen by end-user application developers. You may navigate the
|
||||
documentation through the tabs at the top of this page.
|
||||
|
||||
Please report any problems to hamlib-developer@lists.sourceforge.net.
|
||||
|
@ -44,10 +44,10 @@ Other files: \subpage INSTALL;
|
|||
|
||||
\section slic Documentation License
|
||||
|
||||
\li \subpage doclicense
|
||||
\li \subpage doclicense
|
||||
*/
|
||||
/*! \page doclicense License for Documentation
|
||||
This documentation is free; you can redistribute it without
|
||||
This documentation is free; you can redistribute it without
|
||||
any restrictions. The modification or derived work must retain
|
||||
copyright and list all authors.
|
||||
|
||||
|
@ -101,4 +101,5 @@ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|||
* \defgroup rotator Rotator API
|
||||
* \defgroup utilities Utility Routines API
|
||||
* \defgroup rig_internal Rig Internal API
|
||||
* \defgroup amplifier Amplifier API
|
||||
*/
|
||||
|
|
|
@ -26,18 +26,18 @@
|
|||
#include <hamlib/amplist.h>
|
||||
|
||||
/**
|
||||
* \addtogroup amp
|
||||
* \addtogroup amplifier
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file amplifier.h
|
||||
* \brief Hamlib amplifier data structures.
|
||||
* \file amplifier.h
|
||||
* \brief Hamlib amplifier data structures.
|
||||
*
|
||||
* This file contains the data structures and declarations for the Hamlib
|
||||
* amplifier Application Programming Interface (API).
|
||||
* This file contains the data structures and declarations for the Hamlib
|
||||
* amplifier Application Programming Interface (API).
|
||||
*
|
||||
* See the `amplifier.c` file for details on the amplifier API functions.
|
||||
* See the amplifier.c file for details on the amplifier API functions.
|
||||
*/
|
||||
|
||||
|
||||
|
@ -51,47 +51,47 @@ struct amp_state;
|
|||
|
||||
|
||||
/**
|
||||
* \typedef typedef struct amp AMP
|
||||
* \brief Main amplifier handle type definition.
|
||||
* \typedef typedef struct amp AMP
|
||||
* \brief Main amplifier handle type definition.
|
||||
*
|
||||
* The AMP handle is returned by amp_init() and is passed as a parameter to
|
||||
* every amplifier specific API call.
|
||||
* The #AMP handle is returned by amp_init() and is passed as a parameter to
|
||||
* every amplifier specific API call.
|
||||
*
|
||||
* amp_cleanup() must be called when this handle is no longer needed.
|
||||
* amp_cleanup() must be called when this handle is no longer needed.
|
||||
*/
|
||||
typedef struct amp AMP;
|
||||
|
||||
|
||||
/**
|
||||
* \typedef typedef float swr_t
|
||||
* \brief Type definition for
|
||||
* <a href="https://en.wikipedia.org/wiki/Standing_wave_ratio" >SWR (Standing Wave Ratio)</a>.
|
||||
* \typedef typedef float swr_t
|
||||
* \brief Type definition for
|
||||
* <a href="https://en.wikipedia.org/wiki/Standing_wave_ratio" >SWR (Standing Wave Ratio)</a>.
|
||||
*
|
||||
* The \c swr_t type is used as a parameter for the amp_get_swr() function.
|
||||
* The \a swr_t type is used as a parameter for the amp_get_swr() function.
|
||||
*
|
||||
* The unit of \c swr_t is 1.0 to the maximum value reported by the amplifier's
|
||||
* internal antenna system tuner, i.e.
|
||||
* <a href="http://www.arrl.org/transmatch-antenna-tuner" >transmatch</a>,
|
||||
* representing the ratio of 1.0:1 to Maximum:1.
|
||||
* The unit of \a swr_t is 1.0 to the maximum value reported by the amplifier's
|
||||
* internal antenna system tuner, i.e.
|
||||
* <a href="http://www.arrl.org/transmatch-antenna-tuner" >transmatch</a>,
|
||||
* representing the ratio of 1.0:1 to Maximum:1.
|
||||
*/
|
||||
typedef float swr_t;
|
||||
|
||||
|
||||
/**
|
||||
* \typedef typedef float tune_value_t
|
||||
* \brief Type definition for the
|
||||
* <a href="http://www.arrl.org/transmatch-antenna-tuner" >transmatch</a>
|
||||
* tuning values of
|
||||
* <a href="https://en.wikipedia.org/wiki/Capacitance" >capacitance</a>
|
||||
* and
|
||||
* <a href="https://en.wikipedia.org/wiki/Inductance" >inductance</a>.
|
||||
* \typedef typedef float tune_value_t
|
||||
* \brief Type definition for the
|
||||
* <a href="http://www.arrl.org/transmatch-antenna-tuner" >transmatch</a>
|
||||
* tuning values of
|
||||
* <a href="https://en.wikipedia.org/wiki/Capacitance" >capacitance</a>
|
||||
* and
|
||||
* <a href="https://en.wikipedia.org/wiki/Inductance" >inductance</a>.
|
||||
*
|
||||
* The \c tune_value_t type is used as a parameter for amp_get_level().
|
||||
* The \a tune_value_t type is used as a parameter for amp_get_level().
|
||||
*
|
||||
* The unit of \c tune_value_t is
|
||||
* <a href="https://en.wikipedia.org/wiki/Farad" >picoFarads (pF)</a>
|
||||
* or
|
||||
* <a href="https://en.wikipedia.org/wiki/Henry_(unit)" >nanoHenrys (nH)</a>.
|
||||
* The unit of \a tune_value_t is
|
||||
* <a href="https://en.wikipedia.org/wiki/Farad" >picoFarads (pF)</a>
|
||||
* or
|
||||
* <a href="https://en.wikipedia.org/wiki/Henry_(unit)" >nanoHenrys (nH)</a>.
|
||||
*/
|
||||
typedef int tune_value_t;
|
||||
|
||||
|
@ -168,23 +168,23 @@ enum amp_level_e
|
|||
*
|
||||
* The main idea of this struct is that it will be defined by the backend
|
||||
* amplifier driver and will remain read-only for the application. Fields
|
||||
* that need to be modifiable by the application are copied into the struct
|
||||
* \c amp_state, which is the private memory area of the AMP instance.
|
||||
* that need to be modifiable by the application are copied into the
|
||||
* amp_state structure, which is the private memory area of the #AMP instance.
|
||||
*
|
||||
* This way you can have several amplifiers running within the same
|
||||
* application, sharing the struct \c amp_caps of the backend, while keeping
|
||||
* application, sharing the amp_caps structure of the backend, while keeping
|
||||
* their own customized data.
|
||||
*
|
||||
* \b Note: Don't move fields around and only add new fields at the end of the
|
||||
* caps structure. Shared libraries depend on a constant structure to maintain
|
||||
* compatibility.
|
||||
* amp_caps structure. Shared libraries and DLLs depend on a constant
|
||||
* structure to maintain compatibility.
|
||||
*/
|
||||
struct amp_caps
|
||||
{
|
||||
amp_model_t amp_model; /*!< Amplifier model as defined in `amplist.h`. */
|
||||
amp_model_t amp_model; /*!< Amplifier model as defined in amplist.h. */
|
||||
const char *model_name; /*!< Model name, e.g. MM-5k. */
|
||||
const char *mfg_name; /*!< Manufacturer, e.g. Moonbeam. */
|
||||
const char *version; /*!< Driver version. */
|
||||
const char *version; /*!< Driver version, typically in YYYYMMDD.x format. */
|
||||
const char *copyright; /*!< Copyright info (should be LGPL). */
|
||||
enum rig_status_e status; /*!< Driver status. */
|
||||
|
||||
|
@ -207,42 +207,42 @@ struct amp_caps
|
|||
const rig_ptr_t priv; /*!< Private data. */
|
||||
const char *amp_model_macro_name; /*!< Model macro name. */
|
||||
|
||||
setting_t has_get_level; /*!< Has get_level capability. */
|
||||
setting_t has_set_level; /*!< Has set_level capability. */
|
||||
setting_t has_get_level; /*!< List of get levels. */
|
||||
setting_t has_set_level; /*!< List of set levels. */
|
||||
|
||||
gran_t level_gran[RIG_SETTING_MAX]; /*!< level granularity */
|
||||
gran_t parm_gran[RIG_SETTING_MAX]; /*!< level granularity */
|
||||
gran_t level_gran[RIG_SETTING_MAX]; /*!< Level granularity. */
|
||||
gran_t parm_gran[RIG_SETTING_MAX]; /*!< Parameter granularity. */
|
||||
|
||||
/*
|
||||
* Amp Admin API
|
||||
*
|
||||
*/
|
||||
|
||||
int (*amp_init)(AMP *amp); /*!< Initializes data structures and returns an #AMP handle--call before amp_open(). */
|
||||
int (*amp_cleanup)(AMP *amp); /*!< Frees the data structures associated with the #AMP handle--call after amp_close(). */
|
||||
int (*amp_open)(AMP *amp); /*!< Opens the communication channel to the amplifier. */
|
||||
int (*amp_close)(AMP *amp); /*!< Closes the communication channel to the amplifier. */
|
||||
int (*amp_init)(AMP *amp); /*!< Pointer to backend implementation of ::amp_init(). */
|
||||
int (*amp_cleanup)(AMP *amp); /*!< Pointer to backend implementation of ::amp_cleanup(). */
|
||||
int (*amp_open)(AMP *amp); /*!< Pointer to backend implementation of ::amp_open(). */
|
||||
int (*amp_close)(AMP *amp); /*!< Pointer to backend implementation of ::amp_close(). */
|
||||
|
||||
int (*set_freq)(AMP *amp, freq_t val); /*!< Set the frequency of the amplifier. */
|
||||
int (*get_freq)(AMP *amp, freq_t *val); /*!< Query the frequency of the amplifier. */
|
||||
int (*set_freq)(AMP *amp, freq_t val); /*!< Pointer to backend implementation of ::amp_set_freq(). */
|
||||
int (*get_freq)(AMP *amp, freq_t *val); /*!< Pointer to backend implementation of ::amp_get_freq(). */
|
||||
|
||||
int (*set_conf)(AMP *amp, token_t token, const char *val); /*!< Set the configuration parameter \a val corresponding to the \a token. */
|
||||
int (*get_conf)(AMP *amp, token_t token, char *val); /*!< Query the configuration parameter \a val corresponding to the \a token. */
|
||||
int (*set_conf)(AMP *amp, token_t token, const char *val); /*!< Pointer to backend implementation of ::amp_set_conf(). */
|
||||
int (*get_conf)(AMP *amp, token_t token, char *val); /*!< Pointer to backend implementation of ::amp_get_conf(). */
|
||||
|
||||
/*
|
||||
* General API commands, from most primitive to least.. :()
|
||||
* List Set/Get functions pairs
|
||||
*/
|
||||
|
||||
int (*reset)(AMP *amp, amp_reset_t reset); /*!< Reset the amplifier (careful!). */
|
||||
int (*get_level)(AMP *amp, setting_t level, value_t *val); /*!< Query the \a val corresponding to the \a level. */
|
||||
int (*get_ext_level)(AMP *amp, token_t level, value_t *val); /*!< Query the \a val corresponding to the extra \a level. */
|
||||
int (*set_powerstat)(AMP *amp, powerstat_t status); /*!< Turn the amplifier On or Off or toggle the Standby or Operate status. */
|
||||
int (*get_powerstat)(AMP *amp, powerstat_t *status); /*!< Query the power or standby status of the amplifier. */
|
||||
int (*reset)(AMP *amp, amp_reset_t reset); /*!< Pointer to backend implementation of ::amp_reset(). */
|
||||
int (*get_level)(AMP *amp, setting_t level, value_t *val); /*!< Pointer to backend implementation of ::amp_get_level(). */
|
||||
int (*get_ext_level)(AMP *amp, token_t level, value_t *val); /*!< Pointer to backend implementation of ::amp_get_ext_level(). */
|
||||
int (*set_powerstat)(AMP *amp, powerstat_t status); /*!< Pointer to backend implementation of ::amp_set_powerstat(). */
|
||||
int (*get_powerstat)(AMP *amp, powerstat_t *status); /*!< Pointer to backend implementation of ::amp_get_powerstat(). */
|
||||
|
||||
|
||||
/* get firmware info, etc. */
|
||||
const char *(*get_info)(AMP *amp); /*!< Query available internal information of the amplifier (firmware version, etc.). */
|
||||
const char *(*get_info)(AMP *amp); /*!< Pointer to backend implementation of ::amp_get_info(). */
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
setting_t levels;
|
||||
|
@ -251,19 +251,19 @@ struct amp_caps
|
|||
const struct confparams *extlevels; /*!< Extra levels structure. */
|
||||
const struct confparams *extparms; /*!< Extra parameters structure. */
|
||||
|
||||
const char *macro_name; /*!< Macro name. */
|
||||
const char *macro_name; /*!< Amplifier model macro name. */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* \struct amp_state
|
||||
* \brief Amplifier state
|
||||
* \brief Amplifier state structure
|
||||
*
|
||||
* This structure contains live data, as well as a copy of capability fields
|
||||
* that may be updated (ie. customized)
|
||||
* that may be updated, i.e. customized while the #AMP handle is instantiated.
|
||||
*
|
||||
* It is fine to move fields around, as this kind of struct should
|
||||
* not be initialized like caps are.
|
||||
* It is fine to move fields around, as this kind of struct should not be
|
||||
* initialized like amp_caps are.
|
||||
*/
|
||||
struct amp_state
|
||||
{
|
||||
|
@ -280,26 +280,23 @@ struct amp_state
|
|||
rig_ptr_t priv; /*!< Pointer to private amplifier state data. */
|
||||
rig_ptr_t obj; /*!< Internal use by hamlib++ for event handling. */
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
setting_t has_get_level;
|
||||
//! @endcond
|
||||
setting_t has_get_level; /*!< List of get levels. */
|
||||
|
||||
gran_t level_gran[RIG_SETTING_MAX]; /*!< level granularity */
|
||||
gran_t parm_gran[RIG_SETTING_MAX]; /*!< level granularity */
|
||||
gran_t level_gran[RIG_SETTING_MAX]; /*!< Level granularity. */
|
||||
gran_t parm_gran[RIG_SETTING_MAX]; /*!< Parameter granularity. */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* \struct amp
|
||||
* \brief Amplifier structure
|
||||
* \brief Master amplifier structure
|
||||
*
|
||||
* Master amplifier data structure acting as a handle for the
|
||||
* controlled amplifier.
|
||||
* Master amplifier data structure acting as the #AMP handle for the
|
||||
* controlled amplifier. A pointer to this structure is returned by the
|
||||
* amp_init() API function and is passed as a parameter to every amplifier
|
||||
* specific API call.
|
||||
*
|
||||
* A pointer to this structure is returned by the amp_init() API function and
|
||||
* is passed as a parameter to every amplifier specific API call.
|
||||
*
|
||||
* \sa amp_caps(), amp_state()
|
||||
* \sa amp_init(), amp_caps, amp_state
|
||||
*/
|
||||
struct amp
|
||||
{
|
||||
|
@ -426,11 +423,11 @@ extern HAMLIB_EXPORT(const char *) amp_strlevel(setting_t);
|
|||
|
||||
|
||||
/**
|
||||
* \def amp_debug
|
||||
* \brief Convenience macro for generating debugging messages.
|
||||
* \def amp_debug
|
||||
* \brief Convenience macro for generating debugging messages.
|
||||
*
|
||||
* This is an alias of the rig_debug() function call and is used in the same
|
||||
* manner.
|
||||
* This is an alias of the rig_debug() function call and is used in the same
|
||||
* manner.
|
||||
*/
|
||||
#define amp_debug rig_debug
|
||||
|
||||
|
|
|
@ -31,11 +31,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* \file rotator.h
|
||||
* \brief Hamlib rotator data structures.
|
||||
* \file rotator.h
|
||||
* \brief Hamlib rotator data structures.
|
||||
*
|
||||
* 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.
|
||||
* This file contains the data structures and declarations for the Hamlib
|
||||
* rotator Application Programming Interface (API).
|
||||
*
|
||||
* See the rotator.c file for more details on the rotator API functions.
|
||||
*/
|
||||
|
||||
|
||||
|
@ -49,149 +51,166 @@ struct rot_state;
|
|||
|
||||
|
||||
/**
|
||||
* \typedef typedef struct s_rot ROT
|
||||
* \brief Rotator structure definition (see rot for details).
|
||||
* \typedef typedef struct s_rot ROT
|
||||
* \brief Main rotator handle type definition.
|
||||
*
|
||||
* The #ROT handle is returned by rot_init() and is passed as a parameter to
|
||||
* every rotator specific API call.
|
||||
*
|
||||
* rot_cleanup() must be called when this handle is no longer needed.
|
||||
*/
|
||||
typedef struct s_rot ROT;
|
||||
|
||||
|
||||
/**
|
||||
* \typedef typedef float elevation_t
|
||||
* \brief Type definition for elevation.
|
||||
* \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 \a 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.
|
||||
* Unless specified otherwise, the unit of \a elevation_t is decimal degrees.
|
||||
*/
|
||||
typedef float elevation_t;
|
||||
|
||||
|
||||
/**
|
||||
* \typedef typedef float azimuth_t
|
||||
* \brief Type definition for azimuth.
|
||||
* \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 \a 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.
|
||||
* Unless specified otherwise, the unit of \a azimuth_t is decimal degrees.
|
||||
*/
|
||||
typedef float azimuth_t;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Token in the netrotctl protocol for returning error code
|
||||
* \brief The token in the netrotctl protocol for returning an error condition 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()
|
||||
* \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.
|
||||
* \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 \a rot_reset_t type is used as parameter for the rot_reset() API
|
||||
* function.
|
||||
*/
|
||||
typedef int rot_reset_t;
|
||||
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
/**
|
||||
* \brief Rotator type flags
|
||||
* \brief Rotator type flags for bitmasks.
|
||||
*/
|
||||
typedef enum {
|
||||
ROT_FLAG_AZIMUTH = (1 << 1), /*!< Azimuth */
|
||||
ROT_FLAG_ELEVATION = (1 << 2) /*!< Elevation */
|
||||
} rot_type_t;
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
/* So far only used in ests/dumpcaps_rot.c. */
|
||||
#define ROT_TYPE_MASK (ROT_FLAG_AZIMUTH|ROT_FLAG_ELEVATION)
|
||||
//! @endcond
|
||||
|
||||
/**
|
||||
* \def ROT_TYPE_OTHER
|
||||
* \brief Other type of rotator.
|
||||
* \def ROT_TYPE_AZIMUTH
|
||||
* \brief Azimuth only rotator.
|
||||
* \def ROT_TYPE_ELEVATION
|
||||
* \brief Elevation only rotator.
|
||||
* \def ROT_TYPE_AZEL
|
||||
* \brief Combination azimuth/elevation rotator.
|
||||
*/
|
||||
#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)
|
||||
//! @endcond
|
||||
|
||||
|
||||
/**
|
||||
* \def ROT_MOVE_UP
|
||||
* \brief A macro that returns the flag for the \b UP direction.
|
||||
* \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.
|
||||
* 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
|
||||
*/
|
||||
#define ROT_MOVE_UP (1<<1)
|
||||
|
||||
/**
|
||||
* \def ROT_MOVE_DOWN
|
||||
* \brief A macro that returns the flag for the \b DOWN direction.
|
||||
* \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.
|
||||
* 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
|
||||
*/
|
||||
#define ROT_MOVE_DOWN (1<<2)
|
||||
|
||||
/**
|
||||
* \def ROT_MOVE_LEFT
|
||||
* \brief A macro that returns the flag for the \b LEFT direction.
|
||||
* \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.
|
||||
* 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
|
||||
*/
|
||||
#define ROT_MOVE_LEFT (1<<3)
|
||||
|
||||
/**
|
||||
* \def ROT_MOVE_CCW
|
||||
* \brief A macro that returns the flag for the \b counterclockwise direction.
|
||||
* \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 .
|
||||
* 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
|
||||
*/
|
||||
#define ROT_MOVE_CCW ROT_MOVE_LEFT
|
||||
|
||||
/**
|
||||
* \def ROT_MOVE_RIGHT
|
||||
* \brief A macro that returns the flag for the \b RIGHT direction.
|
||||
* \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.
|
||||
* 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
|
||||
*/
|
||||
#define ROT_MOVE_RIGHT (1<<4)
|
||||
|
||||
/**
|
||||
* \def ROT_MOVE_CW
|
||||
* \brief A macro that returns the flag for the \b clockwise direction.
|
||||
* \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 which can be
|
||||
* used with the rot_move() function. This value is equivalent to
|
||||
* ROT_MOVE_RIGHT .
|
||||
* This macro defines the value of the \b clockwise direction which 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_CW ROT_MOVE_RIGHT
|
||||
|
||||
|
@ -200,46 +219,49 @@ typedef enum {
|
|||
* \brief Rotator status flags
|
||||
*/
|
||||
typedef enum {
|
||||
ROT_STATUS_NONE = 0,
|
||||
ROT_STATUS_BUSY = (1 << 0), /*!< Rotator is busy, not accepting commands */
|
||||
ROT_STATUS_MOVING = (1 << 1), /*!< Rotator is currently moving (direction type not specified) */
|
||||
ROT_STATUS_MOVING_AZ = (1 << 2), /*!< Azimuth rotator is currently moving (direction not specified) */
|
||||
ROT_STATUS_MOVING_LEFT = (1 << 3), /*!< Azimuth rotator is currently moving left */
|
||||
ROT_STATUS_MOVING_RIGHT = (1 << 4), /*!< Azimuth rotator is currently moving right */
|
||||
ROT_STATUS_MOVING_EL = (1 << 5), /*!< Elevation rotator is currently moving (direction not specified) */
|
||||
ROT_STATUS_MOVING_UP = (1 << 6), /*!< Elevation rotator is currently moving up */
|
||||
ROT_STATUS_MOVING_DOWN = (1 << 7), /*!< Elevation rotator is currently moving down */
|
||||
ROT_STATUS_LIMIT_UP = (1 << 8), /*!< The elevation rotator has reached its limit to move up */
|
||||
ROT_STATUS_LIMIT_DOWN = (1 << 9), /*!< The elevation rotator has reached its limit to move down */
|
||||
ROT_STATUS_LIMIT_LEFT = (1 << 10), /*!< The azimuth rotator has reached its limit to move left (CCW) */
|
||||
ROT_STATUS_LIMIT_RIGHT = (1 << 11), /*!< The azimuth rotator has reached its limit to move right (CW) */
|
||||
ROT_STATUS_OVERLAP_UP = (1 << 12), /*!< The elevation rotator has rotated up past 360 degrees */
|
||||
ROT_STATUS_OVERLAP_DOWN = (1 << 13), /*!< The elevation rotator has rotated down past 0 degrees */
|
||||
ROT_STATUS_OVERLAP_LEFT = (1 << 14), /*!< The azimuth rotator has rotated left (CCW) past 0 degrees */
|
||||
ROT_STATUS_OVERLAP_RIGHT = (1 << 16), /*!< The azimuth rotator has rotated right (CW) past 360 degrees */
|
||||
ROT_STATUS_NONE = 0, /*!< '' -- No status. */
|
||||
ROT_STATUS_BUSY = (1 << 0), /*!< Rotator is busy, not accepting commands. */
|
||||
ROT_STATUS_MOVING = (1 << 1), /*!< Rotator is currently moving (direction type not specified). */
|
||||
ROT_STATUS_MOVING_AZ = (1 << 2), /*!< Azimuth rotator is currently moving (direction not specified). */
|
||||
ROT_STATUS_MOVING_LEFT = (1 << 3), /*!< Azimuth rotator is currently moving left. */
|
||||
ROT_STATUS_MOVING_RIGHT = (1 << 4), /*!< Azimuth rotator is currently moving right. */
|
||||
ROT_STATUS_MOVING_EL = (1 << 5), /*!< Elevation rotator is currently moving (direction not specified). */
|
||||
ROT_STATUS_MOVING_UP = (1 << 6), /*!< Elevation rotator is currently moving up. */
|
||||
ROT_STATUS_MOVING_DOWN = (1 << 7), /*!< Elevation rotator is currently moving down. */
|
||||
ROT_STATUS_LIMIT_UP = (1 << 8), /*!< The elevation rotator has reached its limit to move up. */
|
||||
ROT_STATUS_LIMIT_DOWN = (1 << 9), /*!< The elevation rotator has reached its limit to move down.*/
|
||||
ROT_STATUS_LIMIT_LEFT = (1 << 10), /*!< The azimuth rotator has reached its limit to move left (CCW). */
|
||||
ROT_STATUS_LIMIT_RIGHT = (1 << 11), /*!< The azimuth rotator has reached its limit to move right (CW). */
|
||||
ROT_STATUS_OVERLAP_UP = (1 << 12), /*!< The elevation rotator has rotated up past 360 degrees. */
|
||||
ROT_STATUS_OVERLAP_DOWN = (1 << 13), /*!< The elevation rotator has rotated down past 0 degrees. */
|
||||
ROT_STATUS_OVERLAP_LEFT = (1 << 14), /*!< The azimuth rotator has rotated left (CCW) past 0 degrees. */
|
||||
ROT_STATUS_OVERLAP_RIGHT = (1 << 16), /*!< The azimuth rotator has rotated right (CW) past 360 degrees. */
|
||||
} rot_status_t;
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
/* So far only used in tests/sprintflst.c. */
|
||||
#define ROT_STATUS_N(n) (1u<<(n))
|
||||
|
||||
//! @endcond
|
||||
|
||||
/**
|
||||
* \brief Macro for not changing the rotator speed with move() function
|
||||
* \brief Macro for not changing the rotator speed with move() function.
|
||||
*/
|
||||
#define ROT_SPEED_NOCHANGE (-1)
|
||||
|
||||
|
||||
/**
|
||||
* \brief Rotator Level Settings
|
||||
* \brief Rotator Level Settings.
|
||||
*
|
||||
* Various operating levels supported by a rotator.\n
|
||||
* \c STRING used in rotctl
|
||||
* Various operating levels supported by a rotator.
|
||||
*
|
||||
* \c STRING used in the \c rotctl and \c rotctld utilities.
|
||||
*
|
||||
* \sa rot_parse_level(), rot_strlevel()
|
||||
*/
|
||||
enum rot_level_e {
|
||||
ROT_LEVEL_NONE = 0, /*!< '' -- No Level */
|
||||
ROT_LEVEL_SPEED = (1 << 0), /*!< \c SPEED -- Rotation speed, arg int (default range 1-100 if not specified) */
|
||||
ROT_LEVEL_63 = CONSTANT_64BIT_FLAG(63), /*!< \c Future use, last level */
|
||||
ROT_LEVEL_NONE = 0, /*!< '' -- No Level. */
|
||||
ROT_LEVEL_SPEED = (1 << 0), /*!< \c SPEED -- Rotation speed, arg int (default range 1-100 if not specified). */
|
||||
ROT_LEVEL_63 = CONSTANT_64BIT_FLAG(63), /*!< **Future use**, last level. */
|
||||
};
|
||||
|
||||
|
||||
|
@ -253,11 +275,18 @@ enum rot_level_e {
|
|||
//! @endcond
|
||||
|
||||
|
||||
/** @cond Doxygen_Suppress
|
||||
* FIXME: The following needs more explanation about how STRING relates
|
||||
* to this macro.
|
||||
* @endcond
|
||||
*/
|
||||
/**
|
||||
* \brief Rotator Parameters
|
||||
*
|
||||
* Parameters are settings that are not related to core rotator functionality (= antenna rotation).\n
|
||||
* \c STRING used in rotctl
|
||||
* Parameters are settings that are not related to core rotator functionality,
|
||||
* i.e. antenna rotation.
|
||||
*
|
||||
* \c STRING used in the \c rotctl and \c rotctld utilities.
|
||||
*
|
||||
* \sa rot_parse_parm(), rot_strparm()
|
||||
*/
|
||||
|
@ -275,18 +304,24 @@ enum rot_parm_e {
|
|||
//! @endcond
|
||||
|
||||
|
||||
/** @cond Doxygen_Suppress
|
||||
* FIXME: The following needs more explanation about how STRING relates
|
||||
* to these macros.
|
||||
* @endcond
|
||||
*/
|
||||
/**
|
||||
* \brief Rotator Function Settings
|
||||
* \brief Rotator Function Settings.
|
||||
*
|
||||
* Various operating functions supported by a rotator.\n
|
||||
* \c STRING used in rotctl/rotctld
|
||||
* Various operating functions supported by a rotator.
|
||||
*
|
||||
* \c STRING used in the \c rotctl and \c rotctld utilities.
|
||||
*
|
||||
* \sa rot_parse_func(), rot_strfunc()
|
||||
*/
|
||||
#define ROT_FUNC_NONE 0 /*!< '' -- No Function */
|
||||
#ifndef SWIGLUAHIDE
|
||||
/* Hide the top 32 bits from the old Lua binding as they can't be represented */
|
||||
#define ROT_FUNC_BIT63 CONSTANT_64BIT_FLAG (63) /*!< \c available for future ROT_FUNC items */
|
||||
#define ROT_FUNC_BIT63 CONSTANT_64BIT_FLAG (63) /*!< **Future use**, ROT_FUNC items. */
|
||||
/* 63 is this highest bit number that can be used */
|
||||
#endif
|
||||
|
||||
|
@ -297,35 +332,32 @@ enum rot_parm_e {
|
|||
*/
|
||||
|
||||
/**
|
||||
* Rotator Caps
|
||||
* \struct rot_caps
|
||||
* \brief Rotator data structure.
|
||||
* \brief Rotator capability 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.
|
||||
* The main idea of this structure is that it will be defined by the backend
|
||||
* rotator driver, and will remain read-only for the application. Fields that
|
||||
* need to be modifiable by the application are copied into the rot_state
|
||||
* structure, which is the private memory area 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.
|
||||
* This way, you can have several rotators running within the same
|
||||
* application, sharing the rot_caps structure of the backend, while keeping
|
||||
* their own customized data.
|
||||
*
|
||||
* mdblack: Careful moving fields around, as the backends depend on it when
|
||||
* initializing their caps in shared libraries and dlls.
|
||||
* \b Note: Don't move fields around and only add new fields at the end of the
|
||||
* rot_caps structure. Shared libraries and DLLs depend on a constant
|
||||
* structure to maintain compatibility.
|
||||
*/
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
#define ROT_MODEL(arg) .rot_model=arg,.macro_name=#arg
|
||||
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. */
|
||||
rot_model_t rot_model; /*!< Rotator model as defined in rotlist.h. */
|
||||
const char *model_name; /*!< Model name, e.g. TT-360. */
|
||||
const char *mfg_name; /*!< Manufacturer, e.g. Tower Torquer. */
|
||||
const char *version; /*!< Driver version, typically in YYYYMMDD.x format. */
|
||||
const char *copyright; /*!< Copyright info (should be LGPL). */
|
||||
enum rig_status_e status; /*!< Driver status. */
|
||||
|
||||
int rot_type; /*!< Rotator type. */
|
||||
enum rig_port_e port_type; /*!< Type of communication port. */
|
||||
enum rig_port_e port_type; /*!< Type of communication port (serial, ethernet, etc.). */
|
||||
|
||||
int serial_rate_min; /*!< Minimal serial speed. */
|
||||
int serial_rate_max; /*!< Maximal serial speed. */
|
||||
|
@ -337,24 +369,24 @@ struct rot_caps {
|
|||
int write_delay; /*!< Write delay. */
|
||||
int post_write_delay; /*!< Post-write delay. */
|
||||
int timeout; /*!< Timeout. */
|
||||
int retry; /*!< Number of retry if command fails. */
|
||||
int retry; /*!< Number of retries if command fails. */
|
||||
|
||||
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 levels. */
|
||||
setting_t has_set_level; /*!< List of set levels. */
|
||||
setting_t has_get_parm; /*!< List of get parameters. */
|
||||
setting_t has_set_parm; /*!< List of set parameters. */
|
||||
|
||||
rot_status_t has_status; /*!< Supported status flags */
|
||||
rot_status_t has_status; /*!< Supported status flags. */
|
||||
|
||||
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 *extfuncs; /*!< Extension func list, \sa ext.c */
|
||||
int *ext_tokens; /*!< Extension token list */
|
||||
const struct confparams *extparms; /*!< Extension parameter list, \sa ext.c. */
|
||||
const struct confparams *extlevels; /*!< Extension level list, \sa ext.c. */
|
||||
const struct confparams *extfuncs; /*!< Extension func list, \sa ext.c. */
|
||||
int *ext_tokens; /*!< Extension token list. */
|
||||
|
||||
/*
|
||||
* Movement range, az is relative to North
|
||||
|
@ -376,65 +408,66 @@ struct rot_caps {
|
|||
*
|
||||
*/
|
||||
|
||||
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); /*!< Pointer to backend implementation of ::rot_init(). */
|
||||
int (*rot_cleanup)(ROT *rot); /*!< Pointer to backend implementation of ::rot_cleanup(). */
|
||||
int (*rot_open)(ROT *rot); /*!< Pointer to backend implementation of ::rot_open(). */
|
||||
int (*rot_close)(ROT *rot); /*!< Pointer to backend implementation of ::rot_close(). */
|
||||
|
||||
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); /*!< Pointer to backend implementation of ::rot_set_conf(). */
|
||||
int (*get_conf)(ROT *rot, token_t token, char *val); /*!< Pointer to backend implementation of ::rot_get_conf(). */
|
||||
|
||||
/*
|
||||
* 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); /*!< Pointer to backend implementation of ::rot_set_position(). */
|
||||
int (*get_position)(ROT *rot, azimuth_t *azimuth, elevation_t *elevation); /*!< Pointer to backend implementation of ::rot_get_position(). */
|
||||
|
||||
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); /*!< Pointer to backend implementation of ::rot_stop(). */
|
||||
int (*park)(ROT *rot); /*!< Pointer to backend implementation of ::rot_park(). */
|
||||
int (*reset)(ROT *rot, rot_reset_t reset); /*!< Pointer to backend implementation of ::rot_reset(). */
|
||||
int (*move)(ROT *rot, int direction, int speed); /*!< Pointer to backend implementation of ::rot_move(). */
|
||||
|
||||
/* get firmware info, etc. */
|
||||
const char * (*get_info)(ROT *rot);
|
||||
const char * (*get_info)(ROT *rot); /*!< Pointer to backend implementation of ::rot_get_info(). */
|
||||
|
||||
int (*set_level)(ROT *rot, setting_t level, value_t val);
|
||||
int (*get_level)(ROT *rot, setting_t level, value_t *val);
|
||||
int (*set_level)(ROT *rot, setting_t level, value_t val); /*!< Pointer to backend implementation of ::rot_set_level(). */
|
||||
int (*get_level)(ROT *rot, setting_t level, value_t *val); /*!< Pointer to backend implementation of ::rot_get_level(). */
|
||||
|
||||
int (*set_func)(ROT *rot, setting_t func, int status);
|
||||
int (*get_func)(ROT *rot, setting_t func, int *status);
|
||||
int (*set_func)(ROT *rot, setting_t func, int status); /*!< Pointer to backend implementation of ::rot_set_func(). */
|
||||
int (*get_func)(ROT *rot, setting_t func, int *status); /*!< Pointer to backend implementation of ::rot_get_func(). */
|
||||
|
||||
int (*set_parm)(ROT *rot, setting_t parm, value_t val);
|
||||
int (*get_parm)(ROT *rot, setting_t parm, value_t *val);
|
||||
int (*set_parm)(ROT *rot, setting_t parm, value_t val); /*!< Pointer to backend implementation of ::rot_set_parm(). */
|
||||
int (*get_parm)(ROT *rot, setting_t parm, value_t *val); /*!< Pointer to backend implementation of ::rot_get_parm(). */
|
||||
|
||||
int (*set_ext_level)(ROT *rot, token_t token, value_t val);
|
||||
int (*get_ext_level)(ROT *rot, token_t token, value_t *val);
|
||||
int (*set_ext_level)(ROT *rot, token_t token, value_t val); /*!< Pointer to backend implementation of ::rot_set_ext_level(). */
|
||||
int (*get_ext_level)(ROT *rot, token_t token, value_t *val); /*!< Pointer to backend implementation of ::rot_get_ext_level(). */
|
||||
|
||||
int (*set_ext_func)(ROT *rot, token_t token, int status);
|
||||
int (*get_ext_func)(ROT *rot, token_t token, int *status);
|
||||
int (*set_ext_func)(ROT *rot, token_t token, int status); /*!< Pointer to backend implementation of ::rot_set_ext_func(). */
|
||||
int (*get_ext_func)(ROT *rot, token_t token, int *status); /*!< Pointer to backend implementation of ::rot_get_ext_func(). */
|
||||
|
||||
int (*set_ext_parm)(ROT *rot, token_t token, value_t val);
|
||||
int (*get_ext_parm)(ROT *rot, token_t token, value_t *val);
|
||||
int (*set_ext_parm)(ROT *rot, token_t token, value_t val); /*!< Pointer to backend implementation of ::rot_set_ext_parm(). */
|
||||
int (*get_ext_parm)(ROT *rot, token_t token, value_t *val); /*!< Pointer to backend implementation of ::rot_get_ext_parm(). */
|
||||
|
||||
int (*get_status)(ROT *rot, rot_status_t *status);
|
||||
int (*get_status)(ROT *rot, rot_status_t *status); /*!< Pointer to backend implementation of ::rot_get_status(). */
|
||||
|
||||
const char *macro_name; /*!< Macro name. */
|
||||
const char *macro_name; /*!< Rotator model macro name. */
|
||||
};
|
||||
//! @cond Doxygen_Suppress
|
||||
#define ROT_MODEL(arg) .rot_model=arg,.macro_name=#arg
|
||||
//! @endcond
|
||||
|
||||
|
||||
/**
|
||||
* Rotator state
|
||||
* \struct rot_state
|
||||
* \brief Live data and customized fields.
|
||||
* \brief Rotator state structure
|
||||
*
|
||||
* This struct contains live data, as well as a copy of capability fields
|
||||
* that may be updated (ie. customized)
|
||||
* This structure contains live data, as well as a copy of capability fields
|
||||
* that may be updated, i.e. customized while the #ROT handle is instantiated.
|
||||
*
|
||||
* It is fine to move fields around, as this kind of struct should
|
||||
* not be initialized like caps are.
|
||||
* It is fine to move fields around, as this kind of structure should not be
|
||||
* initialized like rot_caps are.
|
||||
*/
|
||||
struct rot_state {
|
||||
/*
|
||||
|
@ -444,47 +477,46 @@ struct rot_state {
|
|||
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). */
|
||||
int south_zero; /*!< South is zero degrees */
|
||||
azimuth_t az_offset; /*!< Offset to be applied to azimuth */
|
||||
elevation_t el_offset; /*!< Offset to be applied to elevation */
|
||||
int south_zero; /*!< South is zero degrees. */
|
||||
azimuth_t az_offset; /*!< Offset to be applied to azimuth. */
|
||||
elevation_t el_offset; /*!< Offset to be applied to elevation. */
|
||||
|
||||
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 levels. */
|
||||
setting_t has_set_level; /*!< List of set levels. */
|
||||
setting_t has_get_parm; /*!< List of get parameters. */
|
||||
setting_t has_set_parm; /*!< List of set parameters. */
|
||||
|
||||
rot_status_t has_status; /*!< Supported status flags */
|
||||
rot_status_t has_status; /*!< Supported status flags. */
|
||||
|
||||
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]; /*!< Parameter granularity. */
|
||||
|
||||
/*
|
||||
* non overridable fields, internal use
|
||||
*/
|
||||
hamlib_port_t rotport; /*!< Rotator port (internal use). */
|
||||
|
||||
int comm_state; /*!< Comm port state, opened/closed. */
|
||||
int comm_state; /*!< Comm port state, i.e. opened or closed. */
|
||||
rig_ptr_t priv; /*!< Pointer to private rotator state data. */
|
||||
rig_ptr_t obj; /*!< Internal use by hamlib++ for event handling. */
|
||||
|
||||
int current_speed; /*!< Current speed 1-100, to be used when no change to speed is requested */
|
||||
int current_speed; /*!< Current speed 1-100, to be used when no change to speed is requested. */
|
||||
/* etc... */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Rotator structure
|
||||
* \struct s_rot
|
||||
* \brief This is the master data structure,
|
||||
* acting as a handle for the controlled rotator.
|
||||
* \brief Master rotator structure.
|
||||
*
|
||||
* This is the master data structure, acting as a handle for the controlled
|
||||
* 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.
|
||||
* This is the master data structure acting as the #ROT handle for the
|
||||
* controlled 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 s_rot {
|
||||
struct rot_caps *caps; /*!< Rotator caps. */
|
||||
|
@ -757,13 +789,11 @@ extern HAMLIB_EXPORT(const char *) rot_strstatus(rot_status_t);
|
|||
//! @endcond
|
||||
|
||||
/**
|
||||
* \def rot_debug
|
||||
* \brief Convenience definition for debug level.
|
||||
* \def rot_debug
|
||||
* \brief Convenience macro for generating debugging messages.
|
||||
*
|
||||
* This is just as convenience definition of the rotator debug level,
|
||||
* and is the same as for the rig debug level.
|
||||
*
|
||||
* \sa rig_debug()
|
||||
* This is an alias of the rig_debug() function call and is used in the same
|
||||
* manner.
|
||||
*/
|
||||
#define rot_debug rig_debug
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* \addtogroup amp
|
||||
* \addtogroup amplifier
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue