Skip to content

SDL3 project inspired by HamClock from Clear Sky Institute

Notifications You must be signed in to change notification settings

Aaediwen/AaediHAM

Repository files navigation

Screenshot


This is my attempt at re-implementing the idea behind HamClock from Clear Sky Institute as an SDL application eventually with versions for Windows, Mac, and Linux from the same code base.


NEWS UPDATE

In light of recent news, I want to specifically post my respects for Elwood Downey, WB0OEW, whose work has inspired me to take on this project. Originally I had not planned to replace his work as I hoped he would continue for many years to come. It turns out this is not to be the case, so my goals and intentions for this project will likely shift. So far, I expect this is now the only maintained project of its kind. There are other programs who do a piece of it here or there, but I believe at this point that this project may be the most appropriate replacement for Elwood's HAMClock currently avaliable.


Command Line Options

Argument Example Action
--headless ./clock --headless --output=out.jpg Run in a headless mode with graphical output redirected to a disk file
--fullscreen ./clock --fullscreen Start the program in fullscreen mode
--renderer ./clock --renderer=software set the SDL renderer to use. renderer=help or renderer=list will show a list of avaliable rendering engines
--geometry ./clock --geometry=1920x1080 Resolution of the output from --headless, or the starting window resolution in a GUI environment
--output ./clock --headless --output=out.jpg Output file path for --headless
--QRZ_Pass ./clock --QRZ_Pass=mypassword Set the password to use for QRZ.com and exit (uses the Callsign for UserName)
--help ./clock --help This usage text

Keyboard Commands

Key Combo Action
Alt + C Dump contents of the primary program cache to disk
R Toggle resize each frame (stress-test resize code)
F11 Toggle fullscreen
Alt + Enter Toggle fullscreen
Q Quit
Alt + F4 Quit

Config File Format

The program now requires a config file (aaediclock_config.json) in the Current Directory.

{
     "CallSign": "N0CALL",             // your callsign here
     "PSKCall": "N0CALL",             // Optional -- if you want  PSK Reporter to show for a callsign other than your own
     "DE": {                           // your location
          "Latitude": 37.978,         
          "Longitude": -84.495
     },
     "DX": {                          // the location you want in the DX box
          "Latitude": 0.0,
          "Longitude": 0.0
     },
     "QRZ": [                        // QRZ password, added by command line argument.
          10,                       // if you want to type yours in here, use:
          10,                        // "QRZ": "QRZ_PASSWORD"
          10,                       // this will work, instead, but it will mean your password is in cleartext
          10,                        // better to use --QRZ_Pass command line option to set this
          10,
          10,
          10,
          10,
          10
     ],
     "SatList": [                    // a list of satellites to track from 
          "LES-5",                  // "https://celestrak.org/NORAD/elements/gp.php?GROUP=active&FORMAT=tle"
          "NOAA 15",
          "ISS (ZARYA)",
          "COSMOS 2409",
          "NOAA 18"
     ],
    "Rss": [                                            //Optional -- RSS Feed sources for ticker
          "https://www.k0nr.com/wordpress/feed/",
          "http://www.arrl.org/arrl.rss",
          "https://www.iaru.org/feed/",
          "https://qrper.com/feed/",
          "https://www.amateurlogic.tv/blog/?feed=rss2",
          "https://www.jpole-antenna.com/feed/",
          "https://hamradiofornontechies.com/feed/"
     ],
     "DX_Server": {                  // Telnet server to use for DX Spots
          "Name": "dxfun.com",
          "Port": 8000
     },
     "WSPR": [                        // Any WSPR nodes for the WSPR module to track/ Needs callsign and band to query on WSPR.Live
          {
               "callsign": "KY4EOD",
               "band": 14
          },
          {
               "callsign": "KQ4SIZ",
               "band": 28
          }
     ]
}

Library dependancies:


Data Sources:


Build Instructions:

CMake will attempt to fetch the direct dependancies as listed above. However, it may be up to the user to fetch sub depenancies not included in the CMakeLists for that library.
Linux:

     cd <source tree>
     mkdir build
     cd build 
     cmake .. 
     make
     cp -r ../images . 
     cp -r ../aaediclock_config.json . 
     ./clock

I actually recommend creating another directory where you place

  • clock
  • aaediclock_config.json
  • images/ (image assets)

However, it's not a big deal if you choose to do that in the source tree as shown above, and run from there. That's what I do a lot during development

Windows:

  Built using MSVC22
    Open the Source tree where CMakeFile.txt lives
    Select X64-Debug or X64-Release
    Project --> Rescan Solution
    Build --> Build All

    after building:
    Collect the compiled `clock.exe` and Dependancy DLL files from `out/build/...` into a common directory
    Copy the `images` directory into the same folder as `clock.exe`
    Copy or create an aaediclock_config.json file in the same directory

Runtime Requirements (Both Platforms)

The directory that contains the clock or clock.exe binary must also contain:

  • aaediclock_config.json
  • An images/ directory containing:
    • Day Map
    • Night Map
    • Countries Map
    • Moon image
    • Satellite icon images

If these are missing, the program will fail to render the corresponding assets.

About

SDL3 project inspired by HamClock from Clear Sky Institute

Resources

Stars

Watchers

Forks

Packages

No packages published