Giter VIP home page Giter VIP logo

tlf's Introduction

TLF ham radio contest logger

Build Status

Summary

TLF is a logging program for radiosport, or ham radio contests. It supports CQWW, CQ-WPX, ARRL-DX, ARRL-FD, PACC, and EU SPRINT contests as well as many more, and also has general QSO and DXpedition modes. Users can add new contests by editing a text file.

TLF interfaces with a morse code generator, your sound card, a huge number of radios, and with a DX Cluster. It can project cluster data into the excellent Xplanet program, written by Hari Nair.

Contest operation mimics the popular TR-Log program for DOS, and the output file is TR- as well as CABRILLO compatible. The user interface was designed with over 30 years of experience in CW contesting, and a group of active contesters continues to update the code.

TLF runs in console mode (a terminal window), allowing it to run on smaller machines, or remotely with limited bandwidth. Don't let the "retro" look of the console fool you, though; this is a fully modern contest logger that can support everything from a part time single op effort to a large multi-multi "big gun" operation.

See Manual.md for an explanation of the user interface and detailed descriptions of setups for CW, RTTY, and SSB contesting. For specific questions once you've started using TLF, simply type man tlf at the command line.

Basic principles

As a console program, there are no menus or pop-up windows in TLF. Instead, it uses two configuration files: logcfg.dat and a contest-specific rules file. Starting from an empty directory, it will read <PREFIX>/logcfg.dat, where <PREFIX> is the directory where the data files were installed (/usr/local/share/tlf by default). Any logcfg.dat or rules file stored in the local directory where TLF launches will override the default settings, which you probably want to do. See the Quick Start guide below for an example setup. The default logcfg.dat file has extensive comments documenting the settings, and can be opened in any text editor. At a minimum, you'll need to set your callsign.

Installation

The easiest way to install TLF is from your distribution's repo. On Debian-flavored distributions (including Ubuntu):

sudo apt install tlf

If you choose this route, you can skip the "Building from source" section.

If you want to use cwdaemon for CW, make sure it's installed, and either set it up to start at system startup, or plan to start it manually before launching TLF.

If you want to use a K1EL Winkeyer for CW, download and install either winkeyer_server or winkeydaemon, following the instructions on those pages. You'll need to start the Winkeyer server (either one) before starting TLF. Both programs work by impersonating cwdaemon, which TLF will use automatically if you've enabled the NETKEYER settings in the logcfg.dat file.

Building from source

If you'd prefer to build TLF from source, or if it's not in your repo, it requires some other components to be installed first.

Specifically, it depends on:

  • the hamlib library for controlling your radio,
  • ncurses and tinfo for text screen handling,
  • the XMLRPC_C library for communication with programs like Fldigi,
  • Glib-2.0 for supporting C functions and
  • GNU Autoconf for configuring and building the code.

If you are using a distribution of the Debian family (including Ubuntu) you can get all of these dependencies by opening a Terminal window and typing:

sudo apt install autoconf libglib2.0-dev libhamlib-dev libncurses5-dev libtinfo-dev libxmlrpc-core-c3-dev

While not strict build dependencies, the following packages may be helpful too:

  • sox for audio signal handling during SSB contests and
  • xplanet which allows you to see the latest DX spots on the globe.

On Debian Linuxes:

sudo apt install sox xplanet

Once the dependencies are installed, the easiest way to get TLF's source is by downloading the latest tarball (version 1.4.1) from here, then navigating your Terminal to the directory where you unpacked it, and typing:

./configure
make
sudo make install

If you plan to do contests in digimodes using Fldigi, start the sequence above with

./configure --enable-fldigi-xmlrpc

followed by the make and make install commands.

If you are compiling TLF from a clone of the Github repository instead of the tarball, please do

autoreconf --install

before the above commands.

By default, TLF will install into /usr/local/bin, together with the shell scripts from the scripts directory. Data files will install into /usr/local/share/tlf.

If you want to change any of these paths, you can do that with the configure script too, e.g.

./configure --prefix=/usr --datadir=/usr/share

will install TLF and scripts into /usr/bin, datafiles into /usr/share/tlf.

If you want to use cwdaemon for CW, make sure it's installed, and either set it up to start at system startup, or plan to start it manually before launching TLF.

If you want to use a K1EL Winkeyer for CW, download and install either winkeyer_server or winkeydaemon, following the instructions on those pages. You'll need to start the Winkeyer server (either one) before starting TLF. Both programs work by impersonating cwdaemon, which TLF will use automatically if you've enabled the NETKEYER settings in the logcfg.dat file.

Quick start

TLF can be used in all types of contests, but regardless of the mode, much of the initial setup will be the same. This example will assume a USA-based station is setting up for the ARRL DX contest - simply substitute the appropriate rules file for whatever contest you're entering.

The easiest way to keep things organized is to create a new directory for each contest, then copy the default configuration files into it. You can do this in your file manager, or at the command line:

mkdir arrldx

cd arrldx

mkdir rules

cp /usr/share/tlf/logcfg.dat .

cp /usr/share/tlf/rules/arrldx_usa rules/

Note that the file paths above are based on a Debian installation from the repo. If you compiled from source instead of installing from your repo, your share directory may instead be /usr/local/share/tlf.

Now we have a directory called arrldx with a logcfg.dat file in it, and an arrldx/rules directory with arrldx_usa in it. These will override the defaults when we launch TLF.

Open the local logcfg.dat file in your favorite text editor. The comments in the file explain the features. Set RULES=arrldx_usa, uncomment any settings you want to enable, comment (#) any you want to disable, and enter specifics such as your callsign and preferred console-based text editor. The latter will be used to edit this file from inside TLF.

If you plan to generate CW with TLF, you'll need either cwdaemon or a Winkeyer server running, and for digital modes you'll need Fldigi. Rig control requires hamlib. See Manual.md for details. If you want DXcluster spots to show up on a band map in TLF, enter your preferred settings in the "PACKET INTERFACE" section and also uncomment the CLUSTER line under "INFORMATION WINDOWS."

When done with logcfg.dat, go to your local copy of rules/arrldx_usa and edit it. There shouldn't be much to do besides set your exchange (unless you happen to be in PA) and make any changes you like to the CW messages if you're using them. The same procedure applies to any other rules file. If you want to work a contest that doesn't currently have a rules file, copy one that's similar and modify it - then please let us know, so we can add it to the collection.

Once the configuration files are to your liking, make sure the terminal window is set to 80x25 size and launch TLF from your contest directory:

tlf

(or /usr/local/bin/tlf if you want to be explicit).

As a console-based logger, TLF relies exclusively on keyboard commands. Commands are either key chords (such as Alt-H to bring up the help screen), or text entered directly into the empty callsign entry field (such as :help to open the complete list of keyboard commands). Entering a number such as 14050 will set the current frequency in kilohertz, and if rig control is active TLF will automatically tune the rig to that frequency. The F-keys work as expected for sending contest macros; an abbreviated list of their current settings is across the top line of the console.

If you've used other modern contest loggers, such as N1MM+, the keyboard behavior will be very familiar: it's the standard "Enter Sends Message (ESM)" operation. The spacebar will take you to the exchange field after entering a callsign, and the Enter key triggers different macros depending on which mode you're in (Run vs. Search and Pounce) and which part of the QSO is happening.

The default mode is "Log," equivalent to "Run" mode in other contest loggers. You'll see the word "Log" in the upper left corner, and TLF will assume you're calling CQ and responding to whoever calls back. In this mode, hitting "Enter" in the blank callsign field will send your CQ.

To toggle between "Log" and "Search and Pounce" mode, hit "+", and note that the upper left corner now says "S&P". Now hitting "Enter" in the blank callsign field will send your callsign (the same as the F-6 message by default) instead of your CQ, and the rest of the Search and Pounce logging flow will follow.

Manual

For a complete walkthrough and more details on specific types of operations, see doc/Manual.md, which we're in the process of revising. Answers to specific questions can usually be found in the built-in manual accessible from any console window:

man tlf

A copy of the old TLF manual is also available in the Github repository here. While many new features have been added, much of the old information will still work.

Contributing

If you have coding skills and want to help with the project, feel free to fork the repo, make changes, and send a patch or pull request.

Bugs and feature requests

Please direct bug reports, feature requests, and questions to the mailing list.

Credits

Thanks to Joop, PA4TU for the help with the make files and the cwdaemon.

Thanks to Ivo, 9A3TY for the serial port /dev/cwkeyer device.

Thanks to Eric, PA3FKN for the parallel port /dev/cwkeyer device.

tlf's People

Contributors

airween avatar alandove avatar blikjeham avatar darvark avatar df7cb avatar dforsi avatar dh5fs avatar dl1jbe avatar dl8dtl avatar ha5se avatar jothan avatar khoos avatar n0nb avatar reinerh avatar sm0rux avatar tnalpgge avatar victordenisov avatar w8bsd avatar yarda avatar zcsahok avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tlf's Issues

cwops cwt contest request

Hi, I've read all the documentation I can find but I'm struggling to create a config file which can support the cwops cwt. I wonder if this could be added as a built in feature? It would be a great contest to support as many folks are learning cw this way and getting into contesting.

Details of the CWT are here: http://cwops.org/cwt.html

At the least I would love a pointer on how to multiply the score by the total number of unique contacts per band?

Thanks in advance, no worries if not...

John

Scoring problems

SP3RXO reported some problems with the scoring logic.

CONTINENTLIST=EU,AS
COUNTINENT_LIST_POINTS=2
USE_CONTINENT_LIST_ONLY
COUNTRY_MULT

gives 2 points for AS stations but -1 (!!!) for EU stations.

Page UP / Page DOWN to change reports

This should really be configurable as not all keyboards these days have PgUp and PgDown keys. Macs in particular as the OS has no concept of PgUp / Down and so even plugging in an IBM keyboard these keys are not interpreted as intended meaning it's impossible to change signal reports on a mac either via ssh through the terminal or via a virtual machine console.
Ideally I would use the up down arrows to change reports or just have the option to re-key them as a normal exchange field.

I've been looking at the code on and off for the last year trying to figure this out for myself however it seems to be slightly beyond my skill level.

Cheers
Ben

improvements to autosend feature

The recent work on autosend needs some further improvements:

from Martin OK1RR:

  • an indicator of the ON state of Autosend. I suggest different color
    in the call field till the "length" set, ie. if :char set to 4, the
    first 4 characters in the call field should have different background
    color. If the color change is a problem, there should be a vertical
    bar instead, an asterisk or arrow etc.
  • the question mark in a special meaning. If an ? is typed, the
    autosend should immediately send out the contents of the call field
    BUT the cursor should never move to the exchange field. Optimal would
    be an immediate action, not dependent on the length of the string
    already typed.
  • The Autosend feature has mostly an autoswitch-off
    when first slash / appears. Calls like HB0/DL1JBE/P can be hardly
    completed within considered time span. Very useful would be also a
    "panic" autosend-off switch (a single key, easily accessible like ,
    or .). Very useful for calls like WA4DHN/VP2M or OK1JFQ/P...

Allow CQ<->S&P switch even if call input is not empty

A side note: CQ<->S&P switch is only possible if callsign field is empty. This can cause a problem if one forgets to switch to CQ/S&P and realizes it only after having entered a call. Then one has to remember the already typed call, delete it, do the switch and re-type (correctly!) the call.
I see no reason why a switch couldn't be allowed even if callsign field is non-empty.

Reported by ZCsahok in PR#129

String given to CABRILLO-EXCHANGE truncated after ten characters

As noted in this message to the list, CABRILLO-EXCHANGE is apparently limited to ten characters. I had set up an NA QP Cabrillo format as:

# used for North American QSO Party, Colorado QSO Party
[NAQP]
QSO=FREQ,5;MODE,2;DATE,10;TIME,4;MYCALL,15;EXC_S,14;HISCALL,15;EXC1,10;EXC2,3

to align with the CO QP rules that state that fields must start on the designated columns as shown in the NA QP example (Rule 11 i.):

QSO: 28048 CW 2014-01-11 1800 N5KO            TREY       CA  N4PN            PAUL       GA

(apparently programmers can no longer split fields on white space).

In an effort to pad the area between my name and state I added enough spaces in the argument to CABRILLO-EXCHANGE so the string length was 14 characters to match the EXC_S,14 in the format file, except that at after ten characters the string was truncated.

Fortunately, with only 22 Qs and Vim, manually adjusting the file was possible.

It seems to me that increasing this to 16 or 32 characters should do no harm as the format should be the final arbiter of the field width.

Thoughts?

QSO counts per band are not shown when opening a non-empty log

Log is loaded but QSO counts are 0.

image

Should be (and was) like this:

image

Caused by a change in 766e0f4.
The root cause is that functions are not (only) doing what their name says.
Original code (main.c):

scroll_log();
nr_qsos = readcalls();

Looks not too logical: why to call scroll_log before actually loading the log?

Updated code:

nr_qsos = readcalls();
scroll_log();

But at the end of readcalls the counts (and other stuff) are reset if qsonum==1.
And qsonum is set not in readcalls as one would expect, but in scroll_log...
So if they are called in "wrong" order the QSO counts are lost. (and maybe other info also, who knows)

Mult is added in scoring window when no new mult is worked

Yesterday I noticed that seemingly at random the score window would increment the mult count when no mult was worked and the log window correctly showed that no mult was worked. Using :REScore or restarting Tlf resulted in the log file being read and the mult count and score being corrected,

From my rules file:

#################################
#      Scoring rules            #
#################################
#
MIXED
RECALL_MULTS
SSBPOINTS=2
CWPOINTS=3
SECTION_MULT_ONCE
### WYSIWYG_ONCE
MULT_LIST=ksqp.txt

I will note that I had erroneously had SECTION_MULT instead and after stopping Tlf, adding _ONCE, manually editing out the erroneous section mults, and restarting Tlf, the mult count in the scoring window was correct.

I did not observe that incrementing the mult count in the scoring window was related to RECALL_MULTS as it seemed to do it for both recalled callsigns and stations not worked before.

I've attached the section mults file.

ksqp.txt

Bandmap improvements

One of the big weak points for realtime logging is still the bandmap display. In detail:

  • the shown number of stations is too small > bigger terminal window possible, or even a seperate one?
  • no connection of the bandmap to the actual frequency > if the number of calls stays limited there should be some sorting around the actual working frequency
  • no filtering for Mults possible, not even for DXCC Mults
  • no free movement in the bandmap possible > something like ALT-ARROW UP, DOWN to move up/down in frequency would be nice

73 Fred

Unclear about autoreconf --install

Page visited:
https://tlf.github.io/

Pulled source archive from download link:
http://download.savannah.gnu.org/releases/tlf/tlf-1.4.0.tar.gz

OS: Debian 10 Buster
DE: LXQt
Kernel: 4.19.0-6-amd64

From within unpacked directory tlf-1.4.0/, I am receiving four of the same error:
Can't open perl script "generate_defs.pl": No such file or directory

Should I be running autoreconf --install after make install process instead? Appreciate your help on my previous inquiry.

Thank You

TLF should log exact frequency

More and more contests require the report of the correct working frequency in the log.
Tlf supports that only for 'dxped' mode.

Documentation disagrees with behavior on behavior of Enter key in S&P mode

Recently I acquired a very inexpensive USB serial CW interface. I was trying to debug why cwdaemon turns my call sign from W6 into M6, and CQ into KQ (i.e. drops the first dah or dit). As a workaround I asked tlf via rules files to send some extra characters to cwdaemon to make it "wake up" and send complete characters, e.g.:

F6=+- %

The manual page claims that Enter sends the MY message as if I had hit F6. My ears tell me otherwise; if it were doing that my call would not have been clipped to sound like M6.

Other bits of documentation, had I encountered them earlier, would have given me the obvious solution:

S&P_CALL_MSG=+- %

But the description of what the Enter key does in S&P mode is still a bit misleading.

I plan on submitting a pull request with documentation changes to match the observed behavior of the code.

Longer multiplier ignored in favor of shorter

I am preparing for the California QSO Party. As an in-state participant, I have to record not only California counties but also American states and Canadian provinces as multipliers.

While testing out my setup it appears that the multiplier for Los Angeles County (LANG) is treated as the state of Louisiana (LA). Perhaps it is not looking for the longest match when it should be?

Here is where I simulated the log entry and used \ to store it.

Screenshot from 2020-10-03 05-00-22

And here is how it looks in the :mult screen.

Screenshot from 2020-10-03 05-00-30

I am using a build from the Git sources at this commit:

: [tony@medora tlf]$ ; git log -n 1
commit 7f95002f66beaa1cf1af64ffc0c4333858bc0da1 (HEAD -> master, kcjcw)
Author: Thomas Beierlein <[email protected]>
Date:   Fri May 1 10:29:54 2020 +0200

    fix compiler warnings

...installed into /usr/local.

About my machine:

: [tony@medora tlf]$ ; cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.5 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
: [tony@medora tlf]$ ; uname -a
Linux medora 4.15.0-111-generic #112-Ubuntu SMP Thu Jul 9 20:32:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

ncurses check

Hei,
i tryed to build tlf on my new installed debian-linux. While the configure script was runing, it has not checked for ncurses/ncursesw dependencies which breaks make process. Maybe you could expand configure to check for both libs.

73s de DK2AB, Jens

src/sendbuf.c:47: multiple definition of `buffer'; test_adif.o:./test/test_adif.c:63: first defined here

Before submitting #210 I was trying to see if it was already fixed in git, past 1.4.1, but it seems the "-fno-common" problem is back in git HEAD, originally fixed in 7b3c13f:

gcc -Wall -g -O2 -fdebug-prefix-map=/home/myon/tlf.git=. -fstack-protector-strong -Wformat -Werror=format-security  -Wl,-z,relro -Wl,-z,now -o run_bands run_bands.o test_bands.o data.o functions.o ../src/bands.o -lm -lglib-2.0 -lhamlib -lpanelw -lncursesw -ltinfo -lcmocka -Wl,-wrap=sleep -Wl,-wrap=key_get -Wl,-wrap=key_poll -Wl,-wrap=sendto -Wl,-wrap=wgetch -Wl,-wrap=refreshp
/usr/bin/ld: ../src/sendbuf.o:./src/sendbuf.c:47: multiple definition of `buffer'; test_adif.o:./test/test_adif.c:63: first defined here

Node sync/deleting QSO

I am running 2 instances of tlf on the same machine over LAN. I can confirm that communication between the 2 nodes is occurring and I can see a QSO being added to the other node when it takes place. However, I notice that deleting a QSO in 1 node does not delete it in the other. This results in scores drifting apart. The only way I can fix this is manually deleting the QSO in all nodes.

I shutdown one instance of tlf, added some QSOs in the other node. Then I re-opened the TLF instance again. A SYNC command (":sync") did not pick up these new QSOs that occurred while tlf was "off". Am I missing something regarding behaviour of the LAN/node implementation?

(Using tlf-1.4.1 built from src from this repo).

networkinginfo() needs care

Zcsahok reported:

"Found an issue in networkinfo(): the reported config file is always either logcfg.dat or the given on command line. The system config is never shown as config_file is never empty. In addition the system config location is hard coded.
This can be fixed, but then we'll have an issue with re-reading the config via :SET/:CFG. Btw these probably anyway do not work as proper re-reading requires releasing all resources (net sockets, ...) which is not done at the moment."

automatic CLUSTERLOGIN not recognized

  • David N1EA and Martin OK1RR reports a not working automatic CLUSTERLOGIN.
  • The Reason was a change in parsing logic (parse_logcfg.c) done between tlf-1.0.5 and tlf-1.1.0. TLF now stopped searching at keyword CLUSTER as it was a substring of CLUSTERLOGIN. So CLUSTERLOGIN got never called. Thorough inspection showed that it may affect also other settings.
    • A deeper look showed that it may have influenced other keywords also.
    • Bug was introduced between tlf-1.0.5 and tlf-1.1.0

FILPATHLEN became HAMLIB_FILPATHLEN in hamlib 4.2

FILPATHLEN was changed to HAMLIB_FILPATHLEN starting in hamlib 4.2, so tlf does not currently build against hamlib 4.2. The error message as expected is sendqrg.c:103:6: error: ‘FILPATHLEN’ undeclared (first use in this function). Presumably the fix is to update sendqrg.c to use the new macro. I don't see any pre-processor conditions elsewhere in the code, but one might need to be introduced here to maintain compatibility with older hamlib versions as well.

Plugin support

(just fyi, no action is needed)

I'm working on a proof of concept implementation of using contest-specific plugins. As a test I have defined the multi rules for MWC (https://memorial-ok1wc.cz/index.php?page=rules2l) that takes place each Monday from 1630 UT. For multiplier they use the last character of the worked call. The rationale behind this is likely to allow higher mult counts even if only a handful of DXCC entities participate.
Such plugins would allow Tlf to support practically any contest and would also be a solution for #235.

Here is the screenshot after today's contest, I still had some unworked mults on 80 and even more on 40.

image

As plugin technology I use Python as it is quite widespread and has a lot of features. The plugin script is implicitly selected by the contest rule config: for RULES=xdx the file rules/xdx.py is loaded if available.

Currently the interface methods are:

  • setup: called to reset the internal state
  • add_qso: called when a QSO is logged (either interactively or by reading the log)
  • nr_of_mults: number of mults per band or total, used for the display
  • is_multi: to tell if a call would be a multi, the functionality of bm_ismulti()

There are still a number of rough edges and some stuff are not too tlf-ish (i.e. bypassing multis[]), so work is in progress.

The code for MWC:

import tlf

mults = set()

def setup():
    global mults
    mults = set()

def add_qso(qso):
    multi_key = get_multi_key(qso.call, qso.band)
    if multi_key in mults:
        return
    mults.add(multi_key)

def nr_of_mults(band):
    if band == tlf.BAND_ANY:
        return max(len(mults), 1)
   
    bk = f'{band};'
    n = 0
    for multi_key in mults:
        if multi_key.startswith(bk):
            n = n + 1
    return n

def is_multi(qso):
    multi_key = get_multi_key(qso.call, qso.band)
    return not multi_key in mults


#######################################
#
# internal functions
#

def get_multi_key(call, band):
    a = call.split('/')
    base = a[0]
    if len(a) >= 2 and len(a[1]) > len(a[0]):
        base = a[1]
    return f'{band};{base[-1]}'

regressions with the actual master

  1. when using SHIFT-F1 if you want to return to your CQ frequency (in MEM) after S&P some Calls are filled in, expectation would be to have a clear call input field
  2. when changing CW speed and a call is in the input field, some letters are added there, expection: no letters anywhere when using <PG-UP, PG-DWN> for changing CW speed

Keyword 'CABRILLO-MODE' not supported error for default cqww contest

After a pull and recompile I've started to get the following error when using the default logcfg:

Keyword 'CABRILLO-MODE' not supported error for default cqww contest

If I remove that from the cqww rules file TLF starts up ok. Version from "git describe" is "tlf-1.4.1-165-g080f551".

Hamlib not found, but is installed

I downloaded the latest source archive from savannah.gnu.org, and am attempting to package tlf for void linux.

autoreconf -i runs fine.

During ./configure --prefix=/usr --sysconfdir=/etc --infodir=/usr/share/info --mandir=/usr/share/man --localstatedir=/var --datadir=/usr/share --enable-fldigi-xmlrpc (all options before --datadir are set by void), I get this error:

checking for hamlib >= 1.2.8... no
configure: error: Hamradio control libraries 1.2.8 or later not found...

The hamlib install:

  • The current version of hamlib in the void repos is 3.3.
  • The hamlib directory exists in /usr/include
  • hamlib.pc exists in /usr/lib/pkgconfig
  • libhamlib{,++}.so{,.2,.2.1.3} exist in /usr/lib

Any suggestions?

Test failure on MIPS and other RISC archs: test_cabrillo.c:159: error: Failure!

tlf 1.4.1 fails on mips64el:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979377
https://buildd.debian.org/status/fetch.php?pkg=tlf&arch=mips64el&ver=1.4.1-2&stamp=1609846479&raw=0

FAIL: run_cabrillo
==================

[==========] Running 12 test(s).
[ RUN      ] test_starts_with_succeed
[       OK ] test_starts_with_succeed
[ RUN      ] test_starts_with_fails
[       OK ] test_starts_with_fails
[ RUN      ] test_translateItem
[       OK ] test_translateItem
[ RUN      ] test_freeCabfmt
[       OK ] test_freeCabfmt
[ RUN      ] test_parseLine
[       OK ] test_parseLine
[ RUN      ] test_readCabrilloFormatUniversal
[       OK ] test_readCabrilloFormatUniversal
[ RUN      ] test_readCabrilloFormatWAE
[       OK ] test_readCabrilloFormatWAE
[ RUN      ] test_readCabrilloFileNotFound
[       OK ] test_readCabrilloFileNotFound
[ RUN      ] test_readCabrilloFormatNotFound
[       OK ] test_readCabrilloFormatNotFound
[ RUN      ] test_cabToTlf_ParseQSO
[  ERROR   ] --- 0 != 0x3
[   LINE   ] --- test_cabrillo.c:159: error: Failure!
[  FAILED  ] test_cabToTlf_ParseQSO
[ RUN      ] test_cabToTlf_ParseXQSO
[  ERROR   ] --- 0 != 0x3
[   LINE   ] --- test_cabrillo.c:179: error: Failure!
[  FAILED  ] test_cabToTlf_ParseXQSO
[ RUN      ] test_cabToTlf_ParseQTC
[       OK ] test_cabToTlf_ParseQTC
[==========] 12 test(s) run.
[  PASSED  ] 10 test(s).
[  FAILED  ] 2 test(s), listed below:
[  FAILED  ] test_cabToTlf_ParseQSO
[  FAILED  ] test_cabToTlf_ParseXQSO

 2 FAILED TEST(S)
FAIL run_cabrillo (exit status: 2)

... and similarly on other architectures: https://buildd.debian.org/status/logs.php?pkg=tlf&ver=1.4.1-2

Long exchanges truncated

Exchange input field allows to enter up to 25 characters.

image

After logging the QSO the exchange is truncated to 14 characters.

image

Same in the log file:
image

Problem compiling tlf due to ncurses

Hi,

i am unable to compile tlf anymore with ncurses on gentoo:

checking whether pthreads work with -kthread... no
checking for the pthreads library -llthread... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... yes
checking for x86_64-pc-linux-gnu-pkg-config... /usr/bin/x86_64-pc-linux-gnu-pkg-config
checking pkg-config is at least version 0.16... yes
checking for x86_64-pc-linux-gnu-pkg-config... (cached) /usr/bin/x86_64-pc-linux-gnu-pkg-config
checking pkg-config is at least version 0.16... yes
checking for GLIB - version >= 2.0.0... yes (version 2.46.2)
checking for NcursesW wide-character library... yes
checking for working ncursesw/curses.h... no
checking for working ncursesw.h... no
checking for working ncurses.h... no
configure: WARNING: could not find a working ncursesw/curses.h, ncursesw.h or ncurses.h
configure: error: a Curses library with color support is required

!!! Please attach the following file when seeking support:
!!! /var/tmp/portage/media-radio/tlf-9999/work/tlf-9999/config.log
 * ERROR: media-radio/tlf-9999::tuxwave failed (configure phase):
 *   econf failed
 * 
 * Call stack:
 *               ebuild.sh, line  115:  Called src_configure
 *             environment, line 3565:  Called econf '--docdir=/usr/share/doc/tlf-9999' '--enable-hamlib'
 *        phase-helpers.sh, line  662:  Called __helpers_die 'econf failed'
 *   isolated-functions.sh, line  117:  Called die
 * The specific snippet of code:
 *   		die "$@"
 * 
 * If you need support, post the output of `emerge --info '=media-radio/tlf-9999::tuxwave'`,
 * the complete build log and the output of `emerge -pqv '=media-radio/tlf-9999::tuxwave'`.
 * The complete build log is located at '/var/log/portage/media-radio:tlf-9999:20161109-165623.log'.
 * For convenience, a symlink to the build log is located at '/var/tmp/portage/media-radio/tlf-9999/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/media-radio/tlf-9999/temp/environment'.
 * Working directory: '/var/tmp/portage/media-radio/tlf-9999/work/tlf-9999'
 * S: '/var/tmp/portage/media-radio/tlf-9999/work/tlf-9999'

>>> Failed to emerge media-radio/tlf-9999, Log file:

>>>  '/var/log/portage/media-radio:tlf-9999:20161109-165623.log'

There is ncursesw/curses.h. Do you have any hints, why this would happen?

DX_&_SECTION keyword not working as documented

Man page states that with DX_&_SECTION keyword Multiplier is DXCC country or section from multiplier file

In last weeks there were at least two reports from DL3EAZ and F8CFE which states that the keyword does not work in that manner. A closer look to the code showed that it is tightly coupled to ARRL contests which often use a multiplier scheme where W or VE station can get multipliers for W/VE sections or other DXCC countries. So the keyword in its current form is useless for other contests like EUDX or Coupe du REF.

The current implementation of DX_&_SECTIONS works as follows:

If Country is W or VE do not count as country multiplier, all other countries are mults
If Country is W or VE do count sections as multiplier, for all other countries ignore it.

So country and section multiplier are mutual exclusive . That is also the case for Coupe du REF.
Some other contests (e.g. EUDX) count country AND multiplier for the EU countries.

I think a way to solve the problem can be the following:

  • Rename DX_&SECTION to ARRL_DX&SECTIONS keeping the behaviour and adding a new DX&_SECTION which simply counts DXCC countries and sections both as multipliers. If you have to exclude your own country from getting country points (see Coupe du REF) use COUNTRYLIST= and EXCLUDE_COUNTRYLIST.

  • The new DX_&_SECTIONS together with EXCLUDE_COUNTRYLIST can also handle ARRLDX contests if it is guaranteed that no stations outside of W and VE uses sections in their reports.

Before starting to implement solution some feedback would be good.

Can't change interface colors

unreadable-tlf-interface

I'm trying to use tlf in an xterm (under the Xmonad window manager) and am unable to configure readable colors. The window shot linked at the beginning of this comment shows what I'm stuck with.

The TLFCOLOR settings listed in the man page have no effect.

And there's practically no helpful information available on-line about how to set colors. What am I supposed to do?

Info line going missing

version: test with newest master build, in WPX
whats wrong: in ESM mode after entering the call, the lowest line with (distance heading etc.) disappears, this can be annoying when you need to turn the beam because Sig went down. Does not happen when changing with space to the number field.
how it should be: line just stays until number was entered

Add a way of specifying Cabrillo header values

Currently Cabrillo header values (CONTEST, CATEGORY-*, ...) have to be entered online while exporting the log. This process is quite tedious and error prone.

As a user I expect a way to specify such mostly seldom changing infos both

  • via config file (logcfg.dat / rule file)
  • and by reusing previous or sample logs as a template.

The procesing of configuration shall fit into the current Cabrillo QSO format specification logic (keyword CABRILLO).

Exchange sent not populated in Cabrillo file

I took part in CQWW ssb over the weekend and when I came to uploading my log I noticed the sent exchange sent field of the generated cabrillo file wasn't populated with my CQ zone and I had to edit the file manually and add it.

In logcfg.dat I had "RULES=cqww" which seems to set things up for CQWW and indeed auto populates the received exchange field with the cq zone based on what we expect from the callsign.

I see in the rules file for CQWW the cabrillo format is set to CQWW and the cabrillo.fmt entry contains the exchange sent (EXC_S) field in the format however I can't see any documentation showing how the operators region can be set so I assume it's supposed to work it out from "CALL=callsign"

This was tested on my raspbian instance installed from apt running v1.2.4.1 so I've installed the latest v1.4.1 from source and I see from the startup screen when starting with the -v flag it does indeed seem to assume my zone and continent however still no exchange sent is populated in the cabrillo file. Even if it was ignoring the cqww format it should be using the universal format which also includes the exchange sent. I altered the format and added multiple instances of the mode field and re-created the cabrillo file and that change was evident in the file so it is using the correct format.

I've also tried configuring a general contest using the universal cabrillo format and with SERIAL_EXCHANGE which should populate each line with the incremental serial number however that doesn't seem to appear in the cabrillo file either

It would make sense to be able to configure this sort of thing from logcfg.dat as the assumed region isn't always accurate as I noticed some of the north american stations gave different zones to what was assumed from their callsign and this would also be the case if operating maritime mobile from a different zone to the country that issued the call.

No direct frequency entry for 60m

Entering 5310 on call input field doesn't change to 60m. Non-contest mode is set and direct frequency entry works for other WARC bands like 10110 or 24910.

@dl8dtl any idea?

tlf on Mac OS X

HI!

I want compile your project on my Darwin OS.
But I catch exeption

/tlf$ make
make  all-recursive
Making all in doc
make[2]: Nothing to be done for `all'.
Making all in rules
make[3]: Nothing to be done for `all-am'.
Making all in src
gcc -DHAVE_CONFIG_H -I. -I.. -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include      -g -O2 -Wall -MT audio.o -MD -MP -MF .deps/audio.Tpo -c -o audio.o audio.c
In file included from audio.c:26:
audio.h:33:28: error: sys/soundcard.h: No such file or directory
audio.c: In function ‘init_audio’:
audio.c:47: error: ‘AFMT_MU_LAW’ undeclared (first use in this function)
audio.c:47: error: (Each undeclared identifier is reported only once
audio.c:47: error: for each function it appears in.)
audio.c:60: error: ‘SNDCTL_DSP_SETFMT’ undeclared (first use in this function)
audio.c:65: error: ‘SNDCTL_DSP_CHANNELS’ undeclared (first use in this function)
audio.c:70: error: ‘SNDCTL_DSP_SPEED’ undeclared (first use in this function)
make[2]: *** [audio.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Can you help me?

Fldigi in Debian Bullseye is dependent on libflxmlrpc

Getting back into working with Tlf a bit I decided to enable the XMLRPC configure option and it failed. So I installed Fldigi and saw that it is dependent on libflxmlrpc and also installed the libflxmlrpc-dev package manually. Of course, configure failed as at the very least the name of the library has changed. After staring at configure.ac for a few minutes I looked at the symbols in the new library and found that none of the symbols AC_CHECK_LIB will look for are present. Then I checked the doc directory and found /usr/share/doc/libflxmlrpc-dev/README which states:

flxmlrpc Library

This is version 0.1 of flxmlrpc, an implementation of the XmlRpc protocol
written in C++, based upon XmlRpc++0.7 and modified to provide additional XmlRpc
Variable types.  It is used in fldigi, flrig, flnet, flmsg, flarq, flamp, fllog;
a suite of programs written for amateur radio emergency communications.

flxmlrpc is designed to make it easy to incorporate xmlrpc client and server
support into C++ applications. Or use both client and server objects in your
application for easy peer-to-peer support.

Features

    Easy     This library is easy to incorporate into C++ applications. No other
             libraries are required, other than your system's socket libraries.
             Simple XML parsing and HTTP support are built in.

    Fast     All IO is non-blocking, so a slow client or network will not slow
             down the server.

    Portable Written in standard C++ to the POSIX and Windows sockets APIs.
             You do need a fairly recent compiler, g++ 3.1 or greater.

    Free     This library is released under the GNU LGPL.

So, this is a C++ library and it says it is easily incorporated into a C++ program, but Tlf is written in C. Is this a problem?

As a note, the tlf package in Debian Bullseye is dependent on libxmlrpc-core-c3. I have not checked if Tlf and Fldigi can communicate with the two different libraries as I've never set up the XMLRPC interaction between the two.

As this is well above my pay grade (ha!), I'm filing this issue to give everyone a heads up on this.

Rework sound recorder and playback.

I have been poking at things this week in anticipation of the Kansas QSO Party this coming weekend. As I do operate SSB in this event, I use the voice keyer with good results. One thing I'd not tried for some time was the contest recorder and find that the soundlog file has an invalid option, -w for the rec utility now found in the SoX package. Perhaps this was a holdover from the OSS days which is possibly where rec was also found. I fixed that by replacing that option with -c 1 which forces single channel recording, which may not be optimal for transceivers capable of two channel output such as my K3 with the sub-receiver installed. By default rec will record in two channel mode. The files are thus about twice as large, but with a fader each channel could be listened to independently later on.

I also found a bug in the SOUnd menu code for option 3 in audio.c where the opendir() function was given the string "$HOME/tlf/soundlogs/" which, after some investigation cannot work as opendir does not work in the shell environment as the system() function does. So, I have fixed that by querying the value of HOME from the environment and then concatenating that with the rest of the string to pass to opendir().

Finally, in that same code where play is called, it is passed the -d /dev/dsp option by default. This fails on my system (Debian 11) where PulseAudio on ALSA is used but no /dev/dsp exists. I've not tackled that one yet but will tonight (of course I can comment out those lines for my local copy, but a more general solution is needed). I know there are already an abundance of config file keywords, but perhaps some more are warranted to get user control of the sound utilities in use--OSS, ALSA, PulseAudio, PipeWire, etc. I am still thinking of that one.

I am also considering eliminating the sound scripts--soundlog and play_vk--by calling the relevant sound utilities directly as this is already done in dorecord(). One advantage would be to allow using the ESC key to pkill the called utility just like ESC kills CW keying in the call and exchange input functions.

I likely won't get this together well enough for a pull request until next week. I'm writing this up as a reminder to myself and to let others know what I'm up to. I may also ask some questions via the mailing list.

Ubuntu 14

Ubuntu 14 seems to dislike the configure.ac

I am getting lots of MACRO may not be found ....

Command I am giving is

autoconf

Return from terminal editor results in arrow keys not working

I noticed when testing some fixes for CT mode that using a terminal mode editor results in the arrow keys only putting their letter representations--A, B, C, or D--into an entry field.

To reproduce, use the :SET, :CFG, or :EDIT command with a terminal editor defined in logcfg.dat. When the editor is exited and Tlf resumes control of the screen, try using the keyboard arrow keys.

I have confirmed this with vim, nano, and mcedit. My one try with gedit, a GUI editor, that did not take control of the terminal screen resulted in normal arrow key behavior when gedit was exited and control was resumed by Tlf.

I suspect we're not resetting or configuring the terminal completely/correctly after the terminal editor exits.

Unrecognized configure option --enable-hamlib

Page visited:
https://tlf.github.io/

Pulled source archive from download link:
http://download.savannah.gnu.org/releases/tlf/tlf-1.4.0.tar.gz

OS: Debian 10 Buster
DE: LXQt
Kernel: 4.19.0-6-amd64


When I try the following:

./configure --enable-hamlib --enable-fldigi-xmlrpc

I am receiving below error at the beginning and end of configure script:

configure: WARNING: unrecognized options: --enable-hamlib

Somewhere in the middle I also see:

configure: WARNING: you will need cmocka for running unit tests

Hamlib is installed on my system:

hamlib: /usr/include/hamlib /usr/share/man/man7/hamlib.7.gz

I installed the suggested dependencies and header files including optional sox and xplanet. Unsure what I'm missing other than a possible reboot. If interested, the full output can be found here:

https://pastebin.com/vVecDeDe

Thank You

Kansas QSO Party mult and dupe issues

I will be adding comments to this issue through the weekend.

  1. I changed bands from 20 CW to 40 CW early on this morning. I had at least three QSOs that I had worked on 20 that were then worked on 40. Of those QSOs it appeared that each had been the first mult on 20 and they were then listed as mults on 40.

  2. I changed from CW to phone and now each station that I worked on CW is now showing as a dupe on phone.

After the event is over tomorrow at 2000z I can do a more thorough investigation.

search for ncurses fails with new ax_with_curses.m4 on some systems

After configure I got "SysV or X/Open-compatible header file not found" on some systems.

Further inspections shows:

  • ncurses got installed with unicode support so /usr/include/ncurses.h and /usr/include/ncursesw/ncurses.h are installed.
  • configure found the ncursesw/ncurses.h which are not supported in out tlf_ncurses.h
  • The supplied ax_with_curses.m4 is patched to not look for ncursesw but anyhow it got found.

So finally:

  • The system has a preinstalled ax_with_curses.m4 which is not patched and gets used instead of our file.

Some possible ideas for getting around:

  • patch the supplied ax_with_curses.m4 and rename the helper function to a tlf specific one. (Ugly solution)
  • See if we can control the with_ncursesw and with_ncurses variables from outside the m4 file

Other ideas?

Some :XXX function do not work as expected

  • :CFG/:SET does no reload configuration as if it is done at program start

    • commenting out/removing some configs (just to name a few: SEND_DE, NOB4, CONTEST_MODE, MINITEST) has no effect
      • test: have SEND_DE in config, comment it out, reload, SEND_DE is still in effect
    • changes of some configs (notably hamlib and cluster) are not applied
      • test: change the cluster host, reload, still connects the original one
    • network errors after reload
      • test: define other nodes in config, start program, reload config without changing it, wait, "LAN: send problem...!"
    • erroneous config file
      • test: make a typo while in :CFG, parsing stops halfway the file, program is in an undefined state
    • there is no way to edit the rule file even though it also contains configs
  • Values changed via :MESsage/:SHOrt/:LONg/:CONtest commands are not persisted
    They only affect the current session.
    Changes are lost after reloading configs or restarting the program.
    Either
    1. fix it so that values are persisted (very hard IMO)
    2. warn the user about this, but at least document it (easy)
    3. remove them (very easy)

  • :TRX does not reconnect to the rig
    If the connection is lost due to RFI or a network outage there is no other way
    to reconnect other than restarting the program.
    One would expect that issuing :TRX twice (rig control off/on) would solve the problem, but it does not.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.