Developers
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 1 participants
- 2965 discussions
[chirp_devel] Add 8 new PMR channels to LPD and PMR stock config. Fixes #4107.
by Tyler Tidman 25 Oct '16
by Tyler Tidman 25 Oct '16
25 Oct '16
1
0
25 Oct '16
2
1
4
7
[chirp_devel] [PATCH] [btech] Add support for 5Tone-seetings. Contributes to #4051
by Michael Wagner (OE4AMW) 20 Oct '16
by Michael Wagner (OE4AMW) 20 Oct '16
20 Oct '16
# HG changeset patch
# User Michael Wagner <michael.wagner(a)gmx.at>
# Date 1476818302 -7200
# Tue Oct 18 21:18:22 2016 +0200
# Node ID eb2212d953038f9e6b43987d3deb09763bdec2c4
# Parent cc28502a220f297e56fa9d99e7ea74480e1cd15f
[btech] Add support for 5Tone-seetings. Contributes to #4051
Added support for all 5-Tone related settings provided by the QYT KT-8900R.
Only tested with KT-8900R - reports with other models supported by the btech-driver are highly appreciated.
diff -r cc28502a220f -r eb2212d95303 chirp/drivers/btech.py
--- a/chirp/drivers/btech.py Sun Oct 16 16:55:56 2016 -0700
+++ b/chirp/drivers/btech.py Tue Oct 18 21:18:22 2016 +0200
@@ -155,6 +155,44 @@
u8 unknown1[10];
} names[200];
+#seekto 0x2400;
+struct {
+ u8 period; // one out of LIST_5TONE_STANDARD_PERIODS
+ u8 group_tone;
+ u8 repeat_tone;
+ u8 unused[13];
+} _5tone_std_settings[15];
+
+#seekto 0x2500;
+struct {
+ u8 frame1[5];
+ u8 frame2[5];
+ u8 frame3[5];
+ u8 standard; // one out of LIST_5TONE_STANDARDS
+} _5tone_codes[15];
+
+#seekto 0x25F0;
+struct {
+ u8 _5tone_delay1; // * 10ms
+ u8 _5tone_delay2; // * 10ms
+ u8 _5tone_delay3; // * 10ms
+ u8 _5tone_first_digit_ext_length;
+ u8 unknown1;
+ u8 unknown2;
+ u8 unknown3;
+ u8 unknown4;
+ u8 decode_standard;
+ u8 unknown5:5,
+ _5tone_decode_call_frame3:1,
+ _5tone_decode_call_frame2:1,
+ _5tone_decode_call_frame1:1;
+ u8 unknown6:5,
+ _5tone_decode_disp_frame3:1,
+ _5tone_decode_disp_frame2:1,
+ _5tone_decode_disp_frame1:1;
+ u8 decode_reset_time; // * 100 + 100ms
+} _5tone_settings;
+
#seekto 0x3000;
struct {
u8 freq[8];
@@ -237,6 +275,19 @@
LIST_WIDE = ["Wide", "Narrow"]
STEPS = [2.5, 5.0, 6.25, 10.0, 12.5, 25.0]
LIST_STEP = [str(x) for x in STEPS]
+LIST_5TONE_STANDARDS = ["CCIR1", "CCIR2", "PCCIR", "ZVEI1", "ZVEI2", "ZVEI3",
+ "PZVEI", "DZVEI", "PDZVEI", "EEA", "EIA", "EURO",
+ "CCITT", "NATEL", "MODAT", "none"]
+LIST_5TONE_STANDARDS_without_none = ["CCIR1", "CCIR2", "PCCIR", "ZVEI1",
+ "ZVEI2", "ZVEI3",
+ "PZVEI", "DZVEI", "PDZVEI", "EEA", "EIA", "EURO",
+ "CCITT", "NATEL", "MODAT"]
+LIST_5TONE_STANDARD_PERIODS = ["20", "30", "40", "50", "60", "70", "80", "90",
+ "100", "110", "120", "130", "140", "150", "160",
+ "170", "180", "190", "200"]
+LIST_5TONE_DIGITS = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]
+LIST_5TONE_DELAY = ["%s ms" % x for x in range(0, 1010, 10)]
+LIST_5TONE_RESET = ["%s ms" % x for x in range(100, 8100, 100)]
# This is a general serial timeout for all serial read functions.
# Practice has show that about 0.7 sec will be enough to cover all radios.
@@ -1136,7 +1187,11 @@
other = RadioSettingGroup("other", "Other Settings")
work = RadioSettingGroup("work", "Work Mode Settings")
fm_presets = RadioSettingGroup("fm_presets", "FM Presets")
- top = RadioSettings(basic, advanced, other, work, fm_presets)
+ stds_5tone = RadioSettingGroup ("stds_5tone", "5 Tone Standard Settings")
+ codes_5tone = RadioSettingGroup ("codes_5tone", "5 Tone Codes")
+ settings_5tone = RadioSettingGroup ("settings_5tone", "5 Tone Settings")
+ top = RadioSettings(basic, advanced, other, work, fm_presets,
+ stds_5tone, codes_5tone, settings_5tone )
# Basic
tdr = RadioSetting("settings.tdr", "Transceiver dual receive",
@@ -1613,7 +1668,206 @@
fm_presets.append(fmfreq)
i = i + 1
+
+ # 5 Tone Settings
+ def my_apply_list_value(setting, obj):
+ options = setting.value.get_options()
+ obj.set_value ( options.index(str(setting.value)) )
+
+ _5tone_standards = self._memobj._5tone_std_settings
+ i = 0
+ for standard in _5tone_standards:
+ line = RadioSetting("_5tone_std_settings_" + str(i) + "_period",
+ LIST_5TONE_STANDARDS[i] + " Period (ms)",
+ RadioSettingValueList
+ (LIST_5TONE_STANDARD_PERIODS,
+ LIST_5TONE_STANDARD_PERIODS[standard.period]))
+ line.set_apply_callback(my_apply_list_value, standard.period)
+ stds_5tone.append(line)
+ line = RadioSetting("_5tone_std_settings_" + str(i) + "_grouptone",
+ LIST_5TONE_STANDARDS[i] + " Group Tone",
+ RadioSettingValueList(LIST_5TONE_DIGITS,
+ LIST_5TONE_DIGITS[standard.group_tone]))
+ line.set_apply_callback(my_apply_list_value, standard.group_tone)
+ stds_5tone.append(line)
+ line = RadioSetting("_5tone_std_settings_" + str(i) + "_repttone",
+ LIST_5TONE_STANDARDS[i] + " Repeat Tone",
+ RadioSettingValueList(LIST_5TONE_DIGITS,
+ LIST_5TONE_DIGITS[standard.repeat_tone]))
+ line.set_apply_callback(my_apply_list_value, standard.repeat_tone)
+ stds_5tone.append(line)
+ i = i + 1
+
+ def my_apply_5tonestdlist_value(setting, obj):
+ if LIST_5TONE_STANDARDS.index(str(setting.value)) == 15:
+ obj.set_value(0xFF)
+ else:
+ obj.set_value( LIST_5TONE_STANDARDS.index(str(setting.value)) )
+
+ def apply_5tone_frame(setting, obj):
+ LOG.debug("Setting 5Tone: " + str(setting.value) )
+ valstring = str(setting.value)
+ if len(valstring) == 0:
+ for i in range(0,5):
+ obj[i] = 255
+ else:
+ validFrame = True
+ for i in range(0,5):
+ currentChar = valstring[i].upper()
+ if currentChar in LIST_5TONE_DIGITS:
+ obj[i] = LIST_5TONE_DIGITS.index(currentChar)
+ else:
+ validFrame = False
+ LOG.debug("invalid char: " + str(currentChar))
+ if not validFrame:
+ LOG.debug("setting whole frame to FF" )
+ for i in range(0,5):
+ obj[i] = 255
+
+ def validate_5tone_frame(value):
+ if (len(str(value)) != 5) and (len(str(value)) != 0) :
+ msg = ("5 Tone must have 5 digits or 0 digits")
+ raise InvalidValueError(msg)
+ for digit in str(value):
+ if digit.upper() not in LIST_5TONE_DIGITS:
+ msg = (str(digit) + " is not a valid digit for a 5-Tone")
+ raise InvalidValueError(msg)
+ return value
+
+ def frame2string(frame):
+ frameString = ""
+ for digit in frame:
+ if digit != 255:
+ frameString = frameString + LIST_5TONE_DIGITS[digit]
+ return frameString
+
+ _5tone_codes = self._memobj._5tone_codes
+ i = 1
+ for code in _5tone_codes:
+ if (code.standard == 255 ):
+ currentVal = 15
+ else:
+ currentVal = code.standard
+ line = RadioSetting("_5tone_code_" + str(i) + "_std",
+ "5-Tone-Code " + str(i) + " Standard",
+ RadioSettingValueList(LIST_5TONE_STANDARDS,
+ LIST_5TONE_STANDARDS[
+ currentVal]) )
+ line.set_apply_callback(my_apply_5tonestdlist_value, code.standard)
+ codes_5tone.append(line)
+ val = RadioSettingValueString(0, 6,
+ frame2string(code.frame1), False)
+ line = RadioSetting("_5tone_code_" + str(i) + "_frame1",
+ "5-Tone-Code " + str(i) + " Frame 1", val)
+ val.set_validate_callback(validate_5tone_frame)
+ line.set_apply_callback(apply_5tone_frame, code.frame1)
+ codes_5tone.append(line)
+
+ val = RadioSettingValueString(0, 6,
+ frame2string(code.frame2), False)
+ line = RadioSetting("_5tone_code_" + str(i) + "_frame2",
+ "5-Tone-Code " + str(i) + " Frame 2", val)
+ val.set_validate_callback(validate_5tone_frame)
+ line.set_apply_callback(apply_5tone_frame, code.frame2)
+ codes_5tone.append(line)
+
+ val = RadioSettingValueString(0, 6,
+ frame2string(code.frame3), False)
+ line = RadioSetting("_5tone_code_" + str(i) + "_frame3",
+ "5-Tone-Code " + str(i) + " Frame 3", val)
+ val.set_validate_callback(validate_5tone_frame)
+ line.set_apply_callback(apply_5tone_frame, code.frame3)
+ codes_5tone.append(line)
+ i = i + 1
+
+ _5_tone_decode1 = RadioSetting(
+ "_5tone_settings._5tone_decode_call_frame1",
+ "5Tone decode call frame 1",
+ RadioSettingValueBoolean(
+ _mem._5tone_settings._5tone_decode_call_frame1))
+ settings_5tone.append(_5_tone_decode1)
+
+ _5_tone_decode2 = RadioSetting(
+ "_5tone_settings._5tone_decode_call_frame2",
+ "5Tone decode call frame 2",
+ RadioSettingValueBoolean(
+ _mem._5tone_settings._5tone_decode_call_frame2))
+ settings_5tone.append(_5_tone_decode2)
+
+ _5_tone_decode3 = RadioSetting(
+ "_5tone_settings._5tone_decode_call_frame3",
+ "5Tone decode call frame 3",
+ RadioSettingValueBoolean(
+ _mem._5tone_settings._5tone_decode_call_frame3))
+ settings_5tone.append(_5_tone_decode3)
+
+ _5_tone_decode_disp1 = RadioSetting(
+ "_5tone_settings._5tone_decode_disp_frame1",
+ "5Tone decode disp frame 1",
+ RadioSettingValueBoolean(
+ _mem._5tone_settings._5tone_decode_disp_frame1))
+ settings_5tone.append(_5_tone_decode_disp1)
+
+ _5_tone_decode_disp2 = RadioSetting(
+ "_5tone_settings._5tone_decode_disp_frame2",
+ "5Tone decode disp frame 2",
+ RadioSettingValueBoolean(
+ _mem._5tone_settings._5tone_decode_disp_frame2))
+ settings_5tone.append(_5_tone_decode_disp2)
+
+ _5_tone_decode_disp3 = RadioSetting(
+ "_5tone_settings._5tone_decode_disp_frame3",
+ "5Tone decode disp frame 3",
+ RadioSettingValueBoolean(
+ _mem._5tone_settings._5tone_decode_disp_frame3))
+ settings_5tone.append(_5_tone_decode_disp3)
+
+ line = RadioSetting("_5tone_settings.decode_standard",
+ "5-Tone-decode Standard",
+ RadioSettingValueList(
+ LIST_5TONE_STANDARDS_without_none,
+ LIST_5TONE_STANDARDS_without_none[
+ _mem._5tone_settings.decode_standard]))
+ settings_5tone.append(line)
+
+ list = RadioSettingValueList(LIST_5TONE_DELAY,
+ LIST_5TONE_DELAY[
+ _mem._5tone_settings._5tone_delay1])
+ line = RadioSetting("_5tone_settings._5tone_delay1",
+ "5-Tone Delay Frame1", list)
+ settings_5tone.append(line)
+
+ list = RadioSettingValueList(LIST_5TONE_DELAY,
+ LIST_5TONE_DELAY[
+ _mem._5tone_settings._5tone_delay2])
+ line = RadioSetting("_5tone_settings._5tone_delay2",
+ "5-Tone Delay Frame2", list)
+ settings_5tone.append(line)
+
+ list = RadioSettingValueList(LIST_5TONE_DELAY,
+ LIST_5TONE_DELAY[
+ _mem._5tone_settings._5tone_delay3])
+ line = RadioSetting("_5tone_settings._5tone_delay3",
+ "5-Tone Delay Frame3", list )
+ settings_5tone.append(line)
+
+ list = RadioSettingValueList(
+ LIST_5TONE_DELAY,
+ LIST_5TONE_DELAY[
+ _mem._5tone_settings._5tone_first_digit_ext_length])
+ line = RadioSetting("_5tone_settings._5tone_first_digit_ext_length",
+ "First digit extend length", list)
+ settings_5tone.append(line)
+
+ list = RadioSettingValueList(
+ LIST_5TONE_RESET,
+ LIST_5TONE_RESET[
+ _mem._5tone_settings.decode_reset_time])
+ line = RadioSetting("_5tone_settings.decode_reset_time",
+ "Decode reset time", list)
+ settings_5tone.append(line)
+
return top
def set_settings(self, settings):
2
1
[chirp_devel] Need help with tracing/logging serial communication
by Patrick Strasser-Mikhail OE6PSE 17 Oct '16
by Patrick Strasser-Mikhail OE6PSE 17 Oct '16
17 Oct '16
Hello!
We are currently running an amateur radio license training and will
provide all successful participants (hopefully about 30) with Alinco DJ
500. The Alinco software does it's job, but I want to have support for
that model in CHIRP.
I'm happy to see that CHIRP is written in Python and does a very nice
job in doing all this bit and structure shuffling.
I have a running programming setup, that is the HT, original FTDI-based
USB Serial converter and the software, running in Virtualbox 4.3 both
Windows XP 32 bit and Windows 7 32 bit.
Now I followed
http://chirp.danplanet.com/projects/chirp/wiki/DevelopersAdd_a_Radio
and tried to get a trace of the communication while reading/writing the
channels.
Unfortunately Portmon 3.02, the last version that was published, does
not support Windows 7. I tried compatibility settings for XP, not
better. I tried Portmon in Windows XP, no trace possible. Portmon simply
does not offer to trace at all.
What are your experiences with working setup?
Which recommendations can you give me?
Best Regards
73 de Patrick OE6PSE
--
Engineers motto: cheap, good, fast - choose any two
Amateur Radio Operator / Ham / Funkamateur / QTH: JN77rb
http://oevsv.at/
One of the lucky 10.000: http://xkcd.com/1053
Use Mail Encryption Today! PGP Key ID: 0xDF8A127E5A120903
Patrick Strasser-Mikhail OE6PSE <oe6pse at oevsv dot at>
4
3
Windows XP presents a problem. I don’t think Chocolatey or even Ketarin supports it. However, according to https://stackoverflow.com/questions/39386471/can-i-build-chocolatey-package… it is possible to compile using Mono on Linux. I don’t know how much you are willing to alter your Linux installations, but all the script would really need to do is edit values contained in two text files, commit those changes in Git, run the chocolatey package command, and push the package.
-Philip Arola
-KG7VAM
-philiparola(a)hotmail.com<mailto:philiparola@hotmail.com>
From: Dan Smith via chirp_devel<mailto:chirp_devel@intrepid.danplanet.com>
Sent: Saturday, October 8, 2016 4:22 PM
To: chirp_devel(a)intrepid.danplanet.com<mailto:chirp_devel@intrepid.danplanet.com>
Subject: Re: [chirp_devel] Windows Server availability
> Excellent. I will try to get a working script and test it across a few
> versions. I think in your case, simply using the PowerShell script is
> the better choice, considering Ketarin is meant to be run continuously
> as a monitor.
Note that the builds are made on WinXP for maximum backwards
compatibility. I've never used powershell, but be aware that the build
environment is old for a reason.
Also, the whole build process is scripted over ssh with cygwin bash in
the windows image. So whatever I run has to be callable from that
environment.
--Dan
_______________________________________________
chirp_devel mailing list
chirp_devel(a)intrepid.danplanet.com
http://intrepid.danplanet.com/mailman/listinfo/chirp_devel
Developer docs: http://chirp.danplanet.com/projects/chirp/wiki/Developers
2
1
Tested changes:
[Dan Smith <dsmith(a)danplanet.com>] Add test image for Retevis RT21 from Jim
#4139
[Jim Unroe <rock.unroe(a)gmail.com>] [New Model] Retevis RT21
This patch adds support for the Retevis RT21
#4139
[Michael Wagner <michael.wagner(a)gmx.at>] [btech] Resetting mem-extra-settings only when editing previously empty memory. Part of fix for #4121
Attempt to fix #4121 for the driver btech.py following Dan's proposal in http://intrepid.danplanet.com/pipermail/chirp_devel/2016-October/004298.html .
73,
Michael Wagner, OE4AMW
[Tom Hayward <tom(a)tomh.us>] [id880] Fix typo in charset definition. #281
[Tom Hayward <tom(a)tomh.us>] [thf6a] Support full charset (ASCII). Fixes #141
[Tom Hayward <tom(a)tomh.us>] [id880] Support full charset. Fixes #281
[Tom Hayward <tom(a)tomh.us>] [vx5] Support full charset (ASCII). Fixes #292
[Tom Hayward <tom(a)tomh.us>] [id31a] set used bit when creating new memory, clear when deleting. Fixes #269
[Tom Hayward <tom(a)tomh.us>] Support PyGTK < 2.22 in bank edit. Fixes #231
[Tom Hayward <tom(a)tomh.us>] [d710] [v71] [d72] Fix tone list (not all tones are supported). Fixes #212
[Dan Smith <dsmith(a)danplanet.com>] [vx7] Fix setting memory power levels on 220MHz band
Fixes #214
[Dan Smith <dsmith(a)danplanet.com>] fips: Pennsylvania FIPS code was wrong. #117
[Marco Filippi <iz3gme.marco(a)gmail.com>] Consider lower bound frequency of each valid_band as valid
Fix bug #181
[Tom Hayward <tom(a)tomh.us>] tmd700: allow 8-char names. Fixes #176
[Dan Smith <dsmith(a)danplanet.com>] Fix the "blind deletion" problem, as well as properly direct copy/paste
Fixes #172
[David Griffith <dave(a)661.org>] Bug #155 fix: VX-7 1.25m power levels
[David Griffith <dave(a)661.org>] New INSTALL and README files
Fixes #122
[Tom Hayward <tom(a)tomh.us>] thd72: only use hardware flow on OS X. Fixes #166
[Marco Filippi <iz3gme.marco(a)gmail.com>] [FT817] Tone freq not set correctly
Same as #88 for FT857, to avoid code duplication fix code have been moved from
ft857 to its ancestor class
Fix bug #163
[Tom Hayward <tom(a)tomh.us>] Fix Mac .app so paths with spaces work. Fixes Bug #145
Full log:
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/chirp-test/workspace
[workspace] $ hg showconfig paths.default
[workspace] $ hg pull --rev default
[workspace] $ hg update --clean --rev default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
[workspace] $ hg log --rev . --template {node}
[workspace] $ hg log --rev . --template {rev}
[workspace] $ hg log --rev 647ced1e7aeb6d228f3ab408ff1c343c93b843dd
[workspace] $ hg log --template "<changeset node='{node}' author='{author|xmlescape}' rev='{rev}' date='{date}'><msg>{desc|xmlescape}</msg><added>{file_adds|stringify|xmlescape}</added><deleted>{file_dels|stringify|xmlescape}</deleted><files>{files|stringify|xmlescape}</files><parents>{parents}</parents></changeset>\n" --rev default:0 --follow --prune 647ced1e7aeb6d228f3ab408ff1c343c93b843dd
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson8688692130106207700.sh
[workspace] $ /bin/sh -xe /tmp/hudson968330532384733064.sh
+ PATH=/usr/bin:/bin:/usr/local/bin ./run_all_tests.sh
test_bit_array (tests.unit.test_bitwise.TestBitType) ... ok
test_bit_array_fail (tests.unit.test_bitwise.TestBitType) ... ok
test_bitfield_u16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u8 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_bbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_int_array (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u8 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_char (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_invalid_chars (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_wrong_length (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_comment_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_comment_inline_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_missing_semicolon (tests.unit.test_bitwise.TestBitwiseErrors) ... ok
test_seek (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_seekto (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_struct_one_element (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_two_elements (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_writes (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
split_tone_encode_test_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_fix_rounded_step_250 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_500 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_750 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_12_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_2_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_5_0 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_6_25 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_fractional_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step_fail (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_format_freq (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_bad (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_decimal (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whitespace (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whole (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_ensure_has_calls_almost_full (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_empty (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_partial (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full1 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full2 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_urcall_full (tests.unit.test_import_logic.DstarTests) ... ok
test_import_bank (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffA_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffB_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_negative (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_too_big_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_uhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_errors (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_warnings (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_invalid (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_am (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_fm (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_name (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_closest (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_dst (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_src (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_same (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffA_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffB_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModelIndexInterface) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_icom_bank (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_index_bounds (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_next_mapping_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_auto_tone_mode_cross (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_pol (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_rx (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tone (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tsql (tests.unit.test_memedit_edits.TestEdits) ... ok
test_init (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_bad_portnames (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_sorted (tests.unit.test_platform.Win32PlatformTest) ... ok
test_apply_callback (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_group (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_multi (tests.unit.test_settings.TestSettingContainers) ... ok
test_changed (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_boolean (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_float (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_integer (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_list (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_string (tests.unit.test_settings.TestSettingValues) ... ok
test_validate_callback (tests.unit.test_settings.TestSettingValues) ... ok
test_delete_hole_with_all (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_all_full (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_without_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_with_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_without_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
----------------------------------------------------------------------
Ran 151 tests in 0.052s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/chirp_common.py:33:32: E202 whitespace before ']'
./chirp/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py:522:45: W291 trailing whitespace
./chirp/drivers/ft60.py:523:25: E128 continuation line under-indented for visual indent
./chirp/drivers/ft60.py:524:13: E301 expected 1 blank line, found 0
./chirp/drivers/ft817.py:587:41: E128 continuation line under-indented for visual indent
./chirp/drivers/h777.py:405:26: E703 statement ends with a semicolon
./chirp/drivers/h777.py:406:26: E703 statement ends with a semicolon
./chirp/drivers/h777.py:407:26: E703 statement ends with a semicolon
./chirp/drivers/kguv8d.py:684:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:688:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:691:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:692:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:695:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:696:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:699:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:702:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:705:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:708:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:711:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:714:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:717:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:720:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:721:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:724:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:725:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:728:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:731:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:732:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:735:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:736:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:739:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:740:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:743:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:744:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:747:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:750:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:753:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:754:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:757:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:758:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:761:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:764:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:767:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:768:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:771:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:772:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:775:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:776:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:779:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:782:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:783:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:786:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:789:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:790:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:793:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:794:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:810:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:811:31: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:814:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:817:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:821:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:827:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:832:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:836:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:840:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:844:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:848:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:893:25: E128 continuation line under-indented for visual indent
./chirp/drivers/leixen.py:427:80: E501 line too long (82 > 79 characters)
./chirp/drivers/leixen.py:955:80: E501 line too long (87 > 79 characters)
./chirp/drivers/thd72.py:188:1: E302 expected 2 blank lines, found 1
./chirp/drivers/thd72.py:203:23: E201 whitespace after '['
./chirp/drivers/thd72.py:203:80: E501 line too long (171 > 79 characters)
./chirp/drivers/thd72.py:203:170: E202 whitespace before ']'
./chirp/drivers/thd72.py:204:13: E201 whitespace after '['
./chirp/drivers/thd72.py:204:61: E202 whitespace before ']'
./chirp/drivers/thd72.py:205:23: E201 whitespace after '['
./chirp/drivers/thd72.py:205:74: E202 whitespace before ']'
./chirp/drivers/thd72.py:206:18: E201 whitespace after '['
./chirp/drivers/thd72.py:206:65: E202 whitespace before ']'
./chirp/drivers/thd72.py:595:1: W293 blank line contains whitespace
./chirp/drivers/thd72.py:603:1: W293 blank line contains whitespace
./chirp/settings.py:245:80: E501 line too long (81 > 79 characters)
./chirp/settings.py:248:80: E501 line too long (81 > 79 characters)
./chirp/ui/mainapp.py:647:13: E128 continuation line under-indented for visual indent
./chirp/ui/mainapp.py:661:5: E303 too many blank lines (2)
./chirp/ui/mainapp.py:1374:80: E501 line too long (81 > 79 characters)
./chirp/ui/mainapp.py:1378:80: E501 line too long (80 > 79 characters)
./chirp/ui/mainapp.py:1663:80: E501 line too long (85 > 79 characters)
real 0m7.587s
user 0m7.480s
sys 0m0.028s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-10-17 07:18:00,703] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-10-17 07:18:00,741] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-10-17 07:18:00,741] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-10-17 07:18:00,741] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-10-17 07:18:00,741] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-10-17 07:18:00,743] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-10-17 07:18:00,743] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-10-17 07:18:00,743] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-10-17 07:18:00,744] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-10-17 07:18:00,744] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-10-17 07:18:00,748] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-10-17 07:18:00,749] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-10-17 07:18:00,749] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-10-17 07:18:00,749] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-10-17 07:18:00,750] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-10-17 07:18:00,750] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-10-17 07:18:00,750] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-10-17 07:18:00,750] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-10-17 07:18:00,751] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-10-17 07:18:00,751] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-10-17 07:18:00,751] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-10-17 07:18:00,751] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-10-17 07:18:00,751] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-10-17 07:18:00,752] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-10-17 07:18:00,752] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-10-17 07:18:00,752] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-10-17 07:18:00,752] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-10-17 07:18:00,753] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-10-17 07:18:00,753] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-10-17 07:18:00,753] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-10-17 07:18:00,753] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-10-17 07:18:00,761] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-10-17 07:18:00,761] chirp.directory - INFO: Registered BTECH_GMRS-V1 = GMRSV1
[2016-10-17 07:18:00,764] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-10-17 07:18:00,764] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-10-17 07:18:00,764] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-10-17 07:18:00,765] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-10-17 07:18:00,765] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-10-17 07:18:00,765] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-10-17 07:18:00,765] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-10-17 07:18:00,766] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-10-17 07:18:00,766] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-10-17 07:18:00,766] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-10-17 07:18:00,766] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-10-17 07:18:00,766] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-10-17 07:18:00,767] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-10-17 07:18:00,767] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-10-17 07:18:00,767] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-10-17 07:18:00,767] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-10-17 07:18:00,768] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-10-17 07:18:00,768] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-10-17 07:18:00,768] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-10-17 07:18:00,768] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-10-17 07:18:00,768] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-10-17 07:18:00,769] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-10-17 07:18:00,769] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-10-17 07:18:00,769] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-10-17 07:18:00,769] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-10-17 07:18:00,770] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-10-17 07:18:00,770] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-10-17 07:18:00,770] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-10-17 07:18:00,770] chirp.directory - INFO: Registered Leixen_VV-898S = LeixenVV898SRadio
[2016-10-17 07:18:00,771] chirp.directory - INFO: Registered LUITON_LT-725UV = LT725UV
[2016-10-17 07:18:00,771] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-10-17 07:18:00,771] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-10-17 07:18:00,771] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-10-17 07:18:00,771] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-10-17 07:18:00,771] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-10-17 07:18:00,772] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-10-17 07:18:00,773] chirp.directory - INFO: Registered Puxing_PX-888K = Puxing_PX888K_Radio
[2016-10-17 07:18:00,773] chirp.directory - INFO: Registered Retevis_RT21 = RT21Radio
[2016-10-17 07:18:00,774] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-10-17 07:18:00,774] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-10-17 07:18:00,774] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-10-17 07:18:00,774] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-10-17 07:18:00,774] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-10-17 07:18:00,775] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-10-17 07:18:00,775] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-10-17 07:18:00,775] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-10-17 07:18:00,775] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-10-17 07:18:00,775] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-10-17 07:18:00,776] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-10-17 07:18:00,776] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-10-17 07:18:00,776] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-10-17 07:18:00,776] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-10-17 07:18:00,776] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-10-17 07:18:00,778] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-10-17 07:18:00,778] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-10-17 07:18:00,778] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-10-17 07:18:00,778] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-10-17 07:18:00,778] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-10-17 07:18:00,778] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-10-17 07:18:00,780] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-10-17 07:18:00,780] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-10-17 07:18:00,780] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-10-17 07:18:00,780] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-10-17 07:18:00,780] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-10-17 07:18:00,781] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-10-17 07:18:00,781] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-10-17 07:18:00,781] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-10-17 07:18:00,782] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-10-17 07:18:00,782] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-10-17 07:18:00,782] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-10-17 07:18:00,783] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-10-17 07:18:00,783] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-10-17 07:18:00,783] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-10-17 07:18:00,784] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-10-17 07:18:00,784] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-10-17 07:18:00,784] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-10-17 07:18:00,784] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-10-17 07:18:00,785] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_lcfAWa.img /tmp/Alinco_DJ175_q6Cjra.img /tmp/Alinco_DJ596_LTzSWe.img /tmp/Alinco_DJ596_s4Y_jX.img /tmp/Alinco_DR235T_LlFzy4.img /tmp/Alinco_DR235T_fr109Q.img /tmp/AnyTone_OBLTR-8R_mj3QJA.img /tmp/AnyTone_OBLTR-8R_sx5nso.img /tmp/AnyTone_TERMN-8R__G85Q6.img /tmp/AnyTone_TERMN-8R_vWDBHE.img /tmp/BTECH_GMRS-V1_P5usVZ.img /tmp/BTECH_GMRS-V1_jkkKYI.img /tmp/BTECH_UV-2501+220_pkI0fZ.img /tmp/BTECH_UV-2501+220_xYAD1U.img /tmp/BTECH_UV-5001_52IG3p.img /tmp/BTECH_UV-5001_cJvXdI.img /tmp/BTECH_UV-50X3_JgvqCE.img /tmp/BTECH_UV-50X3_SRenNT.img /tmp/BTECH_UV-50X3_SYewZ_.img /tmp/BTECH_UV-50X3_iyXOfj.img /tmp/BTECH_UV-50X3_xBWbzi.img /tmp/BTECH_UV-50X3_zYV56d.img /tmp/BTECH_UV-5X3_P3QfXR.img /tmp/BTECH_UV-5X3_jZyiXO.img /tmp/Baofeng_BF-888_F6hB3A.img /tmp/Baofeng_BF-888_vP0IUy.img /tmp/Baofeng_F-11_R6vQeW.img /tmp/Baofeng_F-11_RevSZu.img /tmp/Baofeng_UV-3R_PgEdeG.img /tmp/Baofeng_UV-3R_TAl_wB.img /tmp/Baofeng_UV-5R_DTozIO.img /tmp/Baofeng_UV-5R_YNm030.img /tmp/Baofeng_UV-6R_GuqOnz.img /tmp/Baofeng_UV-6R_QnB_mu.img /tmp/Baofeng_UV-B5_2wBjtj.img /tmp/Baofeng_UV-B5_wPGg7F.img /tmp/Baojie_BJ-9900_7BnApZ.img /tmp/Baojie_BJ-9900_7MU6fY.img /tmp/Baojie_BJ-9900_FyVPqX.img /tmp/Baojie_BJ-9900_LEvKj7.img /tmp/Baojie_BJ-9900_QOTwct.img /tmp/Baojie_BJ-9900_SzaUg6.img /tmp/Feidaxin_FD-268A_6EDPm3.img /tmp/Feidaxin_FD-268A_M1HMKs.img /tmp/Feidaxin_FD-268B_M0O9RD.img /tmp/Feidaxin_FD-268B_ly9_E4.img /tmp/Feidaxin_FD-288B_J0SUZi.img /tmp/Feidaxin_FD-288B_l6aeal.img /tmp/Icom_IC-208H_3bgirO.img /tmp/Icom_IC-208H_DQ5yeU.img /tmp/Icom_IC-2100H_2PmRJH.img /tmp/Icom_IC-2100H_gyxgQq.img /tmp/Icom_IC-2200H_7hhg2m.img /tmp/Icom_IC-2200H_VvO4oZ.img /tmp/Icom_IC-2720H_JwFBFS.img /tmp/Icom_IC-2720H_p3FUxW.img /tmp/Icom_IC-2820H_3fvLIN.img /tmp/Icom_IC-2820H_a1WBFA.img /tmp/Icom_IC-Q7A_62fhOY.img /tmp/Icom_IC-Q7A_7iu7lk.img /tmp/Icom_IC-T70_gOYeRb.img /tmp/Icom_IC-T70_uJcL6X.img /tmp/Icom_IC-T7H_Bxwygd.img /tmp/Icom_IC-T7H_wNBq7p.img /tmp/Icom_IC-T8A_DU2b9z.img /tmp/Icom_IC-T8A_vihHv_.img /tmp/Icom_IC-V82_U82_Y4dnuQ.img /tmp/Icom_IC-V82_U82_epqGa1.img /tmp/Icom_IC-W32A_70O_HS.img /tmp/Icom_IC-W32A_9qli4i.img /tmp/Icom_IC-W32A_FTE73i.img /tmp/Icom_IC-W32A_VtB4qi.img /tmp/Icom_IC-W32A_dAS2W1.img /tmp/Icom_IC-W32A_n1IPFk.img /tmp/Icom_IC-W32E_22gZoF.img /tmp/Icom_IC-W32E_2Gm3z2.img /tmp/Icom_IC-W32E_WhTckF.img /tmp/Icom_IC-W32E_YO3BlZ.img /tmp/Icom_IC-W32E_k0R2aQ.img /tmp/Icom_IC-W32E_mZxx4F.img /tmp/Icom_ID-31A_DRgjhR.img /tmp/Icom_ID-31A_ZjkPRH.img /tmp/Icom_ID-51 Plus_1wWRtx.img /tmp/Icom_ID-51 Plus_P512HY.img /tmp/Icom_ID-51_K6qrGG.img /tmp/Icom_ID-51_iGjZkl.img /tmp/Icom_ID-800H_cq7w3K.img /tmp/Icom_ID-800H_z2Y4dA.img /tmp/Icom_ID-880H_KzAYan.img /tmp/Icom_ID-880H_wCE8H3.img /tmp/Jetstream_JT220M_Hmotun.img /tmp/Jetstream_JT220M_ZfheMP.img /tmp/Jetstream_JT270M_ISKacn.img /tmp/Jetstream_JT270M_fYrATV.img /tmp/KYD_IP-620_EKBfrV.img /tmp/KYD_IP-620_I7PiVK.img /tmp/Kenwood_TH-D72 (clone mode)_SaElR8.img /tmp/Kenwood_TH-D72 (clone mode)_r5FJMT.img /tmp/Kenwood_TK-272G_V1OJZe.img /tmp/Kenwood_TK-272G_tjpeUW.img /tmp/Kenwood_TK-760G_Mt4eWX.img /tmp/Kenwood_TK-760G_oJPnc6.img /tmp/Kenwood_TK-8102_31H4X5.img /tmp/Kenwood_TK-8102_J2TqUL.img /tmp/LUITON_LT-725UV_5wbJi7.img /tmp/LUITON_LT-725UV_CUeBB0.img /tmp/LUITON_LT-725UV_VHLqm8.img /tmp/LUITON_LT-725UV_kyDWDY.img /tmp/LUITON_LT-725UV_nbSDyB.img /tmp/LUITON_LT-725UV_sJX0VN.img /tmp/Leixen_VV-898S_PdbjPV.img /tmp/Leixen_VV-898S_U13doB.img /tmp/Leixen_VV-898_AlQPk2.img /tmp/Leixen_VV-898_kGzO7W.img /tmp/Polmar_DB-50M_XbBpxW.img /tmp/Polmar_DB-50M_uMlYhM.img /tmp/Puxing_PX-2R_4XZyYu.img /tmp/Puxing_PX-2R_rB69Z6.img /tmp/Puxing_PX-777_9rXd_A.img /tmp/Puxing_PX-777_k_5HtA.img /tmp/Puxing_PX-888K_4wNx_R.img /tmp/Puxing_PX-888K_abEac1.img /tmp/Retevis_RT21_YcjsDk.img /tmp/TYT_TH-7800_9YMgO1.img /tmp/TYT_TH-7800_EzBcgm.img /tmp/TYT_TH-9800_TbcWLh.img /tmp/TYT_TH-9800_voy8BY.img /tmp/TYT_TH-UV3R-25_8i9v01.img /tmp/TYT_TH-UV3R-25_hbjgS2.img /tmp/TYT_TH-UV3R_Gxyn1v.img /tmp/TYT_TH-UV3R_tpxjyD.img /tmp/TYT_TH-UVF1_lpbglr.img /tmp/TYT_TH-UVF1_vIGzd_.img /tmp/TYT_TH9000_144_irzK3Q.img /tmp/TYT_TH9000_144_k2ksRu.img /tmp/Vertex Standard_VXA-700_GoLI2p.img /tmp/Vertex Standard_VXA-700_uEpowF.img /tmp/WACCOM_MINI-8900_uPNC5j.img /tmp/WACCOM_MINI-8900_wauRG4.img /tmp/Wouxun_KG-816_9apwop.img /tmp/Wouxun_KG-816_fzpoVi.img /tmp/Wouxun_KG-818_twjYBJ.img /tmp/Wouxun_KG-818_u6CLC8.img /tmp/Wouxun_KG-UV6_CR_O8V.img /tmp/Wouxun_KG-UV6_qTIPQG.img /tmp/Wouxun_KG-UV8D_6L6qdZ.img /tmp/Wouxun_KG-UV8D_H6ORYX.img /tmp/Wouxun_KG-UVD1P_fDYsMW.img /tmp/Wouxun_KG-UVD1P_hyUmzN.img /tmp/Yaesu_FT-1802M_T1nHVZ.img /tmp/Yaesu_FT-1802M_nxI20q.img /tmp/Yaesu_FT-1D_ExOo8H.img /tmp/Yaesu_FT-1D_zTFaJk.img /tmp/Yaesu_FT-2800M_ZJh5Gi.img /tmp/Yaesu_FT-2800M_zBwn8g.img /tmp/Yaesu_FT-2900R_1900R_WiK2v3.img /tmp/Yaesu_FT-2900R_1900R_YqPbnz.img /tmp/Yaesu_FT-50_4g3f8u.img /tmp/Yaesu_FT-50_ow2Y9h.img /tmp/Yaesu_FT-60_RIbGWR.img /tmp/Yaesu_FT-60_UtZzqi.img /tmp/Yaesu_FT-7800_7900_6Wnl8P.img /tmp/Yaesu_FT-7800_7900_WjWw1a.img /tmp/Yaesu_FT-817ND (US)_OK9AB1.img /tmp/Yaesu_FT-817ND (US)_klPquw.img /tmp/Yaesu_FT-817ND_iGGUs9.img /tmp/Yaesu_FT-817ND_u7nukj.img /tmp/Yaesu_FT-817_ADoQtu.img /tmp/Yaesu_FT-817_GGmNoq.img /tmp/Yaesu_FT-857_897 (US)_k0SHmZ.img /tmp/Yaesu_FT-857_897 (US)_qDcylm.img /tmp/Yaesu_FT-857_897_7xIjBM.img /tmp/Yaesu_FT-857_897_i0zKky.img /tmp/Yaesu_FT-8800_GyEcpA.img /tmp/Yaesu_FT-8800_HiXrgx.img /tmp/Yaesu_FT-8800_YMQoLk.img /tmp/Yaesu_FT-8800_jlk3O9.img /tmp/Yaesu_FT-8800_lKRdwj.img /tmp/Yaesu_FT-8800_pHKLa9.img /tmp/Yaesu_FT-8900_1YnOqC.img /tmp/Yaesu_FT-8900_K2n40Q.img /tmp/Yaesu_FTM-350_4KofwJ.img /tmp/Yaesu_FTM-350_MxmPya.img /tmp/Yaesu_FTM-350_cbbgDE.img /tmp/Yaesu_FTM-350_d4OAC0.img /tmp/Yaesu_FTM-350_ilzsft.img /tmp/Yaesu_FTM-350_sPSb9M.img /tmp/Yaesu_VX-2_5Mz__z.img /tmp/Yaesu_VX-2_lcROmf.img /tmp/Yaesu_VX-3_CaQtxo.img /tmp/Yaesu_VX-3_ZK2kQf.img /tmp/Yaesu_VX-5_qUauvY.img /tmp/Yaesu_VX-5_y1s9x4.img /tmp/Yaesu_VX-6_8xK12K.img /tmp/Yaesu_VX-6_YJ9lEn.img /tmp/Yaesu_VX-7_Atpcs8.img /tmp/Yaesu_VX-7_m36CuM.img /tmp/Yaesu_VX-8_2zuBCJ.img /tmp/Yaesu_VX-8_TGri1G.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1476660374 14400
# Node ID 8188a3acfb7a437c5a03244c5a340f97d2af620e
# Parent 39fd7a532cf2b43d734ba146e7bce3fbcfbc8c83
[New Model] Retevis RT21
This patch adds support for the Retevis RT21
#4139
diff -r 39fd7a532cf2 -r 8188a3acfb7a chirp/drivers/retevis_rt21.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/chirp/drivers/retevis_rt21.py Sun Oct 16 19:26:14 2016 -0400
@@ -0,0 +1,526 @@
+# Copyright 2016 Jim Unroe <rock.unroe(a)gmail.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import time
+import os
+import struct
+import logging
+
+from chirp import chirp_common, directory, memmap
+from chirp import bitwise, errors, util
+from chirp.settings import RadioSetting, RadioSettingGroup, \
+ RadioSettingValueInteger, RadioSettingValueList, \
+ RadioSettingValueBoolean, RadioSettings
+
+LOG = logging.getLogger(__name__)
+
+MEM_FORMAT = """
+#seekto 0x0010;
+struct {
+ lbcd rxfreq[4];
+ lbcd txfreq[4];
+ ul16 rx_tone;
+ ul16 tx_tone;
+ u8 unknown1:3,
+ bcl:2, // Busy Lock
+ unknown2:3;
+ u8 unknown3:2,
+ highpower:1, // Power Level
+ wide:1, // Bandwidth
+ unknown4:4;
+ u8 scramble_type:4,
+ unknown5:4;
+ u8 unknown6:4,
+ scramble_type2:4;
+} memory[16];
+
+#seekto 0x012C;
+struct {
+ u8 use_scramble; // Scramble Enable
+ u8 unknown1[2];
+ u8 voice; // Voice Annunciation
+ u8 tot; // Time-out Timer
+ u8 totalert; // Time-out Timer Pre-alert
+ u8 unknown2[2];
+ u8 squelch; // Squelch Level
+ u8 save; // Battery Saver
+ u8 unknown3[3];
+ u8 use_vox; // VOX Enable
+ u8 vox; // VOX Gain
+} settings;
+
+#seekto 0x017E;
+u8 skipflags[2]; // SCAN_ADD
+"""
+
+CMD_ACK = "\x06"
+BLOCK_SIZE = 0x10
+
+RT21_POWER_LEVELS = [chirp_common.PowerLevel("Low", watts=1.00),
+ chirp_common.PowerLevel("High", watts=2.50)]
+
+
+RT21_DTCS = sorted(chirp_common.DTCS_CODES +
+ [17, 50, 55, 135, 217, 254, 305, 645, 765])
+
+BCL_LIST = ["Off", "Carrier", "QT/DQT"]
+SCRAMBLE_LIST = ["Scramble 1", "Scramble 2", "Scramble 3", "Scramble 4",
+ "Scramble 5", "Scramble 6", "Scramble 7", "Scramble 8"]
+TIMEOUTTIMER_LIST = ["%s seconds" % x for x in range(15, 615, 15)]
+TOTALERT_LIST = ["Off"] + ["%s seconds" % x for x in range(1, 11)]
+VOICE_LIST = ["Off", "Chinese", "English"]
+VOX_LIST = ["OFF"] + ["%s" % x for x in range(1, 17)]
+
+SETTING_LISTS = {
+ "bcl": BCL_LIST,
+ "scramble": SCRAMBLE_LIST,
+ "tot": TIMEOUTTIMER_LIST,
+ "totalert": TOTALERT_LIST,
+ "voice": VOICE_LIST,
+ "vox": VOX_LIST,
+ }
+
+
+def _rt21_enter_programming_mode(radio):
+ serial = radio.pipe
+
+ try:
+ serial.write("PRMZUNE")
+ ack = serial.read(1)
+ except:
+ raise errors.RadioError("Error communicating with radio")
+
+ if not ack:
+ raise errors.RadioError("No response from radio")
+ elif ack != CMD_ACK:
+ raise errors.RadioError("Radio refused to enter programming mode")
+
+ try:
+ serial.write("\x02")
+ ident = serial.read(8)
+ except:
+ raise errors.RadioError("Error communicating with radio")
+
+ if not ident.startswith("P3207"):
+ LOG.debug(util.hexprint(ident))
+ raise errors.RadioError("Radio returned unknown identification string")
+
+ try:
+ serial.write(CMD_ACK)
+ ack = serial.read(1)
+ except:
+ raise errors.RadioError("Error communicating with radio")
+
+ if ack != CMD_ACK:
+ raise errors.RadioError("Radio refused to enter programming mode")
+
+
+def _rt21_exit_programming_mode(radio):
+ serial = radio.pipe
+ try:
+ serial.write("E")
+ except:
+ raise errors.RadioError("Radio refused to exit programming mode")
+
+
+def _rt21_read_block(radio, block_addr, block_size):
+ serial = radio.pipe
+
+ cmd = struct.pack(">cHb", 'R', block_addr, BLOCK_SIZE)
+ expectedresponse = "W" + cmd[1:]
+ LOG.debug("Reading block %04x..." % (block_addr))
+
+ try:
+ serial.write(cmd)
+ response = serial.read(4 + BLOCK_SIZE)
+ if response[:4] != expectedresponse:
+ raise Exception("Error reading block %04x." % (block_addr))
+
+ block_data = response[4:]
+
+ serial.write(CMD_ACK)
+ ack = serial.read(1)
+ except:
+ raise errors.RadioError("Failed to read block at %04x" % block_addr)
+
+ if ack != CMD_ACK:
+ raise Exception("No ACK reading block %04x." % (block_addr))
+
+ return block_data
+
+
+def _rt21_write_block(radio, block_addr, block_size):
+ serial = radio.pipe
+
+ cmd = struct.pack(">cHb", 'W', block_addr, BLOCK_SIZE)
+ data = radio.get_mmap()[block_addr:block_addr + BLOCK_SIZE]
+
+ LOG.debug("Writing Data:")
+ LOG.debug(util.hexprint(cmd + data))
+
+ try:
+ serial.write(cmd + data)
+ if serial.read(1) != CMD_ACK:
+ raise Exception("No ACK")
+ except:
+ raise errors.RadioError("Failed to send block "
+ "to radio at %04x" % block_addr)
+
+
+def do_download(radio):
+ LOG.debug("download")
+ _rt21_enter_programming_mode(radio)
+
+ data = ""
+
+ status = chirp_common.Status()
+ status.msg = "Cloning from radio"
+
+ status.cur = 0
+ status.max = radio._memsize
+
+ for addr in range(0, radio._memsize, BLOCK_SIZE):
+ status.cur = addr + BLOCK_SIZE
+ radio.status_fn(status)
+
+ block = _rt21_read_block(radio, addr, BLOCK_SIZE)
+ data += block
+
+ LOG.debug("Address: %04x" % addr)
+ LOG.debug(util.hexprint(block))
+
+ _rt21_exit_programming_mode(radio)
+
+ return memmap.MemoryMap(data)
+
+
+def do_upload(radio):
+ status = chirp_common.Status()
+ status.msg = "Uploading to radio"
+
+ _rt21_enter_programming_mode(radio)
+
+ status.cur = 0
+ status.max = radio._memsize
+
+ for start_addr, end_addr in radio._ranges:
+ for addr in range(start_addr, end_addr, BLOCK_SIZE):
+ status.cur = addr + BLOCK_SIZE
+ radio.status_fn(status)
+ _rt21_write_block(radio, addr, BLOCK_SIZE)
+
+ _rt21_exit_programming_mode(radio)
+
+
+(a)directory.register
+class RT21Radio(chirp_common.CloneModeRadio):
+ """RETEVIS RT21"""
+ VENDOR = "Retevis"
+ MODEL = "RT21"
+ BAUD_RATE = 9600
+
+ _ranges = [
+ (0x0000, 0x0400),
+ ]
+ _memsize = 0x0400
+
+ def get_features(self):
+ rf = chirp_common.RadioFeatures()
+ rf.has_settings = True
+ rf.has_bank = False
+ rf.has_ctone = True
+ rf.has_cross = True
+ rf.has_rx_dtcs = True
+ rf.has_tuning_step = False
+ rf.can_odd_split = True
+ rf.has_name = False
+ rf.valid_skips = ["", "S"]
+ rf.valid_tmodes = ["", "Tone", "TSQL", "DTCS", "Cross"]
+ rf.valid_cross_modes = ["Tone->Tone", "Tone->DTCS", "DTCS->Tone",
+ "->Tone", "->DTCS", "DTCS->", "DTCS->DTCS"]
+ rf.valid_power_levels = RT21_POWER_LEVELS
+ rf.valid_duplexes = ["", "-", "+", "split", "off"]
+ rf.valid_modes = ["NFM", "FM"] # 12.5 KHz, 25 kHz.
+ rf.memory_bounds = (1, 16)
+ rf.valid_bands = [(400000000, 480000000)]
+
+ return rf
+
+ def process_mmap(self):
+ self._memobj = bitwise.parse(MEM_FORMAT, self._mmap)
+
+ def sync_in(self):
+ self._mmap = do_download(self)
+ self.process_mmap()
+
+ def sync_out(self):
+ do_upload(self)
+
+ def get_raw_memory(self, number):
+ return repr(self._memobj.memory[number - 1])
+
+ def _get_tone(self, _mem, mem):
+ def _get_dcs(val):
+ code = int("%03o" % (val & 0x07FF))
+ pol = (val & 0x8000) and "R" or "N"
+ return code, pol
+
+ if _mem.tx_tone != 0xFFFF and _mem.tx_tone > 0x2000:
+ tcode, tpol = _get_dcs(_mem.tx_tone)
+ mem.dtcs = tcode
+ txmode = "DTCS"
+ elif _mem.tx_tone != 0xFFFF:
+ mem.rtone = _mem.tx_tone / 10.0
+ txmode = "Tone"
+ else:
+ txmode = ""
+
+ if _mem.rx_tone != 0xFFFF and _mem.rx_tone > 0x2000:
+ rcode, rpol = _get_dcs(_mem.rx_tone)
+ mem.rx_dtcs = rcode
+ rxmode = "DTCS"
+ elif _mem.rx_tone != 0xFFFF:
+ mem.ctone = _mem.rx_tone / 10.0
+ rxmode = "Tone"
+ else:
+ rxmode = ""
+
+ if txmode == "Tone" and not rxmode:
+ mem.tmode = "Tone"
+ elif txmode == rxmode and txmode == "Tone" and mem.rtone == mem.ctone:
+ mem.tmode = "TSQL"
+ elif txmode == rxmode and txmode == "DTCS" and mem.dtcs == mem.rx_dtcs:
+ mem.tmode = "DTCS"
+ elif rxmode or txmode:
+ mem.tmode = "Cross"
+ mem.cross_mode = "%s->%s" % (txmode, rxmode)
+
+ if mem.tmode == "DTCS":
+ mem.dtcs_polarity = "%s%s" % (tpol, rpol)
+
+ LOG.debug("Got TX %s (%i) RX %s (%i)" %
+ (txmode, _mem.tx_tone, rxmode, _mem.rx_tone))
+
+ def get_memory(self, number):
+ bitpos = (1 << ((number - 1) % 8))
+ bytepos = ((number - 1) / 8)
+ LOG.debug("bitpos %s" % bitpos)
+ LOG.debug("bytepos %s" % bytepos)
+
+ _mem = self._memobj.memory[number - 1]
+ _skp = self._memobj.skipflags[bytepos]
+
+ mem = chirp_common.Memory()
+
+ mem.number = number
+ mem.freq = int(_mem.rxfreq) * 10
+
+ # We'll consider any blank (i.e. 0MHz frequency) to be empty
+ if mem.freq == 0:
+ mem.empty = True
+ return mem
+
+ if _mem.rxfreq.get_raw() == "\xFF\xFF\xFF\xFF":
+ mem.freq = 0
+ mem.empty = True
+ return mem
+
+ if _mem.get_raw() == ("\xFF" * 16):
+ LOG.debug("Initializing empty memory")
+ _mem.set_raw("\x00" * 13 + "\x30\x8F\xF8")
+
+ if int(_mem.rxfreq) == int(_mem.txfreq):
+ mem.duplex = ""
+ mem.offset = 0
+ else:
+ mem.duplex = int(_mem.rxfreq) > int(_mem.txfreq) and "-" or "+"
+ mem.offset = abs(int(_mem.rxfreq) - int(_mem.txfreq)) * 10
+
+ mem.mode = _mem.wide and "FM" or "NFM"
+
+ self._get_tone(_mem, mem)
+
+ mem.power = RT21_POWER_LEVELS[_mem.highpower]
+
+ mem.skip = "" if (_skp & bitpos) else "S"
+ LOG.debug("mem.skip %s" % mem.skip)
+
+ mem.extra = RadioSettingGroup("Extra", "extra")
+
+ rs = RadioSetting("bcl", "Busy Channel Lockout",
+ RadioSettingValueList(
+ BCL_LIST, BCL_LIST[_mem.bcl]))
+ mem.extra.append(rs)
+
+ rs = RadioSetting("scramble_type", "Scramble Type",
+ RadioSettingValueList(SCRAMBLE_LIST,
+ SCRAMBLE_LIST[_mem.scramble_type - 8]))
+ mem.extra.append(rs)
+
+ return mem
+
+ def _set_tone(self, mem, _mem):
+ def _set_dcs(code, pol):
+ val = int("%i" % code, 8) + 0x2800
+ if pol == "R":
+ val += 0x8000
+ return val
+
+ if mem.tmode == "Cross":
+ tx_mode, rx_mode = mem.cross_mode.split("->")
+ elif mem.tmode == "Tone":
+ tx_mode = mem.tmode
+ rx_mode = None
+ else:
+ tx_mode = rx_mode = mem.tmode
+
+ if tx_mode == "DTCS":
+ _mem.tx_tone = mem.tmode != "DTCS" and \
+ _set_dcs(mem.dtcs, mem.dtcs_polarity[0]) or \
+ _set_dcs(mem.rx_dtcs, mem.dtcs_polarity[0])
+ elif tx_mode:
+ _mem.tx_tone = tx_mode == "Tone" and \
+ int(mem.rtone * 10) or int(mem.ctone * 10)
+ else:
+ _mem.tx_tone = 0xFFFF
+
+ if rx_mode == "DTCS":
+ _mem.rx_tone = _set_dcs(mem.rx_dtcs, mem.dtcs_polarity[1])
+ elif rx_mode:
+ _mem.rx_tone = int(mem.ctone * 10)
+ else:
+ _mem.rx_tone = 0xFFFF
+
+ LOG.debug("Set TX %s (%i) RX %s (%i)" %
+ (tx_mode, _mem.tx_tone, rx_mode, _mem.rx_tone))
+
+ def set_memory(self, mem):
+ bitpos = (1 << ((mem.number - 1) % 8))
+ bytepos = ((mem.number - 1) / 8)
+ LOG.debug("bitpos %s" % bitpos)
+ LOG.debug("bytepos %s" % bytepos)
+
+ _mem = self._memobj.memory[mem.number - 1]
+ _skp = self._memobj.skipflags[bytepos]
+
+ if mem.empty:
+ _mem.set_raw("\xFF" * (_mem.size() / 8))
+ return
+
+ _mem.set_raw("\x00" * 13 + "\x00\x8F\xF8")
+
+ _mem.rxfreq = mem.freq / 10
+
+ if mem.duplex == "off":
+ for i in range(0, 4):
+ _mem.txfreq[i].set_raw("\xFF")
+ elif mem.duplex == "split":
+ _mem.txfreq = mem.offset / 10
+ elif mem.duplex == "+":
+ _mem.txfreq = (mem.freq + mem.offset) / 10
+ elif mem.duplex == "-":
+ _mem.txfreq = (mem.freq - mem.offset) / 10
+ else:
+ _mem.txfreq = mem.freq / 10
+
+ _mem.wide = mem.mode == "FM"
+
+ self._set_tone(mem, _mem)
+
+ _mem.highpower = mem.power == RT21_POWER_LEVELS[1]
+
+ if mem.skip != "S":
+ _skp |= bitpos
+ else:
+ _skp &= ~bitpos
+ LOG.debug("_skp %s" % _skp)
+
+ for setting in mem.extra:
+ if setting.get_name() == "scramble_type":
+ setattr(_mem, setting.get_name(), int(setting.value) + 8)
+ setattr(_mem, "scramble_type2", int(setting.value) + 8)
+ else:
+ setattr(_mem, setting.get_name(), setting.value)
+
+ def get_settings(self):
+ _settings = self._memobj.settings
+ basic = RadioSettingGroup("basic", "Basic Settings")
+ top = RadioSettings(basic)
+
+ rs = RadioSetting("tot", "Time-out timer",
+ RadioSettingValueList(
+ TIMEOUTTIMER_LIST,
+ TIMEOUTTIMER_LIST[_settings.tot - 1]))
+ basic.append(rs)
+
+ rs = RadioSetting("totalert", "TOT Pre-alert",
+ RadioSettingValueList(
+ TOTALERT_LIST,
+ TOTALERT_LIST[_settings.totalert]))
+ basic.append(rs)
+
+ rs = RadioSetting("squelch", "Squelch Level",
+ RadioSettingValueInteger(0, 9, _settings.squelch))
+ basic.append(rs)
+
+ rs = RadioSetting("voice", "Voice Annumciation",
+ RadioSettingValueList(
+ VOICE_LIST, VOICE_LIST[_settings.voice]))
+ basic.append(rs)
+
+ rs = RadioSetting("save", "Battery Saver",
+ RadioSettingValueBoolean(_settings.save))
+ basic.append(rs)
+
+ rs = RadioSetting("use_scramble", "Scramble",
+ RadioSettingValueBoolean(_settings.use_scramble))
+ basic.append(rs)
+
+ rs = RadioSetting("use_vox", "VOX",
+ RadioSettingValueBoolean(_settings.use_vox))
+ basic.append(rs)
+
+ rs = RadioSetting("vox", "VOX Gain",
+ RadioSettingValueList(
+ VOX_LIST, VOX_LIST[_settings.vox]))
+ basic.append(rs)
+
+ return top
+
+ def set_settings(self, settings):
+ for element in settings:
+ if not isinstance(element, RadioSetting):
+ self.set_settings(element)
+ continue
+ else:
+ try:
+ if "." in element.get_name():
+ bits = element.get_name().split(".")
+ obj = self._memobj
+ for bit in bits[:-1]:
+ obj = getattr(obj, bit)
+ setting = bits[-1]
+ else:
+ obj = self._memobj.settings
+ setting = element.get_name()
+
+ if setting == "tot":
+ setattr(obj, setting, int(element.value) + 1)
+ elif element.value.get_mutable():
+ LOG.debug("Setting %s = %s" % (setting, element.value))
+ setattr(obj, setting, element.value)
+ except Exception, e:
+ LOG.debug(element.get_name())
+ raise
1
0
16 Oct '16
1
0
Tested changes:
[Dan Smith <dsmith(a)danplanet.com>] Add Norwegian KDR license-free band stock config
https://en.wikipedia.org/wiki/KDR_444
>From François Thunus for #4137
[Tom Hayward <tom(a)tomh.us>] [id880] Fix typo in charset definition. #281
[Tom Hayward <tom(a)tomh.us>] [thf6a] Support full charset (ASCII). Fixes #141
[Tom Hayward <tom(a)tomh.us>] [id880] Support full charset. Fixes #281
[Tom Hayward <tom(a)tomh.us>] [vx5] Support full charset (ASCII). Fixes #292
[Tom Hayward <tom(a)tomh.us>] [id31a] set used bit when creating new memory, clear when deleting. Fixes #269
[Tom Hayward <tom(a)tomh.us>] Support PyGTK < 2.22 in bank edit. Fixes #231
[Tom Hayward <tom(a)tomh.us>] [d710] [v71] [d72] Fix tone list (not all tones are supported). Fixes #212
[Dan Smith <dsmith(a)danplanet.com>] [vx7] Fix setting memory power levels on 220MHz band
Fixes #214
[Dan Smith <dsmith(a)danplanet.com>] fips: Pennsylvania FIPS code was wrong. #117
[Marco Filippi <iz3gme.marco(a)gmail.com>] Consider lower bound frequency of each valid_band as valid
Fix bug #181
[Tom Hayward <tom(a)tomh.us>] tmd700: allow 8-char names. Fixes #176
[Dan Smith <dsmith(a)danplanet.com>] Fix the "blind deletion" problem, as well as properly direct copy/paste
Fixes #172
[David Griffith <dave(a)661.org>] Bug #155 fix: VX-7 1.25m power levels
[David Griffith <dave(a)661.org>] New INSTALL and README files
Fixes #122
[Tom Hayward <tom(a)tomh.us>] thd72: only use hardware flow on OS X. Fixes #166
[Marco Filippi <iz3gme.marco(a)gmail.com>] [FT817] Tone freq not set correctly
Same as #88 for FT857, to avoid code duplication fix code have been moved from
ft857 to its ancestor class
Fix bug #163
[Tom Hayward <tom(a)tomh.us>] Fix Mac .app so paths with spaces work. Fixes Bug #145
Full log:
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/chirp-test/workspace
[workspace] $ hg showconfig paths.default
[workspace] $ hg pull --rev default
[workspace] $ hg update --clean --rev default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
[workspace] $ hg log --rev . --template {node}
[workspace] $ hg log --rev . --template {rev}
[workspace] $ hg log --rev 895636193de3319fe8b3d390ec79cae8825acc11
[workspace] $ hg log --template "<changeset node='{node}' author='{author|xmlescape}' rev='{rev}' date='{date}'><msg>{desc|xmlescape}</msg><added>{file_adds|stringify|xmlescape}</added><deleted>{file_dels|stringify|xmlescape}</deleted><files>{files|stringify|xmlescape}</files><parents>{parents}</parents></changeset>\n" --rev default:0 --follow --prune 895636193de3319fe8b3d390ec79cae8825acc11
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson3102481870556168206.sh
[workspace] $ /bin/sh -xe /tmp/hudson3974689159332012810.sh
+ PATH=/usr/bin:/bin:/usr/local/bin ./run_all_tests.sh
test_bit_array (tests.unit.test_bitwise.TestBitType) ... ok
test_bit_array_fail (tests.unit.test_bitwise.TestBitType) ... ok
test_bitfield_u16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u8 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_bbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_int_array (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u8 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_char (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_invalid_chars (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_wrong_length (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_comment_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_comment_inline_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_missing_semicolon (tests.unit.test_bitwise.TestBitwiseErrors) ... ok
test_seek (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_seekto (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_struct_one_element (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_two_elements (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_writes (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
split_tone_encode_test_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_fix_rounded_step_250 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_500 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_750 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_12_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_2_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_5_0 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_6_25 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_fractional_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step_fail (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_format_freq (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_bad (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_decimal (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whitespace (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whole (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_ensure_has_calls_almost_full (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_empty (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_partial (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full1 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full2 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_urcall_full (tests.unit.test_import_logic.DstarTests) ... ok
test_import_bank (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffA_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffB_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_negative (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_too_big_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_uhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_errors (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_warnings (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_invalid (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_am (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_fm (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_name (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_closest (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_dst (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_src (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_same (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffA_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffB_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModelIndexInterface) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_icom_bank (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_index_bounds (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_next_mapping_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_auto_tone_mode_cross (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_pol (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_rx (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tone (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tsql (tests.unit.test_memedit_edits.TestEdits) ... ok
test_init (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_bad_portnames (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_sorted (tests.unit.test_platform.Win32PlatformTest) ... ok
test_apply_callback (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_group (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_multi (tests.unit.test_settings.TestSettingContainers) ... ok
test_changed (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_boolean (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_float (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_integer (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_list (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_string (tests.unit.test_settings.TestSettingValues) ... ok
test_validate_callback (tests.unit.test_settings.TestSettingValues) ... ok
test_delete_hole_with_all (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_all_full (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_without_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_with_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_without_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
----------------------------------------------------------------------
Ran 151 tests in 0.051s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/chirp_common.py:33:32: E202 whitespace before ']'
./chirp/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py:522:45: W291 trailing whitespace
./chirp/drivers/ft60.py:523:25: E128 continuation line under-indented for visual indent
./chirp/drivers/ft60.py:524:13: E301 expected 1 blank line, found 0
./chirp/drivers/ft817.py:587:41: E128 continuation line under-indented for visual indent
./chirp/drivers/h777.py:405:26: E703 statement ends with a semicolon
./chirp/drivers/h777.py:406:26: E703 statement ends with a semicolon
./chirp/drivers/h777.py:407:26: E703 statement ends with a semicolon
./chirp/drivers/kguv8d.py:684:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:688:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:691:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:692:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:695:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:696:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:699:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:702:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:705:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:708:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:711:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:714:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:717:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:720:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:721:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:724:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:725:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:728:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:731:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:732:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:735:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:736:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:739:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:740:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:743:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:744:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:747:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:750:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:753:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:754:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:757:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:758:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:761:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:764:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:767:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:768:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:771:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:772:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:775:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:776:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:779:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:782:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:783:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:786:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:789:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:790:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:793:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:794:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:810:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:811:31: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:814:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:817:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:821:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:827:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:832:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:836:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:840:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:844:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:848:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:893:25: E128 continuation line under-indented for visual indent
./chirp/drivers/leixen.py:427:80: E501 line too long (82 > 79 characters)
./chirp/drivers/leixen.py:955:80: E501 line too long (87 > 79 characters)
./chirp/drivers/thd72.py:188:1: E302 expected 2 blank lines, found 1
./chirp/drivers/thd72.py:203:23: E201 whitespace after '['
./chirp/drivers/thd72.py:203:80: E501 line too long (171 > 79 characters)
./chirp/drivers/thd72.py:203:170: E202 whitespace before ']'
./chirp/drivers/thd72.py:204:13: E201 whitespace after '['
./chirp/drivers/thd72.py:204:61: E202 whitespace before ']'
./chirp/drivers/thd72.py:205:23: E201 whitespace after '['
./chirp/drivers/thd72.py:205:74: E202 whitespace before ']'
./chirp/drivers/thd72.py:206:18: E201 whitespace after '['
./chirp/drivers/thd72.py:206:65: E202 whitespace before ']'
./chirp/drivers/thd72.py:595:1: W293 blank line contains whitespace
./chirp/drivers/thd72.py:603:1: W293 blank line contains whitespace
./chirp/settings.py:245:80: E501 line too long (81 > 79 characters)
./chirp/settings.py:248:80: E501 line too long (81 > 79 characters)
./chirp/ui/mainapp.py:647:13: E128 continuation line under-indented for visual indent
./chirp/ui/mainapp.py:661:5: E303 too many blank lines (2)
./chirp/ui/mainapp.py:1374:80: E501 line too long (81 > 79 characters)
./chirp/ui/mainapp.py:1378:80: E501 line too long (80 > 79 characters)
./chirp/ui/mainapp.py:1663:80: E501 line too long (85 > 79 characters)
real 0m7.661s
user 0m7.500s
sys 0m0.048s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-10-16 08:12:57,626] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-10-16 08:12:57,665] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-10-16 08:12:57,665] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-10-16 08:12:57,665] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-10-16 08:12:57,665] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-10-16 08:12:57,665] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-10-16 08:12:57,667] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-10-16 08:12:57,667] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-10-16 08:12:57,668] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-10-16 08:12:57,668] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-10-16 08:12:57,672] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-10-16 08:12:57,672] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-10-16 08:12:57,673] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-10-16 08:12:57,673] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-10-16 08:12:57,673] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-10-16 08:12:57,674] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-10-16 08:12:57,674] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-10-16 08:12:57,674] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-10-16 08:12:57,674] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-10-16 08:12:57,675] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-10-16 08:12:57,675] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-10-16 08:12:57,675] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-10-16 08:12:57,675] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-10-16 08:12:57,676] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-10-16 08:12:57,676] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-10-16 08:12:57,676] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-10-16 08:12:57,676] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-10-16 08:12:57,677] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-10-16 08:12:57,677] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-10-16 08:12:57,677] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-10-16 08:12:57,677] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-10-16 08:12:57,685] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-10-16 08:12:57,685] chirp.directory - INFO: Registered BTECH_GMRS-V1 = GMRSV1
[2016-10-16 08:12:57,688] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-10-16 08:12:57,688] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-10-16 08:12:57,689] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-10-16 08:12:57,689] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-10-16 08:12:57,689] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-10-16 08:12:57,689] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-10-16 08:12:57,689] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-10-16 08:12:57,690] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-10-16 08:12:57,690] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-10-16 08:12:57,690] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-10-16 08:12:57,690] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-10-16 08:12:57,691] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-10-16 08:12:57,691] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-10-16 08:12:57,691] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-10-16 08:12:57,691] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-10-16 08:12:57,691] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-10-16 08:12:57,692] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-10-16 08:12:57,692] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-10-16 08:12:57,692] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-10-16 08:12:57,692] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-10-16 08:12:57,692] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-10-16 08:12:57,693] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-10-16 08:12:57,693] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-10-16 08:12:57,693] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-10-16 08:12:57,693] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-10-16 08:12:57,694] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-10-16 08:12:57,694] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-10-16 08:12:57,694] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-10-16 08:12:57,694] chirp.directory - INFO: Registered Leixen_VV-898S = LeixenVV898SRadio
[2016-10-16 08:12:57,695] chirp.directory - INFO: Registered LUITON_LT-725UV = LT725UV
[2016-10-16 08:12:57,695] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-10-16 08:12:57,695] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-10-16 08:12:57,695] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-10-16 08:12:57,695] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-10-16 08:12:57,696] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-10-16 08:12:57,696] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-10-16 08:12:57,697] chirp.directory - INFO: Registered Puxing_PX-888K = Puxing_PX888K_Radio
[2016-10-16 08:12:57,697] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-10-16 08:12:57,698] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-10-16 08:12:57,698] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-10-16 08:12:57,698] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-10-16 08:12:57,698] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-10-16 08:12:57,698] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-10-16 08:12:57,698] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-10-16 08:12:57,699] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-10-16 08:12:57,699] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-10-16 08:12:57,699] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-10-16 08:12:57,699] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-10-16 08:12:57,700] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-10-16 08:12:57,700] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-10-16 08:12:57,700] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-10-16 08:12:57,700] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-10-16 08:12:57,700] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-10-16 08:12:57,700] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-10-16 08:12:57,704] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-10-16 08:12:57,704] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-10-16 08:12:57,704] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-10-16 08:12:57,704] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-10-16 08:12:57,704] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-10-16 08:12:57,705] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-10-16 08:12:57,705] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-10-16 08:12:57,706] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-10-16 08:12:57,706] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-10-16 08:12:57,706] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-10-16 08:12:57,706] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-10-16 08:12:57,707] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-10-16 08:12:57,707] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-10-16 08:12:57,707] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-10-16 08:12:57,708] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-10-16 08:12:57,708] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-10-16 08:12:57,708] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-10-16 08:12:57,708] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_1K6__Y.img /tmp/Alinco_DJ175_HYBpXY.img /tmp/Alinco_DJ596_dpzVsd.img /tmp/Alinco_DJ596_s4Y1ac.img /tmp/Alinco_DR235T_D8LAHQ.img /tmp/Alinco_DR235T_hZW_8f.img /tmp/AnyTone_OBLTR-8R_6QQrF4.img /tmp/AnyTone_OBLTR-8R_KtfW74.img /tmp/AnyTone_TERMN-8R_cYbbuf.img /tmp/AnyTone_TERMN-8R_eHDGtR.img /tmp/BTECH_GMRS-V1_4qVTF6.img /tmp/BTECH_GMRS-V1_B56KLw.img /tmp/BTECH_UV-2501+220_KXNKNe.img /tmp/BTECH_UV-2501+220_nevseq.img /tmp/BTECH_UV-5001_Mm2Dac.img /tmp/BTECH_UV-5001_TS_imy.img /tmp/BTECH_UV-50X3_2WtnUP.img /tmp/BTECH_UV-50X3_5Nirjp.img /tmp/BTECH_UV-50X3_UPK_FB.img /tmp/BTECH_UV-50X3__N_0BO.img /tmp/BTECH_UV-50X3_yTyvWI.img /tmp/BTECH_UV-50X3_zN8aRk.img /tmp/BTECH_UV-5X3_31VDHL.img /tmp/BTECH_UV-5X3_u5vC30.img /tmp/Baofeng_BF-888_fGAipV.img /tmp/Baofeng_BF-888_uAD7VZ.img /tmp/Baofeng_F-11_6Q_iZ_.img /tmp/Baofeng_F-11_tU2IQw.img /tmp/Baofeng_UV-3R_PxU2Ss.img /tmp/Baofeng_UV-3R_r7ay_w.img /tmp/Baofeng_UV-5R_iqhXhi.img /tmp/Baofeng_UV-5R_oClpIq.img /tmp/Baofeng_UV-6R__jtODT.img /tmp/Baofeng_UV-6R_sXQKx3.img /tmp/Baofeng_UV-B5_1HHeIy.img /tmp/Baofeng_UV-B5_Rfp0eZ.img /tmp/Baojie_BJ-9900_MTXmqK.img /tmp/Baojie_BJ-9900_TzSVb_.img /tmp/Baojie_BJ-9900__N29_A.img /tmp/Baojie_BJ-9900_akwDaN.img /tmp/Baojie_BJ-9900_kfDkrs.img /tmp/Baojie_BJ-9900_tg16pH.img /tmp/Feidaxin_FD-268A_0IozzO.img /tmp/Feidaxin_FD-268A_dBilrY.img /tmp/Feidaxin_FD-268B_l8IVFl.img /tmp/Feidaxin_FD-268B_xQOlok.img /tmp/Feidaxin_FD-288B_LVc8_N.img /tmp/Feidaxin_FD-288B_wg1wtj.img /tmp/Icom_IC-208H_9rZskm.img /tmp/Icom_IC-208H_f1MZRr.img /tmp/Icom_IC-2100H_rzFbxo.img /tmp/Icom_IC-2100H_xPsmpf.img /tmp/Icom_IC-2200H_WTTfWJ.img /tmp/Icom_IC-2200H_xk4bGv.img /tmp/Icom_IC-2720H_11gF5e.img /tmp/Icom_IC-2720H_5segQC.img /tmp/Icom_IC-2820H_5GWP1F.img /tmp/Icom_IC-2820H_DeOVZU.img /tmp/Icom_IC-Q7A_HTU0Me.img /tmp/Icom_IC-Q7A_zunKcK.img /tmp/Icom_IC-T70_MpFtcu.img /tmp/Icom_IC-T70_pKM2w_.img /tmp/Icom_IC-T7H_3FGTKP.img /tmp/Icom_IC-T7H_o5Zf28.img /tmp/Icom_IC-T8A_a0_yzD.img /tmp/Icom_IC-T8A_i9NZcf.img /tmp/Icom_IC-V82_U82_S2prP7.img /tmp/Icom_IC-V82_U82_q1X2vS.img /tmp/Icom_IC-W32A_52_W3s.img /tmp/Icom_IC-W32A_PKDio3.img /tmp/Icom_IC-W32A_Roc0_n.img /tmp/Icom_IC-W32A_hJoPaR.img /tmp/Icom_IC-W32A_oLBS4Y.img /tmp/Icom_IC-W32A_osDtUG.img /tmp/Icom_IC-W32E_1UurWk.img /tmp/Icom_IC-W32E_N2hscW.img /tmp/Icom_IC-W32E_UFOyXK.img /tmp/Icom_IC-W32E_XGOfSp.img /tmp/Icom_IC-W32E_la4gId.img /tmp/Icom_IC-W32E_vmlHu6.img /tmp/Icom_ID-31A_hkGULH.img /tmp/Icom_ID-31A_tGyAID.img /tmp/Icom_ID-51 Plus_HmtXfh.img /tmp/Icom_ID-51 Plus_oPmowU.img /tmp/Icom_ID-51_YGjmmh.img /tmp/Icom_ID-51_zCpifj.img /tmp/Icom_ID-800H_BYEtU7.img /tmp/Icom_ID-800H_Djcjy6.img /tmp/Icom_ID-880H_ArSk_K.img /tmp/Icom_ID-880H_Js0Rzr.img /tmp/Jetstream_JT220M_P7J0Xe.img /tmp/Jetstream_JT220M_as11Jd.img /tmp/Jetstream_JT270M_G2GDTR.img /tmp/Jetstream_JT270M_qnlbsS.img /tmp/KYD_IP-620_5RZGzJ.img /tmp/KYD_IP-620_pVmi3k.img /tmp/Kenwood_TH-D72 (clone mode)_oYhy6O.img /tmp/Kenwood_TH-D72 (clone mode)_q6sLKw.img /tmp/Kenwood_TK-272G_923eDu.img /tmp/Kenwood_TK-272G_SnYGFT.img /tmp/Kenwood_TK-760G_E5vblJ.img /tmp/Kenwood_TK-760G_riL6XJ.img /tmp/Kenwood_TK-8102_0S5lyy.img /tmp/Kenwood_TK-8102_Leat8i.img /tmp/LUITON_LT-725UV_6Dg9__.img /tmp/LUITON_LT-725UV_IyMj3l.img /tmp/LUITON_LT-725UV_f9XFaA.img /tmp/LUITON_LT-725UV_h8EWyr.img /tmp/LUITON_LT-725UV_htesz1.img /tmp/LUITON_LT-725UV_rESMNJ.img /tmp/Leixen_VV-898S_LxeebK.img /tmp/Leixen_VV-898S_TuF9nU.img /tmp/Leixen_VV-898_BMAfRB.img /tmp/Leixen_VV-898_VMh37Z.img /tmp/Polmar_DB-50M_GxIfCA.img /tmp/Polmar_DB-50M_xfEybI.img /tmp/Puxing_PX-2R_GvxMW2.img /tmp/Puxing_PX-2R_IU7kYM.img /tmp/Puxing_PX-777_HhaxPW.img /tmp/Puxing_PX-777_o3a_f2.img /tmp/Puxing_PX-888K_aUhNjy.img /tmp/Puxing_PX-888K_keK8F9.img /tmp/TYT_TH-7800_FVePhG.img /tmp/TYT_TH-7800_uMjEaY.img /tmp/TYT_TH-9800_XUS1zb.img /tmp/TYT_TH-9800_cHwN44.img /tmp/TYT_TH-UV3R-25_Oe37N4.img /tmp/TYT_TH-UV3R-25_Pl89Vs.img /tmp/TYT_TH-UV3R_VP0bUm.img /tmp/TYT_TH-UV3R_dN8DGm.img /tmp/TYT_TH-UVF1_2J5xsF.img /tmp/TYT_TH-UVF1_aoa__W.img /tmp/TYT_TH9000_144_F2rkAO.img /tmp/TYT_TH9000_144_texK0j.img /tmp/Vertex Standard_VXA-700_M3wved.img /tmp/Vertex Standard_VXA-700_YKwov0.img /tmp/WACCOM_MINI-8900_3l0CeO.img /tmp/WACCOM_MINI-8900_evRQ5K.img /tmp/Wouxun_KG-816_MVRCsz.img /tmp/Wouxun_KG-816_cI2eTP.img /tmp/Wouxun_KG-818_Y6Ekm8.img /tmp/Wouxun_KG-818_mx_BD6.img /tmp/Wouxun_KG-UV6_BA52K3.img /tmp/Wouxun_KG-UV6_BWdSrA.img /tmp/Wouxun_KG-UV8D_sYzAU2.img /tmp/Wouxun_KG-UV8D_v0ZTRi.img /tmp/Wouxun_KG-UVD1P_eaNM5j.img /tmp/Wouxun_KG-UVD1P_rkdQl8.img /tmp/Yaesu_FT-1802M_RI3cxu.img /tmp/Yaesu_FT-1802M_Sjb75V.img /tmp/Yaesu_FT-1D_ENoJnH.img /tmp/Yaesu_FT-1D_hrLLNJ.img /tmp/Yaesu_FT-2800M_K5RJRJ.img /tmp/Yaesu_FT-2800M_xYApXL.img /tmp/Yaesu_FT-2900R_1900R_1VvhT1.img /tmp/Yaesu_FT-2900R_1900R_7MIgox.img /tmp/Yaesu_FT-50_Yx2iie.img /tmp/Yaesu_FT-50_lhKxWO.img /tmp/Yaesu_FT-60_AzBM_i.img /tmp/Yaesu_FT-60_wQzfjG.img /tmp/Yaesu_FT-7800_7900_1wMywM.img /tmp/Yaesu_FT-7800_7900_UqDK0O.img /tmp/Yaesu_FT-817ND (US)_QflmLy.img /tmp/Yaesu_FT-817ND (US)_x4u0Ua.img /tmp/Yaesu_FT-817ND_fZRljC.img /tmp/Yaesu_FT-817ND_mfNqf8.img /tmp/Yaesu_FT-817_0Dnn69.img /tmp/Yaesu_FT-817_0UWwTM.img /tmp/Yaesu_FT-857_897 (US)_4cxcyP.img /tmp/Yaesu_FT-857_897 (US)_nrPisj.img /tmp/Yaesu_FT-857_897_3eAAUI.img /tmp/Yaesu_FT-857_897_DdWOU1.img /tmp/Yaesu_FT-8800_2gyAQD.img /tmp/Yaesu_FT-8800_EIPUJb.img /tmp/Yaesu_FT-8800_LF230X.img /tmp/Yaesu_FT-8800_RngRqx.img /tmp/Yaesu_FT-8800_iyqfyW.img /tmp/Yaesu_FT-8800_par1GB.img /tmp/Yaesu_FT-8900_L6h985.img /tmp/Yaesu_FT-8900_qO6CkO.img /tmp/Yaesu_FTM-350_ETLkAj.img /tmp/Yaesu_FTM-350_QVqXfA.img /tmp/Yaesu_FTM-350_QXmQTv.img /tmp/Yaesu_FTM-350_VRpwKN.img /tmp/Yaesu_FTM-350_eO3mj3.img /tmp/Yaesu_FTM-350_xfZmfh.img /tmp/Yaesu_VX-2_rRPOLl.img /tmp/Yaesu_VX-2_tk9Lnx.img /tmp/Yaesu_VX-3_SGaSph.img /tmp/Yaesu_VX-3_VW9kvM.img /tmp/Yaesu_VX-5_80xb9i.img /tmp/Yaesu_VX-5_Ho_LQ3.img /tmp/Yaesu_VX-6_2EHo8C.img /tmp/Yaesu_VX-6_Frelxa.img /tmp/Yaesu_VX-7_1l8aI9.img /tmp/Yaesu_VX-7_yukUWX.img /tmp/Yaesu_VX-8_3BoGc8.img /tmp/Yaesu_VX-8_t9uhYM.img
Email was triggered for: Success
Sending email for trigger: Success
1
0