The adapter was ignoring tests that collect and return multiple failures at once,
so any CopyAll failures were ignored. This makes the adapter just pick off the first
one and raise it.
Found while reviewing the driver for #4787
This test was completely wrong, and not really running for any driver. Realized it was
doing something stupid while trying to run it against the CSV driver (which supports
DC->daylight).
Some radios were claiming to support steps they don't support because they were taking
the full list in chirp_common as a default, which is clearly wrong. This patch changes
the default to a very conservative set, which may cause some drivers to no longer accept
some frequencies that may be valid because they were not declaring their real supported
list.
This also uncovered at least one buggy driver that can't support anything other than
5kHz step frequencies (ic2730).
Found in the pursuit of #495
Shockingly we were missing an automated test for memory delete. Adding that
uncovered several issues in various drivers. Some drivers explicitly do not
do delete operations, so mark those in radiofeatures so we can skip the test
for them.
Related to #6455#6453#6451#6449
The test needs to be tolerant of the dyanamic class being
a subclass of the real radio class. Since we didn't have any
metadata-laden images in the tree, this went unnoticed initially.
Related to #6063
This makes us save the current CHIRP_VERSION into the image metadata
when we write it out. This is helpful so we can determine if the image
was generated from a newer version, especially if we fail to load it.
This makes mainapp not put up a detection dialog if the image has
metadata (since we would know exactly which driver to use if we could),
and specifically mentions that the image was from a newer version if we
detect that case.
This also stashes the loaded metadata on the radio in case it's useful
later, but does not yet let the driver modify it (at least, modified
metadata will not be saved).
Related to #5995
This makes FileBackedRadio transparently save image files with an extra
blob of metadata tacked onto the end of the file. The metadata region
begins with a magic string followed by a base64-encoded json blob. I
figure we can call all images created up until now "version zero" format,
since they really aren't formatted at all. Any major format changes after
this can increment the counter in the magic (although it's unlikely we
would need to).
The metadata currently saved includes the radio model details and the class
used at the time the file was created. All existing images will still load,
but when they are saved, will be augmented with metadata. Note that this will
mean images saved from newer versions of chirp will not be readable by older
versions which will be confused by the metadata.
One major feature this brings is the ability to make radio aliases (and other
weak subclasses) be "sticky" across save/load cycles. Right now if you download
with an alias (such as the Arcshell AR-6 alias of the BF-888), the file will
be detected and reported as a BF-888 from that point forward. With metadata in
the image, we can properly select the alias on load to provide better UX.
This includes some low-effort tweaking of the directory and clone code to
select the right radio class based on metadata if present, and to properly
return a radio class for the alias, if one matches. We might want to re-structure
the alias class arrangement after this to make them properly-registered and
fully-functional subclasses so that the hacky DynamicRadioAlias subclassing
done here isn't necessary.
Also note that the generic saving code will not append metadata for filenames
not ending in .img, to preserve behavor for .vx5 files, etc. If a filename forces
a non-standard file extension, the metadata will not be added and the result
will be effectively the same as the older format (which then may not be loaded
properly if it is mis-detected as a different model).
Closes#5995
FT70 Driver I now have enough of the driver working to be useful.
Read / write memories, a number of the settings, and import from RepeaterBook work.
Saving modes dn,vw and AMS in memory channels, do not currently work.
Banks have not been tested - may now work, VFO settings not implemented (etc)
I have also raised a request for C4FM to be added to CHIRP Modes.
This fixes one test case that should ignore memories that don't validate
from the radio, and makes the MURS1 radio support said validation.
This is related to #5255
This lets us use the integrated unittest runner, which does things
like report failures at the end, stdio buffering, etc. You can still
use the old tests/run_tests if desired (for now), but this makes it
much nicer for the build system.
Loosely related to #5237
The unified logging code arrests stdout for the purposes of non-interactive
console logging to a file. This has been preventing proper console output
when running in the build system, making it harder to debug failures. This
adds a CHIRP_TESTENV override environment variable, and always sets it from
the test runner since we should always have interactive output from it.
Related to #5237
First, in r2787 we made the BruteForce test do RadioFeatures validation on
a memory, avoiding a failure if the memory did not validate. For some reason
we still required that radio.validate_memory() pass for any of those tests,
which doesn't allow for the radio to ban quirks in the tests. This makes us
not fail if the radio rightly fails to validate.
Second, we were modifying the memory in do_mode() so that once we passed FM
in the mode sequence we were always trying freq+100Mhz. Depending on how we
ran the tests (i.e. which order we hit the modes) this would sometimes fail.
This makes us copy the original memory so we're stable throughout the modes.
Related to #5237
This patch adds basic support for the Retevis RT23 radio.
Note: This patch removes the "sleep" delays that were in the previously
submitted patch.
#4619
This patch ensures that the functions from the correct radio class are called
when downloading from the radio. This is achieved by defining distinct MODELs
for the VX-8R, VX-8DR, and VX-8GE and deleting their VARIANTs. This patch is
also accompanied (out-of-band) with test image files for each of the radios.
This patch adds basic CHIRP support for programming the FTM-3200D. This radio
shares most of its memory layout with the FT1D, so it has been created as a
subclass of that radio.
#4279
I hope IC-P7A/IC-E7 will work.
Supported features
* Regular Memory (CH 0 to 999) editing
- Bank settings (Bank, Bank Index, Bank Name)
- DTCS settings (DTCS code, DTCS polarity)
- Frequency (0.495000-999.990000MHz), Mode, Offset, Tuning step settings
- Memory Name setting
- CTCSS tone setting (Tone, TSQL)
Not supported features:
* Train SQL setting in memory
* Common radio settings (Beep, Display, Bank Link, RF power, etc...)
* Scan Edge CH, Auto Write CH, TV CH, CALL CH editing
This makes the BruteForce test check validate_memory() before trying
to set it in the radio and subsequently failing. If a radio doesn't
validate a memory it may have some weird requirements. Also, make
the edges test try to use the first mode out of the valid_modes list
instead of the default 'FM'.
Related to issue #4119