2002-05-28 21:28:15 +00:00
|
|
|
Hamlib - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com)
|
|
|
|
and Stephane Fillod 2000-2002
|
2000-07-18 21:09:51 +00:00
|
|
|
|
2000-08-20 21:52:27 +00:00
|
|
|
Take a look at http://sourceforge.net/projects/hamlib/
|
2002-05-28 21:28:15 +00:00
|
|
|
Here you will find a mail list, and the latest CVS releases.
|
2000-08-20 21:52:27 +00:00
|
|
|
|
2000-09-24 02:19:42 +00:00
|
|
|
See README for frontend/backend outline.
|
|
|
|
|
2000-07-18 21:09:51 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
The shared libs provide functions for both radio control,
|
|
|
|
and data retrieval from the radio.
|
2000-07-18 21:16:49 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
The structure of the libraries is as follows.
|
2000-07-18 21:16:49 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
(1) There is one frontend library "libhamlib" that
|
|
|
|
provides the generic API for user applications.
|
2000-07-18 21:16:49 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
(2) There are "n" backend libraries that "wrap"
|
|
|
|
rig specific communications inside frontend API.
|
2000-07-18 21:16:49 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
(3) Frontend lib loads (on demand) the appropriate
|
|
|
|
backend lib as required.
|
2000-07-18 21:19:57 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
Frontend Library
|
|
|
|
----------------
|
2000-07-18 21:19:57 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
libhamlib.so - frontend lib that provides generic API
|
|
|
|
for all RIG types. This is what Application
|
|
|
|
programmers will "see".
|
2000-08-20 21:52:27 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
Backend Examples are:
|
|
|
|
---------------------
|
|
|
|
|
|
|
|
1.libhamlib-yaesu.so will provide connectivity to Yaesu
|
|
|
|
FT 747GX Transceiver, FT 847 "Earth Station", etc. via a standard API.
|
2000-09-24 02:19:42 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
2. libhamlib-xxxx.so will provide connectivity to the Wiz-bang
|
|
|
|
moon-melter 101A (yikes..)
|
2000-08-20 21:52:27 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
Hamlib also enables developers to develop professional looking
|
|
|
|
GUI's towards a standard control library API, and they would not have
|
|
|
|
to worry about the underlying connection towards physical hardware.
|
|
|
|
|
|
|
|
Initially serial (RS232) connectivity will be handled, but
|
|
|
|
I expect that IP (and other) connectivity will follow afterwards.
|
2000-08-20 21:52:27 +00:00
|
|
|
|
2000-09-24 02:19:42 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
General Guidelines.
|
|
|
|
-------------------
|
2000-09-24 02:19:42 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
0. The top level directory looks like this.
|
|
|
|
|
|
|
|
[fillods@charybde hamlib]$ tree -d
|
|
|
|
|-- alinco
|
|
|
|
|-- aor
|
|
|
|
|-- c++
|
|
|
|
|-- debian
|
|
|
|
|-- doc
|
|
|
|
| |-- html
|
|
|
|
| |-- man
|
|
|
|
| `-- sgml
|
|
|
|
|-- dummy
|
|
|
|
|-- easycomm
|
|
|
|
|-- icom
|
|
|
|
| |-- lib
|
|
|
|
| `-- test
|
|
|
|
|-- include
|
|
|
|
| `-- hamlib
|
|
|
|
|-- jrc
|
|
|
|
|-- kachina
|
|
|
|
|-- kenwood
|
|
|
|
|-- kylix
|
|
|
|
| `-- tests
|
|
|
|
|-- lib
|
|
|
|
|-- libltdl
|
|
|
|
|-- pcr
|
|
|
|
|-- perl
|
|
|
|
| `-- Hamlib
|
|
|
|
|-- rpcrig
|
|
|
|
|-- rpcrot
|
|
|
|
|-- src
|
|
|
|
|-- tcl
|
|
|
|
|-- tentec
|
|
|
|
|-- tests
|
|
|
|
| `-- html
|
|
|
|
|-- uniden
|
|
|
|
|-- winradio
|
|
|
|
| `-- linradio
|
|
|
|
`-- yaesu
|
|
|
|
|
|
|
|
|
2002-09-10 06:43:05 +00:00
|
|
|
1. Building
|
|
|
|
1.1. Requirements
|
2002-05-28 21:28:15 +00:00
|
|
|
|
|
|
|
Hamlib is entirely developped using GNU tools, under various Linux systems.
|
|
|
|
Note that it is not restricted to Linux systems. We welcome anyone who
|
|
|
|
has access to a POSIXish system to port Hamlib to. Contact us for help.
|
|
|
|
|
|
|
|
That is, if you want to take part in the development of Hamlib,
|
|
|
|
you'll need at least the following tools:
|
|
|
|
|
2002-09-10 06:43:05 +00:00
|
|
|
* gcc or C99 compliant compiler
|
|
|
|
* GNU make (or any modern one, BSD's isn't)
|
|
|
|
* autoconf >= 2.50
|
|
|
|
* automake >= 1.5
|
|
|
|
* libtool >= 1.4.2
|
2002-05-28 21:28:15 +00:00
|
|
|
* cvs and ssh for connection to cvs.hamlib.sourceforge.net
|
|
|
|
Optional:
|
|
|
|
* g++
|
2002-09-10 06:43:05 +00:00
|
|
|
* swig >= 1.3.14 for the bindings
|
2002-05-28 21:28:15 +00:00
|
|
|
* perl devel
|
|
|
|
* tcl devel
|
|
|
|
* libgd devel
|
|
|
|
* RPC devel
|
|
|
|
|
|
|
|
Documentation:
|
|
|
|
* doxygen
|
|
|
|
* DocBook
|
|
|
|
|
|
|
|
However, if you just want to recompile the library, please refer
|
|
|
|
to the INSTALL file.
|
|
|
|
|
|
|
|
IMPORTANT: If autoconf or automake are installed on your system,
|
|
|
|
make sure they are matching *at least* the version shown above.
|
|
|
|
The Hamlib team is very interrested to hear from you, how Hamlib
|
|
|
|
builds and works on your system, especially on non-Linux system or
|
|
|
|
non-PC systems. We try to make Hamlib as portable as possible.
|
|
|
|
Please report in case of problems at hamlib-developer@lists.sourceforge.net
|
|
|
|
Patches are welcome too!
|
|
|
|
|
|
|
|
So far, Hamlib has been tested under the following systems:
|
|
|
|
(if your system is not present, please report to mailing list)
|
|
|
|
|
|
|
|
* Debian potato/sid i386
|
|
|
|
* Debian sid mipsel
|
|
|
|
* RedHat i386
|
|
|
|
* Slackware i386
|
|
|
|
* win32: builds under Cygwin, module loading still broken
|
|
|
|
* Some work started under Darwin (libtool problem)
|
|
|
|
|
|
|
|
|
|
|
|
The difference between building as a tester and a developer
|
|
|
|
is in the '--enable-maintainer-mode' option passed to configure.
|
|
|
|
This option will add new Makefile targets and dependencies.
|
|
|
|
|
|
|
|
./configure --config-cache --enable-maintainer-mode --disable-static
|
|
|
|
|
|
|
|
Tcl build, add this if needed:
|
|
|
|
--with-tcl=/usr/lib/tcl8.2
|
|
|
|
|
2002-09-10 06:43:05 +00:00
|
|
|
Note: C-shell users may have to run it and make through a bourne shell instead.
|
|
|
|
|
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
2. How to add a new backend
|
|
|
|
The rule is one backend per protocol family.
|
|
|
|
Try to share code between rigs of the same family, if applicable.
|
|
|
|
|
|
|
|
|
|
|
|
2.1. mkdir mybackend
|
|
|
|
Create a new subdir, of the name of the protocol backend.
|
|
|
|
NB: the directory MUST be the same as the backend name.
|
|
|
|
|
|
|
|
2.2. Add <mybackend> to the SUBDIRS variable in the topdir Makefile.am,
|
|
|
|
2.3. Add the backend name to the BACKEND_LIST variable in configure.ac
|
|
|
|
2.4. Add "mybackend/Makefile" in the AC_CONFIG_FILES macro at the bottom
|
|
|
|
of configure.ac
|
|
|
|
|
|
|
|
2.5. Create mybackend/Makefile.am, mybackend.c mybackend.h
|
|
|
|
Use 'dummy' backend as a template.
|
2002-09-10 06:43:05 +00:00
|
|
|
Here are commands for the bourne shell.
|
2002-05-28 21:28:15 +00:00
|
|
|
|
|
|
|
$ automake mybackend/Makefile
|
|
|
|
$ CONFIG_HEADERS= CONFIG_LINKS= \
|
|
|
|
CONFIG_FILES=mybackend/Makefile ./config.status
|
|
|
|
|
|
|
|
make in topdir to rebuild all
|
|
|
|
|
|
|
|
2.6. Commit your work:
|
|
|
|
$ cvs add mybackend
|
|
|
|
$ cd mybackend
|
|
|
|
$ cvs add Makefile.am mybackend.c mybackend.h
|
|
|
|
$ cvs commit -m "Initial release" Makefile.am mybackend.c mybackend.h
|
|
|
|
|
|
|
|
|
|
|
|
3. How to add a new model to and existing backend
|
|
|
|
3.1. make sure there's already a (unique) ID for the model to be added
|
|
|
|
in include/hamlib/riglist.h
|
|
|
|
3.2. locate the existing backend
|
|
|
|
3.3. Clone the most similar model in the backend
|
|
|
|
3.4. Add the new C file to the _SOURCES variable
|
|
|
|
of the backend's Makefile.am
|
|
|
|
3.5. Add "extern const struct rig_caps <mymodel>_caps;" to mybackend.h
|
|
|
|
3.6. In initrigs_<mybackend> of mybackend.c,
|
|
|
|
add "rig_register(&<mymodel>_caps);"
|
2000-09-24 02:19:42 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
3.7. Run make if you have dependencies, or the following to regenerate
|
|
|
|
the makefile.
|
|
|
|
$ automake mybackend/Makefile
|
|
|
|
$ CONFIG_HEADERS= CONFIG_LINKS= \
|
|
|
|
CONFIG_FILES=mybackend/Makefile ./config.status
|
2000-09-24 02:19:42 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
make in topdir to rebuild all
|
2000-09-24 02:19:42 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
3.8. Commit your work:
|
|
|
|
$ cd mybackend
|
|
|
|
$ cvs add mymodel.c
|
|
|
|
$ cvs commit -m "added <mymodel> to <mybackend>" \
|
|
|
|
Makefile.am mybackend.c mybackend.h mymodel.c
|
2000-09-24 02:19:42 +00:00
|
|
|
|
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
4. Read README.betatester to test the new backend/model.
|
|
|
|
Report to mailing list.
|
2000-09-24 02:19:42 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
5. Basic functions: set_freq and set_mode. set_vfo would be great.
|
2000-08-20 21:52:27 +00:00
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
6. C code examples.
|
|
|
|
|
|
|
|
A C code snippet to connect to a FT847 and set
|
|
|
|
the frequency of the main VFO to 439,700,000 Hz ,
|
|
|
|
using FM as the required mode, would look something
|
|
|
|
like this. The error checking is removed for simplicity.
|
|
|
|
|
|
|
|
See tests/testrig.c
|
2000-08-20 21:52:27 +00:00
|
|
|
|
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
7. Where are the GUI's?
|
2000-08-20 21:52:27 +00:00
|
|
|
|
|
|
|
"Build it and they will come ..."
|
|
|
|
|
|
|
|
Seriously, I am hoping the API's will provide a solid
|
|
|
|
framework for some cool GUI development. I would like
|
|
|
|
to see some GTK apps that use the hamlib API's
|
|
|
|
so they can be used by end users as a nice part of the
|
|
|
|
Ham shack.
|
2002-05-28 21:28:15 +00:00
|
|
|
Starting point: kontakt, grig
|
2000-08-20 21:52:27 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2002-05-28 21:28:15 +00:00
|
|
|
Stephane Fillod f8cfe
|
2000-09-24 02:19:42 +00:00
|
|
|
Frank Singleton vk3fcs/km5ws
|
|
|
|
|