This library is designed for amateur radio application designers, and provides object-orientated for radio related formulae, and callsign analysis. The library currently targets Perl, but may be expanded to include C++, C, Java and PHP in the future.
The mission statement is to create a general-purpose, object-orientated Perl library for the development of any user application. We already have support for getting the meaning of any QCode, and validating and analyzing many callsigns, plus some basic formulae.
- QCode lookups
- Limited callsign analysis
- Ohm's law calculations
- RF field strength calculation
- Worldwide band information (powers, upper and lower frequency limits)
What is this repository for?
- This repository contains the Perl library source code and all test suites
- Several simple example programs
- Version 0.3.0
How do I get set up?
You will need the following Daybo Logic shared code: * Daybo::Shared https://bitbucket.org/daybologic/libdaybo-shared-perl
All tests can be run by typing:
perl Makefile.PL && make test
To see the more verbose output of an individual test, use
For debugging, use:
PERL5LIB=lib:t/lib TEST\_VERBOSE=1 t/test.t
perl Makefile.PL && make install
Alternatively, build the package within pbuilder or sbuild. Additionally, we supply pre-built .deb files at https://bitbucket.org/daybologic/overham/downloads
If you wish to contribute ad-hoc formulae, or code and do not have a bitbucket.org account, please feel free to send a diff directly to the maintainer, firstname.lastname@example.org, and this will be put up for code review on your behalf, with credit attributed.
If you have a bitbucket.org account and are more familiar with DVCS solutions, then please fork either the 'overham' repository, for new features, or the 'overham.exp' repository for changes to pre-existing experimental features which are not yet merged to overham.
Please use named branches for any features. The feature branch format is 'f/YYYYMM-featurename'. The branch should originate from the latest head of 'develop' that is available, and never any other branch.
Please be sure to regularly check back within the lifecycle of your feature branch whether upstream changes have been made to the 'develop' branch. We use the dated branch format to keep track on how old a feature is becoming and for restriction on the global branch namespace, to ensure a feature name could be re-used, in case of branch rot.
Please ensure you write tests to cover as much of your codeflow as reasonably practical, using Test::More 0.96+. Test code should be written to t/lib/Ham/ as a sub-module, which will not be installed with the distributed library. The execution stub should be written as a file within the t/ directory as a Perl file, but with an extension of '.t'. See pre- existing examples. You test should use the Moose framework, and be derived from Test::Ham.
When finished, or if you require early review and guidance, please raise a pull request. If you have not written tests, or there are known flaws in your code, please say so in the description/message of the pull request.
By submitting code to the project, you agree that it is distributed under the terms of the project's code license. Whilst we will credit you in a commit message, or in the case of a pull request, you will have entered this information yourself, you will no longer own rights to the code concerned. You are assuring the other authors of the project that all of the code is your own, or you have the permission of the author to submit the code, and that any other author than yourself has also read and understands our terms.
We are using a BSD-compatible license. Please see below.
We use the C<Daybo::Shared::Log>> object for logging. Logging is supported at the following levels: EMERGENCY, ALERT, CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG, TRACE
EMERGENCY This level is not currently used within OverHam, please do not use it without consulting the crew.
ALERT This level is not currently used within OverHam, please do not use it without consulting the crew. We may use this level fo real-time devices reporting to their owners in the future.
CRITICAL This level is used for unexpected errors, such as trouble reading the database file. It could mean a problem external to the code, or it could be a misake in our code. However for normal errors, which users are likely to trigger, by using out of range parameters, or looking up bands which do not exist, you should use ERROR instead.
ERROR This level is used for normal mistakes, such as the user looking up a band which does not exist. If the error should not have happened, and it was not the user's mistake, you should use CRITICAL instead.
WARNING This level is used for user mistakes, typically, where we can work around a problem, but they should correct their parameters.
NOTICE This level is for reporting of announcements, such as the library starting up, shutting down, copyright notice going to the log, etc.
INFO This level should be used for all reporting to end-users. Any result or reply which is of interest to somebody who is potentially not an actual programmer, but could be a liensed amateur, and therefore needs to know technical detail, but not necessarily information on "how" OverHam got to that result.
DEBUG This level should be used to indicate that certain events have happened, potentially flags have been set, states have changed, that are of no interest to the developer of a user of the library, or the end user, unless they have a problem, and potentially turn this on. Information at this level should not include actual SQL queries, or dumps of user-supplied parameters.
TRACE This level can be used for verbose dumps of data transfers within the the library, and the actual data including parameters supplied from callers, and data returned back. SQL queries should be logged at this level. Unit tests should never test log data to this level. Data at this level is likely to be very noisy.
Who do I talk to?
- Maintainer: Rev. David Duncan Ross Palmer, 2E0EOL email@example.com
- Facebook development working group: https://www.facebook.com/groups/982537751768599
- Further documentation is available from: http://daybologic.bitbucket.org/overham/
Where can I obtain the source code?
- Master repository (authoritative): https://bitbucket.org/daybologic/overham
- Experimental branches: https://bitbucket.org/daybologic/overham.exp
Licensing, copyright, legal information
OverHam; An object-orientated ham radio math and tool library Copyright (c) 2015, David Duncan Ross Palmer (2E0EOL), Daybo Logic All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Daybo Logic nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.