Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

km6thj/hamlog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HamLog

User manual for the hamlog program

This can be found here: doc/user_manual.org

Introduction

This is the attempt to make a console based logging application for Ham Radio contacts. It is meant to be simple and fast to use, but additional useful features may be added in the future. There are two parts:

  1. The Ham library, providing functions for creating and modifying contact lists.
  2. The hamlog user facing application.

The two parts are separate, and most of the actual functionality is kept in the library, so other applications using the library can easily be built without having to replicate the functionalities that have nothing to do with user interfaces.

State of Development

This is not really mature, but it is being used by some on a daily basis.

Compiling

Get GHC and Cabal using e.g. https://www.haskell.org/ghcup/. Run

cabal configure
cabal build

This should technically build on any system that supports all the needed libraries, which probably include macOS and Windows along with Linux. This has only been tried on Linux and macOS.

Library Usage

The HamLog monad is meant as an easy to use back end to manipulate log lists. A usage example would be:

runHamLog defaultConfig emptyLogState $ do
   readLog
   q <- newQsoNow
   updateQso 0 $ q { _qsoFreqency = MHz 146.52,
                     _qsoNotes    = "Nice contact!" }
   writeLog

Note that some things in this library are subject to change still. See the source for details.

CAT Interface

There is a CAT (computer aided transceiver) interface included. Currently, the Yaesu FT-891 and the Elecraft K3/KX2/KX3 are supported.

Adding support for another radio

Basically, the steps you need to do to support a new radio are simple: See the module Ham.CAT.SerialCAT; you need to add a set of functions in a SerialCAT structure. Check out the ones in Ham.CAT.YaesuFT891 and Ham.CAT.ElecraftKX2 for examples. It is currently assumed that the radio is connected using a serial interface, e.g. via USB. Note this interface may change in the future. Steps for adding a radio:

  • Add a SerialCAT interface and put it in a module in Ham.CAT, just like the existing radios.
  • Add a constructor for the new radio in Ham.CAT.Radios.Radio.
  • Add the SerialCAT interface to serialInterface in Ham.CAT.Radios.

Each of these steps is really not much to do, the most work is probably the first one.

The terminal UI supports reading the frequency and the current communications mode when creating a new contact. This functionality can be accessed in the `HamLog` monad also via the `cat` action.

Todo List

Switch in the UI for using CAT yes/no

Switch in the UI for automatic insertion of time yes/no

Export to support SOTA

Marking entries and exporting from the UI

ADIF import?

Add versioning for files and data structures. Support converting from older versions.

  • Note taken on [2020-09-05 Sat 13:22]
    Works for hamlog.config. Need to add some error reporting if something fails. Need to add support for versioning the log file.

Compute distances between locations

Add Cabrillo output to Contest typeclass.

Update QSO time while typing QSO.

Update the UTC time with e.g. CTRL-T.

End time optional

Add an ID to each QSO

This would help to find duplicates. Until then, use everything, including date/time, to find actual duplicates, minus the one we are searching for.

Fix callsign lookup

Search QSOs.

For searching and dupe checks, add hash table?

Tags, grouping by tags.

Multiple selection?

Scrollable notes, if necessary.

Application hangs when radio is not connected.

  • Note taken on [2020-09-06 Sun 23:06]
    Mitigation implemented. Not very pretty, but at least it happens only once per session at maximum.
  • Note taken on [2020-09-06 Sun 14:06]
    closeSerial blocks after writing / reading when the serial device exists but is not connected. There is no immediate way to get around that. Mitigation: add error reporting to CAT and after first failure, turn CAT off and let the user know.

Add error checks! This happens when the serial port is configured to the wrong file node.

[#B] Multiple log files?

  • Note taken on [2018-07-28 Sat 23:06]
    This is simply possible by keeping log files in separate directories, along with configurations.

[#A] Make the Info window scrollable and fixed height.

It messes up the UI if there are many messages.

Hand Writer [Text] result to the UI for the Info window.

Connection to radio

  • Note taken on [2020-09-05 Sat 13:21]
    Works so far SerialCAT implemented for FT891 and KX2/K3/KX3
  • Note taken on [2020-08-15 Sat 23:01] Support for Yaesu FT891 works, everything compiled in so far.

Add error handling to CAT

Separate the serial interface for particular radios from CAT.hs

Write / read configuration from disk.

Currently it’s compiled in.

Integrate getting values for new QSOs via CAT into HamLog.

Currently that is done in the Brick UI.

Minimal ADIF export to support LOTW

Sanitize QSOs when updating / creating.

Remove leading and trailing whitespaces, possibly toUpper, etc.

Point calculation NAQP

Add instance for Contest typeclass.

Dupe check

  • Note taken on [2020-07-07 Tue 00:21]
    More or less done.

Mode should stay the same for new contacts

Point calculation FieldDay

  • Note taken on [2020-06-30 Tue 23:03]
    Done.

[#A] Export to Cabrillo, configurable.

  • Note taken on [2020-06-30 Tue 23:00]
    Sort of works.

Values for exchanges at contests.

  • Note taken on [2018-07-28 Sat 23:05]
    Default values have been added to the config structure. See QsoDefaults. FixedValue means the UI does not display the value, DefaultValue means the UI displays it but pre-populates with the given value in the config file. This way the application can be configured to work better in contests.