Showing preview only (739K chars total). Download the full file or copy to clipboard to get everything.
Repository: wuxx/AntRunner
Branch: master
Commit: 56c7ade7e9e8
Files: 42
Total size: 709.8 KB
Directory structure:
gitextract_dder1ce_/
├── LICENSE
├── README.md
├── README_cn.md
├── firmware/
│ ├── flash_dump.sh
│ ├── flash_erase.sh
│ └── flash_write.sh
├── software/
│ └── hamlib-w64-4.5~git/
│ ├── AUTHORS.txt
│ ├── AntRunner_Start_Serial.bat
│ ├── AntRunner_Start_WiFi.bat
│ ├── COPYING.LIB.txt
│ ├── COPYING.txt
│ ├── ChangeLog.txt
│ ├── LICENSE.txt
│ ├── README.betatester.txt
│ ├── README.txt
│ ├── README.w64-bin.txt
│ ├── THANKS.txt
│ ├── doc/
│ │ ├── ampctl.1.html
│ │ ├── ampctld.1.html
│ │ ├── hamlib-primer.7.html
│ │ ├── hamlib-utilities.7.html
│ │ ├── hamlib.7.html
│ │ ├── rigctl.1.html
│ │ ├── rigctlcom.1.html
│ │ ├── rigctld.1.html
│ │ ├── rigmem.1.html
│ │ ├── rigsmtr.1.html
│ │ ├── rigswr.1.html
│ │ ├── rotctl.1.html
│ │ └── rotctld.1.html
│ ├── include/
│ │ └── hamlib/
│ │ ├── amplifier.h
│ │ ├── amplist.h
│ │ ├── config.h
│ │ ├── rig.h
│ │ ├── rig_dll.h
│ │ ├── riglist.h
│ │ ├── rotator.h
│ │ └── rotlist.h
│ └── lib/
│ ├── gcc/
│ │ └── libhamlib.dll.a
│ └── msvc/
│ └── libhamlib-4.def
└── structure/
├── L-Bracket-42-v1.2.STL
└── Rotator-Bottom-v0.2.STL
================================================
FILE CONTENTS
================================================
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{one line to give the program's name and a brief idea of what it does.}
Copyright (C) {year} {name of author}
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
{project} Copyright (C) {year} {fullname}
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
================================================
FILE: README.md
================================================
# AntRunner
[中文](./README_cn.md)
* [Introduce](#introduce)
* [Feature](#feature)
* [Specification](#specification)
* [How to Use](#how-to-use)
* [System Detail](#system-detail)
* [Gpredict](#gpredict)
* [Hamlib](#hamlib)
* [Look4Sat](#look4sat)
* [SDR#](#sdr)
* [How to Get One](#how-to-get-one)
* [Reference](#reference)
## Introduce
AntRunner is a portable antenna rotator designed and made by MuseLab(Another model we designed is the [AntRunner-Pro](https://github.com/wuxx/AntRunner-Pro), which is suitable for fixed installation and long-term operation). It can be used for real-time automatic tracking of satellites with corresponding open source software which is available on Windows/Linux/Mac/RaspberryPi/Android. The rotator and the host computer can communicate via wired (serial port) or wireless (Wifi 2.4G). It can install various types of antennas (usually Yagi antennas), support 360-degree azimuth and 180-degree elevation control, and can support antennas up to 10KG. It can be powered by a 12V battery or by a fast charging power bank with a 12V fast charging trigger cable. It’s easy to carry as its weight is relatively light and very convenient to use in the wild for HAM.



## Feature
- full Azimuth and elevation angle tracking
- Support Windows/Linux/RaspberryPi/Android
- Support wired serial port control
- Support wireless WiFi 2.4G control
- 12V power supply, convenient for field erection
- Easy disassembly and assembly
## Specification
- Rotation Limit: AZ: 0 - 360°; EL: 0-180°
- Max Load: 10KG
- Backlash: AZ:1° EL:1°
- Weight: 2.5KG
- Rotator Diameter x Height: 120mmØ x 65mm (H)
- Support Material: 5mm/10mm Acrylic
## How to Use
### Windows
#### 0 Antenna installation
Install the antenna on the U-shaped bracket of the rotator through the U-shaped hoop, and pay attention to install it at the center of gravity of the antenna to make the operation more stable.
#### 1 Rotator adjustment
Before powering on, you need to adjust the azimuth of the rotator to true north (azimuth angle of 0 degrees), and the pitch to be horizontal (pitch angle of 0 degrees). This step can be adjusted through the mobile compass APP.
#### 2 Power up
Use the 12V power supply to power on the rotator, and connect the rotator and PC through the TYPE-C cable. After the normal connection, a serial port will appear in the device manager, as shown in the figure.

#### 3 Start Hamlib
Enter the Hamlib directory, there is a batch script in the directory, and the script is a command, as shown below, you need to manually edit the script to modify the serial port number. Since the serial port number is assigned by the system, the serial number is different for different systems, so you need to use a text editor to manually change the serial port number before running.
```
rotctld.exe -vvvvv -m 2401 -r COMx
```
Modify COMx to the actual serial port number that appears in the device manager, save the script, and double-click to run it.



#### 4 Start Gpredict
Double-click gpredict.exe to open the Gpredict program

##### 4.1 Longitude and latitude configuration
First, you need to configure the latitude and longitude of your region, select Edit -> General -> Ground Stations -> Add new, and configure your local latitude, longitude and altitude on the page that comes out.

##### 4.2 Satellite configuration
You need to add the satellites you want to track to the list, click the inverted triangle on the upper right, select Configure, and add the satellites you want to track to the small window on the right in the window that appears.

##### 4.3 Rotator configuration
Create a new rotator device, select Edit -> Interfaces -> Rotators -> Add New, and configure it as shown

##### 4.4 Rotator test
After configuring the rotator device, you can perform a preliminary test on the rotator. Click the inverted triangle on the upper right and select Antenna Control to enter the antenna control page.
select the newly created grbltrk, click Engage to initialize the rotator, and then configure the azimuth and pitch angles. After configuring the rotator, it will respond immediately and return the current angle value in real time.



##### 4.5 satellite tracking
Select the satellite to be tracked in Target, such as ISS, click Track, the rotator will start tracking the satellite in real time, if the satellite is not in entry, it will adjust the pitch angle to 0 degrees, and the azimuth angle to the angle when the satellite enters, wait for the satellite to enter, The radar map on the left also shows the satellite's inbound trajectory and the current rotator position.


### Raspberry
Since Gpredict is also supported under Linux, it can be directly run and used in the Raspberry Pi. The operation steps are basically the same, and will not be repeated here.
here is how to start the Hamlib
```
rotctld -vvvvv -m 2401 -r /dev/ttyUSB0
```
### Android
#### Look4Sat
Look4Sat wireless control is currently supported, please refer to this repo [Look4Sat-AntRunner-Controller](https://github.com/wuxx/Look4Sat-AntRunner-Controller)
## System Detail
This section is a detailed description of the technical principle. Those who are not interested can ignore the description in this section and go directly to the actual operation chapter.
### Rotator Motor Control
The bottom chip of the rotary controller uses ESP32, and the firmware running on it is GRBL, which was originally an open source CNC control firmware, and was first run on the ATmega328P chip (a low-end single-chip microcomputer with a main frequency of only 16MHz, SRAM The capacity is 2KB, and the Flash storage capacity is 32KB), while ESP32 is a WiFi chip launched by Espressif Information Technology. With 40nm process, dual-core 32-bit MCU, 2.4GHz dual-mode Wi-Fi and Bluetooth chip, the main frequency is up to 240MHz, the SRAM capacity is 520KB, and the Flash capacity is up to 16MB. It supports more and stronger features, so the [Grbl_ESP32 version](https://github.com/bdring/Grbl_Esp32) transplanted by the open source community is used.
It not only supports conventional serial port control, but also has a complete set of WEBUI, which can be manually controlled and configured through the WEBUI, and can also be controlled through the telnet 22 port. (Of course, an HTTP request can also be constructed to realize control from the WEB 80 port), since ESP32 supports Bluetooth, the motor control can also be achieved theoretically through Bluetooth. Since WiFi communication is more universal, the speed and stability of communication are also relatively high. Better, and the software protocol stack based on TCP/IP makes communication more stable and reliable, so the current implementation of wireless control is based on WiFi.
By default it creates its own wireless network SSID `GRBL_ESP` with default password `12345678` you can connect. You can connect and use WebUI to change, or you can change through serial commands to e.g. connect to your existing WiFi network. See the [Grbl_Esp32 wiki](https://github.com/bdring/Grbl_Esp32/wiki/Setting-up-the-Wifi-Network) for more instructions.
Note 1: The control command of the Grbl system is generally called G-code, which is a simple command system also used for e.g. CNC or 3D printing. For example: "G0 X0 Y5" means to move the current position to the coordinates [0mm, 5mm]. But with AntRunner [360º = 40mm](https://github.com/Hamlib/Hamlib/blob/e9fb733dae0e7acb2897850787ebbdcf2520e37c/rotators/grbltrk/grbltrk.c#L220) (both X Azimuth and Y Elevation), so to move to 45º elevation `G0 Y5` or to move azimuth by one degree `G91 G0 X0.111 G90` (relative and then restore absolute).
Grbl also has its own `$…` command system. For more:
* [Grbl FAQ for G-Code](https://github.com/gnea/grbl/wiki/Frequently-Asked-Questions#where-are-g-codes-defined-what-does-each-of-them-do) points to http://linuxcnc.org/docs/html/gcode.html
* Grbl `$…` commands: https://github.com/gnea/grbl/wiki/Grbl-v1.1-Commands
* Grbl ESP32 has additional settings: https://github.com/bdring/Grbl_Esp32/wiki/Settings
### Gpredict
Gpredict (https://github.com/csete/gpredict) is lead by Alexandru Csete (call sign oz9aec) is an open source real-time satellite tracking and orbit forecasting software that can track an unlimited number of satellites and display their positions and other data in lists, tables, maps, radars, etc. It can also predict the future time through a satellite and provide you with detailed information. In addition, it can connect to a variety of commonly used radio stations, SDR equipment and a variety of antenna rotators. The main use scenario of AntRunner is to cooperate with Gpredict. Real-time tracking control.
Since it is an open source project based on GPL, Gpredict is still developing under the impetus of the community, and it is believed that more functions and more convenient features will be implemented in the future.
### Hamlib
Hamlib (https://hamlib.github.io/) is a control library for radios and rotators based on the LGPL open source protocol, supporting Windows/Linux. Gpredict mentioned above can control various types of radio equipment and rotators. The above are all controlled by Hamlib. It can be understood that Hamlib is the middle layer between Gpredict and the actual hardware. Hamlib provides a unified control interface to Gpredict, and itself realizes the operation of complex hardware devices. In actual operation, Hamlib runs in the background as a separate task, which receives requests and sends responses through TCP port 4533. For example: Gpredict sends "p 30 60" through TCP port 4533, which means to adjust the current rotator azimuth to 30 degrees, the pitch angle is adjusted to 60 degrees, and the actual hardware operation is performed by Hamlib. Gpredict does not need to care what type of rotator is used, just specify the model of the rotator when Hamlib starts.
Note: AntRunner's driver is implemented in Hamlib, and has been incorporated into the official Hamlib repository (https://github.com/Hamlib/Hamlib), merge node: https://github.com/Hamlib/Hamlib/pull/1032. Just take the latest version of Hamlib or any release [version 4.5](https://github.com/Hamlib/Hamlib/releases/tag/4.5) or later.
### Look4Sat
Look4Sat (https://github.com/rt-bishop/Look4Sat) is an Android-based open source satellite tracking software implemented by Arty Bishop. The page is concise and easy to use. The latest submission also supports the control of the rotator. The real-time display of the gyroscope is supported during the tracking process, which can easily align the satellite. At present, other similar satellite prediction software does not support this simple use method, and it is widely used in the current HAM.
Look4Sat's control of the rotator is sent over the network, for example "\set_pos 30.0 60.0" means to adjust the current spinner azimuth to 30 degrees and pitch to 60 degrees.
Since Hamlib is not currently supported on the Android side, an additional hardware device is required to control through Look4Sat. Here, I designed a small system based on ESP32-C3 to convert network requests into actual GRBL commands and send them to the GRBL firmware to achieve orientation and The control of pitch is equivalent to implementing a simple "Hamlib" by itself. check the project here [Look4Sat-AntRunner-Controller](https://github.com/wuxx/Look4Sat-AntRunner-Controller)
### SDR#
SDR# is a popular SDR control application. It is simple and convenient to use. It supports a variety of common SDR devices, supports a variety of plug-in functions, and can be linked with Gpredict. At the same time, Gpredict can also support wireless devices and rotators. : Use SDR equipment such as RTL-SDR, and use Gpredict to track satellites at the same time, gpredict can send Doppler frequency to SDR# through the corresponding plug-in in SDR# for real-time adjustment, and Gpredict can control the rotator in real time for tracking. Other plug-ins in SDR# can analyze and record the received signal waveform to realize the linkage of the whole system.
### How to Get One
Some guys ask me if they could buy AntRunner rotator, so I made some AntRunner prototypes. Interested friends can place an order in my tindie store: https://www.tindie.com/products/johnnywu/the-antrunner-rotator/
## Reference
- Gpredict (https://github.com/csete/gpredict)
- Hamlib (https://hamlib.github.io/)
- Look4Sat (https://github.com/rt-bishop/Look4Sat)
- sdr# (https://airspy.com/download/)
- Look4Sat-AntRunner-Controller (https://github.com/wuxx/Look4Sat-AntRunner-Controller)
================================================
FILE: README_cn.md
================================================
# AntRunner 天线旋转器
[English](./README.md)
* [介绍](#介绍)
* [特性](#特性)
* [规格](#规格)
* [使用教程](#使用教程)
* [系统原理说明](#系统原理说明)
* [参考](#参考)
## 介绍
AntRunner是MuseLab设计实现的便携式天线旋转器,支持360度方位角和180度俯仰角的控制,可承重最大10KG的天线,支持平台 Windows/Linux/Mac/RaspberryPi/Android,配合对应的开源上位机可实现卫星的实时自动指向跟踪,支持有线(串口)与无线( Wifi 2.4G)2种控制方式,支持多种规格的天线(一般为八木天线),安装方便。使用12V电池供电,可利用充电宝+12V快充诱骗线直接供电,整体重量较轻,便于携带,精心设计的多种功能,更方便各位HAM在野外的架台使用。



## 特性
- 方位角和仰角全角度跟踪
- 支持平台 Windows/Linux/RaspberryPi/Android
- 支持有线串口控制
- 支持无线WiFi 2.4G 控制
- 12V电源供电,方便野外架设
- 拆装方便
## 规格
- 旋转限制: AZ: 0 - 360°; EL: 0-180°
- 最大负载: 10KG
- 齿隙: AZ:1° EL:1°
- 重量: 3.5KG
- 尺寸: 120mmØ x 65mm (H)
i
## 使用教程
### Windows
#### 0 天线安装
将天线通过U型抱箍安装至旋转器U型支架上,注意尽量安装至天线的重心处,以使运行更加平稳。
#### 1 旋转器调整
上电之前需要将旋转器的方位角调整到正北方(方位角0度),俯仰调整为水平(俯仰角0度),此步骤可通过手机指南针APP配合完成调整。
#### 2 接线上电
使用12V电源将旋转器上电,并通过TYPE-C线连接旋转器和PC,正常连接后设备管理器中会出现一个串口,如图所示

#### 3 启动Hamlib
进入Hamlib目录,目录中有一批处理脚本,脚本中为一条命令, 如下所示,需要手动编辑一下脚本,修改其中的串口号。由于串口编号为系统分配,不同系统编号有所不同,故需要使用文本编辑器手动更改串口号再运行
```
rotctld.exe -vvvvv -m 2401 -r COMx
```
将COMx修改成设备管理器中出现的实际串口号即可,保存脚本,双击运行即可。



#### 4 启动Gpredict
双击gpredict.exe,即可打开Gpredict程序

##### 4.1 经纬度配置
首先需要配置你所在的地区的经纬度,选择 Edit -> General -> Ground Stations -> Add new,在出来的页面中配置好自己当地的经纬度、高度即可。

##### 4.2 卫星配置
需要将欲跟踪的卫星添加至列表中,点击右上方的倒三角,选择 Configure, 在出现中的窗口中将欲跟踪卫星添加至右侧小窗口内即可

##### 4.3 旋转器配置
新建一个旋转器设备,选择 Edit -> Interfaces -> Rotators -> Add New,并根据如图所示配置

##### 4.4 旋转器测试
配置完旋转器之后,即可对旋转器进行初步的测试,点击右上方的倒三角,选择Antennna Control,即可进入旋转器控制页面,
Device选择刚刚新建的grbltrk, 点击Engage初始化旋转器,然后即可配置方位角和俯仰角,配置完旋转器会即时响应,并会实时返回当前的角度值。



##### 4.5 卫星跟踪
在Target中选择需要跟踪的卫星如ISS,点击Track,旋转器即会开始实时跟踪卫星,若卫星未入境,则会调整俯仰角为0度,方位角为卫星入境时的角度,等待卫星入境,左方的雷达图中亦会显示卫星的入境轨迹以及当前的旋转器位置。


### 树莓派
由于Linux下亦支持Gpredict,树莓派中可直接运行使用,操作步骤基本相同,在此不再赘述。
Hamlib启动命令如下
```
rotctld -vvvvv -m 2401 -r /dev/ttyUSB0
```
### Android
#### Look4Sat
目前已经实现通过Look4Sat控制,需要额外的控制板,具体参考此项目[Look4Sat-AntRunner-Controller](https://github.com/wuxx/Look4Sat-AntRunner-Controller)
注意:由于Look4Sat源码始终处于迭代开发中,适配代码可能过时,可能需要手动修改控制源码适配最新的Look4Sat
## 系统原理说明
本节为技术原理细节描述,不感兴趣的朋友可直接忽略本节说明,直接前往实际操作章节使用。
### 旋转器电机控制原理说明
旋转控制器底层芯片使用ESP32,其上运行的固件为GRBL,这原本是一款开源的CNC控制固件,最早运行于ATmega328P芯片上(一款性能较为低端,主频仅为16MHz的单片机,SRAM容量为2KB,Flash存储容量为32KB),而ESP32则是乐鑫信息科技推出的一颗WiFi芯片。拥有40nm工艺、双核32位MCU、2.4GHz双模Wi-Fi和蓝牙芯片、主频高达240MHz,SRAM容量为520KB,Flash容量最高则可达16MB, 较高的性能,丰富的外设使得其可以支持更多更强的特性功能,故这里使用的是开源社区移植的[GRBL版本](https://github.com/bdring/Grbl_Esp32)。其不仅支持常规的串口控制,而且有一套完善的WEBUI,可通过WEBUI进行手动控制、配置,也可通过telnet 22端口实现网络控制。(当然,也可以构造HTTP请求从WEB 80端口实现控制),由于ESP32支持蓝牙,理论上也可通过蓝牙实现电机的控制,由于WiFi的通信更加具有普适性,通信的速度、稳定性也相对更好一些,且基于TCP/IP的软件协议栈使得通信也更加稳定可靠,故当前无线控制的实现基于WiFi实现。
注1:GRBL系统的控制命令一般称之为gcode,是一种简单的指令系统,例如:"G0, X0, Y5" 表明将当前位置移动到坐标[0mm, 5mm]处。
### Gpredict上位机说明
Gpredict (https://github.com/csete/gpredict)为 Alexandru Csete (呼号为
oz9aec)发起并主导的开源的实时卫星跟踪和轨道预报软件,它可以跟踪无限数量的卫星,并以列表,表格,地图,雷达等方式显示他们的位置和其他数据。它还可以通过一个卫星预测未来的时间, 并为您提供详细资料,另外它还可以对接多种常用的电台、SDR设备和多种的天线旋转器,AntRunner的主要使用场景即为和Gpredict配合实现实时的跟踪控制。
由于其是基于GPL的开源项目,当前Gpredict仍然在社区的推动下不断的发展,相信后续会有更多的功能、更方便的特性实现。
### Hamlib中间件说明
Hamlib (https://hamlib.github.io/) 为基于LGPL开源协议的无线电和旋转器的控制库,支持Windows/Linux, 上面提到Gpredict可控制各种规格型号的无线电设备和旋转器,实际上都是通过Hamlib实现控制的,可以理解成Hamlib是Gpredict和实际的硬件的中间一层,Hamlib向Gpredict提供统一的控制接口,其自身则实现复杂的各类硬件设备的操作。在实际运行时,Hamlib为一个单独的任务运行在后台,其过TCP 4533端口接收请求并发送响应,例如:Gpredict通过4533 TCP端口发送“p 30 60”则意为将当前旋转器方位角调整为30度,俯仰角调整为60度,由Hamlib来进行实际的硬件操作,Gpredict并不需要关心使用的什么规格型号的旋转器,只需在Hamlib启动时候指定旋转器的型号即可。
注:AntRunner的驱动即实现在Hamlib中,并已经合入到官方Hamlib仓库 (https://github.com/Hamlib/Hamlib) 取Hamlib的最新版本即可。合入点:https://github.com/Hamlib/Hamlib/pull/1032
### Look4Sat说明
Look4Sat (https://github.com/rt-bishop/Look4Sat) 为 Arty Bishop实现的基于Android的开源卫星跟踪软件,页面简洁使用,最新的提交也支持了旋转器的控制,其主要特色是在卫星跟踪过程中支持陀螺仪的实时显示,可以方便的对准卫星,目前其他同类卫星预测软件均不支持这种简洁的使用方式,在当前HAM中较为广泛使用。
Look4Sat对于旋转器的控制通过网络发送,例如"\set_pos 30.0 60.0" 表明将当前旋转器方位角调整为30度,俯仰角调整为60度。
由于Android端当前并不支持Hamlib,所以通过Look4Sat控制需要一个额外的硬件设备,这里自己基于ESP32-C3设计了一个小系统,用于将网络请求转换成实际的GRBL命令发送给GRBL固件实现方位和俯仰的控制,其作用相当于自己实现了一个简单的"Hamlib"。
### SDR#
SDR# 是目前流行的SDR控制上位机,使用简单方便,支持多种常见的SDR设备,支持多种插件功能,可以和Gpredict实现联动,同时Gpredict又可支持控制无线设备和旋转器,故可以实现:使用SDR设备例如RTL-SDR,同时用Gpredict跟踪卫星,gpredict可以通过SDR#中的对应插件向SDR#发送多普勒频率进行实时调整,同时Gpredict又可实时的控制旋转器进行跟踪。SDR#中的其他插件则可以对接收到的信号波形进行分析、录制等,实现全系统的联动。
## 参考
================================================
FILE: firmware/flash_dump.sh
================================================
#!/bin/bash
esptool.py -b 115200 -p /dev/ttyUSB0 read_flash 0x0 0x400000 flash_image.bin
================================================
FILE: firmware/flash_erase.sh
================================================
#!/bin/bash
esptool.py -b 115200 -p /dev/ttyUSB0 erase_flash
================================================
FILE: firmware/flash_write.sh
================================================
#!/bin/bash
ESPTOOL=esptool.py
#SER_PORT=COM32 #on windows with git-bash
SER_PORT=/dev/ttyUSB0
#SER_PORT=/dev/ttyUSB1
#SER_PORT=/dev/ttyACM0
BAUDRATE=460800
IMAGE=flash_image_20220821.bin
echo "write [$IMAGE]"
${ESPTOOL} \
--chip esp32 \
-p ${SER_PORT} \
-b ${BAUDRATE} \
--before=default_reset \
--after=hard_reset \
write_flash \
--flash_mode dio \
--flash_freq 40m \
--flash_size 4MB \
0x0 ${IMAGE}
================================================
FILE: software/hamlib-w64-4.5~git/AUTHORS.txt
================================================
This file is licensed to you under the license specified in the included file
`COPYING'. Look there for further details.
Authors of the Hamlib API, original code:
Frank Singleton and Stephane Fillod
Contributors:
(if any is missing, please email the current maintainer).
For any reason, if you prefer not to appear in this list, please let me know.
M: Current maintainer
C: Contributors
W: Web-page with status/info
S: Status, one of the following:
Supported: Someone is actually bothered to look after this.
Maintained: Someone actually looks after it.
Odd Fixes: It has a maintainer but they don't have time to do
much other than throw the odd patch in. See below..
Orphan: No current maintainer [but maybe you could take the
role as you write your new code].
Obsolete: Old code. Something tagged obsolete generally means
it has been replaced by a better system and you
should be using that.
Backends:
[adat: ADT-200A]
M: Frank Goenninger DG1SBG
[alinco: DX77-T]
M: Ben Coleman NJ8J
[aor]
C: testing by John Ronan
[aor: AR-7030]
M: Friedrich Melchert DC9RP
[aor: AR-7030 Plus]
M: Larry Gadallah VE6VQ
[aor: AR-3030]
M: Tristan Mills
[aor: AR-8200]
M: Rob Walker
[drake]
M: Mark J. Fine
[icom: ic7000]
M: Kent Hill, AD7AI
[icom: ic7200]
M: James Watson, HZ1JW
[icom: ic718]
M: Chuck Gilkes, WD0FCL/4
[icom: icr7000]
M: Chuck Hemker, N2POR
[icom: ic735]
C: Darren Hatcher, G0WCW
[icom: ic751]
C: Lars E. Pettersson, SM6RPZ
[icom: icr75]
M: Mark J. Fine
[icom: OptoScan]
M: Michael Smith, KE4RJQ
[icom]
M: Stephane Fillod, F8CFE
[jrc]
M: Mark J. Fine
C: Manual and testing by Bob Parnass, AJ9S
[kenwood]
M: Joop Stakenborg, PG4I
C: Alessandro Zummo, IZ1PRB
[kenwood: K2]
M: Nate Bargmann, N0NB
M: Brian Mury, VE7NGR
C: Leigh Klotz, WA5ZNU
[kenwood: K3]
M: Nate Bargmann, N0NB
C: Alexander Sack
[kenwood: TS-480SAT]
M: Juergen Rinas, DC3BW
[kenwood: TS-570]
M: Rob Frohne, KL7NA
C: Thomas Beierlein, DL1JBE
[kenwood: R-5000]
M: Mark J. Fine
[kenwood: tmd700]
M: Charles Suprin, AA1VS
[kenwood: thg71,tmv7,tmd700]
C: Thierry Leconte, F4DWV
[kenwood: thg71,tmv7]
M: Andrew McNamara
[kenwood: thd7]
M: Stephane Fillod, F8CFE
[kenwood: ts-850]
C: Rob Frohne, KL7NA
[kit: Si570 AVR-USB]
C: Fabrice, F4AVI
[kit: Elektor SDR]
C: John Nogatch, AC6SL
[pcr: pcr100,pcr1000]
M: Alessandro Zummo, IZ1PRB
C: Darren Hatcher, G0WCW
[tentec]
M:
C: testing by James Chance, N3TKD
[tentec: tt516]
M: James Nykiel
[tentec: tt538]
M: Mike Markowski AB3AP
[tentec: tt550]
M: Ken Koster, N7IPB
[tentec: tt565]
M: Martin Ewing AA6E
[tentec: Argonaut V]
C: Dave Freese, W1HKJ
[tentec: tt585]
C: Bert, KG4BEC
[tentec: rx331]
M: Berndt Josef Wulf, VK5ABN
[uniden: 245xlt]
M: Eric Cottrell WB1HBU
[winradio]
M:
C: Pascal Brisset
[yeasu: ft1000d]
M: Serge Pashenkov
[yeasu: ft100]
M: Alex V Flinsch, KC2IVL
[yaesu: ft736]
C: Ron Patterson, W6FM
[yaesu: ft747]
M:
C: Chris Bryant, G3WIE
C: Frank Singleton, VK3FCS
[yaesu: ft767gx]
M: Steve Conklin, AI4QR
[yaesu: ft817]
M: Chris Karpinsky, AA1VL
[yaesu: ft847]
M: Jim Jerzycke, KQ6EA
C: Frank Singleton, VK3FCS
[yaesu: ft920, ft890, ft900]
M: Nate Bargmann, N0NB
[yaesu: ft980]
M: Wolfgang Buesser, DK1BW
[yaesu: ft990]
M: Berndt Josef Wulf, VK5ABN
[yaesu: ft950,newcat]
M: Terry Embry, KJ4EED
[yaesu: VR-5000]
M: Jacob Heder
[yaesu: FT-600]
C: Kārlis Millers
[CM108 GPIO PTT]
M: Andrew Errington, ZL3AME
Rotators
[celestron]
M: Stephane Fillod, F8CFE
C: Eric/N3KQX
[easycomm]
M: Luc Langehegermann, LX2GT
C: Francois Retief
[fodtrack]
M: Luc Langehegermann, LX2GT
[amsat/if-100]
M: Stephane Fillod, F8CFE
C: Patrick Strasser, OE6PSE
[heathkit:HD 1780 Intellirotor]
M: Rob Frohne, KL7NA
[rotorez]
M: Nate Bargmann, N0NB
[spid]
M: Norvald H. Ryeng, LA6YKA
[m2]
M: Magne Mæhre, LA1BFA
C: Ron Patterson, W6FM
[ars]
M: Stephane Fillod, F8CFE
C: Chris Bryant, G3WIE
[ts7400]
M: Øystein Hårberg, LA7LKA
[indi]
M: Norbert Varga, HA2NON
[Frontend]
M: Stephane Fillod, F8CFE
[src/locator.c]
M: Dave Hines, M1CXW
C: Stephane Fillod, F8CFE
C: Nate Bargmann, N0NB
[test utilities]
M: Stephane Fillod, F8CFE
C: Nate Bargmann, N0NB
C: Nirgal Vourgère
[platform: FreeBSD]
M: Diane Bruce, VA3DB
[platform: NetBSD]
M: Berndt Josef Wulf, VK5ABN
[platform: win32]
M: Stephane Fillod, F8CFE
C: VB & testing by Darren Hatcher, G0WCW
C: VB.NET wrapper by Michael Benz
[packaging: debian]
M: Kamal Mostafa, KA6MAL
M: Jaime Robles, EA4TV
C: Joop Stakenborg, PG4I
[packaging: RPM]
M: Alexandru Csete, OZ9AEC
M: Joop Stakenborg, PG4I
[Web site: http://www.hamlib.org]
M: Joop Stakenborg, PG4I
M: Stephane Fillod, F8CFE
M: Nate Bargmann, N0NB
E-mail addresses:
Frank Singleton, VK3FCS, <vk3fcs (at) ix.netcom.com>
Stephane Fillod, F8CFE, <fillods (at) users.sourceforge.net>
Pascal Brisset <pab (at) users.sourceforge.net>
Nate Bargmann, N0NB, <n0nb (at) arrl.net>
Chris Karpinsky, AA1VL, <aa1vl (at) arrl.net>
Joop Stakenborg, PG4I, <pg4i (at) amsat.org>
Bob Parnass, AJ9S, <parnass (at) megsinet.net>
Francois Retief, <fgretief (at) sun.ac.za>
James Chance, N3TKD, <n3tkd (at) n3tkd.net>
Chuck Hemker, N2POR, <n2por (at) amsat.org>
Alex V Flinsch, KC2IVL, <avflinsch (at) verizon.net>
Chuck Gilkes, WD0FCL/4, <chuck (at) webbasset.com>
Dale E. Edmons, KD7ENI, <dedmons (at) comcast.net>
Michael Smith, KE4RJQ <james.m.smith (at) earthlink.net>
Berndt Josef Wulf, VK5ABN <wulf (at) ping.net.au>
Mark J. Fine <mark.fine (at) fineware-swl.com>
Jim Jerzycke, KQ6EA <kq6ea (at) amsat.org>
Alexandru Csete OZ9AEC <alexc (at) phys.au.dk>
Diane Bruce, VA3DB <db (at) db.net>
Dave Hines, M1CXW, <hamlib (at) dph.fluff.org>
Darren Hatcher, G0WCW, <g0wcw (at) hatcher.org.uk>
Ben Coleman, NJ8J, <nj8j (at) benshome.net>
Serge Pashenkov <serge (at) gnode.org>
Lars E. Pettersson SM6RPZ <lars (at) homer.se>
Thomas Beierlein, DL1JBE, <y32kn (at) users.sourceforge.net>
Kent Hill, AD7AI, <fuzzballz (at) comcast.net>
Dave Freese, W1HKJ, <w1hkj (at) w1hkj.com>
Rob Frohne, KL7NA, <frohro (at) wwc.edu>
Steve Conklin, AI4QR, <steve (at) conklinhouse.com>
Martin Ewing, AA6E, <aa6e (at) arrl.net>
Terry Embry, KJ4EED, <mrtembry (at) users.sourceforge.net>
Alessandro Zummo, IZ1PRB <alessandro.zummo (at) towertech.it>
Norvald H. Ryeng, LA6YKA <norvald (at) ryeng.name>
Larry Gadallah, VE6VQ <lgadallah (at) gmail.com>
Kamal Mostafa, KA6MAL, <kamal (at) whence.com>
Jaime Robles, EA4TV, <jaime (at) debian.org>
Wolfgang Buesser, DK1BW, <wolfgang.buesser (at) web.de>
Magne Mæhre, LA1BFA, <magne (at) samfundet.no>
Charles Suprin, AA1VS, <hamaa1vs (at) gmail.com>
Robert Steinhäußer, DL1NC, <dl1nc (at) users.sourceforge.net>
James Watson, HZ1JW, <jawatson (at) users.sourceforge.net>
Juergen Rinas, DC3BW, <jrinas (at) users.sourceforge.net>
Kamal Mostafa, KA6MAL, <kamal (at) whence.com>
Roger, <roger-linux (at) users.sourceforge.net>
Tristan Mills, <t_mills (at) users.sourceforge.net>
Terry Dawson, VK2KTJ, <terry (at) users.sourceforge.net>
Øystein Hårberg, LA7LKA, <oystein.haarberg (at) netrunner.nu>
Alexander Sack <pisymbol (at) gmail.com>
Nirgal Vourgère <contact_hamlib (at) nirgal.com>
Andrew Errington <a.errington (at) lancaster.ac.uk>
Kārlis Millers YL3ALK <yl3alk (at) lrg.lv>
Norbert Varga HA2NON <nonoo (at) nonoo.hu>
================================================
FILE: software/hamlib-w64-4.5~git/AntRunner_Start_Serial.bat
================================================
.\bin\rotctld.exe -vvvvv -m 2401 -r COM1
::.\bin\rotctld.exe -vvvvv -m 601 -r COM470
pause
================================================
FILE: software/hamlib-w64-4.5~git/AntRunner_Start_WiFi.bat
================================================
.\bin\rotctld.exe -vvvvv -m 2402 --set-conf=rot_pathname="192.168.123.163:23"
================================================
FILE: software/hamlib-w64-4.5~git/COPYING.LIB.txt
================================================
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
================================================
FILE: software/hamlib-w64-4.5~git/COPYING.txt
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
================================================
FILE: software/hamlib-w64-4.5~git/ChangeLog.txt
================================================
For a complete log of changes to Hamlib, please visit:
http://sourceforge.net/p/hamlib/code/commit_browser
Major changes in 4.0 affecting usage
Most rig model numbers have changed
RIG_LEVEL_VOX has been deprecated and replaced by RIG_LEVEL_VOXDELAY
rigctl 'f' command now returns VFO argument too
rigctl 'y' and 'Y' command now take/show antenna argument and option.
range_list items are undergoing changes towards a different model TBD
RTS/DTR PTT sharing is off by default now -- use serial_share=1 option to
enable
================================================
FILE: software/hamlib-w64-4.5~git/LICENSE.txt
================================================
Hamlib - Ham Radio Control Libraries
Copyright (C) 2000,2001 Frank Singleton
Copyright (C) 2000,2001 Stephane Fillod
Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,
2010,2011,2012
The Hamlib Group
See the included README file for more information on Hamlib and the Hamlib
Project or visit http://www.hamlib.org for documentation and links to the
source code of Hamlib.
The 'AUTHORS' file lists contributors known as the The Hamlib Group.
The frontend library source code files and associated backend library
source code files are licensed and released under the Lesser GNU Public
License (LGPL):
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301 USA
The included file 'COPYING.LIB' is a copy of the GNU Lesser General
Public License.
Various other supplied program source files and example source files are
licensed and released under the GNU Public License (GPL):
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
The included file 'COPYING' is a copy of the GNU General Public License.
================================================
FILE: software/hamlib-w64-4.5~git/README.betatester.txt
================================================
Hamlib - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com)
(C) Stephane Fillod 2000-2011
(C) The Hamlib Group 2000-2013
Why does Hamlib need beta-testers?
==================================
Hamlib is developed by a team of radio enthusiasts around the world, for
fun, much in the spirit of ham radio. (Note that it is not restricted for
ham usage only). There are a great deal of protocols and rigs around the
world developers may not own. However, protocols may be available, so
backends can be implemented, but cannot always be tested by developers.
That's where beta-testers are so precious. On top of that, I've been told
that there's no such sure thing like bug free code.
Feedback and improvement requests are also valuable.
Okay, you volunteer as beta-tester, how to proceed?
===================================================
First of all, you can start testing official releases. They are easier to
test because they come in precompiled and packaged (.rpm, .deb, etc.) but
they have the drawback of being older than the Git repository. Reports from
these versions are still very appreciated. Please send them to the
hamlib-developer@lists.sourceforge.net mailing list.
However, the development of Hamlib is still very active, so it's better to
test from the latest Git version of the code. And, depending on feedback
you make, developers can commit a fix, so you can try out the change soon
after, without waiting for the next official version.
To proceed, you will have first to obtain either a daily snapshot or a check
out the latest sources from the Git repository, then rebuild the Hamlib
package and finally test it with your rig. Don't worry, it's much simpler
than it looks, despite the size of the package.
Pre-requisite:
- some kind of internet access
- POSIXish compiler toolchain (gcc, make, C library development headers,
etc., see README.developer for a complete list and building from a Git
checkout)
So here we go:
Daily Git master branch snapshots:
==================================
Download the latest Git master branch snapshot from:
http://n0nb.users.sourceforge.net
You'll find a tarball with a name like
hamlib-3.0~git-30e58df-20121009.tar.gz, i.e. a check out made 09 Oct 2012
With a Git SHA1 of 30e58df (The SHA1 is a signature of each commit. Each is
unique and as our project is small, the first seven characters for the full
40 character SHA1 are likely unique. The shorthand SHA1 is automatically
generated and may become longer in the future.), ready for building using
the familiar "three step" (see below). Each morning by about 1130z a new
snapshot is generated and uploaded and the prior day's version is removed.
The advantage of the Git snapshot is that you won't need as many tools
installed to build Hamlib as the work of the GNU Build System has already
been done. Most of the other packages listed below will be needed. If you
tell the 'configure' script to build certain parts of Hamlib like
documentation or scripting language bindings the relevant optional packages
will be needed. See 'configure --help' for more information.
Here is a list of development packages needed for a complete build of the
library (Debian package names are listed, other distributions may differ):
* Gnu C (gcc) or any C99 compliant compiler # gcc --version
* Gnu make (or any modern one, BSD okay) # make --version
N.B. The Debian and derivatives (Ubuntu and friends) 'build-essentials'
package will install a number of tools and minimize the number of packages
that need to be installed manually.
Optional, but highly recommended for a complete build:
* GNU C++ (g++) # g++ --version
* swig (for bindings) 1.3.14+ # swig -version
* perl devel # h2xs
* tcl devel # tcltk-depends
* python devel # python-config
* zlib devel # Needed by configure's test for Python
* libxml2 devel # xml2-config --version
* libgd2 devel # gdlib-config --version
* libusb-1.0 devel # ver 1.0 or newer (not 0.1!)
* libreadline devel # ver 5.2 or newer
N.B The libusb package is required for building most of the 'kit' backend.
The newer version is needed, not 0.1. Debian and derivatives
package libusb-1.0 which is what is needed.
Documentation:
* Doxygen
Git master branch daily snapshot build:
=======================================
Reading the INSTALL file in top directory will explain in more detail how
to do the following commands.
./configure [--prefix=$HOME/local]
make
make check
make install
The prefix argument is optional. Convention is that local packages be
placed in /usr/local away from distribution installed packages This is the
default location for the snapshots so it may be disregarded unless you wish
to install Hamlib elsewhere. The example above would install Hamlib to
the user's home directory under the 'local' subdirectory.
Other useful options are '--with-perl-binding' or '--with-python-binding' or
'--with-tcl-binding' if you are interested in Swig binding support for
those scripting languages If you are unsure it is safe to ignore these
options.
'make' will run the C and, optionally, the C++ compiler building all of the
binary object files and finally linking all of them together to form the
Hamlib "frontend" and "backend" libraries.
The 'make check' target will run a few predetermined tests using the 'dummy'
(rig model 1) backend and some other Hamlib functions in the build tree.
This is a basic sanity check and cannot test all backends.
The 'make install' target will require super user (root/administrator)
privileges when installing to the system directories as a normal user.
Some Linux distributions offer the 'sudo' command to grant temporary root
privileges or the 'su' command to login as "root". Consult your
distribution's documentation.
NOTE! If Hamlib has not been previously installed as a locally built
package you will need to make sure that 'ldconfig' is configured correctly
and run after 'make install'. Most modern distributions have an
/etc/ld.so.conf.d/ directory where local configuration can be made. Later
versions of Debian and derivatives have a file named 'libc.conf' in this
directory. The contents of libc.conf are:
# libc default configuration
/usr/local/lib
If your system does not have such a file, one will need to be created and
then 'ldconfig' will need to be run as the root user so that applications
using the Hamlib libraries can find them.
To delete the binary files from the source directory after compiling:
make clean
To also remove the Makefiles and other build files generated by 'configure',
along with the binary files as with 'make clean' above:
make distclean
The 'configure' script will need to be run again as above.
The above commands will clean things up so Hamlib can be compiled with other
configure script options.
To remove Hamlib from your system:
sudo make uninstall
Note that due to a limitation in a Perl support script that if the Perl
binding is built and installed that not all of the files under
/usr/local/lib/perl/PERL_VERSION will not be removed.
Git checkout:
=============
Please read the beginning of README.developer file, especially Section 1 which
details the Git checkout, the required tools and versions (very important or
make won't even work!), and how to use the bootstrap script.
Structure:
==========
For the brave who want to peruse the contents, here are what all the
subdirectories are for (these are just a sample as more are added from time to
time):
alinco,aor,icom,
jrc,kachina,kenwood,
pcr,tentec,uniden,
winradio,
yaesu,etc: rig backends
easycomm,rotorez,
sartek, etc: rotator backends
dummy: virtual dummy rig and rotator, for testing use.
lib: library for functions missing on your system
bindings Perl, Python, Tcl, and Visual Basic bindings
c++: C++ bindings
doc: documentation base and scripts to extract from src
include/hamlib: exported header files go here
include: non-distributed header files go there
src: Hamlib frontend source directory
tests: rigctl/rotctl and various C programs for testing
Testing Hamlib:
===============
Don't attempt to test Hamlib from the source directory unless you're a
developer and you understand the side effects of *not* installing freshly
generated objects (basically having to mess with LD_LIBRARY_PATH and
.libs). Do an 'sudo make install' to install the libraries in the system
area. (You did run 'sudo ldconfig' after 'sudo make install', right?)
So here we go. First of all, identify your rig model id. Make sure
/usr/local/bin (or the path you set --prefix to above) is in your $PATH, as
your shell has to be able to locate rigctl.
Run 'rigctl -l' to get a list of rigs supported by Hamlib.
If you cannot find your radio in the list, please report to the
hamlib-developer mailing list. The protocol manual and rig specifications
will help us a lot.
You found your rig's ID? Good! You're almost ready to use rigctl.
Have a quick look at its manual page:
man rigctl
or:
man -M /usr/local/man rigctl
or simply:
rigctl --help
Let's say you own an Icom IC-756:
rigctl -vvvvv -r /dev/ttyS0 -m 326
The -vvvvv is very important since this will increase verbosity, and give
precious traces to developers if something goes wrong. At this level, the
protocol data exchanged will also be dumped to the screen. Some backends
produce a useful amount of data regarding function calls and critical
variables with the -vvvv option without all the protocol data.
Unless some problem shows up, you should be presented with a menu
like "Rig command: ". Enter "?" followed by return to have the list
of available commands. 'Q' or 'q' quits rigctl immediately.
Most wanted functions to be tested are:
'_' get misc information on the rig
'f' get frequency
'F' set frequency, in Hz
'm' get mode
'M' set mode (AM,FM,CW,USB,etc. and passband width in Hz)
'v' get vfo
'V' set vfo (VFOA, VFOB, etc.)
f,F get_freq/set_freq try various (<1MHz, <30Mhz and >1GHz)
v,V get_vfo/set_vfo VFOA, VFOB
m,M get_mode/set_mode FM, USB, LSB, CW, WFM, etc.
passband is in Hz (pass 0 for default)
G vfo_op UP, DOWN
_ get_info should give remote Id and firmware vers
NB: some functions may not be implemented in the backend or simply not
available on this rig.
When reporting to the hamlib-developer mailing list, please include traces
and also comments to tell developers if the action performed correctly on
the rig.
Tip: Traces can be hard to cut and paste sometimes. In that case, there's a
handy tool for you: script(1) (the (1) is not a part of the command, rather
it is a Unix convention telling which section of the manual it is found, in
this case section 1, user commands. e.g. 'man 1 script'). It will make a
typescript of everything printed on your terminal and save it to the file
you give it.
$ script my_rig_traces.txt
Script started, file is my_rig_traces.txt
$ rigctl -vvvvv -r /dev/ttyS0 -m 326
rig:rig_init called
rig: loading backend icom
icom: _init called
rig_register (309)
rig_register (326)
rig:rig_open called
Opened rig model 326, 'IC-756'
Rig command: q
rig:rig_close called
rig:rig_cleanup called
$ exit
exit
Script done, file is my_rig_traces.txt
$
And then send my_rig_traces.txt to the hamlib-developer mailing list.
Some models need S-meter calibration, because the rig only returns raw
measurement. It's easy, it takes only 10mn. Here's how to proceed:
1. Fire up the rigctl program released with the Hamlib package,
and pass along options as needed (serial speed, etc.).
2. Tune to some frequency reporting S0 to the radio S-Meter.
3. At rigctl prompt, issue "get_level" ('l' in short) of the level
RAWSTR.
4. Write down the S-level read on radio front panel, and the RAWSTR
value retrieved.
5. Repeat from step 2 with S9 and S9+60dB. Actually the more plots,
the better, otherwise Hamlib does interpolation.
6. Send the table to the hamlib-developer mailing list and it will be
added in the next release of Hamlib.
NB: It is well known the S-Meter of any given radio is far from being
accurate. For owners with a fully equipped lab, you may want to make the
above-mentioned measurements with a good signal generator and a set of
calibrated attenuators. Greg W8WWV has an insightful page about S-Meter
calibration:
http://www.seed-solutions.com/gregordy/Amateur%20Radio/Experimentation/SMeterBlues.htm
Okay folks, test as much as you can, in the weirdest situations if
possible. There is a special prize for those who find 'Segmentation fault'
and other nasty bugs.
Needless to say, patches are also very welcome (see README.developer). :-)
Stephane - F8CFE and The Hamlib Group
================================================
FILE: software/hamlib-w64-4.5~git/README.txt
================================================
Hamlib - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com)
(C) Stephane Fillod 2000-2011
(C) The Hamlib Group 2000-2012
The purpose of this project is to provide stable, flexible, shared libraries
that enable quicker development of Amateur Radio Equipment Control
Applications.
Many Amateur Radio Transceivers come with serial interfaces that allows
software to control the radio. This project will endeavour to provide shared
libraries that greatly simplify the application programmer's interaction
with radio equipment and other controllable devices such as rotators,
switches, etc.
Supported Radios
----------------
The Hamlib Wiki page, Supported Radios, contains a snapshot of the supported
radios at the time of the last Hamlib release. Go to http://www.hamlib.org
to reach the Wiki.
Hamlib Design
-------------
The library provides functions for both radio and rotator control,
and data retrieval from the radio or rotator. A number of functions useful
for calculating distance and bearing and grid square conversion are included.
libhamlib.so - library that provides generic API for all RIG types.
This is what Application programmers will "see". Will have different
names on other platforms, e.g. libhamlib-2.dll on MS windows. Also
contains all radio and rotator "backends" (formerly in their own
dlopen'ed libraries) provided by Hamlib.
Backend Examples are:
---------------------
1. yaesu will provide connectivity to Yaesu FT 747GX Transceiver, FT 847
"Earth Station", etc. via a standard API.
2. xxxx. will provide connectivity to the Wiz-bang moon-melter 101A (yikes..)
Hamlib will also enable 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 we expect that IP
(and other) connectivity will follow afterwards. Connection via a USB port
is accomplished via the Linux kernel support. USB to serial converters are
well supported. Other such devices may be supported as long as they present
a serial (RS-232) interface to Hamlib.
Availability
------------
Most distributions have the latest Hamlib release in their testing or alpha
versions of their distribution. Check your package manager for the Hamlib
version included in your distribution.
Developing with Hamlib API
--------------------------
API documentation is at:
https://github.com/Hamlib/Hamlib/wiki/Documentation
Take a look at tests/README for more info on simple programming examples and
test programs.
C++ programming is supported and language bindings are available for Perl,
Python, and TCL. A network daemon utility is also available for any
programming language that supports network sockets (even netcat!).
Recompiling
-----------
Hamlib is entirely developed using GNU tools, under various Linux systems.
The library may be recompiled by the familiar "three step":
./configure
make
sudo make install
For debugging use this configure
./configure CFLAGS=-g -O0 -fPIC --no-create --no-recursio
See the INSTALL file for more information.
Contributing
------------
Consult the README.betatester and README.developer files in this directory
if you feel like testing or helping with Hamlib development.
Contributions of rig specifications and protocol documentation are highly
encouraged. Do keep in mind that in some cases the manufacturer may not
provide complete control information or it is only available under a
Non-Disclosure Agreement (NDA). Any documentation *must* be publicly
available so we can legally write and distribute Free Software supporting a
given device.
The Hamlib team is very interested 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
Git email formatted patches or in unified diff format are welcome!
Also, take a look at http://sourceforge.net/projects/hamlib/ Here you will
find a mail list, link to the Wiki, and the latest releases. Feedback,
questions, etc. about Hamlib are very welcome at the mail list:
<hamlib-developer@lists.sourceforge.net>
Hamlib Version Numbers
----------------------
Like other software projects, Hamlib uses a version numbering scheme to help
program authors and users understand which releases are compatible and which
are not. Hamlib releases now follow the format of:
Major.minor.incremental
Where
Major: Currently at 4, but can be advanced when changes to the API require
client programs to be rewritten to take advantage of new features of
Hamlib. This number has advanced a couple of times throughout the life of
Hamlib. Advancement of the major number is only for frontend API changes
that require modification of client source. ABI compatibility is presently
maintained to prior releases so that a program linked to an earlier
1.2.Y.[Z] release will work with a later 3.Y[.Z] release without
recompiling. It is our intention to maintain such ABI compatibility as long
as practical.
Minor: This number advances when either new backend(s) or new rig
model(s) to existing backend(s) are added. Advancing this number informs
client program authors (and users of those programs) that new model/backend
support has been added. Will also include bug fixes since the last
Incremental release.
Incremental: May be undefined (e.g. Hamlib 3.0) and would advance to 1
(e.g. Hamlib 3.0.1) for any bug fixes or feature additions to existing
model(s) or backend(s), then to 2, etc. New rig models or backends are not
included in Incremental. When Release is advanced, Incremental will reset
to undefined and will not be included as part of the version number.
Release schedule
----------------
Hamlib has in the past maintained a "ready when it's ready" philosophy.
However, given that much of the Linux user base is now influenced by the
Ubuntu distribution and its timed six month release schedule, Hamlib
releases will be scheduled in advance of Ubuntu releases. Planned release
dates for Hamlib are now 1 February and 1 August of each calendar year.
Between those dates various Incremental releases will occur as development
warrants.
Have Fun / Frank S / Stephane F / The Hamlib Group
73's de vk3fcs/km5ws / f8cfe
================================================
FILE: software/hamlib-w64-4.5~git/README.w64-bin.txt
================================================
What is it?
===========
This ZIP archive or Windows installer contains a build of Hamlib-4.5~git
cross-compiled for MS Windows 64 bit using MinGW under Debian GNU/Linux 10
(nice, heh!).
This software is copyrighted. The library license is LGPL, and the *.EXE files
licenses are GPL. Hamlib comes WITHOUT ANY WARRANTY. See the LICENSE.txt,
COPYING.txt, and COPYING.LIB.txt files.
Supporting documentation in the form of Unix manual pages have also been
included after being converted to HTML.
Installation and Configuration
==============================
Extract the ZIP archive into a convenient location, C:\Program Files is a
reasonable choice.
Make sure *all* the .DLL files are in your PATH (leave them in the bin
directory and set the PATH). To set the PATH environment variable in Windows
2000, Windows XP, and Windows 7 (need info on Vista and Windows 8/10) do the
following:
* W2k/XP: Right-click on "My Computer"
Win7: Right-click on "Computer"
* W2k/XP: Click the "Advanced" tab of the "System Properties" dialog
Win7: Click the "Advanced system settings" link in the System dialog
* Click the "Environment Variables" button of the pop-up dialog
* Select "Path" in the "System variables" box of the "Environment Variables"
dialog
NB: If you are not the administrator, system policy may not allow editing
the path variable. The complete path to an executable file will need to be
given to run one of the Hamlib programs.
* Click the Edit button
* Now add the Hamlib path in the "Variable Value:" edit box. Be sure to put
a semi-colon ';' after the last path before adding the Hamlib path (NB. The
entire path is highlighted and will be erased upon typing a character so
click in the box to unselect the text first. The PATH is important!!)
Append the Hamlib path, e.g. C:\Program Files\hamlib-w64-4.0~git\bin
* Click OK for all three dialog boxes to save your changes.
Testing with the Hamlib Utilities
=================================
To continue, be sure you have read the README.betatester file, especially the
"Testing Hamlib" section. The primary means of testing is by way of the
rigctl utility for radios and rotctl utility for rotators. Each is a command
line program that is interactive or can act on a single command and exit.
Documentation for each utility can be found as an HTML file in the doc
directory.
In short, the command syntax is of the form:
rigctl -m 1020 -r COM1 -vvvvv
-m -> Radio model 1020, or Yaesu FT-817 (use 'rigctl -l' for a list)
-r -> Radio device, in this case COM1
-v -> Verbosity level. For testing four or five v characters are required.
Five 'v's set a debug level of TRACE which generates a lot of screen
output showing communication to the radio and values of important
variables. These traces are vital information for Hamlib rig backend
development.
To run rigctl or rotctl open a cmd window (Start|Run|enter 'cmd' in the
dialog). If text scrolls off the screen, you can scroll back with the mouse.
To copy output text into a mailer or editor (I recommend Notepad++, a free
editor also licensed under the GPL), highlight the text as a rectangle in the
cmd window, press <Enter> (or right-click the window icon in the upper left
corner and select Edit, then Copy), and paste it into your editor with Ctl-V
(or Edit|Paste from the typical GUI menu).
All feedback is welcome to the mail address below.
Uninstall
=========
To uninstall, simply delete the Hamlib directory. You may wish to edit the
PATH as above to remove the Hamlib bin path, if desired.
Information for w64 Programmers
=================================
The DLL has a cdecl interface.
There is a libhamlib-4.def definition file for MS Visual C++/Visual Studio in
lib/msvc. Refer to the sample commands below to generate a local
libhamlib-4.lib file for use with the VC++/VS linker.
Simply #include <hamlib/rig.h> (add directory to include path), include
libhamlib-4.lib in your project and you are done. Note: VC++/VS cannot
compile all the Hamlib code, but the API defined by rig.h has been made MSVC
friendly :-)
As the source code for the library DLLs is licensed under the LGPL, your
program is not considered a "derivative work" when using the published Hamlib
API and normal linking to the front-end library, and may be of a license of
your choosing.
For linking the library with MS Visual C++ 2003, from the directory you
installed Hamlib run the following commands to generate the libhamlib-4.lib
file needed for linking with your MSVC project:
cd lib\msvc
c:\Program Files\Microsoft Visual C++ Toolkit 2003\bin\link.exe /lib /machine:amd64 /def:libhamlib-4.def
To do the same for Visual Studio 2017:
cd lib\msvc
c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x86\bin\link.exe /lib /machine:i386 /def:libhamlib-4.def
and for VS 2019:
cd lib\msvc
c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x86\bin\link.exe /lib /machine:i386 /def:libhamlib-4.def
NOTE: feedback is requested on the previous two command examples as these do
not appear to be correct to generate a 64 bit libhamlib-4.lib file!
The published Hamlib API may be found at:
http://hamlib.sourceforge.net/manuals/4.1/index.html
Thank You!
==========
Patches, feedback, and contributions are welcome.
Please report problems or success to hamlib-developer@lists.sourceforge.net
Cheers,
Stephane Fillod - F8CFE
Nate Bargmann - N0NB
http://www.hamlib.org
================================================
FILE: software/hamlib-w64-4.5~git/THANKS.txt
================================================
This file lists people who contributed indirectly to Hamlib, by generously
making information available. Be they thanked for their openness.
WiNRADiO backend
----------------
* Harish Pillay 9v1hp and Pascal Brisset and their excellent LiNRADiO project.
URL: http://linradio.sourceforge.net/
Icom CI-V backend
-----------------
* Ekki Plicht DF4OR <ekki@plicht.de> and his excellent web site on
the CI-V interface.
URL: http://www.plicht.de/ekki/civ/
* Karl Kramer DG8FZ <Karl_Kramer@bigfoot.com> for his V24/CI-V cable
and his CSMA/CD explanation of the bus.
URL: http://KarlKramer.de/ ... x71ci_v.htm
* Simon Collings, RS-232 Interfacing for Receiver Control
URL: http://www.scnt01426.pwp.blueyonder.co.uk/Articles/RS-232/RS-232.htm
* Kai Altenfelder <ka@suse.de> for supporting us and providing documentation
Icom PCR backend
----------------
* Ghetto's team, PCR-1000 ICOM receiver
URL: http://www.philtered.net/icomlib.phtml
Other Assistance
----------------
* Special thanks to Ed Hare, W1RFI, and the American Radio Relay League for technical support.
================================================
FILE: software/hamlib-w64-4.5~git/doc/ampctl.1.html
================================================
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Wed May 18 09:31:51 2022 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
h1 { text-align: center }
</style>
<title>AMPCTL</title>
</head>
<body>
<h1 align="center">AMPCTL</h1>
<a href="#NAME">NAME</a><br>
<a href="#SYNOPSIS">SYNOPSIS</a><br>
<a href="#DESCRIPTION">DESCRIPTION</a><br>
<a href="#OPTIONS">OPTIONS</a><br>
<a href="#COMMANDS">COMMANDS</a><br>
<a href="#READLINE">READLINE</a><br>
<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
<a href="#EXIT STATUS">EXIT STATUS</a><br>
<a href="#EXAMPLES">EXAMPLES</a><br>
<a href="#BUGS">BUGS</a><br>
<a href="#COPYING">COPYING</a><br>
<a href="#SEE ALSO">SEE ALSO</a><br>
<a href="#COLOPHON">COLOPHON</a><br>
<hr>
<h2>NAME
<a name="NAME"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">ampctl -
control radio amplifiers</p>
<h2>SYNOPSIS
<a name="SYNOPSIS"></a>
</h2>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p style="margin-top: 1em"><b>ampctl</b></p></td>
<td width="2%"></td>
<td width="78%">
<p style="margin-top: 1em">[<b>-hiIlLuV</b>]
[<b>-m </b><i>id</i>] [<b>-r </b><i>device</i>]
[<b>-s </b><i>baud</i>] [<b>-t </b><i>char</i>]
[<b>-C </b><i>parm=val</i>] [<b>-v</b>[<b>-Z</b>]]
[<b>command</b>|<b>-</b>]</p> </td></tr>
</table>
<h2>DESCRIPTION
<a name="DESCRIPTION"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Control radio
amplifiers. <b>ampctl</b> accepts <b>commands</b> from the
command line as well as in interactive mode if none are
provided on the command line.</p>
<p style="margin-left:11%; margin-top: 1em">Keep in mind
that Hamlib is BETA level software. While a lot of backend
libraries lack complete amplifier support, the basic
functions are usually well supported.</p>
<p style="margin-left:11%; margin-top: 1em">Please report
bugs and provide feedback at the e-mail address given in the
<b>BUGS</b> section below. Patches and code enhancements
sent to the same address are welcome.</p>
<h2>OPTIONS
<a name="OPTIONS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">This program
follows the usual GNU command line syntax. Short options
that take an argument may have the value follow immediately
or be separated by a space. Long options starting with two
dashes (’-’) require an ’=’ between
the option and any argument.</p>
<p style="margin-left:11%; margin-top: 1em">Here is a
summary of the supported options: <b><br>
-m</b>, <b>--model</b>=<i>id</i></p>
<p style="margin-left:22%;">Select amplifier model
number.</p>
<p style="margin-left:22%; margin-top: 1em">See model list
(use “ampctl -l”).</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>:
<b>ampctl</b> (or third party software using the C API) will
use amplifier model 2 for <b>NET ampctl</b> (communicating
with <b>ampctld</b>).</p>
<p style="margin-left:11%;"><b>-r</b>,
<b>--amp-file</b>=<i>device</i></p>
<p style="margin-left:22%;">Use <i>device</i> as the file
name of the port connected to the amplifier.</p>
<p style="margin-left:22%; margin-top: 1em">Often a serial
port, but could be a USB to serial adapter. Typically
<i>/dev/ttyS0</i>, <i>/dev/ttyS1</i>, <i>/dev/ttyUSB0</i>,
etc. on Linux, <i>COM1</i>, <i>COM2</i>, etc. on MS Windows.
The BSD flavors and Mac OS/X have their own designations.
See your system’s documentation.</p>
<p style="margin-left:11%;"><b>-s</b>,
<b>--serial-speed</b>=<i>baud</i></p>
<p style="margin-left:22%;">Set serial speed to <i>baud</i>
rate.</p>
<p style="margin-left:22%; margin-top: 1em">Uses maximum
serial speed from amplifier backend capabilities (set by
<b>-m</b> above) as the default.</p>
<p style="margin-left:11%;"><b>-t</b>,
<b>--send-cmd-term</b>=<i>char</i></p>
<p style="margin-left:22%;">Change the termination
<i>char</i> for text protocol when using the <b>send_cmd</b>
command.</p>
<p style="margin-left:22%; margin-top: 1em">The default
value is ASCII CR (’0x0D’). ASCII non-printing
characters can be given as the ASCII number in hexadecimal
format prepended with “0x”. You may pass an
empty string for no termination char. The string
“-1” tells <b>ampctl</b> to switch to binary
protocol.</p>
<p style="margin-left:22%; margin-top: 1em">For example, to
specify a command terminator for Kenwood style text commands
pass “-t ’;’” to ampctl. See
<b>EXAMPLE</b> below.</p>
<p style="margin-left:11%;"><b>-L</b>,
<b>--show-conf</b></p>
<p style="margin-left:22%;">List all config parameters for
the amplifier defined with <b>-m</b> above.</p>
<p style="margin-left:11%;"><b>-C</b>,
<b>--set-conf</b>=<i>parm=val</i>[<i>,parm=val</i>]</p>
<p style="margin-left:22%;">Set amplifier configuration
parameter(s), e.g. <i>stop_bits=2</i>.</p>
<p style="margin-left:22%; margin-top: 1em">Use the
<b>-L</b> option above for a list of configuration
parameters for a given model number.</p>
<p style="margin-left:11%;"><b>-u</b>,
<b>--dump-caps</b></p>
<p style="margin-left:22%;">Dump capabilities for the
amplifier defined with <b>-m</b> above and exit.</p>
<p style="margin-left:11%;"><b>-l</b>, <b>--list</b></p>
<p style="margin-left:22%;">List all amplifier model
numbers defined in <b>Hamlib</b> and exit.</p>
<p style="margin-left:22%; margin-top: 1em">The list is
sorted by model number.</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>: In
Linux the list can be scrolled back using
<b>Shift-PageUp</b>/<b>Shift-PageDown</b>, or using the
scrollbars of a virtual terminal in X or the cmd window in
Windows. The output can be piped to <b>more</b>(1) or
<b>less</b>(1), e.g. “ampctl -l | more”.</p>
<p style="margin-left:11%;"><b>-i</b>,
<b>--read-history</b></p>
<p style="margin-left:22%;">Read previously saved command
and argument history from a file (default
<i>$HOME/.ampctl_history</i>) for the current session.</p>
<p style="margin-left:22%; margin-top: 1em">Available when
<b>ampctl</b> is built with Readline support (see READLINE
below).</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>: To
read a history file stored in another directory, set the
<b>AMPCTL_HIST_DIR</b> environment variable, e.g.
“AMPCTL_HIST_DIR=~/tmp ampctl -i”. When
AMPCTL_HIST_DIR is not set, the value of <b>HOME</b> is
used.</p>
<p style="margin-left:11%;"><b>-I</b>,
<b>--save-history</b></p>
<p style="margin-left:22%;">Write current session (and
previous session(s), if <b>-i</b> option is given) command
and argument history to a file (default
<i>$HOME/.ampctl_history</i>) at the end of the current
session.</p>
<p style="margin-left:22%; margin-top: 1em">Complete
commands with arguments are saved as a single line to be
recalled and used or edited. Available when <b>ampctl</b> is
built with Readline support (see <b>READLINE</b> below).</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>: To
write a history file in another directory, set the
<b>AMPCTL_HIST_DIR</b> environment variable, e.g.
“AMPCTL_HIST_DIR=~/tmp ampctl -IRq. When
AMPCTL_HIST_DIR is not set, the value of <b>HOME</b> is
used.</p>
<p style="margin-left:11%;"><b>-v</b>, <b>--verbose</b></p>
<p style="margin-left:22%;">Set verbose mode, cumulative
(see <b>DIAGNOSTICS</b> below).</p>
<p style="margin-left:11%;"><b>-Z</b>,
<b>--debug-time-stamps</b></p>
<p style="margin-left:22%;">Enable time stamps for the
debug messages.</p>
<p style="margin-left:22%; margin-top: 1em">Use only in
combination with the <b>-v</b> option as it generates no
output on its own.</p>
<p style="margin-left:11%;"><b>-h</b>, <b>--help</b></p>
<p style="margin-left:22%;">Show a summary of these options
and exit.</p>
<p style="margin-left:11%;"><b>-V</b>, <b>--version</b></p>
<p style="margin-left:22%;">Show version of <b>ampctl</b>
and exit.</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="1%">
<p><b>-</b></p></td>
<td width="10%"></td>
<td width="78%">
<p>Stop option processing and read commands from standard
input.</p> </td></tr>
</table>
<p style="margin-left:22%; margin-top: 1em">See <b>Standard
Input</b> below.</p>
<p style="margin-left:11%; margin-top: 1em"><b>Note</b>:
Some options may not be implemented by a given backend and
will return an error. This is most likely to occur with the
<b>--set-conf</b> and <b>--show-conf</b> options.</p>
<p style="margin-left:11%; margin-top: 1em">Please note
that the backend for the amplifier to be controlled, or the
amplifier itself may not support some commands. In that
case, the operation will fail with a <b>Hamlib</b> error
code.</p>
<h2>COMMANDS
<a name="COMMANDS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Commands can be
entered either as a single char, or as a long command name.
The commands are not prefixed with a dash as the options
are. They may be typed in when in interactive mode or
provided as argument(s) in command line interface mode. In
interactive mode commands and their arguments may be entered
on a single line:</p>
<p style="margin-left:17%; margin-top: 1em"><b>F
14250000</b></p>
<p style="margin-left:11%; margin-top: 1em">Since most of
the <b>Hamlib</b> operations have a <b>set</b> and a
<b>get</b> method, an upper case letter will often be used
for a <b>set</b> method whereas the corresponding lower case
letter refers to the <b>get</b> method. Each operation also
has a long name; in interactive mode, prepend a backslash,
’\’, to enter a long command name.</p>
<p style="margin-left:11%; margin-top: 1em">Example: Use
“\dump_caps” to see what capabilities this
amplifier and backend support.</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>:
The backend for the amplifier to be controlled, or the
amplifier itself may not support some commands. In that
case, the operation will fail with a <b>Hamlib</b> error
message.</p>
<p style="margin-left:11%; margin-top: 1em">A simple
example using commands saved to a file (typed text shown in
bold):</p>
<p style="margin-left:17%; margin-top: 1em">$ <b>cat
<<.EOF. >cmds.txt</b> <br>
> <b># File of commands</b> <br>
> <b>F 14250000</b> <br>
> <b>f</b> <br>
> <b>l PWRINPUT</b> <br>
> <b>l PWRFORWARD</b> <br>
> <b>l SWR</b> <br>
> <b>\dump_caps</b> <br>
> <b>.EOF.</b></p>
<p style="margin-left:17%; margin-top: 1em">$ <b>ampctl -m1
- <cmds.txt</b></p>
<p style="margin-left:17%; margin-top: 1em">Amplifier
command: # File of commands</p>
<p style="margin-left:17%; margin-top: 1em">Amplifier
command: F 14250000</p>
<p style="margin-left:17%; margin-top: 1em">Amplifier
command: f <br>
Frequency(Hz): 14250000</p>
<p style="margin-left:17%; margin-top: 1em">Amplifier
command: l PWRINPUT <br>
Level Value: 0</p>
<p style="margin-left:17%; margin-top: 1em">Amplifier
command: l PWRFORWARD <br>
Level Value: 1499</p>
<p style="margin-left:17%; margin-top: 1em">Amplifier
command: l SWR <br>
Level Value: 1.000000</p>
<p style="margin-left:17%; margin-top: 1em">Amplifier
command: \dump_caps <br>
Caps dump for model: 1 <br>
Model name: Dummy <br>
Mfg name: Hamlib <br>
Backend version: 0.1 <br>
Backend copyright: LGPL <br>
Backend status: Alpha <br>
Amp type: Other <br>
Port type: None <br>
Write delay: 0mS, timeout 0mS, 0 retries <br>
Post Write delay: 0mS <br>
Has priv data: N <br>
Get level: SWR NH PF PWRINPUT PWRFORWARD PWRREFLECTED
PWRPEAK FAULT <br>
Has Init: Y <br>
Has Cleanup: Y <br>
Has Open: Y <br>
Has Close: Y <br>
Can set Conf: N <br>
Can get Conf: N <br>
Can Reset: Y <br>
Can get Info: Y</p>
<p style="margin-left:17%; margin-top: 1em">Overall backend
warnings: 0</p>
<p style="margin-left:17%; margin-top: 1em">Amplifier
command:</p>
<p style="margin-left:17%; margin-top: 1em">$</p>
<p style="margin-left:11%; margin-top: 1em"><b>ampctl
Commands</b> <br>
A summary of commands is included below (In the case of
<b>set</b> commands the quoted italicized string is replaced
by the value in the description. In the case of <b>get</b>
commands the quoted italicized string is the key name of the
value returned.): <b><br>
Q</b>|<b>q</b>, exit ampctl</p>
<p style="margin-left:22%;">Exit ampctl in interactive
mode.</p>
<p style="margin-left:22%; margin-top: 1em">When ampctl is
controlling the amplifier directly, will close the amplifier
backend and port. When ampctl is connected to ampctld
(amplifier model 2), the TCP/IP connection to ampctld is
closed and ampctld remains running, available for another
TCP/IP network connection.</p>
<p style="margin-left:11%;"><b>F</b>, <b>set_freq</b>
'<i>Frequency</i>'</p>
<p style="margin-left:22%;">Set '<i>Frequency</i>', in
Hz.</p>
<p style="margin-left:22%; margin-top: 1em">Frequency may
be a floating point or integer value.</p>
<p style="margin-left:11%;"><b>f</b>, <b>get_freq</b></p>
<p style="margin-left:22%;">Get '<i>Frequency</i>', in
Hz.</p>
<p style="margin-left:22%; margin-top: 1em">Returns an
integer value.</p>
<p style="margin-left:11%;"><b>l</b>, <b>get_level</b>
'<i>Level</i>'</p>
<p style="margin-left:22%;">Get '<i>Level Value</i>'.</p>
<p style="margin-left:22%; margin-top: 1em">Returns Level
Value as a float or integer for the Level token given.</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>:
Passing a ’?’ (query) as the first argument
instead of a Level token will return a space separated list
of amplifier backend supported get level tokens. Use this to
determine the supported levels of a given amplifier
backend.</p>
<p style="margin-left:11%;"><b>w</b>, <b>send_cmd</b>
'<i>Cmd</i>'</p>
<p style="margin-left:22%;">Send a raw command string to
the amplifier.</p>
<p style="margin-left:22%; margin-top: 1em">This is useful
for testing and troubleshooting amplifier commands and
responses when developing a backend.</p>
<p style="margin-left:22%; margin-top: 1em">For binary
protocols enter values as \0xAA\0xBB. Expect a
'<i>Reply</i>' from the amplifier which will likely be a
binary block or an ASCII string depending on the
amplifier’s protocol (see your amplifier’s
computer control documentation).</p>
<p style="margin-left:22%; margin-top: 1em">The command
terminator, set by the <b>send-cmd-term</b> option above,
will terminate each command string sent to the amplifier.
This character should not be a part of the input string.</p>
<p style="margin-left:11%;"><b>dump_state</b></p>
<p style="margin-left:22%;">Return certain state
information about the amplifier backend.</p>
<p style="margin-left:11%;"><b>1</b>, <b>dump_caps</b></p>
<p style="margin-left:22%;">Not a real amplifier remote
command, it just dumps capabilities, i.e. what the backend
knows about this model, and what it can do.</p>
<p style="margin-left:22%; margin-top: 1em">TODO: Ensure
this is in a consistent format so it can be read into a
hash, dictionary, etc. Bug reports requested.</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>:
This command will produce many lines of output so be very
careful if using a fixed length array! For example, running
this command against the Dummy backend results in a number
of lines of text output.</p>
<p style="margin-left:11%;"><b>_</b>, <b>get_info</b></p>
<p style="margin-left:22%;">Return information from the
amplifier backend.</p>
<p style="margin-left:11%;"><b>R</b>, <b>reset</b>
'<i>Reset</i>'</p>
<p style="margin-left:22%;">Perform amplifier
'<i>Reset</i>'.</p>
<p style="margin-left:22%; margin-top: 1em">Reset is an
integer value: ’0’ = None, ’1’ =
Memory reset, ’2’ = Fault reset, ’3’
= Amplifier reset.</p>
<p style="margin-left:11%;"><b>set_powerstat</b> '<i>Power
Status</i>'</p>
<p style="margin-left:22%;">Set '<i>Power Status</i>'.</p>
<p style="margin-left:22%; margin-top: 1em">Power Status is
an integer value: ’0’ = Power Off,
’1’ = Power On, ’2’ = Power Standby
(enter standby), ’4’ = Power Operate (leave
standby).</p>
<p style="margin-left:11%;"><b>get_powerstat</b></p>
<p style="margin-left:22%;">Get '<i>Power Status</i>' as in
<b>set_powerstat</b> above.</p>
<h2>READLINE
<a name="READLINE"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">If
<b>Readline</b> library development files are found at
configure time, <b>ampctl</b> will be conditonally built
with Readline support for command and argument entry.
Readline command key bindings are at their defaults as
described in the
<a href="https://tiswww.cwru.edu/php/chet/readline/rluserman.html">Readline
manual</a>. <b>ampctl</b> sets the name “ampctl”
which can be used in Conditional Init Constructs in the
Readline Init File (<i>$HOME/.inputrc</i> by default) for
custom keybindings unique to <b>ampctl</b>.</p>
<p style="margin-left:11%; margin-top: 1em">Command history
is available with Readline support as described in the
<a href="https://tiswww.case.edu/php/chet/readline/history.html#SEC1">Readline
History manual</a>. Command and argument strings are stored
as single lines even when arguments are prompted for input
individually. Commands and arguments are not validated and
are stored as typed with values separated by a single
space.</p>
<p style="margin-left:11%; margin-top: 1em">Normally
session history is not saved, however, use of either of the
<b>-i</b>/<b>--read-history</b> or
<b>-I</b>/<b>--save-history</b> options when starting
<b>ampctl</b> will cause any previously saved history to be
read in and/or the current and any previous session history
(assuming the <b>-i</b> and <b>-I</b> options are given
together) will be written out when <b>ampctl</b> is closed.
Each option is mutually exclusive, i.e. either may be given
separately or in combination. This is useful to save a set
of commands and then read them later but not write the
modified history for a consistent set of test commands in
interactive mode, for example.</p>
<p style="margin-left:11%; margin-top: 1em">History is
stored in <i>$HOME/.ampctl_history</i> by default although
the destination directory may be changed by setting the
<b>AMPCTL_HIST_DIR</b> environment variable. When
AMPCTL_HIST_DIR is unset, the value of the <b>HOME</b>
environment variable is used instead. Only the destination
directory may be changed at this time.</p>
<p style="margin-left:11%; margin-top: 1em">If Readline
support is not found at configure time the original internal
command handler is used. Readline is not used for
<b>ampctl</b> commands entered on the command line
regardless if Readline support is built in or not.</p>
<p style="margin-left:11%; margin-top: 1em"><b>Note</b>:
Readline support is not included in the MS Windows 32 or 64
bit binary builds supplied by the Hamlib Project. Running
<b>ampctl</b> on the MS Windows platform in the
’cmd’ shell does give session command line
history, however, it is not saved to disk between
sessions.</p>
<h2>DIAGNOSTICS
<a name="DIAGNOSTICS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">The <b>-v</b>,
<b>--verbose</b> option allows different levels of
diagnostics to be output to <b>stderr</b> and correspond to
-v for <b>BUG</b>, -vv for <b>ERR</b>, -vvv for <b>WARN</b>,
-vvvv for <b>VERBOSE</b>, or -vvvvv for <b>TRACE</b>.</p>
<p style="margin-left:11%; margin-top: 1em">A given verbose
level is useful for providing needed debugging information
to the email address below. For example, TRACE output shows
all of the values sent to and received from the amplifier
which is very useful for amplifier backend library
development and may be requested by the developers.</p>
<h2>EXIT STATUS
<a name="EXIT STATUS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>ampctl</b>
exits with:</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="1%">
<p><b>0</b></p></td>
<td width="10%"></td>
<td width="78%">
<p>if all operations completed normally;</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="1%">
<p><b>1</b></p></td>
<td width="10%"></td>
<td width="78%">
<p>if there was an invalid command line option or
argument;</p> </td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="1%">
<p><b>2</b></p></td>
<td width="10%"></td>
<td width="78%">
<p>if an error was returned by <b>Hamlib</b>.</p></td></tr>
</table>
<h2>EXAMPLES
<a name="EXAMPLES"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Start
<b>ampctl</b> for am Elecraft KPA-1500 using a USB to serial
adapter on Linux in interactive mode:</p>
<p style="margin-left:17%; margin-top: 1em">$ <b>ampctl -m
201 -r /dev/ttyUSB1</b></p>
<p style="margin-left:11%; margin-top: 1em">Start
<b>ampctl</b> for an Elecraft KPA-1500 using COM1 on MS
Windows while generating TRACE output to <i>stderr</i>:</p>
<p style="margin-left:17%; margin-top: 1em">> <b>ampctl
-m 201 -r COM1 -vvvvv</b></p>
<p style="margin-left:11%; margin-top: 1em">Connect to a
running <b>ampctld</b> with amplifier model 2 (“NET
ampctl”) on the local host and specifying the TCP
port, setting frequency and mode:</p>
<p style="margin-left:17%; margin-top: 1em">$ <b>ampctl -m
2 -r localhost:4531 F 7253500</b></p>
<h2>BUGS
<a name="BUGS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">This almost
empty section...</p>
<p style="margin-left:11%; margin-top: 1em">Report bugs
to:</p>
<p style="margin-left:22%;"><a href="mailto:hamlib-developer@lists.sourceforge.net">Hamlib
Developer mailing list </a></p>
<h2>COPYING
<a name="COPYING"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">This file is
part of Hamlib, a project to develop a library that
simplifies radio, rotator, and amplifier control functions
for developers of software primarily of interest to radio
amateurs and those interested in radio communications.</p>
<p style="margin-left:11%; margin-top: 1em">Copyright
© 2000-2011 Stephane Fillod <br>
Copyright © 2000-2018 the Hamlib Group (various
contributors) <br>
Copyright © 2010-2020 Nate Bargmann</p>
<p style="margin-left:11%; margin-top: 1em">This is free
software; see the file COPYING for copying conditions. There
is NO warranty; not even for MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.</p>
<h2>SEE ALSO
<a name="SEE ALSO"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>less</b>(1),
<b>more</b>(1), <b>ampctld</b>(1), <b>hamlib</b>(7)</p>
<h2>COLOPHON
<a name="COLOPHON"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Links to the
Hamlib Wiki, Git repository, release archives, and daily
snapshot archives are available via
<a href="http://www.hamlib.org">hamlib.org</a>.</p>
<hr>
</body>
</html>
================================================
FILE: software/hamlib-w64-4.5~git/doc/ampctld.1.html
================================================
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Wed May 18 09:31:52 2022 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
h1 { text-align: center }
</style>
<title>AMPCTLD</title>
</head>
<body>
<h1 align="center">AMPCTLD</h1>
<a href="#NAME">NAME</a><br>
<a href="#SYNOPSIS">SYNOPSIS</a><br>
<a href="#DESCRIPTION">DESCRIPTION</a><br>
<a href="#OPTIONS">OPTIONS</a><br>
<a href="#COMMANDS">COMMANDS</a><br>
<a href="#PROTOCOL">PROTOCOL</a><br>
<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
<a href="#EXAMPLES">EXAMPLES</a><br>
<a href="#SECURITY">SECURITY</a><br>
<a href="#BUGS">BUGS</a><br>
<a href="#COPYING">COPYING</a><br>
<a href="#SEE ALSO">SEE ALSO</a><br>
<a href="#COLOPHON">COLOPHON</a><br>
<hr>
<h2>NAME
<a name="NAME"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">ampctld - TCP
amplifier control daemon</p>
<h2>SYNOPSIS
<a name="SYNOPSIS"></a>
</h2>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="11%">
<p style="margin-top: 1em"><b>ampctld</b></p></td>
<td width="1%"></td>
<td width="77%">
<p style="margin-top: 1em">[<b>-hlLuV</b>]
[<b>-m </b><i>id</i>] [<b>-r </b><i>device</i>]
[<b>-s </b><i>baud</i>] [<b>-T </b><i>IPADDR</i>]
[<b>-t </b><i>number</i>]
[<b>-C </b><i>parm=val</i>] [<b>-v</b>[<b>-Z</b>]]</p></td></tr>
</table>
<h2>DESCRIPTION
<a name="DESCRIPTION"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">The
<b>ampctld</b> program is an amplifier control daemon that
handles client requests via TCP sockets. This allows
multiple user programs to share one amplifier (this needs
more development). Multiple amplifiers can be controlled on
different TCP ports by use of multiple <b>ampctld</b>
processes. Note that multiple processes/ports are also
necessary if some clients use extended responses and/or vfo
mode. So up to 4 processes/ports may be needed for each
combination of extended response/vfo mode. The syntax of the
commands are the same as <b>ampctl</b>(1). It is hoped that
<b>ampctld</b> will be especially useful for client authors
using languages such as Perl, Python, PHP, and others.</p>
<p style="margin-left:11%; margin-top: 1em"><b>ampctld</b>
communicates to a client through a TCP socket using text
commands shared with <b>ampctl</b>. The protocol is simple,
commands are sent to <b>ampctld</b> on one line and
<b>ampctld</b> responds to <b>get</b> commands with the
requested values, one per line, when successful, otherwise,
it responds with one line “RPRT x”, where
’x’ is a negative number indicating the error
code. Commands that do not return values respond with the
line “RPRT x”, where ’x’ is
’0’ when successful, otherwise is a regative
number indicating the error code. Each line is terminated
with a newline ’\n’ character. This protocol is
primarily for use by the <b>NET ampctl</b> (amplifier model
2) backend.</p>
<p style="margin-left:11%; margin-top: 1em">A separate
<b>Extended Response Protocol</b> extends the above behavior
by echoing the received command string as a header, any
returned values as a key: value pair, and the “RPRT
x” string as the end of response marker which includes
the <b>Hamlib</b> success or failure value. See the
<b>PROTOCOL</b> section for details. Consider using this
protocol for clients that will interact with <b>ampctld</b>
directly through a TCP socket.</p>
<p style="margin-left:11%; margin-top: 1em">Keep in mind
that Hamlib is BETA level software. While a lot of backend
libraries lack complete amplifier support, the basic
functions are usually well supported.</p>
<p style="margin-left:11%; margin-top: 1em">Please report
bugs and provide feedback at the e-mail address given in the
<b>BUGS</b> section below. Patches and code enhancements
sent to the same address are welcome.</p>
<h2>OPTIONS
<a name="OPTIONS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">This program
follows the usual GNU command line syntax. Short options
that take an argument may have the value follow immediately
or be separated by a space. Long options starting with two
dashes (’-’) require an ’=’ between
the option and any argument.</p>
<p style="margin-left:11%; margin-top: 1em">Here is a
summary of the supported options: <b><br>
-m</b>, <b>--model</b>=<i>id</i></p>
<p style="margin-left:22%;">Select amplifier model
number.</p>
<p style="margin-left:22%; margin-top: 1em">See model list
(use “ampctl -l”).</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>:
<b>ampctl</b> (or third party software using the C API) will
use amplifier model 2 for <b>NET ampctl</b> (communicating
with <b>ampctld</b>).</p>
<p style="margin-left:11%;"><b>-r</b>,
<b>--amp-file</b>=<i>device</i></p>
<p style="margin-left:22%;">Use <i>device</i> as the file
name of the port connected to the amplifier.</p>
<p style="margin-left:22%; margin-top: 1em">Often a serial
port, but could be a USB to serial adapter. Typically
<i>/dev/ttyS0</i>, <i>/dev/ttyS1</i>, <i>/dev/ttyUSB0</i>,
etc. on Linux, <i>COM1</i>, <i>COM2</i>, etc. on MS Windows.
The BSD flavors and Mac OS/X have their own designations.
See your system’s documentation.</p>
<p style="margin-left:11%;"><b>-s</b>,
<b>--serial-speed</b>=<i>baud</i></p>
<p style="margin-left:22%;">Set serial speed to <i>baud</i>
rate.</p>
<p style="margin-left:22%; margin-top: 1em">Uses maximum
serial speed from amplifier backend capabilities (set by
<b>-m</b> above) as the default.</p>
<p style="margin-left:11%;"><b>-t</b>,
<b>--port</b>=<i>number</i></p>
<p style="margin-left:22%;">Use <i>number</i> as the TCP
listening port.</p>
<p style="margin-left:22%; margin-top: 1em">The default is
4531.</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>: As
<b>rigctld</b>’s default port is 4532 and
<b>rotctld</b>’s default port is 4533, it is
recommended to use DESCENDING odd numbered ports for
multiple <b>ampctld</b> instances, e.g. 4529, 4527, 4525,
etc.</p>
<p style="margin-left:11%;"><b>-T</b>,
<b>--listen-addr</b>=<i>IPADDR</i></p>
<p style="margin-left:22%;">Use <i>IPADDR</i> as the
listening IP address.</p>
<p style="margin-left:22%; margin-top: 1em">The default is
ANY.</p>
<p style="margin-left:11%;"><b>-L</b>,
<b>--show-conf</b></p>
<p style="margin-left:22%;">List all config parameters for
the amplifier defined with <b>-m</b> above.</p>
<p style="margin-left:11%;"><b>-C</b>,
<b>--set-conf</b>=<i>parm=val</i>[<i>,parm=val</i>]</p>
<p style="margin-left:22%;">Set amplifier configuration
parameter(s), e.g. <i>stop_bits=2</i>.</p>
<p style="margin-left:22%; margin-top: 1em">Use the
<b>-L</b> option above for a list of configuration
parameters for a given model number.</p>
<p style="margin-left:11%;"><b>-u</b>,
<b>--dump-caps</b></p>
<p style="margin-left:22%;">Dump capabilities for the
amplifier defined with <b>-m</b> above and exit.</p>
<p style="margin-left:11%;"><b>-l</b>, <b>--list</b></p>
<p style="margin-left:22%;">List all amplifier model
numbers defined in <b>Hamlib</b> and exit.</p>
<p style="margin-left:22%; margin-top: 1em">The list is
sorted by model number.</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>: In
Linux the list can be scrolled back using
<b>Shift-PageUp</b>/<b>Shift-PageDown</b>, or using the
scrollbars of a virtual terminal in X or the cmd window in
Windows. The output can be piped to <b>more</b>(1) or
<b>less</b>(1), e.g. “ampctl -l | more”.</p>
<p style="margin-left:11%;"><b>-v</b>, <b>--verbose</b></p>
<p style="margin-left:22%;">Set verbose mode, cumulative
(see <b>DIAGNOSTICS</b> below).</p>
<p style="margin-left:11%;"><b>-Z</b>,
<b>--debug-time-stamps</b></p>
<p style="margin-left:22%;">Enable time stamps for the
debug messages.</p>
<p style="margin-left:22%; margin-top: 1em">Use only in
combination with the <b>-v</b> option as it generates no
output on its own.</p>
<p style="margin-left:11%;"><b>-h</b>, <b>--help</b></p>
<p style="margin-left:22%;">Show a summary of these options
and exit.</p>
<p style="margin-left:11%;"><b>-V</b>, <b>--version</b></p>
<p style="margin-left:22%;">Show version of <b>ampctl</b>
and exit.</p>
<p style="margin-left:11%; margin-top: 1em"><b>Note</b>:
Some options may not be implemented by a given backend and
will return an error. This is most likely to occur with the
<b>--set-conf</b> and <b>--show-conf</b> options.</p>
<p style="margin-left:11%; margin-top: 1em">Please note
that the backend for the amplifier to be controlled, or the
amplifier itself may not support some commands. In that
case, the operation will fail with a <b>Hamlib</b> error
code.</p>
<h2>COMMANDS
<a name="COMMANDS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Commands can be
sent over the TCP socket either as a single char, or as a
long command name plus the value(s) space separated on one
’\n’ terminated line. See <b>PROTOCOL</b>.</p>
<p style="margin-left:11%; margin-top: 1em">Since most of
the <b>Hamlib</b> operations have a <b>set</b> and a
<b>get</b> method, an upper case letter will be used for
<b>set</b> methods whereas the corresponding lower case
letter refers to the <b>get</b> method. Each operation also
has a long name; prepend a backslash, ’\’, to
send a long command name.</p>
<p style="margin-left:11%; margin-top: 1em">Example (Perl):
“print $socket "\\dump_caps\n";” to
see what the amplifier’s backend can do (<b>Note</b>:
In Perl and many other languages a ’\’ will need
to be escaped with a preceding ’\’ so that even
though two backslash characters appear in the code, only one
will be passed to <b>ampctld</b>. This is a possible bug,
beware!).</p>
<p style="margin-left:11%; margin-top: 1em"><b>Note</b>:
The backend for the amplifier to be controlled, or the
amplifier itself may not support some commands. In that
case, the operation will fail with a <b>Hamlib</b> error
message.</p>
<p style="margin-left:11%; margin-top: 1em">Here is a
summary of the supported commands (In the case of <b>set</b>
commands the quoted italicized string is replaced by the
value in the description. In the case of <b>get</b> commands
the quoted italicized string is the key name of the value
returned.): <b><br>
F</b>, <b>set_freq</b> '<i>Frequency</i>'</p>
<p style="margin-left:22%;">Set '<i>Frequency</i>', in
Hz.</p>
<p style="margin-left:22%; margin-top: 1em">Frequency may
be a floating point or integer value.</p>
<p style="margin-left:11%;"><b>f</b>, <b>get_freq</b></p>
<p style="margin-left:22%;">Get '<i>Frequency</i>', in
Hz.</p>
<p style="margin-left:22%; margin-top: 1em">Returns an
integer value.</p>
<p style="margin-left:11%;"><b>l</b>, <b>get_level</b>
'<i>Level</i>'</p>
<p style="margin-left:22%;">Get '<i>Level Value</i>'.</p>
<p style="margin-left:22%; margin-top: 1em">Returns Level
Value as a float or integer for the Level token given.</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>:
Passing a ’?’ (query) as the first argument
instead of a Level token will return a space separated list
of amplifier backend supported get level tokens. Use this to
determine the supported levels of a given amplifier
backend.</p>
<p style="margin-left:11%;"><b>dump_state</b></p>
<p style="margin-left:22%;">Return certain state
information about the amplifier backend.</p>
<p style="margin-left:11%;"><b>1</b>, <b>dump_caps</b></p>
<p style="margin-left:22%;">Not a real amplifier remote
command, it just dumps capabilities, i.e. what the backend
knows about this model, and what it can do.</p>
<p style="margin-left:22%; margin-top: 1em">TODO: Ensure
this is in a consistent format so it can be read into a
hash, dictionary, etc. Bug reports requested.</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>:
This command will produce many lines of output so be very
careful if using a fixed length array! For example, running
this command against the Dummy backend results in a number
of lines of text output.</p>
<p style="margin-left:11%;"><b>_</b>, <b>get_info</b></p>
<p style="margin-left:22%;">Return information from the
amplifier backend.</p>
<p style="margin-left:11%;"><b>R</b>, <b>reset</b>
'<i>Reset</i>'</p>
<p style="margin-left:22%;">Perform amplifier
'<i>Reset</i>'.</p>
<p style="margin-left:22%; margin-top: 1em">Reset is an
integer value: ’0’ = None, ’1’ =
Memory reset, ’2’ = Fault reset, ’3’
= Amplifier reset.</p>
<p style="margin-left:11%;"><b>set_powerstat</b> '<i>Power
Status</i>'</p>
<p style="margin-left:22%;">Set '<i>Power Status</i>'.</p>
<p style="margin-left:22%; margin-top: 1em">Power Status is
an integer value: ’0’ = Power Off,
’1’ = Power On, ’2’ = Power Standby
(enter standby), ’4’ = Power Operate (leave
standby).</p>
<p style="margin-left:11%;"><b>get_powerstat</b></p>
<p style="margin-left:22%;">Get '<i>Power Status</i>' as in
<b>set_powerstat</b> above.</p>
<h2>PROTOCOL
<a name="PROTOCOL"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">There are two
protocols in use by <b>ampctld</b>, the <b>Default
Protocol</b> and the <b>Extended Response Protocol</b>.</p>
<p style="margin-left:11%; margin-top: 1em">The <b>Default
Protocol</b> is intended primarily for the communication
between <b>Hamlib</b> library functions and <b>ampctld</b>
(“NET ampctl”, available using amplifier model
’2’).</p>
<p style="margin-left:11%; margin-top: 1em">The <b>Extended
Response Protocol</b> is intended to be used with scripts or
other programs interacting directly with <b>ampctld</b> as
consistent feedback is provided.</p>
<p style="margin-left:11%; margin-top: 1em"><b>Default
Protocol</b> <br>
The <b>Default Protocol</b> is intentionally simple.
Commands are entered on a single line with any needed
values. In practice, reliable results are obtained by
terminating each command string with a newline character,
’\n’.</p>
<p style="margin-left:11%; margin-top: 1em">Example set
frequency and mode commands (Perl code (typed text shown in
bold)):</p>
<p style="margin-left:17%; margin-top: 1em"><b>print
$socket "F 14250000\n"; <br>
print $socket "\\set_powerstat 1\n";</b> # escape
leading ’\’</p>
<p style="margin-left:11%; margin-top: 1em">A one line
response will be sent as a reply to <b>set</b> commands,
“RPRT <i>x</i>\n” where <i>x</i> is the Hamlib
error code with ’0’ indicating success of the
command.</p>
<p style="margin-left:11%; margin-top: 1em">Responses from
<b>ampctld get</b> commands are text values and match the
same tokens used in the <b>set</b> commands. Each value is
returned on its own line. On error the string “RPRT
<i>x</i>\n” is returned where <i>x</i> is the Hamlib
error code.</p>
<p style="margin-left:11%; margin-top: 1em">Example get
frequency (Perl code):</p>
<p style="margin-left:17%; margin-top: 1em"><b>print
$socket "f\n";</b> <br>
"14250000\n"</p>
<p style="margin-left:11%; margin-top: 1em">Most <b>get</b>
functions return one to three values. A notable exception is
the <b>dump_caps</b> command which returns many lines of
<b>key</b>:<i>value</i> pairs.</p>
<p style="margin-left:11%; margin-top: 1em">This protocol
is primarily used by the “NET ampctl” (ampctl
model 2) backend which allows applications already written
for Hamlib’s C API to take advantage of <b>ampctld</b>
without the need of rewriting application code. An
application’s user can select amplifier model 2
(“NET ampctl”) and then set <b>amp_pathname</b>
to “localhost:4531” or other network
<i>host</i>:<i>port</i> (set by the <b>-T</b>/<b>-t</b>
options, respectively, above).</p>
<p style="margin-left:11%; margin-top: 1em"><b>Extended
Response Protocol</b> <br>
The Extended Response protocol adds several rules to the
strings returned by <b>ampctld</b> and adds a rule for the
command syntax.</p>
<p style="margin-left:11%; margin-top: 1em">1. The command
received by <b>ampctld</b> is echoed with its long command
name followed by the value(s) (if any) received from the
client terminated by the specified response separator as the
first record of the response.</p>
<p style="margin-left:11%; margin-top: 1em">2. The last
record of each block is the string “RPRT
<i>x</i>\n” where <i>x</i> is the numeric return value
of the Hamlib backend function that was called by the
command.</p>
<p style="margin-left:11%; margin-top: 1em">3. Any records
consisting of data values returned by the amplifier backend
are prepended by a string immediately followed by a colon
then a space and then the value terminated by the response
separator. e.g. “Frequency: 14250000\n” when the
command was prepended by ’+’.</p>
<p style="margin-left:11%; margin-top: 1em">4. All commands
received will be acknowledged by <b>ampctld</b> <br>
with records from rules 1 and 2. Records from rule 3 are
only returned when data values must be returned to the
client.</p>
<p style="margin-left:11%; margin-top: 1em">4. All commands
received will be acknowledged by <b>ampctld</b> with records
from rules 1 and 2. Records from rule 3 are only returned
when data values must be returned to the client.</p>
<p style="margin-left:11%; margin-top: 1em">An example
response to a <b>set_frequency</b> command sent from the
shell prompt (note the prepended ’+’):</p>
<p style="margin-left:17%; margin-top: 1em">$ <b>echo
"+F 14250000" | nc -w 1 localhost 4531</b> <br>
set_freq: 14250000 <br>
RPRT 0</p>
<p style="margin-left:11%; margin-top: 1em">In this case
the long command name and values are returned on the first
line and the second line contains the end of block marker
and the numeric amplifier backend return value indicating
success.</p>
<p style="margin-left:11%; margin-top: 1em">An example
response to a <b>get_freq</b> query:</p>
<p style="margin-left:17%; margin-top: 1em">$ <b>echo
"+\get_freq" | nc -w 1 localhost 4531</b> <br>
get_freq: <br>
Frequency(Hz): 14250000 <br>
RPRT 0</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>:
The ’\’ is still required for the long command
name even with the ERP character.</p>
<p style="margin-left:11%; margin-top: 1em">In this case,
as no value is passed to <b>ampctld</b>, the first line
consists only of the long command name. The final line shows
that the command was processed successfully by the amplifier
backend.</p>
<p style="margin-left:11%; margin-top: 1em">Invoking the
Extended Response Protocol requires prepending a command
with a punctuation character. As shown in the examples
above, prepending a ’+’ character to the command
results in the responses being separated by a newline
character (’\n’). Any other punctuation
character recognized by the C <b>ispunct</b>() function
except ’\’, ’?’, or ’_’
will cause that character to become the response separator
and the entire response will be on one line.</p>
<p style="margin-left:11%; margin-top: 1em">Separator
character summary:</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="4%">
<p>’<b>+</b>’</p></td>
<td width="7%"></td>
<td width="78%">
<p>Each record of the response is appended with a newline
(’\n’).</p> </td></tr>
</table>
<p style="margin-left:11%;">’<b>;</b>’,
’<b>|</b>’, or, ’<b>,</b>’</p>
<p style="margin-left:22%;">Each record of the response is
appended by the given character resulting in entire response
on one line.</p>
<p style="margin-left:22%; margin-top: 1em">These are
common record separators for text representations of
spreadsheet data, etc.</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="4%">
<p>’<b>?</b>’</p></td>
<td width="7%"></td>
<td width="78%">
<p>Reserved for help in <b>ampctl</b>.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="4%">
<p>’<b>_</b>’</p></td>
<td width="7%"></td>
<td width="78%">
<p>Reserved for <b>get_info</b> short command</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="4%">
<p>’<b>#</b>’</p></td>
<td width="7%"></td>
<td width="78%">
<p>Reserved for comments when reading a command file
script.</p> </td></tr>
</table>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>:
Other punctuation characters have not been tested! Use at
your own risk.</p>
<p style="margin-left:11%; margin-top: 1em">For example,
invoking a <b>get_freq</b> query with a leading
’;’ returns:</p>
<p style="margin-left:17%; margin-top: 1em">get_freq:;Frequency(Hz):
14250000;RPRT 0</p>
<p style="margin-left:11%; margin-top: 1em">Or, using the
pipe character ’|’ returns:</p>
<p style="margin-left:17%; margin-top: 1em">get_freq:|Frequency(Hz):
14250000|RPRT 0</p>
<p style="margin-left:11%; margin-top: 1em">And a
<b>set_freq</b> command prepended with a ’|’
returns:</p>
<p style="margin-left:17%; margin-top: 1em">set_freq:
14250000|RPRT 0</p>
<p style="margin-left:11%; margin-top: 1em">Such a format
will allow reading a response as a single event using a
preferred response separator. Other punctuation characters
have not been tested!</p>
<h2>DIAGNOSTICS
<a name="DIAGNOSTICS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">The <b>-v</b>,
<b>--verbose</b> option allows different levels of
diagnostics to be output to <b>stderr</b> and correspond to
-v for <b>BUG</b>, -vv for <b>ERR</b>, -vvv for <b>WARN</b>,
-vvvv for <b>VERBOSE</b>, or -vvvvv for <b>TRACE</b>.</p>
<p style="margin-left:11%; margin-top: 1em">A given verbose
level is useful for providing needed debugging information
to the email address below. For example, TRACE output shows
all of the values sent to and received from the amplifier
which is very useful for amplifier backend library
development and may be requested by the developers.</p>
<h2>EXAMPLES
<a name="EXAMPLES"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Start
<b>ampctld</b> for an Elecraft KPA-1500 using a
USB-to-serial adapter and backgrounding:</p>
<p style="margin-left:17%; margin-top: 1em">$ <b>ampctld -m
201 -r /dev/ttyUSB1 &</b></p>
<p style="margin-left:11%; margin-top: 1em">Start
<b>ampctld</b> for an Elecraft KPA-1500 using COM2 on MS
Windows:</p>
<p style="margin-left:17%; margin-top: 1em">$ <b>ampctld -m
201 -r COM2</b></p>
<p style="margin-left:11%; margin-top: 1em">Connect to the
already running <b>ampctld</b> and set the frequency to
14.266 MHz with a 1 second read timeout using the default
protocol from the shell prompt:</p>
<p style="margin-left:17%; margin-top: 1em">$ <b>echo
"\set_freq 14266000" | nc -w 1 localhost
4531</b></p>
<p style="margin-left:11%; margin-top: 1em">Connect to a
running <b>ampctld</b> with <b>ampctl</b> on the local
host:</p>
<p style="margin-left:17%; margin-top: 1em">$ <b>ampctl
-m2</b></p>
<h2>SECURITY
<a name="SECURITY"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">No
authentication whatsoever; DO NOT leave this TCP port open
wide to the Internet. Please ask if stronger security is
needed or consider using a Secure Shell (<b>ssh</b>(1))
tunnel.</p>
<p style="margin-left:11%; margin-top: 1em">As
<b>ampctld</b> does not need any greater permissions than
<b>ampctl</b>, it is advisable to not start <b>ampctld</b>
as “root” or another system user account in
order to limit any vulnerability.</p>
<h2>BUGS
<a name="BUGS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">The daemon is
not detaching and backgrounding itself.</p>
<p style="margin-left:11%; margin-top: 1em">No method to
exit the daemon so the <b>kill</b>(1) command must be used
to terminate it.</p>
<p style="margin-left:11%; margin-top: 1em">Multiple
clients using the daemon may experience contention with the
connected amplifier.</p>
<p style="margin-left:11%; margin-top: 1em">Report bugs
to:</p>
<p style="margin-left:22%;"><a href="mailto:hamlib-developer@lists.sourceforge.net">Hamlib
Developer mailing list </a></p>
<h2>COPYING
<a name="COPYING"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">This file is
part of Hamlib, a project to develop a library that
simplifies radio, rotator, and amplifier control functions
for developers of software primarily of interest to radio
amateurs and those interested in radio communications.</p>
<p style="margin-left:11%; margin-top: 1em">Copyright
© 2000-2010 Stephane Fillod <br>
Copyright © 2000-2018 the Hamlib Group (various
contributors) <br>
Copyright © 2011-2020 Nate Bargmann</p>
<p style="margin-left:11%; margin-top: 1em">This is free
software; see the file COPYING for copying conditions. There
is NO warranty; not even for MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.</p>
<h2>SEE ALSO
<a name="SEE ALSO"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>kill</b>(1),
<b>ampctl</b>(1), <b>ssh</b>(1), <b>hamlib</b>(7)</p>
<h2>COLOPHON
<a name="COLOPHON"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Links to the
Hamlib Wiki, Git repository, release archives, and daily
snapshot archives are available via
<a href="http://www.hamlib.org">hamlib.org</a>.</p>
<hr>
</body>
</html>
================================================
FILE: software/hamlib-w64-4.5~git/doc/hamlib-primer.7.html
================================================
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Wed May 18 09:31:53 2022 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
h1 { text-align: center }
</style>
<title>HAMLIB-PRIMER</title>
</head>
<body>
<h1 align="center">HAMLIB-PRIMER</h1>
<a href="#NAME">NAME</a><br>
<a href="#DESCRIPTION">DESCRIPTION</a><br>
<a href="#COPYING">COPYING</a><br>
<a href="#SEE ALSO">SEE ALSO</a><br>
<a href="#COLOPHON">COLOPHON</a><br>
<hr>
<h2>NAME
<a name="NAME"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">hamlib-primer -
compiling and using the radio and rotator control
library</p>
<h2>DESCRIPTION
<a name="DESCRIPTION"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">There are
several ways to obtain a working installation of Hamlib. The
following sections discuss installing from a package
manager, building from source, and installing Hamlib project
supplied binaries on Microsoft Windows®</p>
<p style="margin-left:11%; margin-top: 1em"><b>Installing
binary packages on Linux and BSD</b> <br>
The easiest way to install a released version of Hamlib on a
Linux based distribution or a BSD variant is through the
provided <i>package manager</i>. While package managers vary
according to the distribution (it’s easy to lump BSD
variants in this group too) their end goal is to provide
ready to use software packages. Since such a wide variety of
package managers exist, it is best to recommend that the
documentation for your chosen distribution be your
guide.</p>
<p style="margin-left:11%; margin-top: 1em"><b>A variety of
Hamlib sources</b> <br>
Distribution packages are most often official Hamlib
releases and in some cases could be quite old and lacking
support for newer radios or rotators. In some cases support
is improved in existing radio or rotator back ends and bugs
are fixed in newer releases. Often times to get the improved
support/bug fixes, building from source will be required.
Relax, it’s not hard. :-)</p>
<p style="margin-left:11%; margin-top: 1em">Source code is
available as official releases, testing snapshots, daily
development snapshots, and the bleeding edge of development
directly from the
<a href="https://github.com/Hamlib/Hamlib">Git
repository</a>. As a rule, even the bleeding edge tarballs
should configure and compile without error even though
certain implementation work may be in progress and may be
incomplete or have errors.</p>
<p style="margin-left:11%; margin-top: 1em"><b>Getting
released source</b> <br>
Official Hamlib source releases, commonly called
<i>tarballs</i> can be found on the
<a href="http://sourceforge.net/projects/hamlib/files/hamlib/">SourceForge.net
Hamlib files</a> Web page. The most recent release is listed
first.</p>
<p style="margin-left:11%; margin-top: 1em"><b>Getting
source snapshots</b> <br>
Testing release candidates (RCs) are posted during the
period (often a few weeks) before a planned release.
Beginning with the 4.0 release, RCs are hosted by the
<a href="http://sourceforge.net/projects/hamlib/files/hamlib/">SourceForge.net
Hamlib files</a> Web page. RCs are identifed by having a
<i>~rcX</i> suffix where the <i>X</i> is replace by a
numeral for successive release candidates.</p>
<p style="margin-left:11%; margin-top: 1em">Daily snapshots
of the development repository are available via the World
Wide Web from
<a href="http://n0nb.users.sourceforge.net/">Hamlib Git
daily snapshots</a>. These are not official releases but are
provided for testing new features and bug fixes.</p>
<p style="margin-left:11%; margin-top: 1em">The daily
development snapshot is made and posted each day by around
1030 UTC. Daily snapshots <i>should</i> compile but
sometimes a bug creeps in that prevents compilation. If that
should happen, please report it to the
<a href="mailto:hamlib-developer@@lists.sourceforge.net">hamlib-developer
mailing list</a>.</p>
<p style="margin-left:11%; margin-top: 1em"><b>Git
repository</b> <br>
The source repository can be <i>cloned</i> which copies the
repository to your computer including its entire history,
branches, and release tag information. In other words, once
the <b>git</b>(1) <b>clone</b> command is finished a
complete copy of the Hamlib development will be on your
computer. You can do quite a lot with this as nothing is
hidden from view since the entire history of Hamlib is right
there all the way from the very first commit to the present.
None of the meta-data is hidden away on some central
server.</p>
<p style="margin-left:11%; margin-top: 1em">To clone the
repository use the following command:</p>
<p style="margin-left:17%; margin-top: 1em"><b>git clone
https://git.code.sf.net/p/hamlib/code hamlib</b></p>
<p style="margin-left:11%; margin-top: 1em">or:</p>
<p style="margin-left:17%; margin-top: 1em"><b>git clone
https://github.com/Hamlib/Hamlib.git</b></p>
<p style="margin-left:11%; margin-top: 1em">Odds are that
you will want to run the above command in a sub directory of
your home directory. The <i>hamlib</i> directory will be
created by Git and the <i>master</i> branch will be checked
out for you as the <i>working copy</i>. The master branch is
one of several branches used in Hamlib development. It is
the main branch of new features and bug fixes. The working
copy will be the latest revision of every file at the time
of the clone. Later updates from the developers will require
using another Git command to update your local
repository.</p>
<p style="margin-left:11%; margin-top: 1em"><b>Building
from source</b> <br>
Building from source will be required for various reasons.
Perhaps only an older release is provided by your
distribution, or you would like to test recent changes to
Hamlib—either a specific back end or API
changes—and offer a report to the developers, or you
would like to take part in development and offer your
contribution to the project, or you would just like to learn
how to build a relatively comprehensive package from source.
Any is a good reason to build from the source code
archive.</p>
<p style="margin-left:11%; margin-top: 1em">Before going
further, this manual assumes familiarity with working from
the command prompt in a Linux/BSD/Unix like system’s
<i>Bourne shell</i> environment (compatible Bourne shells
include <b>bash</b>(1), <b>ksh</b>(1), <b>zsh</b>(1), and
several more) either in a <i>virtual console</i> (a text
only screen with no graphics) or in a <i>terminal</i> in a
desktop environment (<b>xterm</b>(1), <b>rxvt</b>(1),
<b>konsole</b>(1) (included with the KDE desktop),
<b>gnome-terminal</b>(1), <b>xfce4-terminal</b>(1),
<b>terminal</b>(1) (included in macOS), etc.). If this is
new to you, take some time and read up on using the shell. A
good tutorial can be found at
<a href="http://linuxcommand.org/">LinuxCommand.org</a>
which also offers an in-depth book that can be purchased or
downloaded for no cost (the Hamlib project is not associated
with nor has any interest in the sale of this book, it just
looks like a very good effort on the part of its
author).</p>
<p style="margin-left:11%; margin-top: 1em">Let’s get
started.</p>
<p style="margin-left:11%; margin-top: 1em"><b>Compiling
source tarballs</b> <br>
Before proceeding, it is essential to read the information
in the files, <i>README</i>, <i>INSTALL</i>, and
<i>README.betatester</i> supplied in the Hamlib
<i>top-level</i> directory which will be named something
like <i>hamlib-3.3~git</i> where the latter part is the
release version. In this case the <i>3.3~git</i> indicates
this is a development snapshot of the Git master branch.
These files provide detailed information for compiling
Hamlib and will vary some from release to release.</p>
<p style="margin-left:11%; margin-top: 1em">Compiling from
a source tarball whether it is an official release or a
testing or daily development snapshot follows the same set
of commands, known as the <i>three step</i> which are each
run from the top-level directory:</p>
<p style="margin-left:17%; margin-top: 1em"><b>./configure
<br>
make <br>
sudo make install</b></p>
<p style="margin-left:11%; margin-top: 1em"><b>configure</b>
<br>
The <i>./</i><b>configure</b> command examines your system
and checks it for any packages that are required or good to
have options for compiling Hamlib. The leading <i>./</i>
tells the shell to only run the <b>configure</b> command
found in the current directory. It is always possible that a
<b>configure</b> command could be lurking elsewhere and we
don’t want to run that!</p>
<p style="margin-left:11%; margin-top: 1em">Run:</p>
<p style="margin-left:17%; margin-top: 1em"><b>./configure</b></p>
<p style="margin-left:11%; margin-top: 1em">from the
top-level directory.</p>
<p style="margin-left:22%; margin-top: 1em"><b>Note</b>:
Some distributions are configured so commands can only be
run from directories listed in the <b>PATH</b> environment
variable. The <i>./</i> is necessary or the <b>configure</b>
command will not be run as the <i>current directory</i>
(defined as <i>.</i>) is not in the <b>PATH</b>. This is
considered a default security feature so that only programs
provided by the distribution are run. <b>PATH</b> can be
modified for your own session, but that is a topic for the
LinuxCommand.org reference above.</p>
<p style="margin-left:11%; margin-top: 1em">Of course,
things are usually complicated a bit by options and Hamlib
is no exception. The good news is that the defaults, i.e.,
no options, work well in most situations. Options are needed
to enable the compilation of certain portions of Hamlib such
as the language bindings. Optional features usually require
that more development tools are installed. The
<i>INSTALL</i> and <i>README.betatester</i> files in the
Hamlib top-level directory will have details on the options
available for that release.</p>
<p style="margin-left:11%; margin-top: 1em">A useful option
is <b>--prefix</b> which tells <b>configure</b> where in the
file system hierarchy Hamlib should be installed. If it is
not given, Hamlib will be installed in the <i>/usr/local</i>
file system hierarchy. Perhaps y
gitextract_dder1ce_/
├── LICENSE
├── README.md
├── README_cn.md
├── firmware/
│ ├── flash_dump.sh
│ ├── flash_erase.sh
│ └── flash_write.sh
├── software/
│ └── hamlib-w64-4.5~git/
│ ├── AUTHORS.txt
│ ├── AntRunner_Start_Serial.bat
│ ├── AntRunner_Start_WiFi.bat
│ ├── COPYING.LIB.txt
│ ├── COPYING.txt
│ ├── ChangeLog.txt
│ ├── LICENSE.txt
│ ├── README.betatester.txt
│ ├── README.txt
│ ├── README.w64-bin.txt
│ ├── THANKS.txt
│ ├── doc/
│ │ ├── ampctl.1.html
│ │ ├── ampctld.1.html
│ │ ├── hamlib-primer.7.html
│ │ ├── hamlib-utilities.7.html
│ │ ├── hamlib.7.html
│ │ ├── rigctl.1.html
│ │ ├── rigctlcom.1.html
│ │ ├── rigctld.1.html
│ │ ├── rigmem.1.html
│ │ ├── rigsmtr.1.html
│ │ ├── rigswr.1.html
│ │ ├── rotctl.1.html
│ │ └── rotctld.1.html
│ ├── include/
│ │ └── hamlib/
│ │ ├── amplifier.h
│ │ ├── amplist.h
│ │ ├── config.h
│ │ ├── rig.h
│ │ ├── rig_dll.h
│ │ ├── riglist.h
│ │ ├── rotator.h
│ │ └── rotlist.h
│ └── lib/
│ ├── gcc/
│ │ └── libhamlib.dll.a
│ └── msvc/
│ └── libhamlib-4.def
└── structure/
├── L-Bracket-42-v1.2.STL
└── Rotator-Bottom-v0.2.STL
SYMBOL INDEX (147 symbols across 7 files)
FILE: software/hamlib-w64-4.5~git/include/hamlib/amplifier.h
type amp_state (line 51) | struct amp_state
type AMP (line 64) | typedef struct amp AMP;
type swr_t (line 80) | typedef float swr_t;
type tune_value_t (line 100) | typedef int tune_value_t;
type amp_reset_t (line 110) | typedef enum
type amp_type_t (line 121) | typedef enum
type amp_level_e (line 139) | enum amp_level_e
type amp_caps (line 187) | struct amp_caps
type amp_state (line 275) | struct amp_state
type amp (line 310) | struct amp
type amp_caps (line 370) | struct amp_caps
type amp_caps (line 376) | struct amp_caps
type confparams (line 398) | struct confparams
type amp_caps (line 406) | struct amp_caps
type confparams (line 413) | struct confparams
type confparams (line 424) | struct confparams
FILE: software/hamlib-w64-4.5~git/include/hamlib/amplist.h
type amp_model_t (line 115) | typedef int amp_model_t;
FILE: software/hamlib-w64-4.5~git/include/hamlib/config.h
type option (line 444) | struct option
type option (line 446) | struct option
type timezone (line 458) | struct timezone {
type timeval (line 463) | struct timeval
type timezone (line 463) | struct timezone
type addrinfo (line 508) | struct addrinfo {
type addrinfo (line 540) | struct addrinfo
type addrinfo (line 540) | struct addrinfo
type addrinfo (line 541) | struct addrinfo
FILE: software/hamlib-w64-4.5~git/include/hamlib/rig.h
type rig_errcode_e (line 140) | enum rig_errcode_e {
type rig_debug_level_e (line 185) | enum rig_debug_level_e {
type rig (line 200) | struct rig
type rig_state (line 201) | struct rig_state
type RIG (line 206) | typedef struct s_rig RIG;
type tone_t (line 246) | typedef unsigned int tone_t;
type rig_port_t (line 252) | typedef enum rig_port_e {
type serial_parity_e (line 273) | enum serial_parity_e {
type serial_handshake_e (line 285) | enum serial_handshake_e {
type serial_control_state_e (line 295) | enum serial_control_state_e {
type rig_type_t (line 305) | typedef enum {
type agc_level_e (line 323) | enum agc_level_e {
type rig_status_e (line 354) | enum rig_status_e {
type rptr_shift_t (line 374) | typedef enum {
type split_t (line 384) | typedef enum {
type freq_t (line 395) | typedef double freq_t;
type shortfreq_t (line 417) | typedef signed long shortfreq_t;
type vfo_t (line 455) | typedef unsigned int vfo_t;
type shortfreq_t (line 587) | typedef shortfreq_t pbwidth_t;
type dcd_t (line 593) | typedef enum dcd_e {
type dcd_type_t (line 604) | typedef enum {
type ptt_t (line 620) | typedef enum {
type ptt_type_t (line 633) | typedef enum {
type powerstat_t (line 649) | typedef enum {
type reset_t (line 661) | typedef enum {
type vfo_op_t (line 685) | typedef enum {
type hamlib_band_t (line 709) | typedef enum { // numbers here reflect the Yaesu values
type scan_t (line 738) | typedef enum {
type token_t (line 754) | typedef long token_t;
type rig_conf_e (line 776) | enum rig_conf_e {
type confparams (line 793) | struct confparams {
type ann_t (line 818) | typedef enum {
type ant_t (line 875) | typedef unsigned int ant_t;
type meter_level_e (line 899) | enum meter_level_e {
type value_t (line 918) | typedef union {
type rig_level_e (line 940) | typedef uint64_t rig_level_e;
type rig_parm_e (line 1028) | enum rig_parm_e {
type cookie_e (line 1049) | enum cookie_e {
type multicast_item_e (line 1059) | enum multicast_item_e {
type setting_t (line 1079) | typedef uint64_t setting_t;
type rmode_t (line 1237) | typedef uint64_t rmode_t;
type freq_range_t (line 1329) | typedef struct freq_range_list {
type tuning_step_list (line 1361) | struct tuning_step_list {
type filter_list (line 1396) | struct filter_list {
type ext_list (line 1428) | struct ext_list {
type channel (line 1445) | struct channel {
type channel_t (line 1482) | typedef struct channel channel_t;
type channel_cap (line 1489) | struct channel_cap {
type channel_cap_t (line 1523) | typedef struct channel_cap channel_cap_t;
type chan_type_t (line 1536) | typedef enum {
type chan_list (line 1561) | struct chan_list {
type chan_t (line 1582) | typedef struct chan_list chan_t;
type gran (line 1596) | struct gran {
type gran_t (line 1605) | typedef struct gran gran_t;
type cal_table (line 1611) | struct cal_table {
type cal_table_t (line 1631) | typedef struct cal_table cal_table_t;
type cal_table_float (line 1641) | struct cal_table_float {
type cal_table_float_t (line 1661) | typedef struct cal_table_float cal_table_float_t;
type confparams (line 1668) | struct confparams
type rig_spectrum_scope (line 1676) | struct rig_spectrum_scope
type rig_spectrum_mode_e (line 1685) | enum rig_spectrum_mode_e {
type rig_spectrum_avg_mode (line 1696) | struct rig_spectrum_avg_mode
type rig_spectrum_line (line 1713) | struct rig_spectrum_line
type rig_caps (line 1756) | struct rig_caps {
type rig_function_e (line 2060) | enum rig_function_e {
type rig_function_e (line 2156) | enum rig_function_e
type rig_caps_int_e (line 2164) | enum rig_caps_int_e {
type rig_caps_cptr_e (line 2172) | enum rig_caps_cptr_e {
type rig_caps_int_e (line 2184) | enum rig_caps_int_e
type rig_caps_cptr_e (line 2191) | enum rig_caps_cptr_e
type hamlib_async_pipe (line 2193) | struct hamlib_async_pipe
type hamlib_async_pipe_t (line 2195) | typedef struct hamlib_async_pipe hamlib_async_pipe_t;
type hamlib_port_t (line 2207) | typedef struct hamlib_port {
type hamlib_port_t_deprecated (line 2281) | typedef struct hamlib_port_deprecated {
type hamlib_port_t_deprecated (line 2344) | typedef hamlib_port_t_deprecated port_t_deprecated;
type hamlib_port_t (line 2345) | typedef hamlib_port_t port_t;
type hamlib_cache_t (line 2354) | typedef enum {
type twiddle_state_t (line 2364) | typedef enum {
type rig_cache (line 2374) | struct rig_cache {
type rig_state (line 2459) | struct rig_state {
type rig_debug_level_e (line 2577) | enum rig_debug_level_e
type rig_spectrum_line (line 2593) | struct rig_spectrum_line
type rig_callbacks (line 2615) | struct rig_callbacks {
type s_rig (line 2643) | struct s_rig {
type confparams (line 2976) | struct confparams
type confparams (line 2980) | struct confparams
type confparams (line 2994) | struct confparams
type rig_caps (line 3232) | struct rig_caps
type rig_debug_level_e (line 3263) | enum rig_debug_level_e
type rig_debug_level_e (line 3271) | enum rig_debug_level_e
type rig_debug_level_e (line 3296) | enum rig_debug_level_e
type rig_caps (line 3307) | struct rig_caps
type rig_caps (line 3313) | struct rig_caps
type agc_level_e (line 3347) | enum agc_level_e
type agc_level_e (line 3348) | enum agc_level_e
type agc_level_e (line 3349) | enum agc_level_e
type agc_level_e (line 3350) | enum agc_level_e
type rig_status_e (line 3354) | enum rig_status_e
type rig_spectrum_mode_e (line 3356) | enum rig_spectrum_mode_e
type rig_useconds_t (line 3385) | typedef unsigned long rig_useconds_t;
type cookie_e (line 3388) | enum cookie_e
FILE: software/hamlib-w64-4.5~git/include/hamlib/riglist.h
type rig_model_t (line 668) | typedef uint32_t rig_model_t;
FILE: software/hamlib-w64-4.5~git/include/hamlib/rotator.h
type rot_state (line 50) | struct rot_state
type ROT (line 62) | typedef struct s_rot ROT;
type elevation_t (line 74) | typedef float elevation_t;
type azimuth_t (line 86) | typedef float azimuth_t;
type rot_reset_t (line 111) | typedef int rot_reset_t;
type rot_type_t (line 117) | typedef enum {
type rot_status_t (line 221) | typedef enum {
type rot_level_e (line 261) | enum rot_level_e {
type rot_parm_e (line 293) | enum rot_parm_e {
type rot_caps (line 351) | struct rot_caps {
type rot_state (line 473) | struct rot_state {
type s_rot (line 524) | struct s_rot {
type rot_caps (line 671) | struct rot_caps
type rot_caps (line 677) | struct rot_caps
type confparams (line 699) | struct confparams
type confparams (line 726) | struct confparams
type confparams (line 730) | struct confparams
type rot_caps (line 737) | struct rot_caps
FILE: software/hamlib-w64-4.5~git/include/hamlib/rotlist.h
type rot_model_t (line 646) | typedef int rot_model_t;
Condensed preview — 42 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (761K chars).
[
{
"path": "LICENSE",
"chars": 35140,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "README.md",
"chars": 13900,
"preview": "# AntRunner\n[中文](./README_cn.md)\n * [Introduce](#introduce)\n * [Feature](#feature)\n * [Specification](#specification)\n *"
},
{
"path": "README_cn.md",
"chars": 5489,
"preview": "# AntRunner 天线旋转器\n[English](./README.md)\n * [介绍](#介绍)\n * [特性](#特性)\n * [规格](#规格)\n * [使用教程](#使用教程)\n * [系统原理说明](#系统原理说明)\n *"
},
{
"path": "firmware/flash_dump.sh",
"chars": 91,
"preview": "#!/bin/bash\n\nesptool.py -b 115200 -p /dev/ttyUSB0 read_flash 0x0 0x400000 flash_image.bin\n\n"
},
{
"path": "firmware/flash_erase.sh",
"chars": 63,
"preview": "#!/bin/bash\n\nesptool.py -b 115200 -p /dev/ttyUSB0 erase_flash\n\n"
},
{
"path": "firmware/flash_write.sh",
"chars": 491,
"preview": "#!/bin/bash\n\nESPTOOL=esptool.py\n\n\n#SER_PORT=COM32 #on windows with git-bash\n\nSER_PORT=/dev/ttyUSB0\n#SER_PORT=/dev/ttyUSB"
},
{
"path": "software/hamlib-w64-4.5~git/AUTHORS.txt",
"chars": 7392,
"preview": "This file is licensed to you under the license specified in the included file\n`COPYING'. Look there for further details."
},
{
"path": "software/hamlib-w64-4.5~git/AntRunner_Start_Serial.bat",
"chars": 91,
"preview": ".\\bin\\rotctld.exe -vvvvv -m 2401 -r COM1\n::.\\bin\\rotctld.exe -vvvvv -m 601 -r COM470\npause\n"
},
{
"path": "software/hamlib-w64-4.5~git/AntRunner_Start_WiFi.bat",
"chars": 77,
"preview": ".\\bin\\rotctld.exe -vvvvv -m 2402 --set-conf=rot_pathname=\"192.168.123.163:23\""
},
{
"path": "software/hamlib-w64-4.5~git/COPYING.LIB.txt",
"chars": 26530,
"preview": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 19"
},
{
"path": "software/hamlib-w64-4.5~git/COPYING.txt",
"chars": 18092,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
},
{
"path": "software/hamlib-w64-4.5~git/ChangeLog.txt",
"chars": 520,
"preview": "For a complete log of changes to Hamlib, please visit:\n\nhttp://sourceforge.net/p/hamlib/code/commit_browser\n\nMajor chang"
},
{
"path": "software/hamlib-w64-4.5~git/LICENSE.txt",
"chars": 2416,
"preview": "Hamlib - Ham Radio Control Libraries\n\nCopyright (C) 2000,2001 Frank Singleton\nCopyright (C) 2000,2001 Stephane Fillod\n"
},
{
"path": "software/hamlib-w64-4.5~git/README.betatester.txt",
"chars": 13223,
"preview": "Hamlib - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com)\n (C) Stephane Fillod 2000-2011\n (C) The Hamlib "
},
{
"path": "software/hamlib-w64-4.5~git/README.txt",
"chars": 6481,
"preview": "Hamlib - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com)\n (C) Stephane Fillod 2000-2011\n (C) The Hamlib "
},
{
"path": "software/hamlib-w64-4.5~git/README.w64-bin.txt",
"chars": 5582,
"preview": "What is it?\n===========\n\nThis ZIP archive or Windows installer contains a build of Hamlib-4.5~git\ncross-compiled for MS "
},
{
"path": "software/hamlib-w64-4.5~git/THANKS.txt",
"chars": 1083,
"preview": "\nThis file lists people who contributed indirectly to Hamlib, by generously\nmaking information available. Be they thanke"
},
{
"path": "software/hamlib-w64-4.5~git/doc/ampctl.1.html",
"chars": 23478,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:51 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/doc/ampctld.1.html",
"chars": 26368,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:52 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/doc/hamlib-primer.7.html",
"chars": 24980,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:53 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/doc/hamlib-utilities.7.html",
"chars": 22867,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:53 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/doc/hamlib.7.html",
"chars": 12792,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:53 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/doc/rigctl.1.html",
"chars": 53248,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:52 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/doc/rigctlcom.1.html",
"chars": 14324,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:52 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/doc/rigctld.1.html",
"chars": 54830,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:52 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/doc/rigmem.1.html",
"chars": 10819,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:52 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/doc/rigsmtr.1.html",
"chars": 11491,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:52 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/doc/rigswr.1.html",
"chars": 11114,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:52 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/doc/rotctl.1.html",
"chars": 28626,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:53 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/doc/rotctld.1.html",
"chars": 31947,
"preview": "<!-- Creator : groff version 1.22.4 -->\n<!-- CreationDate: Wed May 18 09:31:53 2022 -->\n<!DOCTYPE html PUBLIC \"-//W3"
},
{
"path": "software/hamlib-w64-4.5~git/include/hamlib/amplifier.h",
"chars": 15066,
"preview": "/*\n * Hamlib Interface - Amplifier API header\n * Copyright (c) 2000-2005 by Stephane Fillod\n *\n *\n * This library is"
},
{
"path": "software/hamlib-w64-4.5~git/include/hamlib/amplist.h",
"chars": 3676,
"preview": "/*\n * Hamlib Interface - list of known amplifiers\n * Copyright (c) 2000-2011 by Stephane Fillod\n * Copyright (c) 2000"
},
{
"path": "software/hamlib-w64-4.5~git/include/hamlib/config.h",
"chars": 14606,
"preview": "/* include/hamlib/config.h. Generated from config.h.in by configure. */\n/* include/hamlib/config.h.in. Generated from"
},
{
"path": "software/hamlib-w64-4.5~git/include/hamlib/rig.h",
"chars": 140091,
"preview": "/*\n * Hamlib Interface - API header\n * Copyright (c) 2000-2003 by Frank Singleton\n * Copyright (c) 2000-2012 by Steph"
},
{
"path": "software/hamlib-w64-4.5~git/include/hamlib/rig_dll.h",
"chars": 2736,
"preview": "/*\n * Hamlib Win32 DLL build definitions\n * Copyright (c) 2001-2009 by Stephane Fillod\n *\n *\n * This library is free"
},
{
"path": "software/hamlib-w64-4.5~git/include/hamlib/riglist.h",
"chars": 26077,
"preview": "/*\n * Hamlib Interface - list of known rigs\n * Copyright (c) 2000-2003 by Frank Singleton\n * Copyright (c) 2000-2015 "
},
{
"path": "software/hamlib-w64-4.5~git/include/hamlib/rotator.h",
"chars": 29750,
"preview": "/*\n * Hamlib Interface - Rotator API header\n * Copyright (c) 2000-2005 by Stephane Fillod\n *\n *\n * This library is f"
},
{
"path": "software/hamlib-w64-4.5~git/include/hamlib/rotlist.h",
"chars": 18202,
"preview": "/*\n * Hamlib Interface - list of known rotators\n * Copyright (c) 2000-2011 by Stephane Fillod\n * Copyright (c) 2000-2"
},
{
"path": "software/hamlib-w64-4.5~git/lib/msvc/libhamlib-4.def",
"chars": 13042,
"preview": "EXPORTS\n CRC32_function @1\n add2debugmsgsave @2\n amp_check_backend @3\n amp_cleanup @4\n amp_close @5\n a"
}
]
// ... and 3 more files (download for full content)
About this extraction
This page contains the full source code of the wuxx/AntRunner GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 42 files (709.8 KB), approximately 211.1k tokens, and a symbol index with 147 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.