diff --git a/hamlib/libgcc_s_dw2-1.dll b/hamlib/libgcc_s_dw2-1.dll new file mode 100644 index 0000000..364c2dd Binary files /dev/null and b/hamlib/libgcc_s_dw2-1.dll differ diff --git a/hamlib/libhamlib-4.dll b/hamlib/libhamlib-4.dll index fcef2da..7707fb1 100644 Binary files a/hamlib/libhamlib-4.dll and b/hamlib/libhamlib-4.dll differ diff --git a/hamlib/libhamlib.dll.a b/hamlib/libhamlib.dll.a index 2814f40..1beecb4 100644 Binary files a/hamlib/libhamlib.dll.a and b/hamlib/libhamlib.dll.a differ diff --git a/hamlib/libwinpthread-1.dll b/hamlib/libwinpthread-1.dll index acd0423..0b416a5 100644 Binary files a/hamlib/libwinpthread-1.dll and b/hamlib/libwinpthread-1.dll differ diff --git a/hamlib/rig.h b/hamlib/rig.h index a99a157..51a5c20 100644 --- a/hamlib/rig.h +++ b/hamlib/rig.h @@ -33,7 +33,7 @@ // Our shared secret password #define HAMLIB_SECRET_LENGTH 32 -#define HAMLIB_TRACE rig_debug(RIG_DEBUG_TRACE,"%s%s(%d) trace\n",spaces(rig->state.depth-1), __FILE__, __LINE__) +#define HAMLIB_TRACE rig_debug(RIG_DEBUG_TRACE,"%s%s(%d) trace\n",spaces(STATE(rig)->depth), __FILE__, __LINE__) #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) #include @@ -44,6 +44,7 @@ // to stop warnings about including winsock2.h before windows.h #if defined(_WIN32) #include +#include #include #else #include @@ -205,6 +206,7 @@ enum rig_errcode_e { RIG_EDEPRECATED,/*!< 18 Function deprecated */ RIG_ESECURITY, /*!< 19 Security error */ RIG_EPOWER, /*!< 20 Rig not powered on */ + RIG_ELIMIT, /*!< 21 Limit exceeded */ RIG_EEND // MUST BE LAST ITEM IN LAST }; /** @@ -617,13 +619,13 @@ typedef unsigned int vfo_t; // Compared to older rigs which have one or the other // So we need to distinguish between them //! @cond Doxygen_Suppress -#define VFO_HAS_A_B ((rig->state.vfo_list & (RIG_VFO_A|RIG_VFO_B)) == (RIG_VFO_A|RIG_VFO_B)) -#define VFO_HAS_MAIN_SUB ((rig->state.vfo_list & (RIG_VFO_MAIN|RIG_VFO_SUB)) == (RIG_VFO_MAIN|RIG_VFO_SUB)) +#define VFO_HAS_A_B ((STATE(rig)->vfo_list & (RIG_VFO_A|RIG_VFO_B)) == (RIG_VFO_A|RIG_VFO_B)) +#define VFO_HAS_MAIN_SUB ((STATE(rig)->vfo_list & (RIG_VFO_MAIN|RIG_VFO_SUB)) == (RIG_VFO_MAIN|RIG_VFO_SUB)) #define VFO_HAS_MAIN_SUB_ONLY ((!VFO_HAS_A_B) & VFO_HAS_MAIN_SUB) #define VFO_HAS_MAIN_SUB_A_B_ONLY (VFO_HAS_A_B & VFO_HAS_MAIN_SUB) #define VFO_HAS_A_B_ONLY (VFO_HAS_A_B & (!VFO_HAS_MAIN_SUB)) #define VFO_DUAL (RIG_VFO_MAIN_A|RIG_VFO_MAIN_B|RIG_VFO_SUB_A|RIG_VFO_SUB_B) -#define VFO_HAS_DUAL ((rig->state.vfo_list & VFO_DUAL) == VFO_DUAL) +#define VFO_HAS_DUAL ((STATE(rig)->vfo_list & VFO_DUAL) == VFO_DUAL) //! @endcond /** @@ -721,6 +723,12 @@ typedef enum { RIG_RESET_MASTER = (1 << 3) /*!< Master reset */ } reset_t; +typedef enum { + RIG_CLIENT_UNKNOWN, + RIG_CLIENT_WSJTX, + RIG_CLIENT_GPREDICT +} client_t; + /** * \brief VFO operation @@ -1133,15 +1141,19 @@ enum rig_parm_e { 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_SCREENSAVER = (1 << 8), /*!< \c SCREENSAVER -- rig specific timeouts */ - RIG_PARM_AFIF = (1 << 9), /*!< \c AFIF -- 0=AF audio, 1=IF audio -- see IC-7300/9700/705 */ + RIG_PARM_AFIF = (1 << 9), /*!< \c AFIF for USB -- 0=AF audio, 1=IF audio -- see IC-7300/9700/705 */ RIG_PARM_BANDSELECT = (1 << 10), /*!< \c BANDSELECT -- e.g. BAND160M, BAND80M, BAND70CM, BAND2CM */ - RIG_PARM_KEYERTYPE = (1 << 11) /*!< \c KEYERTYPE -- 0,1,2 or STRAIGHT PADDLE BUG */ + RIG_PARM_KEYERTYPE = (1 << 11), /*!< \c KEYERTYPE -- 0,1,2 or STRAIGHT PADDLE BUG */ + RIG_PARM_AFIF_LAN = (1 << 12), /*!< \c AFIF for LAN -- 0=AF audi , 1=IF audio -- see IC-9700 */ + RIG_PARM_AFIF_WLAN = (1 << 13), /*!< \c AFIF_WLAN -- 0=AF audio, 1=IF audio -- see IC-705 */ + RIG_PARM_AFIF_ACC = (1 << 14) /*!< \c AFIF_ACC -- 0=AF audio, 1=IF audio -- see IC-9700 */ }; enum rig_keyertype_e { RIG_KEYERTYPE_STRAIGHT = 0, RIG_KEYERTYPE_BUG = (1 << 0), - RIG_KEYERTYPE_PADDLE = (2 << 0) + RIG_KEYERTYPE_PADDLE = (1 << 1), + RIG_KEYERTYPE_UNKNOWN = (1 << 2) }; /** @@ -1660,7 +1672,8 @@ typedef enum { RIG_MTYPE_BAND, /*!< VFO/Band channel */ RIG_MTYPE_PRIO, /*!< Priority channel */ RIG_MTYPE_VOICE, /*!< Stored Voice Message */ - RIG_MTYPE_MORSE /*!< Morse Message */ + RIG_MTYPE_MORSE, /*!< Morse Message */ + RIG_MTYPE_SPLIT /*!< Split operations */ } chan_type_t; @@ -1849,6 +1862,22 @@ struct rig_spectrum_line unsigned char *spectrum_data; /*!< 8-bit spectrum data covering bandwidth of either the span_freq in center mode or from low edge to high edge in fixed mode. A higher value represents higher signal strength. */ }; +/** + * Config item for deferred processing + **/ +struct deferred_config_item { + struct deferred_config_item *next; + hamlib_token_t token; + char *value; // strdup'ed, must be freed +}; +typedef struct deferred_config_item deferred_config_item_t; + +struct deferred_config_header { + struct deferred_config_item *first; // NULL if none + struct deferred_config_item *last; +}; +typedef struct deferred_config_header deferred_config_header_t; + /** * \brief Rig data structure. * @@ -2491,6 +2520,8 @@ typedef hamlib_port_t port_t; #define ROTPORT(r) (&r->state.rotport) #define ROTPORT2(r) (&r->state.rotport2) #define STATE(r) (&r->state) +#define AMPSTATE(a) (&(a)->state) +#define ROTSTATE(r) (&(r)->state) /* Then when the rigport address is stored as a pointer somewhere else(say, * in the rig structure itself), the definition could be changed to * #define RIGPORT(r) r->somewhereelse @@ -2506,6 +2537,8 @@ typedef hamlib_port_t port_t; #define HAMLIB_ROTPORT(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT)) #define HAMLIB_ROTPORT2(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT2)) #define HAMLIB_STATE(r) ((struct rig_state *)rig_data_pointer(r, RIG_PTRX_STATE)) +#define HAMLIB_AMPSTATE(a) ((struct amp_state *)amp_data_pointer(a, RIG_PTRX_AMPSTATE)) +#define HAMLIB_ROTSTATE(r) ((struct rot_state *)rot_data_pointer(r, RIG_PTRX_ROTSTATE)) #endif typedef enum { @@ -2518,6 +2551,8 @@ typedef enum { RIG_PTRX_ROTPORT, RIG_PTRX_ROTPORT2, RIG_PTRX_STATE, + RIG_PTRX_AMPSTATE, + RIG_PTRX_ROTSTATE, // New entries go directly above this line==================== RIG_PTRX_MAXIMUM } rig_ptrx_t; @@ -2851,6 +2886,7 @@ struct rig_state { int post_ptt_delay; /*!< delay after PTT to allow for relays and such */ struct timespec freq_event_elapsed; int freq_skip; /*!< allow frequency skip for gpredict RX/TX freq set */ + client_t client; // New rig_state items go before this line ============================================ }; @@ -2865,7 +2901,7 @@ struct rig_state { */ struct rig_state_deprecated { /********* ENSURE YOU DO NOT EVER MODIFY THIS STRUCTURE *********/ - /********* It will remain forever to provide DLL backwards compatiblity ******/ + /********* It will remain forever to provide DLL backwards compatibility ******/ /* * overridable fields */ @@ -3025,7 +3061,7 @@ typedef int (*spectrum_cb_t)(RIG *, * \sa rig_set_freq_callback(), rig_set_mode_callback(), rig_set_vfo_callback(), * rig_set_ptt_callback(), rig_set_dcd_callback() */ -// Do NOT add/remove from this structure -- it will break DLL backwards compatiblity +// Do NOT add/remove from this structure -- it will break DLL backwards compatibility struct rig_callbacks { freq_cb_t freq_event; /*!< Frequency change event */ rig_ptr_t freq_arg; /*!< Frequency change argument */ @@ -3720,6 +3756,7 @@ extern HAMLIB_EXPORT_VAR(char) debugmsgsave[DEBUGMSGSAVE_SIZE]; // last debug m extern HAMLIB_EXPORT_VAR(char) debugmsgsave2[DEBUGMSGSAVE_SIZE]; // last-1 debug msg // debugmsgsave3 is deprecated extern HAMLIB_EXPORT_VAR(char) debugmsgsave3[DEBUGMSGSAVE_SIZE]; // last-2 debug msg +#define rig_debug_clear() { debugmsgsave[0] = debugmsgsave2[0] = debugmsgsave3[0] = 0; }; #ifndef __cplusplus #ifdef __GNUC__ // doing the debug macro with a dummy sprintf allows gcc to check the format string @@ -3729,10 +3766,10 @@ extern HAMLIB_EXPORT_VAR(char) debugmsgsave3[DEBUGMSGSAVE_SIZE]; // last-2 debu // Measuring elapsed time -- local variable inside function when macro is used #define ELAPSED1 struct timespec __begin; elapsed_ms(&__begin, HAMLIB_ELAPSED_SET); -#define ELAPSED2 rig_debug(RIG_DEBUG_VERBOSE, "%s%d:%s: elapsed=%.0lfms\n", spaces(rig->state.depth-1), rig->state.depth, __func__, elapsed_ms(&__begin, HAMLIB_ELAPSED_GET)); +#define ELAPSED2 rig_debug(RIG_DEBUG_VERBOSE, "%s%d:%s: elapsed=%.0lfms\n", spaces(STATE(rig)->depth), STATE(rig)->depth, __func__, elapsed_ms(&__begin, HAMLIB_ELAPSED_GET)); // use this instead of snprintf for automatic detection of buffer limit -#define SNPRINTF(s,n,...) { snprintf(s,n,##__VA_ARGS__);if (strlen(s) > n-1) fprintf(stderr,"****** %s(%d): buffer overflow ******\n", __func__, __LINE__); } +#define SNPRINTF(s,n,...) { if (snprintf(s,n,##__VA_ARGS__) >= (n)) fprintf(stderr,"***** %s(%d): message truncated *****\n", __func__, __LINE__); } extern HAMLIB_EXPORT(void) rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level, diff --git a/hamlib/riglist.h b/hamlib/riglist.h index 6723445..4a8fc3d 100644 --- a/hamlib/riglist.h +++ b/hamlib/riglist.h @@ -26,6 +26,8 @@ //! @cond Doxygen_Suppress // The rig model number is designed to fit in a 32-bit int +// As of 2024-07-14 we have 39 backends defined -- need to be careful about generating new ones +// Perhaps combine them under a MISC entry should work // As of 2020-02-18 we have 33 backends defined // With a max of 1000 models per backend we get total a model number range of 1001-33001 // This MAX was 100 prior to 2020-02-18 and Icom was close to running out of the 100 range @@ -143,6 +145,7 @@ #define RIG_MODEL_FT710 RIG_MAKE_MODEL(RIG_YAESU, 49) #define RIG_MODEL_FT9000OLD RIG_MAKE_MODEL(RIG_YAESU, 50) #define RIG_MODEL_Q900 RIG_MAKE_MODEL(RIG_YAESU, 51) +#define RIG_MODEL_PMR171 RIG_MAKE_MODEL(RIG_YAESU, 52) /* * Kenwood @@ -204,6 +207,7 @@ #define RIG_MODEL_FX4 RIG_MAKE_MODEL(RIG_KENWOOD,53) #define RIG_MODEL_THETIS RIG_MAKE_MODEL(RIG_KENWOOD, 54) #define RIG_MODEL_TRUSDX RIG_MAKE_MODEL(RIG_KENWOOD, 55) +#define RIG_MODEL_SDRCONSOLE RIG_MAKE_MODEL(RIG_KENWOOD, 56) /* * Icom @@ -292,6 +296,8 @@ #define RIG_MODEL_G90 RIG_MAKE_MODEL(RIG_ICOM, 88) /* Xiegu G90 */ #define RIG_MODEL_X5105 RIG_MAKE_MODEL(RIG_ICOM, 89) /* Xiegu X5105 -- G90 compatible */ #define RIG_MODEL_IC905 RIG_MAKE_MODEL(RIG_ICOM, 90) +#define RIG_MODEL_X6200 RIG_MAKE_MODEL(RIG_ICOM, 91) /* Xiegu X6200 */ +#define RIG_MODEL_IC7760 RIG_MAKE_MODEL(RIG_ICOM, 92) /* * Optoelectronics (CI-V) @@ -532,6 +538,14 @@ #define RIG_MODEL_SDR1000RFE RIG_MAKE_MODEL(RIG_FLEXRADIO, 2) #define RIG_MODEL_DTTSP RIG_MAKE_MODEL(RIG_FLEXRADIO, 3) #define RIG_MODEL_DTTSP_UDP RIG_MAKE_MODEL(RIG_FLEXRADIO, 4) +#define RIG_MODEL_SMARTSDR_A RIG_MAKE_MODEL(RIG_FLEXRADIO, 5) +#define RIG_MODEL_SMARTSDR_B RIG_MAKE_MODEL(RIG_FLEXRADIO, 6) +#define RIG_MODEL_SMARTSDR_C RIG_MAKE_MODEL(RIG_FLEXRADIO, 7) +#define RIG_MODEL_SMARTSDR_D RIG_MAKE_MODEL(RIG_FLEXRADIO, 8) +#define RIG_MODEL_SMARTSDR_E RIG_MAKE_MODEL(RIG_FLEXRADIO, 9) +#define RIG_MODEL_SMARTSDR_F RIG_MAKE_MODEL(RIG_FLEXRADIO, 10) +#define RIG_MODEL_SMARTSDR_G RIG_MAKE_MODEL(RIG_FLEXRADIO, 11) +#define RIG_MODEL_SMARTSDR_H RIG_MAKE_MODEL(RIG_FLEXRADIO, 12) /* * VEB Funkwerk Köpenick RFT @@ -582,7 +596,7 @@ #define RIG_MODEL_EB200 RIG_MAKE_MODEL(RIG_RS, 2) #define RIG_MODEL_XK2100 RIG_MAKE_MODEL(RIG_RS, 3) #define RIG_MODEL_EK89X RIG_MAKE_MODEL(RIG_RS, 4) - +#define RIG_MODEL_XK852 RIG_MAKE_MODEL(RIG_RS, 5) /* * Phillips/Simoco PRM80 */ @@ -671,6 +685,19 @@ #define RIG_BACKEND_ANYTONE "AnyTone" #define RIG_MODEL_ATD578UVIII RIG_MAKE_MODEL(RIG_ANYTONE, 1) +/* + * Motorola rigs + */ +#define RIG_MOTOROLA 38 +#define RIG_BACKEND_MOTOROLA "Motorola" +#define RIG_MODEL_MICOM2 RIG_MAKE_MODEL(RIG_MOTOROLA, 1) + +/* + * Commradio / AeroStream Communications + */ +#define RIG_COMMRADIO 39 +#define RIG_BACKEND_COMMRADIO "commradio" +#define RIG_MODEL_CTX10 RIG_MAKE_MODEL(RIG_COMMRADIO, 1) //! @endcond diff --git a/hamlib/rotator.h b/hamlib/rotator.h index 7468752..47285a5 100644 --- a/hamlib/rotator.h +++ b/hamlib/rotator.h @@ -215,6 +215,126 @@ typedef enum { */ #define ROT_MOVE_CW ROT_MOVE_RIGHT +/** + * \def ROT_MOVE_UP_LEFT + * \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_UP_CCW. + * + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, + * ROT_MOVE_RIGHT, ROT_MOVE_CW, ROT_MOVE_UP_CCW, + * ROT_MOVE_UP_RIGHT, ROT_MOVE_UP_CW, ROT_MOVE_DOWN_LEFT, ROT_MOVE_DOWN_CCW, + * ROT_MOVE_DOWN_RIGHT, ROT_MOVE_DOWN_CW + */ +#define ROT_MOVE_UP_LEFT (1<<5) + +/** + * \def ROT_MOVE_UP_CCW + * \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_UP_LEFT. + * + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, + * ROT_MOVE_RIGHT, ROT_MOVE_CW, ROT_MOVE_UP_LEFT, + * ROT_MOVE_UP_RIGHT, ROT_MOVE_UP_CW, ROT_MOVE_DOWN_LEFT, ROT_MOVE_DOWN_CCW, + * ROT_MOVE_DOWN_RIGHT, ROT_MOVE_DOWN_CW + */ +#define ROT_MOVE_UP_CCW ROT_MOVE_UP_LEFT + +/** + * \def ROT_MOVE_UP_RIGHT + * \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_UP_CW. + * + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, + * ROT_MOVE_RIGHT, ROT_MOVE_CW, ROT_MOVE_UP_LEFT, ROT_MOVE_UP_CCW, + * ROT_MOVE_UP_CW, ROT_MOVE_DOWN_LEFT, ROT_MOVE_DOWN_CCW, + * ROT_MOVE_DOWN_RIGHT, ROT_MOVE_DOWN_CW + */ +#define ROT_MOVE_UP_RIGHT (1<<6) + +/** + * \def ROT_MOVE_UP_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_UP_RIGHT. + * + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, + * ROT_MOVE_RIGHT, ROT_MOVE_CW, ROT_MOVE_UP_LEFT, ROT_MOVE_UP_CCW, + * ROT_MOVE_UP_RIGHT, ROT_MOVE_DOWN_LEFT, ROT_MOVE_DOWN_CCW, + * ROT_MOVE_DOWN_RIGHT, ROT_MOVE_DOWN_CW + */ +#define ROT_MOVE_UP_CW ROT_MOVE_UP_RIGHT + +/** + * \def ROT_MOVE_DOWN_LEFT + * \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_DOWN_CCW. + * + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, + * ROT_MOVE_RIGHT, ROT_MOVE_CW, ROT_MOVE_UP_LEFT, ROT_MOVE_UP_CCW, + * ROT_MOVE_UP_RIGHT, ROT_MOVE_UP_CW, ROT_MOVE_DOWN_CCW, + * ROT_MOVE_DOWN_RIGHT, ROT_MOVE_DOWN_CW + */ +#define ROT_MOVE_DOWN_LEFT (1 << 7) + + +/** + * \def ROT_MOVE_DOWN_CCW + * \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_DOWN_LEFT. + * + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, + * ROT_MOVE_RIGHT, ROT_MOVE_CW, ROT_MOVE_UP_LEFT, ROT_MOVE_UP_CCW, + * ROT_MOVE_UP_RIGHT, ROT_MOVE_UP_CW, ROT_MOVE_DOWN_LEFT, + * ROT_MOVE_DOWN_RIGHT, ROT_MOVE_DOWN_CW + */ +#define ROT_MOVE_DOWN_CCW ROT_MOVE_DOWN_LEFT + +/** + * \def ROT_MOVE_DOWN_RIGHT + * \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_DOWN_CW. + * + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, + * ROT_MOVE_RIGHT, ROT_MOVE_CW, ROT_MOVE_UP_LEFT, ROT_MOVE_UP_CCW, + * ROT_MOVE_UP_RIGHT, ROT_MOVE_UP_CW, ROT_MOVE_DOWN_LEFT, ROT_MOVE_DOWN_CCW, + * ROT_MOVE_DOWN_CW + */ +#define ROT_MOVE_DOWN_RIGHT (1 << 8) + +/** + * \def ROT_MOVE_DOWN_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_DOWN_RIGHT. + * + * \sa rot_move(), ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_CCW, + * ROT_MOVE_RIGHT, ROT_MOVE_CW, ROT_MOVE_UP_LEFT, ROT_MOVE_UP_CCW, + * ROT_MOVE_UP_RIGHT, ROT_MOVE_UP_CW, ROT_MOVE_DOWN_LEFT, ROT_MOVE_DOWN_CCW, + * ROT_MOVE_DOWN_RIGHT, + */ +#define ROT_MOVE_DOWN_CW ROT_MOVE_DOWN_RIGHT /** * \brief Rotator status flags @@ -508,6 +628,8 @@ struct rot_state { int current_speed; /*!< Current speed 1-100, to be used when no change to speed is requested. */ hamlib_port_t rotport; /*!< Rotator port (internal use). */ hamlib_port_t rotport2; /*!< 2nd Rotator port (internal use). */ + rig_ptr_t *pstrotator_handler_priv_data; + deferred_config_header_t config_queue; }; diff --git a/hamlib/rotlist.h b/hamlib/rotlist.h index d043a14..0e1e860 100644 --- a/hamlib/rotlist.h +++ b/hamlib/rotlist.h @@ -86,6 +86,8 @@ //! @endcond #define ROT_MODEL_DUMMY ROT_MAKE_MODEL(ROT_DUMMY, 1) #define ROT_MODEL_NETROTCTL ROT_MAKE_MODEL(ROT_DUMMY, 2) +#define ROT_MODEL_PSTROTATOR ROT_MAKE_MODEL(ROT_DUMMY, 3) +#define ROT_MODEL_SATROTCTL ROT_MAKE_MODEL(ROT_DUMMY, 4) /** @@ -700,6 +702,18 @@ //! @endcond #define ROT_MODEL_SAEBRTRACK ROT_MAKE_MODEL(ROT_SAEBRTRACK, 1) +/** + * \brief A macro that returns the model number of the SKYWATCHER backend. + * + * \def ROT_MODEL_SKYWATCHER + * + * The SKYWATCHER backend can be used with SKYWATCHER * rotators. + */ +//! @cond Doxygen_Suppress +#define ROT_SKYWATCHER 28 +#define ROT_BACKEND_SKYWATCHER "SkyWatcher" +//! @endcond +#define ROT_MODEL_SKYWATCHER ROT_MAKE_MODEL(ROT_SKYWATCHER, 1) /** * \brief Convenience type definition for a rotator model.