bandsaunter/tests
The Dust Council 14ba77da9a Put the APRS channel on the front page, and find it for you
The region was in the menu, in the receiver group, between the sample rate and
the invented channel.  That is the wrong place for it.  It is the setting that
decides whether anything is heard at all, and being on the wrong one sounds
exactly like having no aerial, so it does not belong a level down among the
things that make a working receiver work slightly better.

It is now on the front page of the APRS menu, named as well as numbered, and
so is the Listen line: "north-america 144.39 MHz" rather than "144.39 MHz",
because the number alone does not say whether it is the right one and the name
alone does not say what will be tuned.  A channel that is no region's says so
rather than claiming one.

The region and the frequency are separate settings -- somebody may want a
local packet network on neither -- which means they can be made to disagree.
Every place that chooses a region now goes through one function, so they
cannot.

And there is a search.  `bandsaunter aprs --find-channel`, or f in the menu,
listens on each region's channel in turn and prints what was on each, then
offers to use the busiest.  This answers the one question about APRS that
cannot be answered on any single frequency, because the answer *is* a
frequency: somebody who has just plugged a dongle in cannot tell a wrong
channel from a dead aerial, and that is worth a minute of listening rather
than an evening of doubt.

What it does not do is claim more than it found.  A quiet channel is not proof
of an empty one -- a fixed station beacons every half hour -- so what it finds
is traffic, and when every channel comes back silent it says that this is not
the same as an empty band and points at the aerial instead.

The invented channel now honours tuning, and only carries its stations on its
own frequency.  Without that the search would pass on a simulated band having
never searched anything, which is the kind of test that is worse than none.

Sixteen new tests against six deliberately broken builds.  The three that
searched a whole simulated band were doing the same expensive thing three
times over and now build their results directly, leaving one real end-to-end
search; that file went from nine and a half minutes to two.  Full suite 2612
passed.  Built as 2026-09-20_03.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PsWPTweCT6pwxKngvVxcg
2026-09-20 20:39:45 -07:00
..
adsb_gen.py Read the pictures, the aircraft, the meters and the sensors 2026-08-29 19:38:37 -07:00
conftest.py Aircraft, from the menus, on a live board, over a real map 2026-09-04 00:05:32 -07:00
image_gen.py Read the pictures, the aircraft, the meters and the sensors 2026-08-29 19:38:37 -07:00
morse_gen.py Initial commit: bandsaunter, an RTL-SDR signal scanner 2026-08-21 20:50:20 -07:00
signals.py Decode data signals, starting with on-off keying 2026-08-28 12:55:37 -07:00
speech.py Initial commit: bandsaunter, an RTL-SDR signal scanner 2026-08-21 20:50:20 -07:00
terminal.py Deal with the recordings, not just read them 2026-08-29 13:21:32 -07:00
test_acurite.py Say how strongly each sensor is being heard, and how much of it arrives 2026-09-07 23:50:37 -07:00
test_aircraft_display.py Give the aerodromes a colour of their own, and say what each aircraft is 2026-09-04 22:45:41 -07:00
test_aircraft_menu.py Cover every option in the help, the manual and the readme, and say what to install 2026-09-06 14:12:33 -07:00
test_announce.py Initial commit: bandsaunter, an RTL-SDR signal scanner 2026-08-21 20:50:20 -07:00
test_aprs.py Put the APRS channel on the front page, and find it for you 2026-09-20 20:39:45 -07:00
test_ax25.py Read the APRS channel: who is out there, and what they said 2026-09-20 19:36:30 -07:00
test_bands.py Name the band beside every frequency, and map who was heard 2026-08-28 11:02:56 -07:00
test_basemap.py A sharper map, and aircraft that fade rather than blink out 2026-09-04 19:04:09 -07:00
test_browse.py Draw the waterfall for everything that never spoke 2026-09-03 18:36:00 -07:00
test_callsign.py Hear the short replies, and read the other kind of callsign 2026-09-02 00:30:02 -07:00
test_classify.py Initial commit: bandsaunter, an RTL-SDR signal scanner 2026-08-21 20:50:20 -07:00
test_decode.py Decode data signals, starting with on-off keying 2026-08-28 12:55:37 -07:00
test_dsp.py Initial commit: bandsaunter, an RTL-SDR signal scanner 2026-08-21 20:50:20 -07:00
test_flags.py A window on the sky, and flags on the routes 2026-09-04 13:38:47 -07:00
test_flightmap.py Make the aircraft breathe, and send a ring out from each of them 2026-09-06 17:03:16 -07:00
test_flights.py Give the aerodromes a colour of their own, and say what each aircraft is 2026-09-04 22:45:41 -07:00
test_ident.py Hear the short replies, and read the other kind of callsign 2026-09-02 00:30:02 -07:00
test_images.py Ask a service that knows which leg it is, and fetch a map worth the screen 2026-09-04 20:19:53 -07:00
test_kml.py Hear the short replies, and read the other kind of callsign 2026-09-02 00:30:02 -07:00
test_licence.py Cover every option in the help, the manual and the readme, and say what to install 2026-09-06 14:12:33 -07:00
test_livemap.py Make the aircraft breathe, and send a ring out from each of them 2026-09-06 17:03:16 -07:00
test_manage.py Deal with the recordings, not just read them 2026-08-29 13:21:32 -07:00
test_manpage.py Read the APRS channel: who is out there, and what they said 2026-09-20 19:36:30 -07:00
test_morse.py Read the Morse a station sends over its own carrier 2026-09-02 07:57:18 -07:00
test_packets.py Read the APRS channel: who is out there, and what they said 2026-09-20 19:36:30 -07:00
test_quality.py Initial commit: bandsaunter, an RTL-SDR signal scanner 2026-08-21 20:50:20 -07:00
test_ranges.py Initial commit: bandsaunter, an RTL-SDR signal scanner 2026-08-21 20:50:20 -07:00
test_resize.py Redraw cleanly when the window is resized 2026-08-28 15:47:36 -07:00
test_scanner.py Remember runtime lock-outs, and let a lock-out be a span 2026-08-21 23:44:24 -07:00
test_schedules.py Ask a service that knows which leg it is, and fetch a map worth the screen 2026-09-04 20:19:53 -07:00
test_settings.py Remember runtime lock-outs, and let a lock-out be a span 2026-08-21 23:44:24 -07:00
test_signals_named.py Read the weather sensors on 433 MHz, and let them be given names 2026-09-07 13:40:33 -07:00
test_ssb.py Tune SSB to the carrier, and read the sideband from the signal 2026-08-21 23:09:44 -07:00
test_themes.py Let the map brightness reach the map, and put the options in groups 2026-09-06 12:26:00 -07:00
test_transcribe.py Hear the short replies, and read the other kind of callsign 2026-09-02 00:30:02 -07:00
test_trunk.py Recognise trunking control channels, and refuse to sit on them 2026-08-22 14:22:49 -07:00
test_tui.py Initial commit: bandsaunter, an RTL-SDR signal scanner 2026-08-21 20:50:20 -07:00
test_ui.py Initial commit: bandsaunter, an RTL-SDR signal scanner 2026-08-21 20:50:20 -07:00
test_version.py Add packaging, date-based versioning, and full install docs 2026-08-21 21:05:51 -07:00
test_waterfall.py Never call a string of Morse tones "words" 2026-09-03 21:44:14 -07:00
test_weather.py Show a sensor's identity in both bases, and take either 2026-09-20 14:47:08 -07:00