This makes the UI consider the radio's tuning steps, if defined as
the first course of action. The existing code tried the standard
set followed by the radio's set, assuming the radio's would be a
subset, which is of course not always true.
This also makes required_step() consider the radio-specific steps
after the standard ones, if there are any strange ones to allow the
radio to define ones that are not in the standard list.
Related to #10968
The ft1d driver has seemingly had incorrect tuning step handling since
the beginning. As a result, stricter handling of tuning steps
provided by the radio started to break down. This fixes them to work
according to the OEM software for all the available steps.
This is the first pass at converting all drivers to use current_index
instead of current (value) when defining RadioSettingValueList items.
These are just the easy/straightforward cases where we have a list and
and index into that list. Other instances with more complex invocations
will be handled separately.
The files that ended up with long lines as a result of this were
autopep8'd with just long-line fixes applied.
Jamming a hundred errors into a MessageBox is not scalable and looks
pretty dumb after a few. This makes it into a proper dialog that
shows the first line of each and lets the user select each for better
readability.
Related to #11519
In order to help make more sense of why a CSV file isn't open-able,
we should log any headers we don't recognize so the user will see
them. Note that the test csv file in tests/images is from a billion
years ago, when we apparently had bank info as a column. With this,
the test that asserts we load CSV files with no errors fails on our
own sample file (!).
Related to #11519
If we fail to find a matching driver and the file appears to be a
".csv" file, return GenericCSV as a match. This will make us try to
open the file with the generic driver and thus capture loading error
messages and show them to the user. Otherwise we would just fail to
match a driver, and report the format is unsupported, which is
confusing to a user.
Related to #11519
Some software that spits out CSV may just quote everything, even when
not needed. Doing that prevents us from recognizing the header and
thus makes us think a file isn't in a known format.
Fixes: #11519
Memories that chirp edits from scratch ended up with more unknown
bits set, which interfered with the enabling of tones. This makes us
clear the memory to zero first (which appears to be the way other
software does it) and also set one of the unknown bits to a known
value.
Fixes#11451
The memory editor will fail with a 'KeyError: N' error if the user
attempts to paste more memories than will fit. This makes us not
choke, stop when we get to the end, and report to the user (unless
the memories that don't fit are empty).
Fixes#11510
This test has been wrong for a long time, basically never properly
asserting DTCS values for drivers. The three drivers fixed immediately
before this commit should have been caught by this test, but were not
because it was always skipping the dtcs field.
Related to #11506
This driver has been broken forever in how it handles DTCS tone mode.
It was always using the rx_dtcs field, which should only be honored
in a ->DTCS cross mode. The new GUI, being in hide-unused-fields mode
always made this clear, as it appeared to be snapping back to 023
always when the user selected a different value.
Note that the test is *also* broken, which I will fix at the end of
this series.
Related to #11506
This driver has been broken forever in how it handles DTCS tone mode.
It was always using the rx_dtcs field, which should only be honored
in a ->DTCS cross mode. The new GUI, being in hide-unused-fields mode
always made this clear, as it appeared to be snapping back to 023
always when the user selected a different value.
Note that the test is *also* broken, which I will fix at the end of
this series.
Related to #11506
This driver has been broken forever in how it handles DTCS tone mode.
It was always using the rx_dtcs field, which should only be honored
in a ->DTCS cross mode. The new GUI, being in hide-unused-fields mode
always made this clear, as it appeared to be snapping back to 023
always when the user selected a different value.
Note that the test is *also* broken, which I will fix at the end of
this series.
Fixes: #11506
The share of python3-uncompliant drivers has dropped to such a small
fraction that I've forgotten to enforce that new drivers be added to
the matrix.
So, at this point, it's time to flip the whitelist to a blacklist and
just mark the drivers that haven't been tested. This removes the
matrix and generation script, content from the makesupported target,
and instructions from the PR template. It replaces those with a simple
list of drivers in tests/py3-untested-drivers.txt
This fixes the ability to download from any uvk5 in read-only mode,
regardless of firmware version. The previous patch did not properly
implement the exclusion in the download routine.
These radios (annoyingly) treat frequencies in airband as AM, which
really isn't how chirp was designed to work. Before, we were making
them immutable, but that brings all sorts of problems with it. Instead,
coerce the values on get/set, and return a warning from
validate_memory() so the user is warned.
In reality, we should probably be doing that more places where we have
immutable fields, where the immutable-ness depends on the content of
the memory (i.e the frequency) than the location.
Fixes: #11441
This is sort of an approximation as we don't have a good way to
support pairs of full memories stored together, but it's probably
close enough.
Related to #10018
Since live radios don't have a comment column (even with metadata
simulation) we cannot assume it is there for calculating the index for
extra columns.
This allows LiveRadio drivers to use the single serial connection as
if it has exclusive access by making sure that only one RadioJob runs
at any given time. This could potentially reduce performance if you
were doing lots of operations against multiple live radios at once,
and we could improve that later. However, it makes writing LiveRadio
drivers with multiple sub_devices much more straightforward.