This is long overdue, but we can flip the NEEDS_COMPAT_SERIAL flag
to off now, since almost everything is migrated and then new drivers
won't have to add it.
The fact that there are no changes to the test matrix shows that this
doesn't change the status of any drivers. All the ones that were
inheriting the old default have been explicitly opted into compat
behavior.
This makes import_logic fail early if the frequency is outside the
supported range of the destination radio. Otherwise other checks
may be run and fail when the radio shouldn't even expect to have to
deal with them.
This makes us keep detected models separate per class that they
were @detected_by. Before this, we would end up with a mashup of all
the detected subclasses in the highest parent class that was a detect
target (i.e. TID H3 and H8 mixed together). Now, we keep them
separate at import/class define time so we don't have to further
filter them. Also, this builds in the include-self behavior to
detected_models() to avoid having to repeat that everwhere.
This also fixes a download..upload..download bug where we will corrupt
the last_model with the detected model name, which isn't selectable
on download (since it's detected and not listed).
The work to enable comments in CSV files broke the detection of those
files when a BOM is present and there are no comments before the
header.
Fixes: #11303
If duplex is 'off' we don't need to obsess over the offset value,
which is unused anyway. Some drivers may not be able to store an
offset if duplex=off and/or may use the offset for signaling of that
fact.
This should also work seamlessly for IC-746PRO, as it is using the same
address for the CI-V protocol.
As with other existing icomciv.py based implementations, I did not add
general radio settings: this implementation only allows for setting
memories.
Fixes#11246
This was committed with a metadata tag of being a UV-17Pro, which is
not correct. This updates the test image with one from the issue
tracker.
Fixes#11181
This is untested (other than driver tests) and thus may not work,
but it's closer than it was. Note that this was _passing_ the clone
tests because it was failing to provide a bytes to struct.pack(),
which was raising the required RadioError the test expects. However,
once fixing it, it will clone in from SerialGarbage without any
complaint. So I added an assertion to the end of the clone-in that
I think is correct based on the file data match logic, but is, of
course, untested.
This reverts commit bc4666e617.
As reported, this seems to be causing people trouble for unknown
reasons. Since this has only been available in the wild for a brief
time, reverting it is the quickest path to limit the fallout.
Related to #11167
This implements the set immutable policy handler so we allow incoming
memories set to AM if they're in the right band, so that paste works.
Related to #11022
This will cause us to try to insert comment lines back where they
came from when we save a file. We do that by keeping track of which
memory they came after and trying to insert them back into the stream
when we save. This will be inexact, of course, but is probably good
enough for most people.
Related to #11081
This makes the dual-bank models "detected by" the regular ones and
also de-alias-es the whole leixen hierarchy. Also fix up some
non-byte-clean stragglers in this driver.
Co-Authored-By: Dan Smith <chirp@f.danplanet.com>
Fixes: #4069
This makes bitwise warn about duplicate names defined in the same
scope, which before resulted in loss of access to the eclipsed
element. Now, an error log is emitted.
There are a lot of drivers committing this crime, so I've added a
test to highlight them and marked it as XFAIL for the moment.
Fixes#11140
This logs a warning if the user tries to open an old UVK5 image
from before we were recording the firmware (and had two
implementations) indicating that they should download a fresh image.
It also refuses to load an image with a firmware string the driver
specifically rejects.
This requires updating the three related images in the tree because
they were captured before we were doing that stamping, which makes
them log warnings, which the tests assert doesn't happen.
Related to #11125
When we try to load a setting that fails to initialize (using the new
lazy-load function), we should leave that "uninitialized" in the UI
property grid. That means we can (a) exclude it from the settings sent
to the radio in set_settings() and (b) allow the user to give the
setting a sane value according to the limits provided in the setting
to correct the issue.
Mark those uninitialized settings in yellow in the property grid.
Fixes#11138