As the rigctld and rotctld programs are actually user programs and
installed in ${prefix}/bin, it was erroneous to install the associated
manual pages into the man8 directory. Correct this error going forward
and install them into man1 with the other manual pages.
As Hamlib now restores the rig auto information state (AI) on exit
there is now a need to disable that functionality so that rigctl can
be used to set/reset AI mode on the rig explicitly.
A new public API function 'rig_no_restore_ai()' is also added that
allows any client to disable this auto AI restore functionality if
required. Most clients should do nothing as restoring AI state is a
good thing.
This means that rigctl & rigctld now work with default arguments on a
modern Windows machine with dual stack and localhost being [::1] as
the first interface returned by getaddrinfo().
Try all the interfaces return by DNS lookups to establish a connection
or listening port. Handle Windows network errors correctly so that
meaningful messages are printed.
The rigctl program now accepts IPv6 numeric addresses in the portname
field like [<addr>}:<port> for example the IPv6 loopback on port 4531
would be [::1]:4531.
This means that rigctl & rigctld now work with default arguments on a
modern Windows machine with dual stack and localhost being [::1] as
the first interface returned by getaddrinfo().
Try all the interfaces return by DNS lookups to establish a connection
or listening port. Handle Windows network errors correctly so that
meaningful messages are printed.
The rigctl program now accepts IPv6 numeric addresses in the portname
field like [<addr>}:<port> for example the IPv6 loopback on port 4531
would be [::1]:4531.
Richard Sahw, KF5OIM, reported a failure in the C++ test when attempting
to build an RPM package in a clean environment. This patch amends the
LD_LIBRARY_PATH in the generated shell scripts in the c++ and tests
directories.
This allows repeatable regression testing where a command has a finite
"settling" time. This will probably be of most use in the related
rotctl command set.
In order to write regression tests before making disruptive changes to
back ends I have added a new command to the rigctl parser which is '-'
that causes it to read commands from stdin until they are exhausted.
The commands must be white space separated and can include comments
from a '#' character until the end of the current line.
Clean up various left over commented lines from dlopen to single
libhamlib transition. Remove unneeded configure variables.
Correct minor inconsistencies in Makefile.am files.
Define a new variable, READLINE_LIBS, so that only programs that offer
Readline support are linked against it.
Fix various compilation warnings and errors in test files revealed with
'make check' on MinGW.
Define rig and rotor backends to (mostly) be built in alphabetical
order.
LIBUSB_LIBS was not passed to the LDADD variable for the Hamlib test
utilities. This fix permits the user invoking 'configure' to specify a
static libusb to include the libusb symbols in libhamlib:
./configure LIBUSB_LIBS="/usr/lib/i386-linux-gnu/libusb.a"
Note that the actual path will vary from system to system.
Revise the preprocessor conditional test for MinGW variables. Tested on
all of my MinGW installations. The prior test was broken by MinGW 3.0
on Debian Unstable.
Use the system gettaddrinfo function when possible as before. Tested on
GNU, Cygwin, MinGW on Linux, and MinGW on Windows. Under MinGW the
replacement getaddrinfo is used. Perhaps this is an area for
investigation to be certain MinGW really doesn't supply getaddrinfo.
This reverts some of the patches from Remi Chateauneu in commit
60019c9. This fixes build issues encountered building the Windows
binary daily snapshots.
Enabled static library build by default at configure time.
Fixed pthread library linking for the ars backend on MinGW.
MinGW does not natively support the POSIX sleep() function so we have
had an override that was a part of the GR_PWIN32 macro and included in
the generated config.h file. When compiling for Windows on POSIX using
MinGW, Autotools will detect sleep() and set HAVE_SLEEP which prevented
the substitution from being included in the source. Adding a test for
_WIN32 (set by MinGW's gcc) then caused a warning from src/network.c on
POSIX about winsock2.h needing to be included before windows.h. As
config.h needed to be included first, the solution to break out the
substitution that includes windows.h into its own file. This patch
provides that solution and allows the code to compile cleanly on POSIX,
using MinGW on both POSIX and Windows, and on Cygwin.
The Automake manual makes it clear that certain user variables such as
CC, CFLAGS, CXXFLAGS, CPPFLAGS, and so on are to be preserved for the
user running configure. This patch cleans up such assignments and
assures that PTHREAD_CFLAGS and so forth are applied to those targets
that require it.
Trying to run the pthread enabled binaries on W2k resulted in an error
dialog with the text, "The procedure entry point freeaddrinfo could not be
located in ws2_32.dll". A Microsoft support page
(http://support.microsoft.com/kb/955045) hints that when 'ws2tcpip.h' is
included that 'wspiapi.h' should be included as well. Since MinGw
includes both files, this patch corrects the runtime error on W2k
The AX_PTHREAD macro sets the PTHREAD_LIBS variable, however we were not
providing this variable to the needed *_LDFLAGS variable. With the
addition of PTHREAD_LIBS, rigctld and rotctld are now multi-threaded on
MS Windows. Tested on Windows 2000, Windows XP, and Windows 7.
Setting LD_LIBRARY_PATH for testcpp and testrig in the generated test
shell scripts corrects a long-standing bug that broke 'make check'.
Add Hamlib_design.eps to allow 'make dvi' to succeed when running
'make distcheck'.
Document Readline and history additions to rotctl along with new
-i/--read-history and -I/--save-history options.
Document use of ROTCTL_HIST_DIR environment variable to set an alternate
path for the .rotctl_history file.
Other minor edits.
As commands from a previous session may not be desired, make reading the
history file at rotctl start and writing to it at rotctl close optional
by use of the -i/--read_history or -I/--save-history options.
Compilation is conditional on having Readline and Readline History
support detected at build system configuration time.
History is stored in '$HOME/.rotctl_history' by default. An alternate
path may be specified by setting the ROTCTL_HIST_DIR environment
variable:
$ ROTCTL_HIST_DIR=~/.rotctl rotctl -iI
will temporarily set the history directory to /home/USER/.rotctl and
create .rotctl_history if it does not exist. If the file cannot be read
or written a warning message will be given on stderr.
Implement first cut at storing and recalling history. At this point
history is retained for the current session only.
History is stored as complete command lines even if values are entered
at separate prompts. Readline allows editing and even deleting recalled
history lines.
Initial implementation of Readline input handling. Only if 'configure'
finds Readline will it be enabled and when enabled it will only be used
by rotctl in interactive mode. Passing rotator commands from the rotctl
command line and rotctld use the original input handling which has not
been modified.
Document Readline and history additions to rigctl along with new
-i/--read-history and -I/--save-history options.
Document use of RIGCTL_HIST_DIR environment variable to set an alternate
path for the .rigctl_history file.
Other minor edits.
As commands from a previous session may not be desired, make reading the
history file at rigctl start and writing to it at rigctl close optional
by use of the -i/--read_history or -I/--save-history options.
Compilation is conditional on having Readline and Readline History
support detected at build system configuration time.
History is stored in '$HOME/.rigctl_history' by default. An alternate
path may be specified by setting the RIGCTL_HIST_DIR environment
variable:
$ RIGCTL_HIST_DIR=~/.rigctl rigctl -iI
will temporarily set the history directory to /home/USER/.rigctl and
create .rigctl_history if it does not exist. If the file cannot be read
or written a warning message will be given on stderr.
Implement first cut at storing and recalling history. At this point
history is retained for the current session only.
History is stored as complete command lines even if values are entered
at separate prompts. Readline allows editing and even deleting recalled
history lines.
Initial implementation of Readline input handling. Only if 'configure'
finds Readline will it be enabled and when enabled it will only be used
by rigctl in interactive mode. Passing rig commands from the rigctl
command line and rigctld use the original input handling which has not
been modified.
The rigctl and rigctld programs support a so far undocumented feature of
being able to query supported modes in set_mode and set_split_mode,
Funcs in set_func and get_func, Levels in set_level and get_level, Parms
in set_parm and get_parm, as well as the vfo_op, scan, ans set_trn
functions. The query may be used to get a list of supported tokens for
a given function by a rig backend.
In response to a long standing request from Tor, N4OGW, and others, RIT
and XIT are added as members for the rig_set/get_func() members.
"RIT"/"XIT" have been added as tokens. The dummy rig backend and
testrig.c have been updated for these new functions.
Applications should test a backend with the rig_has_set/get_func() and
test for RIG_FUNC_RIT or RIG_FUNC_XIT. A non-zero result indicates
these functions are implemented by a given rig backend. It will take
some time for all backends to migrate to this new implementation. Once
implemented, RIT or XIT should be set to '0' to 'clear' the value
without deactivating the rig's RIT/XIT function. The dummy/dummy.c file
can be used as a simple guide for backend authors implementing this
behavior.
If libgd-dev is not installed, an Automake conditional will disable the
rigmatrix.html target in tests/Makefile. Optionally, this target may
also be disabled by use of the '--disable-html-matrix' option passed to
the configure script. By default the configure script will enable the
target if the libgd development files are found and disable it when they
are not.
Cleaned up M4sh syntax for variable quoting, replaced shell 'if'
conditionals with M4sh AS_IF macro and shell 'case' with AS_CASE macro.
Properly quoted macro variables. Added comments to configure.ac
describing actions, commented out obsolete macros, commented obsolecent
macros, and added comments for major sections.
Corrected a Mingw linker error on the .EXE files adding
'--enable-auto-import' to their LD flags. Testing this commit on win32
shows that rigctld is now working properly. Will need to port this to
the Stable branch and test.
Replaced older local macros with newer replacements from GNU Autoconf
archive.
The output from [rig|rot]ctl[d] using the -l|--list option is now sorted
by model number in ascending order. Document it.
(cherry picked from commit 45def7bbcf)
Implemented hash table to temporarily store and sort the rig models by ID
to print the --list by model numbers. Hash is implemented using
uthash.h, see http://uthash.sourceforge.net/
Suppressed rig backend register output by setting rig_debug_level to 0
for list output.
Removed riglist definition of RPC backend.
Implemented hash table to temporarily store and sort the rot models by ID
to print the --list by model numbers. Hash is implemented using
uthash.h, see http://uthash.sourceforge.net/
Suppressed rot backend register output by setting rig_debug_level to 0
for list output.
Removed rotlist definition of RPC backend.
Implement several simple shell scripts to exercise various aspects of
Hamlib. The previous implementation relied on the installation of
DejaGNU and the tests/config and tests/*.test directories were not
distributed. Also, later Autotools documenation seems to suggest that
DejaGNU is to be replaced by Autotest. The generation and use of simple
scripts was chosen to provide a usable check target until Autotest can
be supported.
Various strncpy operations could result in a port pathname that is not a
NULL terminated string as the allowed string length is the same size as
the buffer per the strncpy manual page. This is corrected by assuring
that the allowed length is FILPATHLEN - 1.
The -r, -p , and -d options could result in a port pathname that is
not a NULL terminated string as the allowed string length is the same
size as the buffer per the strncpy manual page. This is corrected by
assuring that the allowed length is FILPATHLEN - 1.
Sockets under Windows require specific startup and cleanup calls.
Besides, the standard fdopen() does no work on socket descriptors,
and has to be worked around thanks to _open_osfhandle().
Avoid null pointer segfault when -C param is specified with no '=' e.g.
"rigctl -C foo".
Thanks to Charles Suprin <hamaa1vs@gmail.com> for the report.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@3058 7ae35d74-ebe9-4afe-98af-79ac388436b8
More rewrites to consolidate separate set_ and get_ functions into rig_cmd
Added support for handling \dump_caps in a limited fashion
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@2821 7ae35d74-ebe9-4afe-98af-79ac388436b8
clients to query the state of the -b|--block or -o|--vfo options from rigctld
Cleaned up strings in dumpcaps.c to remove duplicates to facilite
their use as key:value pairs
Updated rigctld man page for new commands
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@2820 7ae35d74-ebe9-4afe-98af-79ac388436b8
Changed vfo to txvfo = RIG_VFO_TX in set_split_mode(), get_split_mode()
RIG_VFO_TX is "split or uplink vfo";
This may/will break code, maybe we want a vfo option instead?
Terry KJ4EED
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@2499 7ae35d74-ebe9-4afe-98af-79ac388436b8
* DTMF send/recv and get_dcd
* dump_state for internal use by netrigctl backend
* factorize the "END" marker for rigctld, with proprer flushing/error handling
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@2393 7ae35d74-ebe9-4afe-98af-79ac388436b8
introduce PRIll (printf format) and SCNll (scanf) in misc.h.
This needs to have config.h included beforehand.
* do likewise with freq_t type (double) in rig.h
FREQFMT is deprecated.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1903 7ae35d74-ebe9-4afe-98af-79ac388436b8
Update:
rotator.h and locator.c--rewrote dec2*() and *2dec()
functions to use a sign flag. Further tweaked qrb()
for proper output.
testloc.c--rewrote as necessary to support changes in
locator.c
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1574 7ae35d74-ebe9-4afe-98af-79ac388436b8
Update:
src/locator.c -- Improved handling of very tiny distances
in qrb() as well as a new formula for azimuth.
tests/testloc.c -- extended distance output display for
very to 6 decimal places which is useful for showing the
distance of 12 digit locators.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1572 7ae35d74-ebe9-4afe-98af-79ac388436b8
Updated:
rotator.h -- new declarations dec2dmmm() and dmmm2dec()
locator.c -- new functions dec2dmm() and dmm2dec() also
reworked document comments
testloc.c -- support for new dec2dmm() and dmmm2dec()
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1535 7ae35d74-ebe9-4afe-98af-79ac388436b8
Updated:
locator.c -- fixed "zero bug" in dec2dms() and dms2dec()
rotator.h -- changed dec2dms() and dms2dec() parameter,
degrees to float and minutes to double
testloc.c -- modified to support changed parameters
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1534 7ae35d74-ebe9-4afe-98af-79ac388436b8
Update:
locator.c -- added argument int pair_count to
longlat2locator() and changed longlat2locator() from
void to type int return. Changed *seconds argument in
dms2dec() and dec2dms() from type int to type double.
rotator.h -- function prototypes to match above.
testloc.c -- modified to support changes in locator.c
Added additional command line parameter, locator-length
which is expected after the first locator and before the
optional second locator.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1517 7ae35d74-ebe9-4afe-98af-79ac388436b8