From f696123a3bac480c2c6582728d224f8604166f55 Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Wed, 26 Jan 2022 17:56:58 -0600 Subject: [PATCH] Revert "Deprecate hamlib_port_t to hamlib_port_t_deprecated" This reverts commit 401e718d607de87ceb4ce90de60c80bc13ae4971. --- include/hamlib/amplifier.h | 3 +- include/hamlib/rig.h | 96 ++++---------------------------------- include/hamlib/rotator.h | 7 ++- src/amplifier.c | 4 -- src/conf.c | 2 - src/iofunc.c | 14 +++--- src/rig.c | 14 +----- src/rotator.c | 7 --- 8 files changed, 22 insertions(+), 125 deletions(-) diff --git a/include/hamlib/amplifier.h b/include/hamlib/amplifier.h index c89eabcfc..15624e6b2 100644 --- a/include/hamlib/amplifier.h +++ b/include/hamlib/amplifier.h @@ -280,7 +280,7 @@ struct amp_state /* * non overridable fields, internal use */ - hamlib_port_t_deprecated ampport_deprecated; /*!< Amplifier port (internal use). Deprecated */ + hamlib_port_t ampport; /*!< Amplifier port (internal use). */ int comm_state; /*!< Comm port state, opened/closed. */ rig_ptr_t priv; /*!< Pointer to private amplifier state data. */ @@ -290,7 +290,6 @@ struct amp_state gran_t level_gran[RIG_SETTING_MAX]; /*!< Level granularity. */ gran_t parm_gran[RIG_SETTING_MAX]; /*!< Parameter granularity. */ - hamlib_port_t ampport; /*!< Amplifier port (internal use). */ }; diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 817ef8e70..dc23b541b 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -2225,7 +2225,9 @@ typedef struct hamlib_port { } parm; /*!< Port parameter union */ int client_port; /*!< client socket port for tcp connection */ RIG *rig; /*!< our parent RIG device */ - int asyncio; /*!< enable asynchronous data handling if true -- async collides with python keyword so _async is used */ + +#ifdef ASYNC_BUG + int async; /*!< enable asynchronous data handling if true */ #if defined(_WIN32) hamlib_async_pipe_t *sync_data_pipe; /*!< pipe data structure for synchronous data */ hamlib_async_pipe_t *sync_data_error_pipe; /*!< pipe data structure for synchronous data error codes */ @@ -2235,84 +2237,11 @@ typedef struct hamlib_port { int fd_sync_error_write; /*!< file descriptor for writing synchronous data error codes */ int fd_sync_error_read; /*!< file descriptor for reading synchronous data error codes */ #endif +#endif } hamlib_port_t; - - -typedef struct hamlib_port_deprecated { - 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 */ - - 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 */ - short retry; /*!< Maximum number of retries, 0 to disable */ - short flushx; /*!< If true flush is done with read instead of TCFLUSH - MicroHam */ - - char pathname[HAMLIB_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 */ - int client_port; /*!< client socket port for tcp connection */ - RIG *rig; /*!< our parent RIG device */ - - int asyncio; /*!< enable asynchronous data handling if true -- async collides with python keyword so _async is used */ -#if defined(_WIN32) - hamlib_async_pipe_t *sync_data_pipe; /*!< pipe data structure for synchronous data */ - hamlib_async_pipe_t *sync_data_error_pipe; /*!< pipe data structure for synchronous data error codes */ -#else - int fd_sync_write; /*!< file descriptor for writing synchronous data */ - int fd_sync_read; /*!< file descriptor for reading synchronous data */ - int fd_sync_error_write; /*!< file descriptor for writing synchronous data error codes */ - int fd_sync_error_read; /*!< file descriptor for reading synchronous data error codes */ -#endif -} hamlib_port_t_deprecated; //! @endcond #if !defined(__APPLE__) || !defined(__cplusplus) -typedef hamlib_port_t_deprecated port_t_deprecated; typedef hamlib_port_t port_t; #endif @@ -2425,20 +2354,19 @@ struct rig_cache { * * It is NOT fine to move fields around as it can break share library offset * As of 2021-03-03 vfo_list is the last known item being reference externally - * So any additions or changes to this structure must be at the end of the structure + * So any additions or changes to this structure must be after vfo_list. */ struct rig_state { - /********* ENSURE ANY NEW ITEMS ARE ADDED AT BOTTOM OF THIS STRUCTURE *********/ /* * overridable fields */ // moving the hamlib_port_t to the end of rig_state and making it a pointer // this should allow changes to hamlib_port_t without breaking shared libraries // these will maintain a copy of the new port_t for backwards compatiblity - // to these offsets -- note these must stay until a major version update is done like 5.0 - hamlib_port_t_deprecated rigport_deprecated; /*!< Rig port (internal use). */ - hamlib_port_t_deprecated pttport_deprecated; /*!< PTT port (internal use). */ - hamlib_port_t_deprecated dcdport_deprecated; /*!< DCD port (internal use). */ + // to these offsets -- note these must stay until a major version update is done + 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 */ @@ -2523,7 +2451,6 @@ struct rig_state { volatile unsigned int snapshot_packet_sequence_number; -#define ASYNC_BUG 1 volatile int multicast_publisher_run; void *multicast_publisher_priv_data; volatile int async_data_handler_thread_run; @@ -2533,11 +2460,6 @@ struct rig_state { #ifdef HAVE_PTHREAD pthread_mutex_t mutex_set_transaction; #endif - hamlib_port_t rigport; /*!< Rig port (internal use). */ - hamlib_port_t pttport; /*!< PTT port (internal use). */ - hamlib_port_t dcdport; /*!< DCD port (internal use). */ - /********* DO NOT ADD or CHANGE anything (or than to rename) ABOVE THIS LINE *********/ - /********* ENSURE ANY NEW ITEMS ARE ADDED AFTER HERE *********/ }; //! @cond Doxygen_Suppress diff --git a/include/hamlib/rotator.h b/include/hamlib/rotator.h index 626d63b20..b4448a094 100644 --- a/include/hamlib/rotator.h +++ b/include/hamlib/rotator.h @@ -497,16 +497,15 @@ struct rot_state { /* * non overridable fields, internal use */ - hamlib_port_t_deprecated rotport_deprecated; /*!< Rotator port (internal use). Deprecated */ - hamlib_port_t_deprecated rotport2_deprecated; /*!< 2nd Rotator port (internal use). Deprecated */ + hamlib_port_t rotport; /*!< Rotator port (internal use). */ + hamlib_port_t rotport2; /*!< 2nd Rotator port (internal use). */ 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. */ - hamlib_port_t rotport; /*!< Rotator port (internal use). */ - hamlib_port_t rotport2; /*!< 2nd Rotator port (internal use). */ + /* etc... */ }; diff --git a/src/amplifier.c b/src/amplifier.c index c77693719..1de1ab2a7 100644 --- a/src/amplifier.c +++ b/src/amplifier.c @@ -277,10 +277,6 @@ AMP *HAMLIB_API amp_init(amp_model_t amp_model) return NULL; } } - // Now we have to copy our new rig state hamlib_port structure to the deprecated one - // Clients built on older 4.X versions will use the old structure - // Clients built on newer 4.5 versions will use the new structure - memcpy(&->state.ampport_deprecated, &->state.ampport, sizeof(amp->state.ampport_deprecated)); return amp; } diff --git a/src/conf.c b/src/conf.c index 60aa54058..0a3895035 100644 --- a/src/conf.c +++ b/src/conf.c @@ -1032,8 +1032,6 @@ static int frontend_get_conf2(RIG *rig, token_t token, char *val, int val_len) return -RIG_EINVAL; } - memcpy(&rs->rigport_deprecated,&rs->rigport,sizeof(hamlib_port_t_deprecated)); - return RIG_OK; } diff --git a/src/iofunc.c b/src/iofunc.c index 3b71de2e1..564b20ea1 100644 --- a/src/iofunc.c +++ b/src/iofunc.c @@ -222,7 +222,7 @@ int HAMLIB_API port_open(hamlib_port_t *p) #endif #ifdef ASYNC_BUG - if (p->asyncio) + if (p->async) { status = create_sync_data_pipe(p); if (status < 0) @@ -932,7 +932,7 @@ static int port_wait_for_data(hamlib_port_t *p, int direct) int HAMLIB_API write_block_sync(hamlib_port_t *p, const unsigned char *txbuffer, size_t count) { - if (!p->asyncio) + if (!p->async) { return -RIG_EINTERNAL; } @@ -942,7 +942,7 @@ int HAMLIB_API write_block_sync(hamlib_port_t *p, const unsigned char *txbuffer, int HAMLIB_API write_block_sync_error(hamlib_port_t *p, const unsigned char *txbuffer, size_t count) { - if (!p->asyncio) + if (!p->async) { return -RIG_EINTERNAL; } @@ -1095,7 +1095,7 @@ static int read_block_generic(hamlib_port_t *p, unsigned char *rxbuffer, size_t rig_debug(RIG_DEBUG_VERBOSE, "%s called, direct=%d\n", __func__, direct); #ifdef ASYNC_BUG - if (!p->asyncio && !direct) + if (!p->async && !direct) #else if (!direct) #endif @@ -1192,7 +1192,7 @@ static int read_block_generic(hamlib_port_t *p, unsigned char *rxbuffer, size_t int HAMLIB_API read_block(hamlib_port_t *p, unsigned char *rxbuffer, size_t count) { #ifdef ASYNC_BUG - return read_block_generic(p, rxbuffer, count, !p->asyncio); + return read_block_generic(p, rxbuffer, count, !p->async); #else return read_block_generic(p, rxbuffer, count, 1); #endif @@ -1236,7 +1236,7 @@ static int read_string_generic(hamlib_port_t *p, static int minlen = 1; // dynamic minimum length of rig response data #ifdef ASYNC_BUG - if (!p->asyncio && !direct) + if (!p->async && !direct) #else if (!direct) #endif @@ -1412,7 +1412,7 @@ int HAMLIB_API read_string(hamlib_port_t *p, int expected_len) { #ifdef ASYNC_BUG - return read_string_generic(p, rxbuffer, rxmax, stopset, stopset_len, flush_flag, expected_len, !p->asyncio); + return read_string_generic(p, rxbuffer, rxmax, stopset, stopset_len, flush_flag, expected_len, !p->async); #else return read_string_generic(p, rxbuffer, rxmax, stopset, stopset_len, flush_flag, expected_len, 1); #endif diff --git a/src/rig.c b/src/rig.c index 8a0d2b6c2..429be0dfa 100644 --- a/src/rig.c +++ b/src/rig.c @@ -463,7 +463,7 @@ RIG *HAMLIB_API rig_init(rig_model_t rig_model) rs->comm_state); rs->rigport.type.rig = caps->port_type; /* default from caps */ #if defined(ASYNC_BUG) && defined(HAVE_PTHREAD) - rs->rigport.asyncio = 0; + rs->rigport.async = 0; #endif switch (caps->port_type) @@ -677,12 +677,6 @@ RIG *HAMLIB_API rig_init(rig_model_t rig_model) return (NULL); } } - // Now we have to copy our new rig state hamlib_port structure to the deprecated one - // Clients built on older 4.X versions will use the old structure - // Clients built on newer 4.5 versions will use the new structure - memcpy(&rig->state.rigport_deprecated, &rig->state.rigport, sizeof(rig->state.rigport_deprecated)); - memcpy(&rig->state.pttport_deprecated, &rig->state.pttport, sizeof(rig->state.pttport_deprecated)); - memcpy(&rig->state.dcdport_deprecated, &rig->state.dcdport, sizeof(rig->state.dcdport_deprecated)); return (rig); } @@ -727,7 +721,7 @@ int HAMLIB_API rig_open(RIG *rig) #if defined(ASYNC_BUG) && defined(HAVE_PTHREAD) // Enable async data only if it's enabled through conf settings *and* supported by the backend rs->async_data_enabled = rs->async_data_enabled && caps->async_data_supported; - rs->rigport.asyncio = rs->async_data_enabled; + rs->rigport.async = rs->async_data_enabled; #endif if (strlen(rs->rigport.pathname) > 0) @@ -1083,7 +1077,6 @@ int HAMLIB_API rig_open(RIG *rig) async_data_handler_stop(rig); #endif port_close(&rs->rigport, rs->rigport.type.rig); - memcpy(&rs->rigport_deprecated,&rs->rigport,sizeof(hamlib_port_t_deprecated)); rs->comm_state = 0; RETURNFUNC(status); } @@ -1222,7 +1215,6 @@ int HAMLIB_API rig_close(RIG *rig) if (rs->pttport.fd != rs->rigport.fd) { port_close(&rs->pttport, RIG_PORT_SERIAL); - memcpy(&rs->rigport_deprecated,&rs->rigport,sizeof(hamlib_port_t_deprecated)); } } @@ -1238,7 +1230,6 @@ int HAMLIB_API rig_close(RIG *rig) if (rs->pttport.fd != rs->rigport.fd) { port_close(&rs->pttport, RIG_PORT_SERIAL); - memcpy(&rs->rigport_deprecated,&rs->rigport,sizeof(hamlib_port_t_deprecated)); } } @@ -1279,7 +1270,6 @@ int HAMLIB_API rig_close(RIG *rig) if (rs->dcdport.fd != rs->rigport.fd) { port_close(&rs->dcdport, RIG_PORT_SERIAL); - memcpy(&rs->rigport_deprecated,&rs->rigport,sizeof(hamlib_port_t_deprecated)); } break; diff --git a/src/rotator.c b/src/rotator.c index 519999724..22bde02e6 100644 --- a/src/rotator.c +++ b/src/rotator.c @@ -330,10 +330,6 @@ ROT *HAMLIB_API rot_init(rot_model_t rot_model) return NULL; } } - // Now we have to copy our new rig state hamlib_port structure to the deprecated one - // Clients built on older 4.X versions will use the old structure - // Clients built on newer 4.5 versions will use the new structure - memcpy(&rot->state.rotport_deprecated, &rot->state.rotport, sizeof(rot->state.rotport_deprecated)); return rot; } @@ -470,7 +466,6 @@ int HAMLIB_API rot_open(ROT *rot) return -RIG_EINVAL; } - memcpy(&rot->state.rotport_deprecated, &rot->state.rotport, sizeof(rot->state.rotport_deprecated)); add_opened_rot(rot); @@ -575,8 +570,6 @@ int HAMLIB_API rot_close(ROT *rot) rs->comm_state = 0; - memcpy(&rot->state.rotport_deprecated, &rot->state.rotport, sizeof(rot->state.rotport_deprecated)); - return RIG_OK; }